@@ -36,6 +36,7 @@ const Tooltip = ({
3636 const [ inlineStyles , setInlineStyles ] = useState ( { } )
3737 const [ inlineArrowStyles , setInlineArrowStyles ] = useState ( { } )
3838 const [ show , setShow ] = useState < boolean > ( false )
39+ const [ calculatingPosition , setCalculatingPosition ] = useState ( false )
3940 const { anchorRefs, setActiveAnchor : setProviderActiveAnchor } = useTooltip ( ) ( id )
4041 const [ activeAnchor , setActiveAnchor ] = useState < React . RefObject < HTMLElement > > ( { current : null } )
4142
@@ -90,7 +91,6 @@ const Tooltip = ({
9091 } else {
9192 handleShow ( false )
9293 }
93- setActiveAnchor ( { current : null } )
9494
9595 if ( tooltipShowDelayTimerRef . current ) {
9696 clearTimeout ( tooltipShowDelayTimerRef . current )
@@ -162,6 +162,7 @@ const Tooltip = ({
162162 // `anchorId` element takes precedence
163163 elementReference = document . querySelector ( `[id='${ anchorId } ']` ) as HTMLElement
164164 }
165+ setCalculatingPosition ( true )
165166 let mounted = true
166167 computeTooltipPosition ( {
167168 place,
@@ -175,10 +176,10 @@ const Tooltip = ({
175176 // invalidate computed positions after unmount
176177 return
177178 }
179+ setCalculatingPosition ( false )
178180 if ( Object . keys ( computedStylesData . tooltipStyles ) . length ) {
179181 setInlineStyles ( computedStylesData . tooltipStyles )
180182 }
181-
182183 if ( Object . keys ( computedStylesData . tooltipArrowStyles ) . length ) {
183184 setInlineArrowStyles ( computedStylesData . tooltipArrowStyles )
184185 }
@@ -204,7 +205,7 @@ const Tooltip = ({
204205 id = { id }
205206 role = "tooltip"
206207 className = { classNames ( styles [ 'tooltip' ] , styles [ variant ] , className , {
207- [ styles [ 'show' ] ] : isOpen || show ,
208+ [ styles [ 'show' ] ] : ! calculatingPosition && ( isOpen || show ) ,
208209 [ styles [ 'fixed' ] ] : positionStrategy === 'fixed' ,
209210 } ) }
210211 style = { { ...externalStyles , ...inlineStyles } }
0 commit comments