Checkbox
Release dato: 04.10.2023
Sist oppdatert: 07.07.2025
Checkbox brukes for Ă„ gi brukeren mulighet til Ă„ krysse av ett eller flere alternativer i en gruppe med valg. Du kan ogsĂ„ bruke en enkeltstĂ„ende checkbox for Ă„ be om bekreftelse, for eksempel âJeg godtar vilkĂ„reneâ fĂžr innsending av et skjema.
Test komponenten
Relaterte komponenter
NÄr du mÄ velge kun ett alternativ blant flere.
NÄr du skal skru noe av eller pÄ, som en innstilling.
NÄr du skal velge fra en lengre liste med mange alternativer.
Varianter
Variant | Bruk |
---|---|
Standard | NÄr checkbox stÄr alene eller i en enkel liste |
Tile (med ramme) | NÄr du vil gruppere flere checkboxer visuelt. Gir tydelig avgrensning og mer luft |
Variant | Bruk |
---|---|
EnkeltstÄende | NÄr checkbox stÄr alene eller i en enkel liste |
Gruppe | Gruppér checkboxene nÄr du tilbyr flere valg innenfor samme gruppe eller kategori |
Retningslinjer for bruk
Bruk checkbox nÄr
- man har en gruppe med valg innenfor samme kontekst
- valgene ikke utelukker hverandre
- brukeren skal kunne velge ett eller flere alternativer
- en bruker skal ha muligheten til Ă„ skru et alternativ pĂ„/av (for eksempel âakseptere vilkĂ„râ for en tjeneste, eller lignende funksjonalitet)
UnngÄ checkbox nÄr
- brukeren kun kan velge ett alternativ (bruk radiobutton i stedet)
- det er fÄ alternativer (vurder heller switch eller radiobutton)
- det er mer enn 10 alternativer Ă„ velge mellom (vurder Ă„ bruke select)
- det er en binÊr innstilling som kan beskrives som pÄ/av (bruk switch)
Skriv tydelige etiketter
SĂžrg for at hver checkbox har en klar og konkret etikett. Etiketten skal beskrive hva valget innebĂŠrer, ikke bare âJaâ eller âNeiâ.
GjĂžr slik
UnngÄ
Forskjellen pÄ radiobutton og checkbox
Ikke bruk checkboxer dersom brukeren kun kan velge ett valg (gÄ heller for radiobuttons)
GjĂžr slik
UnngÄ
Opt in, ikke opt out
Checkbox skal alltid brukes som opt-in. Brukeren mÄ selv aktivt krysse av for Ä gi samtykke (opt in), ikke mÄtte melde seg av (opt out).
Du skal aldri forhÄndsvelge en checkbox for samtykke, for eksempel til Ä motta nyhetsbrev eller godta vilkÄr. Dette er et krav i GDPR.
GjĂžr slik
UnngÄ
Plassering av checkbox
Plasser checkboxene vertikalt nÄr det er mulig. Det gjÞr det enklere for brukeren Ä se hvilket valg som hÞrer til hvilken tekst.
Horisontal plassering bĂžr bare brukes hvis det er to til tre valg, og hvis det gir en mer kompakt lĂžsning.
Har du lange etiketter som kan gÄ over flere linjer, skal checkboxene alltid plasseres vertikalt for best lesbarhet.
Hvis du har mange valg, bÞr du liste dem i én kolonne. Da blir det lettere for brukeren Ä skanne valgene.
Responsivitet
PĂ„ mobil skal alltid checkboxer ligge vertikalt for optimal lesbarhet.
Husk Ă„ teste:
- at teksten brytes riktig pÄ smÄ skjermer
- at grupperte checkboxer (tile) fortsatt er oversiktlige
- at fokusring og klikkeflater fungerer godt pÄ touch
Universell utforming
Skriv en klar, kortfattet og unik label
Alle checkboxer krever en klar, kortfattet og unik label (etikett). For checkboxer uten label, for eksempel de som brukes i en tabell, kreves det fortsatt en skjult etikett for skjermlesere og andre hjelpeteknologier. WCAG 2.1: 1.3.1 Info and Relationships, 2.4.6 Headings and Labels.
UnngÄ standardvalg
ForhÄndsvalgte valg anses som en villedende praksis for alle brukere. Implementer en standard uvalgt tilstand.
UnngÄ deaktiverte (disabled) checkboxer
Vi anbefaler Ä unngÄ disabled pÄ skjemaelementer som radio, checkbox og tekstfelt, fordi det kan skape problemer for tilgjengelighet.
Brukere forstÄr ofte ikke hvorfor et element er deaktivert. Derfor anbefaler vi Ä heller vise en feilmelding eller en hjelpetekst, enn Ä bruke disabled. Hvis du mÄ deaktivere en checkbox, mÄ det vÊre tydelig hvorfor, og hva som mÄ til for Ä aktivere den igjen.
Tastaturinteraksjoner
Alle tastaturinteraksjoner og ARIA-etiketter mÄ oppfylle tilgjengelighetskriterier.
Bruk fieldset og legend
Bruk fieldset
og legend
(som inputwrapper tilbyr) ved grupper av avmerkingsbokser.
Les mer om universell utforming av checkbox:
Hvordan du lager universelt utformede webkomponenter og widgeter med ARIA-roller.
Anatomi
Element | Beskrivelse |
---|---|
1. Checkbox | Selve checkboxen |
2. Label | Tekst som beskriver valget |
3. Hjelpetekst | Forklaring til valget (valgfritt) |
Implementasjon i kode
Hvordan ta komponenten i bruk?
import @oslokommune/punkt-elements/dist/pkt-checkbox.js;
import { PktCheckbox } from '@oslokommune/punkt-react';
<script src="https://punkt-cdn.oslo.kommune.no/latest/elements/pkt-checkbox.js" type="module"></script>
Testing
Elements: Dersom du skal skrive tester med JSDOM eller liknende er det viktig at du lar komponenten bli rendret ferdig fĂžr du tester den. Dette kan gjĂžres ved Ă„ kjĂžre denne kodelinjen fĂžr testene kjĂžres:
await window.customElements.whenDefined("pkt-checkbox");
Om dere bruker data-testid
for Ă„ hente ut elementer i
testene, vil attributten videresendes til selve skjemaelementet. Dersom
dere heller Ăžnsker Ă„ bruke data-testid
pÄ elementet
<pkt-checkbox>
, mÄ dere sette attributten
skipForwardTestid
pÄ elementet.
Dersom dere skal teste tilstanden pÄ checked
bĂžr dere teste
pÄ den visuelle tilstanden med en query mot :checked
istedenfor Ă„ teste property .checked
. Grunnen til dette har
vi ikke helt klart Ă„ komme til bunns i, da det fungerer helt fint med
riktig property i nettleseren. Det kan tenkes at dette kan lĂžses ved Ă„
vente et Ăžyeblikk, om det er helt nĂždvendig Ă„ teste property istedenfor
synlig tilstand.
I
punkt-testing-utils
har vi skrevet testen slik: element.querySelectorAll(':checked').length
.
Props og tokens
Prop | Type | Beskrivelse |
---|---|---|
label | string | Tekst (label) |
checkHelptext | string | Hjelpetekst |
name | string | Navn for innsending |
value | string | Verdi |
id | string | ID |
defaultChecked | boolean | ForhÄndsvalgt |
checked | boolean | Huket av |
hasTile | boolean | Boks (tile) |
disabled | boolean | Deaktivert |
hasError | boolean | Feil |
isSwitch | boolean | Switch |
labelPosition | right left | Posisjon |
hideLabel | boolean | Skjul tekst/label |
requiredTag | Boolean | Viser en merking som indikerer at feltet er pÄkrevd |
requiredText | string | Tekst som vises i pÄkrevd-merkingen |
optionalTag | boolean | Viser en merking som indikerer at feltet er valgfritt |
optionalText | string | Tekst som vises i valgfritt-merkingen |
tagText | string | Tekst som vises i en tag ved siden av label |
Event | Beskrivelse |
---|---|
change | Returnerer checkboxens verdi nÄr den endres |