AutocompleteInput

A single-select input with type-ahead over a list of choices.

Installation

pnpm dlx shadcn@latest add @chelone/autocomplete-input
Loading preview…

A single-select input with type-ahead over a list of choices.

Props

PropTypeDefaultDescription
alwaysOnboolean—As a `<FilterForm>`/`<FilterButton>` filter: always shown, never in the add-filter menu. Read off the element by the filter layer, never by the input.
defaultValueNoInfer<SourceValue<TRecord, TPath>>—Input-level default, ra precedence (seeds only into an untouched hole). Typed as the value at `source`; `unknown` without a record.
disabledboolean—Native disabled state.
helperTextReactNode—Helper text rendered below the input; a string is translated.
idstring—Explicit element id; a generated `useId` value is used otherwise.
isRequiredboolean—Forces the required marker; ORed with `required()` detection on `validate`.
labelReactNode—The input label. A string is translated; a ReactNode renders as-is; `false` (or `""`) renders no label.
namestring—Legacy field-name alias (ra parity); the wiring uses `source`.
onBlur(event: unknown) => void—Chained AFTER the blur is recorded.
onChange(eventOrValue: unknown) => void—Chained AFTER the parsed value is written to the form.
parse(value: unknown) => NoInfer<SourceTransformValue<TRecord, TPath>>—Write transform (input value → stored value). Must return the value at `source`; `unknown` without a record.
readOnlyboolean—Native read-only state.
resourcestring—Override the ambient resource (used to resolve the default label key).
typestring—The DOM input `type` (text inputs default to `"text"`).
validateValidator | readonly Validator[]—ra-contract validators — composed, first error wins.
sourceTPath—The field path RELATIVE to the ambient source scope.
classNamestring—
clearOnBlurboolean—When true, clear the filter text on input blur.
debouncenumber—
emptyTextstring—Label of a "(none)" entry prepended when the field is not required.
emptyValuestring | number—Underlying value used when clearing the selection. Defaults to "".
filterToQuery(searchText: string) => FilterPayload—
handleHomeEndKeysboolean—When true, Home/End keys scroll the listbox to first/last item.
inputText(choice: TChoice) => string—Custom display text for the selected value in the trigger.
isOptionEqualToValue(option: ChoiceValueOf<TChoice>, value: ChoiceValueOf<TChoice>) => boolean—Custom equality check between a choice value and the current value.
limitChoicesToValueboolean—When true, only show choices matching the current value.
matchSuggestion(filter: string, choice: TChoice) => boolean—Custom filter function; replaces default substring match.
modalboolean—Radix popover modality.
noOptionsTextReact.ReactNode—Content to show when no choices match the filter.
openOnFocusboolean—When true, open the dropdown on input focus.
placeholderstring—
selectOnFocusboolean—When true, select all text in the input on focus.
setFilter(filter: string) => void—Called with the current filter text on every keystroke (no debounce).
shouldRenderSuggestions(filter: string) => boolean—Gate controlling whether the dropdown opens at all.
suggestionLimitnumber—Cap the number of dropdown items shown.