1. framework components
  2. ›
  3. listbox

Listbox

Accessible listbox for single and multi selection.

  • 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

Anatomy

Here’s an overview of how the Listbox component is structured in code:

tsx
import { Listbox } from '@skeletonlabs/skeleton-react';

export default function Anatomy() {
	return (
		<Listbox>
			<Listbox.Label />
			<Listbox.Content>
				<Listbox.Item>
					<Listbox.ItemText />
					<Listbox.ItemIndicator />
				</Listbox.Item>
			</Listbox.Content>
		</Listbox>
	);
}

API Reference

Root

PropDefaultType
orientation"vertical""horizontal" | "vertical" | undefined

The orientation of the listbox.

collection—ListCollection<any> | GridCollection<any>

The item collection

ids—Partial<{ 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.

disabled—boolean | undefined

Whether the listbox is disabled

disallowSelectAll—boolean | 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.

value—string[] | 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.

highlightedValue—string | null | undefined

The controlled key of the highlighted item

defaultHighlightedValue—string | 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

selectOnHighlight—boolean | undefined

Whether to select the item when it is highlighted

deselectable—boolean | undefined

Whether to disallow empty selection

typeahead—boolean | 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
value—ListboxApi<PropTypes, any>

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

Render the element yourself

Context

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

Label

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

Render the element yourself

Input

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

Render the element yourself

Content

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

Render the element yourself

ItemGroup

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

Render the element yourself

ItemGroupLabel

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

Render the element yourself

Item

PropDefaultType
item—any

The item to render

highlightOnHover—boolean | 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