A Dropdown Group streamlines the management of linked dropdowns and supports nested dropdowns for a more organized and intuitive user experience
<nve-button popovertarget="menu-1">menu</nve-button>
<nve-dropdown-group>
<nve-dropdown id="menu-1">
<nve-menu>
<nve-menu-item popovertarget="menu-2">
item 1-1 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item>item 1-2</nve-menu-item>
<nve-menu-item>item 1-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="menu-2" position="right">
<nve-menu>
<nve-menu-item>item 2-1</nve-menu-item>
<nve-menu-item popovertarget="menu-3">
item 2-2 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item>item 2-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="menu-3" position="right">
<nve-menu>
<nve-menu-item>item 3-1</nve-menu-item>
<nve-menu-item>item 3-2</nve-menu-item>
<nve-menu-item>item 3-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
</nve-dropdown-group>
<nve-button popovertarget="menu-1">menu</nve-button>
<nve-dropdown-group>
<nve-dropdown id="menu-1">
<nve-menu>
<nve-menu-item popovertarget="menu-2">
item 1-1 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item>item 1-2</nve-menu-item>
<nve-menu-item>item 1-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="menu-2" position="right">
<nve-menu>
<nve-menu-item>item 2-1</nve-menu-item>
<nve-menu-item popovertarget="menu-3">
item 2-2 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item>item 2-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="menu-3" position="right">
<nve-menu>
<nve-menu-item>item 3-1</nve-menu-item>
<nve-menu-item>item 3-2</nve-menu-item>
<nve-menu-item>item 3-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
</nve-dropdown-group>
menu
Note: hover-based interactions are not currently supported due to added complexity and accessibility concerns. Future iterations with improved popover APIs may add support.
Installation
<script type="module">
import '@nvidia-elements/core/dropdown-group/define.js';
</script>
<nve-button popovertarget="menu-1">menu</nve-button>
<nve-dropdown-group>
<nve-dropdown id="menu-1">
<nve-menu>
<nve-menu-item popovertarget="menu-2">
item 1-1 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item>item 1-2</nve-menu-item>
<nve-menu-item>item 1-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="menu-2" position="right">
<nve-menu>
<nve-menu-item>item 2-1</nve-menu-item>
<nve-menu-item popovertarget="menu-3">
item 2-2 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item>item 2-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="menu-3" position="right">
<nve-menu>
<nve-menu-item>item 3-1</nve-menu-item>
<nve-menu-item>item 3-2</nve-menu-item>
<nve-menu-item>item 3-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
</nve-dropdown-group>
<script type="module">
import '@nvidia-elements/core/dropdown-group/define.js';
</script>
<nve-button popovertarget="menu-1">menu</nve-button>
<nve-dropdown-group>
<nve-dropdown id="menu-1">
<nve-menu>
<nve-menu-item popovertarget="menu-2">
item 1-1 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item>item 1-2</nve-menu-item>
<nve-menu-item>item 1-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="menu-2" position="right">
<nve-menu>
<nve-menu-item>item 2-1</nve-menu-item>
<nve-menu-item popovertarget="menu-3">
item 2-2 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item>item 2-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="menu-3" position="right">
<nve-menu>
<nve-menu-item>item 3-1</nve-menu-item>
<nve-menu-item>item 3-2</nve-menu-item>
<nve-menu-item>item 3-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
</nve-dropdown-group>
nve api.get nve-dropdown-group
nve api.get nve-dropdown-group
Disable individual menu items using the disabled attribute.
Cascading dropdown menu with disabled menu items in non-interactive states.
<nve-button popovertarget="disabled-menu-1">Disabled Items</nve-button>
<nve-dropdown-group>
<nve-dropdown id="disabled-menu-1">
<nve-menu>
<nve-menu-item popovertarget="disabled-menu-2">
item 1-1 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item disabled>item 1-2</nve-menu-item>
<nve-menu-item>item 1-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="disabled-menu-2" position="right">
<nve-menu>
<nve-menu-item>item 2-1</nve-menu-item>
<nve-menu-item disabled>item 2-2</nve-menu-item>
<nve-menu-item popovertarget="disabled-menu-3">
item 2-3 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="disabled-menu-3" position="right">
<nve-menu>
<nve-menu-item>item 3-1</nve-menu-item>
<nve-menu-item disabled>item 3-2</nve-menu-item>
<nve-menu-item>item 3-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
</nve-dropdown-group>
<nve-button popovertarget="disabled-menu-1">Disabled Items</nve-button>
<nve-dropdown-group>
<nve-dropdown id="disabled-menu-1">
<nve-menu>
<nve-menu-item popovertarget="disabled-menu-2">
item 1-1 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
<nve-menu-item disabled>item 1-2</nve-menu-item>
<nve-menu-item>item 1-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="disabled-menu-2" position="right">
<nve-menu>
<nve-menu-item>item 2-1</nve-menu-item>
<nve-menu-item disabled>item 2-2</nve-menu-item>
<nve-menu-item popovertarget="disabled-menu-3">
item 2-3 <nve-icon name="caret" direction="right" size="sm" slot="suffix"></nve-icon>
</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="disabled-menu-3" position="right">
<nve-menu>
<nve-menu-item>item 3-1</nve-menu-item>
<nve-menu-item disabled>item 3-2</nve-menu-item>
<nve-menu-item>item 3-3</nve-menu-item>
</nve-menu>
</nve-dropdown>
</nve-dropdown-group>
Disabled Items
Cascading dropdown menu with leading icons for visual identification of menu item types.
<nve-button popovertarget="icon-menu-1">Icons Menu</nve-button>
<nve-dropdown-group>
<nve-dropdown id="icon-menu-1">
<nve-menu>
<nve-menu-item popovertarget="icon-menu-2">
<nve-icon name="folder" size="sm"></nve-icon> item 1-1
<nve-icon name="caret" direction="right" size="sm"></nve-icon>
</nve-menu-item>
<nve-menu-item> <nve-icon name="image" size="sm"></nve-icon> item 1-2 </nve-menu-item>
<nve-menu-item> <nve-icon name="video-camera" size="sm"></nve-icon> item 1-3 </nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="icon-menu-2" position="right">
<nve-menu>
<nve-menu-item> <nve-icon name="document" size="sm"></nve-icon> item 2-1 </nve-menu-item>
<nve-menu-item> <nve-icon name="document" size="sm"></nve-icon> item 2-2 </nve-menu-item>
<nve-menu-item popovertarget="icon-menu-3">
<nve-icon name="terminal" size="sm"></nve-icon> item 2-3
<nve-icon name="caret" direction="right" size="sm"></nve-icon>
</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="icon-menu-3" position="right">
<nve-menu>
<nve-menu-item> <nve-icon name="terminal" size="sm"></nve-icon> item 3-1 </nve-menu-item>
<nve-menu-item> <nve-icon name="terminal" size="sm"></nve-icon> item 3-2 </nve-menu-item>
<nve-menu-item> <nve-icon name="terminal" size="sm"></nve-icon> item 3-3 </nve-menu-item>
</nve-menu>
</nve-dropdown>
</nve-dropdown-group>
<nve-button popovertarget="icon-menu-1">Icons Menu</nve-button>
<nve-dropdown-group>
<nve-dropdown id="icon-menu-1">
<nve-menu>
<nve-menu-item popovertarget="icon-menu-2">
<nve-icon name="folder" size="sm"></nve-icon> item 1-1
<nve-icon name="caret" direction="right" size="sm"></nve-icon>
</nve-menu-item>
<nve-menu-item> <nve-icon name="image" size="sm"></nve-icon> item 1-2 </nve-menu-item>
<nve-menu-item> <nve-icon name="video-camera" size="sm"></nve-icon> item 1-3 </nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="icon-menu-2" position="right">
<nve-menu>
<nve-menu-item> <nve-icon name="document" size="sm"></nve-icon> item 2-1 </nve-menu-item>
<nve-menu-item> <nve-icon name="document" size="sm"></nve-icon> item 2-2 </nve-menu-item>
<nve-menu-item popovertarget="icon-menu-3">
<nve-icon name="terminal" size="sm"></nve-icon> item 2-3
<nve-icon name="caret" direction="right" size="sm"></nve-icon>
</nve-menu-item>
</nve-menu>
</nve-dropdown>
<nve-dropdown id="icon-menu-3" position="right">
<nve-menu>
<nve-menu-item> <nve-icon name="terminal" size="sm"></nve-icon> item 3-1 </nve-menu-item>
<nve-menu-item> <nve-icon name="terminal" size="sm"></nve-icon> item 3-2 </nve-menu-item>
<nve-menu-item> <nve-icon name="terminal" size="sm"></nve-icon> item 3-3 </nve-menu-item>
</nve-menu>
</nve-dropdown>
</nve-dropdown-group>
Icons Menu
Release Status
All elements and features go through 3 phases of stability, pre-release, beta and stable.
pre-release Docs Preview API Documentation Fully Themeable
beta Robust unit test coverages Passed API Review Passed Designer VQA Review Included in library package stable No known outstanding AA WCAG issues No known outstanding performance issues Adapts to different screen/container sizes No breaking API changes for at least 90 days