@@ -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 = {
@@ -86,7 +92,6 @@ class ReactTooltip extends Component {
86
92
this . bind ( [
87
93
'showTooltip' ,
88
94
'updateTooltip' ,
89
- 'checkSameTarget' ,
90
95
'hideTooltip' ,
91
96
'globalRebuild' ,
92
97
'globalShow' ,
@@ -181,14 +186,16 @@ class ReactTooltip extends Component {
181
186
target . addEventListener ( 'mousemove' , this . updateTooltip , isCaptureMode )
182
187
}
183
188
target . addEventListener ( 'mouseleave' , this . hideTooltip , isCaptureMode )
184
- target . addEventListener ( 'DOMNodeRemovedFromDocument' , this . checkSameTarget , isCaptureMode )
185
189
} )
186
190
187
191
// Global event to hide tooltip
188
192
if ( globalEventOff ) {
189
193
window . removeEventListener ( globalEventOff , this . hideTooltip )
190
194
window . addEventListener ( globalEventOff , this . hideTooltip , false )
191
195
}
196
+
197
+ // Track removal of targetArray elements from DOM
198
+ this . bindRemovalTracker ( )
192
199
}
193
200
194
201
/**
@@ -203,6 +210,7 @@ class ReactTooltip extends Component {
203
210
} )
204
211
205
212
if ( globalEventOff ) window . removeEventListener ( globalEventOff , this . hideTooltip )
213
+ this . unbindRemovalTracker ( )
206
214
}
207
215
208
216
/**
@@ -215,7 +223,6 @@ class ReactTooltip extends Component {
215
223
target . removeEventListener ( 'mouseenter' , this . showTooltip , isCaptureMode )
216
224
target . removeEventListener ( 'mousemove' , this . updateTooltip , isCaptureMode )
217
225
target . removeEventListener ( 'mouseleave' , this . hideTooltip , isCaptureMode )
218
- target . removeEventListener ( 'DOMNodeRemovedFromDocument' , this . checkSameTarget , isCaptureMode )
219
226
}
220
227
221
228
/**
@@ -332,12 +339,6 @@ class ReactTooltip extends Component {
332
339
}
333
340
}
334
341
335
- checkSameTarget ( e ) {
336
- if ( this . state . currentTarget === e . currentTarget ) {
337
- this . hideTooltip ( e )
338
- }
339
- }
340
-
341
342
/**
342
343
* When mouse leave, hide tooltip
343
344
*/
0 commit comments