@@ -36,6 +36,7 @@ const Tooltip = ({
36
36
const [ inlineStyles , setInlineStyles ] = useState ( { } )
37
37
const [ inlineArrowStyles , setInlineArrowStyles ] = useState ( { } )
38
38
const [ show , setShow ] = useState < boolean > ( false )
39
+ const [ calculatingPosition , setCalculatingPosition ] = useState ( false )
39
40
const { anchorRefs, setActiveAnchor : setProviderActiveAnchor } = useTooltip ( ) ( id )
40
41
const [ activeAnchor , setActiveAnchor ] = useState < React . RefObject < HTMLElement > > ( { current : null } )
41
42
@@ -90,7 +91,6 @@ const Tooltip = ({
90
91
} else {
91
92
handleShow ( false )
92
93
}
93
- setActiveAnchor ( { current : null } )
94
94
95
95
if ( tooltipShowDelayTimerRef . current ) {
96
96
clearTimeout ( tooltipShowDelayTimerRef . current )
@@ -162,6 +162,7 @@ const Tooltip = ({
162
162
// `anchorId` element takes precedence
163
163
elementReference = document . querySelector ( `[id='${ anchorId } ']` ) as HTMLElement
164
164
}
165
+ setCalculatingPosition ( true )
165
166
let mounted = true
166
167
computeTooltipPosition ( {
167
168
place,
@@ -175,10 +176,10 @@ const Tooltip = ({
175
176
// invalidate computed positions after unmount
176
177
return
177
178
}
179
+ setCalculatingPosition ( false )
178
180
if ( Object . keys ( computedStylesData . tooltipStyles ) . length ) {
179
181
setInlineStyles ( computedStylesData . tooltipStyles )
180
182
}
181
-
182
183
if ( Object . keys ( computedStylesData . tooltipArrowStyles ) . length ) {
183
184
setInlineArrowStyles ( computedStylesData . tooltipArrowStyles )
184
185
}
@@ -204,7 +205,7 @@ const Tooltip = ({
204
205
id = { id }
205
206
role = "tooltip"
206
207
className = { classNames ( styles [ 'tooltip' ] , styles [ variant ] , className , {
207
- [ styles [ 'show' ] ] : isOpen || show ,
208
+ [ styles [ 'show' ] ] : ! calculatingPosition && ( isOpen || show ) ,
208
209
[ styles [ 'fixed' ] ] : positionStrategy === 'fixed' ,
209
210
} ) }
210
211
style = { { ...externalStyles , ...inlineStyles } }
0 commit comments