Listbox
A list of options that can be selected by the user.
Structure
API Reference
The root listbox component which manages & scopes the state of the listbox.
Property | Type | Description |
---|---|---|
type required prop | enum | The type of selection to use for the listbox. Default: undefined |
value bindable prop | union | The value of the listbox. When the type is Default: undefined |
onValueChange | function | A callback that is fired when the listbox value changes. When the type is Default: undefined |
open bindable prop | boolean | The open state of the listbox menu. Default: false |
onOpenChange | function | A callback that is fired when the listbox menu's open state changes. Default: undefined |
disabled | boolean | Whether or not the listbox component is disabled. Default: false |
name | string | The name to apply to the hidden input element for form submission. If provided, a hidden input element will be rendered to submit the value of the listbox. Default: undefined |
required | boolean | Whether or not the listbox menu is required. Default: false |
scrollAlignment | enum | The alignment of the highlighted item when scrolling. Default: 'nearest' |
loop | boolean | Whether or not the listbox menu should loop through items. Default: false |
children | Snippet | The children content to render. Default: undefined |
A button which toggles the listbox's open state.
Property | Type | Description |
---|---|---|
ref bindable prop | HTMLButtonElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-state | enum | The listbox's open state. |
data-disabled | '' | Present when the listbox is disabled. |
data-listbox-trigger | '' | Present on the trigger element. |
The element which contains the listbox's items.
Property | Type | Description |
---|---|---|
side | enum | The preferred side of the anchor to render the floating element against when open. Will be reversed when collisions occur. Default: bottom |
sideOffset | number | The distance in pixels from the anchor to the floating element. Default: 0 |
align | enum | The preferred alignment of the anchor to render the floating element against when open. This may change when collisions occur. Default: start |
alignOffset | number | The distance in pixels from the anchor to the floating element. Default: 0 |
arrowPadding | number | The amount in pixels of virtual padding around the viewport edges to check for overflow which will cause a collision. Default: 0 |
avoidCollisions | boolean | When Default: true |
collisionBoundary | union | A boundary element or array of elements to check for collisions against. Default: undefined |
collisionPadding | union | The amount in pixels of virtual padding around the viewport edges to check for overflow which will cause a collision. Default: 0 |
sticky | enum | The sticky behavior on the align axis. Default: partial |
hideWhenDetached | boolean | When Default: true |
updatePositionStrategy | enum | The strategy to use when updating the position of the content. When Default: optimized |
strategy | enum | The positioning strategy to use for the floating element. When Default: fixed |
preventScroll | boolean | When Default: true |
customAnchor | union | Use an element other than the trigger to anchor the content to. If provided, the content will be anchored to the provided element instead of the trigger. Default: null |
onEscapeKeydown | function | Callback fired when an escape keydown event occurs in the floating content. You can call Default: undefined |
escapeKeydownBehavior | enum | The behavior to use when an escape keydown event occurs in the floating content. Default: close |
onInteractOutside | function | Callback fired when an outside interaction event completes, which is either a Default: undefined |
onInteractOutsideStart | function | Callback fired when an outside interaction event starts, which is either a Default: undefined |
onFocusOutside | function | Callback fired when focus leaves the dismissable layer. You can call Default: undefined |
interactOutsideBehavior | enum | The behavior to use when an interaction occurs outside of the floating content. Default: close |
onMountAutoFocus | function | Event handler called when auto-focusing the content as it is mounted. Can be prevented. Default: undefined |
onDestroyAutoFocus | function | Event handler called when auto-focusing the content as it is destroyed. Can be prevented. Default: undefined |
trapFocus | boolean | Whether or not to trap the focus within the content when open. Default: true |
preventOverflowTextSelection | boolean | When Default: true |
dir | enum | The reading direction of the app. Default: ltr |
loop | boolean | Whether or not the listbox should loop through items when reaching the end. Default: false |
forceMount | boolean | Whether or not to forcefully mount the content. This is useful if you want to use Svelte transitions or another animation library for the content. Default: false |
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-state | enum | The listbox's open state. |
data-listbox-content | '' | Present on the content element. |
CSS Variable | Description |
---|---|
--bits-listbox-content-transform-origin | The transform origin of the listbox content element. |
--bits-listbox-content-available-width | The available width of the listbox content element. |
--bits-listbox-content-available-height | The available height of the listbox content element. |
--bits-listbox-trigger-width | The width of the listbox trigger element. |
--bits-listbox-trigger-height | The height of the listbox trigger element. |
A listbox item, which must be a child of the Listbox.Content
component.
Property | Type | Description |
---|---|---|
value required prop | string | The value of the item. Default: undefined |
label | string | The label of the item, which is what the list will be filtered by using typeahead behavior. Default: undefined |
disabled | boolean | Whether or not the listbox item is disabled. This will prevent interaction/selection. Default: false |
onHighlight | function | A callback that is fired when the item is highlighted. Default: undefined |
onUnhighlight | function | A callback that is fired when the item is unhighlighted. Default: undefined |
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-value | string | The value of the listbox item. |
data-label | string | The label of the listbox item. |
data-disabled | '' | Present when the item is disabled. |
data-highlighted | '' | Present when the item is highlighted, which is either via keyboard navigation of the menu or hover. |
data-selected | '' | Present when the item is selected. |
data-listbox-item | '' | Present on the item element. |
An optional element to track the scroll position of the listbox for rendering the scroll up/down buttons.
Property | Type | Description |
---|---|---|
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-listbox-viewport | '' | Present on the viewport element. |
An optional scroll up button element to improve the scroll experience within the listbox. Should be used in conjunction with the Listbox.Viewport
component.
Property | Type | Description |
---|---|---|
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-listbox-scroll-up-button | '' | Present on the scroll up button element. |
An optional scroll down button element to improve the scroll experience within the listbox. Should be used in conjunction with the Listbox.Viewport
component.
Property | Type | Description |
---|---|---|
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-listbox-scroll-down-button | '' | Present on the scroll down button element. |
A group of related listbox items.
Property | Type | Description |
---|---|---|
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-listbox-group | '' | Present on the group element. |
A label for the parent listbox group. This is used to describe a group of related listbox items.
Property | Type | Description |
---|---|---|
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-listbox-group-label | '' | Present on the group label element. |
An optional arrow element which points to the content when open.
Property | Type | Description |
---|---|---|
width | number | The width of the arrow in pixels. Default: 8 |
height | number | The height of the arrow in pixels. Default: 8 |
ref bindable prop | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to get a reference to the element. Default: undefined |
children | Snippet | The children content to render. Default: undefined |
child | Snippet | Use render delegation to render your own element. See delegation docs for more information. Default: undefined |
Data Attribute | Value | Description |
---|---|---|
data-arrow | '' | Present on the arrow element. |