Select

Select builds on wc-field and wc-menu to provide a fully-featured dropdown picker.

  • Single and multi-select modes
  • Client-side typeahead with search="contains"
  • Server-side typeahead with search="managed"
  • Multi-select chips display
Overview API

Usage

Use <wc-option> children to declare options directly in HTML.

None Apple Banana Cherry Dragonfruit Elderberry

  <wc-select label="Fruit" placeholder="Pick a fruit..." style="width: 20rem">
    <wc-option value>None</wc-option>
    <wc-option value="apple">Apple</wc-option>
    <wc-option value="banana">Banana</wc-option>
    <wc-option value="cherry">Cherry</wc-option>
    <wc-option value="dragonfruit">Dragonfruit</wc-option>
    <wc-option value="elderberry">Elderberry</wc-option>
  </wc-select>

Options can include a Material Symbol icon via the icon attribute.

None New file Save Delete

  <wc-select label="Action" placeholder="Choose an action..." style="width: 20rem">
    <wc-option value>None</wc-option>
    <wc-option value="new" icon="add">New file</wc-option>
    <wc-option value="save" icon="save">Save</wc-option>
    <wc-option value="delete" icon="delete">Delete</wc-option>
  </wc-select>

Alternatively, set the options property programmatically when options are determined at runtime.


  <wc-select id="basic-select" label="Fruit" placeholder="Pick a fruit..." variant="outlined" style="width: 20rem"></wc-select>

  <script>
    const sel = document.getElementById('basic-select');
    sel.options = [
      { label: 'None', value: '' },
      { label: 'Apple', value: 'apple' },
      { label: 'Banana', value: 'banana' },
      { label: 'Cherry', value: 'cherry' },
    ];
    sel.addEventListener('change', function (evt) {
      console.log('change', evt.detail);
    });
  </script>

Search / Typeahead

Use search="contains" for client-side typeahead filtering.

None New file Save Save As Nadine Brooks Laura Ballard Jack Thompson

  <wc-select label="Action" placeholder="Type to filter..." search="contains" style="width: 20rem">
    <wc-option value>None</wc-option>
    <wc-option value="new" icon="add">New file</wc-option>
    <wc-option value="save" icon="save">Save</wc-option>
    <wc-option value="save-as">Save As</wc-option>
    <wc-option value="nadine">Nadine Brooks</wc-option>
    <wc-option value="laura">Laura Ballard</wc-option>
    <wc-option value="jack">Jack Thompson</wc-option>
  </wc-select>

Multi Select

Add the multiple attribute to enable multi-select. Selected options are shown as dismissible chips inside the field.

Apple Banana Cherry Dragonfruit Elderberry

  <wc-select label="Fruits" placeholder="Pick fruits..." multiple="true" style="width: 24rem">
    <wc-option value="apple">Apple</wc-option>
    <wc-option value="banana">Banana</wc-option>
    <wc-option value="cherry">Cherry</wc-option>
    <wc-option value="dragonfruit">Dragonfruit</wc-option>
    <wc-option value="elderberry">Elderberry</wc-option>
  </wc-select>

Multi-select also works with typeahead (search="contains").

JavaScript TypeScript Python Rust Go Elixir

  <wc-select label="Tags" placeholder="Search and pick tags..." multiple="true" search="contains" style="width: 24rem">
    <wc-option value="js">JavaScript</wc-option>
    <wc-option value="ts">TypeScript</wc-option>
    <wc-option value="python">Python</wc-option>
    <wc-option value="rust">Rust</wc-option>
    <wc-option value="go">Go</wc-option>
    <wc-option value="elixir">Elixir</wc-option>
  </wc-select>

On this page

Sponsor

Properties

Events

Methods

CSS Custom Properties