Select
Enable users to choose a single option from a dropdown menu that presents a list of selectable items.
Structure
<script lang="ts">
import { Select } from "bits-ui";
</script>
<Select.Root>
<Select.Trigger>
<Select.Value />
</Select.Trigger>
<Select.Content>
<Select.Item>
<Select.ItemIndicator />
</Select.Item>
<Select.Group>
<Select.Label />
<Select.Item>
<Select.ItemIndicator />
</Select.Item>
</Select.Group>
<Select.Arrow />
</Select.Content>
</Select.Root>
<script lang="ts">
import { Select } from "bits-ui";
</script>
<Select.Root>
<Select.Trigger>
<Select.Value />
</Select.Trigger>
<Select.Content>
<Select.Item>
<Select.ItemIndicator />
</Select.Item>
<Select.Group>
<Select.Label />
<Select.Item>
<Select.ItemIndicator />
</Select.Item>
</Select.Group>
<Select.Arrow />
</Select.Content>
</Select.Root>
Component API
Root
The root select component which manages & scopes the state of the select.
Prop | Default | Type/Description |
---|---|---|
disabled | false | boolean Whether or not the select menu is disabled. |
multiple | false | boolean Whether or not the select menu allows multiple selections. |
preventScroll | true | boolean Whether or not to prevent scrolling the body when the menu is open. |
closeOnEscape | true | boolean Whether to close the select menu when the escape key is pressed. |
closeOnOutsideClick | true | boolean Whether to close the select menu when a click occurs outside of it. |
loop | false | boolean Whether or not to loop through the menu items when navigating with the keyboard. |
open | false | boolean The open state of the select menu. |
onOpenChange | - | (open: boolean) => void A callback that is fired when the select menu's open state changes. |
positioning | - | FloatingConfig The positioning configuration for the select menu. (docs coming soon) |
value | - | string The value of the currently selected item. |
onValueChange | - | (value: string | undefined) => void A callback that is fired when the select menu's value changes. |
value | - | string[] The values of the currently selected items, when |
onValueChange | - | (value: string[]) => void A callback that is fired when the select menu's values change, when |
Trigger
The button element which toggles the select menu's open state.
Prop | Default | Type/Description |
---|---|---|
asChild | false | boolean Whether to use render delegation with this component or not. |
Data Attribute | Value/Description |
---|---|
data-state | 'open' | 'closed' The dropdown menu's open state. |
data-disabled | Present when the trigger is disabled. |
Content
The content/menu element which contains the select menu's items.
Prop | Default | Type/Description |
---|---|---|
asChild | false | boolean Whether to use render delegation with this component or not. |
Item
A select item, which must be a child of the `Select.Content` component.
Prop | Default | Type/Description |
---|---|---|
asChild | false | boolean Whether to use render delegation with this component or not. |
label | - | string The label of the select item, which is displayed in the menu. |
value | - | unknown The value of the select item. |
disabled | false | boolean Whether or not the select item is disabled. This will prevent interaction/selection. |
Value
A representation of the select menu's value, which is typically displayed in the trigger.
Prop | Default | Type/Description |
---|---|---|
asChild | false | boolean Whether to use render delegation with this component or not. |
placeholder | - | string A placeholder value to display when no value is selected. |
Group
An accessible group of select menu items.
Prop | Default | Type/Description |
---|---|---|
asChild | false | boolean Whether to use render delegation with this component or not. |
Label
A label for the select menu which will be skipped when navigating with the keyboard. This must be a child of the `Select.Group` component to be accessible.
Prop | Default | Type/Description |
---|---|---|
asChild | false | boolean Whether to use render delegation with this component or not. |
Input
A hidden input element which is used to store the select menu's value, used for form submission. It receives the same value as the `Select.Value` component and can receive any props that a normal input element can receive.
Prop | Default | Type/Description |
---|---|---|
asChild | false | boolean Whether to use render delegation with this component or not. |
Separator
A visual separator for use between select items or groups.
Arrow
An optional arrow element which points to the trigger when open.
Prop | Default | Type/Description |
---|---|---|
asChild | false | boolean Whether to use render delegation with this component or not. |
size | 8 | number The height and width of the arrow in pixels. |
Data Attribute | Value/Description |
---|---|
data-arrow | Present on the arrow element. |
🚧 UNDER CONSTRUCTION 🚧