Combobox

Search a known list and choose one value. Select handles short fixed lists; Combobox adds editable queries and explicit selection, while multiple values belong to MultiSelect.

Search and select

Deployment region

Type a city or region code, move with the arrow keys and commit with Enter. Escape restores the committed label; Tokyo remains visible but unavailable.

Remote results

Loading, no matches and failure

This local demo simulates a delayed request. Search for a region, use an unmatched query for no results, or type “offline” to trigger failure and retry. Production consumers own requests and discard stale responses.

Sizes and field availability

ExampleAxis / stateUsage
SmallShared interactive size and button typography.
MediumShared interactive size and button typography.
LargeShared interactive size and button typography.
Choose a deployment region.
InvalidField error is separate from retrieval failure.
Read-onlyValue remains selectable; changes are unavailable.
DisabledValue remains visible; control leaves the tab order.

Usage notes

VerdictRule
DoKeep embedded hover ink-only; use the shared inset plate for press and preserve persistent selection.
DoUse Combobox to search and commit one known value; use Select for a short fixed list and MultiSelect for multiple values.
DoGive the input a visible FormField label or an accessible name; placeholder is never its label.
DoKeep query, highlighted suggestion and committed value separate. Commit only by explicit option activation; Escape, Tab and outside dismissal restore the committed label.
DoKeep DOM focus on the input during option navigation; aria-activedescendant references one visible available option.
DoKeep disabled options visible, skip them during keyboard navigation and guard pointer activation.
DoKeep the panel open during loading or retrieval failure. Preserve results for context but block stale-option commits. The host cancels or discards outdated async responses.
DoAnnounce loading, result count, no matches and failure through one polite status region. Field validation uses aria-invalid and aria-describedby independently.
DoKeep native text editing and IME composition. Enter during composition never selects or submits.
DoClear through a named sibling button. Required means a committed value is required; clearing may leave an invalid field.
DoFlip above when the viewport has more room there, retain anchor width and cap scrolling to available space. Re-evaluate on scroll and resize; a containing modal owns outer focus confinement.
Don’tDo not accept arbitrary typed text as a value in this contract. Free-text token creation requires an explicit separate contract.
Don’tDo not put action buttons inside options or listboxes; feedback and retry are siblings of the listbox.