Simple and lightweight multiple selection dropdown component with checkboxes, search and select-all
- 🕶 Zero Dependency
 - 🍃 Lightweight (<5KB)
 - 💅 Themeable
 - ✌ Written w/ TypeScript
 
npm i react-multi-select-component # npm yarn add react-multi-select-component # yarnimport 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
