element-plus/docs/en-US/component/select.md
Karolis_Stoncius_Sneakybox c29f6cc6c7
feat(components): [select] add aria-label to select's input (#13932)
* feat(components): [select] add aria-label to select's input

Select's input causes accessibility issues without aria-label, this commit adds it

* refactor(components): [select] change aria-label to label; update docs

* refactor(components): [select] change back to ariaLabel prop name

* docs(components): kebab-case for docs
2023-08-24 21:03:01 +08:00

21 KiB

title lang
Select en-US

Select

When there are plenty of options, use a drop-down menu to display and select desired ones.

:::tip

This component requires the <client-only></client-only> wrap when used in SSR (eg: Nuxt) and SSG (eg: VitePress).

:::

Basic usage

:::demo v-model is the value of el-option that is currently selected.

select/basic-usage

:::

Disabled option

:::demo Set the value of disabled in el-option to true to disable this option.

select/disabled-option

:::

Disabled select

Disable the whole component.

:::demo Set disabled of el-select to make it disabled.

select/disabled

:::

Clearable single select

You can clear Select using a clear icon.

:::demo Set clearable attribute for el-select and a clear icon will appear. Note that clearable is only for single select.

select/clearable

:::

Basic multiple select

Multiple select uses tags to display selected options.

:::demo Set multiple attribute for el-select to enable multiple mode. In this case, the value of v-model will be an array of selected options. By default the selected options will be displayed as Tags. You can collapse them to a text by using collapse-tags attribute. You can check them when mouse hover collapse text by using collapse-tags-tooltip attribute.

select/multiple

:::

Custom template

You can customize HTML templates for options.

:::demo Insert customized HTML templates into the slot of el-option.

select/custom-template

:::

Grouping

Display options in groups.

:::demo Use el-option-group to group the options, and its label attribute stands for the name of the group.

select/grouping

:::

Option filtering

You can filter options for your desired ones.

:::demo Adding filterable to el-select enables filtering. By default, Select will find all the options whose label attribute contains the input value. If you prefer other filtering strategies, you can pass the filter-method. filter-method is a Function that gets called when the input value changes, and its parameter is the current input value.

select/filterable

:::

Enter keywords and search data from server.

:::demo Set the value of filterable and remote with true to enable remote search, and you should pass the remote-method. remote-method is a Function that gets called when the input value changes, and its parameter is the current input value. Note that if el-option is rendered with the v-for directive, you should add the key attribute for el-option. Its value needs to be unique, such as item.value in the following example.

select/remote-search

:::

Create new items

Create and select new items that are not included in select options

:::demo By using the allow-create attribute, users can create new items by typing in the input box. Note that for allow-create to work, filterable must be true. This example also demonstrates default-first-option. When this attribute is set to true, you can select the first option in the current option list by hitting enter without having to navigate with mouse or arrow keys.

select/allow-create

:::

Use value-key attribute

If the binding value of Select is an object, make sure to assign value-key as its unique identity key name.

:::demo By using the value-key attribute, data with duplicate labels can be properly handled. The value of the label property is duplicated, but the option can be identified through the id.

select/value-key

:::

Select API

Select Attributes

Name Description Type Default
model-value / v-model binding value ^[string] / ^[number] / ^[boolean] / ^[object] / ^[array]
multiple whether multiple-select is activated ^[boolean] false
disabled whether Select is disabled ^[boolean] false
value-key unique identity key name for value, required when value is an object ^[string] value
size size of Input ^[enum]'' | 'large' | 'default' | 'small'
clearable whether select can be cleared ^[boolean] false
collapse-tags whether to collapse tags to a text when multiple selecting ^[boolean] false
collapse-tags-tooltip ^(2.3.0) whether show all selected tags when mouse hover text of collapse-tags. To use this, collapse-tags must be true ^[boolean] false
multiple-limit maximum number of options user can select when multiple is true. No limit when set to 0 ^[number] 0
name the name attribute of select input ^[string]
effect tooltip theme, built-in theme: dark / light ^[enum]'dark' | 'light' / ^[string] light
autocomplete the autocomplete attribute of select input ^[string] off
placeholder placeholder, default is 'Select' ^[string]
filterable whether Select is filterable ^[boolean] false
allow-create whether creating new items is allowed. To use this, filterable must be true ^[boolean] false
filter-method custom filter method ^[Function]() => void
remote whether options are loaded from server ^[boolean] false
remote-method custom remote search method ^[Function]() => void
remote-show-suffix in remote search method show suffix icon ^[boolean] false
loading whether Select is loading data from server ^[boolean] false
loading-text displayed text while loading data from server, default is 'Loading' ^[string]
no-match-text displayed text when no data matches the filtering query, you can also use slot empty, default is 'No matching data' ^[string]
no-data-text displayed text when there is no options, you can also use slot empty, default is 'No data' ^[string]
popper-class custom class name for Select's dropdown ^[string] ''
reserve-keyword when multiple and filter is true, whether to reserve current keyword after selecting an option ^[boolean] true
default-first-option select first matching option on enter key. Use with filterable or remote ^[boolean] false
teleported whether select dropdown is teleported to the body ^[boolean] true
persistent when select dropdown is inactive and persistent is false, select dropdown will be destroyed ^[boolean] true
automatic-dropdown for non-filterable Select, this prop decides if the option menu pops up when the input is focused ^[boolean] false
clear-icon custom clear icon component ^[string] / ^[object]Component CircleClose
fit-input-width whether the width of the dropdown is the same as the input ^[boolean] false
suffix-icon custom suffix icon component ^[string] / ^[object]Component ArrowDown
suffix-transition ^(deprecated) animation when dropdown appears/disappears icon ^[boolean] true
tag-type tag type ^[enum]'' | 'success' | 'info' | 'warning' | 'danger' info
validate-event whether to trigger form validation ^[boolean] true
placement ^(2.2.17) position of dropdown ^[enum]'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end' bottom-start
max-collapse-tags ^(2.3.0) the max tags number to be shown. To use this, collapse-tags must be true ^[number] 1
popper-options popper.js parameters ^[object]refer to popper.js doc {}
aria-label ^(a11y) same as aria-label in native input ^[string]

:::warning

suffix-transition has been deprecated, and will be removed in ^(2.4.0), please use override style scheme.

:::

Select Events

Name Description Type
change triggers when the selected value changes ^[Function](value: any) => void
visible-change triggers when the dropdown appears/disappears ^[Function](visible: boolean) => void
remove-tag triggers when a tag is removed in multiple mode ^[Function](tagValue: any) => void
clear triggers when the clear icon is clicked in a clearable Select ^[Function]() => void
blur triggers when Input blurs ^[Function](event: FocusEvent) => void
focus triggers when Input focuses ^[Function](event: FocusEvent) => void

Select Slots

Name Description Subtags
default option component list Option Group / Option
prefix content as Select prefix
empty content when there is no options

Select Exposes

Method Description Type
focus focus the Input component ^[Function]() => void
blur blur the Input component, and hide the dropdown ^[Function]() => void

Option Group API

Option Group Attributes

Name Description Type Default
label name of the group ^[string]
disabled whether to disable all options in this group ^[boolean] false

Option Group Slots

Name Description Subtags
default customize default content Option

Option API

Option Attributes

Name Description Type Default
value value of option ^[string] / ^[number] / ^[boolean] / ^[object]
label label of option, same as value if omitted ^[string] / ^[number]
disabled whether option is disabled ^[boolean] false

Option Slots

Name Description
default customize default content