1. framework components
  2. listbox

Listbox

Accessible listbox for single and multi selection.

Warning

This feature is currently marked as beta and not intended for production use. It may receive breaking changes before its stable release.

  • Apple
  • Banana
  • Orange
  • Carrot
  • Broccoli
  • Spinach

Groups

Organize items into categorized groups.

  • Apple
  • Banana
  • Orange
  • Carrot
  • Broccoli
  • Spinach

Multiple

Set the multiple proper to allow selecting more than one item.

  • Apple
  • Banana
  • Orange
  • Carrot
  • Broccoli
  • Spinach

Disabled

Set the disabled prop to enable the disabled state.

  • Apple
  • Banana
  • Orange
  • Carrot
  • Broccoli
  • Spinach

Which can also be enabled per item.

  • Apple
  • Banana
  • Orange
  • Carrot
  • Broccoli
  • Spinach

Utilize the Input component to implement simple search.

  • Apple
  • Banana
  • Orange
  • Carrot
  • Broccoli
  • Spinach

Direction

Set the text direction (ltr or rtl) using the dir prop.

  • Apple
  • Banana
  • Orange
  • Carrot
  • Broccoli
  • Spinach

API Reference

Root

txt
flex flex-col gap-2
PropDefaultType
orientation"vertical""horizontal" | "vertical" | undefined

The orientation of the listbox.

collectionListCollection<any> | GridCollection<any>

The item collection

idsPartial<{ root: string; content: string; label: string; item: (id: string | number) => string; itemGroup: (id: string | number) => string; itemGroupLabel: (id: string | number) => string; }> | undefined

The ids of the elements in the listbox. Useful for composition.

disabledboolean | undefined

Whether the listbox is disabled

disallowSelectAllboolean | undefined

Whether to disallow selecting all items when `meta+a` is pressed

onHighlightChange((details: HighlightChangeDetails<any>) => void) | undefined

The callback fired when the highlighted item changes.

onValueChange((details: ValueChangeDetails<any>) => void) | undefined

The callback fired when the selected item changes.

valuestring[] | undefined

The controlled keys of the selected items

defaultValue[]string[] | undefined

The initial default value of the listbox when rendered. Use when you don't need to control the value of the listbox.

highlightedValuestring | null | undefined

The controlled key of the highlighted item

defaultHighlightedValuestring | null | undefined

The initial value of the highlighted item when opened. Use when you don't need to control the highlighted value of the listbox.

loopFocusfalseboolean | undefined

Whether to loop the keyboard navigation through the options

selectionMode"single"SelectionMode | undefined

How multiple selection should behave in the listbox. - `single`: The user can select a single item. - `multiple`: The user can select multiple items without using modifier keys. - `extended`: The user can select multiple items by using modifier keys.

scrollToIndexFn((details: ScrollToIndexDetails) => void) | undefined

Function to scroll to a specific index

selectOnHighlightboolean | undefined

Whether to select the item when it is highlighted

deselectableboolean | undefined

Whether to disallow empty selection

typeaheadboolean | undefined

Whether to enable typeahead on the listbox

onSelect((details: SelectionDetails) => void) | undefined

Function called when an item is selected

dir"ltr""ltr" | "rtl" | undefined

The document's text/writing direction.

getRootNode(() => ShadowRoot | Node | Document) | undefined

A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron.

elementSnippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

Provider

PropDefaultType
value() => ListboxApi<PropTypes, any>

elementSnippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

Context

PropDefaultType
childrenSnippet<[() => ListboxApi<PropTypes, any>]>

Label

txt
label-text
PropDefaultType
elementSnippet<[HTMLAttributes<"label">]> | undefined

Render the element yourself

Input

txt
input
PropDefaultType
elementSnippet<[HTMLAttributes<"input">]> | undefined

Render the element yourself

Content

txt
card bg-surface-50-950 border border-surface-200-800 p-2 flex flex-col gap-2
PropDefaultType
elementSnippet<[HTMLAttributes<"ul">]> | undefined

Render the element yourself

ItemGroup

PropDefaultType
elementSnippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

ItemGroupLabel

txt
text-surface-600-400 text-xs px-2 py-1
PropDefaultType
elementSnippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

Item

txt
flex justify-between items-center px-2 py-1 rounded cursor-pointer hover:preset-tonal data-selected:preset-filled data-highlighted:outline-2 data-highlighted:outline-offset-1 data-highlighted:outline-surface-950-50 data-highlighted:preset-tonal data-disabled:pointer-events-none data-disabled:opacity-50
PropDefaultType
itemany

The item to render

highlightOnHoverboolean | undefined

Whether to highlight the item on hover

elementSnippet<[HTMLAttributes<"li">]> | undefined

Render the element yourself

ItemText

PropDefaultType
elementSnippet<[HTMLAttributes<"span">]> | undefined

Render the element yourself

ItemIndicator

PropDefaultType
elementSnippet<[HTMLAttributes<"span">]> | undefined

Render the element yourself

View page on GitHub