Komponenter
Switch
Switch lar brukerne velge mellom to alternativer ved å slå noe av eller på.
HTML
Unable to parse html
const Preview = () => { return <Switch label='Switch' />; }; render(<Preview />)
Bruk
Bruk klassenavnet ds-input på <input> sammen med type="checkbox" og role="switch".
For et gyldig skjemaelement anbefaler vi å bruke <ds-field> sammen med en <label>.
CSS variabler og data-attributter
Størrelser styres med data-size og farger med data-color. Komponenten vil arve nærmeste forelder med disse satt.
Switch er ds-input med type="checkbox" så variabler og data-attributter som gjelder for input gjelder også for switch.
| Navn | Verdi |
|---|---|
| --dsc-input-padding-block | var(--ds-size-2) |
| --dsc-input-padding-inline | var(--ds-size-3) |
| --dsc-input-padding | var(--dsc-input-padding-block) var(--dsc-input-padding-inline) |
| --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) |
| --dsc-input-line-height | var(--ds-line-height-md) |
| Navn | Verdi |
|---|---|
| data-width | auto |
Høyrejustert
Ønsker du å høyrejustere switch legger du data-position="end" på <ds-field>.
HTML
Unable to parse html
const RightAligned = () => { return <Switch label='Flymodus' position='end' defaultChecked />; }; render(<RightAligned />)
Outline
data-variant="outline" legger på ekstra padding og en ramme rundt valget slik at det blir en større klikkflate.
HTML
Unable to parse html
const Outline = () => { return ( <Fieldset> <Fieldset.Legend>Aktiver varslinger</Fieldset.Legend> <Switch variant='outline' label='Driftsmeldinger' checked /> <Switch variant='outline' label='Påminnelser' /> <Switch variant='outline' label='Nyhetsoppdateringer' /> <Switch label='SMS-varsler' description='Mangler gyldig telefonnummer i profilen' variant='outline' readOnly /> </Fieldset> ); }; render(<Outline />)
Readonly
type="checkbox" er alltid :read-only, og har ikke støtte for dette på samme måte som input-typer du kan skrive i.
Dersom du setter readonly på switch sørger vi for at den oppfører seg som om den kun har lesetilgang, ved å stoppe onClick og onChange.
Brukeren vil fortsatt kunne fokusere på elementet.
HTML
Unable to parse html
const ReadOnly = () => ( <Switch label='Flymodus' description='Får ikke kontakt med flymodusenheten' readOnly defaultChecked /> ); render(<ReadOnly />)
React
I React er det enklere å bygge en switch, fordi vi har en ferdiglaget komponent som håndterer det meste av logikken og tilstandshåndteringen for oss.
Switch er en sammensatt komponent som bruker field, label, og input for å lage en switch.
- aria-label
- Description
Optional aria-label
- Type
string
- label
- Description
Switch label
- Type
ReactNode
- description
- Description
Description for field
- Type
ReactNode
- value
- Description
Value of the `input` element
- Type
string | number | readonly string[]
- position
- Description
Position of switch
- Type
"start" | "end"- Default
start
- variant
- Description
If outline, the switch will have a border.
- Type
"outline"
- aria-labelledby
- Type
string
| Name | Type | Default | Description |
|---|---|---|---|
| aria-label | string | - | Optional aria-label |
| label | ReactNode | - | Switch label |
| description | ReactNode | - | Description for field |
| value | string | number | readonly string[] | - | Value of the `input` element |
| position | "start" | "end" | start | Position of switch |
| variant | "outline" | - | If outline, the switch will have a border. |
| aria-labelledby | string | - | - |