Prototype Library

Command Palette

Filterable command overlay. Set the commands property, then open with the button or ⌘/Ctrl + K. Arrow keys navigate, Enter runs, Esc closes.

Inherited wc import '@esa/ecology/esa-command-palette';

Preview

Commands are set in a script: el.commands = [{ id, label, group, action }, …].

<button id="open-cmdk">Open command palette</button>

<esa-command-palette id="cmdk"></esa-command-palette>

API

PropTypeDefaultDescription
commands EsaCommand[] [] Command registry, set as a property. Each: { id, label, description?, shortcut?, group?, keywords?, disabled?, action }.
open boolean false Reflected open state.
hotkey boolean true Registers the global Cmd/Ctrl+K toggle listener. On by default. Write `="false"` to turn it off — unusually for a boolean attribute, this one reads the value.

Methods

PropTypeDefaultDescription
show() method — Opens the palette, clears the query, and focuses the input.
close() method — Closes the palette.
toggle() method — Toggles open state — also bound to Cmd/Ctrl+K.

Selecting a command runs its action callback, then closes the palette — there is no separate event.

Accessibility

  • The overlay is role="dialog"; the results list is role="listbox" with role="option" items and aria-selected.
  • ArrowUp / ArrowDown move the active option (wrapping), Enter executes, Esc closes.
  • The search input is focused automatically when the palette opens.