@@ -10,6 +10,7 @@ import windowListener from './decorators/windowListener'
10
10
import customEvent from './decorators/customEvent'
11
11
import isCapture from './decorators/isCapture'
12
12
import getEffect from './decorators/getEffect'
13
+ import trackRemoval from './decorators/trackRemoval'
13
14
14
15
/* Utils */
15
16
import getPosition from './utils/getPosition'
@@ -20,7 +21,12 @@ import nodeListToArray from './utils/nodeListToArray'
20
21
/* CSS */
21
22
import cssStyle from './style'
22
23
23
- @staticMethods @windowListener @customEvent @isCapture @getEffect
24
+ @staticMethods
25
+ @windowListener
26
+ @customEvent
27
+ @isCapture
28
+ @getEffect
29
+ @trackRemoval
24
30
class ReactTooltip extends Component {
25
31
26
32
static propTypes = {
@@ -163,6 +169,8 @@ class ReactTooltip extends Component {
163
169
const { id, globalEventOff} = this . props
164
170
let targetArray = this . getTargetArray ( id )
165
171
172
+ this . trackRemoval ( )
173
+
166
174
targetArray . forEach ( target => {
167
175
const isCaptureMode = this . isCapture ( target )
168
176
const effect = this . getEffect ( target )
@@ -181,7 +189,7 @@ class ReactTooltip extends Component {
181
189
target . addEventListener ( 'mousemove' , this . updateTooltip , isCaptureMode )
182
190
}
183
191
target . addEventListener ( 'mouseleave' , this . hideTooltip , isCaptureMode )
184
- target . addEventListener ( 'DOMNodeRemovedFromDocument' , this . checkSameTarget , isCaptureMode )
192
+ this . attachRemovalTracker ( target )
185
193
} )
186
194
187
195
// Global event to hide tooltip
@@ -203,6 +211,7 @@ class ReactTooltip extends Component {
203
211
} )
204
212
205
213
if ( globalEventOff ) window . removeEventListener ( globalEventOff , this . hideTooltip )
214
+ this . releaseRemovalTracker ( )
206
215
}
207
216
208
217
/**
@@ -215,7 +224,6 @@ class ReactTooltip extends Component {
215
224
target . removeEventListener ( 'mouseenter' , this . showTooltip , isCaptureMode )
216
225
target . removeEventListener ( 'mousemove' , this . updateTooltip , isCaptureMode )
217
226
target . removeEventListener ( 'mouseleave' , this . hideTooltip , isCaptureMode )
218
- target . removeEventListener ( 'DOMNodeRemovedFromDocument' , this . checkSameTarget , isCaptureMode )
219
227
}
220
228
221
229
/**
0 commit comments