Skip to main content
Elastic UI
Elastic UI
ComponentsPatternsContentData visualization
EUI ChangelogGitHubFigma
  • Guidelines
    • Getting started
    • Accessibility
    • Writing
    • Testing
  • Theming
    • Theme provider
    • Color mode
    • High contrast mode
    • Borders
    • Breakpoints
    • Colors
    • Sizing
    • Typography
  • Templates
    • Page template
    • Sitewide search
  • Layout
    • Accordion
    • Bottom bar
    • Flex
    • Flyout
    • Header
    • Horizontal rule
    • Modal
    • Page components
    • Page header
    • Panel
    • Popover
    • Resizable container
    • Spacer
  • Navigation
    • Breadcrumbs
    • Buttons
    • Collapsible nav
    • Context menu
    • Facet
    • Key pad menu
    • Link
    • Pagination
    • Side nav
    • Steps
    • Tabs
    • Tree view
  • Display
    • Aspect ratio
    • Avatar
    • Badge
    • Callout
    • Card
    • Comment list
    • Description list
    • Drag and drop
    • Empty prompt
    • Health
    • Icons
    • Image
    • List group
    • Loading
    • Progress
    • Skeleton
    • Stat
    • Text
    • Timeline
    • Title
    • Toast
    • Tooltip
    • Tour
  • Forms
    • Form controls
    • Form layouts
    • Form validation
    • Text controls
    • Numeric controls
    • Selection controls
      • Guidelines
      • Checkboxes and radios
      • Basic select
      • Super select
      • Combo box
      • Selectable
    • Search and filter controls
    • Date and time controls
    • Other controls
  • Tabular content
    • Tables
    • Data grid
  • Editors & Syntax
    • Code
    • Markdown
  • Utilities
    • Accessibility
    • Auto sizer
    • Beacon
    • Color palettes
    • Copy
    • CSS utility classes
    • Delay
    • Error boundary
    • Focus trap
    • Highlight and mark
    • HTML ID generator
    • I18n
    • Inner text
    • Mutation observer
    • Outside click detector
    • Overlay mask
    • Portal
    • Pretty duration
    • Provider
    • Resize observer
    • Scroll
    • Text diff
    • Text truncation
    • Window events
  • EUI
  • Forms
  • Selection controls

Selection controls

EUI currently offers over 4 ways to select an option from a list (6 including checkboxes and radios).

While it can get overwhelming figuring out which component to use, this page should serve as a handy guide to help you make that decision depending on what features you need.

Which selection component should I use?

Single selection

  • When you have a small set of options (<7) and all options are equally important in terms of visibility, use EuiRadioGroup.
  • When you have a small set of options (<12) and only the current selected option has UI importance, reach for EuiSelect first when possible, over other more complex selection components.
    • Native form controls tend to have better cross-browser and cross-device affordances (particularly for mobile devices), and are more familiar to end users due to their ubiquity across the internet.
  • When you have a small set of options (<12) and if you need to customize how the options are rendered and selected, use EuiSuperSelect.
    • We recommend reaching for EuiSuperSelect only if custom option display is absolutely necessary (e.g. for multi-line option text/descriptions), as EuiSelect is natively more accessible.
  • Large sets of options (>12) should use a selection component that supports searching/filtering options. This requires the use of one of the more advanced multiselect components with singleSelection set.

Multiple selections

  • When you have a small set of options (<7), and all options are equally important in terms of visibility, use EuiCheckboxGroup.
  • In general, we recommend using EuiSelectable for most multi-selection purposes. It renders a searchable, vertically-oriented list with icons next to the option representing selection state.
    • EuiSelectable can optionally be rendered with a search box for filtering through many options, or as just a list for fewer options.
    • EuiSelectable is by far our most accessible and flexible selection component (although customization may require extra development). It can be used within popovers and flyouts, or as a standalone list.
    • If you need the ability to exclude options, EuiSelectable is the only component that offers that functionality.
  • In general, for multi-select scenarios, we recommend using EuiComboBox over EuiSelectable primarily when selections should be immediately visible and unselected options should not. Selections are rendered as a horizontally-oriented list of pills.
    • EuiComboBox also allows users to search through a list of dropdown options. This functionality is core to the component and cannot be removed, unlike EuiSelectable.
    • If you need the ability to dynamically add custom user-generated input outside of the available options, EuiComboBox is the only component that offers that functionality.

Feature comparison chart

Below is a handy reference for comparing the selection components.

Feature EuiSelect  EuiSuperSelect  EuiSelectable  EuiComboBox 
Select a single option✅✅✅✅
Select multiple options❌❌✅✅
Accepts custom values from user input❌❌❌✅
Option exclusion❌❌✅❌
Customizable option display❌✅✅✅
Customizable loading/error messages❌❌✅❌
Searchable❌ ❌✅✅
disabled state✅ ✅ ✅ ✅
readOnly state❌✅❌❌
Built in utility function for clearing user input❌❌✅ ✅
Supports virtualization❌❌✅✅
Edit this page

Previous
Range sliders
Next
Guidelines
  • Which selection component should I use?
    • Single selection
    • Multiple selections
  • Feature comparison chart
EUI is dual-licensed under Elastic License 2.0 and Server Side Public License, v 1 | Crafted with ❤ by Elastic