Components/CommandPalette

CommandPalette

An overlay for searching and running commands.

VerifiedSince 0.3.4

Usage

Launcher

Loading demo...

Best Practices

  • Keep id stable across releases, and use it — not the localized title — for analytics, persistence, and permission checks.
  • Put synonyms, aliases, and plugin names in keywords instead of duplicating commands for search variants.
  • Register global shortcuts in the app shell, then open the palette through v-model.
  • Use footer for sources, result counts, or keyboard help; use empty to show the query and a recovery action.
  • Cap maxHeight for long command sets so the palette stays inside the viewport.

API Reference

Props

NameTypeDefaultDescription
modelValueboolean-Whether the palette is shown, bound with v-model.
commandsCommandPaletteItem[][]The commands.
placeholderstring'Search commands'Search placeholder; also the input's aria-label.
emptyTextstring'No commands found'Text shown when nothing matches.
maxHeightnumber320Maximum list height in px.
autoFocusbooleantrueFocuses the search input on open.
closeOnSelectbooleantrueCloses after a selection; set false for batch actions.
overlayClassstring | string[] | Record<string, boolean>-Class for the overlay.
panelClassstring | string[] | Record<string, boolean>-Class for the panel.
querystring-Search text for v-model:query; omit to let the palette manage it.
ariaLabelstring'Command palette'Accessible name of the dialog and command list.

Events

EventPayloadDescription
update:modelValue(value)Fires when the palette asks to open or close.
select(item)Fires with the original item when an enabled command is chosen.
open-Fires when the palette opens.
close-Fires when an open palette closes.
update:query(value)Fires on input; resets to an empty string on close.

Slots

SlotPropsDescription
empty{ query, emptyText }Content shown when nothing matches.
footer{ query, visibleCount }Area below the list.

Types

CommandPaletteItem

FieldTypeDescription
idstringUnique id.
titlestringTitle; searched.
descriptionstringLine under the title; searched.
keywordsstring[]Extra search terms; not displayed.
iconTxIconSource | stringIcon source or icon class.
shortcutstringShortcut hint on the right; registers nothing.
disabledbooleanStays visible but can't be selected.

Overview

  • Visibility comes only from modelValue. The palette emits open when shown and close when an open palette is dismissed.
  • Filtering is a local, case-insensitive substring match over title, description, and keywords; there is no ranking, debouncing, or remote fetch.
  • ArrowDown / ArrowUp cycle and skip disabled commands, Enter selects, Escape closes. The highlight starts on the first enabled command.
  • Keyboard selection is ignored during IME composition, so Chinese, Japanese, and Korean input is not submitted early.
  • The overlay is role="dialog" with aria-modal="true"; disabled commands carry aria-disabled="true" and never emit select.

Technologies

  • Source: packages/tuffex/packages/components/src/command-palette/.
查看源码
packages/tuffex/packages/components/src/command-palette/index.ts