Skip to content

Commit ee74255

Browse files
fix: closeOnScroll ignore delay, more listeners
1 parent 570c9b7 commit ee74255

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

src/components/Tooltip/Tooltip.tsx

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)