Skip to content

Select API

API reference docs for the React Select component. Learn about the props, CSS, and other APIs of this exported module.

Component demos

Import

import Select from '@mui/joy/Select';
// or
import { Select } from '@mui/joy';
Learn about the difference by reading this guide on minimizing bundle size.

Props

action

A ref for imperative actions. It currently only supports focusVisible() action.

Type:func
| { current?: { focusVisible: func } }


autoFocus

If true, the select element is focused during the first mount

Type:bool

Default:false


color

The color of the component. It supports those theme colors that make sense for this component.

To learn how to add your own colors, check out Themed components—Extend colors.

Type:'danger'
| 'neutral'
| 'primary'
| 'success'
| 'warning'
| string

Default:'neutral'


component

The component used for the root node. Either a string to use a HTML element or a component.

Type:elementType


defaultListboxOpen

If true, the select will be initially open.

Type:bool

Default:false


defaultValue

The default selected value. Use when the component is not controlled.

Type:any


disabled

If true, the component is disabled.

Type:bool

Default:false


endDecorator

Trailing adornment for the select.

Type:node


getSerializedValue

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.

Type:func


indicator

The indicator(*) for the select. ________________ [ value * ] ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾

Type:node


listboxId

id attribute of the listbox element. Also used to derive the id attributes of options.

Type:string


listboxOpen

Controls the open state of the select's listbox.

Type:bool

Default:undefined


multiple

If true, selecting multiple values is allowed. This affects the type of the value, defaultValue, and onChange props.

Type:bool


name

Name of the element. For example used by the server to identify the fields in form submits.

Type:string


onChange

Callback fired when an option is selected.

Type:func


onClose

Triggered when focus leaves the menu and the menu should close.

Type:func


onListboxOpenChange

Callback fired when the component requests to be opened. Use in controlled mode (see listboxOpen).

Type:func


placeholder

Text to show when there is no selected value.

Type:node


renderValue

Function that customizes the rendering of the selected value.

Type:func


required

If true, the Select cannot be empty when submitting form.

Type:bool

Default:false


size

The size of the component.

To learn how to add custom sizes to the component, check out Themed components—Extend sizes.

Type:'sm'
| 'md'
| 'lg'
| string


slots

The components used for each slot inside.

See Slots API below for more details.

Type:{ button?: elementType, endDecorator?: elementType, indicator?: elementType, listbox?: elementType, root?: elementType, startDecorator?: elementType }

Default:{}


startDecorator

Leading adornment for the select.

Type:node


sx

The system prop that allows defining system overrides as well as additional CSS styles.

See the `sx` page for more details.

Type:Array<func
| object
| bool>
| func
| object


value

The selected value. Set to null to deselect all options.

Type:any


variant

The global variant to use.

To learn how to add your own variants, check out Themed components—Extend variants.

Type:'outlined'
| 'plain'
| 'soft'
| 'solid'
| string

Default:'outlined'


The ref is forwarded to the root element.

Theme default props

You can use JoySelect to change the default props of this component with the theme.


Slots

To learn how to customize the slot, check out the Overriding component structure guide.

root

The component that renders the root.

Class name: .MuiSelect-root

Default component: 'div'


button

The component that renders the button.

Class name: .MuiSelect-button

Default component: 'button'


startDecorator

The component that renders the start decorator.

Class name: .MuiSelect-startDecorator

Default component: 'span'


endDecorator

The component that renders the end decorator.

Class name: .MuiSelect-endDecorator

Default component: 'span'


indicator

The component that renders the indicator.

Class name: .MuiSelect-indicator

Default component: 'span'


listbox

The component that renders the listbox.

Class name: .MuiSelect-listbox

Default component: 'ul'


CSS classes

These class names are useful for styling with CSS. They are applied to the component's slots when specific states are triggered.

.Mui-disabledSTATE

State class applied to the root slot if disabled={true}.


.Mui-expandedSTATE

State class applied to the root slot if listbox open.


.Mui-focusVisibleSTATE

State class applied to the SelectBase root slot if the button is keyboard focused.


.MuiSelect-colorContext

Class name applied to the root element when color inversion is triggered.

Rule name:colorContext


.MuiSelect-colorDanger

Class name applied to the root slot if color="danger".

Rule name:colorDanger


.MuiSelect-colorNeutral

Class name applied to the root slot if color="neutral".

Rule name:colorNeutral


.MuiSelect-colorPrimary

Class name applied to the root slot if color="primary".

Rule name:colorPrimary


.MuiSelect-colorSuccess

Class name applied to the root slot if color="success".

Rule name:colorSuccess


.MuiSelect-colorWarning

Class name applied to the root slot if color="warning".

Rule name:colorWarning


.MuiSelect-multiple

Class name applied to the root slot if multiple=true

Rule name:multiple


.MuiSelect-popper

Class name applied to the popper slot.

Rule name:popper


.MuiSelect-sizeLg

Class name applied to the root slot if size="lg".

Rule name:sizeLg


.MuiSelect-sizeMd

Class name applied to the root slot if size="md".

Rule name:sizeMd


.MuiSelect-sizeSm

Class name applied to the root slot if size="sm".

Rule name:sizeSm


.MuiSelect-variantOutlined

Class name applied to the root slot if variant="outlined".

Rule name:variantOutlined


.MuiSelect-variantPlain

Class name applied to the root slot if variant="plain".

Rule name:variantPlain


.MuiSelect-variantSoft

Class name applied to the root slot if variant="soft".

Rule name:variantSoft


.MuiSelect-variantSolid

Class name applied to the root slot if variant="solid".

Rule name:variantSolid



You can override the style of the component using one of these customization options: