Skip to content

Commit d701991

Browse files
committed
Fix keyboard event penetration (#115)
1 parent 6479c86 commit d701991

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

examples/views/BasicUseage.vue

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,15 @@
1919
<div @contextmenu="onContextMenu3($event, 'b')">Bottom Center</div>
2020
<div @contextmenu="onContextMenu3($event, 'br')">Bottom Right</div>
2121
</div>
22+
<div class="box2" style="width: 170px; height: 140px" :tabindex="1" @contextmenu="onContextMenu($event)" @keydown="handleKeyPress">
23+
Test keyboard event: Use arrow key to navigate menus.
24+
<br>
25+
Down div event catch: {{ testDownDivKey }}
26+
</div>
2227
</div>
2328
<div class="box1" style="flex:1;padding: 50px" @contextmenu="onContextMenu1($event)">
2429
Test nested menus: Contextmenu In parent
25-
<div class="box2" style="width: 170px; height: 100px" @contextmenu="onContextMenu2($event)">
30+
<div class="box2" style="width: 170px; height: 50px" @contextmenu="onContextMenu2($event)">
2631
Contextmenu In child
2732
</div>
2833
</div>
@@ -111,6 +116,13 @@ onMounted(() => {
111116
}).hljs?.highlightAll?.();
112117
});
113118
119+
const testDownDivKey = ref('None');
120+
121+
function handleKeyPress(e: KeyboardEvent) {
122+
console.log('Key press: ', e.key);
123+
testDownDivKey.value = e.key;
124+
}
125+
114126
const members = [
115127
'1',
116128
'2',

library/ContextSubMenuWrapper.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ function installBodyEvents() {
140140
if (!props.isFullScreenContainer && container.value)
141141
container.value.addEventListener("scroll", onBodyScroll, true);
142142
if (options.value.keyboardControl !== false)
143-
document.addEventListener('keydown', onMenuKeyDown);
143+
document.addEventListener('keydown', onMenuKeyDown, true);
144144
}, 50);
145145
}
146146
function removeBodyEvents() {
@@ -150,7 +150,7 @@ function removeBodyEvents() {
150150
if (!props.isFullScreenContainer && container.value)
151151
container.value.removeEventListener("scroll", onBodyScroll, true);
152152
if (options.value.keyboardControl !== false)
153-
document.removeEventListener('keydown', onMenuKeyDown);
153+
document.removeEventListener('keydown', onMenuKeyDown, true);
154154
}
155155
156156
//For keyboard event, remember which submenu is active

0 commit comments

Comments
 (0)