@entur/datepicker 4.0.0-alpha.0 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.cjs.development.js","sources":["../src/DatePicker/DatePickerHeader.tsx","../src/DatePicker/DatePickerInput.tsx","../src/DatePicker/DatePicker.tsx","../src/shared/FieldSegment.tsx","../src/shared/utils.ts","../src/DatePicker/beta/DateField.tsx","../src/shared/CalendarButton.tsx","../src/DatePicker/beta/CalendarCell.tsx","../src/DatePicker/beta/CalendarGrid.tsx","../src/DatePicker/beta/Calendar.tsx","../src/DatePicker/beta/DatePicker.tsx","../src/NativeDatePicker.tsx","../src/TimePicker/TimePickerArrowButton.tsx","../src/TimePicker/TimePicker.tsx","../src/TimePicker/NativeTimePicker.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport { ReactDatePickerCustomHeaderProps } from 'react-datepicker';\n\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { Heading3 } from '@entur/typography';\nimport { IconButton } from '@entur/button';\n\ntype DatePickerHeaderProps = {\n nextMonthAriaLabel: string;\n previousMonthAriaLabel: string;\n locale: globalThis.Locale;\n} & Partial<ReactDatePickerCustomHeaderProps>;\n\nexport const DatePickerHeader = ({\n date,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n nextMonthAriaLabel,\n previousMonthAriaLabel,\n locale,\n}: DatePickerHeaderProps) => {\n const currentMonthIndex = date?.getMonth() ?? 0;\n return (\n <div className=\"eds-datepicker__calender__header\">\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--left\"\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled}\n aria-label={`${previousMonthAriaLabel} (${getMonthName(\n currentMonthIndex - 1,\n locale,\n )})`}\n >\n <LeftArrowIcon />\n </IconButton>\n\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {getMonthName(currentMonthIndex, locale)}\n </Heading3>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {date?.getFullYear()}\n </Heading3>\n\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--right\"\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled}\n aria-label={`${nextMonthAriaLabel} (${getMonthName(\n currentMonthIndex + 1,\n locale,\n )})`}\n >\n <RightArrowIcon />\n </IconButton>\n </div>\n );\n};\n\nfunction getMonthName(monthIndex: number, locale: globalThis.Locale) {\n const year = new Date().getFullYear();\n const formatter = new Intl.DateTimeFormat(locale.code, {\n month: 'long',\n });\n return formatter.format(new Date(year, monthIndex));\n}\n","import React from 'react';\n\nimport { TextField, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\nimport { CalendarIcon } from '@entur/icons';\nimport { mergeRefs } from '@entur/utils';\n\ntype DatePickerInputProps = {\n style?: React.CSSProperties;\n label: string;\n inputPlaceholder: string;\n prepend?: React.ReactNode;\n feedback?: string;\n variant?: VariantType;\n disabled?: boolean;\n disableLabelAnimation?: boolean;\n calendarButtonTooltipOpen: string;\n calendarButtonTooltipClose: string;\n hideCalendarButton?: boolean;\n inputRef: React.RefObject<HTMLInputElement>;\n calendarButtonId: string;\n forwardRef: React.ForwardedRef<HTMLInputElement>;\n toggleCalendarGUI: () => void;\n setFocusToCalendarGUI: () => void;\n setShouldFocusOnCalendarButtonAfterSelect: React.Dispatch<\n React.SetStateAction<boolean>\n >;\n onKeyDownInput: (event: KeyboardEvent) => any;\n onBlurInput: (event: FocusEvent) => any;\n calendarGUIIsOpen: () => boolean | undefined;\n onClick?: React.MouseEventHandler<HTMLInputElement>; // react-datepicker's onClick prop\n onFocus: undefined; // To prevent open on focus\n selectedDate: Date | null; // Necessary to update component on state change\n placeholder?: null; // override react-datepickers placeholder prop\n 'aria-labelledby'?: string;\n};\n\nexport const DatePickerInput = React.forwardRef<\n HTMLInputElement,\n DatePickerInputProps\n>(\n (\n {\n style,\n label,\n inputPlaceholder,\n prepend,\n feedback,\n variant,\n disabled,\n calendarButtonTooltipOpen,\n calendarButtonTooltipClose,\n hideCalendarButton,\n disableLabelAnimation,\n inputRef,\n calendarButtonId,\n forwardRef,\n toggleCalendarGUI,\n onKeyDownInput,\n onBlurInput,\n selectedDate,\n setFocusToCalendarGUI,\n setShouldFocusOnCalendarButtonAfterSelect,\n calendarGUIIsOpen,\n placeholder, // eslint-disable-line\n onClick,\n 'aria-labelledby': ariaLabelledBy, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...rest // forwarded props from react-datepicker\n },\n ref,\n ) => {\n React.useEffect(() => {\n inputRef.current?.addEventListener('keydown', handleOnKeyDown);\n inputRef.current?.addEventListener('blur', handleOnBlur);\n inputRef.current?.addEventListener('focus', handleOnFocus);\n return () => {\n inputRef.current?.removeEventListener('keydown', handleOnKeyDown);\n inputRef.current?.removeEventListener('blur', handleOnBlur);\n inputRef.current?.removeEventListener('focus', handleOnFocus);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputRef, selectedDate]);\n\n function handleOnKeyDown(this: HTMLElement, event: KeyboardEvent) {\n onKeyDownInput(event);\n }\n function handleOnBlur(this: HTMLElement, event: FocusEvent) {\n onBlurInput(event);\n }\n const handleOnFocus = () =>\n requestAnimationFrame(() => inputRef.current?.select());\n\n const handleOnClickInputField = (\n event: React.MouseEvent<HTMLInputElement, MouseEvent>,\n ) => {\n setShouldFocusOnCalendarButtonAfterSelect(false);\n onClick && onClick(event);\n };\n\n const handleOnClickCalendarButton = () => {\n toggleCalendarGUI();\n setFocusToCalendarGUI();\n setShouldFocusOnCalendarButtonAfterSelect(true);\n };\n\n const calendarButtonAriaLabel = () => {\n const buttonStateText = calendarGUIIsOpen()\n ? calendarButtonTooltipClose\n : calendarButtonTooltipOpen;\n const currentSelectionText = selectedDate\n ? `${inputRef.current?.value} valgt`\n : 'Ingen dato valgt';\n return `${buttonStateText}, ${currentSelectionText}`;\n };\n\n return (\n <TextField\n style={style}\n label={label}\n placeholder={inputPlaceholder}\n prepend={prepend}\n feedback={feedback}\n variant={variant}\n disableLabelAnimation={disableLabelAnimation}\n ref={mergeRefs(ref, inputRef, forwardRef)}\n onClick={handleOnClickInputField}\n ariaAlertOnFeedback\n append={\n !hideCalendarButton && (\n <Tooltip\n placement=\"top\"\n content={\n calendarGUIIsOpen()\n ? calendarButtonTooltipClose\n : calendarButtonTooltipOpen\n }\n disableHoverListener={disabled}\n disableFocusListener={disabled}\n >\n <IconButton\n id={calendarButtonId}\n type=\"button\"\n onClick={handleOnClickCalendarButton}\n tabIndex={calendarGUIIsOpen() ? -1 : 0}\n aria-label={calendarButtonAriaLabel()}\n >\n <CalendarIcon />\n </IconButton>\n </Tooltip>\n )\n }\n {...rest}\n />\n );\n },\n);\n","import React, { useRef, useState } from 'react';\nimport ReactDatePicker, {\n default as ReactDatepicker,\n ReactDatePickerProps,\n registerLocale,\n} from 'react-datepicker';\nimport { parse, isSameDay, Locale } from 'date-fns';\nimport { nb } from 'date-fns/locale';\nimport classNames from 'classnames';\n\nimport { VariantType } from '@entur/form';\nimport { useRandomId } from '@entur/utils';\n\nimport { DatePickerHeader } from './DatePickerHeader';\nimport { DatePickerInput } from './DatePickerInput';\n\nimport './DatePicker.scss';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nregisterLocale('nb', nb);\n\nexport type DatePickerProps = {\n /** Hva som er den valgte datoen */\n selectedDate: Date | null;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event> | undefined,\n ) => void;\n /**\n * Kalles når en tast trykkes i inputfeltet\n */\n onKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Datoformater som skal støttes. Første i listen er formatet alt input omgjøres til.\n * Format-valg tilgjengelig her: https://date-fns.org/v2.28.0/docs/format\n * OBS: Noen kombinasjoner av datoformater kan gi rar og uønsket oppførsel,\n * test nøye ved endring\n * @default \"['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy']\"\n */\n dateFormats?: string[];\n /**\n * Locale fra date-fns som brukes av Datepicker-en\n * @default nb\n */\n locale?: Locale;\n /** Placeholder om ingen dato er valgt\n * @default \"dd.mm.yyyy\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over DatePicker */\n label: string;\n /**\n * Varselmelding, som vil komme under DatePicker\n */\n feedback?: string;\n /** Valideringsvariant\n */\n variant?: VariantType;\n /** Varselmelding for når datoen er på feil format\n * @default \"Ugyldig dato\"\n */\n validationFeedback?: string;\n /** Valideringsvariant for melding om feil datoformat\n * @default \"error\"\n */\n validationVariant?: VariantType;\n style?: React.CSSProperties;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n /**\n * Tekst som vises når kalender ikke er åpen på «Åpne/Lukk kalender»-knappen ved hover\n */\n calendarButtonTooltipOpen?: string;\n /**\n * Tekst som vises når kalender er åpen på «Åpne/Lukk kalender»-knappen ved hover\n */\n calendarButtonTooltipClose?: string;\n /** Skjuler knapp for åpning av kalender\n * @default false\n */\n hideCalendarButton?: boolean;\n /** Skjuler tilbakemeldingsteksten ved feil dato-input\n * @default false\n */\n hideValidation?: boolean;\n /** Skjuler kalender-GUI-et\n * @default false\n */\n hideCalendar?: boolean;\n /** Viser kun kalender-popover-en\n * @default false\n */\n inline?: boolean;\n /** Skjermlesertekst for forrige måned-knapen\n * @default \"Forrige måned\"\n */\n previousMonthAriaLabel?: string;\n /** Skjermlesertekst for neste måned-knapen\n * @default \"Neste måned\"\n */\n nextMonthAriaLabel?: string;\n /**\n * Skjermlesertekst som leses før dato i kalenderGUI-et\n * @default \"Velg\"\n */\n chooseDayAriaLabelPrefix?: string;\n // For testing\n 'data-cy'?: any;\n} & Omit<\n ReactDatePickerProps,\n | 'selected'\n | 'customInput'\n | 'onChangeRaw'\n | 'dateFormat'\n | 'locale'\n | 'previousMonthAriaLabel'\n | 'nextMonthAriaLabel'\n>;\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n style,\n className,\n selectedDate,\n label,\n placeholder = 'dd.mm.yyyy',\n onChange,\n onKeyDown = () => null,\n dateFormats = ['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy'],\n minDate,\n maxDate,\n inline = false,\n disabled,\n prepend,\n feedback = '',\n variant,\n validationFeedback = 'Ugyldig dato',\n validationVariant = 'error',\n disableLabelAnimation = false,\n calendarButtonTooltipOpen = 'Åpne\\xa0kalender',\n calendarButtonTooltipClose = 'Lukk\\xa0kalender',\n hideCalendarButton = false,\n hideCalendar = false,\n hideValidation = false,\n weekLabel = 'uke',\n chooseDayAriaLabelPrefix = 'Velg',\n previousMonthAriaLabel = 'Forrige måned',\n nextMonthAriaLabel = 'Neste måned',\n locale = nb,\n open,\n ...rest\n },\n ref,\n ) => {\n const datepickerId = useRandomId('eds-datepicker');\n\n const datepickerRef = useRef<ReactDatePicker>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const calendarButton = document.getElementById(datepickerId + '-button');\n\n const [showValidation, setShowValidation] = useState(false);\n const [\n shouldFocusOnCalendarButtonAfterSelect,\n setShouldFocusOnCalendarButtonAfterSelect,\n ] = useState(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(() => validateInput(), [selectedDate]);\n\n const handleOnChange = (\n date: Date | null,\n event: React.SyntheticEvent<any, Event> | undefined,\n ): void => {\n if (shouldFocusOnCalendarButtonAfterSelect && !hideCalendarButton) {\n calendarButton?.focus();\n setShouldFocusOnCalendarButtonAfterSelect(false);\n } else inputRef.current?.focus();\n\n onChange(date, event);\n };\n\n const handleOnKeyDown = (event: KeyboardEvent) => {\n setShowValidation(false);\n\n if (event.key === 'Enter') {\n if (!datePickerGUIIsOpen()) {\n // onBlurInput will validate if calendar is open\n validateInput();\n forceUpdateInputFormat();\n }\n focusAndSelectInputField();\n } else if (event.key === 'Tab' && datePickerGUIIsOpen()) {\n forceUpdateInputFormat();\n } else if (event.key === 'Escape') {\n forceUpdateInputFormat();\n focusAndSelectInputField();\n if (datePickerGUIIsOpen()) toggleCalendarGUI();\n }\n onKeyDown(event);\n };\n\n const handleOnClickOutside = () =>\n setShouldFocusOnCalendarButtonAfterSelect(false);\n\n const handleOnBlurInput = () => {\n if (datePickerGUIIsOpen()) return;\n validateInput();\n forceUpdateInputFormat();\n };\n\n const validateInput = () => {\n setShowValidation(false);\n const inputValue = inputRef.current?.value;\n if (!inputValue) return;\n\n const inputValueParsedWithAllDateFormats = dateFormats.map(format =>\n parse(inputValue, format, new Date(), {\n locale: locale,\n }),\n );\n\n const parsedDateFromInputIsTheSameAsSelectedDate =\n selectedDate &&\n inputValueParsedWithAllDateFormats.some(dateFormat =>\n isSameDay(dateFormat, selectedDate),\n );\n\n if (parsedDateFromInputIsTheSameAsSelectedDate) {\n // valid date inputted\n setShowValidation(false);\n } else {\n // invalid date inputted\n setShowValidation(true);\n }\n };\n\n const getFeedbackAndVariant = (): {\n feedback: string;\n variant: VariantType | undefined;\n } => {\n if (feedback) return { feedback, variant };\n if (!hideValidation && showValidation)\n return { feedback: validationFeedback, variant: validationVariant };\n return { feedback: '', variant: undefined };\n };\n\n const focusAndSelectInputField = () =>\n requestAnimationFrame(() => inputRef.current?.select());\n\n const forceUpdateInputFormat = () =>\n datepickerRef.current?.setState({ inputValue: null });\n\n const toggleCalendarGUI = () =>\n datepickerRef.current?.setOpen(!datePickerGUIIsOpen());\n\n const setFocusToCalendarGUI = () => {\n if (inline || hideCalendar || datePickerGUIIsOpen()) return;\n // 1 frame delay to allow calendar to spawn\n requestAnimationFrame(() => {\n const datepickerGUIWrapper =\n // @ts-expect-error .calendar does actually exist in ReactDatePicker ref\n datepickerRef.current?.calendar.componentNode;\n\n const dateToSetFocusTo = selectedDate\n ? (datepickerGUIWrapper.querySelector(\n '.eds-datepicker__calender__day[tabindex=\"0\"]',\n ) as HTMLElement | null)\n : (datepickerGUIWrapper.querySelector(\n '.eds-datepicker__calender__day[aria-current=\"date\"]',\n ) as HTMLElement | null);\n if (dateToSetFocusTo !== null) {\n datepickerRef.current?.setBlur();\n dateToSetFocusTo.focus({ preventScroll: true });\n }\n });\n setShouldFocusOnCalendarButtonAfterSelect(true);\n setShowValidation(false);\n };\n\n const datePickerGUIIsOpen = () => datepickerRef.current?.isCalendarOpen();\n\n return (\n <>\n <ReactDatepicker\n selected={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormats}\n showWeekNumbers\n weekLabel={weekLabel}\n onChange={handleOnChange}\n onClickOutside={handleOnClickOutside}\n id={datepickerId}\n ariaLabelledBy={datepickerId}\n showPopperArrow={false}\n locale={locale}\n inline={inline}\n disabled={disabled}\n preventOpenOnFocus={true}\n chooseDayAriaLabelPrefix={chooseDayAriaLabelPrefix}\n open={hideCalendar ? false : open}\n ref={datepickerRef}\n calendarClassName=\"eds-datepicker__calender\"\n dayClassName={() => 'eds-datepicker__calender__day'}\n weekDayClassName={() => 'eds-datepicker__calender__day-name'}\n className={classNames(className, 'eds-datepicker__input')}\n highlightDates={[\n { 'eds-datepicker__calender__day--today': [new Date()] },\n {\n 'eds-datepicker__calender__day--selected': selectedDate\n ? [selectedDate]\n : [],\n },\n ]}\n renderCustomHeader={({\n date,\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n }) => (\n <DatePickerHeader\n date={date}\n changeYear={changeYear}\n changeMonth={changeMonth}\n increaseMonth={increaseMonth}\n decreaseMonth={decreaseMonth}\n prevMonthButtonDisabled={prevMonthButtonDisabled}\n nextMonthButtonDisabled={nextMonthButtonDisabled}\n previousMonthAriaLabel={previousMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n locale={locale}\n />\n )}\n customInput={\n <DatePickerInput\n style={style}\n label={label}\n inputPlaceholder={placeholder}\n calendarButtonTooltipOpen={calendarButtonTooltipOpen}\n calendarButtonTooltipClose={calendarButtonTooltipClose}\n prepend={prepend}\n feedback={getFeedbackAndVariant().feedback}\n variant={getFeedbackAndVariant().variant}\n inputRef={inputRef}\n calendarButtonId={datepickerId + '-button'}\n forwardRef={ref}\n onKeyDownInput={handleOnKeyDown}\n onBlurInput={handleOnBlurInput}\n onFocus={undefined}\n toggleCalendarGUI={toggleCalendarGUI}\n setFocusToCalendarGUI={setFocusToCalendarGUI}\n setShouldFocusOnCalendarButtonAfterSelect={\n setShouldFocusOnCalendarButtonAfterSelect\n }\n calendarGUIIsOpen={datePickerGUIIsOpen}\n disableLabelAnimation={disableLabelAnimation}\n hideCalendarButton={hideCalendarButton}\n selectedDate={selectedDate}\n />\n }\n {...rest}\n />\n </>\n );\n },\n);\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { useDateSegment } from '@react-aria/datepicker';\nimport { DateSegment, DateFieldState } from '@react-stately/datepicker';\n\nimport './FieldSegment.scss';\n\ntype TimeSegmentProps = {\n segment: DateSegment;\n state: DateFieldState;\n};\n\nexport const FieldSegment = ({ segment, state }: TimeSegmentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n const is12HourFormatted = state.segments.some(\n segment => segment.text === 'AM' || segment.text === 'PM',\n );\n\n const segmentDisplayText = () => {\n if (is12HourFormatted) return segment.text;\n // if number add '0' padding to start when one digit\n if (segment.text.match(/\\d+/)) return segment.text.padStart(2, '0');\n return segment.text;\n };\n\n return (\n <div\n {...segmentProps}\n ref={ref}\n className={classNames('eds-date-and-time-field__segment', {\n 'eds-date-and-time-field__segment--placeholder': segment.isPlaceholder,\n 'eds-date-and-time-field__segment--dot-separator': segment.text === '.',\n })}\n tabIndex={state.isDisabled ? -1 : segmentProps.tabIndex}\n >\n {segmentDisplayText()}\n </div>\n );\n};\n","import {\n ZonedDateTime,\n CalendarDateTime,\n Time,\n parseAbsolute,\n} from '@internationalized/date';\nimport { TimeValue } from '@react-types/datepicker';\nimport { Calendar, GregorianCalendar } from '@internationalized/date';\n\n/**\n * Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken\n * @param {Date} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt\n * @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake\n * @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset\n * @param {number} offset UTC-offset i millisekunder, må brukes med en tidssone. Ved å legge på en offset lager du en variant av en tidssone. Det betyr at tidspunktet ikke endres (time, minutt, sekund uendret), men tidssonen, med tilhørende offset, tidspunktet er i endres.\n * @returns {Time | CalendarDateTime | ZonedDateTime} et av TimeValue-objektene med verdier fra date\n */\nexport const nativeDateToTimeValue = (\n date: Date,\n noDateOnlyTime = false,\n timeZone?: string,\n offset?: number,\n) => {\n if (timeZone) {\n if (offset) {\n return new ZonedDateTime(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n timeZone,\n offset,\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n );\n }\n return parseAbsolute(date.toISOString(), timeZone);\n }\n if (noDateOnlyTime)\n return new Time(date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n return new CalendarDateTime(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n );\n};\n\n/**\n * Tar inn et av TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt\n * @param {TimeValue} time Et tidspunkt på TimeValue-formatet som ønsket konvertert til et JS Date-objekt\n * @param {string} timeZoneForCalendarDateTime Tidssonen time er i. Fungerer kun med typen er CalendarDateTime\n * @returns {Date} et Date-objekt med verdier fra time\n */\n// This function uses a lot of @ts-expect-error to make it work with all TimeValue types. Sorry ...\nexport const timeValueToNativeDate = (\n time: TimeValue,\n timeZoneForCalendarDateTime?: string,\n): Date => {\n // @ts-expect-error .day does not exist on Time-object\n if (!time.day) {\n // type is Time\n const date = new Date();\n date.setHours(time.hour);\n date.setMinutes(time.minute);\n date.setSeconds(time.second);\n return date;\n }\n\n // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime\n if (!time.timeZone) {\n // type is CalendarDateTime\n if (timeZoneForCalendarDateTime)\n // @ts-expect-error .toDate(timeZone) does not exist in type Time\n return time.toDate(timeZoneForCalendarDateTime);\n\n return new Date(\n // @ts-expect-error not in type Time\n time.year,\n // @ts-expect-error not in type Time\n time.month - 1,\n // @ts-expect-error not in type Time\n time.day,\n time.hour,\n time.minute,\n time.second,\n );\n }\n\n // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime\n return time.toDate();\n};\n\nexport const createCalendar = (identifier = 'gregory'): Calendar => {\n switch (identifier) {\n case 'gregory':\n return new GregorianCalendar();\n default:\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n};\n\nexport const ariaLabelIfNorwegian = (\n norwegianAriaLabel: string,\n locale: string,\n propsCollection: any,\n) => {\n if (locale !== 'no-NO') return propsCollection['aria-label'];\n return norwegianAriaLabel;\n};\n","import React, { useRef } from 'react';\n\nimport { useDateFieldState } from '@react-stately/datepicker';\nimport { useDateField } from '@react-aria/datepicker';\nimport { useLocale } from '@react-aria/i18n';\nimport classNames from 'classnames';\n\nimport type {\n SpectrumDateFieldProps,\n DateValue,\n} from '@react-types/datepicker';\n\nimport { BaseFormControl, VariantType } from '@entur/form';\nimport { mergeRefs, useRandomId } from '@entur/utils';\n\nimport { FieldSegment } from '../../shared/FieldSegment';\nimport { createCalendar } from '../../shared/utils';\n\nimport './DateField.scss';\n\nexport type DateFieldProps = {\n /** Den valgte tiden. Tid i '@internationalized/date'-pakkens format */\n selectedDate: DateValue | null;\n /** Kalles når tiden endres. Tid i '@internationalized/date'-pakkens format */\n onChange: (value: DateValue) => void;\n /** Label til TimePicker */\n label: string;\n /** BCP47-språkkoden til locale-en du ønsker å bruke.\n * @default Brukerenhetens selvvalgte locale\n */\n locale?: string;\n /** Viser den gjeldende tidssonen hvis en er valgt\n * @default false\n */\n showTimeZone?: boolean;\n showTime?: boolean;\n /** Varselmelding, som vil komme under TimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n labelTooltip?: React.ReactNode;\n disabled?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n style?: React.CSSProperties;\n [key: string]: any;\n} & Omit<\n SpectrumDateFieldProps<DateValue>,\n 'onChange' | 'label' | 'hideTimeZone' | 'placeholder'\n>;\n\nexport const DateField = React.forwardRef<HTMLDivElement, DateFieldProps>(\n (\n {\n selectedDate: value,\n label,\n showTimeZone,\n showTime,\n granularity = 'day',\n disabled,\n variant,\n feedback,\n labelTooltip,\n style,\n className,\n labelProps: parentLabelProps,\n append,\n ...rest\n },\n ref,\n ) => {\n const { locale } = useLocale();\n\n const state = useDateFieldState({\n ...rest,\n locale,\n createCalendar: createCalendar,\n value: value === null ? undefined : value,\n hideTimeZone: !showTimeZone,\n granularity: showTime ? 'minute' : granularity,\n });\n\n const dateFieldRef = useRef(null);\n const { labelProps, fieldProps } = useDateField(\n { ...rest, label: label, isDisabled: disabled || rest.isDisabled },\n state,\n dateFieldRef,\n );\n\n const id = useRandomId('datefield');\n\n return (\n <BaseFormControl\n style={style}\n className={classNames('eds-datefield', className)}\n labelId={id}\n ref={mergeRefs(dateFieldRef, ref)}\n disabled={state.isDisabled}\n disableLabelAnimation\n label={label}\n labelTooltip={labelTooltip}\n labelProps={parentLabelProps ?? labelProps}\n {...fieldProps}\n variant={variant}\n feedback={feedback}\n append={append}\n >\n {state.segments.map((segment, i) => (\n <FieldSegment segment={segment} state={state} key={i} />\n ))}\n </BaseFormControl>\n );\n },\n);\n","import React, { useRef } from 'react';\n\nimport { useButton } from '@react-aria/button';\n\nimport { IconButton } from '@entur/button';\n\ntype CalendarButtonProps = {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n [key: string]: any;\n};\n\nexport const CalendarButton = ({\n children,\n className,\n style,\n ...props\n}: CalendarButtonProps) => {\n const ref = useRef(null);\n const { buttonProps } = useButton(props, ref);\n\n return (\n <IconButton {...buttonProps} ref={ref} className={className} style={style}>\n {children}\n </IconButton>\n );\n};\n","import React, { useRef } from 'react';\n\nimport { useCalendarCell } from '@react-aria/calendar';\nimport { CalendarState } from '@react-stately/calendar';\nimport {\n CalendarDate,\n getLocalTimeZone,\n isEqualDay,\n now,\n} from '@internationalized/date';\nimport classNames from 'classnames';\n\ntype CalendarCellProps = {\n state: CalendarState;\n date: CalendarDate;\n};\n\nexport const CalendarCell = ({ state, date }: CalendarCellProps) => {\n const cellRef = useRef(null);\n\n const {\n cellProps,\n buttonProps,\n isSelected,\n isOutsideVisibleRange,\n isDisabled,\n isUnavailable,\n formattedDate,\n } = useCalendarCell({ date }, state, cellRef);\n return (\n <td {...cellProps} className=\"eds-datepicker__calendar__grid__cell__td\">\n <div\n {...buttonProps}\n ref={cellRef}\n hidden={isOutsideVisibleRange}\n className={classNames('eds-datepicker__calendar__grid__cell', {\n 'eds-datepicker__calendar__grid__cell--selected': isSelected,\n 'eds-datepicker__calendar__grid__cell--disabled': isDisabled,\n 'eds-datepicker__calendar__grid__cell--unavailable': isUnavailable,\n 'eds-datepicker__calendar__grid__cell--today': isEqualDay(\n date,\n now(state.timeZone ?? getLocalTimeZone()),\n ),\n })}\n >\n {formattedDate}\n </div>\n </td>\n );\n};\n","import React from 'react';\n\nimport { useLocale } from '@react-aria/i18n';\nimport { useCalendarGrid } from '@react-aria/calendar';\nimport { CalendarState } from '@react-stately/calendar';\nimport { getWeeksInMonth } from '@internationalized/date';\n\nimport { CalendarCell } from './CalendarCell';\n\ntype CalendarGridProps = {\n state: CalendarState;\n};\n\nexport const CalendarGrid = ({ state, ...rest }: CalendarGridProps) => {\n const { locale } = useLocale();\n\n const { gridProps, headerProps, weekDays } = useCalendarGrid(rest, state);\n\n const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);\n const weeksArray = Array.from(Array(weeksInMonth).keys());\n\n const weekDaysMapped = () => {\n if (locale.toLowerCase() === 'no-no' || locale.toLowerCase() === 'no')\n return ['ma', 'ti', 'on', 'to', 'fr', 'lø', 'sø'];\n if (weekDays.toString() === 'M,T,W,T,F,S,S')\n return ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n return weekDays.map(day => day.toLowerCase());\n };\n\n return (\n <table\n {...gridProps}\n cellSpacing=\"0\"\n className=\"eds-datepicker__calendar__grid\"\n >\n <thead {...headerProps}>\n <tr>\n {weekDaysMapped().map((day, index) => (\n <th key={index}>{day}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {weeksArray.map(weekIndex => (\n <tr key={weekIndex}>\n {state\n .getDatesInWeek(weekIndex)\n .map((date, i) =>\n date ? (\n <CalendarCell key={i} state={state} date={date} />\n ) : (\n <td key={i} />\n ),\n )}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n","import React from 'react';\n\nimport { useLocale } from '@react-aria/i18n';\nimport { useCalendar } from '@react-aria/calendar';\nimport { useCalendarState } from '@react-stately/calendar';\nimport { DateValue } from '@internationalized/date';\n\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\n\nimport { ariaLabelIfNorwegian, createCalendar } from '../../shared/utils';\nimport { CalendarButton } from '../../shared/CalendarButton';\nimport { CalendarGrid } from './CalendarGrid';\n\nimport './Calendar.scss';\n\ntype CalendarProps = {\n selectedDate: DateValue;\n style?: React.CSSProperties;\n [key: string]: any;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n ({ selectedDate: value, style, children: _, ...rest }, ref) => {\n const { locale } = useLocale();\n\n const state = useCalendarState({\n ...rest,\n locale,\n createCalendar,\n });\n const { calendarProps, prevButtonProps, nextButtonProps, title } =\n useCalendar(rest, state);\n // const monthAndYear = title.split(' ');\n\n return (\n <div\n {...calendarProps}\n ref={ref}\n className=\"eds-datepicker__calendar\"\n style={style}\n >\n <div className=\"eds-datepicker__calendar__header\">\n <CalendarButton\n {...prevButtonProps}\n aria-label={ariaLabelIfNorwegian(\n 'Forrige måned',\n locale,\n prevButtonProps,\n )}\n >\n <LeftArrowIcon size={20} />\n </CalendarButton>\n {/* <h2>{getTitle(monthAndYear, locale)}</h2> */}\n <h2>{title}</h2>\n <CalendarButton\n {...nextButtonProps}\n aria-label={ariaLabelIfNorwegian(\n 'Neste måned',\n locale,\n nextButtonProps,\n )}\n >\n <RightArrowIcon size={20} />\n </CalendarButton>\n </div>\n <CalendarGrid state={state} />\n </div>\n );\n },\n);\n\n// const getTitle = (monthYearList: string[], locale: string) => {\n// const month = monthYearList[0];\n// const year = monthYearList[1];\n\n// if (locale.toLowerCase() !== 'no-no' && locale.toLowerCase() !== 'no')\n// return month + ' ' + year;\n// switch (month.toLowerCase()) {\n// case 'january':\n// return 'januar ' + year;\n// case 'february':\n// return 'februar ' + year;\n// case 'march':\n// return 'mars ' + year;\n// case 'may':\n// return 'mai ' + year;\n// case 'june':\n// return 'juni ' + year;\n// case 'july':\n// return 'juli ' + year;\n// case 'october':\n// return 'oktober ' + year;\n// case 'december':\n// return 'desember ' + year;\n// default:\n// return month.toLowerCase() + ' ' + year.toLowerCase();\n// }\n// };\n","import React, { useEffect, useRef } from 'react';\n\nimport { useDatePickerState } from '@react-stately/datepicker';\nimport { useDatePicker } from '@react-aria/datepicker';\nimport { useFloating, offset, flip, shift } from '@floating-ui/react-dom';\nimport FocusLock from 'react-focus-lock';\nimport classNames from 'classnames';\n\nimport type { DateValue } from '@react-types/datepicker';\n\nimport { useOnClickOutside } from '@entur/utils';\nimport { space } from '@entur/tokens';\nimport { CalendarIcon } from '@entur/icons';\nimport { VariantType } from '@entur/form';\n\nimport { DateField } from './DateField';\nimport { Calendar } from './Calendar';\nimport { CalendarButton } from '../../shared/CalendarButton';\n\nimport './DatePicker.scss';\n\ntype DatePickerProps = {\n /** Den valgte datoen. Dato i '@internationalized/date'-pakkens format */\n selectedDate: DateValue;\n /** Kalles når tiden endres. Dato i '@internationalized/date'-pakkens format */\n onChange: (date: DateValue) => void;\n /** Ledetekst for inputfeltet til DatePicker */\n label: string;\n /** BCP47-språkkoden til locale-en du ønsker å bruke.\n * @default Brukerenhetens selvvalgte locale\n */\n locale?: string;\n /** Viser den gjeldende tidssonen hvis en er valgt (krever at tid også vises)\n * @default false\n */\n showTimeZone?: boolean;\n /** Viser tidspunkt i tillegg til dato hvis det er tilgjengelig */\n showTime?: boolean;\n /** Varselmelding, som vil komme under DatePicker sitt inputfelt */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n disabled?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n style?: React.CSSProperties;\n [key: string]: any;\n};\n\nexport const DatePickerBeta = ({\n selectedDate: value,\n onChange,\n disabled: isDisabled,\n className,\n style,\n variant,\n feedback,\n ...rest\n}: DatePickerProps) => {\n const datePickerRef = useRef<HTMLDivElement | null>(null);\n const calendarRef = useRef<HTMLDivElement | null>(null);\n const dateFieldRef = useRef<HTMLDivElement | null>(null);\n\n // TODO SE PÅ OM VERDIER I USE...STATE BURDE VÆRE I USE... I STEDET\n const state = useDatePickerState({\n ...rest,\n value,\n onChange,\n });\n const {\n groupProps,\n labelProps,\n fieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDatePicker({ isDisabled, ...rest }, state, datePickerRef);\n\n // calculations for floating-UI popover position\n const { x, y, reference, floating, strategy } = useFloating({\n placement: 'bottom-start',\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({ padding: space.extraSmall }),\n ],\n });\n\n // set focus to selected date or today if available on open calendar\n useEffect(() => {\n const gridCellPrefix = 'eds-datepicker__calendar__grid__cell';\n\n const selectedCell = calendarRef.current?.getElementsByClassName(\n gridCellPrefix + '--selected',\n )[0] as HTMLElement | undefined;\n const todayCell = calendarRef.current?.getElementsByClassName(\n gridCellPrefix + '--today',\n )[0] as HTMLElement | undefined;\n\n if (selectedCell) selectedCell.focus();\n else if (todayCell) todayCell.focus();\n }, [state.isOpen]);\n\n useOnClickOutside([calendarRef], () => {\n state.setOpen(false);\n });\n\n useEffect(() => {\n const keyDownHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape') state.setOpen(false);\n };\n calendarRef.current?.addEventListener('keydown', keyDownHandler);\n return () =>\n calendarRef.current?.removeEventListener('keydown', keyDownHandler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className={classNames('eds-datepicker', className)}>\n <div\n {...groupProps}\n ref={node => {\n datePickerRef.current = node;\n reference(node);\n }}\n className=\"eds-datepicker__datefield__wrapper\"\n >\n <DateField\n {...fieldProps}\n selectedDate={state.value}\n label={rest.label}\n labelProps={labelProps}\n ref={dateFieldRef}\n className={classNames('eds-datepicker__datefield', {\n 'eds-datepicker__datefield--disabled': fieldProps.isDisabled,\n })}\n variant={variant}\n feedback={feedback}\n />\n {!fieldProps.isDisabled && (\n <CalendarButton\n {...buttonProps}\n onPress={() => state.setOpen(!state.isOpen)}\n className=\"eds-datepicker__open-calendar-button\"\n >\n <CalendarIcon />\n </CalendarButton>\n )}\n </div>\n <FocusLock disabled={!state.isOpen} returnFocus>\n <Calendar\n {...dialogProps}\n {...calendarProps}\n onChange={(dateValue: DateValue) => {\n onChange(dateValue);\n state.setOpen(false);\n }}\n disabled={calendarProps.isDisabled}\n ref={node => {\n calendarRef.current = node;\n floating(node);\n }}\n // styling for floating-UI popover\n style={{\n display: state.isOpen ? 'block' : 'none',\n position: strategy,\n top: y ?? 0,\n left: x ?? 0,\n zIndex: 10,\n }}\n />\n </FocusLock>\n </div>\n );\n};\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { DateIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nexport type NativeDatePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeDatePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeDatePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeDatePicker = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerProps\n>(\n (\n {\n className,\n style,\n label,\n onChange,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <DateIcon inline />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativedatepickerId = useRandomId('eds-nativetimepicker');\n return (\n <BaseFormControl\n style={style}\n className={className}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativedatepickerId}\n disableLabelAnimation={disableLabelAnimation}\n isFilled\n >\n <NativeDatePickerBase\n onChange={onChange}\n aria-labelledby={nativedatepickerId}\n ref={ref}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeDatePickerBaseProps = {\n onChange?: any;\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeDatePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerBaseProps\n>(({ onChange, variant, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isDatepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isDatepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isDatepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"date\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { IconButton } from '@entur/button';\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\n\ntype TimePickerArrowButtonProps = {\n direction: 'left' | 'right';\n} & React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n>;\n\nexport const TimePickerArrowButton: React.FC<TimePickerArrowButtonProps> = ({\n direction,\n onClick,\n disabled,\n 'aria-label': ariaLabel,\n}) => {\n return (\n <IconButton\n className={classNames(\n 'eds-timepicker__arrowbutton',\n `eds-timepicker__arrowbutton--${direction}`,\n { 'eds-timepicker__arrowbutton--disabled': disabled },\n )}\n type=\"button\"\n tabIndex={-1}\n onClick={onClick}\n aria-label={ariaLabel}\n disabled={disabled}\n >\n {direction === 'left' ? <LeftArrowIcon /> : <RightArrowIcon />}\n </IconButton>\n );\n};\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { useTimeField } from '@react-aria/datepicker';\nimport { I18nProvider, useLocale } from '@react-aria/i18n';\nimport { useTimeFieldState } from '@react-stately/datepicker';\nimport { getLocalTimeZone, now } from '@internationalized/date';\n\nimport type {\n TimePickerProps as ReactAriaTimePickerProps,\n TimeValue,\n} from '@react-types/datepicker';\n\nimport { BaseFormControl, VariantType } from '@entur/form';\nimport { useRandomId, mergeRefs } from '@entur/utils';\n\nimport { FieldSegment } from '../shared/FieldSegment';\nimport { TimePickerArrowButton } from './TimePickerArrowButton';\n\nimport './TimePicker.scss';\n\nexport type TimePickerProps = {\n /** Den valgte tiden. Tid i '@internationalized/date'-pakkens format */\n selectedTime: TimeValue | null;\n /** Kalles når tiden endres. Tid i '@internationalized/date'-pakkens format */\n onChange: (value: TimeValue) => void;\n /** Label til TimePicker */\n label: string;\n /** Minutter som legges til eller trekkes fra ved klikk på pilene i TimePicker\n * @default 30\n */\n minuteIncrementForArrowButtons?: number;\n /** BCP47-språkkoden til locale-en du ønsker å bruke.\n * @default Brukerenhetens selvvalgte locale\n */\n locale?: string;\n /** Viser den gjeldende tidssonen hvis en er valgt\n * @default false\n */\n showTimeZone?: boolean;\n /** Aria-label for venstrepil-knappen som trekker fra tid\n * @default `Trekk fra ${minuteIncrementForArrowButtons} minutter`\n */\n leftArrowButtonAriaLabel?: string;\n /** Aria-label for høyrepil-knappen som legger til tid\n * @default `Legg til ${minuteIncrementForArrowButtons} minutter`\n */\n rightArrowButtonAriaLabel?: string;\n /** Varselmelding, som vil komme under TimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n labelTooltip?: React.ReactNode;\n disabled?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n style?: React.CSSProperties;\n} & Omit<\n ReactAriaTimePickerProps<TimeValue>,\n 'onChange' | 'label' | 'hideTimeZone' | 'placeholder'\n>;\n\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n selectedTime,\n onChange,\n disabled,\n className,\n style,\n label,\n labelTooltip,\n feedback,\n variant,\n locale: customLocale,\n showTimeZone,\n minuteIncrementForArrowButtons = 30,\n leftArrowButtonAriaLabel = `Trekk fra ${minuteIncrementForArrowButtons} minutter`,\n rightArrowButtonAriaLabel = `Legg til ${minuteIncrementForArrowButtons} minutter`,\n ...rest\n },\n ref,\n ) => {\n let { locale } = useLocale();\n if (customLocale) locale = customLocale;\n\n const state = useTimeFieldState({\n onChange,\n label: label,\n locale,\n value: selectedTime === null ? undefined : selectedTime,\n hideTimeZone: !showTimeZone,\n isDisabled: disabled,\n ...rest,\n });\n const timeFieldRef = useRef(null);\n const { labelProps, fieldProps } = useTimeField(\n { ...rest, label: label },\n state,\n timeFieldRef,\n );\n const id = useRandomId('timepicker');\n\n const handleOnClickArrowButton = (minutes: number) => {\n if (someSegmentIsUndefined) {\n setTimeToNearestMinuteIncrement();\n } else {\n addMinutesToSelectedTime(minutes);\n }\n };\n\n const someSegmentIsUndefined = state.segments.some(\n segment => segment.text === '––',\n );\n\n const setTimeToNearestMinuteIncrement = () => {\n const currentTime = now(getLocalTimeZone());\n const roundedMinute =\n Math.floor(currentTime.minute / minuteIncrementForArrowButtons) *\n minuteIncrementForArrowButtons;\n const newTime = currentTime.set({ minute: roundedMinute });\n onChange(newTime);\n };\n\n const addMinutesToSelectedTime = (minutes: number) => {\n state.value &&\n state.setValue(\n state.value?.add({\n minutes: minutes,\n }),\n );\n };\n\n return (\n <I18nProvider locale={locale}>\n <div className={classNames(className, 'eds-timepicker__wrapper')}>\n <TimePickerArrowButton\n direction=\"left\"\n disabled={disabled}\n aria-label={leftArrowButtonAriaLabel}\n onClick={() =>\n handleOnClickArrowButton(minuteIncrementForArrowButtons * -1)\n }\n />\n <BaseFormControl\n style={style}\n className={'eds-timepicker'}\n labelId={id}\n label={label}\n labelProps={{ ...labelProps }}\n ref={mergeRefs(timeFieldRef, ref)}\n disabled={disabled}\n disableLabelAnimation\n labelTooltip={labelTooltip}\n {...fieldProps}\n variant={variant}\n feedback={feedback}\n >\n {state.segments.map((segment, i) => (\n <FieldSegment segment={segment} state={state} key={i} />\n ))}\n </BaseFormControl>\n <TimePickerArrowButton\n direction=\"right\"\n disabled={disabled}\n aria-label={rightArrowButtonAriaLabel}\n onClick={() =>\n handleOnClickArrowButton(minuteIncrementForArrowButtons)\n }\n />\n </div>\n </I18nProvider>\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nimport './NativeTimePicker.scss';\n\nexport type NativeTimePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeTimePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeTimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Tekst eller ikon som kommer før inputfelter */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeTimePicker = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerProps\n>(\n (\n { className, style, onChange, label, feedback, variant, prepend, ...rest },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativetimepickerId = useRandomId('eds-native-timepicker');\n return (\n <BaseFormControl\n style={style}\n className={classNames(className, 'eds-native-timepicker')}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativetimepickerId}\n disableLabelAnimation\n >\n <NativeTimePickerBase\n onChange={onChange}\n aria-labelledby={nativetimepickerId}\n ref={ref}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeTimePickerBaseProps = {\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeTimePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerBaseProps\n>(({ onChange, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = rest.variant || contextVariant;\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isTimepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isTimepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"time\"\n className=\"eds-form-control\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('datepicker', 'form', 'icons');\n\nexport * from './DatePicker';\nexport * from './NativeDatePicker';\nexport * from './TimePicker';\nexport * from './shared';\n"],"names":["DatePickerHeader","date","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","nextMonthAriaLabel","previousMonthAriaLabel","locale","currentMonthIndex","getMonth","React","className","IconButton","type","onClick","disabled","getMonthName","LeftArrowIcon","Heading3","getFullYear","RightArrowIcon","monthIndex","year","Date","formatter","Intl","DateTimeFormat","code","month","format","DatePickerInput","forwardRef","ref","style","label","inputPlaceholder","prepend","feedback","variant","calendarButtonTooltipOpen","calendarButtonTooltipClose","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","rest","useEffect","current","addEventListener","handleOnKeyDown","handleOnBlur","handleOnFocus","removeEventListener","event","requestAnimationFrame","select","handleOnClickInputField","handleOnClickCalendarButton","calendarButtonAriaLabel","buttonStateText","currentSelectionText","value","TextField","placeholder","mergeRefs","ariaAlertOnFeedback","append","Tooltip","placement","content","disableHoverListener","disableFocusListener","id","tabIndex","CalendarIcon","registerLocale","nb","DatePicker","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","validationFeedback","validationVariant","hideCalendar","hideValidation","weekLabel","chooseDayAriaLabelPrefix","open","datepickerId","useRandomId","datepickerRef","useRef","calendarButton","document","getElementById","useState","showValidation","setShowValidation","shouldFocusOnCalendarButtonAfterSelect","validateInput","handleOnChange","focus","key","datePickerGUIIsOpen","forceUpdateInputFormat","focusAndSelectInputField","handleOnClickOutside","handleOnBlurInput","inputValue","inputValueParsedWithAllDateFormats","map","parse","parsedDateFromInputIsTheSameAsSelectedDate","some","dateFormat","isSameDay","getFeedbackAndVariant","undefined","setState","setOpen","datepickerGUIWrapper","calendar","componentNode","dateToSetFocusTo","querySelector","setBlur","preventScroll","isCalendarOpen","ReactDatepicker","selected","showWeekNumbers","onClickOutside","ariaLabelledBy","showPopperArrow","preventOpenOnFocus","calendarClassName","dayClassName","weekDayClassName","classNames","highlightDates","renderCustomHeader","changeYear","changeMonth","customInput","onFocus","FieldSegment","segment","state","useDateSegment","segmentProps","is12HourFormatted","segments","text","segmentDisplayText","match","padStart","isPlaceholder","isDisabled","nativeDateToTimeValue","noDateOnlyTime","timeZone","offset","ZonedDateTime","getDate","getHours","getMinutes","getSeconds","parseAbsolute","toISOString","Time","CalendarDateTime","timeValueToNativeDate","time","timeZoneForCalendarDateTime","day","setHours","hour","setMinutes","minute","setSeconds","second","toDate","createCalendar","identifier","GregorianCalendar","Error","ariaLabelIfNorwegian","norwegianAriaLabel","propsCollection","DateField","showTimeZone","showTime","granularity","labelTooltip","parentLabelProps","labelProps","useLocale","useDateFieldState","hideTimeZone","dateFieldRef","useDateField","fieldProps","BaseFormControl","labelId","i","CalendarButton","children","props","useButton","buttonProps","CalendarCell","cellRef","useCalendarCell","cellProps","isSelected","isOutsideVisibleRange","isUnavailable","formattedDate","hidden","isEqualDay","now","getLocalTimeZone","CalendarGrid","useCalendarGrid","gridProps","headerProps","weekDays","weeksInMonth","getWeeksInMonth","visibleRange","start","weeksArray","Array","from","keys","weekDaysMapped","toLowerCase","toString","cellSpacing","index","weekIndex","getDatesInWeek","Calendar","useCalendarState","useCalendar","calendarProps","prevButtonProps","nextButtonProps","title","size","DatePickerBeta","datePickerRef","calendarRef","useDatePickerState","useDatePicker","groupProps","dialogProps","useFloating","middleware","space","extraSmall","flip","shift","padding","x","y","reference","floating","strategy","gridCellPrefix","selectedCell","getElementsByClassName","todayCell","isOpen","useOnClickOutside","keyDownHandler","node","onPress","FocusLock","returnFocus","dateValue","display","position","top","left","zIndex","NativeDatePicker","DateIcon","nativedatepickerId","isFilled","NativeDatePickerBase","contextVariant","useVariant","currentVariant","useInputGroupContext","isDatepickerFilled","setFiller","setFilled","useOnMount","handleChange","target","TimePickerArrowButton","direction","ariaLabel","TimePicker","selectedTime","customLocale","minuteIncrementForArrowButtons","leftArrowButtonAriaLabel","rightArrowButtonAriaLabel","useTimeFieldState","timeFieldRef","useTimeField","handleOnClickArrowButton","minutes","someSegmentIsUndefined","setTimeToNearestMinuteIncrement","addMinutesToSelectedTime","currentTime","roundedMinute","Math","floor","newTime","set","setValue","add","I18nProvider","NativeTimePicker","nativetimepickerId","NativeTimePickerBase","isTimepickerFilled","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"datepicker.cjs.development.js","sources":["../src/DatePicker/DatePickerHeader.tsx","../src/DatePicker/DatePickerInput.tsx","../src/DatePicker/DatePicker.tsx","../src/shared/FieldSegment.tsx","../src/shared/utils.ts","../src/DatePicker/beta/DateField.tsx","../src/shared/CalendarButton.tsx","../src/DatePicker/beta/CalendarCell.tsx","../src/DatePicker/beta/CalendarGrid.tsx","../src/DatePicker/beta/Calendar.tsx","../src/DatePicker/beta/DatePicker.tsx","../src/NativeDatePicker.tsx","../src/TimePicker/TimePickerArrowButton.tsx","../src/TimePicker/TimePicker.tsx","../src/TimePicker/NativeTimePicker.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport { ReactDatePickerCustomHeaderProps } from 'react-datepicker';\n\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { Heading3 } from '@entur/typography';\nimport { IconButton } from '@entur/button';\n\ntype DatePickerHeaderProps = {\n nextMonthAriaLabel: string;\n previousMonthAriaLabel: string;\n locale: globalThis.Locale;\n} & Partial<ReactDatePickerCustomHeaderProps>;\n\nexport const DatePickerHeader = ({\n date,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n nextMonthAriaLabel,\n previousMonthAriaLabel,\n locale,\n}: DatePickerHeaderProps) => {\n const currentMonthIndex = date?.getMonth() ?? 0;\n return (\n <div className=\"eds-datepicker__calender__header\">\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--left\"\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled}\n aria-label={`${previousMonthAriaLabel} (${getMonthName(\n currentMonthIndex - 1,\n locale,\n )})`}\n >\n <LeftArrowIcon />\n </IconButton>\n\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {getMonthName(currentMonthIndex, locale)}\n </Heading3>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {date?.getFullYear()}\n </Heading3>\n\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--right\"\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled}\n aria-label={`${nextMonthAriaLabel} (${getMonthName(\n currentMonthIndex + 1,\n locale,\n )})`}\n >\n <RightArrowIcon />\n </IconButton>\n </div>\n );\n};\n\nfunction getMonthName(monthIndex: number, locale: globalThis.Locale) {\n const year = new Date().getFullYear();\n const formatter = new Intl.DateTimeFormat(locale.code, {\n month: 'long',\n });\n return formatter.format(new Date(year, monthIndex));\n}\n","import React from 'react';\n\nimport { TextField, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\nimport { CalendarIcon } from '@entur/icons';\nimport { mergeRefs } from '@entur/utils';\n\ntype DatePickerInputProps = {\n style?: React.CSSProperties;\n label: string;\n inputPlaceholder: string;\n prepend?: React.ReactNode;\n feedback?: string;\n variant?: VariantType;\n disabled?: boolean;\n disableLabelAnimation?: boolean;\n calendarButtonTooltipOpen: string;\n calendarButtonTooltipClose: string;\n hideCalendarButton?: boolean;\n inputRef: React.RefObject<HTMLInputElement>;\n calendarButtonId: string;\n forwardRef: React.ForwardedRef<HTMLInputElement>;\n toggleCalendarGUI: () => void;\n setFocusToCalendarGUI: () => void;\n setShouldFocusOnCalendarButtonAfterSelect: React.Dispatch<\n React.SetStateAction<boolean>\n >;\n onKeyDownInput: (event: KeyboardEvent) => any;\n onBlurInput: (event: FocusEvent) => any;\n calendarGUIIsOpen: () => boolean | undefined;\n onClick?: React.MouseEventHandler<HTMLInputElement>; // react-datepicker's onClick prop\n onFocus: undefined; // To prevent open on focus\n selectedDate: Date | null; // Necessary to update component on state change\n placeholder?: null; // override react-datepickers placeholder prop\n 'aria-labelledby'?: string;\n};\n\nexport const DatePickerInput = React.forwardRef<\n HTMLInputElement,\n DatePickerInputProps\n>(\n (\n {\n style,\n label,\n inputPlaceholder,\n prepend,\n feedback,\n variant,\n disabled,\n calendarButtonTooltipOpen,\n calendarButtonTooltipClose,\n hideCalendarButton,\n disableLabelAnimation,\n inputRef,\n calendarButtonId,\n forwardRef,\n toggleCalendarGUI,\n onKeyDownInput,\n onBlurInput,\n selectedDate,\n setFocusToCalendarGUI,\n setShouldFocusOnCalendarButtonAfterSelect,\n calendarGUIIsOpen,\n placeholder, // eslint-disable-line\n onClick,\n 'aria-labelledby': ariaLabelledBy, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...rest // forwarded props from react-datepicker\n },\n ref,\n ) => {\n React.useEffect(() => {\n inputRef.current?.addEventListener('keydown', handleOnKeyDown);\n inputRef.current?.addEventListener('blur', handleOnBlur);\n inputRef.current?.addEventListener('focus', handleOnFocus);\n return () => {\n inputRef.current?.removeEventListener('keydown', handleOnKeyDown);\n inputRef.current?.removeEventListener('blur', handleOnBlur);\n inputRef.current?.removeEventListener('focus', handleOnFocus);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputRef, selectedDate]);\n\n function handleOnKeyDown(this: HTMLElement, event: KeyboardEvent) {\n onKeyDownInput(event);\n }\n function handleOnBlur(this: HTMLElement, event: FocusEvent) {\n onBlurInput(event);\n }\n const handleOnFocus = () =>\n requestAnimationFrame(() => inputRef.current?.select());\n\n const handleOnClickInputField = (\n event: React.MouseEvent<HTMLInputElement, MouseEvent>,\n ) => {\n setShouldFocusOnCalendarButtonAfterSelect(false);\n onClick && onClick(event);\n };\n\n const handleOnClickCalendarButton = () => {\n toggleCalendarGUI();\n setFocusToCalendarGUI();\n setShouldFocusOnCalendarButtonAfterSelect(true);\n };\n\n const calendarButtonAriaLabel = () => {\n const buttonStateText = calendarGUIIsOpen()\n ? calendarButtonTooltipClose\n : calendarButtonTooltipOpen;\n const currentSelectionText = selectedDate\n ? `${inputRef.current?.value} valgt`\n : 'Ingen dato valgt';\n return `${buttonStateText}, ${currentSelectionText}`;\n };\n\n return (\n <TextField\n style={style}\n label={label}\n placeholder={inputPlaceholder}\n prepend={prepend}\n feedback={feedback}\n variant={variant}\n disableLabelAnimation={disableLabelAnimation}\n ref={mergeRefs(ref, inputRef, forwardRef)}\n onClick={handleOnClickInputField}\n ariaAlertOnFeedback\n append={\n !hideCalendarButton && (\n <Tooltip\n placement=\"top\"\n content={\n calendarGUIIsOpen()\n ? calendarButtonTooltipClose\n : calendarButtonTooltipOpen\n }\n disableHoverListener={disabled}\n disableFocusListener={disabled}\n >\n <IconButton\n id={calendarButtonId}\n type=\"button\"\n onClick={handleOnClickCalendarButton}\n tabIndex={calendarGUIIsOpen() ? -1 : 0}\n aria-label={calendarButtonAriaLabel()}\n >\n <CalendarIcon />\n </IconButton>\n </Tooltip>\n )\n }\n {...rest}\n />\n );\n },\n);\n","import React, { useRef, useState } from 'react';\nimport ReactDatePicker, {\n default as ReactDatepicker,\n ReactDatePickerProps,\n registerLocale,\n} from 'react-datepicker';\nimport { parse, isSameDay, Locale } from 'date-fns';\nimport { nb } from 'date-fns/locale';\nimport classNames from 'classnames';\n\nimport { VariantType } from '@entur/form';\nimport { useRandomId } from '@entur/utils';\n\nimport { DatePickerHeader } from './DatePickerHeader';\nimport { DatePickerInput } from './DatePickerInput';\n\nimport './DatePicker.scss';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nregisterLocale('nb', nb);\n\nexport type DatePickerProps = {\n /** Hva som er den valgte datoen */\n selectedDate: Date | null;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event> | undefined,\n ) => void;\n /**\n * Kalles når en tast trykkes i inputfeltet\n */\n onKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Datoformater som skal støttes. Første i listen er formatet alt input omgjøres til.\n * Format-valg tilgjengelig her: https://date-fns.org/v2.28.0/docs/format\n * OBS: Noen kombinasjoner av datoformater kan gi rar og uønsket oppførsel,\n * test nøye ved endring\n * @default \"['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy']\"\n */\n dateFormats?: string[];\n /**\n * Locale fra date-fns som brukes av Datepicker-en\n * @default nb\n */\n locale?: Locale;\n /** Placeholder om ingen dato er valgt\n * @default \"dd.mm.yyyy\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over DatePicker */\n label: string;\n /**\n * Varselmelding, som vil komme under DatePicker\n */\n feedback?: string;\n /** Valideringsvariant\n */\n variant?: VariantType;\n /** Varselmelding for når datoen er på feil format\n * @default \"Ugyldig dato\"\n */\n validationFeedback?: string;\n /** Valideringsvariant for melding om feil datoformat\n * @default \"error\"\n */\n validationVariant?: VariantType;\n style?: React.CSSProperties;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n /**\n * Tekst som vises når kalender ikke er åpen på «Åpne/Lukk kalender»-knappen ved hover\n */\n calendarButtonTooltipOpen?: string;\n /**\n * Tekst som vises når kalender er åpen på «Åpne/Lukk kalender»-knappen ved hover\n */\n calendarButtonTooltipClose?: string;\n /** Skjuler knapp for åpning av kalender\n * @default false\n */\n hideCalendarButton?: boolean;\n /** Skjuler tilbakemeldingsteksten ved feil dato-input\n * @default false\n */\n hideValidation?: boolean;\n /** Skjuler kalender-GUI-et\n * @default false\n */\n hideCalendar?: boolean;\n /** Viser kun kalender-popover-en\n * @default false\n */\n inline?: boolean;\n /** Skjermlesertekst for forrige måned-knapen\n * @default \"Forrige måned\"\n */\n previousMonthAriaLabel?: string;\n /** Skjermlesertekst for neste måned-knapen\n * @default \"Neste måned\"\n */\n nextMonthAriaLabel?: string;\n /**\n * Skjermlesertekst som leses før dato i kalenderGUI-et\n * @default \"Velg\"\n */\n chooseDayAriaLabelPrefix?: string;\n // For testing\n 'data-cy'?: any;\n} & Omit<\n ReactDatePickerProps,\n | 'selected'\n | 'customInput'\n | 'onChangeRaw'\n | 'dateFormat'\n | 'locale'\n | 'previousMonthAriaLabel'\n | 'nextMonthAriaLabel'\n>;\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n style,\n className,\n selectedDate,\n label,\n placeholder = 'dd.mm.yyyy',\n onChange,\n onKeyDown = () => null,\n dateFormats = ['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy'],\n minDate,\n maxDate,\n inline = false,\n disabled,\n prepend,\n feedback = '',\n variant,\n validationFeedback = 'Ugyldig dato',\n validationVariant = 'error',\n disableLabelAnimation = false,\n calendarButtonTooltipOpen = 'Åpne\\xa0kalender',\n calendarButtonTooltipClose = 'Lukk\\xa0kalender',\n hideCalendarButton = false,\n hideCalendar = false,\n hideValidation = false,\n weekLabel = 'uke',\n chooseDayAriaLabelPrefix = 'Velg',\n previousMonthAriaLabel = 'Forrige måned',\n nextMonthAriaLabel = 'Neste måned',\n locale = nb,\n open,\n ...rest\n },\n ref,\n ) => {\n const datepickerId = useRandomId('eds-datepicker');\n\n const datepickerRef = useRef<ReactDatePicker>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const calendarButton = document.getElementById(datepickerId + '-button');\n\n const [showValidation, setShowValidation] = useState(false);\n const [\n shouldFocusOnCalendarButtonAfterSelect,\n setShouldFocusOnCalendarButtonAfterSelect,\n ] = useState(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(() => validateInput(), [selectedDate]);\n\n const handleOnChange = (\n date: Date | null,\n event: React.SyntheticEvent<any, Event> | undefined,\n ): void => {\n if (shouldFocusOnCalendarButtonAfterSelect && !hideCalendarButton) {\n calendarButton?.focus();\n setShouldFocusOnCalendarButtonAfterSelect(false);\n } else inputRef.current?.focus();\n\n onChange(date, event);\n };\n\n const handleOnKeyDown = (event: KeyboardEvent) => {\n setShowValidation(false);\n\n if (event.key === 'Enter') {\n if (!datePickerGUIIsOpen()) {\n // onBlurInput will validate if calendar is open\n validateInput();\n forceUpdateInputFormat();\n }\n focusAndSelectInputField();\n } else if (event.key === 'Tab' && datePickerGUIIsOpen()) {\n forceUpdateInputFormat();\n } else if (event.key === 'Escape') {\n forceUpdateInputFormat();\n focusAndSelectInputField();\n if (datePickerGUIIsOpen()) toggleCalendarGUI();\n }\n onKeyDown(event);\n };\n\n const handleOnClickOutside = () =>\n setShouldFocusOnCalendarButtonAfterSelect(false);\n\n const handleOnBlurInput = () => {\n if (datePickerGUIIsOpen()) return;\n validateInput();\n forceUpdateInputFormat();\n };\n\n const validateInput = () => {\n setShowValidation(false);\n const inputValue = inputRef.current?.value;\n if (!inputValue) return;\n\n const inputValueParsedWithAllDateFormats = dateFormats.map(format =>\n parse(inputValue, format, new Date(), {\n locale: locale,\n }),\n );\n\n const parsedDateFromInputIsTheSameAsSelectedDate =\n selectedDate &&\n inputValueParsedWithAllDateFormats.some(dateFormat =>\n isSameDay(dateFormat, selectedDate),\n );\n\n if (parsedDateFromInputIsTheSameAsSelectedDate) {\n // valid date inputted\n setShowValidation(false);\n } else {\n // invalid date inputted\n setShowValidation(true);\n }\n };\n\n const getFeedbackAndVariant = (): {\n feedback: string;\n variant: VariantType | undefined;\n } => {\n if (feedback) return { feedback, variant };\n if (!hideValidation && showValidation)\n return { feedback: validationFeedback, variant: validationVariant };\n return { feedback: '', variant: undefined };\n };\n\n const focusAndSelectInputField = () =>\n requestAnimationFrame(() => inputRef.current?.select());\n\n const forceUpdateInputFormat = () =>\n datepickerRef.current?.setState({ inputValue: null });\n\n const toggleCalendarGUI = () =>\n datepickerRef.current?.setOpen(!datePickerGUIIsOpen());\n\n const setFocusToCalendarGUI = () => {\n if (inline || hideCalendar || datePickerGUIIsOpen()) return;\n // 1 frame delay to allow calendar to spawn\n requestAnimationFrame(() => {\n const datepickerGUIWrapper =\n // @ts-expect-error .calendar does actually exist in ReactDatePicker ref\n datepickerRef.current?.calendar.componentNode;\n\n const dateToSetFocusTo = selectedDate\n ? (datepickerGUIWrapper.querySelector(\n '.eds-datepicker__calender__day[tabindex=\"0\"]',\n ) as HTMLElement | null)\n : (datepickerGUIWrapper.querySelector(\n '.eds-datepicker__calender__day[aria-current=\"date\"]',\n ) as HTMLElement | null);\n if (dateToSetFocusTo !== null) {\n datepickerRef.current?.setBlur();\n dateToSetFocusTo.focus({ preventScroll: true });\n }\n });\n setShouldFocusOnCalendarButtonAfterSelect(true);\n setShowValidation(false);\n };\n\n const datePickerGUIIsOpen = () => datepickerRef.current?.isCalendarOpen();\n\n return (\n <>\n <ReactDatepicker\n selected={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormats}\n showWeekNumbers\n weekLabel={weekLabel}\n onChange={handleOnChange}\n onClickOutside={handleOnClickOutside}\n id={datepickerId}\n ariaLabelledBy={datepickerId}\n showPopperArrow={false}\n locale={locale}\n inline={inline}\n disabled={disabled}\n preventOpenOnFocus={true}\n chooseDayAriaLabelPrefix={chooseDayAriaLabelPrefix}\n open={hideCalendar ? false : open}\n ref={datepickerRef}\n calendarClassName=\"eds-datepicker__calender\"\n dayClassName={() => 'eds-datepicker__calender__day'}\n weekDayClassName={() => 'eds-datepicker__calender__day-name'}\n className={classNames(className, 'eds-datepicker__input')}\n highlightDates={[\n { 'eds-datepicker__calender__day--today': [new Date()] },\n {\n 'eds-datepicker__calender__day--selected': selectedDate\n ? [selectedDate]\n : [],\n },\n ]}\n renderCustomHeader={({\n date,\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n }) => (\n <DatePickerHeader\n date={date}\n changeYear={changeYear}\n changeMonth={changeMonth}\n increaseMonth={increaseMonth}\n decreaseMonth={decreaseMonth}\n prevMonthButtonDisabled={prevMonthButtonDisabled}\n nextMonthButtonDisabled={nextMonthButtonDisabled}\n previousMonthAriaLabel={previousMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n locale={locale}\n />\n )}\n customInput={\n <DatePickerInput\n style={style}\n label={label}\n inputPlaceholder={placeholder}\n calendarButtonTooltipOpen={calendarButtonTooltipOpen}\n calendarButtonTooltipClose={calendarButtonTooltipClose}\n prepend={prepend}\n feedback={getFeedbackAndVariant().feedback}\n variant={getFeedbackAndVariant().variant}\n inputRef={inputRef}\n calendarButtonId={datepickerId + '-button'}\n forwardRef={ref}\n onKeyDownInput={handleOnKeyDown}\n onBlurInput={handleOnBlurInput}\n onFocus={undefined}\n toggleCalendarGUI={toggleCalendarGUI}\n setFocusToCalendarGUI={setFocusToCalendarGUI}\n setShouldFocusOnCalendarButtonAfterSelect={\n setShouldFocusOnCalendarButtonAfterSelect\n }\n calendarGUIIsOpen={datePickerGUIIsOpen}\n disableLabelAnimation={disableLabelAnimation}\n hideCalendarButton={hideCalendarButton}\n selectedDate={selectedDate}\n />\n }\n {...rest}\n />\n </>\n );\n },\n);\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { useDateSegment } from '@react-aria/datepicker';\nimport { DateSegment, DateFieldState } from '@react-stately/datepicker';\n\nimport './FieldSegment.scss';\n\ntype TimeSegmentProps = {\n segment: DateSegment;\n state: DateFieldState;\n};\n\nexport const FieldSegment = ({ segment, state }: TimeSegmentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n const is12HourFormatted = state.segments.some(\n segment => segment.text === 'AM' || segment.text === 'PM',\n );\n\n const segmentDisplayText = () => {\n if (is12HourFormatted) return segment.text;\n // if number add '0' padding to start when one digit\n if (segment.text.match(/\\d+/)) return segment.text.padStart(2, '0');\n return segment.text;\n };\n\n return (\n <div\n {...segmentProps}\n ref={ref}\n className={classNames('eds-date-and-time-field__segment', {\n 'eds-date-and-time-field__segment--placeholder': segment.isPlaceholder,\n 'eds-date-and-time-field__segment--dot-separator': segment.text === '.',\n })}\n tabIndex={state.isDisabled ? -1 : segmentProps.tabIndex}\n >\n {segmentDisplayText()}\n </div>\n );\n};\n","import {\n ZonedDateTime,\n CalendarDateTime,\n Time,\n parseAbsolute,\n} from '@internationalized/date';\nimport { TimeValue } from '@react-types/datepicker';\nimport { Calendar, GregorianCalendar } from '@internationalized/date';\n\n/**\n * Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken\n * @param {Date} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt\n * @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake\n * @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset\n * @param {number} offset UTC-offset i millisekunder, må brukes med en tidssone. Ved å legge på en offset lager du en variant av en tidssone. Det betyr at tidspunktet ikke endres (time, minutt, sekund uendret), men tidssonen, med tilhørende offset, tidspunktet er i endres.\n * @returns {Time | CalendarDateTime | ZonedDateTime} et av TimeValue-objektene med verdier fra date\n */\nexport const nativeDateToTimeValue = (\n date: Date,\n noDateOnlyTime = false,\n timeZone?: string,\n offset?: number,\n) => {\n if (timeZone) {\n if (offset) {\n return new ZonedDateTime(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n timeZone,\n offset,\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n );\n }\n return parseAbsolute(date.toISOString(), timeZone);\n }\n if (noDateOnlyTime)\n return new Time(date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n return new CalendarDateTime(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n );\n};\n\n/**\n * Tar inn et av TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt\n * @param {TimeValue} time Et tidspunkt på TimeValue-formatet som ønsket konvertert til et JS Date-objekt\n * @param {string} timeZoneForCalendarDateTime Tidssonen time er i. Fungerer kun med typen er CalendarDateTime\n * @returns {Date} et Date-objekt med verdier fra time\n */\n// This function uses a lot of @ts-expect-error to make it work with all TimeValue types. Sorry ...\nexport const timeValueToNativeDate = (\n time: TimeValue,\n timeZoneForCalendarDateTime?: string,\n): Date => {\n // @ts-expect-error .day does not exist on Time-object\n if (!time.day) {\n // type is Time\n const date = new Date();\n date.setHours(time.hour);\n date.setMinutes(time.minute);\n date.setSeconds(time.second);\n return date;\n }\n\n // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime\n if (!time.timeZone) {\n // type is CalendarDateTime\n if (timeZoneForCalendarDateTime)\n // @ts-expect-error .toDate(timeZone) does not exist in type Time\n return time.toDate(timeZoneForCalendarDateTime);\n\n return new Date(\n // @ts-expect-error not in type Time\n time.year,\n // @ts-expect-error not in type Time\n time.month - 1,\n // @ts-expect-error not in type Time\n time.day,\n time.hour,\n time.minute,\n time.second,\n );\n }\n\n // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime\n return time.toDate();\n};\n\nexport const createCalendar = (identifier = 'gregory'): Calendar => {\n switch (identifier) {\n case 'gregory':\n return new GregorianCalendar();\n default:\n throw new Error(`Unsupported calendar ${identifier}`);\n }\n};\n\nexport const ariaLabelIfNorwegian = (\n norwegianAriaLabel: string,\n locale: string,\n propsCollection: any,\n) => {\n if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];\n return norwegianAriaLabel;\n};\n","import React, { ReactNode, useRef } from 'react';\n\nimport { useDateFieldState } from '@react-stately/datepicker';\nimport { useDateField } from '@react-aria/datepicker';\nimport { I18nProvider, useLocale } from '@react-aria/i18n';\nimport classNames from 'classnames';\n\nimport type {\n SpectrumDateFieldProps,\n DateValue,\n} from '@react-types/datepicker';\nimport type { CalendarDate } from '@internationalized/date';\n\nimport { BaseFormControl, VariantType } from '@entur/form';\nimport { ConditionalWrapper, mergeRefs, useRandomId } from '@entur/utils';\n\nimport { FieldSegment } from '../../shared/FieldSegment';\nimport { createCalendar } from '../../shared/utils';\n\nimport './DateField.scss';\n\nexport type DateFieldProps = {\n /** Den valgte tiden. Tid i '@internationalized/date'-pakkens format */\n selectedDate: DateValue | null;\n /** Kalles når tiden endres. Tid i '@internationalized/date'-pakkens format */\n onChange: (value: DateValue) => void;\n /** Label til TimePicker */\n label: string;\n /** BCP47-språkkoden til locale-en du ønsker å bruke.\n * @default Brukerenhetens selvvalgte locale\n */\n locale?: string;\n /** Viser den gjeldende tidssonen hvis en er valgt\n * @default false\n */\n showTimeZone?: boolean;\n showTime?: boolean;\n /** Tidligste gyldige datovalg.\n * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone */\n minValue?: CalendarDate;\n /** Seneste gyldige datovalg. (se minValue) */\n maxValue?: CalendarDate;\n /** Varselmelding, som vil komme under TimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Varselmelding som forteller om ugyldig dato\n * @default \"Ugyldig dato\"\n */\n validationFeedback?: string;\n /** Valideringsvariant for melding om ugyldig dato\n * @default \"error\"\n */\n validationVariant?: VariantType;\n labelTooltip?: React.ReactNode;\n disabled?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n style?: React.CSSProperties;\n [key: string]: any;\n} & Omit<\n SpectrumDateFieldProps<DateValue>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'hideTimeZone'\n | 'placeholder'\n | 'minValue'\n | 'maxValue'\n>;\n\nexport const DateField = React.forwardRef<HTMLDivElement, DateFieldProps>(\n (\n {\n selectedDate: value,\n label,\n locale: customLocale,\n showTimeZone,\n showTime,\n granularity = 'day',\n disabled,\n variant,\n feedback,\n validationVariant = 'error',\n validationFeedback = 'Ugyldig dato',\n labelTooltip,\n style,\n className,\n labelProps: parentLabelProps,\n append,\n ...rest\n },\n ref,\n ) => {\n const { locale } = useLocale();\n\n const state = useDateFieldState({\n ...rest,\n locale: customLocale ?? locale,\n createCalendar: createCalendar,\n value: value === null ? undefined : value,\n hideTimeZone: !showTimeZone,\n granularity: showTime ? 'minute' : granularity,\n });\n\n const dateFieldRef = useRef(null);\n const { labelProps, fieldProps } = useDateField(\n { ...rest, label: label, isDisabled: disabled || rest.isDisabled },\n state,\n dateFieldRef,\n );\n\n const id = useRandomId('datefield');\n\n return (\n <ConditionalWrapper\n condition={customLocale !== undefined}\n wrapper={(child: ReactNode) => (\n <I18nProvider locale={customLocale}>{child}</I18nProvider>\n )}\n >\n <BaseFormControl\n style={style}\n className={classNames('eds-datefield', className)}\n labelId={id}\n ref={mergeRefs(dateFieldRef, ref)}\n disabled={state.isDisabled}\n disableLabelAnimation\n label={label}\n labelTooltip={labelTooltip}\n labelProps={parentLabelProps ?? labelProps}\n {...fieldProps}\n variant={\n variant ?? state.validationState === 'invalid'\n ? validationVariant\n : undefined\n }\n feedback={\n feedback ?? state.validationState === 'invalid'\n ? validationFeedback\n : undefined\n }\n append={append}\n ariaAlertOnFeedback\n >\n {state.segments.map((segment, i) => (\n <FieldSegment segment={segment} state={state} key={i} />\n ))}\n </BaseFormControl>\n </ConditionalWrapper>\n );\n },\n);\n","import React, { useRef } from 'react';\n\nimport { useButton } from '@react-aria/button';\n\nimport { IconButton } from '@entur/button';\n\ntype CalendarButtonProps = {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n [key: string]: any;\n};\n\nexport const CalendarButton = ({\n children,\n className,\n style,\n ...props\n}: CalendarButtonProps) => {\n const ref = useRef(null);\n const { buttonProps } = useButton(props, ref);\n\n return (\n <IconButton {...buttonProps} ref={ref} className={className} style={style}>\n {children}\n </IconButton>\n );\n};\n","import React, { useRef } from 'react';\n\nimport { useCalendarCell } from '@react-aria/calendar';\nimport { CalendarState } from '@react-stately/calendar';\nimport {\n CalendarDate,\n getLocalTimeZone,\n isEqualDay,\n now,\n} from '@internationalized/date';\nimport classNames from 'classnames';\n\ntype CalendarCellProps = {\n state: CalendarState;\n date: CalendarDate;\n};\n\nexport const CalendarCell = ({ state, date, ...rest }: CalendarCellProps) => {\n const cellRef = useRef(null);\n\n const {\n cellProps,\n buttonProps,\n isSelected,\n isOutsideVisibleRange,\n isDisabled,\n isUnavailable,\n formattedDate,\n } = useCalendarCell({ date }, state, cellRef);\n return (\n <td {...cellProps} className=\"eds-datepicker__calendar__grid__cell__td\">\n <div\n {...buttonProps}\n ref={cellRef}\n hidden={isOutsideVisibleRange}\n className={classNames('eds-datepicker__calendar__grid__cell', {\n 'eds-datepicker__calendar__grid__cell--selected': isSelected,\n 'eds-datepicker__calendar__grid__cell--disabled':\n isDisabled || isUnavailable,\n 'eds-datepicker__calendar__grid__cell--outside-month':\n isOutsideVisibleRange,\n 'eds-datepicker__calendar__grid__cell--today': isEqualDay(\n date,\n now(state.timeZone ?? getLocalTimeZone()),\n ),\n })}\n {...rest}\n >\n {formattedDate}\n </div>\n </td>\n );\n};\n","import React from 'react';\n\nimport { useLocale } from '@react-aria/i18n';\nimport { useCalendarGrid } from '@react-aria/calendar';\nimport { CalendarState } from '@react-stately/calendar';\nimport { getWeeksInMonth } from '@internationalized/date';\n\nimport { useRandomId } from '@entur/utils';\nimport { VisuallyHidden } from '@entur/a11y';\n\nimport { CalendarCell } from './CalendarCell';\n\ntype CalendarGridProps = {\n state: CalendarState;\n navigationDescription?: string;\n};\n\nexport const CalendarGrid = ({\n state,\n navigationDescription,\n ...rest\n}: CalendarGridProps) => {\n const calendarGridId = useRandomId('eds-calendar');\n const { locale } = useLocale();\n\n const { gridProps, headerProps, weekDays } = useCalendarGrid(rest, state);\n\n const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);\n const weeksArray = Array.from(Array(weeksInMonth).keys());\n\n const weekDaysMapped = () => {\n if (locale.toLowerCase() === 'no-no' || locale.toLowerCase() === 'no')\n return ['ma', 'ti', 'on', 'to', 'fr', 'lø', 'sø'];\n if (weekDays.toString() === 'M,T,W,T,F,S,S')\n return ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n return weekDays.map(day => day.toLowerCase());\n };\n\n const getNavigationDescription = () => {\n if (navigationDescription) return navigationDescription;\n if (locale.toLowerCase().includes('en'))\n return 'Use the arrow keys to navigate between dates';\n return 'Bruk piltastene til å navigere mellom datoer';\n };\n\n return (\n <>\n <table\n {...gridProps}\n cellSpacing=\"0\"\n className=\"eds-datepicker__calendar__grid\"\n >\n <thead {...headerProps}>\n <tr>\n {weekDaysMapped().map((day, index) => (\n <th key={index}>{day}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {weeksArray.map(weekIndex => (\n <tr key={weekIndex}>\n {state\n .getDatesInWeek(weekIndex)\n .map((date, i) =>\n date ? (\n <CalendarCell\n key={i}\n state={state}\n date={date}\n aria-describedby={calendarGridId + 'description'}\n />\n ) : (\n <td key={i} />\n ),\n )}\n </tr>\n ))}\n </tbody>\n </table>\n <VisuallyHidden id={calendarGridId + 'description'}>\n {getNavigationDescription()}\n </VisuallyHidden>\n </>\n );\n};\n","import React, { ReactNode } from 'react';\n\nimport { I18nProvider, useLocale } from '@react-aria/i18n';\nimport { useCalendar } from '@react-aria/calendar';\nimport { useCalendarState } from '@react-stately/calendar';\nimport { DateValue } from '@internationalized/date';\n\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { ConditionalWrapper } from '@entur/utils';\n\nimport { ariaLabelIfNorwegian, createCalendar } from '../../shared/utils';\nimport { CalendarButton } from '../../shared/CalendarButton';\nimport { CalendarGrid } from './CalendarGrid';\n\nimport './Calendar.scss';\n\ntype CalendarProps = {\n selectedDate: DateValue;\n onChange: (SelectedDate: DateValue) => void;\n navigationDescription?: string;\n style?: React.CSSProperties;\n [key: string]: any;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n selectedDate: value,\n onChange,\n locale: customLocale,\n style,\n children: _,\n navigationDescription,\n ...rest\n },\n ref,\n ) => {\n const { locale } = useLocale();\n\n const state = useCalendarState({\n ...rest,\n onChange,\n locale: customLocale ?? locale,\n createCalendar,\n });\n const { calendarProps, prevButtonProps, nextButtonProps, title } =\n useCalendar(rest, state);\n\n return (\n <ConditionalWrapper\n condition={customLocale}\n wrapper={(child: ReactNode) => (\n <I18nProvider locale={customLocale}>{child}</I18nProvider>\n )}\n >\n <div\n {...calendarProps}\n ref={ref}\n className=\"eds-datepicker__calendar\"\n style={style}\n >\n <div className=\"eds-datepicker__calendar__header\">\n <CalendarButton\n {...prevButtonProps}\n aria-label={ariaLabelIfNorwegian(\n 'Forrige måned',\n locale,\n prevButtonProps,\n )}\n >\n <LeftArrowIcon size={20} />\n </CalendarButton>\n <h2>{title}</h2>\n <CalendarButton\n {...nextButtonProps}\n aria-label={ariaLabelIfNorwegian(\n 'Neste måned',\n locale,\n nextButtonProps,\n )}\n >\n <RightArrowIcon size={20} />\n </CalendarButton>\n </div>\n <CalendarGrid\n state={state}\n navigationDescription={navigationDescription}\n />\n </div>\n </ConditionalWrapper>\n );\n },\n);\n","import React, { ReactNode, useEffect, useRef } from 'react';\n\nimport { useDatePickerState } from '@react-stately/datepicker';\nimport { useDatePicker } from '@react-aria/datepicker';\nimport { I18nProvider } from '@react-aria/i18n';\nimport { useFloating, offset, flip, shift } from '@floating-ui/react-dom';\nimport FocusLock from 'react-focus-lock';\nimport classNames from 'classnames';\n\nimport type { CalendarDate } from '@internationalized/date';\nimport type {\n DateValue,\n SpectrumDatePickerProps,\n} from '@react-types/datepicker';\n\nimport {\n ConditionalWrapper,\n useOnClickOutside,\n useWindowDimensions,\n} from '@entur/utils';\nimport { space } from '@entur/tokens';\nimport { CalendarIcon } from '@entur/icons';\nimport { Modal } from '@entur/modal';\n\nimport type { VariantType } from '@entur/form';\n\nimport { DateField } from './DateField';\nimport { Calendar } from './Calendar';\nimport { CalendarButton } from '../../shared/CalendarButton';\n\nimport './DatePicker.scss';\n\ntype DatePickerProps = {\n /** Den valgte datoen. Dato i '@internationalized/date'-pakkens format */\n selectedDate: DateValue;\n /** Kalles når tiden endres. Dato i '@internationalized/date'-pakkens format */\n onChange: (date: DateValue) => void;\n /** Ledetekst for inputfeltet til DatePicker */\n label: string;\n /** BCP47-språkkoden til locale-en du ønsker å bruke.\n * @default Brukerenhetens selvvalgte locale\n */\n locale?: string;\n /** Viser den gjeldende tidssonen hvis en er valgt (krever at tid også vises)\n * @default false\n */\n showTimeZone?: boolean;\n /** Viser tidspunkt i tillegg til dato.\n * OBS: selectedDate må være av typen CalendarDateTime eller ZonedDateTime\n */\n showTime?: boolean;\n /** Tidligste gyldige datovalg.\n * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone. */\n minValue?: CalendarDate;\n /** Seneste gyldige datovalg.\n * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone\n *\n * OBS: Hvis du bruker dato med tid vil det være til, men ikke med denne datoen */\n maxValue?: CalendarDate;\n /** Funksjon som tar inn en dato og sier om den er utilgjengelig.\n * Eks. (date) => isWeekend(date, 'no-NO') == helgedager er ikke tilgjengelig */\n isDateUnavailable?: (date: DateValue) => boolean;\n /** Varselmelding, som vil komme under DatePicker sitt inputfelt */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Varselmelding som forteller om ugyldig dato\n * @default \"Ugyldig dato\"\n */\n validationFeedback?: string;\n /** Valideringsvariant for melding om ugyldig dato\n * @default \"error\"\n */\n validationVariant?: VariantType;\n disabled?: boolean;\n /** Hvis true vil kalenderen alltid vises i en popover når den åpnes\n * @default false\n */\n disableModal?: boolean;\n labelTooltip?: React.ReactNode;\n /** Skjermlesertest som forklarer navigasjon i kalenderen. Oversettes automatisk for engelsk locale, men ikke andre språk.\n * @default 'Bruk piltastene til å navigere mellom datoer'\n */\n navigationDescription?: string;\n /** Ekstra klassenavn */\n className?: string;\n style?: React.CSSProperties;\n} & Omit<\n SpectrumDatePickerProps<DateValue>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'hideTimeZone'\n | 'placeholder'\n | 'minValue'\n | 'maxValue'\n>;\n\nexport const DatePickerBeta = ({\n selectedDate: value,\n onChange,\n locale,\n disabled: isDisabled,\n showTime,\n showTimeZone = false,\n className,\n style,\n variant,\n feedback,\n validationVariant,\n validationFeedback,\n disableModal = false,\n labelTooltip,\n navigationDescription,\n ...rest\n}: DatePickerProps) => {\n const CALENDAR_MODAL_MAX_SCREEN_WIDTH = 1000;\n const datePickerRef = useRef<HTMLDivElement | null>(null);\n const calendarRef = useRef<HTMLDivElement | null>(null);\n const dateFieldRef = useRef<HTMLDivElement | null>(null);\n\n const { width } = useWindowDimensions();\n\n const state = useDatePickerState({\n ...rest,\n value,\n onChange,\n });\n const {\n groupProps,\n labelProps,\n fieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDatePicker({ isDisabled, ...rest }, state, datePickerRef);\n\n useEffect(() => {\n const keyDownHandler = (event: KeyboardEvent) => {\n if (event.key === 'Escape') state.setOpen(false);\n };\n calendarRef.current?.addEventListener('keydown', keyDownHandler);\n return () =>\n calendarRef.current?.removeEventListener('keydown', keyDownHandler);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // calculations for floating-UI popover position\n const { x, y, reference, floating, strategy } = useFloating({\n placement: 'bottom-start',\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({ padding: space.extraSmall }),\n ],\n });\n\n useOnClickOutside([calendarRef], () => {\n state.setOpen(false);\n });\n\n const handleCalendarButtonOnClick = (calendarIsOpen: boolean) => {\n if (!calendarIsOpen) {\n state.setOpen(true);\n setFocusToRelevantDate();\n } else {\n state.setOpen(false);\n }\n };\n\n const setFocusToRelevantDate = () => {\n const gridCellPrefix = 'eds-datepicker__calendar__grid__cell';\n\n const selectedCell = calendarRef.current?.getElementsByClassName(\n gridCellPrefix + '--selected',\n )[0] as HTMLElement | undefined;\n const todayCell = calendarRef.current?.getElementsByClassName(\n gridCellPrefix + '--today',\n )[0] as HTMLElement | undefined;\n\n if (selectedCell) selectedCell.focus();\n else if (todayCell) todayCell.focus();\n };\n\n const popoverCalendar = (\n <FocusLock disabled={!state.isOpen} returnFocus>\n <Calendar\n {...dialogProps}\n {...calendarProps}\n onChange={(dateValue: DateValue) => {\n onChange(dateValue);\n state.setOpen(false);\n }}\n disabled={calendarProps.isDisabled}\n ref={node => {\n calendarRef.current = node;\n floating(node);\n }}\n navigationDescription={navigationDescription}\n // styling for floating-UI popover\n style={{\n display: state.isOpen ? 'block' : 'none',\n position: strategy,\n top: y ?? 0,\n left: x ?? 0,\n zIndex: 10,\n }}\n />\n </FocusLock>\n );\n\n const modalCalendar = (\n <Modal\n size={'small'}\n title=\"\"\n open={state.isOpen}\n onDismiss={() => state.setOpen(false)}\n closeOnClickOutside\n className=\"eds-datepicker__calendar-modal\"\n >\n <Calendar\n {...dialogProps}\n {...calendarProps}\n onChange={(dateValue: DateValue) => {\n onChange(dateValue);\n state.setOpen(false);\n }}\n disabled={calendarProps.isDisabled}\n ref={calendarRef}\n navigationDescription={navigationDescription}\n />\n </Modal>\n );\n\n return (\n <ConditionalWrapper\n condition={locale !== undefined}\n wrapper={(child: ReactNode) => (\n <I18nProvider locale={locale}>{child}</I18nProvider>\n )}\n >\n <div className={classNames('eds-datepicker', className)}>\n <div\n {...groupProps}\n ref={node => {\n datePickerRef.current = node;\n reference(node);\n }}\n className=\"eds-datepicker__datefield__wrapper\"\n >\n <DateField\n {...fieldProps}\n selectedDate={state.value}\n label={rest.label}\n labelProps={labelProps}\n showTime={showTime}\n showTimeZone={showTimeZone}\n ref={dateFieldRef}\n variant={variant}\n feedback={feedback}\n validationVariant={validationVariant}\n validationFeedback={validationFeedback}\n labelTooltip={labelTooltip}\n className={classNames('eds-datepicker__datefield', {\n 'eds-datepicker__datefield--disabled': fieldProps.isDisabled,\n })}\n />\n {!fieldProps.isDisabled && (\n <CalendarButton\n {...buttonProps}\n onPress={() => handleCalendarButtonOnClick(state.isOpen)}\n className=\"eds-datepicker__open-calendar-button\"\n >\n <CalendarIcon />\n </CalendarButton>\n )}\n {width > CALENDAR_MODAL_MAX_SCREEN_WIDTH || disableModal\n ? popoverCalendar\n : modalCalendar}\n </div>\n </div>\n </ConditionalWrapper>\n );\n};\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { DateIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nexport type NativeDatePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeDatePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeDatePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeDatePicker = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerProps\n>(\n (\n {\n className,\n style,\n label,\n onChange,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <DateIcon inline />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativedatepickerId = useRandomId('eds-nativetimepicker');\n return (\n <BaseFormControl\n style={style}\n className={className}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativedatepickerId}\n disableLabelAnimation={disableLabelAnimation}\n isFilled\n >\n <NativeDatePickerBase\n onChange={onChange}\n aria-labelledby={nativedatepickerId}\n ref={ref}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeDatePickerBaseProps = {\n onChange?: any;\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeDatePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerBaseProps\n>(({ onChange, variant, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isDatepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isDatepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isDatepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"date\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { IconButton } from '@entur/button';\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\n\ntype TimePickerArrowButtonProps = {\n direction: 'left' | 'right';\n} & React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n>;\n\nexport const TimePickerArrowButton: React.FC<TimePickerArrowButtonProps> = ({\n direction,\n onClick,\n disabled,\n 'aria-label': ariaLabel,\n}) => {\n return (\n <IconButton\n className={classNames(\n 'eds-timepicker__arrowbutton',\n `eds-timepicker__arrowbutton--${direction}`,\n { 'eds-timepicker__arrowbutton--disabled': disabled },\n )}\n type=\"button\"\n tabIndex={-1}\n onClick={onClick}\n aria-label={ariaLabel}\n disabled={disabled}\n >\n {direction === 'left' ? <LeftArrowIcon /> : <RightArrowIcon />}\n </IconButton>\n );\n};\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { useTimeField } from '@react-aria/datepicker';\nimport { I18nProvider, useLocale } from '@react-aria/i18n';\nimport { useTimeFieldState } from '@react-stately/datepicker';\nimport { getLocalTimeZone, now } from '@internationalized/date';\n\nimport type {\n TimePickerProps as ReactAriaTimePickerProps,\n TimeValue,\n} from '@react-types/datepicker';\n\nimport { BaseFormControl, VariantType } from '@entur/form';\nimport { useRandomId, mergeRefs } from '@entur/utils';\n\nimport { FieldSegment } from '../shared/FieldSegment';\nimport { TimePickerArrowButton } from './TimePickerArrowButton';\n\nimport './TimePicker.scss';\n\nexport type TimePickerProps = {\n /** Den valgte tiden. Tid i '@internationalized/date'-pakkens format */\n selectedTime: TimeValue | null;\n /** Kalles når tiden endres. Tid i '@internationalized/date'-pakkens format */\n onChange: (value: TimeValue) => void;\n /** Label til TimePicker */\n label: string;\n /** Minutter som legges til eller trekkes fra ved klikk på pilene i TimePicker\n * @default 30\n */\n minuteIncrementForArrowButtons?: number;\n /** BCP47-språkkoden til locale-en du ønsker å bruke.\n * @default Brukerenhetens selvvalgte locale\n */\n locale?: string;\n /** Viser den gjeldende tidssonen hvis en er valgt\n * @default false\n */\n showTimeZone?: boolean;\n /** Aria-label for venstrepil-knappen som trekker fra tid\n * @default `Trekk fra ${minuteIncrementForArrowButtons} minutter`\n */\n leftArrowButtonAriaLabel?: string;\n /** Aria-label for høyrepil-knappen som legger til tid\n * @default `Legg til ${minuteIncrementForArrowButtons} minutter`\n */\n rightArrowButtonAriaLabel?: string;\n /** Varselmelding, som vil komme under TimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n labelTooltip?: React.ReactNode;\n disabled?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n style?: React.CSSProperties;\n} & Omit<\n ReactAriaTimePickerProps<TimeValue>,\n 'onChange' | 'label' | 'hideTimeZone' | 'placeholder'\n>;\n\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n selectedTime,\n onChange,\n disabled,\n className,\n style,\n label,\n labelTooltip,\n feedback,\n variant,\n locale: customLocale,\n showTimeZone,\n minuteIncrementForArrowButtons = 30,\n leftArrowButtonAriaLabel = `Trekk fra ${minuteIncrementForArrowButtons} minutter`,\n rightArrowButtonAriaLabel = `Legg til ${minuteIncrementForArrowButtons} minutter`,\n ...rest\n },\n ref,\n ) => {\n let { locale } = useLocale();\n if (customLocale) locale = customLocale;\n\n const state = useTimeFieldState({\n onChange,\n label: label,\n locale,\n value: selectedTime === null ? undefined : selectedTime,\n hideTimeZone: !showTimeZone,\n isDisabled: disabled,\n ...rest,\n });\n const timeFieldRef = useRef(null);\n const { labelProps, fieldProps } = useTimeField(\n { ...rest, label: label },\n state,\n timeFieldRef,\n );\n const id = useRandomId('timepicker');\n\n const handleOnClickArrowButton = (minutes: number) => {\n if (someSegmentIsUndefined) {\n setTimeToNearestMinuteIncrement();\n } else {\n addMinutesToSelectedTime(minutes);\n }\n };\n\n const someSegmentIsUndefined = state.segments.some(\n segment => segment.text === '––',\n );\n\n const setTimeToNearestMinuteIncrement = () => {\n const currentTime = now(getLocalTimeZone());\n const roundedMinute =\n Math.floor(currentTime.minute / minuteIncrementForArrowButtons) *\n minuteIncrementForArrowButtons;\n const newTime = currentTime.set({ minute: roundedMinute });\n onChange(newTime);\n };\n\n const addMinutesToSelectedTime = (minutes: number) => {\n state.value &&\n state.setValue(\n state.value?.add({\n minutes: minutes,\n }),\n );\n };\n\n return (\n <I18nProvider locale={locale}>\n <div className={classNames(className, 'eds-timepicker__wrapper')}>\n <TimePickerArrowButton\n direction=\"left\"\n disabled={disabled}\n aria-label={leftArrowButtonAriaLabel}\n onClick={() =>\n handleOnClickArrowButton(minuteIncrementForArrowButtons * -1)\n }\n />\n <BaseFormControl\n style={style}\n className={'eds-timepicker'}\n labelId={id}\n label={label}\n labelProps={{ ...labelProps }}\n ref={mergeRefs(timeFieldRef, ref)}\n disabled={disabled}\n disableLabelAnimation\n labelTooltip={labelTooltip}\n {...fieldProps}\n variant={variant}\n feedback={feedback}\n >\n {state.segments.map((segment, i) => (\n <FieldSegment segment={segment} state={state} key={i} />\n ))}\n </BaseFormControl>\n <TimePickerArrowButton\n direction=\"right\"\n disabled={disabled}\n aria-label={rightArrowButtonAriaLabel}\n onClick={() =>\n handleOnClickArrowButton(minuteIncrementForArrowButtons)\n }\n />\n </div>\n </I18nProvider>\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nimport './NativeTimePicker.scss';\n\nexport type NativeTimePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeTimePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeTimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Tekst eller ikon som kommer før inputfelter */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeTimePicker = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerProps\n>(\n (\n { className, style, onChange, label, feedback, variant, prepend, ...rest },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativetimepickerId = useRandomId('eds-native-timepicker');\n return (\n <BaseFormControl\n style={style}\n className={classNames(className, 'eds-native-timepicker')}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativetimepickerId}\n disableLabelAnimation\n >\n <NativeTimePickerBase\n onChange={onChange}\n aria-labelledby={nativetimepickerId}\n ref={ref}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeTimePickerBaseProps = {\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeTimePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerBaseProps\n>(({ onChange, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = rest.variant || contextVariant;\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isTimepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isTimepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"time\"\n className=\"eds-form-control\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('datepicker', 'form', 'icons');\n\nexport * from './DatePicker';\nexport * from './NativeDatePicker';\nexport * from './TimePicker';\nexport * from './shared';\n"],"names":["DatePickerHeader","date","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","nextMonthAriaLabel","previousMonthAriaLabel","locale","currentMonthIndex","getMonth","React","className","IconButton","type","onClick","disabled","getMonthName","LeftArrowIcon","Heading3","getFullYear","RightArrowIcon","monthIndex","year","Date","formatter","Intl","DateTimeFormat","code","month","format","DatePickerInput","forwardRef","ref","style","label","inputPlaceholder","prepend","feedback","variant","calendarButtonTooltipOpen","calendarButtonTooltipClose","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","rest","useEffect","current","addEventListener","handleOnKeyDown","handleOnBlur","handleOnFocus","removeEventListener","event","requestAnimationFrame","select","handleOnClickInputField","handleOnClickCalendarButton","calendarButtonAriaLabel","buttonStateText","currentSelectionText","value","TextField","placeholder","mergeRefs","ariaAlertOnFeedback","append","Tooltip","placement","content","disableHoverListener","disableFocusListener","id","tabIndex","CalendarIcon","registerLocale","nb","DatePicker","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","validationFeedback","validationVariant","hideCalendar","hideValidation","weekLabel","chooseDayAriaLabelPrefix","open","datepickerId","useRandomId","datepickerRef","useRef","calendarButton","document","getElementById","useState","showValidation","setShowValidation","shouldFocusOnCalendarButtonAfterSelect","validateInput","handleOnChange","focus","key","datePickerGUIIsOpen","forceUpdateInputFormat","focusAndSelectInputField","handleOnClickOutside","handleOnBlurInput","inputValue","inputValueParsedWithAllDateFormats","map","parse","parsedDateFromInputIsTheSameAsSelectedDate","some","dateFormat","isSameDay","getFeedbackAndVariant","undefined","setState","setOpen","datepickerGUIWrapper","calendar","componentNode","dateToSetFocusTo","querySelector","setBlur","preventScroll","isCalendarOpen","ReactDatepicker","selected","showWeekNumbers","onClickOutside","ariaLabelledBy","showPopperArrow","preventOpenOnFocus","calendarClassName","dayClassName","weekDayClassName","classNames","highlightDates","renderCustomHeader","changeYear","changeMonth","customInput","onFocus","FieldSegment","segment","state","useDateSegment","segmentProps","is12HourFormatted","segments","text","segmentDisplayText","match","padStart","isPlaceholder","isDisabled","nativeDateToTimeValue","noDateOnlyTime","timeZone","offset","ZonedDateTime","getDate","getHours","getMinutes","getSeconds","parseAbsolute","toISOString","Time","CalendarDateTime","timeValueToNativeDate","time","timeZoneForCalendarDateTime","day","setHours","hour","setMinutes","minute","setSeconds","second","toDate","createCalendar","identifier","GregorianCalendar","Error","ariaLabelIfNorwegian","norwegianAriaLabel","propsCollection","toLowerCase","DateField","customLocale","showTimeZone","showTime","granularity","labelTooltip","parentLabelProps","labelProps","useLocale","useDateFieldState","hideTimeZone","dateFieldRef","useDateField","fieldProps","ConditionalWrapper","condition","wrapper","child","I18nProvider","BaseFormControl","labelId","validationState","i","CalendarButton","children","props","useButton","buttonProps","CalendarCell","cellRef","useCalendarCell","cellProps","isSelected","isOutsideVisibleRange","isUnavailable","formattedDate","hidden","isEqualDay","now","getLocalTimeZone","CalendarGrid","navigationDescription","calendarGridId","useCalendarGrid","gridProps","headerProps","weekDays","weeksInMonth","getWeeksInMonth","visibleRange","start","weeksArray","Array","from","keys","weekDaysMapped","toString","getNavigationDescription","includes","cellSpacing","index","weekIndex","getDatesInWeek","VisuallyHidden","Calendar","useCalendarState","useCalendar","calendarProps","prevButtonProps","nextButtonProps","title","size","DatePickerBeta","disableModal","CALENDAR_MODAL_MAX_SCREEN_WIDTH","datePickerRef","calendarRef","useWindowDimensions","width","useDatePickerState","useDatePicker","groupProps","dialogProps","keyDownHandler","useFloating","middleware","space","extraSmall","flip","shift","padding","x","y","reference","floating","strategy","useOnClickOutside","handleCalendarButtonOnClick","calendarIsOpen","setFocusToRelevantDate","gridCellPrefix","selectedCell","getElementsByClassName","todayCell","popoverCalendar","FocusLock","isOpen","returnFocus","dateValue","node","display","position","top","left","zIndex","modalCalendar","Modal","onDismiss","closeOnClickOutside","onPress","NativeDatePicker","DateIcon","nativedatepickerId","isFilled","NativeDatePickerBase","contextVariant","useVariant","currentVariant","useInputGroupContext","isDatepickerFilled","setFiller","setFilled","useOnMount","handleChange","target","TimePickerArrowButton","direction","ariaLabel","TimePicker","selectedTime","minuteIncrementForArrowButtons","leftArrowButtonAriaLabel","rightArrowButtonAriaLabel","useTimeFieldState","timeFieldRef","useTimeField","handleOnClickArrowButton","minutes","someSegmentIsUndefined","setTimeToNearestMinuteIncrement","addMinutesToSelectedTime","currentTime","roundedMinute","Math","floor","newTime","set","setValue","add","NativeTimePicker","nativetimepickerId","NativeTimePickerBase","isTimepickerFilled","warnAboutMissingStyles"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),a=require("react-datepicker"),n=require("date-fns"),l=require("date-fns/locale"),r=require("classnames"),d=require("@entur/icons"),i=require("@entur/typography"),o=require("@entur/button"),u=require("@entur/form"),s=require("@entur/tooltip");require("react-datepicker/dist/react-datepicker.css");var c=require("@react-stately/datepicker"),f=require("@react-aria/datepicker"),m=require("@react-aria/i18n"),p=require("@internationalized/date"),b=require("@react-aria/calendar"),v=require("@react-stately/calendar"),_=require("@react-aria/button"),g=require("@floating-ui/react-dom"),h=require("react-focus-lock"),k=require("@entur/tokens");function y(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var C=y(t),E=y(a),w=y(r),D=y(h);function I(){return I=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},I.apply(this,arguments)}function L(e,t){if(null==e)return{};var a,n,l={},r=Object.keys(e);for(n=0;n<r.length;n++)t.indexOf(a=r[n])>=0||(l[a]=e[a]);return l}var B=function(e){var t,a=e.date,n=e.decreaseMonth,l=e.increaseMonth,r=e.prevMonthButtonDisabled,u=e.nextMonthButtonDisabled,s=e.nextMonthAriaLabel,c=e.previousMonthAriaLabel,f=e.locale,m=null!=(t=null==a?void 0:a.getMonth())?t:0;return C.default.createElement("div",{className:"eds-datepicker__calender__header"},C.default.createElement(o.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--left",onClick:n,disabled:r,"aria-label":c+" ("+N(m-1,f)+")"},C.default.createElement(d.LeftArrowIcon,null)),C.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},N(m,f)),C.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},null==a?void 0:a.getFullYear()),C.default.createElement(o.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--right",onClick:l,disabled:u,"aria-label":s+" ("+N(m+1,f)+")"},C.default.createElement(d.RightArrowIcon,null)))};function N(e,t){var a=(new Date).getFullYear();return new Intl.DateTimeFormat(t.code,{month:"long"}).format(new Date(a,e))}var A=["style","label","inputPlaceholder","prepend","feedback","variant","disabled","calendarButtonTooltipOpen","calendarButtonTooltipClose","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","forwardRef","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","placeholder","onClick","aria-labelledby"],T=C.default.forwardRef((function(t,a){var n=t.style,l=t.label,r=t.inputPlaceholder,i=t.prepend,c=t.feedback,f=t.variant,m=t.disabled,p=t.calendarButtonTooltipOpen,b=t.calendarButtonTooltipClose,v=t.hideCalendarButton,_=t.disableLabelAnimation,g=t.inputRef,h=t.calendarButtonId,k=t.forwardRef,y=t.toggleCalendarGUI,E=t.onKeyDownInput,w=t.onBlurInput,D=t.selectedDate,B=t.setFocusToCalendarGUI,N=t.setShouldFocusOnCalendarButtonAfterSelect,T=t.calendarGUIIsOpen,x=t.onClick,F=L(t,A);function M(e){E(e)}function P(e){w(e)}C.default.useEffect((function(){var e,t,a;return null==(e=g.current)||e.addEventListener("keydown",M),null==(t=g.current)||t.addEventListener("blur",P),null==(a=g.current)||a.addEventListener("focus",R),function(){var e,t,a;null==(e=g.current)||e.removeEventListener("keydown",M),null==(t=g.current)||t.removeEventListener("blur",P),null==(a=g.current)||a.removeEventListener("focus",R)}}),[g,D]);var O,R=function(){return requestAnimationFrame((function(){var e;return null==(e=g.current)?void 0:e.select()}))};return C.default.createElement(u.TextField,I({style:n,label:l,placeholder:r,prepend:i,feedback:c,variant:f,disableLabelAnimation:_,ref:e.mergeRefs(a,g,k),onClick:function(e){N(!1),x&&x(e)},ariaAlertOnFeedback:!0,append:!v&&C.default.createElement(s.Tooltip,{placement:"top",content:T()?b:p,disableHoverListener:m,disableFocusListener:m},C.default.createElement(o.IconButton,{id:h,type:"button",onClick:function(){y(),B(),N(!0)},tabIndex:T()?-1:0,"aria-label":(T()?b:p)+", "+(D?(null==(O=g.current)?void 0:O.value)+" valgt":"Ingen dato valgt")},C.default.createElement(d.CalendarIcon,null)))},F))})),x=["style","className","selectedDate","label","placeholder","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","disabled","prepend","feedback","variant","validationFeedback","validationVariant","disableLabelAnimation","calendarButtonTooltipOpen","calendarButtonTooltipClose","hideCalendarButton","hideCalendar","hideValidation","weekLabel","chooseDayAriaLabelPrefix","previousMonthAriaLabel","nextMonthAriaLabel","locale","open"];a.registerLocale("nb",l.nb);var F=C.default.forwardRef((function(a,r){var d=a.style,i=a.className,o=a.selectedDate,u=a.label,s=a.placeholder,c=void 0===s?"dd.mm.yyyy":s,f=a.onChange,m=a.onKeyDown,p=void 0===m?function(){return null}:m,b=a.dateFormats,v=void 0===b?["dd.MM.yyyy","ddMMyyyy","dd/MM/yyyy","ddMMyy"]:b,_=a.minDate,g=a.maxDate,h=a.inline,k=void 0!==h&&h,y=a.disabled,D=a.prepend,N=a.feedback,A=void 0===N?"":N,F=a.variant,M=a.validationFeedback,P=void 0===M?"Ugyldig dato":M,O=a.validationVariant,R=void 0===O?"error":O,S=a.disableLabelAnimation,q=void 0!==S&&S,G=a.calendarButtonTooltipOpen,U=void 0===G?"Åpne kalender":G,V=a.calendarButtonTooltipClose,Z=void 0===V?"Lukk kalender":V,H=a.hideCalendarButton,Y=void 0!==H&&H,j=a.hideCalendar,K=void 0!==j&&j,W=a.hideValidation,z=void 0!==W&&W,J=a.weekLabel,Q=void 0===J?"uke":J,X=a.chooseDayAriaLabelPrefix,$=void 0===X?"Velg":X,ee=a.previousMonthAriaLabel,te=void 0===ee?"Forrige måned":ee,ae=a.nextMonthAriaLabel,ne=void 0===ae?"Neste måned":ae,le=a.locale,re=void 0===le?l.nb:le,de=a.open,ie=L(a,x),oe=e.useRandomId("eds-datepicker"),ue=t.useRef(null),se=C.default.useRef(null),ce=document.getElementById(oe+"-button"),fe=t.useState(!1),me=fe[0],pe=fe[1],be=t.useState(!1),ve=be[0],_e=be[1];C.default.useEffect((function(){return ge()}),[o]);var ge=function(){var e;pe(!1);var t=null==(e=se.current)?void 0:e.value;if(t){var a=v.map((function(e){return n.parse(t,e,new Date,{locale:re})})),l=o&&a.some((function(e){return n.isSameDay(e,o)}));pe(!l)}},he=function(){return A?{feedback:A,variant:F}:!z&&me?{feedback:P,variant:R}:{feedback:"",variant:void 0}},ke=function(){return requestAnimationFrame((function(){var e;return null==(e=se.current)?void 0:e.select()}))},ye=function(){var e;return null==(e=ue.current)?void 0:e.setState({inputValue:null})},Ce=function(){var e;return null==(e=ue.current)?void 0:e.setOpen(!Ee())},Ee=function(){var e;return null==(e=ue.current)?void 0:e.isCalendarOpen()};return C.default.createElement(C.default.Fragment,null,C.default.createElement(E.default,I({selected:o,minDate:_,maxDate:g,dateFormat:v,showWeekNumbers:!0,weekLabel:Q,onChange:function(e,t){var a;ve&&!Y?(null==ce||ce.focus(),_e(!1)):null==(a=se.current)||a.focus(),f(e,t)},onClickOutside:function(){return _e(!1)},id:oe,ariaLabelledBy:oe,showPopperArrow:!1,locale:re,inline:k,disabled:y,preventOpenOnFocus:!0,chooseDayAriaLabelPrefix:$,open:!K&&de,ref:ue,calendarClassName:"eds-datepicker__calender",dayClassName:function(){return"eds-datepicker__calender__day"},weekDayClassName:function(){return"eds-datepicker__calender__day-name"},className:w.default(i,"eds-datepicker__input"),highlightDates:[{"eds-datepicker__calender__day--today":[new Date]},{"eds-datepicker__calender__day--selected":o?[o]:[]}],renderCustomHeader:function(e){return C.default.createElement(B,{date:e.date,changeYear:e.changeYear,changeMonth:e.changeMonth,increaseMonth:e.increaseMonth,decreaseMonth:e.decreaseMonth,prevMonthButtonDisabled:e.prevMonthButtonDisabled,nextMonthButtonDisabled:e.nextMonthButtonDisabled,previousMonthAriaLabel:te,nextMonthAriaLabel:ne,locale:re})},customInput:C.default.createElement(T,{style:d,label:u,inputPlaceholder:c,calendarButtonTooltipOpen:U,calendarButtonTooltipClose:Z,prepend:D,feedback:he().feedback,variant:he().variant,inputRef:se,calendarButtonId:oe+"-button",forwardRef:r,onKeyDownInput:function(e){pe(!1),"Enter"===e.key?(Ee()||(ge(),ye()),ke()):"Tab"===e.key&&Ee()?ye():"Escape"===e.key&&(ye(),ke(),Ee()&&Ce()),p(e)},onBlurInput:function(){Ee()||(ge(),ye())},onFocus:void 0,toggleCalendarGUI:Ce,setFocusToCalendarGUI:function(){k||K||Ee()||(requestAnimationFrame((function(){var e,t,a=(null==(e=ue.current)?void 0:e.calendar.componentNode).querySelector(o?'.eds-datepicker__calender__day[tabindex="0"]':'.eds-datepicker__calender__day[aria-current="date"]');null!==a&&(null==(t=ue.current)||t.setBlur(),a.focus({preventScroll:!0}))})),_e(!0),pe(!1))},setShouldFocusOnCalendarButtonAfterSelect:_e,calendarGUIIsOpen:Ee,disableLabelAnimation:q,hideCalendarButton:Y,selectedDate:o})},ie)))})),M=function(e){var a=e.segment,n=e.state,l=t.useRef(null),r=f.useDateSegment(a,n,l).segmentProps,d=n.segments.some((function(e){return"AM"===e.text||"PM"===e.text}));return C.default.createElement("div",I({},r,{ref:l,className:w.default("eds-date-and-time-field__segment",{"eds-date-and-time-field__segment--placeholder":a.isPlaceholder,"eds-date-and-time-field__segment--dot-separator":"."===a.text}),tabIndex:n.isDisabled?-1:r.tabIndex}),d?a.text:a.text.match(/\d+/)?a.text.padStart(2,"0"):a.text)},P=function(e){if(void 0===e&&(e="gregory"),"gregory"===e)return new p.GregorianCalendar;throw new Error("Unsupported calendar "+e)},O=function(e,t,a){return"no-NO"!==t?a["aria-label"]:e},R=["selectedDate","label","showTimeZone","showTime","granularity","disabled","variant","feedback","labelTooltip","style","className","labelProps","append"],S=C.default.forwardRef((function(a,n){var l=a.selectedDate,r=a.label,d=a.showTimeZone,i=a.showTime,o=a.granularity,s=void 0===o?"day":o,p=a.disabled,b=a.variant,v=a.feedback,_=a.labelTooltip,g=a.style,h=a.className,k=a.labelProps,y=a.append,E=L(a,R),D=m.useLocale(),B=c.useDateFieldState(I({},E,{locale:D.locale,createCalendar:P,value:null===l?void 0:l,hideTimeZone:!d,granularity:i?"minute":s})),N=t.useRef(null),A=f.useDateField(I({},E,{label:r,isDisabled:p||E.isDisabled}),B,N),T=A.labelProps,x=A.fieldProps,F=e.useRandomId("datefield");return C.default.createElement(u.BaseFormControl,I({style:g,className:w.default("eds-datefield",h),labelId:F,ref:e.mergeRefs(N,n),disabled:B.isDisabled,disableLabelAnimation:!0,label:r,labelTooltip:_,labelProps:null!=k?k:T},x,{variant:b,feedback:v,append:y}),B.segments.map((function(e,t){return C.default.createElement(M,{segment:e,state:B,key:t})})))})),q=["children","className","style"],G=function(e){var a=e.children,n=e.className,l=e.style,r=L(e,q),d=t.useRef(null),i=_.useButton(r,d);return C.default.createElement(o.IconButton,I({},i.buttonProps,{ref:d,className:n,style:l}),a)},U=function(e){var a,n=e.state,l=e.date,r=t.useRef(null),d=b.useCalendarCell({date:l},n,r),i=d.buttonProps,o=d.isSelected,u=d.isOutsideVisibleRange,s=d.isDisabled,c=d.isUnavailable,f=d.formattedDate;return C.default.createElement("td",I({},d.cellProps,{className:"eds-datepicker__calendar__grid__cell__td"}),C.default.createElement("div",I({},i,{ref:r,hidden:u,className:w.default("eds-datepicker__calendar__grid__cell",{"eds-datepicker__calendar__grid__cell--selected":o,"eds-datepicker__calendar__grid__cell--disabled":s,"eds-datepicker__calendar__grid__cell--unavailable":c,"eds-datepicker__calendar__grid__cell--today":p.isEqualDay(l,p.now(null!=(a=n.timeZone)?a:p.getLocalTimeZone()))})}),f))},V=["state"],Z=function(e){var t=e.state,a=L(e,V),n=m.useLocale().locale,l=b.useCalendarGrid(a,t),r=l.gridProps,d=l.headerProps,i=l.weekDays,o=p.getWeeksInMonth(t.visibleRange.start,n),u=Array.from(Array(o).keys());return C.default.createElement("table",I({},r,{cellSpacing:"0",className:"eds-datepicker__calendar__grid"}),C.default.createElement("thead",I({},d),C.default.createElement("tr",null,("no-no"===n.toLowerCase()||"no"===n.toLowerCase()?["ma","ti","on","to","fr","lø","sø"]:"M,T,W,T,F,S,S"===i.toString()?["Mo","Tu","We","Th","Fr","Sa","Su"]:i.map((function(e){return e.toLowerCase()}))).map((function(e,t){return C.default.createElement("th",{key:t},e)})))),C.default.createElement("tbody",null,u.map((function(e){return C.default.createElement("tr",{key:e},t.getDatesInWeek(e).map((function(e,a){return e?C.default.createElement(U,{key:a,state:t,date:e}):C.default.createElement("td",{key:a})})))}))))},H=["selectedDate","style","children"],Y=C.default.forwardRef((function(e,t){var a=e.style,n=L(e,H),l=m.useLocale().locale,r=v.useCalendarState(I({},n,{locale:l,createCalendar:P})),i=b.useCalendar(n,r),o=i.prevButtonProps,u=i.nextButtonProps,s=i.title;return C.default.createElement("div",I({},i.calendarProps,{ref:t,className:"eds-datepicker__calendar",style:a}),C.default.createElement("div",{className:"eds-datepicker__calendar__header"},C.default.createElement(G,I({},o,{"aria-label":O("Forrige måned",l,o)}),C.default.createElement(d.LeftArrowIcon,{size:20})),C.default.createElement("h2",null,s),C.default.createElement(G,I({},u,{"aria-label":O("Neste måned",l,u)}),C.default.createElement(d.RightArrowIcon,{size:20}))),C.default.createElement(Z,{state:r}))})),j=["selectedDate","onChange","disabled","className","style","variant","feedback"],K=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],W=["onChange","variant","value"],z=C.default.forwardRef((function(t,a){var n=t.className,l=t.style,r=t.label,i=t.onChange,o=t.feedback,s=t.variant,c=t.disableLabelAnimation,f=t.prepend,m=void 0===f?C.default.createElement(d.DateIcon,{inline:!0}):f,p=L(t,K),b=e.useRandomId("eds-nativetimepicker");return C.default.createElement(u.BaseFormControl,{style:l,className:n,prepend:m,label:r,feedback:o,variant:s,labelId:b,disableLabelAnimation:c,isFilled:!0},C.default.createElement(J,I({onChange:i,"aria-labelledby":b,ref:a,variant:s},p)))})),J=C.default.forwardRef((function(t,a){var n=t.onChange,l=t.variant,r=t.value,d=L(t,W),i=u.useVariant(),o=l||i,s=u.useInputGroupContext(),c=s.isFilled,f=s.setFilled;return e.useOnMount((function(){f&&!c&&f(!0)})),C.default.useEffect((function(){r?f&&!c&&f(!0):f&&c&&f(!1)}),[r,f,c]),C.default.createElement("input",I({ref:a,"aria-invalid":"error"===o,type:"date",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?f&&!c&&f(!0):f&&c&&f(!1),n&&n(e)},value:r},d))})),Q=function(e){var t=e.direction,a=e.onClick,n=e.disabled,l=e["aria-label"];return C.default.createElement(o.IconButton,{className:w.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+t,{"eds-timepicker__arrowbutton--disabled":n}),type:"button",tabIndex:-1,onClick:a,"aria-label":l,disabled:n},C.default.createElement("left"===t?d.LeftArrowIcon:d.RightArrowIcon,null))},X=["selectedTime","onChange","disabled","className","style","label","labelTooltip","feedback","variant","locale","showTimeZone","minuteIncrementForArrowButtons","leftArrowButtonAriaLabel","rightArrowButtonAriaLabel"],$=C.default.forwardRef((function(a,n){var l=a.selectedTime,r=a.onChange,d=a.disabled,i=a.className,o=a.style,s=a.label,b=a.labelTooltip,v=a.feedback,_=a.variant,g=a.locale,h=a.showTimeZone,k=a.minuteIncrementForArrowButtons,y=void 0===k?30:k,E=a.leftArrowButtonAriaLabel,D=void 0===E?"Trekk fra "+y+" minutter":E,B=a.rightArrowButtonAriaLabel,N=void 0===B?"Legg til "+y+" minutter":B,A=L(a,X),T=m.useLocale().locale;g&&(T=g);var x=c.useTimeFieldState(I({onChange:r,label:s,locale:T,value:null===l?void 0:l,hideTimeZone:!h,isDisabled:d},A)),F=t.useRef(null),P=f.useTimeField(I({},A,{label:s}),x,F),O=P.labelProps,R=P.fieldProps,S=e.useRandomId("timepicker"),q=function(e){G?U():V(e)},G=x.segments.some((function(e){return"––"===e.text})),U=function(){var e=p.now(p.getLocalTimeZone()),t=Math.floor(e.minute/y)*y,a=e.set({minute:t});r(a)},V=function(e){var t;x.value&&x.setValue(null==(t=x.value)?void 0:t.add({minutes:e}))};return C.default.createElement(m.I18nProvider,{locale:T},C.default.createElement("div",{className:w.default(i,"eds-timepicker__wrapper")},C.default.createElement(Q,{direction:"left",disabled:d,"aria-label":D,onClick:function(){return q(-1*y)}}),C.default.createElement(u.BaseFormControl,I({style:o,className:"eds-timepicker",labelId:S,label:s,labelProps:I({},O),ref:e.mergeRefs(F,n),disabled:d,disableLabelAnimation:!0,labelTooltip:b},R,{variant:_,feedback:v}),x.segments.map((function(e,t){return C.default.createElement(M,{segment:e,state:x,key:t})}))),C.default.createElement(Q,{direction:"right",disabled:d,"aria-label":N,onClick:function(){return q(y)}})))})),ee=["className","style","onChange","label","feedback","variant","prepend"],te=["onChange","value"],ae=C.default.forwardRef((function(t,a){var n=t.className,l=t.style,r=t.onChange,d=t.label,i=t.feedback,o=t.variant,s=t.prepend,c=L(t,ee),f=e.useRandomId("eds-native-timepicker");return C.default.createElement(u.BaseFormControl,{style:l,className:w.default(n,"eds-native-timepicker"),prepend:s,label:d,feedback:i,variant:o,labelId:f,disableLabelAnimation:!0},C.default.createElement(ne,I({onChange:r,"aria-labelledby":f,ref:a},c)))})),ne=C.default.forwardRef((function(t,a){var n=t.onChange,l=t.value,r=L(t,te),d=u.useVariant(),i=r.variant||d,o=u.useInputGroupContext(),s=o.isFilled,c=o.setFilled;return e.useOnMount((function(){c&&!s&&c(!0)})),C.default.useEffect((function(){l?c&&!s&&c(!0):c&&s&&c(!1)}),[l,c,s]),C.default.createElement("input",I({ref:a,"aria-invalid":"error"===i,type:"time",className:"eds-form-control",onChange:function(e){u.isFilled(e.target)?c&&!s&&c(!0):c&&s&&c(!1),n&&n(e)},value:l},r))}));e.warnAboutMissingStyles("datepicker","form","icons"),exports.Calendar=Y,exports.DateField=S,exports.DatePicker=F,exports.DatePickerBeta=function(a){var n=a.selectedDate,l=a.onChange,r=a.disabled,i=a.className,o=a.variant,u=a.feedback,s=L(a,j),m=t.useRef(null),p=t.useRef(null),b=t.useRef(null),v=c.useDatePickerState(I({},s,{value:n,onChange:l})),_=f.useDatePicker(I({isDisabled:r},s),v,m),h=_.groupProps,y=_.labelProps,E=_.fieldProps,B=_.buttonProps,N=_.dialogProps,A=_.calendarProps,T=g.useFloating({placement:"bottom-start",middleware:[g.offset(k.space.extraSmall),g.flip(),g.shift({padding:k.space.extraSmall})]}),x=T.x,F=T.y,M=T.reference,P=T.floating,O=T.strategy;return t.useEffect((function(){var e,t,a="eds-datepicker__calendar__grid__cell",n=null==(e=p.current)?void 0:e.getElementsByClassName(a+"--selected")[0],l=null==(t=p.current)?void 0:t.getElementsByClassName(a+"--today")[0];n?n.focus():l&&l.focus()}),[v.isOpen]),e.useOnClickOutside([p],(function(){v.setOpen(!1)})),t.useEffect((function(){var e,t=function(e){"Escape"===e.key&&v.setOpen(!1)};return null==(e=p.current)||e.addEventListener("keydown",t),function(){var e;return null==(e=p.current)?void 0:e.removeEventListener("keydown",t)}}),[]),C.default.createElement("div",{className:w.default("eds-datepicker",i)},C.default.createElement("div",I({},h,{ref:function(e){m.current=e,M(e)},className:"eds-datepicker__datefield__wrapper"}),C.default.createElement(S,I({},E,{selectedDate:v.value,label:s.label,labelProps:y,ref:b,className:w.default("eds-datepicker__datefield",{"eds-datepicker__datefield--disabled":E.isDisabled}),variant:o,feedback:u})),!E.isDisabled&&C.default.createElement(G,I({},B,{onPress:function(){return v.setOpen(!v.isOpen)},className:"eds-datepicker__open-calendar-button"}),C.default.createElement(d.CalendarIcon,null))),C.default.createElement(D.default,{disabled:!v.isOpen,returnFocus:!0},C.default.createElement(Y,I({},N,A,{onChange:function(e){l(e),v.setOpen(!1)},disabled:A.isDisabled,ref:function(e){p.current=e,P(e)},style:{display:v.isOpen?"block":"none",position:O,top:null!=F?F:0,left:null!=x?x:0,zIndex:10}}))))},exports.NativeDatePicker=z,exports.NativeTimePicker=ae,exports.TimePicker=$,exports.ariaLabelIfNorwegian=O,exports.createCalendar=P,exports.nativeDateToTimeValue=function(e,t,a,n){return void 0===t&&(t=!1),a?n?new p.ZonedDateTime(e.getFullYear(),e.getMonth()+1,e.getDate(),a,n,e.getHours(),e.getMinutes(),e.getSeconds()):p.parseAbsolute(e.toISOString(),a):t?new p.Time(e.getHours(),e.getMinutes(),e.getSeconds(),0):new p.CalendarDateTime(e.getFullYear(),e.getMonth()+1,e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds())},exports.timeValueToNativeDate=function(e,t){if(!e.day){var a=new Date;return a.setHours(e.hour),a.setMinutes(e.minute),a.setSeconds(e.second),a}return e.timeZone?e.toDate():t?e.toDate(t):new Date(e.year,e.month-1,e.day,e.hour,e.minute,e.second)};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),a=require("react"),t=require("react-datepicker"),n=require("date-fns"),l=require("date-fns/locale"),r=require("classnames"),i=require("@entur/icons"),o=require("@entur/typography"),d=require("@entur/button"),u=require("@entur/form"),s=require("@entur/tooltip");require("react-datepicker/dist/react-datepicker.css");var c=require("@react-stately/datepicker"),f=require("@react-aria/datepicker"),m=require("@react-aria/i18n"),p=require("@internationalized/date"),b=require("@react-aria/calendar"),v=require("@react-stately/calendar"),g=require("@react-aria/button"),h=require("@entur/a11y"),_=require("@floating-ui/react-dom"),k=require("react-focus-lock"),y=require("@entur/tokens"),C=require("@entur/modal");function E(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var w=E(a),D=E(t),I=E(r),L=E(k);function T(){return T=Object.assign||function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e},T.apply(this,arguments)}function F(e,a){if(null==e)return{};var t,n,l={},r=Object.keys(e);for(n=0;n<r.length;n++)a.indexOf(t=r[n])>=0||(l[t]=e[t]);return l}var B=function(e){var a,t=e.date,n=e.decreaseMonth,l=e.increaseMonth,r=e.prevMonthButtonDisabled,u=e.nextMonthButtonDisabled,s=e.nextMonthAriaLabel,c=e.previousMonthAriaLabel,f=e.locale,m=null!=(a=null==t?void 0:t.getMonth())?a:0;return w.default.createElement("div",{className:"eds-datepicker__calender__header"},w.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--left",onClick:n,disabled:r,"aria-label":c+" ("+A(m-1,f)+")"},w.default.createElement(i.LeftArrowIcon,null)),w.default.createElement(o.Heading3,{className:"eds-datepicker__calender__header__month-text"},A(m,f)),w.default.createElement(o.Heading3,{className:"eds-datepicker__calender__header__month-text"},null==t?void 0:t.getFullYear()),w.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--right",onClick:l,disabled:u,"aria-label":s+" ("+A(m+1,f)+")"},w.default.createElement(i.RightArrowIcon,null)))};function A(e,a){var t=(new Date).getFullYear();return new Intl.DateTimeFormat(a.code,{month:"long"}).format(new Date(t,e))}var N=["style","label","inputPlaceholder","prepend","feedback","variant","disabled","calendarButtonTooltipOpen","calendarButtonTooltipClose","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","forwardRef","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","placeholder","onClick","aria-labelledby"],M=w.default.forwardRef((function(a,t){var n=a.style,l=a.label,r=a.inputPlaceholder,o=a.prepend,c=a.feedback,f=a.variant,m=a.disabled,p=a.calendarButtonTooltipOpen,b=a.calendarButtonTooltipClose,v=a.hideCalendarButton,g=a.disableLabelAnimation,h=a.inputRef,_=a.calendarButtonId,k=a.forwardRef,y=a.toggleCalendarGUI,C=a.onKeyDownInput,E=a.onBlurInput,D=a.selectedDate,I=a.setFocusToCalendarGUI,L=a.setShouldFocusOnCalendarButtonAfterSelect,B=a.calendarGUIIsOpen,A=a.onClick,M=F(a,N);function x(e){C(e)}function P(e){E(e)}w.default.useEffect((function(){var e,a,t;return null==(e=h.current)||e.addEventListener("keydown",x),null==(a=h.current)||a.addEventListener("blur",P),null==(t=h.current)||t.addEventListener("focus",R),function(){var e,a,t;null==(e=h.current)||e.removeEventListener("keydown",x),null==(a=h.current)||a.removeEventListener("blur",P),null==(t=h.current)||t.removeEventListener("focus",R)}}),[h,D]);var O,R=function(){return requestAnimationFrame((function(){var e;return null==(e=h.current)?void 0:e.select()}))};return w.default.createElement(u.TextField,T({style:n,label:l,placeholder:r,prepend:o,feedback:c,variant:f,disableLabelAnimation:g,ref:e.mergeRefs(t,h,k),onClick:function(e){L(!1),A&&A(e)},ariaAlertOnFeedback:!0,append:!v&&w.default.createElement(s.Tooltip,{placement:"top",content:B()?b:p,disableHoverListener:m,disableFocusListener:m},w.default.createElement(d.IconButton,{id:_,type:"button",onClick:function(){y(),I(),L(!0)},tabIndex:B()?-1:0,"aria-label":(B()?b:p)+", "+(D?(null==(O=h.current)?void 0:O.value)+" valgt":"Ingen dato valgt")},w.default.createElement(i.CalendarIcon,null)))},M))})),x=["style","className","selectedDate","label","placeholder","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","disabled","prepend","feedback","variant","validationFeedback","validationVariant","disableLabelAnimation","calendarButtonTooltipOpen","calendarButtonTooltipClose","hideCalendarButton","hideCalendar","hideValidation","weekLabel","chooseDayAriaLabelPrefix","previousMonthAriaLabel","nextMonthAriaLabel","locale","open"];t.registerLocale("nb",l.nb);var P=w.default.forwardRef((function(t,r){var i=t.style,o=t.className,d=t.selectedDate,u=t.label,s=t.placeholder,c=void 0===s?"dd.mm.yyyy":s,f=t.onChange,m=t.onKeyDown,p=void 0===m?function(){return null}:m,b=t.dateFormats,v=void 0===b?["dd.MM.yyyy","ddMMyyyy","dd/MM/yyyy","ddMMyy"]:b,g=t.minDate,h=t.maxDate,_=t.inline,k=void 0!==_&&_,y=t.disabled,C=t.prepend,E=t.feedback,L=void 0===E?"":E,A=t.variant,N=t.validationFeedback,P=void 0===N?"Ugyldig dato":N,O=t.validationVariant,R=void 0===O?"error":O,S=t.disableLabelAnimation,q=void 0!==S&&S,V=t.calendarButtonTooltipOpen,U=void 0===V?"Åpne kalender":V,Z=t.calendarButtonTooltipClose,G=void 0===Z?"Lukk kalender":Z,H=t.hideCalendarButton,W=void 0!==H&&H,Y=t.hideCalendar,j=void 0!==Y&&Y,z=t.hideValidation,K=void 0!==z&&z,J=t.weekLabel,Q=void 0===J?"uke":J,X=t.chooseDayAriaLabelPrefix,$=void 0===X?"Velg":X,ee=t.previousMonthAriaLabel,ae=void 0===ee?"Forrige måned":ee,te=t.nextMonthAriaLabel,ne=void 0===te?"Neste måned":te,le=t.locale,re=void 0===le?l.nb:le,ie=t.open,oe=F(t,x),de=e.useRandomId("eds-datepicker"),ue=a.useRef(null),se=w.default.useRef(null),ce=document.getElementById(de+"-button"),fe=a.useState(!1),me=fe[0],pe=fe[1],be=a.useState(!1),ve=be[0],ge=be[1];w.default.useEffect((function(){return he()}),[d]);var he=function(){var e;pe(!1);var a=null==(e=se.current)?void 0:e.value;if(a){var t=v.map((function(e){return n.parse(a,e,new Date,{locale:re})})),l=d&&t.some((function(e){return n.isSameDay(e,d)}));pe(!l)}},_e=function(){return L?{feedback:L,variant:A}:!K&&me?{feedback:P,variant:R}:{feedback:"",variant:void 0}},ke=function(){return requestAnimationFrame((function(){var e;return null==(e=se.current)?void 0:e.select()}))},ye=function(){var e;return null==(e=ue.current)?void 0:e.setState({inputValue:null})},Ce=function(){var e;return null==(e=ue.current)?void 0:e.setOpen(!Ee())},Ee=function(){var e;return null==(e=ue.current)?void 0:e.isCalendarOpen()};return w.default.createElement(w.default.Fragment,null,w.default.createElement(D.default,T({selected:d,minDate:g,maxDate:h,dateFormat:v,showWeekNumbers:!0,weekLabel:Q,onChange:function(e,a){var t;ve&&!W?(null==ce||ce.focus(),ge(!1)):null==(t=se.current)||t.focus(),f(e,a)},onClickOutside:function(){return ge(!1)},id:de,ariaLabelledBy:de,showPopperArrow:!1,locale:re,inline:k,disabled:y,preventOpenOnFocus:!0,chooseDayAriaLabelPrefix:$,open:!j&&ie,ref:ue,calendarClassName:"eds-datepicker__calender",dayClassName:function(){return"eds-datepicker__calender__day"},weekDayClassName:function(){return"eds-datepicker__calender__day-name"},className:I.default(o,"eds-datepicker__input"),highlightDates:[{"eds-datepicker__calender__day--today":[new Date]},{"eds-datepicker__calender__day--selected":d?[d]:[]}],renderCustomHeader:function(e){return w.default.createElement(B,{date:e.date,changeYear:e.changeYear,changeMonth:e.changeMonth,increaseMonth:e.increaseMonth,decreaseMonth:e.decreaseMonth,prevMonthButtonDisabled:e.prevMonthButtonDisabled,nextMonthButtonDisabled:e.nextMonthButtonDisabled,previousMonthAriaLabel:ae,nextMonthAriaLabel:ne,locale:re})},customInput:w.default.createElement(M,{style:i,label:u,inputPlaceholder:c,calendarButtonTooltipOpen:U,calendarButtonTooltipClose:G,prepend:C,feedback:_e().feedback,variant:_e().variant,inputRef:se,calendarButtonId:de+"-button",forwardRef:r,onKeyDownInput:function(e){pe(!1),"Enter"===e.key?(Ee()||(he(),ye()),ke()):"Tab"===e.key&&Ee()?ye():"Escape"===e.key&&(ye(),ke(),Ee()&&Ce()),p(e)},onBlurInput:function(){Ee()||(he(),ye())},onFocus:void 0,toggleCalendarGUI:Ce,setFocusToCalendarGUI:function(){k||j||Ee()||(requestAnimationFrame((function(){var e,a,t=(null==(e=ue.current)?void 0:e.calendar.componentNode).querySelector(d?'.eds-datepicker__calender__day[tabindex="0"]':'.eds-datepicker__calender__day[aria-current="date"]');null!==t&&(null==(a=ue.current)||a.setBlur(),t.focus({preventScroll:!0}))})),ge(!0),pe(!1))},setShouldFocusOnCalendarButtonAfterSelect:ge,calendarGUIIsOpen:Ee,disableLabelAnimation:q,hideCalendarButton:W,selectedDate:d})},oe)))})),O=function(e){var t=e.segment,n=e.state,l=a.useRef(null),r=f.useDateSegment(t,n,l).segmentProps,i=n.segments.some((function(e){return"AM"===e.text||"PM"===e.text}));return w.default.createElement("div",T({},r,{ref:l,className:I.default("eds-date-and-time-field__segment",{"eds-date-and-time-field__segment--placeholder":t.isPlaceholder,"eds-date-and-time-field__segment--dot-separator":"."===t.text}),tabIndex:n.isDisabled?-1:r.tabIndex}),i?t.text:t.text.match(/\d+/)?t.text.padStart(2,"0"):t.text)},R=function(e){if(void 0===e&&(e="gregory"),"gregory"===e)return new p.GregorianCalendar;throw new Error("Unsupported calendar "+e)},S=function(e,a,t){return"no-no"!==a.toLowerCase()?t["aria-label"]:e},q=["selectedDate","label","locale","showTimeZone","showTime","granularity","disabled","variant","feedback","validationVariant","validationFeedback","labelTooltip","style","className","labelProps","append"],V=w.default.forwardRef((function(t,n){var l=t.selectedDate,r=t.label,i=t.locale,o=t.showTimeZone,d=t.showTime,s=t.granularity,p=void 0===s?"day":s,b=t.disabled,v=t.variant,g=t.feedback,h=t.validationVariant,_=void 0===h?"error":h,k=t.validationFeedback,y=void 0===k?"Ugyldig dato":k,C=t.labelTooltip,E=t.style,D=t.className,L=t.labelProps,B=t.append,A=F(t,q),N=m.useLocale(),M=c.useDateFieldState(T({},A,{locale:null!=i?i:N.locale,createCalendar:R,value:null===l?void 0:l,hideTimeZone:!o,granularity:d?"minute":p})),x=a.useRef(null),P=f.useDateField(T({},A,{label:r,isDisabled:b||A.isDisabled}),M,x),S=P.labelProps,V=P.fieldProps,U=e.useRandomId("datefield");return w.default.createElement(e.ConditionalWrapper,{condition:void 0!==i,wrapper:function(e){return w.default.createElement(m.I18nProvider,{locale:i},e)}},w.default.createElement(u.BaseFormControl,T({style:E,className:I.default("eds-datefield",D),labelId:U,ref:e.mergeRefs(x,n),disabled:M.isDisabled,disableLabelAnimation:!0,label:r,labelTooltip:C,labelProps:null!=L?L:S},V,{variant:(null!=v?v:"invalid"===M.validationState)?_:void 0,feedback:(null!=g?g:"invalid"===M.validationState)?y:void 0,append:B,ariaAlertOnFeedback:!0}),M.segments.map((function(e,a){return w.default.createElement(O,{segment:e,state:M,key:a})}))))})),U=["children","className","style"],Z=function(e){var t=e.children,n=e.className,l=e.style,r=F(e,U),i=a.useRef(null),o=g.useButton(r,i);return w.default.createElement(d.IconButton,T({},o.buttonProps,{ref:i,className:n,style:l}),t)},G=["state","date"],H=function(e){var t,n=e.state,l=e.date,r=F(e,G),i=a.useRef(null),o=b.useCalendarCell({date:l},n,i),d=o.buttonProps,u=o.isSelected,s=o.isOutsideVisibleRange,c=o.isDisabled,f=o.isUnavailable,m=o.formattedDate;return w.default.createElement("td",T({},o.cellProps,{className:"eds-datepicker__calendar__grid__cell__td"}),w.default.createElement("div",T({},d,{ref:i,hidden:s,className:I.default("eds-datepicker__calendar__grid__cell",{"eds-datepicker__calendar__grid__cell--selected":u,"eds-datepicker__calendar__grid__cell--disabled":c||f,"eds-datepicker__calendar__grid__cell--outside-month":s,"eds-datepicker__calendar__grid__cell--today":p.isEqualDay(l,p.now(null!=(t=n.timeZone)?t:p.getLocalTimeZone()))})},r),m))},W=["state","navigationDescription"],Y=function(a){var t=a.state,n=a.navigationDescription,l=F(a,W),r=e.useRandomId("eds-calendar"),i=m.useLocale().locale,o=b.useCalendarGrid(l,t),d=o.gridProps,u=o.headerProps,s=o.weekDays,c=p.getWeeksInMonth(t.visibleRange.start,i),f=Array.from(Array(c).keys());return w.default.createElement(w.default.Fragment,null,w.default.createElement("table",T({},d,{cellSpacing:"0",className:"eds-datepicker__calendar__grid"}),w.default.createElement("thead",T({},u),w.default.createElement("tr",null,("no-no"===i.toLowerCase()||"no"===i.toLowerCase()?["ma","ti","on","to","fr","lø","sø"]:"M,T,W,T,F,S,S"===s.toString()?["Mo","Tu","We","Th","Fr","Sa","Su"]:s.map((function(e){return e.toLowerCase()}))).map((function(e,a){return w.default.createElement("th",{key:a},e)})))),w.default.createElement("tbody",null,f.map((function(e){return w.default.createElement("tr",{key:e},t.getDatesInWeek(e).map((function(e,a){return e?w.default.createElement(H,{key:a,state:t,date:e,"aria-describedby":r+"description"}):w.default.createElement("td",{key:a})})))})))),w.default.createElement(h.VisuallyHidden,{id:r+"description"},n||(i.toLowerCase().includes("en")?"Use the arrow keys to navigate between dates":"Bruk piltastene til å navigere mellom datoer")))},j=["selectedDate","onChange","locale","style","children","navigationDescription"],z=w.default.forwardRef((function(a,t){var n=a.onChange,l=a.locale,r=a.style,o=a.navigationDescription,d=F(a,j),u=m.useLocale().locale,s=v.useCalendarState(T({},d,{onChange:n,locale:null!=l?l:u,createCalendar:R})),c=b.useCalendar(d,s),f=c.prevButtonProps,p=c.nextButtonProps,g=c.title;return w.default.createElement(e.ConditionalWrapper,{condition:l,wrapper:function(e){return w.default.createElement(m.I18nProvider,{locale:l},e)}},w.default.createElement("div",T({},c.calendarProps,{ref:t,className:"eds-datepicker__calendar",style:r}),w.default.createElement("div",{className:"eds-datepicker__calendar__header"},w.default.createElement(Z,T({},f,{"aria-label":S("Forrige måned",u,f)}),w.default.createElement(i.LeftArrowIcon,{size:20})),w.default.createElement("h2",null,g),w.default.createElement(Z,T({},p,{"aria-label":S("Neste måned",u,p)}),w.default.createElement(i.RightArrowIcon,{size:20}))),w.default.createElement(Y,{state:s,navigationDescription:o})))})),K=["selectedDate","onChange","locale","disabled","showTime","showTimeZone","className","style","variant","feedback","validationVariant","validationFeedback","disableModal","labelTooltip","navigationDescription"],J=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],Q=["onChange","variant","value"],X=w.default.forwardRef((function(a,t){var n=a.className,l=a.style,r=a.label,o=a.onChange,d=a.feedback,s=a.variant,c=a.disableLabelAnimation,f=a.prepend,m=void 0===f?w.default.createElement(i.DateIcon,{inline:!0}):f,p=F(a,J),b=e.useRandomId("eds-nativetimepicker");return w.default.createElement(u.BaseFormControl,{style:l,className:n,prepend:m,label:r,feedback:d,variant:s,labelId:b,disableLabelAnimation:c,isFilled:!0},w.default.createElement($,T({onChange:o,"aria-labelledby":b,ref:t,variant:s},p)))})),$=w.default.forwardRef((function(a,t){var n=a.onChange,l=a.variant,r=a.value,i=F(a,Q),o=u.useVariant(),d=l||o,s=u.useInputGroupContext(),c=s.isFilled,f=s.setFilled;return e.useOnMount((function(){f&&!c&&f(!0)})),w.default.useEffect((function(){r?f&&!c&&f(!0):f&&c&&f(!1)}),[r,f,c]),w.default.createElement("input",T({ref:t,"aria-invalid":"error"===d,type:"date",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?f&&!c&&f(!0):f&&c&&f(!1),n&&n(e)},value:r},i))})),ee=function(e){var a=e.direction,t=e.onClick,n=e.disabled,l=e["aria-label"];return w.default.createElement(d.IconButton,{className:I.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+a,{"eds-timepicker__arrowbutton--disabled":n}),type:"button",tabIndex:-1,onClick:t,"aria-label":l,disabled:n},w.default.createElement("left"===a?i.LeftArrowIcon:i.RightArrowIcon,null))},ae=["selectedTime","onChange","disabled","className","style","label","labelTooltip","feedback","variant","locale","showTimeZone","minuteIncrementForArrowButtons","leftArrowButtonAriaLabel","rightArrowButtonAriaLabel"],te=w.default.forwardRef((function(t,n){var l=t.selectedTime,r=t.onChange,i=t.disabled,o=t.className,d=t.style,s=t.label,b=t.labelTooltip,v=t.feedback,g=t.variant,h=t.locale,_=t.showTimeZone,k=t.minuteIncrementForArrowButtons,y=void 0===k?30:k,C=t.leftArrowButtonAriaLabel,E=void 0===C?"Trekk fra "+y+" minutter":C,D=t.rightArrowButtonAriaLabel,L=void 0===D?"Legg til "+y+" minutter":D,B=F(t,ae),A=m.useLocale().locale;h&&(A=h);var N=c.useTimeFieldState(T({onChange:r,label:s,locale:A,value:null===l?void 0:l,hideTimeZone:!_,isDisabled:i},B)),M=a.useRef(null),x=f.useTimeField(T({},B,{label:s}),N,M),P=x.labelProps,R=x.fieldProps,S=e.useRandomId("timepicker"),q=function(e){V?U():Z(e)},V=N.segments.some((function(e){return"––"===e.text})),U=function(){var e=p.now(p.getLocalTimeZone()),a=Math.floor(e.minute/y)*y,t=e.set({minute:a});r(t)},Z=function(e){var a;N.value&&N.setValue(null==(a=N.value)?void 0:a.add({minutes:e}))};return w.default.createElement(m.I18nProvider,{locale:A},w.default.createElement("div",{className:I.default(o,"eds-timepicker__wrapper")},w.default.createElement(ee,{direction:"left",disabled:i,"aria-label":E,onClick:function(){return q(-1*y)}}),w.default.createElement(u.BaseFormControl,T({style:d,className:"eds-timepicker",labelId:S,label:s,labelProps:T({},P),ref:e.mergeRefs(M,n),disabled:i,disableLabelAnimation:!0,labelTooltip:b},R,{variant:g,feedback:v}),N.segments.map((function(e,a){return w.default.createElement(O,{segment:e,state:N,key:a})}))),w.default.createElement(ee,{direction:"right",disabled:i,"aria-label":L,onClick:function(){return q(y)}})))})),ne=["className","style","onChange","label","feedback","variant","prepend"],le=["onChange","value"],re=w.default.forwardRef((function(a,t){var n=a.className,l=a.style,r=a.onChange,i=a.label,o=a.feedback,d=a.variant,s=a.prepend,c=F(a,ne),f=e.useRandomId("eds-native-timepicker");return w.default.createElement(u.BaseFormControl,{style:l,className:I.default(n,"eds-native-timepicker"),prepend:s,label:i,feedback:o,variant:d,labelId:f,disableLabelAnimation:!0},w.default.createElement(ie,T({onChange:r,"aria-labelledby":f,ref:t},c)))})),ie=w.default.forwardRef((function(a,t){var n=a.onChange,l=a.value,r=F(a,le),i=u.useVariant(),o=r.variant||i,d=u.useInputGroupContext(),s=d.isFilled,c=d.setFilled;return e.useOnMount((function(){c&&!s&&c(!0)})),w.default.useEffect((function(){l?c&&!s&&c(!0):c&&s&&c(!1)}),[l,c,s]),w.default.createElement("input",T({ref:t,"aria-invalid":"error"===o,type:"time",className:"eds-form-control",onChange:function(e){u.isFilled(e.target)?c&&!s&&c(!0):c&&s&&c(!1),n&&n(e)},value:l},r))}));e.warnAboutMissingStyles("datepicker","form","icons"),exports.Calendar=z,exports.DateField=V,exports.DatePicker=P,exports.DatePickerBeta=function(t){var n=t.selectedDate,l=t.onChange,r=t.locale,o=t.disabled,d=t.showTime,u=t.showTimeZone,s=void 0!==u&&u,p=t.className,b=t.variant,v=t.feedback,g=t.validationVariant,h=t.validationFeedback,k=t.disableModal,E=void 0!==k&&k,D=t.labelTooltip,B=t.navigationDescription,A=F(t,K),N=a.useRef(null),M=a.useRef(null),x=a.useRef(null),P=e.useWindowDimensions().width,O=c.useDatePickerState(T({},A,{value:n,onChange:l})),R=f.useDatePicker(T({isDisabled:o},A),O,N),S=R.groupProps,q=R.labelProps,U=R.fieldProps,G=R.buttonProps,H=R.dialogProps,W=R.calendarProps;a.useEffect((function(){var e,a=function(e){"Escape"===e.key&&O.setOpen(!1)};return null==(e=M.current)||e.addEventListener("keydown",a),function(){var e;return null==(e=M.current)?void 0:e.removeEventListener("keydown",a)}}),[]);var Y=_.useFloating({placement:"bottom-start",middleware:[_.offset(y.space.extraSmall),_.flip(),_.shift({padding:y.space.extraSmall})]}),j=Y.x,J=Y.y,Q=Y.reference,X=Y.floating,$=Y.strategy;e.useOnClickOutside([M],(function(){O.setOpen(!1)}));var ee=w.default.createElement(L.default,{disabled:!O.isOpen,returnFocus:!0},w.default.createElement(z,T({},H,W,{onChange:function(e){l(e),O.setOpen(!1)},disabled:W.isDisabled,ref:function(e){M.current=e,X(e)},navigationDescription:B,style:{display:O.isOpen?"block":"none",position:$,top:null!=J?J:0,left:null!=j?j:0,zIndex:10}}))),ae=w.default.createElement(C.Modal,{size:"small",title:"",open:O.isOpen,onDismiss:function(){return O.setOpen(!1)},closeOnClickOutside:!0,className:"eds-datepicker__calendar-modal"},w.default.createElement(z,T({},H,W,{onChange:function(e){l(e),O.setOpen(!1)},disabled:W.isDisabled,ref:M,navigationDescription:B})));return w.default.createElement(e.ConditionalWrapper,{condition:void 0!==r,wrapper:function(e){return w.default.createElement(m.I18nProvider,{locale:r},e)}},w.default.createElement("div",{className:I.default("eds-datepicker",p)},w.default.createElement("div",T({},S,{ref:function(e){N.current=e,Q(e)},className:"eds-datepicker__datefield__wrapper"}),w.default.createElement(V,T({},U,{selectedDate:O.value,label:A.label,labelProps:q,showTime:d,showTimeZone:s,ref:x,variant:b,feedback:v,validationVariant:g,validationFeedback:h,labelTooltip:D,className:I.default("eds-datepicker__datefield",{"eds-datepicker__datefield--disabled":U.isDisabled})})),!U.isDisabled&&w.default.createElement(Z,T({},G,{onPress:function(){var e,a,t,n,l;O.isOpen?O.setOpen(!1):(O.setOpen(!0),t="eds-datepicker__calendar__grid__cell",n=null==(e=M.current)?void 0:e.getElementsByClassName(t+"--selected")[0],l=null==(a=M.current)?void 0:a.getElementsByClassName(t+"--today")[0],n?n.focus():l&&l.focus())},className:"eds-datepicker__open-calendar-button"}),w.default.createElement(i.CalendarIcon,null)),P>1e3||E?ee:ae)))},exports.NativeDatePicker=X,exports.NativeTimePicker=re,exports.TimePicker=te,exports.ariaLabelIfNorwegian=S,exports.createCalendar=R,exports.nativeDateToTimeValue=function(e,a,t,n){return void 0===a&&(a=!1),t?n?new p.ZonedDateTime(e.getFullYear(),e.getMonth()+1,e.getDate(),t,n,e.getHours(),e.getMinutes(),e.getSeconds()):p.parseAbsolute(e.toISOString(),t):a?new p.Time(e.getHours(),e.getMinutes(),e.getSeconds(),0):new p.CalendarDateTime(e.getFullYear(),e.getMonth()+1,e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds())},exports.timeValueToNativeDate=function(e,a){if(!e.day){var t=new Date;return t.setHours(e.hour),t.setMinutes(e.minute),t.setSeconds(e.second),t}return e.timeZone?e.toDate():a?e.toDate(a):new Date(e.year,e.month-1,e.day,e.hour,e.minute,e.second)};
2
2
  //# sourceMappingURL=datepicker.cjs.production.min.js.map