@@ -58,7 +58,7 @@ const visible = ref(false)
58
58
const timeout = useTimeoutPool ()
59
59
const id = getTooltipId ()
60
60
61
- function handleTargetMouseEnter () {
61
+ function handleTargetInteractionStart () {
62
62
timeout .cancel (' _' )
63
63
64
64
if (openTooltips .size > 0 ) {
@@ -73,16 +73,25 @@ function handleTargetMouseEnter() {
73
73
}
74
74
}
75
75
76
- function handleTargetMouseLeave () {
76
+ function handleTargetInteractionEnd () {
77
77
timeout .cancel (' _' )
78
78
visible .value = false
79
79
timeout .set (' _' , () => {
80
80
openTooltips .delete (id )
81
81
}, /** leave animation duration */ 200 )
82
82
}
83
83
84
- useEventListener (() => props .target , ' mouseenter' , handleTargetMouseEnter )
85
- useEventListener (() => props .target , ' mouseleave' , handleTargetMouseLeave )
84
+ const targetGetter = () => props .target
85
+
86
+ useEventListener (targetGetter , ' mouseenter' , handleTargetInteractionStart )
87
+ useEventListener (targetGetter , ' mouseleave' , handleTargetInteractionEnd )
88
+ useEventListener (targetGetter , ' blur' , handleTargetInteractionEnd )
89
+ useEventListener (targetGetter , ' focus' , (e ) => {
90
+ if (! (e .target instanceof HTMLElement ) || ! e .target .hasAttribute (' data-focus-visible-added' ))
91
+ return
92
+
93
+ handleTargetInteractionStart ()
94
+ })
86
95
87
96
onScopeDispose (() => {
88
97
openTooltips .delete (id )
0 commit comments