Time picker

Time picker (tidsvelger) lar brukeren velge et klokkeslett. Brukeren kan enten skrive timer og minutter direkte i feltene, eller velge fra en nedtrekksmeny med tilgjengelige klokkeslett.

Time picker passer godt i skjemaer der klokkeslettet har betydning, for eksempel ved valg av mÞtetidspunkt, Äpningstider eller starttidspunkt for en aktivitet.

Test komponenten

Relaterte komponenter

Varianter

Time picker finnes i tre varianter. Alle stĂžtter de samme etikett-, hjelpetekst- og feilmeldingsfunksjonene.

VariantBeskrivelse
StandardTekstfelt for timer og minutter med en klokke-knapp som Äpner en rullegardinmeny
Skjul velger (hide-picker)Bare tekstfeltene vises, uten klokke-knappen
Steg-piler (step-arrows)Pil-knapper pÄ hver side lar brukeren bla frem og tilbake i tid
Eksempler pÄ layout-variantene av timepickerEksempler pÄ layout-variantene av timepickerEksempler pÄ layout-variantene av timepicker

Retningslinjer for bruk

Bruk time picker nÄr

  • brukeren skal oppgi et klokkeslett som en del av et skjema
  • klokkeslettet har betydning for videre steg i prosessen
  • du vil tilby bĂ„de fritekstinput og visuell velger
  • brukeren trenger Ă„ velge innenfor et begrenset tidsrom (med min/maks)

UnngÄ time picker nÄr

  • brukeren kun trenger Ă„ velge mellom noen fĂ„ faste tidspunkter – da kan select eller radiobutton egne seg bedre
  • klokkeslettet ikke er av betydning for oppgaven

Bruk label og hjelpetekst for Ă„ forklare forventningen

Label og hjelpetekst bĂžr beskrive hva brukeren skal gjĂžre og hvilke begrensninger som gjelder, for eksempel tidsrom eller steglengde.

GjĂžr slik

Bruk en forklarende label og hjelpetekst som hjelper brukeren Ă„ fylle inn riktig tidspunkt

UnngÄ

UnngÄ uklare etiketter som «Tid» uten Ä forklare hva som forventes eller hvilke regler som gjelder

Universell utforming

Label skal alltid vĂŠre synlig

Alle skjemaelementer mÄ ha en synlig label. Den skal beskrive hva brukeren skal gjÞre, for eksempel «Velg mÞtetidspunkt».

Dersom etiketten skjules visuelt, skal den likevel vĂŠre tilgjengelig for skjermlesere.

Klokkeslett mÄ kunne velges med tastatur

Time picker skal fungere uten mus. Brukeren skal kunne:

  • Flytte mellom timer- og minutter-feltet med piltaster og Tab
  • Endre verdi med piltastene opp/ned i hvert felt
  • Åpne nedtrekksmenyen med klokke-knappen og navigere med piltaster
  • Velge et klokkeslett med Enter
  • Lukke nedtrekksmenyen med Esc

Skjermlesere kunngjĂžr klokkeslett og label

Timer- og minutter-feltene har role="spinbutton" og aria-label som inkluderer komponentens etikett. Dette sikrer at skjermleseren kunngjĂžr for eksempel «15, Timer, MĂžtetidspunkt» – tilsvarende opplesing som native <input type="time">.

Feil knyttes til feltet

Feilmeldinger mÄ knyttes til inputfeltet med aria-describedby. Bruk komponentens errorMessage-prop og hasError-tilstand for Ä sikre at feilen leses opp korrekt.

Les mer om universell utforming av time picker:

Anatomi

ElementBeskrivelse
1. Etikett (label)Tekst som forteller hva brukeren skal gjĂžre
2. HjelpetekstTilleggsinformasjon, for eksempel tillatt tidsrom (valgfritt)
3. InputfeltFeltet der brukeren kan skrive inn tidspunkt manuelt, eller hvor valgt klokkeslett vises
4. KlokkeknappÅpner tidsvelgeren
5. TidsvelgerNedtrekksmeny med kolonner for timer og minutter
6. Valgt time/minuttTidspunktet brukeren har valgt, markert i tidsvelgeren og vist i inputfeltet
Timepicker anatomi.

Implementasjon i kode

Hvordan ta komponenten i bruk?

Bruk i skjema

Time picker fungerer som et vanlig skjemafelt og sender verdien i formatet HH:MM ved innsending.

<pkt-timepicker
  label="MĂžtetidspunkt"
  id="meeting-time"
  name="meeting-time"
  required
></pkt-timepicker>

Begrensninger med min, maks og step

Bruk min og max for Ä begrense hvilke klokkeslett brukeren kan velge. step angir steglengde i sekunder og mÄ gÄ opp i et helt antall minutter (f.eks. 300 for 5-minutters intervaller).

<pkt-timepicker
  label="Arbeidstid"
  id="work-time"
  name="work-time"
  min="08:00"
  max="16:00"
  step="300"
></pkt-timepicker>

HendelseshÄndtering

Time picker sender ut en change-hendelse nÄr brukeren har valgt et tidspunkt. Verdien er tilgjengelig via e.target.value som en streng i formatet HH:MM.

For React brukes onChange-propen direkte. En value-change-hendelse (onValueChange i React) er ogsÄ tilgjengelig med event.detail som inneholder valgt tid.

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-timepicker");

Props

PropTypeBeskrivelse
idstringUnik identifikasjon for tidsvelgeren
namestringNavn som brukes i skjema ved innsending
valuestringNÄvÊrende verdi i formatet HH:MM
minstringTidligste tillatte verdi i formatet HH:MM
maxstringSeneste tillatte verdi i formatet HH:MM
stepnumberSteglengde i sekunder. MÄ gÄ opp i et helt antall minutter eller timer. Standard er 60 (1 minutt).
disabledbooleanIndikerer at tidsvelgeren er deaktivert
requiredbooleanIndikerer at feltet mÄ fylles ut
hidePicker
hide-picker
booleanSkjuler klokke-knappen og viser kun tekstfeltene for timer og minutter
stepArrows
step-arrows
booleanBruker steg-piler (forrige/neste) pÄ hver side av feltene istedenfor en klokke-knapp som Äpner en dropdown
labelstringTekst som vises over feltet
helptextstringHjelpetekst som vises over feltet
helptextDropdownstringHjelpetekst som vises i en lukket boks man kan Äpne
helptextDropdownButtonstringKnappetekst for utvidet hjelpetekst
hasErrorbooleanIndikerer at feltet har en feil
errorMessagestringFeilmelding som vises under feltet ved feiltilstand
requiredTagbooleanViser en merking som indikerer at feltet er pÄkrevd
requiredTextstringTekst som vises i pÄkrevd-merkingen
optionalTagbooleanViser en merking som indikerer at feltet er valgfritt
optionalTextstringTekst som vises i valgfritt-merkingen
tagTextstringTekst som vises i en tag ved siden av label
inlinebooleanIndikerer at feltet skal flyte sammen med sidens innhold
useWrapperbooleanIndikerer at feltet skal ha synlig label og hjelpetekst
ariaDescribedby
aria-describedby
stringSpesifiserer ID-en til elementet som beskriver feltet
EventBeskrivelse
changeReturnerer valgt tid som streng i formatet HH:MM via e.target.value
value-changeReturnerer valgt tid som streng i formatet HH:MM i event.detail
toggleHelpTextReturnerer event.detail { isOpen: true } eller event.detail { isOpen: false } nÄr hjelpeteksten Äpnes eller lukkes
onChangeUtlÞses nÄr en tid velges. e.target.value inneholder valgt tid i formatet HH:MM.