Select
shadcn/uiDisplays a list of options for the user to pick from—triggered by a button.
Select
Installation
Props
<SelectContent />
Name | Type | |
|---|---|---|
side | string(default: bottom) | |
sideOffset | number(default: 4) | |
align | string(default: center) | |
alignOffset | number(default: 0) | |
alignItemWithTrigger | boolean(default: false) | |
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |
<SelectGroup />
Name | Type | |
|---|---|---|
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
alignItemWithTrigger | boolean | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |
<SelectItem />
Name | Type | |
|---|---|---|
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
alignItemWithTrigger | boolean | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |
<SelectLabel />
Name | Type | |
|---|---|---|
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
alignItemWithTrigger | boolean | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |
<SelectScrollDownButton />
Name | Type | |
|---|---|---|
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
alignItemWithTrigger | boolean | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |
<SelectScrollUpButton />
Name | Type | |
|---|---|---|
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
alignItemWithTrigger | boolean | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |
<SelectSeparator />
Name | Type | |
|---|---|---|
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
alignItemWithTrigger | boolean | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |
<SelectTrigger />
Name | Type | |
|---|---|---|
variant | string(default: raised) | |
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
alignItemWithTrigger | boolean | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |
<SelectValue />
Name | Type | |
|---|---|---|
inputRef | React.Ref<HTMLInputElement> | |
highlightItemOnHover | boolean | |
defaultOpen | boolean | |
onOpenChange | (...args) => void | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
modal | boolean | |
items | Array<{label, value}> | Record<string, ReactNode> | |
itemToStringLabel | ((itemValue: Value) => string) | |
itemToStringValue | ((itemValue: Value) => string) | |
isItemEqualToValue | ((itemValue: Value, value: Value) => boolean) | |
onValueChange | (...args) => void | |
nativeButton | boolean | |
render | React.ReactElement | |
container | HTMLElement | RefObject<HTMLElement> | |
alignItemWithTrigger | boolean | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
label | string | |
keepMounted | boolean |