@@ -281,13 +281,6 @@ const Tooltip = ({
281281 }
282282 }
283283
284- const handleEsc = ( event : KeyboardEvent ) => {
285- if ( event . key !== 'Escape' ) {
286- return
287- }
288- handleShow ( false )
289- }
290-
291284 // debounce handler to prevent call twice when
292285 // mouse enter and focus events being triggered toggether
293286 const debouncedHandleShowTooltip = debounce ( handleShowTooltip , 50 , true )
@@ -305,12 +298,29 @@ const Tooltip = ({
305298 elementRefs . add ( { current : anchorById } )
306299 }
307300
301+ const handleScrollResize = ( ) => {
302+ handleShow ( false )
303+ }
304+
305+ const tooltipParent = tooltipRef . current ?. parentElement
306+ const anchorParent = activeAnchor ?. parentElement
307+
308308 if ( closeOnScroll ) {
309- window . addEventListener ( 'scroll' , debouncedHandleHideTooltip )
309+ window . addEventListener ( 'scroll' , handleScrollResize )
310+ tooltipParent ?. addEventListener ( 'scroll' , handleScrollResize )
311+ anchorParent ?. addEventListener ( 'scroll' , handleScrollResize )
310312 }
311313 if ( closeOnResize ) {
312- window . addEventListener ( 'resize' , debouncedHandleHideTooltip )
314+ window . addEventListener ( 'resize' , handleScrollResize )
313315 }
316+
317+ const handleEsc = ( event : KeyboardEvent ) => {
318+ if ( event . key !== 'Escape' ) {
319+ return
320+ }
321+ handleShow ( false )
322+ }
323+
314324 if ( closeOnEsc ) {
315325 window . addEventListener ( 'keydown' , handleEsc )
316326 }
@@ -356,10 +366,12 @@ const Tooltip = ({
356366
357367 return ( ) => {
358368 if ( closeOnScroll ) {
359- window . removeEventListener ( 'scroll' , debouncedHandleHideTooltip )
369+ window . removeEventListener ( 'scroll' , handleScrollResize )
370+ tooltipParent ?. removeEventListener ( 'scroll' , handleScrollResize )
371+ anchorParent ?. removeEventListener ( 'scroll' , handleScrollResize )
360372 }
361373 if ( closeOnResize ) {
362- window . removeEventListener ( 'resize' , debouncedHandleHideTooltip )
374+ window . removeEventListener ( 'resize' , handleScrollResize )
363375 }
364376 if ( shouldOpenOnClick ) {
365377 window . removeEventListener ( 'click' , handleClickOutsideAnchors )
0 commit comments