Komponenter
ToggleGroup
ToggleGroup samler relaterte alternativ. Komponenten består av ei gruppe knappar som heng saman, der berre éin knapp er mogleg å velje om gongen.
React
Unable to parse html
const Preview = () => { return ( <ToggleGroup data-toggle-group='Filter' defaultValue='innboks'> <ToggleGroup.Item value='innboks'>Innboks</ToggleGroup.Item> <ToggleGroup.Item value='utkast'>Utkast</ToggleGroup.Item> <ToggleGroup.Item value='arkiv'>Arkiv</ToggleGroup.Item> <ToggleGroup.Item value='sendt'>Sendt</ToggleGroup.Item> </ToggleGroup> ); }; render(<Preview />)
- variant
- Description
Specify which variant to use
- Type
"primary" | "secondary"- Default
primary
- value
- Description
Controlled state for `ToggleGroup` component.
- Type
string
- defaultValue
- Description
Default value.
- Type
string
- onChange
- Description
Callback with selected `ToggleGroupItem` `value`
- Type
((value: string) => void)
- name
- Description
Form element name
- Type
string
- data-toggle-group
- Description
Toggle group label for accessibility
- Type
string
| Name | Type | Default | Description |
|---|---|---|---|
| variant | "primary" | "secondary" | primary | Specify which variant to use |
| value | string | - | Controlled state for `ToggleGroup` component. |
| defaultValue | string | - | Default value. |
| onChange | ((value: string) => void) | - | Callback with selected `ToggleGroupItem` `value` |
| name | string | - | Form element name |
| data-toggle-group | string | - | Toggle group label for accessibility |
ToggleGroupItem
- value
- Description
The value of the ToggleGroupItem. Generates a random value if not set.
- Type
string
- icon
- Description
@deprecated Icon prop is deprecated
- Type
boolean
| Name | Type | Default | Description |
|---|---|---|---|
| value | string | - | The value of the ToggleGroupItem. Generates a random value if not set. |
| icon | boolean | - | @deprecated Icon prop is deprecated |
Bruk
Eksempel
Kun ikoner
Bruk Tooltip for å forklare handlingane når du brukar berre ikon.
React
Unable to parse html
const OnlyIcons = () => { return ( <ToggleGroup data-toggle-group='Tekstjustering' defaultValue='option-1'> <Tooltip content='Venstrestilt'> <ToggleGroup.Item value='option-1'> <AlignLeftIcon aria-hidden /> </ToggleGroup.Item> </Tooltip> <Tooltip content='Midtstilt'> <ToggleGroup.Item value='option-2'> <AlignCenterIcon aria-hidden /> </ToggleGroup.Item> </Tooltip> <Tooltip content='Høyrestilt'> <ToggleGroup.Item value='option-3'> <AlignRightIcon aria-hidden /> </ToggleGroup.Item> </Tooltip> </ToggleGroup> ); }; render(<OnlyIcons />)
Kontrollert
React
Unable to parse html
const Controlled = () => { const [value, setValue] = useState<string>('utkast'); return ( <> <ToggleGroup data-toggle-group='Filter' value={value} onChange={setValue}> <ToggleGroup.Item value='innboks'> <EnvelopeClosedIcon aria-hidden /> Innboks </ToggleGroup.Item> <ToggleGroup.Item value='utkast'> <DocPencilIcon aria-hidden /> Utkast </ToggleGroup.Item> <ToggleGroup.Item value='arkiv'> <ArchiveIcon aria-hidden /> Arkiv </ToggleGroup.Item> <ToggleGroup.Item value='sendt'> <PaperplaneIcon aria-hidden /> Sendt </ToggleGroup.Item> </ToggleGroup> <Divider /> <Paragraph>Du har valgt: {value}</Paragraph> <Button data-size='sm' onClick={() => setValue('arkiv')}> Velg Arkiv </Button> </> ); }; render(<Controlled />)
Secondary variant
React
Unable to parse html
const Secondary = () => { return ( <ToggleGroup data-toggle-group='Filter' defaultValue='innboks' variant='secondary' > <ToggleGroup.Item value='innboks'>Innboks</ToggleGroup.Item> <ToggleGroup.Item value='utkast'>Utkast</ToggleGroup.Item> <ToggleGroup.Item value='arkiv'>Arkiv</ToggleGroup.Item> <ToggleGroup.Item value='sendt'>Sendt</ToggleGroup.Item> </ToggleGroup> ); }; render(<Secondary />)
HTML
Bruker du @digdir/designsystemet-web kan du implementere ToggleGroup ved å bruke data-toggle-group-attributtet.
Gammel måte med <button>
Her må du håndtere tastaturnavigasjon og ARIA-roller sjølv.
Du kan lese om kva du må gjere for å implementere dette i tilgjengelighetsdokumentasjonen.
Klassenavnet ds-toggle-group blir lagt på ein <div> med role="radiogroup".
Kvar knapp i gruppa er ein <button> med klassenavn ds-button med role="radio" og aria-checked som indikerer om knappen er vald eller ikkje.
data-variant for valde knappar skal stemme med data-variant på ToggleGroup.
Resterande knappar skal ha data-variant="tertiary".
CSS variablar og data-attributter
| Navn | Verdi |
|---|---|
| --dsc-togglegroup-background | var(--ds-color-surface-default) |
| --dsc-togglegroup-border-width | var(--ds-border-width-default) |
| --dsc-togglegroup-border-style | solid |
| --dsc-togglegroup-border-color | var(--ds-color-border-default) |
| --dsc-togglegroup-color | var(--ds-color-text-default) |
| --dsc-togglegroup-spacing | 0 |
| --dsc-togglegroup-border-radius | var(--ds-border-radius-default) |
| --dsc-togglegroup-button-size | var(--ds-size-12) |
| --dsc-togglegroup-label | "" |
| --dsc-button-background--active | var(--ds-color-base-active) |
| --dsc-button-background--hover | var(--ds-color-base-hover) |
| --dsc-button-background | var(--ds-color-base-default) |
| --dsc-button-color--active | var(--ds-color-base-contrast-default) |
| --dsc-button-color--hover | var(--ds-color-base-contrast-default) |
| --dsc-button-color | var(--ds-color-base-contrast-default) |
| --dsc-button-border-color | var(--ds-color-border-default) |
| Navn | Verdi |
|---|---|
| data-icon | |
| data-variant | secondary |