Intro
DatePicker lar bruker velge en eller flere tilgjengelige dager, samt perioder. Basert på hvordan du ønsker bruker skal kunne velge dato, kan man bruke medhørende inputfelt eller statisk kalender.
Eksempler
Vi anbefaler å bruke useDatepicker-hook hvis man har et input-felt
Før du velger å bruke range, vurder om to separate datepickere i single mode er bedre. Range fungerer best for korte perioder innenfor en måned.
Bruk onValidate-callback for å håndtere validering.
Prop 'allowTwoDigitYear' legger til støtte for 'yy'-format. Tilgjengelig year-range vil være 80 år bakover og 19 år framover. I 2024 tilsvarer det 1944-2043.
Mode
DatePicker kommer med 3 forskjellige metoder for å innhente datoer.
Read-only
Readonly-attributtet spesifiserer at et inputfelt i et skjema er skrivebeskyttet. Et skrivebeskyttet felt kan ikke endres, men brukere kan tabbe til det, markere det og kopiere teksten fra det. Til forskjell fra disabled-felter vil innholdet i readonly-felter inkluderes når et skjema sendes inn.
Retningslinjer
Ved valg av datoer langt frem eller tilbake i tid, burde man bruke dropdownCaption
-prop med fromDate/toDate. Det lar bruker raskere finne fram til den datoen de ønsker.
Vurder om Datepicker er den rette løsningen for deg
Datepicker lar bruker lett lete seg frem til datoer innenfor en tidsramme, men støter på problemer når tidsrommet den skal dekke trekker seg over lengre perioder. Valg av år lengre frem/tilbake i tid må gjøres via en select
, noe som skaper problemer når man ender opp med 50+ valg.
Datepicker er et komplekst mønster og ofte vil det letteste for bruker være å manuelt skrive inn en dato i et TextField. Gov.uk har gjort en del research på valg av dato og velger selv å bare tilby et input
uten interaktiv datovelger.
Relevante lenker
Bruk av fromDate/toDate
Når bruker åpner Datepicker vil alltid default vist måned være den samme som today
(new Date()/prop). Hvis denne måneden faller utenfor fromDate/toDate-range vil det første bruker se bare være ikke valgbare datoer. Basert på hvilken informasjon man ønsker må man selv sette defaultMonth
-prop til der det gir mest mening for bruker.
Returformat
Komponenten returnerer datoer i Date-format. Du må selv ta deg av konvertering til ønsket format og da ev. tidssoner ved bruk av f.eks. ISO-format. I selve komponenten bruker vi data-fns for parsing.
Tilgjengelighet
For best mulig tilgjengelighet anbefaler vi å ta i bruk DatePicker.Input sammen med useDatepicker eller useDateRange-hook.
Props
DatePicker
children?
- Type:
ReactNode
- Description:
className?
- Type:
string
- Description:
wrapperClassName?
- Type:
string
- Description:
locale?
- Type:
"nb" | "nn" | "en"
- Default:"nb" (norsk bokmål)
- Description:
fromDate?
- Type:
Date
- Description:
toDate?
- Type:
Date
- Description:
dropdownCaption?
- Type:
boolean
- Default:false
- Description:
disabled?
- Type:
Matcher[]
- Description:
disableWeekends?
- Type:
boolean
- Default:false
- Description:
showWeekNumber?
- Type:
boolean
- Default:false
- Description:
open?
- Type:
boolean
- Description:
onClose?
- Type:
(() => void)
- Description:
onOpenToggle?
- Type:
(() => void)
- Description:
strategy?
- Type:
"absolute" | "fixed"
- Default:See Popover
- Description:
month?
- Type:
Date
- Description:
onMonthChange?
- Type:
MonthChangeEventHandler
- Description:
today?
- Type:
Date
- Description:
onDayClick?
- Type:
DayClickEventHandler
- Description:
mode?
- Type:
"multiple" | "single" | "range"
onSelect?
- Type:
((val?: Date) => void) | ((val?: Date[]) => void) | ((val?: DateRange | undefined) => void) | undefined
selected?
- Type:
Date | Date[] | DateRange
defaultSelected?
- Type:
Date | Date[] | DateRange
onWeekNumberClick?
- Type:
WeekNumberClickEventHandler
- Description:
min?
- Type:
number
max?
- Type:
number
DatePicker.Input
label
- Type:
ReactNode
- Description:
hideLabel?
- Type:
boolean
- Default:false
- Description:
size?
- Type:
"medium" | "small"
- Default:"medium"
- Description:
error?
- Type:
ReactNode
- Description:
errorId?
- Type:
string
- Description:
disabled?
- Type:
boolean
- Description:
description?
- Type:
ReactNode
- Description:
id?
- Type:
string
- Description:
readOnly?
- Type:
boolean
- Description:
className?
- Type:
string
ref?
- Type:
LegacyRef<HTMLInputElement>
- Description:
useDatepicker
defaultSelected?
- Type:
Date
- Description:
defaultMonth?
- Type:
Date
- Description:
required?
- Type:
boolean
- Description:
onDateChange?
- Type:
((val?: Date) => void)
- Description:
inputFormat?
- Type:
string
- Default:"dd.MM.yyyy"
- Description:
onValidate?
- Type:
((val: DateValidationT) => void)
- Description:
allowTwoDigitYear?
- Type:
boolean
- Default:true
- Description:
locale?
- Type:
"nb" | "nn" | "en"
- Default:"nb" (norsk bokmål)
- Description:
fromDate?
- Type:
Date
- Description:
toDate?
- Type:
Date
- Description:
today?
- Type:
Date
- Description:
disabled?
- Type:
Matcher[]
- Description:
disableWeekends?
- Type:
boolean
- Default:false
- Description:
useRangeDatepicker
defaultSelected?
- Type:
DateRange
- Description:
onRangeChange?
- Type:
((val?: DateRange) => void)
- Description:
onValidate?
- Type:
((val: RangeValidationT) => void)
- Description:
locale?
- Type:
"nb" | "nn" | "en"
- Default:"nb" (norsk bokmål)
- Description:
fromDate?
- Type:
Date
- Description:
toDate?
- Type:
Date
- Description:
today?
- Type:
Date
- Description:
disabled?
- Type:
Matcher[]
- Description:
disableWeekends?
- Type:
boolean
- Default:false
- Description:
defaultMonth?
- Type:
Date
- Description:
required?
- Type:
boolean
- Description:
inputFormat?
- Type:
string
- Default:"dd.MM.yyyy"
- Description:
allowTwoDigitYear?
- Type:
boolean
- Default:true
- Description: