GitHubopen_in_new

Combobox

Combobox combines free-form text entry with option picking, making it useful for searchable single- and multi-select flows.

Props

NameDescriptionDefaultControl
disabledOptional

Whether the control is disabled.

boolean | undefined
-
nameOptional

Name used for hidden inputs during form submission.

string | undefined
-
multipleOptional

Enables multi-select behavior.

boolean | undefined
-
-
labelOptional

Visible label. If omitted, provide aria-label via attrs.

string | undefined
-
idOptional

Optional explicit id for the trigger element.

string | undefined
-
optionsRequired

Selectable options rendered in the menu.

SelectOption[]
-
-
descriptionOptional

Supporting text shown below the field when not in error state.

string | undefined
-
errorOptional

Error text shown below the field. When provided, field is invalid.

string | undefined
-
requiredOptional

Whether the control is required.

boolean | undefined
-
placeholderOptional

Placeholder shown when nothing is selected.

string | undefined
-
clearableOptional

Shows a trailing button that clears the current selection.

boolean | undefined
-
clearLabelOptional

Accessible label for the clear button.

string | undefined
-
menuColorOptional

Visual color style of the dropdown menu.

MenuColor | undefined
-
-
displaySeparatorOptional

Separator used when showing multiple selected labels.

string | undefined
-
filterPlaceholderOptional

Placeholder shown in the menu filter field.

string | undefined
-
filterNoResultsTextOptional

Message shown when filtering returns no matching options.

string | undefined
-
modelValueOptional

-

SelectModelValue
-
-
openOptional

-

boolean | undefined
false

Events5

NameTypeDescription
update:open[value: boolean]-
update:modelValue[value: SelectModelValue]-
change[value: SelectModelValue]-
focus[event: FocusEvent]-
blur[event: FocusEvent]-

Slots6

NameParametersDescription
leading--
prefix--
suffix--
trailing--
optionLeading--
optionTrailing--

INFO

Combobox 是 Select 的封装,共享 select scope。详见 Select Anatomy

Examples

Default

Multiple Selection

Composable

Combobox shares the same composable as Select.

useSelect

function useSelect(opts: UseSelectOptions): UseSelectReturn

Source: src/composables/useSelect.ts

FieldTypeRequiredDescriptionDefault
options() => UseSelectOption[]YesThe selectable options.-
multiple() => booleanYesWhether multi-select is enabled.-
filterable() => booleanYesWhether filtering is enabled.-
disabled() => booleanYesWhether the control is disabled.-
displaySeparator() => stringYesSeparator for display text in multi-select mode.-
modelValueRef<UseSelectModelValue, UseSelectModelValue>YesModel value ref (external).-
openRef<boolean, boolean>YesOpen state ref (external).-
onChange((value: UseSelectModelValue) => void) | undefinedNoCalled when value changes.-
menuRefRef<{ show: (focusFirst?: boolean, source?: HTMLElement) => Promise<void>; hide: () => void; toggle: () => void; menuRef?: HTMLElement; } | undefined, { show: (focusFirst?: boolean, source?: HTMLElement) => Promise<void>; hide: () => void; toggle: () => void; menuRef?: HTMLElement; } | undefined>YesRef to the menu exposed API.-
triggerRefRef<HTMLElement | undefined, HTMLElement | undefined>YesRef to the trigger element.-
textFieldRefRef<{ focus: () => void; blur: () => void; } | undefined, { focus: () => void; blur: () => void; } | undefined>YesRef to the text field exposed API.-
FieldTypeRequiredDescriptionDefault
filterQueryRef<string, string>YesCurrent filter query string.-
selectedOptionsComputedRef<UseSelectOption[]>YesOptions selected based on current model value.-
hasValueComputedRef<boolean>YesWhether any value is selected.-
displayTextComputedRef<string>YesDisplay text for the current selection.-
submittedValuesComputedRef<string[]>YesValues to submit in hidden form inputs.-
filteredOptionEntriesComputedRef<{ option: UseSelectOption; index: number; }[]>YesFiltered option entries with original indices.-
hasFilteredOptionsComputedRef<boolean>YesWhether there are any filtered options.-
isOptionSelected(option: UseSelectOption) => booleanYesCheck if an option is currently selected.-
toggleOption(option: UseSelectOption) => voidYesToggle an option in the selection.-
clearValue() => voidYesClear the current selection.-
handleMenuSelect(event: MouseEvent, itemElement: HTMLElement) => voidYesHandle menu item selection event.-
focus() => voidYesFocus the text field.-
blur() => voidYesBlur the text field.-
show() => Promise<void>YesShow the menu.-
hide() => voidYesHide the menu.-
toggle() => voidYesToggle the menu.-
openMenu(focus?: "first" | "last") => voidYesOpen menu with optional focus target.-
closeMenu() => voidYesClose the menu.-
handleFieldClick() => voidYesHandle click on the trigger field.-
handleFieldInput() => voidYesHandle input on the filter field.-
handleFilterKeydown(event: KeyboardEvent) => voidYesHandle keydown on the filter field.-