@@ -573,19 +573,21 @@ const Tooltip = ({
573
573
} )
574
574
}
575
575
576
- const handleMouseEnterTooltip = ( ) => {
576
+ const handleMouseOverTooltip = ( ) => {
577
577
hoveringTooltip . current = true
578
578
}
579
- const handleMouseLeaveTooltip = ( ) => {
579
+ const handleMouseOutTooltip = ( ) => {
580
580
hoveringTooltip . current = false
581
581
handleHideTooltip ( )
582
582
}
583
583
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 )
589
591
}
590
592
591
593
enabledEvents . forEach ( ( { event, listener } ) => {
@@ -611,9 +613,9 @@ const Tooltip = ({
611
613
if ( actualGlobalCloseEvents . escape ) {
612
614
window . removeEventListener ( 'keydown' , handleEsc )
613
615
}
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 )
617
619
}
618
620
enabledEvents . forEach ( ( { event, listener } ) => {
619
621
elementRefs . forEach ( ( ref ) => {
0 commit comments