Skip to content

Unstyled 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
optionRefReact.Ref<HTMLElement>

Return value

NameTypeDescription
getRootProps<Other extends EventHandlers>(otherHandlers?: Other) => UseOptionRootSlotProps<Other>
highlightedboolean
indexnumber
refReact.RefCallback<HTMLElement>
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
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.
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(e: React.MouseEvent | React.KeyboardEvent | React.FocusEvent | null, value: SelectValue<OptionValue, Multiple>) => void
Callback fired when an option is selected.
onHighlightChange(e: 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.
optionStringifier(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.
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.
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.
openboolean
If true, the listbox is open.
optionsValue[]
Values of all the registered options.
valueSelectValue<Value, Multiple>
The value of the selected option(s).