SelectUnstyled API
Demos
For examples and details on the usage of this React component, visit the component demo pages:
Import
import SelectUnstyled from '@mui/base/SelectUnstyled';
// or
import { SelectUnstyled } from '@mui/base';The foundation for building custom-styled select components.
Props
Props of the native component are also available.
| Name | Type | Default | Description |
|---|---|---|---|
| autoFocus | bool | false | If true, the select element is focused during the first mount |
| component | elementType | The component used for the root node. Either a string to use a HTML element or a component. | |
| defaultListboxOpen | bool | false | If true, the select will be initially open. |
| defaultValue | any | The default selected value. Use when the component is not controlled. | |
| disabled | bool | false | If true, the select is disabled. |
| getSerializedValue | func | A function to convert the currently selected value to a string. Used to set a value of a hidden input associated with the select, so that the selected value can be posted with a form. | |
| listboxId | string | id attribute of the listbox element. Also used to derive the id attributes of options. | |
| listboxOpen | bool | undefined | Controls the open state of the select's listbox. |
| multiple | bool | false | If true, selecting multiple values is allowed. |
| name | string | Name of the element. For example used by the server to identify the fields in form submits. If the name is provided, the component will render a hidden input element that can be submitted to a server. | |
| onChange | func | Callback fired when an option is selected. | |
| onListboxOpenChange | func | Callback fired when the component requests to be opened. Use in controlled mode (see listboxOpen). | |
| optionStringifier | func | defaultOptionStringifier | A function used to convert the option label to a string. It's useful when labels are elements and need to be converted to plain text to enable navigation using character keys on a keyboard. |
| renderValue | func | Function that customizes the rendering of the selected value. | |
| slotProps | { listbox?: func | object, popper?: func | object, root?: func | object } | {} | The props used for each slot inside the Input. |
| slots | { listbox?: elementType, popper?: elementType, root?: elementType } | {} | The components used for each slot inside the Select. Either a string to use a HTML element or a component. See Slots API below for more details. |
| value | any | The selected value. Set to null to deselect all options. |
The
ref is forwarded to the root element.Slots
To learn how to customize the slot, check out the Overriding component structure guide.
| Name | Default class | Default HTML tag | Description |
|---|---|---|---|
| root | .MuiSelect-root | 'button' | The component that renders the root. |
| listbox | .MuiSelect-listbox | 'ul' | The component that renders the listbox. |
| popper | .MuiSelect-popper | PopperUnstyled | The component that renders the popper. |
You can override the style of the component using one of these customization options:
- With a global class name.
- With a rule name as part of the component's
styleOverridesproperty in a custom theme.