@@ -10,6 +10,7 @@ import windowListener from './decorators/windowListener'
1010import customEvent from './decorators/customEvent'
1111import isCapture from './decorators/isCapture'
1212import getEffect from './decorators/getEffect'
13+ import trackRemoval from './decorators/trackRemoval'
1314
1415/* Utils */
1516import getPosition from './utils/getPosition'
@@ -20,7 +21,12 @@ import nodeListToArray from './utils/nodeListToArray'
2021/* CSS */
2122import cssStyle from './style'
2223
23- @staticMethods @windowListener @customEvent @isCapture @getEffect
24+ @staticMethods
25+ @windowListener
26+ @customEvent
27+ @isCapture
28+ @getEffect
29+ @trackRemoval
2430class ReactTooltip extends Component {
2531
2632 static propTypes = {
@@ -86,7 +92,6 @@ class ReactTooltip extends Component {
8692 this . bind ( [
8793 'showTooltip' ,
8894 'updateTooltip' ,
89- 'checkSameTarget' ,
9095 'hideTooltip' ,
9196 'globalRebuild' ,
9297 'globalShow' ,
@@ -181,14 +186,16 @@ class ReactTooltip extends Component {
181186 target . addEventListener ( 'mousemove' , this . updateTooltip , isCaptureMode )
182187 }
183188 target . addEventListener ( 'mouseleave' , this . hideTooltip , isCaptureMode )
184- target . addEventListener ( 'DOMNodeRemovedFromDocument' , this . checkSameTarget , isCaptureMode )
185189 } )
186190
187191 // Global event to hide tooltip
188192 if ( globalEventOff ) {
189193 window . removeEventListener ( globalEventOff , this . hideTooltip )
190194 window . addEventListener ( globalEventOff , this . hideTooltip , false )
191195 }
196+
197+ // Track removal of targetArray elements from DOM
198+ this . bindRemovalTracker ( )
192199 }
193200
194201 /**
@@ -203,6 +210,7 @@ class ReactTooltip extends Component {
203210 } )
204211
205212 if ( globalEventOff ) window . removeEventListener ( globalEventOff , this . hideTooltip )
213+ this . unbindRemovalTracker ( )
206214 }
207215
208216 /**
@@ -215,7 +223,6 @@ class ReactTooltip extends Component {
215223 target . removeEventListener ( 'mouseenter' , this . showTooltip , isCaptureMode )
216224 target . removeEventListener ( 'mousemove' , this . updateTooltip , isCaptureMode )
217225 target . removeEventListener ( 'mouseleave' , this . hideTooltip , isCaptureMode )
218- target . removeEventListener ( 'DOMNodeRemovedFromDocument' , this . checkSameTarget , isCaptureMode )
219226 }
220227
221228 /**
@@ -332,12 +339,6 @@ class ReactTooltip extends Component {
332339 }
333340 }
334341
335- checkSameTarget ( e ) {
336- if ( this . state . currentTarget === e . currentTarget ) {
337- this . hideTooltip ( e )
338- }
339- }
340-
341342 /**
342343 * When mouse leave, hide tooltip
343344 */
0 commit comments