@@ -281,13 +281,6 @@ const Tooltip = ({
281
281
}
282
282
}
283
283
284
- const handleEsc = ( event : KeyboardEvent ) => {
285
- if ( event . key !== 'Escape' ) {
286
- return
287
- }
288
- handleShow ( false )
289
- }
290
-
291
284
// debounce handler to prevent call twice when
292
285
// mouse enter and focus events being triggered toggether
293
286
const debouncedHandleShowTooltip = debounce ( handleShowTooltip , 50 , true )
@@ -305,12 +298,29 @@ const Tooltip = ({
305
298
elementRefs . add ( { current : anchorById } )
306
299
}
307
300
301
+ const handleScrollResize = ( ) => {
302
+ handleShow ( false )
303
+ }
304
+
305
+ const tooltipParent = tooltipRef . current ?. parentElement
306
+ const anchorParent = activeAnchor ?. parentElement
307
+
308
308
if ( closeOnScroll ) {
309
- window . addEventListener ( 'scroll' , debouncedHandleHideTooltip )
309
+ window . addEventListener ( 'scroll' , handleScrollResize )
310
+ tooltipParent ?. addEventListener ( 'scroll' , handleScrollResize )
311
+ anchorParent ?. addEventListener ( 'scroll' , handleScrollResize )
310
312
}
311
313
if ( closeOnResize ) {
312
- window . addEventListener ( 'resize' , debouncedHandleHideTooltip )
314
+ window . addEventListener ( 'resize' , handleScrollResize )
313
315
}
316
+
317
+ const handleEsc = ( event : KeyboardEvent ) => {
318
+ if ( event . key !== 'Escape' ) {
319
+ return
320
+ }
321
+ handleShow ( false )
322
+ }
323
+
314
324
if ( closeOnEsc ) {
315
325
window . addEventListener ( 'keydown' , handleEsc )
316
326
}
@@ -356,10 +366,12 @@ const Tooltip = ({
356
366
357
367
return ( ) => {
358
368
if ( closeOnScroll ) {
359
- window . removeEventListener ( 'scroll' , debouncedHandleHideTooltip )
369
+ window . removeEventListener ( 'scroll' , handleScrollResize )
370
+ tooltipParent ?. removeEventListener ( 'scroll' , handleScrollResize )
371
+ anchorParent ?. removeEventListener ( 'scroll' , handleScrollResize )
360
372
}
361
373
if ( closeOnResize ) {
362
- window . removeEventListener ( 'resize' , debouncedHandleHideTooltip )
374
+ window . removeEventListener ( 'resize' , handleScrollResize )
363
375
}
364
376
if ( shouldOpenOnClick ) {
365
377
window . removeEventListener ( 'click' , handleClickOutsideAnchors )
0 commit comments