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:

svelte
<script lang="ts">
	import { Listbox } from '@skeletonlabs/skeleton-svelte';
</script>

<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 Snippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

Provider

Prop Default Type
value () => ListboxApi<PropTypes, any>

element Snippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

Context

Prop Default Type
children Snippet<[() => ListboxApi<PropTypes, any>]>

Label

Prop Default Type
element Snippet<[HTMLAttributes<"label">]> | undefined

Render the element yourself

Input

Prop Default Type
element Snippet<[HTMLAttributes<"input">]> | undefined

Render the element yourself

Content

Prop Default Type
element Snippet<[HTMLAttributes<"ul">]> | undefined

Render the element yourself

ItemGroup

Prop Default Type
element Snippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

ItemGroupLabel

Prop Default Type
element Snippet<[HTMLAttributes<"div">]> | 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 Snippet<[HTMLAttributes<"li">]> | undefined

Render the element yourself

ItemText

Prop Default Type
element Snippet<[HTMLAttributes<"span">]> | undefined

Render the element yourself

ItemIndicator

Prop Default Type
element Snippet<[HTMLAttributes<"span">]> | undefined

Render the element yourself

View page on GitHub