@spectrum-web-components/menu-group

An <sp-menu /> is used for creating a menu list. The various elements inside a menu are given as <sp-menu-group/>, <sp-menu-item />, or <sp-menu-divider />.

Usage no npm install needed!

<script type="module">
  import spectrumWebComponentsMenuGroup from 'https://cdn.skypack.dev/@spectrum-web-components/menu-group';
</script>

README

Description

An <sp-menu /> is used for creating a menu list. The various elements inside a menu are given as <sp-menu-group/>, <sp-menu-item />, or <sp-menu-divider />.

Installation

See it on NPM! How big is this package in your project?

npm install @spectrum-web-components/menu-group

# or

yarn add @spectrum-web-components/menu-group

Variants

Organization

The content of a menu can be organized by either adding <sp-menu-divider /> elements to a flat list, or by labeling groups of items in a longer list with a <sp-menu-group /> element which provides a slot for a group header; [slot="header"].

<sp-popover open style="position: relative">
    <sp-menu>
        <sp-menu-group>
            <span slot="header">New York</span>
            <sp-menu-item>
                Central Park
            </sp-menu-item>
            <sp-menu-item>
                Prospect Park
            </sp-menu-item>
        </sp-menu-group>
        <sp-menu-divider></sp-menu-divider>
        <sp-menu-group>
            <span slot="header">San Fransisco</span>
            <sp-menu-item>
                Golden Gate Park
            </sp-menu-item>
            <sp-menu-item>
                Lake Merced Park
            </sp-menu-item>
        </sp-menu-group>
    </sp-menu>
</sp-popover>

Accessibility

<sp-menu />, <sp-menu-group />, and <sp-menu-item /> each deliver a different part of the wai-aria "menu" pattern and support the menu, group, and menuitem roles respectively. To support ease of keyboard navigation, only the first active or first selected <sp-menu-item /> can be accessed in the tab order. Once the focus has entered the menu the up and down arrow keys can be used to access the rest of the menu.