Skip to main content

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

PropTypeDefaultDescription
valuestring""Currently selected value
openbooleanfalseWhether dropdown is open
disabledbooleanfalseDisable the select
persistentbooleanfalsePrevent closing via Escape or outside click
placeholderstring""Placeholder text
portalbooleantrueTeleport listbox to body

Slots

SlotElementDescription
triggerButtonThe select button
displaySpanShows selected value text
listboxContainerOptions container
optionAnySelectable options (use data-value)

Events

EventDetailDescription
change{ value }Fired when selection changes

Keyboard

KeyAction
Enter / SpaceOpen dropdown / Select option
ArrowDownOpen dropdown / Next option
ArrowUpPrevious option
HomeFirst option
EndLast option
EscapeClose dropdown

Accessibility

  • Trigger has role="combobox"
  • Listbox has role="listbox"
  • Options have role="option" with aria-selected
  • Full keyboard navigation support