Multi-Select

Material Design 3 multiple selection dropdown component with tags

Multi-Select

Multi-Select allows users to select multiple options from a dropdown list. Selected items are displayed as removable tags. Uses the native HTML Popover API for dropdown behavior.

Basic Usage

Basic Multi-Select

Option 1
Option 2
Option 3

With Selections

Multi-Select with Tags

Vue Angular
✓ React
✓ Vue
✓ Angular
Svelte

Multi-Select with Search

Variants

Outlined (Default)

Outlined Multi-Select

React
Vue
Angular

Filled

Filled Multi-Select

React
Vue
Angular

Sizes

Small

Small Multi-Select

Option 1
Option 2

Large

Large Multi-Select

Option 1
Option 2

Tag Variants

Primary Tags

Primary Tags

Option 2
Option 1
Option 2

Outlined Tags

Outlined Tags

Option 2
Option 1
Option 2

With Max Selections Display

Max Selections Display

React
Vue
Angular
Svelte
Solid

With Clear All Button

With Clear All

React
Vue
Angular

With Groups

Grouped Options

Frontend
React
Vue
Angular
Backend
Node.js
Python
Go

States

Error State

Error State

Skills
JavaScript
TypeScript
Python
Please select at least 2 skills

Disabled

Disabled State

Loading

Loading State

API Reference

Class Names

Class Description
.multi-select Base container (required)
.multi-select-trigger Trigger button (use with popovertarget)
.multi-select-placeholder Placeholder text
.multi-select-tags Tags container
.multi-select-tag Individual tag
.multi-select-tag-remove Tag remove button
.multi-select-tag-primary Primary colored tag
.multi-select-tag-outlined Outlined tag variant
.multi-select-tag-overflow Overflow count tag
.multi-select-input Search input within tags
.multi-select-arrow Dropdown arrow
.multi-select-clear-all Clear all button
.multi-select-dropdown Dropdown container (use with popover attribute)
.multi-select-search Search container in dropdown
.multi-select-search-input Search input in dropdown
.multi-select-options Options list
.multi-select-option Individual option
.multi-select-option-selected Selected option
.multi-select-option-disabled Disabled option
.multi-select-option-checkbox Option checkbox
.multi-select-group Option group
.multi-select-group-header Group header
.multi-select-actions Actions container (select all/deselect all)
.multi-select-action Action button
.multi-select-outlined Outlined variant
.multi-select-filled Filled variant
.multi-select-sm Small size
.multi-select-lg Large size
.multi-select-error Error state
.multi-select-disabled Disabled state
.multi-select-loading Loading state
.multi-select-spinner Loading spinner

HTML Structure with Popover API

<div class="multi-select">
  <button class="multi-select-trigger" popovertarget="dropdown-id">
    <span class="multi-select-placeholder">Select options</span>
    <svg class="multi-select-arrow">...</svg>
  </button>
  <div class="multi-select-dropdown" id="dropdown-id" popover="auto">
    <div class="multi-select-options">
      <div class="multi-select-option">Option 1</div>
      <div class="multi-select-option">Option 2</div>
    </div>
  </div>
</div>

Color Variants

Color Variants

Ghost Variant

Ghost Multi-Select