Skip to catalog content
Mado UI Open-code components

Source-owned · zero runtime dependencies

primitive · combobox

Editable combobox

A progressively enhanced text input backed by a native datalist and an ARIA listbox popup.

Install with npx @madojs/ui@latest add combobox.

Editable combobox

Assign a reviewer

Start with the native datalist, then enhance the same text field with a keyboard-complete listbox where Popover is available.

  • Ada LovelacePlatform engineering
  • Élodie DurandLocalization
  • Grace HopperCompiler systems
  • Linus TorvaldsKernel platform
Suggestions are optional; an arbitrary reviewer name remains a valid submitted value. Use a native select for a closed set.

No reviewer has been assigned.

Composition

  • Author a direct input[list], datalist, hidden toggle and hidden popover listbox inside mado-ui-combobox, then attach madoUiCombobox().root.
  • Use this editable contract only when arbitrary text remains valid; closed choices stay a native select.

Public API

export madoUiCombobox()
Returns a root ref and optional selection/results callbacks for the authored relationship.
class mado-ui-combobox
Root containing the four required direct children.
attribute data-mado-ui-combobox-enhanced
Helper-owned marker present only while progressive enhancement is active.
attribute list / popovertarget / popover
Native relationships that define the datalist baseline and popup enhancement.
css-property --mado-ui-combobox-listbox-inline-size
Constrains the enhanced suggestion popup.

Detected public classes

  • .mado-ui-combobox
  • .mado-ui-combobox-input
  • .mado-ui-combobox-listbox
  • .mado-ui-combobox-option
  • .mado-ui-combobox-option-description
  • .mado-ui-combobox-option-value
  • .mado-ui-combobox-toggle

Detected public CSS properties

  • --mado-ui-color-action
  • --mado-ui-color-border
  • --mado-ui-color-surface
  • --mado-ui-color-surface-soft
  • --mado-ui-color-text
  • --mado-ui-color-text-muted
  • --mado-ui-combobox-color
  • --mado-ui-combobox-disabled-background
  • --mado-ui-combobox-disabled-border
  • --mado-ui-combobox-disabled-color
  • --mado-ui-combobox-disabled-opacity
  • --mado-ui-combobox-focus
  • --mado-ui-combobox-focus-ring
  • --mado-ui-combobox-inline-size
  • --mado-ui-combobox-input-background
  • --mado-ui-combobox-input-border
  • --mado-ui-combobox-input-color
  • --mado-ui-combobox-input-height
  • --mado-ui-combobox-input-padding
  • --mado-ui-combobox-input-placeholder-color
  • --mado-ui-combobox-input-placeholder-opacity
  • --mado-ui-combobox-input-radius
  • --mado-ui-combobox-input-shadow
  • --mado-ui-combobox-input-toggle-space
  • --mado-ui-combobox-listbox-background
  • --mado-ui-combobox-listbox-border
  • --mado-ui-combobox-listbox-color
  • --mado-ui-combobox-listbox-gap
  • --mado-ui-combobox-listbox-inline-size
  • --mado-ui-combobox-listbox-max-block-size
  • --mado-ui-combobox-listbox-offset
  • --mado-ui-combobox-listbox-padding
  • --mado-ui-combobox-listbox-position-area
  • --mado-ui-combobox-listbox-radius
  • --mado-ui-combobox-listbox-shadow
  • --mado-ui-combobox-option-background
  • --mado-ui-combobox-option-color
  • --mado-ui-combobox-option-description-color
  • --mado-ui-combobox-option-gap
  • --mado-ui-combobox-option-hover-background
  • --mado-ui-combobox-option-hover-color
  • --mado-ui-combobox-option-min-block-size
  • --mado-ui-combobox-option-padding
  • --mado-ui-combobox-option-radius
  • --mado-ui-combobox-option-selected-background
  • --mado-ui-combobox-option-selected-border
  • --mado-ui-combobox-option-selected-color
  • --mado-ui-combobox-option-value-weight
  • --mado-ui-combobox-toggle-background
  • --mado-ui-combobox-toggle-color
  • --mado-ui-combobox-toggle-hover-background
  • --mado-ui-combobox-toggle-hover-color
  • --mado-ui-combobox-toggle-radius
  • --mado-ui-combobox-toggle-size
  • --mado-ui-control-background
  • --mado-ui-control-border
  • --mado-ui-control-color
  • --mado-ui-control-focus-ring
  • --mado-ui-control-height
  • --mado-ui-control-padding
  • --mado-ui-control-radius
  • --mado-ui-control-shadow
  • --mado-ui-focus-ring
  • --mado-ui-radius-md
  • --mado-ui-radius-sm
  • --mado-ui-shadow-panel
  • --mado-ui-space-1
  • --mado-ui-space-2
  • --mado-ui-space-3

Accessibility contract

  • DOM focus remains on the editable native input; aria-activedescendant exposes the active generated option.
  • The helper owns listbox/option state only after the complete authored relationship validates.

Keyboard

  • Down and Up open and move through suggestions; Enter accepts the active option; Escape closes; Tab closes and continues normally.
  • Text-editing keys, IME composition and modified shortcuts remain browser-owned.

Focus

  • The toggle stays outside Tab order and pointer selection returns focus to the input.

Fallback

  • Without Popover support or after malformed markup, input[list] and datalist remain the complete native fallback.

Installation graph

Direct dependencies

Resolved install order

Copied source

The CLI resolves each registry source path into the configured project target. Links below point to the exact catalog build tag.