Autocomplete
An autocomplete component is a text input enhanced by a panel of suggested options.
useAutocomplete API
Import
import { useAutocomplete } from '@mui/base/useAutocomplete';
// or
import { useAutocomplete } from '@mui/base';
Learn about the difference by reading this guide on minimizing bundle size.
Name | Type | Default | Description |
---|---|---|---|
options* | ReadonlyArray<Value> | - | Array of options. |
autoComplete | boolean | false | If |
autoHighlight | boolean | false | If |
autoSelect | boolean | false | If |
blurOnSelect | 'touch' | 'mouse' | true | false | false | Control if the input should be blurred when an option is selected:
|
clearOnBlur | boolean | !props.freeSolo | If |
clearOnEscape | boolean | false | If |
componentName | string | - | The component name that is using this hook. Used for warnings. |
defaultValue | AutocompleteValue<Value, Multiple, DisableClearable, FreeSolo> | props.multiple ? [] : null | The default value. Use when the component is not controlled. |
disableClearable | DisableClearable | false | If |
disableCloseOnSelect | boolean | false | If |
disabled | boolean | false | If |
disabledItemsFocusable | boolean | false | If |
disableListWrap | boolean | false | If |
filterOptions | (options: Value[], state: FilterOptionsState<Value>) => Value[] | createFilterOptions() | A function that determines the filtered options to be rendered on search. |
filterSelectedOptions | boolean | false | If |
freeSolo | FreeSolo | false | If |
getOptionDisabled | (option: Value) => boolean | - | Used to determine the disabled state for a given option. |
getOptionKey | (option: Value | AutocompleteFreeSoloValueMapping<FreeSolo>) => string | number | - | Used to determine the key for a given option. This can be useful when the labels of options are not unique (since labels are used as keys by default). |
getOptionLabel | (option: Value | AutocompleteFreeSoloValueMapping<FreeSolo>) => string | (option) => option.label ?? option | Used to determine the string value for a given option. It's used to fill the input (and the list box options if |
groupBy | (option: Value) => string | - | If provided, the options will be grouped under the returned string. The groupBy value is also used as the text for group headings when |
handleHomeEndKeys | boolean | !props.freeSolo | If |
id | string | - | This prop is used to help implement the accessibility logic. If you don't provide an id it will fall back to a randomly generated one. |
includeInputInList | boolean | false | If |
inputValue | string | - | The input value. |
isOptionEqualToValue | (option: Value, value: Value) => boolean | - | Used to determine if the option represents the given value. Uses strict equality by default. ⚠️ Both arguments need to be handled, an option can only match with one value. |
multiple | Multiple | false | If |
onChange | (event: React.SyntheticEvent, value: AutocompleteValue<Value, Multiple, DisableClearable, FreeSolo>, reason: AutocompleteChangeReason, details?: AutocompleteChangeDetails<Value>) => void | - | Callback fired when the value changes. |
onClose | (event: React.SyntheticEvent, reason: AutocompleteCloseReason) => void | - | Callback fired when the popup requests to be closed. Use in controlled mode (see open). |
onHighlightChange | (event: React.SyntheticEvent, option: Value | null, reason: AutocompleteHighlightChangeReason) => void | - | Callback fired when the highlight option changes. |
onInputChange | (event: React.SyntheticEvent, value: string, reason: AutocompleteInputChangeReason) => void | - | Callback fired when the input value changes. |
onOpen | (event: React.SyntheticEvent) => void | - | Callback fired when the popup requests to be opened. Use in controlled mode (see open). |
open | boolean | - | If |
openOnFocus | boolean | false | If |
readOnly | boolean | false | If |
selectOnFocus | boolean | !props.freeSolo | If |
unstable_classNamePrefix | string | 'Mui' | |
unstable_isActiveElementInListbox | (listbox: React.RefObject<HTMLElement>) => boolean | - | |
value | AutocompleteValue<Value, Multiple, DisableClearable, FreeSolo> | - | The value of the autocomplete. |
Name | Type | Description |
---|---|---|
anchorEl | null | HTMLElement | An HTML element that is used to set the position of the component. |
dirty | boolean | If |
expanded | boolean | If |
focused | boolean | If |
focusedTag | number | Index of the focused tag for the component. |
getClearProps | () => React.HTMLAttributes<HTMLButtonElement> | Resolver for the |
getInputLabelProps | () => Omit<React.HTMLAttributes<HTMLLabelElement>, 'color'> | Resolver for the input label element's props. |
getInputProps | () => React.InputHTMLAttributes<HTMLInputElement> & { ref: React.Ref<HTMLInputElement> } | Resolver for the input element's props. |
getListboxProps | () => React.HTMLAttributes<HTMLUListElement> | Resolver for the listbox component's props. |
getOptionProps | (renderedOption: UseAutocompleteRenderedOption<Value>) => React.HTMLAttributes<HTMLLIElement> | Resolver for the rendered option element's props. |
getPopupIndicatorProps | () => React.HTMLAttributes<HTMLButtonElement> | Resolver for the popup icon's props. |
getRootProps | (externalProps?: any) => React.HTMLAttributes<HTMLDivElement> | Resolver for the root slot's props. |
getTagProps | AutocompleteGetTagProps | A tag props getter. |
groupedOptions | Value[] | Array<AutocompleteGroupedOption<Value>> | The options to render. It's either |
id | string | Id for the Autocomplete. |
inputValue | string | The input value. |
popupOpen | boolean | If |
setAnchorEl | () => void | Setter for the component |
value | AutocompleteValue<Value, Multiple, DisableClearable, FreeSolo> | The value of the autocomplete. |