Select
Release dato: 19.09.2023
Sist oppdatert: 07.07.2025
Select (nedtrekksliste) lar brukeren velge ett enkelt alternativ fra en liste. Den brukes nÄr du har mange valg, men ikke plass eller behov for Ä vise alle samtidig.
FormÄlet med komponenten er Ä gjÞre det enkelt Ä velge riktig alternativ uten at det tar unÞdvendig plass i et skjema eller lÞsning.
Test komponenten
Relaterte komponenter
NÄr brukeren kan velge flere alternativer
NÄr det er fÄ valg og man kun skal velge ett
NÄr brukeren kan skrive for Ä sÞke etter alternativer
Varianter
Innhold
Type | Beskrivelse |
---|---|
Standard | Label, placeholder og valgliste |
Med hjelpetekst | Kort hjelpetekst under feltet |
Med ekspanderende hjelpetekst | Hjelpetekst bak âLes merâ-knapp |
Valgfritt-tag/obligatorisk tag | Viser enten âValgfrittâ eller âMĂ„ fylles utâ ved siden av label |
Select brukes vanligvis sammen med input wrapper, under dokumentasjonen til denne finner du mer om hvordan du skriver gode labels og hjelpetekster, og om funksjonene i input wrapper.
States
Text input har seks ulike states som gir brukeren visuell tilbakemelding i ulike situasjoner:
Type | Beskrivelse |
---|---|
Default | Feltet vises i normal tilstand, klar til bruk |
Hover | NÄr brukeren beveger musepekeren over feltet |
Focus | NÄr brukeren har markert feltet og er klar til Ä skrive |
Active | NÄr brukeren skriver i feltet |
Error | NÄr feltet har en feil, og en forklarende feilmelding vises |
Disabled | NÄr feltet ikke er tilgjengelig for interaksjon |
Retningslinjer for bruk
Bruk select nÄr
- du skal presentere mange alternativ der bare ett kan velges
- du Þnsker Ä unngÄ at lange lister med alternativer blir overveldende
- du trenger Ä fÄ plass til flere alternativer pÄ liten plass
UnngÄ select nÄr
- du har fÄ valg og god plass (bruk heller radio button)
- brukeren kan velge mer enn ett alternativ (bruk heller checkbox)
- du har strukturerte alternativer med nok plass er det bedre Ă„ liste ut alle valgene
Antall og tilgjengelighet
Select fungerer best nÄr du har mange alternativer, men bare ett skal velges. Har du fÊrre enn fem valg, er radioknapper ofte bedre fordi valgene blir mer synlige og enklere Ä sammenligne.
Lange lister kan vĂŠre utfordrende for brukere med skjermleser, og det finnes kjente tilgjengelighetsproblemer med select-komponenten (les mer under âResearch about this componentâ pĂ„ gov.uk).
Vurder om du kan forenkle spÞrsmÄlet slik at det blir fÊrre alternativer. Hvis det gir mening, bruk radio button for Ä gi en bedre opplevelse.
GjĂžr slik
UnngÄ
Sortering av alternativer
Det er viktig Ä liste ut elementene dine pÄ en oversiktlig mÄte, om det sÄ er alfabetisk, tidsbasert eller en annen logisk rekkefÞlge.
GjĂžr slik
UnngÄ
Bruk select til riktig formÄl
Select passer best til ryddige, relaterte lister. Ikke bruk den til Ă„ velge innhold som egentlig krever et annet format, som adresse eller telefonnummer.
GjĂžr slik
UnngÄ
Label, hjelpetekst og plassholder
En label skal vÊre kort og presis, helst mellom ett og tre ord. UnngÄ kolon pÄ slutten og bruk verken kun store eller kun smÄ bokstaver.
Plassholder skal aldri vÊre eneste instruksjon. Den forsvinner nÄr brukeren gjÞr et valg, og er ikke alltid tilgjengelig for skjermlesere. Bruk heller label og/eller hjelpetekst for Ä gi nÞdvendig veiledning.
Les mer om innhold i skjemaelementer i input wrapper-dokumentasjonen og om god praksis for skjemaer.
Responsivitet
Select tilpasser seg automatisk tilgjengelig plass og bryter linjer der det er nÞdvendig. Test alltid pÄ ulike skjermstÞrrelser og zoom-nivÄer at det fortsatt er enkelt Ä navigere med tastatur og skjermleser.
Universell utforming
- Alle felt skal ha en tilknyttet label, ogsÄ hvis den skjules visuelt (
pkt-sr-only
). - Feilmeldinger skal vĂŠre kodet som tekst og knyttet til det spesifikke feltet.
- Select kan vĂŠre utfordrende for skjermlesere ved veldig lange lister, vurder alternativer som radio button eller combobox om det gir bedre opplevelse.
Anatomi
Element | Beskrivelse |
---|---|
Label (etikett) | Kort og tydelig ledetekst som beskriver hva brukeren skal velge |
Valgfritt-/obligatorisk | Merker feltet som valgfritt eller obligatorisk |
Hjelpetekst | Kort forklaring under label som hjelper brukeren Ä forstÄ hvordan de skal fylle ut feltet |
Ekspanderende hjelpetekst | âLes merâ-knapp som viser mer utfyllende informasjon nĂ„r brukeren trenger ekstra forklaring |
Inputfelt | Selve nedtrekkslisten der brukeren velger et alternativ |
Plassholdertekst | Midlertidig tekst i feltet som indikerer at brukeren mÄ gjÞre et valg, skal ikke erstatte label |
Implementasjon i kode
Hvordan ta komponenten i bruk?
import @oslokommune/punkt-elements/dist/pkt-select.js;
import { PktSelect } from '@oslokommune/punkt-react';
<script src="https://punkt-cdn.oslo.kommune.no/latest/elements/pkt-select.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-select");
Props and tokens
Prop | Type | Beskrivelse |
---|---|---|
label | string | Tekst som vises over feltet |
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 |
hasError | boolean | Angir om feltet har feil |
errorMessage | string | Feilmelding som vises under feltet |
helptext | string | Hjelpetekst som vises over feltet |
helptextDropdown | string | Hjelpetekst som vises i en lukket boks man kan Äpne |
helptextDropdownButton | string | Tekst som vises pÄ knappen for Ä Äpne/lukke utvidet hjelpetekst |
name | string | Navn pÄ feltet |
id | string | Id pÄ feltet |
value | string | Verdi pÄ feltet |
disabled | boolean | Angir om feltet er disabled |
inline | boolean | Angir om feltet skal vises i en linje |
fullwidth | boolean | Angir om feltet skal ta full bredde |
ariaDescribedBy | string | Spesifiserer ID-en til elementet som beskriver feltet |
ariaLabelledby | string | Spesifiserer ID-en til elementet som navigerer til feltet |
Slot (children) | Beskrivelse |
---|---|
default | Option elements for select component |