Combobox multi select
The guideline content on this page is synced with Figma and can be used as a source of truth.
Open in Figma
The combobox integrates a text field with a popover menu, enabling users to filter and select one or more options from a list or provide a custom value. It supports multi-selection, allowing for the collection of several distinct answers within a single component.
Anatomy
- Label
- Mandatory (optional)
- Container
- Helper text
- Dropdown icon
- Tag
- Info icon (optional)
States
- Enabled
- Hover
- Focused
- Error
- Error focused
- Disabled
- No results
- Tag selected
- Selected
Change this to a short description
Change this to a short description
Change this to a short description
Change this to a short description
- No results found
Change this to a short description
Change this to a short description
- List item
- List item
- List item
- List item
- List item
- List item
Change this to a short description
Multi-select
Multi-select comboboxes handle multiple inputs. Every value selected from the menu immediately converts into an input chip within the field.
Change this to a short description
Label
A label is mandatory for all text fields and should describe the field's purpose. Labels are included by default. If another element (such as a section title) already serves as a clear description, the default label can be visually hidden.
Change this to a short description
Helper text
Helper text communicates requirements and disclaimers below the field. An error message will always replace the helper text when a field validation error is triggered.
Change this to a short description
Required/optional fields
We use an asterisk to indicate a field is required.
The convention of using a red asterisk (*) in a label to denote a required field is a long-standing and widely adopted practice in User Experience (UX) and form design.
Change this to a short description
Change this to a short description
No search results
When a user types a value that does not match any option in the list, the combobox will display zero results. The popover menu will either close or show a "No results found" message, clearly indicating that the entered text did not successfully filter the predetermined dataset.
- No results found
Change this to a short description
Accessibility
Keyboard interaction
All buttons should be reachable via Tab and Shift+Tab keys.
Change this to a short description
Specs
Developer reference
The following sections describe supported functionality that is not part of the Figma design specification.
The functionality for this component, i.e. the script, is not provided. The documentation has a demo functionality that you can draw inspiration from in your work. For the full interactive combobox (single selection, header/footer sections, combogrid), see the Combobox page.
Demo enabled on this page! The enhanced keyboard-focus behaviour is active on this page — the .keyboard-focus class is added to each .form-group while a control is keyboard-focused, and removed on blur, click or typing. Try pressing Tab to navigate through the form fields. Read more in the Forms accessibility guidelines.
Multiple selection
For multi-selection, selected options are shown as tags (chips) in the text box. After a selection, the combobox remains open so the user can continue selecting.
Use aria-multiselectable="true" on the listbox element. Selected items are hidden from the dropdown list automatically.
Info icon
Wrap the <label> and an info icon in .label-with-info to place the icon beside the label with the 8 px gap from the Figma anatomy. On hover or keyboard focus, the tooltip opens upwards (data-bs-placement="top") to reveal the supporting text.
Keep the icon outside the <label for> so activating it does not focus the combobox input, and mirror the tooltip text into a visually-hidden element that the input references via aria-describedby so assistive-tech users hear the same help text without depending on the tooltip.
Tooltip behaviour relies on Bootstrap's tooltip plugin (with Popper for positioning). See the Tooltips page for setup details.