Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Build accessible, unstyled Vue 3 components using Reka UI (formerly Radix Vue) with WAI-ARIA compliance.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
components/combobox.md
1# Combobox23Searchable dropdown with filtering45**Parts:** `ComboboxRoot`, `ComboboxInput`, `ComboboxAnchor`, `ComboboxTrigger`, `ComboboxContent`, `ComboboxViewport`, `ComboboxItem`, `ComboboxItemIndicator`, `ComboboxGroup`, `ComboboxLabel`, `ComboboxEmpty`, `ComboboxSeparator`, `ComboboxArrow`, `ComboboxPortal`, `ComboboxCancel`, `ComboboxVirtualizer`67## ComboboxRoot89### Props10| Prop | Type | Default |11|------|------|---------|12| `as` | `AsTag \| Component` | `"div"` |13| `asChild` | `boolean` | - |14| `defaultOpen` | `boolean` | - |15| `defaultValue` | `AcceptableValue \| AcceptableValue[]` | - |16| `dir` | `"ltr" \| "rtl"` | - |17| `disabled` | `boolean` | - |18| `displayValue` | `((val: AcceptableValue) => string)` | - |19| `filterFunction` | `((val: string[] \| number[] \| false[] \| true[] \|...` | - |20| `modelValue` | `AcceptableValue \| AcceptableValue[]` | - |21| `multiple` | `boolean` | - |22| `name` | `string` | - |23| `open` | `boolean` | - |24| `resetSearchTermOnBlur` | `boolean` | `true` |25| `resetSearchTermOnSelect` | `boolean` | `true` |26| `searchTerm` | `string` | - |27| `selectedValue` | `AcceptableValue` | - |2829### Emits30| Event | Payload |31|-------|---------|32| `update:modelValue` | `[value: AcceptableValue]` |33| `update:open` | `[value: boolean]` |34| `update:searchTerm` | `[value: string]` |35| `update:selectedValue` | `[value: AcceptableValue]` |3637### Slots38| Slot | Type |39|------|------|40| `open` | `boolean` |41| `modelValue` | `AcceptableValue \| AcceptableValue[]` |4243## ComboboxInput4445### Props46| Prop | Type | Default |47|------|------|---------|48| `as` | `AsTag \| Component` | `"input"` |49| `asChild` | `boolean` | - |50| `autoFocus` | `boolean` | - |51| `disabled` | `boolean` | - |52| `type` | `string` | `"text"` |5354## ComboboxAnchor5556### Props57| Prop | Type | Default |58|------|------|---------|59| `as` | `AsTag \| Component` | `"div"` |60| `asChild` | `boolean` | - |6162## ComboboxTrigger6364### Props65| Prop | Type | Default |66|------|------|---------|67| `as` | `AsTag \| Component` | `"button"` |68| `asChild` | `boolean` | - |69| `disabled` | `boolean` | - |7071## ComboboxContent7273### Props74| Prop | Type | Default |75|------|------|---------|76| `align` | `"start" \| "center" \| "end"` | - |77| `alignOffset` | `number` | - |78| `arrowPadding` | `number` | - |79| `as` | `AsTag \| Component` | `"div"` |80| `asChild` | `boolean` | - |81| `avoidCollisions` | `boolean` | - |82| `bodyLock` | `boolean` | - |83| `collisionBoundary` | `Element \| (Element \| null)[] \| null` | - |84| `collisionPadding` | `number \| Partial<Record<"top" \| "right" \| "bott...` | - |85| `disableOutsidePointerEvents` | `boolean` | - |86| `dismissable` | `boolean` | - |87| `forceMount` | `boolean` | - |88| `hideWhenDetached` | `boolean` | - |89| `position` | `"inline" \| "popper"` | - |90| `prioritizePosition` | `boolean` | - |91| `side` | `"top" \| "right" \| "bottom" \| "left"` | - |92| `sideOffset` | `number` | - |93| `sticky` | `"partial" \| "always"` | - |94| `updatePositionStrategy` | `"always" \| "optimized"` | - |9596### Emits97| Event | Payload |98|-------|---------|99| `escapeKeyDown` | `[event: KeyboardEvent]` |100| `focusOutside` | `[event: FocusOutsideEvent]` |101| `interactOutside` | `[event: PointerDownOutsideEvent \| FocusOutsideE...` |102| `pointerDownOutside` | `[event: PointerDownOutsideEvent]` |103104## ComboboxViewport105106### Props107| Prop | Type | Default |108|------|------|---------|109| `as` | `AsTag \| Component` | `"div"` |110| `asChild` | `boolean` | - |111| `nonce` | `string` | - |112113## ComboboxItem114115### Props116| Prop | Type | Default |117|------|------|---------|118| `as` | `AsTag \| Component` | `"div"` |119| `asChild` | `boolean` | - |120| `disabled` | `boolean` | - |121| `value`* | `AcceptableValue` | - |122123### Emits124| Event | Payload |125|-------|---------|126| `select` | `[event: SelectEvent<AcceptableValue>]` |127128## ComboboxItemIndicator129130### Props131| Prop | Type | Default |132|------|------|---------|133| `as` | `AsTag \| Component` | `"span"` |134| `asChild` | `boolean` | - |135136## ComboboxGroup137138### Props139| Prop | Type | Default |140|------|------|---------|141| `as` | `AsTag \| Component` | `"div"` |142| `asChild` | `boolean` | - |143144## ComboboxLabel145146### Props147| Prop | Type | Default |148|------|------|---------|149| `as` | `AsTag \| Component` | `"div"` |150| `asChild` | `boolean` | - |151| `for` | `string` | - |152153## ComboboxEmpty154155### Props156| Prop | Type | Default |157|------|------|---------|158| `as` | `AsTag \| Component` | `"div"` |159| `asChild` | `boolean` | - |160161## ComboboxSeparator162163### Props164| Prop | Type | Default |165|------|------|---------|166| `as` | `AsTag \| Component` | `"div"` |167| `asChild` | `boolean` | - |168169## ComboboxArrow170171### Props172| Prop | Type | Default |173|------|------|---------|174| `as` | `AsTag \| Component` | `"svg"` |175| `asChild` | `boolean` | - |176| `height` | `number` | `5` |177| `width` | `number` | `10` |178179## ComboboxPortal180181### Props182| Prop | Type | Default |183|------|------|---------|184| `disabled` | `boolean` | - |185| `forceMount` | `boolean` | - |186| `to` | `string \| HTMLElement` | - |187188## ComboboxCancel189190### Props191| Prop | Type | Default |192|------|------|---------|193| `as` | `AsTag \| Component` | `"button"` |194| `asChild` | `boolean` | - |195