Simple and lightweight multiple selection dropdown component with checkboxes
, search
and select-all
Storybook GitHub Actions Status NPM gzip
- πΆ Zero Dependency
- π Lightweight (<5KB)
- π Themeable
- β Written w/ TypeScript
npm i react-multi-select-component # npm yarn add react-multi-select-component # yarn
import React, { useState } from "react"; import { MultiSelect } from "react-multi-select-component"; const options = [ { label: "Grapes π", value: "grapes" }, { label: "Mango π₯", value: "mango" }, { label: "Strawberry π", value: "strawberry", disabled: true }, ]; const Example = () => { const [selected, setSelected] = useState([]); return ( <div> <h1>Select Fruits</h1> <pre>{JSON.stringify(selected)}</pre> <MultiSelect options={options} value={selected} onChange={setSelected} labelledBy="Select" /> </div> ); }; export default Example;
More examples can be found here β
Prop | Description | Type | Default |
---|---|---|---|
labelledBy |
value for aria-labelledby |
string |
|
options |
options for dropdown | [{label, value, disabled}] |
|
value |
pre-selected rows | [{label, value}] |
[] |
hasSelectAll |
toggle 'Select All' option | boolean |
true |
isLoading |
show spinner on select | boolean |
false |
shouldToggleOnHover |
toggle dropdown on hover option | boolean |
false |
overrideStrings |
localization β | object |
|
onChange |
onChange callback | function |
|
disabled |
disable dropdown | boolean |
false |
disableSearch |
hide search textbox | boolean |
false |
filterOptions |
custom filter options (async supported) β | function |
Fuzzy Search |
className |
class name for parent component | string |
multi-select |
valueRenderer |
custom dropdown header β | function |
|
ItemRenderer |
custom dropdown option β | function |
|
ClearIcon |
Custom Clear Icon for Search | ReactNode |
|
ArrowRenderer |
Custom Arrow Icon for Dropdown | ReactNode |
|
debounceDuration |
debounce duration for Search | number |
300 |
ClearSelectedIcon |
Custom Clear Icon for Selected Items (Hint: Pass null to prevent it from rendering completely) |
ReactNode |
|
isCreatable |
Allows user to create unavailable option(s) example β | boolean |
false |
onCreateOption |
allows to override newly created option example β | function |
|
closeOnChangedValue |
automatically closes dropdown when its value is changed | boolean |
false |
For every release changelog/migration-guide will be available in releases
- This project gets inspiration and several pieces of logical code from react-multiple-select
- TypeScript
MIT Β© harshzalavadiya