Gå til innholdet

Radio

Ren CSS på et vanlig <input type="radio">. Knappene i en gruppe kobles sammen av name, og det er den koblingen som gjør at bare én kan være valgt, og at piltastene flytter mellom dem.

Kan brukeren velge flere, bruk Checkbox. Er alternativene mange, er Select kortere på skjermen.

import "@fristil/designsystem/tokens.css"
import "@fristil/designsystem/radio.css"
import "@fristil/designsystem/fieldset.css"
import "@fristil/designsystem/label.css"

Gruppen hører alltid hjemme i en Fieldset. Uten den leses bare alternativet opp, ikke spørsmålet det svarer på.

data-stateBrukes til
(utelatt)Normaltilstand
invalidValideringen har feilet
successValget er bekreftet gyldig. Bruk sparsomt.

Feiler valideringen, sett tilstanden på alle knappene i gruppen. Det er gruppen som er ugyldig, ikke én av knappene.

import { fs } from "@fristil/designsystem"
const knapper = document.querySelectorAll<HTMLInputElement>("[name='svar']")
function marker(ugyldig: boolean) {
for (const knapp of knapper) {
fs.setAttributes(knapp, fs.radio({ state: ugyldig ? "invalid" : "default" }))
}
}

name setter du selv, siden bare du vet hva gruppen heter. fs.radio.row gir klassen på raden rundt. Se Typesikker bruk.

KlasseHva det er
.fs-radioSelve knappen
.fs-radio-rowRaden som holder knappen og teksten ved siden av hverandre
VariabelStandard
--fs-radio-sizevar(--size-5)

Prikken er en gradient tegnet i --semantic-interactive-contrast, så den følger temaet uten et eget bilde. Se Tilpasning.

  • Alle knappene i gruppen må dele name. Uten det blir hver knapp sin egen gruppe, og brukeren kan velge flere.
  • Piltastene flytter mellom knappene og velger samtidig. Tab hopper ut av hele gruppen. Det er nettleserens egen oppførsel, og den skal ikke overstyres.
  • Ikke forhåndsvelg et alternativ når valget har en konsekvens. Da blir standardverdien et svar brukeren aldri tok stilling til.
  • Har du bare to alternativer som er hverandres motsetning, vurder Checkbox eller Switch i stedet.