Multi Select

Multi select presents user with a set of options and allows to select many of them.

#

#

Select should be disabled, when user shouldn't be allowed to interact with it.

Individual options can be disabled too.

#

Mark select as loading, when options are fetched on the fly and are not yet available.

#

Invalid select indicates that current value isn't what the system expects.

#

Clearable select should be used when empty selection is acceptable.

#

Options can display an additional descriptive text underneath the label.

#

Options can display an additional accessory view before the label. You can show an image using an image accessory. This is useful for showing logos when selecting sources or destinations, for example.

Icons can be accessories too.

#

You don't have to create objects with label and value keys as shown in the examples above. MultiSelect supports any objects, as long as you provide a label and value for each option via optionLabel and optionValue functions. description may be replaced with the optionDescription function.

#

There's a version of MultiSelect called GroupedMultiSelect, that supports groups of options.

#

Use the heavy variant to emphasize the multi select when in views with many selects or in-line with text.

#

Use the alternative variant to deemphasize the multi select when there are many selects.

#

The size prop impacts font-size and height. Default is set to md.

To set the width, use the width prop instead.

#

#

  • When user should be able to select multiple options at once.

#

  • When user should be able to select only one option.
  • When user should be able to create new options on the fly.

#

  • Use sentence case for tab titles.

#

#

NameDefaultDescription
isDisabled

boolean

Determines if select is disabled.

isLoading

boolean

Indicates that options are being loaded.

isInvalid

boolean

Indicates that select is in invalid state.

isClearablefalseboolean

Determines if selection can be cleared.

isOptionDisabled

(option: Option) => boolean

Function to determine whether an option should be disabled.

emptyOptionsMessage"No options"string

Text to show inside a dropdown when there are no options.

options

Option[]

Available options. `Option` is a generic, so type of options will be inferred.

optionLabel

(option: Option) => string

Function to extract label from an option. If it's not provided, `label` field will be used as a label.

optionDescription

(option: Option) => string

Function to extract description from an option. If it's not provided, `description` field will be used as a label.

optionValue

(option: Option) => OptionValue

Function to extract value from an option. If it's not provided, `value` field will be used as a value.

optionAccessory

(option: Option) => SelectOptionAccessoryType

Function to show an accessory view near the option label.

placeholder

string

Placeholder text to show inside a select when nothing is selected.

variant"default""default" | "alternative" | "heavy"

Determines the appearance of the multi select.

size"md""sm" | "md" | "lg"

Select size.

value

OptionValue[]

Selected options.

width"xs""xs" | "sm" | "md" | "lg" | "xl" | "auto" | "100%"

Select width.

onChange

(value: OptionValue[]) => void

Callback for when user selects a different option or clears the selection.

onClose

() => void

Callback for when user closes the select.

onOpen

() => void

Callback for when user opens the select.

valueLabel

(option: Option) => string

Function to format a selected option's label. If not provided, `label` field will be used as a label.

#

NameDefaultDescription
isDisabled

boolean

Determines if select is disabled.

isLoading

boolean

Indicates that options are being loaded.

isInvalid

boolean

Indicates that select is in invalid state.

isClearablefalseboolean

Determines if selection can be cleared.

isOptionDisabled

(option: Option) => boolean

Function to determine whether an option should be disabled.

emptyOptionsMessage"No options"string

Text to show inside a dropdown when there are no options.

optionGroups

Array<{ label: string; options: Option[]; }>

Available options. `Option` is a generic, so type of options will be inferred.

optionLabel

(option: Option) => string

Function to extract label from an option. If it's not provided, `label` field will be used as a label.

optionDescription

(option: Option) => string

Function to extract description from an option. If it's not provided, `description` field will be used as a label.

optionValue

(option: Option) => OptionValue

Function to extract value from an option. If it's not provided, `value` field will be used as a value.

optionAccessory

(option: Option) => SelectOptionAccessoryType

Function to show an accessory view near the option label.

placeholder

string

Placeholder text to show inside a select when nothing is selected.

variant"default""default" | "alternative" | "heavy"

Determines the appearance of the grouped multi select.

size"md""sm" | "md" | "lg"

Select size.

value

OptionValue[]

Selected options.

width"xs""xs" | "sm" | "md" | "lg" | "xl" | "auto" | "100%"

Select width.

onChange

(value: OptionValue[]) => void

Callback for when user selects a different option or clears the selection.

valueLabel

(option: Option) => string

Function to format a selected option's label. If not provided, `label` field will be used as a label.

On this page

  • Usage
  • Disabled
  • Loading
  • Invalid
  • Clearable
  • Description
  • Accessories
  • Custom objects
  • Groups
  • Heavy variant
  • Alternative variant
  • Size
  • Guidelines
  • When to use
  • When not to use
  • Content
  • Props
  • MultiSelect
  • GroupedMultiSelect