Loading...
Loading...
Implement Syncfusion React MultiSelect Dropdown component for multi-value selection. Use this when working with multi-select dropdowns, checkbox list pickers, or tag/chip selection interfaces. This skill covers data binding, filtering, grouping, templates, accessibility, custom values, checkbox mode, virtual scrolling, and styling options.
npx skill4agent add syncfusion/react-ui-components-skills syncfusion-react-multiselectimport { MultiSelectComponent } from '@syncfusion/ej2-react-dropdowns';
import '@syncfusion/ej2-react-dropdowns/styles/tailwind3.css';
// Also import base dependencies:
// @syncfusion/ej2-base/styles/tailwind3.css
// @syncfusion/ej2-buttons/styles/tailwind3.css
// @syncfusion/ej2-inputs/styles/tailwind3.css@syncfusion/ej2-react-dropdownsMultiSelectComponentCheckBoxSelection<Inject services={[CheckBoxSelection]} />VirtualScroll<Inject services={[VirtualScroll]} />import { MultiSelectComponent } from '@syncfusion/ej2-react-dropdowns';
import * as React from 'react';
export default function App() {
const sportsData = ['Badminton', 'Basketball', 'Cricket', 'Football', 'Golf', 'Tennis'];
return (
<MultiSelectComponent
id="multiselect"
dataSource={sportsData}
placeholder="Select sports"
/>
);
}import { MultiSelectComponent } from '@syncfusion/ej2-react-dropdowns';
import * as React from 'react';
export default function App() {
const sportsData = [
{ id: 'game1', sports: 'Badminton' },
{ id: 'game2', sports: 'Football' },
{ id: 'game3', sports: 'Tennis' },
];
const fields = { text: 'sports', value: 'id' };
return (
<MultiSelectComponent
id="multiselect"
dataSource={sportsData}
fields={fields}
placeholder="Select a game"
/>
);
}textvaluegroupByiconCssdisabledDataManagergroupByallowFilteringfilteringwhere()CheckBoxSelectiontaggingallowCustomValuefields.disabledallowResizeVirtualScrollL10n| Prop | Type | When to Use |
|---|---|---|
| | Always required — data to display |
| | When using object data; map |
| | Change selection display: chips ( |
| | Pre-select items on load |
| | Enable search-as-you-type filtering |
| | Let users type values not in the list |
| | Return full objects as selected values instead of primitives |
| | Use for 500+ items to improve performance |
| | Let users resize the popup |
| | Limit popup list height (default: |
| | Set popup width (default: matches input) |
| | Input placeholder text |
mode="Box"mode="CheckBox"CheckBoxSelectionallowFiltering={true}filteringvaluevalue={['id1', 'id2']}groupByfieldsfields={{ text: 'name', value: 'id', groupBy: 'category' }}enableVirtualization={true}VirtualScrolldisabledfields={{ ..., disabled: 'isDisabled' }}allowCustomValue={true}customValueSelectionUser wants multiple selections?
├── Visual chips with filter → mode="Box" (default) + allowFiltering
├── Checkbox-style list → mode="CheckBox" + Inject CheckBoxSelection
└── Comma-separated display → mode="Delimiter"
Data source type?
├── Simple strings/numbers → Pass array directly to dataSource
├── Objects → Pass array + fields={{ text, value }}
└── Remote API → Use DataManager + allowFiltering + filtering event
List is very long?
└── Yes (500+) → enableVirtualization={true} + Inject VirtualScroll
Need custom item layout?
└── Use itemTemplate, valueTemplate, groupTemplate props
Need localization?
└── Read references/accessibility-styling-localization.md