Skip to content

MenuBar

Adds keyboard navigation support to an element with [role="menubar"]. Also, recursively creates Menu/MenuBar instances for sub menus. Supports the following spec:

Key Action
Shift + Tab DESKTOP: Focus out of Menu.
MOBILE: Navigates to the previous MenuItem.
Tab DESKTOP: Focus into Menu.
MOBILE: Navigates to the next MenuItem.
DESKTOP: None.
MOBILE: Navigates to previous MenuItem.
DESKTOP: Navigates to the first sub menu MenuItem if it exists.
MOBILE: Navigates to the next MenuItem.
Navigates to the previous MenuItem.
Navigates to the next MenuItem.
Home Navigates to the first MenuItem.
End Navigates to the last MenuItem.
Spacebar
or
Enter
Navigates to the first sub menu MenuItem or clicks current MenuItem.
Any Character Navigates to the closest MenuItem that starts with the matching character.

Installation

Terminal
pnpm add @mvps-genesis/accessibility

Example Usage

.js

import {MenuBar} from '@mvps-genesis/accessibility';

// Basic instance constructor
new MenuBar({
    element: '.js-my-menubar-element',
    breakpoint: '60em',
    navigateOnDown: true,
    navigateOnEnter: true,
    navigateOnSpace: true,
    subMenuFocusDelay: 100
});

// Create from NodeList
MenuBar.createFromNodeList(
    document.querySelectorAll('.js-my-menubar-elements'),
    {
        breakpoint: '60em',
        navigateOnDown: true,
        navigateOnEnter: true,
        navigateOnSpace: true,
        subMenuFocusDelay: 100
    }
);

Parameters

Inherits all of the same parameters from Menu.