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>
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>
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>
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>
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