File tree Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Expand file tree Collapse file tree 2 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -14,7 +14,7 @@ import {
14
14
import sinon from 'sinon' ;
15
15
import '@vaadin/menu-bar' ;
16
16
import { Tooltip } from '@vaadin/tooltip' ;
17
- import { mouseleave } from '@vaadin/tooltip/test/helpers.js' ;
17
+ import { mouseenter , mouseleave } from '@vaadin/tooltip/test/helpers.js' ;
18
18
19
19
export function mouseover ( target ) {
20
20
fire ( target , 'mouseover' ) ;
@@ -129,6 +129,14 @@ describe('menu-bar with tooltip', () => {
129
129
expect ( tooltip . opened ) . to . be . false ;
130
130
} ) ;
131
131
132
+ it ( 'should hide tooltip on mouseleave from overlay to outside' , ( ) => {
133
+ const overlay = tooltip . _overlayElement ;
134
+ mouseover ( buttons [ 0 ] ) ;
135
+ mouseenter ( overlay ) ;
136
+ mouseleave ( overlay ) ;
137
+ expect ( overlay . opened ) . to . be . false ;
138
+ } ) ;
139
+
132
140
it ( 'should not show tooltip on focus without keyboard interaction' , async ( ) => {
133
141
buttons [ 0 ] . focus ( ) ;
134
142
await nextRender ( ) ;
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ export const InteractionsMixin = (superClass) =>
34
34
constructor ( ) {
35
35
super ( ) ;
36
36
this . __boundOnContextMenuKeydown = this . __onContextMenuKeydown . bind ( this ) ;
37
+ this . __boundOnTooltipMouseLeave = this . __onTooltipOverlayMouseLeave . bind ( this ) ;
37
38
}
38
39
39
40
static get observers ( ) {
@@ -119,6 +120,11 @@ export const InteractionsMixin = (superClass) =>
119
120
tooltip . generator = ( { item } ) => item && item . tooltip ;
120
121
}
121
122
123
+ if ( ! tooltip . _mouseLeaveListenerAdded ) {
124
+ tooltip . _overlayElement . addEventListener ( 'mouseleave' , this . __boundOnTooltipMouseLeave ) ;
125
+ tooltip . _mouseLeaveListenerAdded = true ;
126
+ }
127
+
122
128
if ( ! this . _subMenu . opened ) {
123
129
this . _tooltipController . setTarget ( button ) ;
124
130
this . _tooltipController . setContext ( { item : button . item } ) ;
@@ -140,6 +146,13 @@ export const InteractionsMixin = (superClass) =>
140
146
}
141
147
}
142
148
149
+ /** @private */
150
+ __onTooltipOverlayMouseLeave ( event ) {
151
+ if ( event . relatedTarget !== this . _tooltipController . target ) {
152
+ this . _hideTooltip ( ) ;
153
+ }
154
+ }
155
+
143
156
/** @protected */
144
157
_setExpanded ( button , expanded ) {
145
158
button . toggleAttribute ( 'expanded' , expanded ) ;
You can’t perform that action at this time.
0 commit comments