Skip to content

MultiSelect

Multi-select dropdown field with checkbox-style options.

<MultiSelectStory {...args} />
<MultiSelectStory {...args} />
<MultiSelectStory {...args} />
<MultiSelectStory {...args} />
<MultiSelectStory {...args} />
<MultiSelectStory {...args} />
<MultiSelectStory {...args} />
<MultiSelectStory {...args} />
<MultiSelectStory {...args} />
<CustomOptionsStory {...args} />
Choose which columns are visible in the table.
<MultiSelectStory {...args} />
<OverflowBadgesStory {...args} />
<EmptyMultiSelectStory {...args} />

Multi-select dropdown field with checkbox-style options.

When isOptional: false, isRequired: false

PropTypeDefaultDescription
children(option: MultiSelectOptionData) => ReactNodeCustom render function for selectable options.
classNamestringAdditional CSS class names applied to the field root.
data-testidstringTest ID applied to the combobox button.
descriptionReactNodeSupporting text displayed below the label.
hasClearbooleanfalseWhether to show a clear button when values are selected.
hasSearchbooleanfalseWhether to show search input in the dropdown.
hasSelectAllbooleanfalseWhether to show a select-all option.
isDefaultOpenbooleanfalseWhether the selector starts open.
isDisabledbooleanfalseWhether the selector is disabled.
isLabelHiddenbooleanfalseWhether to visually hide the label.
isLoadingbooleanfalseWhether the selector is loading.
label*stringField label.
labelIconIconComponentIcon shown before the label.
labelTooltipReactNodeTooltip content shown next to the label.
maxBadgesnumber3Maximum number of badges before showing an overflow count.
onChange*(value: string[]) => voidCalled when selection changes.
options*ReadonlyArray<MultiSelectOption>Options to display.
placeholderstring'Select...'Placeholder shown when no values are selected.
refRef<HTMLButtonElement>Ref forwarded to the combobox button.
searchPlaceholderstring'Search...'Search input placeholder.
selectAllLabelstring'Select all'Select-all option label.
size"sm" | "md" | "lg"'md'Select size.
startIconIconComponentStart icon rendered in the trigger.
statusInputStatusValidation status displayed below the selector.
styleCSSPropertiesInline styles applied to the field root.
triggerDisplay"count" | "labels" | "badges"'count'How selected items are summarized in the trigger.
value*string[]Selected option values.
isOptionalfalse
isRequiredfalse

When isOptional: true, isRequired: false

PropTypeDefaultDescription
children(option: MultiSelectOptionData) => ReactNodeCustom render function for selectable options.
classNamestringAdditional CSS class names applied to the field root.
data-testidstringTest ID applied to the combobox button.
descriptionReactNodeSupporting text displayed below the label.
hasClearbooleanfalseWhether to show a clear button when values are selected.
hasSearchbooleanfalseWhether to show search input in the dropdown.
hasSelectAllbooleanfalseWhether to show a select-all option.
isDefaultOpenbooleanfalseWhether the selector starts open.
isDisabledbooleanfalseWhether the selector is disabled.
isLabelHiddenbooleanfalseWhether to visually hide the label.
isLoadingbooleanfalseWhether the selector is loading.
label*stringField label.
labelIconIconComponentIcon shown before the label.
labelTooltipReactNodeTooltip content shown next to the label.
maxBadgesnumber3Maximum number of badges before showing an overflow count.
onChange*(value: string[]) => voidCalled when selection changes.
options*ReadonlyArray<MultiSelectOption>Options to display.
placeholderstring'Select...'Placeholder shown when no values are selected.
refRef<HTMLButtonElement>Ref forwarded to the combobox button.
searchPlaceholderstring'Search...'Search input placeholder.
selectAllLabelstring'Select all'Select-all option label.
size"sm" | "md" | "lg"'md'Select size.
startIconIconComponentStart icon rendered in the trigger.
statusInputStatusValidation status displayed below the selector.
styleCSSPropertiesInline styles applied to the field root.
triggerDisplay"count" | "labels" | "badges"'count'How selected items are summarized in the trigger.
value*string[]Selected option values.
isOptional*true
isRequiredfalse

When isOptional: false, isRequired: true

PropTypeDefaultDescription
children(option: MultiSelectOptionData) => ReactNodeCustom render function for selectable options.
classNamestringAdditional CSS class names applied to the field root.
data-testidstringTest ID applied to the combobox button.
descriptionReactNodeSupporting text displayed below the label.
hasClearbooleanfalseWhether to show a clear button when values are selected.
hasSearchbooleanfalseWhether to show search input in the dropdown.
hasSelectAllbooleanfalseWhether to show a select-all option.
isDefaultOpenbooleanfalseWhether the selector starts open.
isDisabledbooleanfalseWhether the selector is disabled.
isLabelHiddenbooleanfalseWhether to visually hide the label.
isLoadingbooleanfalseWhether the selector is loading.
label*stringField label.
labelIconIconComponentIcon shown before the label.
labelTooltipReactNodeTooltip content shown next to the label.
maxBadgesnumber3Maximum number of badges before showing an overflow count.
onChange*(value: string[]) => voidCalled when selection changes.
options*ReadonlyArray<MultiSelectOption>Options to display.
placeholderstring'Select...'Placeholder shown when no values are selected.
refRef<HTMLButtonElement>Ref forwarded to the combobox button.
searchPlaceholderstring'Search...'Search input placeholder.
selectAllLabelstring'Select all'Select-all option label.
size"sm" | "md" | "lg"'md'Select size.
startIconIconComponentStart icon rendered in the trigger.
statusInputStatusValidation status displayed below the selector.
styleCSSPropertiesInline styles applied to the field root.
triggerDisplay"count" | "labels" | "badges"'count'How selected items are summarized in the trigger.
value*string[]Selected option values.
isOptionalfalse
isRequired*true