01
Overview
Multi-value dropdown that presents checkbox options inside an anchored floating list.
Usage
02
When to use
Use when
- Selecting multiple values from a fixed option list while preserving compact form layout.
- Showing many options in an anchored picker instead of a permanently-expanded checkbox group.
Avoid when
- Selecting a single value from a short fixed list — use select instead.
- Moving items between available/selected panes — use transfer-list instead.
03
Examples
Basic multi-select
Pick multiple values and show the selected count on the trigger.
Filterable with warning
Enable filtering, warning helper text, and top-after-reopen selection feedback.
04
Props
| Name | Type | Default | Required | Bindable | Description |
|---|---|---|---|---|---|
id | text | req | Unique identifier — required for label association and ARIA wiring. | ||
items | readonly MultiSelectItem<T>[] | req | Full option set. The sole inference source for T. | ||
selectedIds | NoInfer<T>[] | bind | Bindable selected IDs. | ||
name | text | Native form field name. Emits one hidden input per selected id. | |||
label | text | Visible label rendered in a <label> associated via for. | |||
placeholder | text | 'Select options' | Placeholder text when nothing is selected. | ||
description | text | Helper text displayed below the trigger; wired via aria-describedby. | |||
error | text | Validation error message; sets aria-invalid="true". | |||
warning | text | Warning text rendered below the control and included in aria-describedby. | |||
disabled | boolean | Disables the control. Inherited from a wrapping FormField when unset. | |||
readonly | boolean | false | Prevents changing selection while still allowing viewing current selections. | ||
required | boolean | Marks the field required and shows the required marker on the label. | |||
filterable | boolean | false | Enables the filter input rendered above the options list. | ||
filter | (item: MultiSelectItem<T>, query: string) => boolean | Custom option filter callback. Defaults to case-insensitive label/description matching. | |||
selectionFeedback | 'top' | 'fixed' | 'top-after-reopen' | 'fixed' | Selected-option ordering behavior when the menu is open. | ||
direction | 'down' | 'up' | 'down' | Open direction for the floating panel. |