@@ -179,8 +179,8 @@ exports.default = function (target) {
179
179
* Hide all tooltip
180
180
* @trigger ReactTooltip.hide()
181
181
*/
182
- target . hide = function ( ) {
183
- dispatchGlobalEvent ( _constant2 . default . GLOBAL . HIDE ) ;
182
+ target . hide = function ( target ) {
183
+ dispatchGlobalEvent ( _constant2 . default . GLOBAL . HIDE , { target : target } ) ;
184
184
} ;
185
185
186
186
/**
@@ -214,6 +214,13 @@ exports.default = function (target) {
214
214
this . showTooltip ( e , true ) ;
215
215
}
216
216
} ;
217
+
218
+ target . prototype . globalHide = function ( event ) {
219
+ if ( this . mount ) {
220
+ var hasTarget = event && event . detail && event . detail . target && true || false ;
221
+ this . hideTooltip ( { currentTarget : hasTarget && event . detail . target } , hasTarget ) ;
222
+ }
223
+ } ;
217
224
} ;
218
225
219
226
var _constant = require ( '../constant' ) ;
@@ -247,10 +254,10 @@ Object.defineProperty(exports, "__esModule", {
247
254
} ) ;
248
255
249
256
exports . default = function ( target ) {
250
- target . prototype . bindWindowEvents = function ( ) {
257
+ target . prototype . bindWindowEvents = function ( resizeHide ) {
251
258
// ReactTooltip.hide
252
- window . removeEventListener ( _constant2 . default . GLOBAL . HIDE , this . hideTooltip ) ;
253
- window . addEventListener ( _constant2 . default . GLOBAL . HIDE , this . hideTooltip , false ) ;
259
+ window . removeEventListener ( _constant2 . default . GLOBAL . HIDE , this . globalHide ) ;
260
+ window . addEventListener ( _constant2 . default . GLOBAL . HIDE , this . globalHide , false ) ;
254
261
255
262
// ReactTooltip.rebuild
256
263
window . removeEventListener ( _constant2 . default . GLOBAL . REBUILD , this . globalRebuild ) ;
@@ -261,12 +268,14 @@ exports.default = function (target) {
261
268
window . addEventListener ( _constant2 . default . GLOBAL . SHOW , this . globalShow , false ) ;
262
269
263
270
// Resize
264
- window . removeEventListener ( 'resize' , this . onWindowResize ) ;
265
- window . addEventListener ( 'resize' , this . onWindowResize , false ) ;
271
+ if ( resizeHide ) {
272
+ window . removeEventListener ( 'resize' , this . onWindowResize ) ;
273
+ window . addEventListener ( 'resize' , this . onWindowResize , false ) ;
274
+ }
266
275
} ;
267
276
268
277
target . prototype . unbindWindowEvents = function ( ) {
269
- window . removeEventListener ( _constant2 . default . GLOBAL . HIDE , this . hideTooltip ) ;
278
+ window . removeEventListener ( _constant2 . default . GLOBAL . HIDE , this . globalHide ) ;
270
279
window . removeEventListener ( _constant2 . default . GLOBAL . REBUILD , this . globalRebuild ) ;
271
280
window . removeEventListener ( _constant2 . default . GLOBAL . SHOW , this . globalShow ) ;
272
281
window . removeEventListener ( 'resize' , this . onWindowResize ) ;
@@ -383,7 +392,7 @@ var ReactTooltip = (0, _staticMethods2.default)(_class = (0, _windowListener2.de
383
392
ariaProps : ( 0 , _aria . parseAria ) ( props ) // aria- and role attributes
384
393
} ;
385
394
386
- _this . bind ( [ 'showTooltip' , 'updateTooltip' , 'hideTooltip' , 'globalRebuild' , 'globalShow' , 'onWindowResize' ] ) ;
395
+ _this . bind ( [ 'showTooltip' , 'updateTooltip' , 'hideTooltip' , 'globalRebuild' , 'globalShow' , 'globalHide' , ' onWindowResize'] ) ;
387
396
388
397
_this . mount = true ;
389
398
_this . delayShowLoop = null ;
@@ -411,7 +420,7 @@ var ReactTooltip = (0, _staticMethods2.default)(_class = (0, _windowListener2.de
411
420
value : function componentDidMount ( ) {
412
421
this . setStyleHeader ( ) ; // Set the style to the <link>
413
422
this . bindListener ( ) ; // Bind listener for tooltip
414
- this . bindWindowEvents ( ) ; // Bind global event for static method
423
+ this . bindWindowEvents ( this . props . resizeHide ) ; // Bind global event for static method
415
424
}
416
425
} , {
417
426
key : 'componentWillReceiveProps' ,
@@ -584,6 +593,15 @@ var ReactTooltip = (0, _staticMethods2.default)(_class = (0, _windowListener2.de
584
593
585
594
// If it is focus event or called by ReactTooltip.show, switch to `solid` effect
586
595
var switchToSolid = e instanceof window . FocusEvent || isGlobalCall ;
596
+
597
+ // if it need to skip adding hide listener to scroll
598
+ var scrollHide = true ;
599
+ if ( e . currentTarget . getAttribute ( 'data-scroll-hide' ) ) {
600
+ scrollHide = e . currentTarget . getAttribute ( 'data-scroll-hide' ) === 'true' ;
601
+ } else if ( this . props . scrollHide != null ) {
602
+ scrollHide = this . props . scrollHide ;
603
+ }
604
+
587
605
this . setState ( {
588
606
placeholder : placeholder ,
589
607
place : e . currentTarget . getAttribute ( 'data-place' ) || this . props . place || 'top' ,
@@ -597,7 +615,7 @@ var ReactTooltip = (0, _staticMethods2.default)(_class = (0, _windowListener2.de
597
615
extraClass : e . currentTarget . getAttribute ( 'data-class' ) || this . props . class || '' ,
598
616
countTransform : e . currentTarget . getAttribute ( 'data-count-transform' ) ? e . currentTarget . getAttribute ( 'data-count-transform' ) === 'true' : this . props . countTransform != null ? this . props . countTransform : true
599
617
} , function ( ) {
600
- _this5 . addScrollListener ( e ) ;
618
+ if ( scrollHide ) _this5 . addScrollListener ( e ) ;
601
619
_this5 . updateTooltip ( e ) ;
602
620
603
621
if ( getContent && Array . isArray ( getContent ) ) {
@@ -664,15 +682,21 @@ var ReactTooltip = (0, _staticMethods2.default)(_class = (0, _windowListener2.de
664
682
665
683
} , {
666
684
key : 'hideTooltip' ,
667
- value : function hideTooltip ( ) {
685
+ value : function hideTooltip ( e , hasTarget ) {
668
686
var _this7 = this ;
669
687
688
+ if ( ! this . mount ) return ;
689
+ if ( hasTarget ) {
690
+ // Don't trigger other elements belongs to other ReactTooltip
691
+ var targetArray = this . getTargetArray ( this . props . id ) ;
692
+ var isMyElement = targetArray . some ( function ( ele ) {
693
+ return ele === e . currentTarget ;
694
+ } ) ;
695
+ if ( ! isMyElement || ! this . state . show ) return ;
696
+ }
670
697
var delayHide = this . state . delayHide ;
671
698
var afterHide = this . props . afterHide ;
672
699
673
-
674
- if ( ! this . mount ) return ;
675
-
676
700
var resetState = function resetState ( ) {
677
701
var isVisible = _this7 . state . show ;
678
702
_this7 . setState ( {
@@ -816,7 +840,11 @@ var ReactTooltip = (0, _staticMethods2.default)(_class = (0, _windowListener2.de
816
840
countTransform : _react . PropTypes . bool ,
817
841
afterShow : _react . PropTypes . func ,
818
842
afterHide : _react . PropTypes . func ,
819
- disable : _react . PropTypes . bool
843
+ disable : _react . PropTypes . bool ,
844
+ scrollHide : _react . PropTypes . bool ,
845
+ resizeHide : _react . PropTypes . bool
846
+ } , _class2 . defaultProps = {
847
+ resizeHide : true
820
848
} , _temp ) ) || _class ) || _class ) || _class ) || _class ;
821
849
822
850
/* export default not fit for standalone, it will exports {default:...} */
0 commit comments