1. framework components
  2. listbox

Listbox

Accessible listbox for single and multi selection.

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

Groups

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

Multiple

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

Disabled

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

Disabled Item

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

Direction

  • 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.

element((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

Provider

PropDefaultType
valueListboxApi<PropTypes, any>

element((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

Context

PropDefaultType
children(listbox: ListboxApi<PropTypes, any>) => ReactNode

Label

txt
label-text
PropDefaultType
element((attributes: HTMLAttributes<"label">) => Element) | undefined

Render the element yourself

Input

txt
input
PropDefaultType
element((attributes: HTMLAttributes<"input">) => Element) | 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
element((attributes: HTMLAttributes<"ul">) => Element) | undefined

Render the element yourself

ItemGroup

PropDefaultType
element((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

ItemGroupLabel

txt
text-surface-600-400 text-xs px-2 py-1
PropDefaultType
element((attributes: HTMLAttributes<"div">) => Element) | 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

element((attributes: HTMLAttributes<"li">) => Element) | undefined

Render the element yourself

ItemText

PropDefaultType
element((attributes: HTMLAttributes<"span">) => Element) | undefined

Render the element yourself

ItemIndicator

PropDefaultType
element((attributes: HTMLAttributes<"span">) => Element) | undefined

Render the element yourself

View page on GitHub