Skip to main content

Dropdown

A popover menu using the <primus-dropdown> web component from @primus/ui-core. Requires the JS bundle.

Preview · Dropdown

Code​

<!-- Basic dropdown -->
<primus-dropdown>
<button class="outline small" popovertarget="my-menu">Options â–¾</button>
<menu popover id="my-menu">
<button role="menuitem">Edit</button>
<button role="menuitem">Duplicate</button>
<div role="separator"></div>
<button role="menuitem" data-variant="danger">Delete</button>
</menu>
</primus-dropdown>

<!-- Split button: primary action + dropdown for secondary -->
<primus-dropdown>
<menu class="buttons">
<li><button class="outline">Save</button></li>
<li>
<button class="outline" popovertarget="save-options"
aria-label="More save options">â–¾</button>
</li>
</menu>
<menu popover id="save-options">
<button role="menuitem">Save draft</button>
<button role="menuitem">Save and publish</button>
<button role="menuitem">Duplicate</button>
</menu>
</primus-dropdown>

<!-- With icons in menu items -->
<primus-dropdown>
<button popovertarget="icon-menu">More â–¾</button>
<menu popover id="icon-menu">
<button role="menuitem">Edit record</button>
<button role="menuitem">Export as CSV</button>
<button role="menuitem">View audit log</button>
<div role="separator"></div>
<button role="menuitem" data-variant="danger">Delete permanently</button>
</menu>
</primus-dropdown>

Props​

<primus-dropdown> is a Web Component. It positions and manages the popover menu automatically.

ElementAttributeDescription
Trigger buttonpopovertarget="id"ID of the <menu popover> to toggle
MenupopoverNative popover attribute — browser positions + dismisses automatically
Menu itemsrole="menuitem"Marks each button as a menu item for accessibility
Separatorrole="separator"Divider line between groups
Danger itemdata-variant="danger"Red colour for destructive actions
Version history

See the Changelog for version history and breaking changes.