Skip to content

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.

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.

Searchable

Set is-searchable to render an input inside the control when open. Filtering is client-side by default.

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).

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.

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.

Custom search icon

Override the default CSS magnifier with your own icon via the #search-icon slot.

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.

Keyboard

The control is focusable (tabindex="0", role="combobox").

KeyAction
ArrowDown / ArrowUpOpen dropdown / move active option
EnterOpen, or select active option (closes in single mode)
SpaceToggle open
EscapeClose dropdown