Gå til innholdet

Toggle Group

Gruppen er radioknapper i forkledning. Hvert alternativ er en <label> med en <input type="radio"> inni, krympet bort visuelt. Da beholder du piltastene, FormData og at skjermleseren sier «2 av 3», uten at noe av det må skrives på nytt.

import "@fristil/designsystem/tokens.css"
import "@fristil/designsystem/toggle-group.css"
import "@fristil/designsystem/sr-only.css"

<legend> er påkrevd selv når den er skjult. Uten den vet ikke den som hører siden hva de tre alternativene velger mellom.

SituasjonKomponent
Ett valg blant tre til fem korte alternativerToggle Group
Ett valg blant mange, eller lange alternativerRadio i en Fieldset
Flere valg samtidigCheckbox
Av og på for én innstillingSwitch
Handlinger, som «fet, kursiv, understreket»Knapper med aria-pressed
import { fs } from "@fristil/designsystem"
const gruppe = document.querySelector<HTMLFieldSetElement>("#visning")
fs.setAttributes(gruppe, fs.toggleGroup())

fs.toggleGroup.option gir klassen på hvert alternativ. Selve valget leser du som vanlig:

gruppe.addEventListener("change", (hendelse) => {
const valgt = (hendelse.target as HTMLInputElement).value
})
KlasseHva det er
.fs-toggle-groupGruppen
.fs-toggle-group__optionLedeteksten rundt hvert alternativ
VariabelStandard
--fs-toggle-group-radiusvar(--size-1)
--fs-toggle-group-heightvar(--size-10)
--fs-toggle-group-padding0 var(--size-4)

Den valgte flaten settes med :has(input:checked), altså fra tilstanden på den ekte radioknappen. Det er ingen egen klasse å holde i synk.

Se Tilpasning for hvordan variablene og laget virker.

  • Radioknappen er krympet bort, ikke fjernet. display: none ville tatt den ut av tastaturrekkefølgen, og da virker ikke piltastene.
  • Piltastene flytter mellom alternativene og velger samtidig. Tab hopper ut av hele gruppen. Slik virker radioknapper, og det skal ikke overstyres.
  • Alternativene må være korte. Blir teksten lang, er det egentlig en liste med radioknapper.
  • Ikke la et valg utløse noe som ikke kan angres. Brukeren treffer alle alternativene på veien når hen blar med piltastene.