Liking cljdoc? Tell your friends :D

x-menu

A dropdown command menu that wraps a trigger element and a list of x-menu-item children.

Tag name

x-menu

Attributes

AttributeTypeDefaultNotes
openbooleanabsent = closedControls menu visibility
placementstring"bottom-start"bottom-start bottom-end top-start top-end
labelstring""Sets aria-label on the popup panel

Properties

PropertyTypeReflects attribute
openbooleanyes
placementstringyes
labelstringyes

Events

EventBubblesComposedDetail
x-menu-openyesyes{}
x-menu-closeyesyes{}
x-menu-selectyesyes{ value }

Slots

SlotNotes
triggerConsumer-supplied trigger element (button, etc.)
defaultx-menu-item elements

CSS custom properties

PropertyLight defaultDark default
--x-menu-bg#ffffff#1f2937
--x-menu-border1px solid #e5e7eb1px solid #374151
--x-menu-border-radius8px8px
--x-menu-shadow0 4px 16px rgba(0,0,0,0.12)0 4px 16px rgba(0,0,0,0.4)
--x-menu-min-width160px160px
--x-menu-padding4px4px
--x-menu-z-index10001000

Keyboard behaviour

KeyConditionResult
ArrowDowntrigger focused, closedOpen menu, focus first enabled item
ArrowUptrigger focused, closedOpen menu, focus last enabled item
ArrowDownmenu openFocus next enabled item (wraps)
ArrowUpmenu openFocus previous enabled item (wraps)
Homemenu openFocus first enabled item
Endmenu openFocus last enabled item
Escapemenu openClose menu, return focus to trigger
Tabmenu openClose menu

Click outside the host closes the menu without returning focus.

Accessibility

  • The popup panel has role="menu" and aria-label (from the label attribute).
  • x-menu-item children receive role="menuitem" or role="separator".
  • Focus is managed via tabindex="-1" on items and programmatic .focus().
  • aria-disabled is set on disabled items.

Usage

<x-menu label="Actions">
  <button slot="trigger">Actions ▾</button>
  <x-menu-item value="edit">Edit</x-menu-item>
  <x-menu-item value="duplicate">Duplicate</x-menu-item>
  <x-menu-item type="divider"></x-menu-item>
  <x-menu-item value="delete" variant="danger">Delete</x-menu-item>
</x-menu>

<script>
  import '@vanelsas/baredom/x-menu';
  import '@vanelsas/baredom/x-menu-item';

  document.querySelector('x-menu').addEventListener('x-menu-select', e => {
    console.log('Selected:', e.detail.value);
  });
</script>

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close