1- import React , { Children , useState , cloneElement } from 'react' ;
1+ import React , { Children , useState , useEffect , cloneElement } from 'react' ;
22import ReactDOM from 'react-dom' ;
33import PropTypes from 'prop-types' ;
44import { TooltipElement } from './TooltipElement' ;
@@ -23,24 +23,40 @@ export const Tooltip = ({
2323 setActive ( false ) ;
2424 }
2525
26+ // fix for Safari iOS back button issue
27+ useEffect ( ( ) => {
28+ const handlePageShow = ( ) => {
29+ setActive ( false ) ;
30+ } ;
31+
32+ window . addEventListener ( 'pageshow' , handlePageShow ) ;
33+
34+ return ( ) => {
35+ window . removeEventListener ( 'pageshow' , handlePageShow ) ;
36+ } ;
37+ } , [ ] ) ;
38+
2639 return (
2740 < >
28- { Children . map ( children , ( child ) => cloneElement ( child , {
29- onMouseEnter : handleActivate ,
30- onFocus : handleActivate ,
31- onMouseLeave : handleDeactivate ,
32- onBlur : handleDeactivate ,
33- ...rest ,
34- } ) ) }
35- { active && ReactDOM . createPortal (
36- < TooltipElement
37- content = { content }
38- parentDomRect = { parentDomRect }
39- position = { position }
40- tooltipCustomClass = { tooltipCustomClass }
41- /> ,
42- document . body
41+ { Children . map ( children , ( child ) =>
42+ cloneElement ( child , {
43+ onMouseEnter : handleActivate ,
44+ onFocus : handleActivate ,
45+ onMouseLeave : handleDeactivate ,
46+ onBlur : handleDeactivate ,
47+ ...rest ,
48+ } )
4349 ) }
50+ { active
51+ && ReactDOM . createPortal (
52+ < TooltipElement
53+ content = { content }
54+ parentDomRect = { parentDomRect }
55+ position = { position }
56+ tooltipCustomClass = { tooltipCustomClass }
57+ /> ,
58+ document . body
59+ ) }
4460 </ >
4561 ) ;
4662} ;
0 commit comments