Komponenter
Radio
Radio er et alternativ brukeren kan velge. Bruk flere Radio for å vise en liste med alternativer. Brukerne kan bytte mellom alternativene, men kan kun velge ett.
React
const Preview = () => { return <Radio label='Radio' value='value' name='name' />; }; render(<Preview />)
Bruk Radio når
- brukeren skal velge ett av flere alternativer i skjemaer
Unngå Radio når
- brukeren skal kunne velge flere alternativer, bruk heller
Checkbox
Eksempel
Gruppering
Bruk ledetekst til å stille spørsmålet og legg eventuelt ved beskrivelse der det er nødvendig.
React
const Group = () => { return ( <Fieldset> <Fieldset.Legend>Hvordan ønsker du at vi kontakter deg?</Fieldset.Legend> <Fieldset.Description> Velg metoden som passer best for deg. Vi bruker dette kun til å sende viktig informasjon om saken din. </Fieldset.Description> <Radio label='E-post' description='Vi bruker e-postadressen du har oppgitt tidligere (navn@epost.no)' value='epost' name='kontakt' /> <Radio label='SMS' description='Vi bruker telefonnummeret du har oppgitt tidligere (99 99 99 99)' value='sms' name='kontakt' /> <Radio label='Brev' description='Levering kan ta 3-5 virkedager, avhengig av posttjenesten.' value='brev' name='kontakt' /> </Fieldset> ); }; render(<Group />)
Med feil
Hvis brukeren prøver å gå videre uten å svare på et obligatorisk spørsmål, skal feilmeldingen gjelde for hele gruppen med alternativer.
React
const WithError = () => { return ( <Fieldset> <Fieldset.Legend>Hvilken bydel bor du i?</Fieldset.Legend> <Fieldset.Description> Trondheim er delt inn i fire bydeler </Fieldset.Description> <Radio label='Østbyen' value='ostbyen' name='city' aria-invalid='true' /> <Radio label='Lerkendal' value='lerkendal' name='city' aria-invalid='true' /> <Radio label='Heimdal' value='heimdal' name='city' aria-invalid='true' /> <Radio label='Midtbyen' value='midtbyen' name='city' aria-invalid='true' /> <ValidationMessage data-color='danger'> Du må velge en bydel før du kan fortsette. </ValidationMessage> </Fieldset> ); }; render(<WithError />)
Retningslinjer
Vi bruker Radio når vi skal gi brukerne mulighet til å velge kun ett alternativ. Skal de kunne velge flere, bruker du Checkbox.
Vi bør ikke ha mer enn syv alternativer i en gruppe. Trenger vi å gi brukerne flere valg, bør vi heller bruke Suggestion eller Select. Hvis vi bare skal gi brukerne ett valg, kan en Switch eller Checkbox passe bedre.
Sortering
Sorter svaralternativene alfabetisk hvis det ikke er en god grunn til å gjøre noe annet. Vær forsiktig med å la det mest brukte svaralternativet stå først hvis det er et personlig spørsmål eller et verdispørsmål, som for eksempel legning eller partitilhørighet.
Plassering
Plasser helst radioknapper vertikalt. Da blir det lettere å skanne listen og lese alternativene. For brukere som må forstørre teksten, er horisontale lister utfordrende.
Hvis du har kun to alternativer med korte tekster som "Ja" og "Nei", kan du vurdere om de bør plasseres ved siden av hverandre. Ved horisontal visning må det være klart hvilken tekst som hører til hvilken knapp. Du kan bruke horisontal visning når det bare er to alternativer med korte tekster, eller i en vurderingsskala som går fra «helt uenig» til «helt enig» likert-skala (snl.no).
React
const Inline = () => { return ( <Fieldset> <Fieldset.Legend>Kontaktes på e-post?</Fieldset.Legend> <Fieldset.Description> Bekreft om du ønsker å bli kontaktet per e-post. </Fieldset.Description> <div style={{ display: 'flex', flexWrap: 'wrap', gap: 'var(--ds-size-6)' }} > <Radio name='my-inline' label='Ja' value='ja' /> <Radio name='my-inline' label='Nei' value='nei' /> </div> </Fieldset> ); }; render(<Inline />)
Unngå forhåndsvalgt alternativ
Tenk nøye over om du virkelig trenger å ha et forhåndsvalgt alternativ. Det kan ha motsatt effekt av det du ønsker, for eksempel at brukeren føler seg manipulert til å ta ett bestemt valg, eller ikke klarer å ta et bevisst valg selv.
Tekst
En gruppe med flere alternativer bør alltid ha ledetekst (<legend>) og eventuelt en beskrivelse (description) for mer forklaring. Beskrivelsen skal komme like etter ledeteksten og gi brukeren nødvendig informasjon før de tar et valg.
Gjør slik
Unngå dette
Hvis en eller flere av radioknappene skal ha beskrivelse, skal den ligge rett under svaralternativet (<label>).
Svaralternativene skal være så korte som mulig, og hvert alternativ bør ha samme språklige form.
Rediger denne siden på github.com (åpnes i ny fane)