Skip to content

Commit 635f7bc

Browse files
fix: handle hovering tooltip correctly
1 parent 9cc0685 commit 635f7bc

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/components/Tooltip/Tooltip.tsx

+12-10
Original file line numberDiff line numberDiff line change
@@ -573,19 +573,21 @@ const Tooltip = ({
573573
})
574574
}
575575

576-
const handleMouseEnterTooltip = () => {
576+
const handleMouseOverTooltip = () => {
577577
hoveringTooltip.current = true
578578
}
579-
const handleMouseLeaveTooltip = () => {
579+
const handleMouseOutTooltip = () => {
580580
hoveringTooltip.current = false
581581
handleHideTooltip()
582582
}
583583

584-
if (clickable && !hasClickEvent) {
585-
// used to keep the tooltip open when hovering content.
586-
// not needed if using click events.
587-
tooltipRef.current?.addEventListener('mouseenter', handleMouseEnterTooltip)
588-
tooltipRef.current?.addEventListener('mouseleave', handleMouseLeaveTooltip)
584+
const addHoveringTooltipListeners =
585+
clickable && (actualCloseEvents.mouseout || actualCloseEvents.mouseleave)
586+
if (addHoveringTooltipListeners) {
587+
// used to keep the tooltip open when hovering from anchor to tooltip.
588+
// only relevant if either `mouseout`/`mouseleave` is in use
589+
tooltipRef.current?.addEventListener('mouseover', handleMouseOverTooltip)
590+
tooltipRef.current?.addEventListener('mouseout', handleMouseOutTooltip)
589591
}
590592

591593
enabledEvents.forEach(({ event, listener }) => {
@@ -611,9 +613,9 @@ const Tooltip = ({
611613
if (actualGlobalCloseEvents.escape) {
612614
window.removeEventListener('keydown', handleEsc)
613615
}
614-
if (clickable && !hasClickEvent) {
615-
tooltipRef.current?.removeEventListener('mouseenter', handleMouseEnterTooltip)
616-
tooltipRef.current?.removeEventListener('mouseleave', handleMouseLeaveTooltip)
616+
if (addHoveringTooltipListeners) {
617+
tooltipRef.current?.removeEventListener('mouseover', handleMouseOverTooltip)
618+
tooltipRef.current?.removeEventListener('mouseout', handleMouseOutTooltip)
617619
}
618620
enabledEvents.forEach(({ event, listener }) => {
619621
elementRefs.forEach((ref) => {

0 commit comments

Comments
 (0)