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
Lar brukeren velge en dato eller et datointervall.
Enkelt tekstfelt uten tidsvelger eller visuell stĂžtte.
Egner seg til valg mellom fÄ, faste klokkeslett.
Varianter
Time picker finnes i tre varianter. Alle stĂžtter de samme etikett-, hjelpetekst- og feilmeldingsfunksjonene.
| Variant | Beskrivelse |
|---|---|
| Standard | Tekstfelt 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 |
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
UnngÄ
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:
Grunnleggende prinsipper for tilgjengelige skjemafelt.
Anatomi
| Element | Beskrivelse |
|---|---|
| 1. Etikett (label) | Tekst som forteller hva brukeren skal gjĂžre |
| 2. Hjelpetekst | Tilleggsinformasjon, for eksempel tillatt tidsrom (valgfritt) |
| 3. Inputfelt | Feltet der brukeren kan skrive inn tidspunkt manuelt, eller hvor valgt klokkeslett vises |
| 4. Klokkeknapp | Ă pner tidsvelgeren |
| 5. Tidsvelger | Nedtrekksmeny med kolonner for timer og minutter |
| 6. Valgt time/minutt | Tidspunktet brukeren har valgt, markert i tidsvelgeren og vist i inputfeltet |
Implementasjon i kode
Hvordan ta komponenten i bruk?
import @oslokommune/punkt-elements/dist/pkt-timepicker.js; import { PktTimepicker } from '@oslokommune/punkt-react'; <script src="https://punkt-cdn.oslo.kommune.no/16/elements/pkt-timepicker.js" type="module"></script> 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
| Prop | Type | Beskrivelse |
|---|---|---|
id | string | Unik identifikasjon for tidsvelgeren |
name | string | Navn som brukes i skjema ved innsending |
value | string | NÄvÊrende verdi i formatet HH:MM |
min | string | Tidligste tillatte verdi i formatet HH:MM |
max | string | Seneste tillatte verdi i formatet HH:MM |
step | number | Steglengde i sekunder. MÄ gÄ opp i et helt antall minutter eller timer. Standard er 60 (1 minutt). |
disabled | boolean | Indikerer at tidsvelgeren er deaktivert |
required | boolean | Indikerer at feltet mÄ fylles ut |
| boolean | Skjuler klokke-knappen og viser kun tekstfeltene for timer og minutter |
| boolean | Bruker steg-piler (forrige/neste) pÄ hver side av feltene istedenfor en klokke-knapp som Äpner en dropdown |
label | string | Tekst som vises over feltet |
helptext | string | Hjelpetekst som vises over feltet |
helptextDropdown | string | Hjelpetekst som vises i en lukket boks man kan Äpne |
helptextDropdownButton | string | Knappetekst for utvidet hjelpetekst |
hasError | boolean | Indikerer at feltet har en feil |
errorMessage | string | Feilmelding som vises under feltet ved feiltilstand |
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 |
inline | boolean | Indikerer at feltet skal flyte sammen med sidens innhold |
useWrapper | boolean | Indikerer at feltet skal ha synlig label og hjelpetekst |
| string | Spesifiserer ID-en til elementet som beskriver feltet |
| Event | Beskrivelse |
|---|---|
change | Returnerer valgt tid som streng i formatet HH:MM via e.target.value |
value-change | Returnerer valgt tid som streng i formatet HH:MM i event.detail |
toggleHelpText | Returnerer event.detail { isOpen: true } eller event.detail { isOpen: false } nÄr hjelpeteksten Äpnes eller lukkes |
onChange | UtlÞses nÄr en tid velges. e.target.value inneholder valgt tid i formatet HH:MM. |