Components
Select
Select allows users to choose an option from a list.
React
const PreviewEn = () => { return ( <Field> <Label>Select a mountain</Label> <Select defaultValue=''> <Select.Option value='' disabled> Select a mountain … </Select.Option> <Select.Option value='everest'>Mount Everest</Select.Option> <Select.Option value='aconcagua'>Aconcagua</Select.Option> <Select.Option value='denali'>Denali</Select.Option> <Select.Option value='kilimanjaro'>Kilimanjaro</Select.Option> <Select.Option value='elbrus'>Elbrus</Select.Option> <Select.Option value='vinson'>Mount Vinson</Select.Option> <Select.Option value='puncakjaya'>Puncak Jaya</Select.Option> <Select.Option value='kosciuszko'>Mount Kosciuszko</Select.Option> </Select> </Field> ); }; render(<PreviewEn />)
- readOnly
- Description
Defines if the select is readOnly
- Type
boolean- Default
false
- width
- Description
Defines the width of Select, where "auto" matches the content width.
- Type
"full" | "auto"- Default
full
| Name | Type | Default | Description |
|---|---|---|---|
| readOnly | boolean | false | Defines if the select is readOnly |
| width | "full" | "auto" | full | Defines the width of Select, where "auto" matches the content width. |
SelectOptgroup
- asChild
- Description
Change the default rendered element for the one passed as a child, merging their props and behavior.
- Type
boolean- Default
false
| Name | Type | Default | Description |
|---|---|---|---|
| asChild | boolean | false | Change the default rendered element for the one passed as a child, merging their props and behavior. |
SelectOption
- asChild
- Description
Change the default rendered element for the one passed as a child, merging their props and behavior.
- Type
boolean- Default
false
| Name | Type | Default | Description |
|---|---|---|---|
| asChild | boolean | false | Change the default rendered element for the one passed as a child, merging their props and behavior. |
Use
Example
Grouping
You can use Select.Optgroup to group options into categories, making long lists more manageable and easier to navigate.
React
const WithOptgroupEn = () => { return ( <Field> <Label>Select a park</Label> <Select> <Select.Optgroup label='Grünerløkka'> <Select.Option value='sofienbergparken'> Sofienberg Park </Select.Option> <Select.Option value='birkelunden'>Birkelunden</Select.Option> <Select.Option value='olafryesplass'>Olaf Ryes Plass</Select.Option> </Select.Optgroup> <Select.Optgroup label='City centre'> <Select.Option value='slottsparken'>The Palace Park</Select.Option> <Select.Option value='studenterlunden'>Studenterlunden</Select.Option> </Select.Optgroup> <Select.Optgroup label='Old Oslo'> <Select.Option value='botsparken'>Botsparken</Select.Option> <Select.Option value='klosterenga'>Klosterenga Park</Select.Option> </Select.Optgroup> </Select> </Field> ); }; render(<WithOptgroupEn />)
Disabled
React
const DisabledEn = () => { return ( <Field> <Label>Select a mountain</Label> <Select disabled> <Select.Option value='blank'>Select …</Select.Option> <Select.Option value='everest'>Mount Everest</Select.Option> </Select> </Field> ); }; render(<DisabledEn />)
ReadOnly
React
const ReadOnlyEn = () => { return ( <Field> <Label>Select a mountain</Label> <Select readOnly value='everest'> <Select.Option value='everest'>Mount Everest</Select.Option> </Select> </Field> ); }; render(<ReadOnlyEn />)
HTML
Append the class name ds-select to <select>.
CSS variables and data attributes
The ds-input class can be used to style Input and Textarea as well.
| Name | Value |
|---|---|
| --dsc-input-padding | var(--ds-size-2) var(--ds-size-3) |
| --dsc-input-size--toggle | var(--ds-size-6) |
| --dsc-input-size | var(--ds-size-12) |
| --dsc-input-background--readonly | var(--ds-color-neutral-surface-tinted) |
| --dsc-input-background | var(--ds-color-neutral-surface-default) |
| --dsc-input-border-color--readonly | var(--ds-color-neutral-border-subtle) |
| --dsc-input-border-color | var(--ds-color-neutral-border-default) |
| --dsc-input-border-style | solid |
| --dsc-input-border-width--toggle | max(var(--ds-border-width-default),calc(var(--ds-size-1)/2)) |
| --dsc-input-border-width | var(--ds-border-width-default) |
| --dsc-input-outline-color--hover | var(--ds-color-neutral-border-default) |
| --dsc-input-outline-color--toggle--hover | var(--dsc-input-accent-color) |
| --dsc-input-outline-width--hover | var(--ds-border-width-default) |
| --dsc-input-outline-style--hover | solid |
| --dsc-input-color--readonly | var(--ds-color-neutral-text-default) |
| --dsc-input-color | var(--ds-color-neutral-text-default) |
| --dsc-input-stroke-color | var(--ds-color-base-contrast-default) |
| --dsc-input-stroke-color--invalid | var(--ds-color-danger-base-contrast-default) |
| --dsc-input-stroke-width | 0.05em |
| --dsc-input-accent-color | var(--ds-color-base-default) |
| --dsc-input-accent-color--invalid | var(--ds-color-danger-text-subtle) |
| Name | Value |
|---|---|
| data-width | auto |