Select
Custom select dropdown with full keyboard support.
Usage
<w-select value="option1">
<w-slot trigger>
<button>
<w-slot value><span>Option 1</span></w-slot>
</button>
</w-slot>
<w-slot menu>
<div>
<w-slot opt data-value="option1"><div>Option 1</div></w-slot>
<w-slot opt data-value="option2"><div>Option 2</div></w-slot>
<w-slot opt data-value="option3"><div>Option 3</div></w-slot>
</div>
</w-slot>
</w-select>
Props
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | "" | Currently selected value |
open | boolean | false | Whether dropdown is open |
disabled | boolean | false | Disable the select |
persistent | boolean | false | Prevent closing via Escape or outside click |
placeholder | string | "" | Placeholder text |
portal | boolean | true | Teleport listbox to body |
Slots
| Slot | Element | Description |
|---|---|---|
trigger | Button | The select button |
display | Span | Shows selected value text |
listbox | Container | Options container |
option | Any | Selectable options (use data-value) |
Events
| Event | Detail | Description |
|---|---|---|
change | { value } | Fired when selection changes |
Keyboard
| Key | Action |
|---|---|
Enter / Space | Open dropdown / Select option |
ArrowDown | Open dropdown / Next option |
ArrowUp | Previous option |
Home | First option |
End | Last option |
Escape | Close dropdown |
Accessibility
- Trigger has
role="combobox" - Listbox has
role="listbox" - Options have
role="option"witharia-selected - Full keyboard navigation support