formstexulinot agent-emittableapp
MultiSelect
multi-select
A combobox for several values, shown as removable chips.
Live examples
Tags field
Tags field
Loading demo…
Props
| Name | Kind | Required | Default | Description |
|---|---|---|---|---|
value | unknown | no | — | Selected value (a string, or a string array when multiple) |
defaultValue | unknown | no | — | Starting selection; a form reset restores it |
inputValue | string | no | — | Text in the input (bindable) |
defaultInputValue | string | no | "" | — |
items | array | no | — | Options as { value, label, disabled? } |
loadOptions | unknown | no | — | Function prop the host passes: (query, signal) => Promise<items> for remote options. Not agent-emittable (functions are not data). |
filter | unknown | no | — | Function prop the host passes: (item, query) => boolean. Replaces the default match (label contains the query, ignoring case); runs on the trimmed, non-empty query; unused with loadOptions. createFoldedFilter builds an accent-insensitive one. Not agent-emittable (functions are not data). |
disabled | boolean | no | false | Not interactive, not submitted, not validated |
name | string | no | — | Form field name: submits the value (one entry per value when multiple) |
required | boolean | no | false | Blocks form submission until a value is selected |
requiredMessage | string | no | — | Translated message when required blocks submission (default: the browser message) |
form | string | no | — | Associated form id |
open | boolean | no | false | — |
size | enum (sm, md, lg) | no | "md" | — |
variant | enum (outline, soft) | no | "outline" | — |
class | string | no | — | — |
onValueChange | event | no | — | — |
onInputValueChange | event | no | — | — |
onOpenChange | event | no | — | — |
children | slot | no | — | — |
Keyboard
| Key | Action |
|---|---|
— | See accessibility notes for keyboard behavior. |
Accessibility
- Chips can be removed with their button or Backspace from an empty input
- Submits one form entry per selected value
Evidence for multi-select
Latest committed gates for multi-select (as of 2026-10-23). Static snapshot — not live CI.
Behavior
n/ano behavior scenario
No dedicated behavior scenario for this catalog id (a styled or display surface, covered by its unit and axe tests).
Size (gzip)
texuli/multi-select · budget 12.0 KiB
Budget from texuli.budgets.json; re-measure with `pnpm size --filter <entry>`.
Axe
documented
tests/e2e/site-component-pages.spec.tsdocs/quality (a11y-*)
Site component pages axe gate; package-level a11y docs under docs/quality when present.
Browsers
chromiumwebkitmobile
Playwright projects: Desktop Chrome, Desktop Safari, Pixel 7. Firefox is a known gap on this host.
When to use
Use when
- Choose several values from a long list by typing
Don’t use when
Prefer another component
- One value (use combobox or select)
- A few independent options (use checkbox)