1. framework components
  2. 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

Prop Default Type
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.

loopFocus false boolean | 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

Prop Default Type
value ListboxApi<PropTypes, any>

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

Render the element yourself

Context

Prop Default Type
children (listbox: ListboxApi<PropTypes, any>) => ReactNode

Label

Prop Default Type
element ((attributes: HTMLAttributes<"label">) => Element) | undefined

Render the element yourself

Input

Prop Default Type
element ((attributes: HTMLAttributes<"input">) => Element) | undefined

Render the element yourself

Content

Prop Default Type
element ((attributes: HTMLAttributes<"ul">) => Element) | undefined

Render the element yourself

ItemGroup

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

Render the element yourself

ItemGroupLabel

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

Render the element yourself

Item

Prop Default Type
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

Prop Default Type
element ((attributes: HTMLAttributes<"span">) => Element) | undefined

Render the element yourself

ItemIndicator

Prop Default Type
element ((attributes: HTMLAttributes<"span">) => Element) | undefined

Render the element yourself

View page on GitHub