Multi Select

Pick several options from a searchable list; picks show as chips.
Stable
Web
iOS
Android
@advui/core
Source

Basic

Bug
Accessibility

Installation

pnpm
pnpm add @advui/core
npm
npm install @advui/core

Usage

import { Field, MultiSelect } from '@advui/core'

<Field label="Labels">
  <MultiSelect options={labels} value={picked} onValueChange={setPicked} />
</Field>

API reference

MultiSelect

Takes Combobox’s `options`, `filter`, `placeholder`, `title`, `size` and states.
PropTypeDefaultDescription
valuestring[]—Picked values, in order.
defaultValuestring[]—Starting `value` when uncontrolled.
onValueChange(value: string[]) => void—Called when an option is picked, unpicked or removed.
removeLabel(label: string) => string(label) => `Remove ${label}`Accessible name of each chip’s remove button (web).

Accessibility

  • On web the listbox has aria-multiselectable, stays open while you pick, and each option’s aria-selected says whether it is picked.
  • Chips have named remove buttons; Backspace in the empty text box removes the last one. Removing a chip does not open the list.
  • On web a click or tap on the field opens the list; Tab focus does not.
  • On phones the sheet shows checkbox rows, and the field announces how many are selected.
Keyboard interactions
KeyAction
ArrowDown / ArrowUpMoves between options.
EnterPicks or unpicks the highlighted option.
BackspaceRemoves the last chip when the text box is empty.
EscapeCloses the list.

Platform notes

iOS
Opens a bottom sheet of checkbox rows; unpick there to remove a chip.
Android
Opens a bottom sheet of checkbox rows; the back button closes it.
Since v0.5.0Last updated Nov 2, 2026Edit this page on GitHub