Skip to main content

Anatomy

The Combobox consists of four primary elements that work together to allow users to filter and select values from a list.
Combobox
anatomy
  1. Trigger
  2. Content
  3. Clear button (Optional)
  4. Popover

Options

The Combobox supports single and multi-select configurations to accommodate various selection scenarios.

Multi Select

Behavior

The Combobox responds to user interaction with flexible selection methods and typeahead functionality.

Single selecting

Clicking an option updates the text field value and closes the Combobox. When reopening the Combobox with a selected value, the option matching that value is selected.

Multi Selecting

Continuous selection

Continuous selection refers to a multiselect that stays open while users keep making selections. Refer to the usage guide for when to use this variant.

Select All

Multi-select Comboboxes support selecting all options at once.

As Select-only

Configure the Combobox for scenarios requiring an HTML select-like experience.

Typeahead

Combobox supports typeahead, narrowing options in the popup as users type.

Rows

Comboboxes grow as the number of selections increases. Configure the maximum number of rows.

Truncated Chip

When there are more Chips than rows allowed in the Combobox, a truncated Chip will appear.

Usage Guidelines

Use the Combobox when users need to select from many options.

When not to use

Consider using an alternative component to the Combobox when:
  • There are only a few items to choose from. A radio or checkbox group may be more appropriate.
  • When a particularly complex selection interaction is needed, in which case a Listbox in a special layout may be preferred.
  • In navigational contexts.

Selection methods

The main selection method for Combobox supports searching for a particular entity to make the selection. This pattern appears in applications like Slack when adding a new member to a channel.
ScenarioUse a…
Has 10+ optionsRegular Combobox
Users are not familiar with the optionsRegular Combobox
Has 10 or fewer optionsSelect-only Combobox
Common user behavior is to search/filter for metadata instead of the entity’s labelContinuous multiselect Combobox
Need for filtering, trees, secondary actions, action confirmationSelect Trigger + Complex Dialog

Select-only

Use a Combobox as select-only in these scenarios:
  • Simple, static list: Short lists of options (e.g., countries, states, or categories) that users easily recognize and navigate without much effort.
  • No need for search or filtering functionality: Lists short enough that users can easily scan through all available choices.
  • Simple UX: Select-only experiences require less complex interactions.

Continuous multiselect

Combobox supports continuous multi-selection instead of closing after each selection. Use this pattern when users typically search for metadata to find multiple items.
  • An example would be using “designer” as a search term to filter down to all designers and selecting multiple designers from that list.

Select All

The Select All feature enables users to quickly select or deselect all available options within a multi-select Combobox. This pattern improves efficiency when working with large sets of items or when selecting most of the list is common.

Complex selection alternatives

When the Combobox is insufficient for a use case, use an alternative UI. These primarily combine the Select Trigger with the Dialog, Text Field, Listbox, and List View components, and may include others depending on need. Rather than adding additional features to the Combobox, use the Select Trigger for scenarios such as:
  • Manual applying actions
  • Needing secondary actions
  • Tabbed division of options
  • Multiple footer actions

Alternatives

Combobox vs Checkbox

Checkbox groups and the Combobox both allow multi-selection of a set of items. Checkbox groups should be used when there are only a few options. For larger options, Checkbox groups can still be used when there is space available and discovery of options is important. Comboboxes are good for 8 or more options and also when conserving space.

Combobox vs Menu

The Menu is used to perform actions on the page, and sometimes also a navigational context. The Combobox is used for choosing an option amongst a list, usually in the context of a Form.

Combobox vs Popover

When users need to select from many options, use the Combobox instead of the Popover. Avoid recreating a combobox-like or select-like interaction with a Popover.

Combobox vs Radio

Radio buttons and the Combobox both allow users to select a single option among a set. Use Radio buttons when there are between 2-7 options. Use a Combobox when there are 8 or more options available. Additionally, in a group of Radio buttons all options are equally represented whereas a Combobox highlights a single option more prominently.

Combobox vs Search Field

Use the Combobox when selecting from options defined in an overlayed list, typically in the context of a form field. Use Search Field in situations requiring a traditional search experience, for filtering lists of items on the page, in tables, with large datasets, and for results requiring additional filtering.

How to Use

Labels and help

For information around concepts like labels, placeholder, and help, refer to the Form pattern.

Sorting options

The Combobox does not prescribe how choices are sorted. Common sorting types include alphabetical, time-based, and categorical. Use a sort that matches user expectations.
Combobox how
sort
Examples of combobox sorts other than alphabetical:

Content

Content within the Combobox should clearly communicate available options and selection states. For content guidance, refer to the content guidance provided in the Form pattern.

Keyboard Interaction

Users can navigate the Combobox using standard keyboard controls.

Text field

KeyInteraction
Down ArrowIf the text field is not empty and the listbox is displayed, moves visual focus to the first suggested value.

If the text field is empty and the listbox is not displayed, opens the listbox and moves visual focus to the first option.

In both cases DOM focus remains on the text field.
Alt(Option) + Down ArrowOpens the listbox without moving focus or changing selection.
Up ArrowIf the text field is not empty and the listbox is displayed, moves visual focus to the last suggested value.

If the text field is empty, first opens the listbox if it is not already displayed and then moves visual focus to the last option.

In both cases DOM focus remains on the text field.
EnterCloses the listbox if it is displayed.
EscapeIf the listbox is displayed, closes the listbox.

If the listbox is not displayed, clears the text field.
NOTE: Even when the visual focus is on the listbox, DOM focus remains on the text field.
KeyInteraction
EnterSets the text field value to the content of the focused option.

Closes the popup.

Sets visual focus on the text field.
EscapeCloses the popup.

Sets visual focus on the text field.
Down ArrowMoves visual focus to the next option.

If visual focus is on the last option, moves visual focus to the first option.

Note: This wrapping behavior is useful when Home and End move the editing cursor as described below.
Up ArrowMoves visual focus to the previous option.

If visual focus is on the first option, moves visual focus to the last option.

Note: This wrapping behavior is useful when Home and End move the editing cursor as described below.
Right ArrowMoves visual focus to the text field and moves the editing cursor one character to the right.
Left ArrowMoves visual focus to the text field and moves the editing cursor one character to the left.
HomeMoves visual focus to the text field and places the editing cursor at the beginning of the field.
EndMoves visual focus to the text field and places the editing cursor at the end of the field.

Accessibility

Anvil provides most of the accessibility needs for Combobox out of the box, and only needs some additional considerations for library users. For more guidance on building accessible form controls, see custom component best practices.
Last modified on January 23, 2026