Skip to content

Select

The Select components let you create lists of options for users to choose from.

useOption API

Import

import useOption from '@mui/base/useOption';
// or
import { useOption } from '@mui/base';
You can learn about the difference by reading this guide on minimizing bundle size.

Parameters

NameTypeDescription
disabled*boolean
label*string | React.ReactNode
value*Value
idstring
rootRefReact.Ref<Element>

Return value

NameTypeDescription
getRootProps<Other extends EventHandlers>(otherHandlers?: Other) => UseOptionRootSlotProps<Other>
highlightedboolean
indexnumber
rootRefReact.RefCallback<Element> | null
selectedboolean


useSelect API

Import

import useSelect from '@mui/base/useSelect';
// or
import { useSelect } from '@mui/base';
You can learn about the difference by reading this guide on minimizing bundle size.

Parameters

NameTypeDefaultDescription
areOptionsEqual(a: OptionValue, b: OptionValue) => boolean
A function used to determine if two options' values are equal. By default, reference equality is used. There is a performance impact when using the areOptionsEqual prop (proportional to the number of options). Therefore, it's recommented to use the default reference equality comparison whenever possible.
buttonRefReact.Ref<Element>
The ref of the trigger button element.
defaultOpenbooleanfalse
If true, the select will be open by default.
defaultValueSelectValue<OptionValue, Multiple>
The default selected value. Use when the component is not controlled.
disabledbooleanfalse
If true, the select is disabled.
getOptionAsString(option: SelectOption<OptionValue>) => stringdefaultOptionStringifier
A function used to convert the option label to a string. This is useful when labels are elements and need to be converted to plain text to enable keyboard navigation with character keys.
listboxIdstring
The id attribute of the listbox element.
listboxRefReact.Ref<Element>
The ref of the listbox element.
multipleMultiplefalse
If true, the end user can select multiple values. This affects the type of the value, defaultValue, and onChange props.
onChange(event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent | null, value: SelectValue<OptionValue, Multiple>) => void
Callback fired when an option is selected.
onHighlightChange(event: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element> | React.FocusEvent<Element, Element> | null, highlighted: OptionValue | null) => void
Callback fired when an option is highlighted.
onOpenChange(open: boolean) => void
Callback fired when the listbox is opened or closed.
openboolean
Controls the open state of the select's listbox. This is the controlled equivalent of the defaultOpen prop.
optionsSelectOptionDefinition<OptionValue>[]
An alternative way to specify the options. If this parameter is set, options defined as JSX children are ignored.
valueSelectValue<OptionValue, Multiple>
The selected value. Set to null to deselect all options.

Return value

NameTypeDescription
buttonActiveboolean
If true, the trigger button is active (pressed).
buttonFocusVisibleboolean
If true, the trigger button has a visible focus.
buttonRefReact.RefCallback<Element> | null
Ref to the button slot DOM node.
contextValueSelectProviderValue<Value>
A value to be passed to the SelectProvider component.
disabledboolean
If true, the select is disabled.
dispatch(action: ListAction<Value> | SelectAction) => void
Action dispatcher for the select component. Allows to programmatically control the select.
getButtonProps<OtherHandlers extends EventHandlers = {}>(otherHandlers?: OtherHandlers) => UseSelectButtonSlotProps<OtherHandlers>
Resolver for the button slot's props.
getListboxProps<OtherHandlers extends EventHandlers = {}>(otherHandlers?: OtherHandlers) => UseSelectListboxSlotProps<OtherHandlers>
Resolver for the listbox slot's props.
getOptionMetadata(optionValue: Value) => SelectOption<Value> | undefined
A function that returns the metadata of an option with a given value.
highlightedOptionValue | null
The value of the highlighted option.
listboxRefReact.RefCallback<Element> | null
Ref to the listbox slot DOM node.
openboolean
If true, the listbox is open.
optionsValue[]
Values of all the registered options.
valueSelectValue<Value, Multiple>
The value of the selected option(s).