Skip to content

Commit

Permalink
fix(menu): solve a11y keyboard navigation issues
Browse files Browse the repository at this point in the history
  • Loading branch information
mlmoravek committed Feb 28, 2025
1 parent 2e263fa commit c71265e
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 6 deletions.
14 changes: 11 additions & 3 deletions packages/oruga/src/components/menu/Menu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,10 @@ function isItemViable(item: MenuChildItem<T>): boolean {
);
}
function onFocusOut(): void {
focusedItem.value = undefined;
}
// #endregion --- Focus Feature ---
// #region --- Computed Component Classes ---
Expand All @@ -231,7 +235,11 @@ const labelClasses = defineClasses(["labelClass", "o-menu__label"]);
</script>

<template>
<nav ref="rootElement" data-oruga="menu" :class="rootClasses">
<nav
ref="rootElement"
data-oruga="menu"
:class="rootClasses"
@focusout="onFocusOut">
<div v-if="label || $slots.label" :id="labelId" :class="labelClasses">
<!--
@slot Override icon and label
Expand Down Expand Up @@ -263,8 +271,8 @@ const labelClasses = defineClasses(["labelClass", "o-menu__label"]);
:aria-labelledby="labelId"
@keydown.left="onCollapse"
@keydown.right="onExpend"
@keydown.enter="onEnter"
@keydown.space="onEnter"
@keydown.enter.prevent="onEnter"
@keydown.space.prevent="onEnter"
@keydown.up.prevent="onUpPressed"
@keydown.down.prevent="onDownPressed"
@keydown.home.prevent="onHomePressed"
Expand Down
5 changes: 3 additions & 2 deletions packages/oruga/src/components/menu/MenuItem.vue
Original file line number Diff line number Diff line change
Expand Up @@ -218,8 +218,9 @@ const submenuClasses = defineClasses([
:aria-disabled="disabled || parent.disabled"
:aria-expanded="hasChildren ? isExpanded : undefined"
:aria-owns="hasChildren ? submenuId : undefined"
@keyup.enter="selectItem"
@click="selectItem">
@click="selectItem"
@keydown.enter="selectItem"
@keydown.space="selectItem">
<o-icon
v-if="icon"
:icon="icon"
Expand Down
2 changes: 1 addition & 1 deletion packages/oruga/src/components/menu/examples/links.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<template>
<section>
<o-menu>
<o-menu label="Links">
<o-menu-item
label="Github"
icon="link"
Expand Down

0 comments on commit c71265e

Please sign in to comment.