Appearance
VueEasySelect
The opinionated, batteries-included select. Renders its own dropdown via <Teleport> with auto-flip positioning, outside-click dismiss, and reposition on scroll/resize.
Basic
Drop it in, pass options, done.
Pick a number
Custom arrow and item slots
Use the #arrow and #item slots to fully restyle the trigger and each option. The #item slot receives { item, isActive } — no library styling is applied to your markup, so you decide how to render checked / active / disabled state.
002
⬇️
Searchable
Set is-searchable to render an input inside the control when open. Filtering is client-side by default.
Pick a number
Clearable
Opt in with is-clearable to render a minimal × button in the control when a value is selected. The button wipes the whole modelValue (empty string for single, empty array for multi).
002
Custom clear icon
Replace the default CSS × with any icon, component, or character via the #clear-icon slot. The surrounding button (with aria-label, @click.stop, focus logic) stays the same.
002
Search inside the dropdown
By default the search input replaces the control's content when is-searchable is on. Set search-position='options' to render it as a sticky header inside the dropdown instead — the control shows the current selection while you filter.
002
Custom search icon
Override the default CSS magnifier with your own icon via the #search-icon slot.
Pick a number
Remote search
Set is-remote-search='true' to disable the built-in client-side filter. The component then just forwards the search text via v-model:search-value — you fetch the matching options yourself and assign them to :options.
Pick a fruit
Keyboard
The control is focusable (tabindex="0", role="combobox").
| Key | Action |
|---|---|
ArrowDown / ArrowUp | Open dropdown / move active option |
Enter | Open, or select active option (closes in single mode) |
Space | Toggle open |
Escape | Close dropdown |