@entur/datepicker 4.0.0-beta.5 → 4.0.1
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.
- package/CHANGELOG.md +56 -0
- package/LICENSE.md +0 -71
- package/dist/DatePicker/{beta/Calendar.d.ts → Calendar.d.ts} +1 -0
- package/dist/DatePicker/{beta/CalendarCell.d.ts → CalendarCell.d.ts} +2 -1
- package/dist/DatePicker/{beta/CalendarGrid.d.ts → CalendarGrid.d.ts} +2 -1
- package/dist/DatePicker/{beta/DateField.d.ts → DateField.d.ts} +2 -3
- package/dist/DatePicker/DatePicker.d.ts +48 -175
- package/dist/{NativeDatePicker.d.ts → DatePicker/NativeDatePicker.d.ts} +0 -0
- package/dist/DatePicker/index.d.ts +3 -1
- package/dist/TimePicker/TimePicker.d.ts +3 -3
- package/dist/datepicker.cjs.development.js +91 -517
- package/dist/datepicker.cjs.development.js.map +1 -1
- package/dist/datepicker.cjs.production.min.js +1 -1
- package/dist/datepicker.cjs.production.min.js.map +1 -1
- package/dist/datepicker.esm.js +91 -515
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/styles.css +100 -206
- package/package.json +21 -22
- package/dist/DatePicker/DatePickerHeader.d.ts +0 -9
- package/dist/DatePicker/DatePickerInput.d.ts +0 -31
- package/dist/DatePicker/beta/DatePicker.d.ts +0 -62
- package/dist/DatePicker/beta/index.d.ts +0 -3
|
@@ -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 DateValue,\n getLocalTimeZone,\n CalendarDate,\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 Date- eller TimeValue-objektene fra @internationalized/date-pakken\n * @param {Date} date JS Date-objekt som ønskes konvertert til et Date- eller 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 {boolean} noTimeOnlyDate Hvis tidspunktet er irrelevant kan denne settes til true, da får man et CalendarDate-objekt uten tidspunkt 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 | CalendarDate} et av Time- eller DateValue-objektene med verdier fra date\n */\nexport const nativeDateToTimeOrDateValue = (\n date: Date,\n noDateOnlyTime = false,\n noTimeOnlyDate = 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 if (noTimeOnlyDate)\n return new CalendarDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\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 Date- eller TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt\n * @param {DateValue | TimeValue} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt\n * @param {string} timeZoneForCalendarDateTime Tidssonen value 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 Date- and TimeValue types. Sorry ...\nexport const timeOrDateValueToNativeDate = (\n value: TimeValue | DateValue,\n timeZoneForCalendarDateTime?: string,\n): Date => {\n // @ts-expect-error .day does not exist on Time-object\n if (!value.day) {\n // type is Time\n const date = new Date();\n // @ts-expect-error hour does not exist on CalendarDate\n date.setHours(value.hour);\n // @ts-expect-error minute does not exist on CalendarDate\n date.setMinutes(value.minute);\n // @ts-expect-error second does not exist on CalendarDate\n date.setSeconds(value.second);\n return date;\n }\n\n // @ts-expect-error .day does not exist on Time-object\n if (!value.hour) {\n // type is CalendarDate\n // @ts-expect-error .toDate(timeZone) does not exist in type Time\n return value.toDate(timeZoneForCalendarDateTime ?? getLocalTimeZone());\n }\n\n // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime\n if (!value.timeZone) {\n // type is CalendarDateTime\n if (timeZoneForCalendarDateTime)\n // @ts-expect-error .toDate(timeZone) does not exist in type Time\n return value.toDate(timeZoneForCalendarDateTime);\n\n return new Date(\n // @ts-expect-error not in type Time\n value.year,\n // @ts-expect-error not in type Time\n value.month - 1,\n // @ts-expect-error not in type Time\n value.day,\n // @ts-expect-error not in type CalendarDate\n value.hour,\n // @ts-expect-error not in type CalendarDate\n value.minute,\n // @ts-expect-error not in type CalendarDate\n value.second,\n );\n }\n\n // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime\n return value.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, zIndexes } 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\nexport type DatePickerBetaProps = {\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 minDate?: 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 maxDate?: 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 minDate: minValue,\n maxDate: maxValue,\n ...rest\n}: DatePickerBetaProps) => {\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 minValue,\n maxValue,\n value,\n onChange,\n });\n const {\n groupProps,\n labelProps,\n fieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDatePicker(\n { isDisabled, minValue, maxValue, ...rest },\n state,\n datePickerRef,\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 // 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 <>\n {state.isOpen && (\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 position: strategy,\n top: y ?? 0,\n left: x ?? 0,\n zIndex: zIndexes.popover,\n }}\n />\n </FocusLock>\n )}\n </>\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","nativeDateToTimeOrDateValue","noDateOnlyTime","noTimeOnlyDate","timeZone","offset","ZonedDateTime","getDate","getHours","getMinutes","getSeconds","parseAbsolute","toISOString","Time","CalendarDate","CalendarDateTime","timeOrDateValueToNativeDate","timeZoneForCalendarDateTime","day","setHours","hour","setMinutes","minute","setSeconds","second","toDate","getLocalTimeZone","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","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","minValue","maxValue","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","isOpen","FocusLock","returnFocus","dateValue","node","position","top","left","zIndex","zIndexes","popover","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
|
+
{"version":3,"file":"datepicker.cjs.development.js","sources":["../src/shared/FieldSegment.tsx","../src/shared/utils.ts","../src/DatePicker/DateField.tsx","../src/shared/CalendarButton.tsx","../src/DatePicker/CalendarCell.tsx","../src/DatePicker/CalendarGrid.tsx","../src/DatePicker/Calendar.tsx","../src/DatePicker/DatePicker.tsx","../src/DatePicker/NativeDatePicker.tsx","../src/TimePicker/TimePickerArrowButton.tsx","../src/TimePicker/TimePicker.tsx","../src/TimePicker/NativeTimePicker.tsx","../src/index.tsx"],"sourcesContent":["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 DateValue,\n getLocalTimeZone,\n CalendarDate,\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 Date- eller TimeValue-objektene fra @internationalized/date-pakken\n * @param {Date} date JS Date-objekt som ønskes konvertert til et Date- eller 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 {boolean} noTimeOnlyDate Hvis tidspunktet er irrelevant kan denne settes til true, da får man et CalendarDate-objekt uten tidspunkt 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 | CalendarDate} et av Time- eller DateValue-objektene med verdier fra date\n */\nexport const nativeDateToTimeOrDateValue = (\n date: Date,\n noDateOnlyTime = false,\n noTimeOnlyDate = 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 if (noTimeOnlyDate)\n return new CalendarDate(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\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 Date- eller TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt\n * @param {DateValue | TimeValue} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt\n * @param {string} timeZoneForCalendarDateTime Tidssonen value 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 Date- and TimeValue types. Sorry ...\nexport const timeOrDateValueToNativeDate = (\n value: TimeValue | DateValue,\n timeZoneForCalendarDateTime?: string,\n): Date => {\n // @ts-expect-error .day does not exist on Time-object\n if (!value.day) {\n // type is Time\n const date = new Date();\n // @ts-expect-error hour does not exist on CalendarDate\n date.setHours(value.hour);\n // @ts-expect-error minute does not exist on CalendarDate\n date.setMinutes(value.minute);\n // @ts-expect-error second does not exist on CalendarDate\n date.setSeconds(value.second);\n return date;\n }\n\n // @ts-expect-error .day does not exist on Time-object\n if (!value.hour) {\n // type is CalendarDate\n // @ts-expect-error .toDate(timeZone) does not exist in type Time\n return value.toDate(timeZoneForCalendarDateTime ?? getLocalTimeZone());\n }\n\n // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime\n if (!value.timeZone) {\n // type is CalendarDateTime\n if (timeZoneForCalendarDateTime)\n // @ts-expect-error .toDate(timeZone) does not exist in type Time\n return value.toDate(timeZoneForCalendarDateTime);\n\n return new Date(\n // @ts-expect-error not in type Time\n value.year,\n // @ts-expect-error not in type Time\n value.month - 1,\n // @ts-expect-error not in type Time\n value.day,\n // @ts-expect-error not in type CalendarDate\n value.hour,\n // @ts-expect-error not in type CalendarDate\n value.minute,\n // @ts-expect-error not in type CalendarDate\n value.second,\n );\n }\n\n // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime\n return value.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';\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 minDate?: DateValue;\n /** Seneste gyldige datovalg. (se minValue) */\n maxDate?: DateValue;\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 minDate: minValue,\n maxDate: maxValue,\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,\n value: value === null ? undefined : value,\n hideTimeZone: !showTimeZone,\n granularity: showTime ? 'minute' : granularity,\n minValue,\n maxValue,\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 onSelectedCellClick?: () => void;\n};\n\nexport const CalendarCell = ({\n state,\n date,\n onSelectedCellClick = () => {\n return;\n },\n ...rest\n}: 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 onClick={e => {\n buttonProps.onClick && buttonProps.onClick(e);\n isSelected && onSelectedCellClick();\n }}\n onKeyDown={e => {\n buttonProps.onKeyDown && buttonProps.onKeyDown(e);\n if (e.key === 'Enter' || e.key === ' ')\n isSelected && onSelectedCellClick();\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 { useRandomId } from '@entur/utils';\nimport { VisuallyHidden } from '@entur/a11y';\n\nimport { CalendarCell } from './CalendarCell';\n\ntype CalendarGridProps = {\n state: CalendarState;\n navigationDescription?: string;\n onSelectedCellClick?: () => void;\n};\n\nexport const CalendarGrid = ({\n state,\n navigationDescription,\n onSelectedCellClick = () => {\n return;\n },\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().includes('no'))\n return ['ma', 'ti', 'on', 'to', 'fr', 'lø', 'sø'];\n if (locale.toLowerCase().includes('en')) {\n if (weekDays[0] === 'M')\n return ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];\n if (weekDays[0] === 'S')\n return ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n }\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 onSelectedCellClick={onSelectedCellClick}\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 onSelectedCellClick?: () => void;\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 onSelectedCellClick = () => {\n return;\n },\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 onSelectedCellClick={onSelectedCellClick}\n />\n </div>\n </ConditionalWrapper>\n );\n },\n);\n","import React, { ReactNode, useRef } from 'react';\n\nimport { useDatePickerState } from '@react-stately/datepicker';\nimport { useDatePicker } from '@react-aria/datepicker';\nimport { I18nProvider } from '@react-aria/i18n';\nimport {\n useFloating,\n offset,\n flip,\n shift,\n autoUpdate,\n} from '@floating-ui/react-dom';\nimport FocusLock from 'react-focus-lock';\nimport classNames from 'classnames';\n\nimport type { DateValue, AriaDatePickerProps } from '@react-types/datepicker';\n\nimport {\n ConditionalWrapper,\n useOnClickOutside,\n useOnEscape,\n useWindowDimensions,\n} from '@entur/utils';\nimport { space, zIndexes } 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\nexport type 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 minDate?: DateValue;\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 maxDate?: DateValue;\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 /** Maxbredden til viewport-en for at modal skal vises\n * @default 1000\n */\n modalTreshold?: number;\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 AriaDatePickerProps<DateValue>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'hideTimeZone'\n | 'placeholder'\n | 'minValue'\n | 'maxValue'\n>;\n\nexport const DatePicker = ({\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 minDate: minValue,\n maxDate: maxValue,\n modalTreshold = 1000,\n ...rest\n}: DatePickerProps) => {\n const CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;\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 minValue,\n maxValue,\n value,\n onChange,\n });\n const {\n groupProps,\n labelProps,\n fieldProps,\n buttonProps,\n dialogProps,\n calendarProps,\n } = useDatePicker(\n { isDisabled, minValue, maxValue, ...rest },\n state,\n datePickerRef,\n );\n\n // calculations for floating-UI popover position\n const { x, y, reference, floating, strategy } = useFloating({\n whileElementsMounted: autoUpdate,\n placement: 'bottom-start',\n middleware: [\n offset(space.extraSmall),\n flip(),\n shift({ padding: space.extraSmall }),\n ],\n });\n\n const onChangeCalendar = (newSelectedDate: DateValue) => {\n // Necessary to avoid state update on unmounted component\n requestAnimationFrame(() => {\n calendarProps.onChange && calendarProps.onChange(newSelectedDate);\n });\n };\n\n useOnClickOutside([calendarRef], () => {\n state.setOpen(false);\n });\n\n useOnEscape(calendarRef, () => {\n state.setOpen(false);\n });\n\n const calendarSharedProps = {\n ...dialogProps,\n ...calendarProps,\n disabled: calendarProps.isDisabled,\n navigationDescription: navigationDescription,\n onSelectedCellClick: () => state.setOpen(false),\n onChange: onChangeCalendar,\n };\n\n const useModal = width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;\n\n const popoverCalendar = (\n <div\n // styling for floating-UI popover\n style={{\n position: strategy,\n top: y ?? 0,\n left: x ?? 0,\n zIndex: zIndexes.popover,\n }}\n ref={node => {\n floating(node);\n }}\n >\n <FocusLock disabled={!state.isOpen || useModal} returnFocus>\n {state.isOpen && (\n <Calendar {...calendarSharedProps} ref={calendarRef} />\n )}\n </FocusLock>\n </div>\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 {...calendarSharedProps} />\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 id={undefined}\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={() => state.setOpen(!state.isOpen)}\n className=\"eds-datepicker__open-calendar-button\"\n >\n <CalendarIcon />\n </CalendarButton>\n )}\n {useModal ? modalCalendar : popoverCalendar}\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 { TimeValue, AriaTimeFieldProps } 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 AriaTimeFieldProps<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 './TimePicker';\nexport * from './shared';\n"],"names":["FieldSegment","segment","state","ref","useRef","useDateSegment","segmentProps","is12HourFormatted","segments","some","text","segmentDisplayText","match","padStart","React","className","classNames","isPlaceholder","tabIndex","isDisabled","nativeDateToTimeOrDateValue","date","noDateOnlyTime","noTimeOnlyDate","timeZone","offset","ZonedDateTime","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","parseAbsolute","toISOString","Time","CalendarDate","CalendarDateTime","timeOrDateValueToNativeDate","value","timeZoneForCalendarDateTime","day","Date","setHours","hour","setMinutes","minute","setSeconds","second","toDate","getLocalTimeZone","year","month","createCalendar","identifier","GregorianCalendar","Error","ariaLabelIfNorwegian","norwegianAriaLabel","locale","propsCollection","toLowerCase","DateField","forwardRef","selectedDate","label","customLocale","showTimeZone","showTime","granularity","disabled","variant","feedback","validationVariant","validationFeedback","labelTooltip","minValue","minDate","maxValue","maxDate","style","parentLabelProps","labelProps","append","rest","useLocale","useDateFieldState","undefined","hideTimeZone","dateFieldRef","useDateField","fieldProps","id","useRandomId","ConditionalWrapper","condition","wrapper","child","I18nProvider","BaseFormControl","labelId","mergeRefs","disableLabelAnimation","validationState","ariaAlertOnFeedback","map","i","key","CalendarButton","children","props","useButton","buttonProps","IconButton","CalendarCell","onSelectedCellClick","cellRef","useCalendarCell","cellProps","isSelected","isOutsideVisibleRange","isUnavailable","formattedDate","hidden","isEqualDay","now","onClick","e","onKeyDown","CalendarGrid","navigationDescription","calendarGridId","useCalendarGrid","gridProps","headerProps","weekDays","weeksInMonth","getWeeksInMonth","visibleRange","start","weeksArray","Array","from","keys","weekDaysMapped","includes","getNavigationDescription","cellSpacing","index","weekIndex","getDatesInWeek","VisuallyHidden","Calendar","onChange","useCalendarState","useCalendar","calendarProps","prevButtonProps","nextButtonProps","title","LeftArrowIcon","size","RightArrowIcon","DatePicker","disableModal","modalTreshold","CALENDAR_MODAL_MAX_SCREEN_WIDTH","datePickerRef","calendarRef","useWindowDimensions","width","useDatePickerState","useDatePicker","groupProps","dialogProps","useFloating","whileElementsMounted","autoUpdate","placement","middleware","space","extraSmall","flip","shift","padding","x","y","reference","floating","strategy","onChangeCalendar","newSelectedDate","requestAnimationFrame","useOnClickOutside","setOpen","useOnEscape","calendarSharedProps","useModal","popoverCalendar","position","top","left","zIndex","zIndexes","popover","node","FocusLock","isOpen","returnFocus","modalCalendar","Modal","open","onDismiss","closeOnClickOutside","current","onPress","CalendarIcon","NativeDatePicker","prepend","DateIcon","inline","nativedatepickerId","isFilled","NativeDatePickerBase","contextVariant","useVariant","currentVariant","useInputGroupContext","isDatepickerFilled","setFiller","setFilled","useOnMount","useEffect","handleChange","event","target","type","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"),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 D(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var E=D(a),w=D(t),I=D(r),L=D(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 E.default.createElement("div",{className:"eds-datepicker__calender__header"},E.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--left",onClick:n,disabled:r,"aria-label":c+" ("+x(m-1,f)+")"},E.default.createElement(i.LeftArrowIcon,null)),E.default.createElement(o.Heading3,{className:"eds-datepicker__calender__header__month-text"},x(m,f)),E.default.createElement(o.Heading3,{className:"eds-datepicker__calender__header__month-text"},null==t?void 0:t.getFullYear()),E.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--right",onClick:l,disabled:u,"aria-label":s+" ("+x(m+1,f)+")"},E.default.createElement(i.RightArrowIcon,null)))};function x(e,a){var t=(new Date).getFullYear();return new Intl.DateTimeFormat(a.code,{month:"long"}).format(new Date(t,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"],N=E.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,D=a.onBlurInput,w=a.selectedDate,I=a.setFocusToCalendarGUI,L=a.setShouldFocusOnCalendarButtonAfterSelect,B=a.calendarGUIIsOpen,x=a.onClick,N=F(a,A);function M(e){C(e)}function P(e){D(e)}E.default.useEffect((function(){var e,a,t;return null==(e=h.current)||e.addEventListener("keydown",M),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",M),null==(a=h.current)||a.removeEventListener("blur",P),null==(t=h.current)||t.removeEventListener("focus",R)}}),[h,w]);var O,R=function(){return requestAnimationFrame((function(){var e;return null==(e=h.current)?void 0:e.select()}))};return E.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),x&&x(e)},ariaAlertOnFeedback:!0,append:!v&&E.default.createElement(s.Tooltip,{placement:"top",content:B()?b:p,disableHoverListener:m,disableFocusListener:m},E.default.createElement(d.IconButton,{id:_,type:"button",onClick:function(){y(),I(),L(!0)},tabIndex:B()?-1:0,"aria-label":(B()?b:p)+", "+(w?(null==(O=h.current)?void 0:O.value)+" valgt":"Ingen dato valgt")},E.default.createElement(i.CalendarIcon,null)))},N))})),M=["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=E.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,D=t.feedback,L=void 0===D?"":D,x=t.variant,A=t.validationFeedback,P=void 0===A?"Ugyldig dato":A,O=t.validationVariant,R=void 0===O?"error":O,S=t.disableLabelAnimation,q=void 0!==S&&S,V=t.calendarButtonTooltipOpen,Z=void 0===V?"Åpne kalender":V,U=t.calendarButtonTooltipClose,G=void 0===U?"Lukk kalender":U,H=t.hideCalendarButton,W=void 0!==H&&H,Y=t.hideCalendar,z=void 0!==Y&&Y,j=t.hideValidation,K=void 0!==j&&j,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,M),de=e.useRandomId("eds-datepicker"),ue=a.useRef(null),se=E.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];E.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:x}:!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(!De())},De=function(){var e;return null==(e=ue.current)?void 0:e.isCalendarOpen()};return E.default.createElement(E.default.Fragment,null,E.default.createElement(w.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:!z&&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 E.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:E.default.createElement(N,{style:i,label:u,inputPlaceholder:c,calendarButtonTooltipOpen:Z,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?(De()||(he(),ye()),ke()):"Tab"===e.key&&De()?ye():"Escape"===e.key&&(ye(),ke(),De()&&Ce()),p(e)},onBlurInput:function(){De()||(he(),ye())},onFocus:void 0,toggleCalendarGUI:Ce,setFocusToCalendarGUI:function(){k||z||De()||(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:De,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 E.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=E.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,D=t.style,w=t.className,L=t.labelProps,B=t.append,x=F(t,q),A=m.useLocale(),N=c.useDateFieldState(T({},x,{locale:null!=i?i:A.locale,createCalendar:R,value:null===l?void 0:l,hideTimeZone:!o,granularity:d?"minute":p})),M=a.useRef(null),P=f.useDateField(T({},x,{label:r,isDisabled:b||x.isDisabled}),N,M),S=P.labelProps,V=P.fieldProps,Z=e.useRandomId("datefield");return E.default.createElement(e.ConditionalWrapper,{condition:void 0!==i,wrapper:function(e){return E.default.createElement(m.I18nProvider,{locale:i},e)}},E.default.createElement(u.BaseFormControl,T({style:D,className:I.default("eds-datefield",w),labelId:Z,ref:e.mergeRefs(M,n),disabled:N.isDisabled,disableLabelAnimation:!0,label:r,labelTooltip:C,labelProps:null!=L?L:S},V,{variant:(null!=v?v:"invalid"===N.validationState)?_:void 0,feedback:(null!=g?g:"invalid"===N.validationState)?y:void 0,append:B,ariaAlertOnFeedback:!0}),N.segments.map((function(e,a){return E.default.createElement(O,{segment:e,state:N,key:a})}))))})),Z=["children","className","style"],U=function(e){var t=e.children,n=e.className,l=e.style,r=F(e,Z),i=a.useRef(null),o=g.useButton(r,i);return E.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 E.default.createElement("td",T({},o.cellProps,{className:"eds-datepicker__calendar__grid__cell__td"}),E.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 E.default.createElement(E.default.Fragment,null,E.default.createElement("table",T({},d,{cellSpacing:"0",className:"eds-datepicker__calendar__grid"}),E.default.createElement("thead",T({},u),E.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 E.default.createElement("th",{key:a},e)})))),E.default.createElement("tbody",null,f.map((function(e){return E.default.createElement("tr",{key:e},t.getDatesInWeek(e).map((function(e,a){return e?E.default.createElement(H,{key:a,state:t,date:e,"aria-describedby":r+"description"}):E.default.createElement("td",{key:a})})))})))),E.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")))},z=["selectedDate","onChange","locale","style","children","navigationDescription"],j=E.default.forwardRef((function(a,t){var n=a.onChange,l=a.locale,r=a.style,o=a.navigationDescription,d=F(a,z),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 E.default.createElement(e.ConditionalWrapper,{condition:l,wrapper:function(e){return E.default.createElement(m.I18nProvider,{locale:l},e)}},E.default.createElement("div",T({},c.calendarProps,{ref:t,className:"eds-datepicker__calendar",style:r}),E.default.createElement("div",{className:"eds-datepicker__calendar__header"},E.default.createElement(U,T({},f,{"aria-label":S("Forrige måned",u,f)}),E.default.createElement(i.LeftArrowIcon,{size:20})),E.default.createElement("h2",null,g),E.default.createElement(U,T({},p,{"aria-label":S("Neste måned",u,p)}),E.default.createElement(i.RightArrowIcon,{size:20}))),E.default.createElement(Y,{state:s,navigationDescription:o})))})),K=["selectedDate","onChange","locale","disabled","showTime","showTimeZone","className","style","variant","feedback","validationVariant","validationFeedback","disableModal","labelTooltip","navigationDescription","minDate","maxDate"],J=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],Q=["onChange","variant","value"],X=E.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?E.default.createElement(i.DateIcon,{inline:!0}):f,p=F(a,J),b=e.useRandomId("eds-nativetimepicker");return E.default.createElement(u.BaseFormControl,{style:l,className:n,prepend:m,label:r,feedback:d,variant:s,labelId:b,disableLabelAnimation:c,isFilled:!0},E.default.createElement($,T({onChange:o,"aria-labelledby":b,ref:t,variant:s},p)))})),$=E.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)})),E.default.useEffect((function(){r?f&&!c&&f(!0):f&&c&&f(!1)}),[r,f,c]),E.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 E.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},E.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=E.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,D=void 0===C?"Trekk fra "+y+" minutter":C,w=t.rightArrowButtonAriaLabel,L=void 0===w?"Legg til "+y+" minutter":w,B=F(t,ae),x=m.useLocale().locale;h&&(x=h);var A=c.useTimeFieldState(T({onChange:r,label:s,locale:x,value:null===l?void 0:l,hideTimeZone:!_,isDisabled:i},B)),N=a.useRef(null),M=f.useTimeField(T({},B,{label:s}),A,N),P=M.labelProps,R=M.fieldProps,S=e.useRandomId("timepicker"),q=function(e){V?Z():U(e)},V=A.segments.some((function(e){return"––"===e.text})),Z=function(){var e=p.now(p.getLocalTimeZone()),a=Math.floor(e.minute/y)*y,t=e.set({minute:a});r(t)},U=function(e){var a;A.value&&A.setValue(null==(a=A.value)?void 0:a.add({minutes:e}))};return E.default.createElement(m.I18nProvider,{locale:x},E.default.createElement("div",{className:I.default(o,"eds-timepicker__wrapper")},E.default.createElement(ee,{direction:"left",disabled:i,"aria-label":D,onClick:function(){return q(-1*y)}}),E.default.createElement(u.BaseFormControl,T({style:d,className:"eds-timepicker",labelId:S,label:s,labelProps:T({},P),ref:e.mergeRefs(N,n),disabled:i,disableLabelAnimation:!0,labelTooltip:b},R,{variant:g,feedback:v}),A.segments.map((function(e,a){return E.default.createElement(O,{segment:e,state:A,key:a})}))),E.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=E.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 E.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},E.default.createElement(ie,T({onChange:r,"aria-labelledby":f,ref:t},c)))})),ie=E.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)})),E.default.useEffect((function(){l?c&&!s&&c(!0):c&&s&&c(!1)}),[l,c,s]),E.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=j,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,D=void 0!==k&&k,w=t.labelTooltip,B=t.navigationDescription,x=t.minDate,A=t.maxDate,N=F(t,K),M=a.useRef(null),P=a.useRef(null),O=a.useRef(null),R=e.useWindowDimensions().width,S=c.useDatePickerState(T({},N,{minValue:x,maxValue:A,value:n,onChange:l})),q=f.useDatePicker(T({isDisabled:o,minValue:x,maxValue:A},N),S,M),Z=q.groupProps,G=q.labelProps,H=q.fieldProps,W=q.buttonProps,Y=q.dialogProps,z=q.calendarProps;a.useEffect((function(){var e,a=function(e){"Escape"===e.key&&S.setOpen(!1)};return null==(e=P.current)||e.addEventListener("keydown",a),function(){var e;return null==(e=P.current)?void 0:e.removeEventListener("keydown",a)}}),[]);var J=_.useFloating({placement:"bottom-start",middleware:[_.offset(y.space.extraSmall),_.flip(),_.shift({padding:y.space.extraSmall})]}),Q=J.x,X=J.y,$=J.reference,ee=J.floating,ae=J.strategy;e.useOnClickOutside([P],(function(){S.setOpen(!1)}));var te=E.default.createElement(E.default.Fragment,null,S.isOpen&&E.default.createElement(L.default,{disabled:!S.isOpen,returnFocus:!0},E.default.createElement(j,T({},Y,z,{onChange:function(e){l(e),S.setOpen(!1)},disabled:z.isDisabled,ref:function(e){P.current=e,ee(e)},navigationDescription:B,style:{position:ae,top:null!=X?X:0,left:null!=Q?Q:0,zIndex:y.zIndexes.popover}})))),ne=E.default.createElement(C.Modal,{size:"small",title:"",open:S.isOpen,onDismiss:function(){return S.setOpen(!1)},closeOnClickOutside:!0,className:"eds-datepicker__calendar-modal"},E.default.createElement(j,T({},Y,z,{onChange:function(e){l(e),S.setOpen(!1)},disabled:z.isDisabled,ref:P,navigationDescription:B})));return E.default.createElement(e.ConditionalWrapper,{condition:void 0!==r,wrapper:function(e){return E.default.createElement(m.I18nProvider,{locale:r},e)}},E.default.createElement("div",{className:I.default("eds-datepicker",p)},E.default.createElement("div",T({},Z,{ref:function(e){M.current=e,$(e)},className:"eds-datepicker__datefield__wrapper"}),E.default.createElement(V,T({},H,{selectedDate:S.value,label:N.label,labelProps:G,showTime:d,showTimeZone:s,ref:O,variant:b,feedback:v,validationVariant:g,validationFeedback:h,labelTooltip:w,className:I.default("eds-datepicker__datefield",{"eds-datepicker__datefield--disabled":H.isDisabled})})),!H.isDisabled&&E.default.createElement(U,T({},W,{onPress:function(){var e,a,t,n,l;S.isOpen?S.setOpen(!1):(S.setOpen(!0),t="eds-datepicker__calendar__grid__cell",n=null==(e=P.current)?void 0:e.getElementsByClassName(t+"--selected")[0],l=null==(a=P.current)?void 0:a.getElementsByClassName(t+"--today")[0],n?n.focus():l&&l.focus())},className:"eds-datepicker__open-calendar-button"}),E.default.createElement(i.CalendarIcon,null)),R>1e3||D?te:ne)))},exports.NativeDatePicker=X,exports.NativeTimePicker=re,exports.TimePicker=te,exports.ariaLabelIfNorwegian=S,exports.createCalendar=R,exports.nativeDateToTimeOrDateValue=function(e,a,t,n,l){return void 0===a&&(a=!1),void 0===t&&(t=!1),n?l?new p.ZonedDateTime(e.getFullYear(),e.getMonth()+1,e.getDate(),n,l,e.getHours(),e.getMinutes(),e.getSeconds()):p.parseAbsolute(e.toISOString(),n):a?new p.Time(e.getHours(),e.getMinutes(),e.getSeconds(),0):t?new p.CalendarDate(e.getFullYear(),e.getMonth()+1,e.getDate()):new p.CalendarDateTime(e.getFullYear(),e.getMonth()+1,e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds())},exports.timeOrDateValueToNativeDate=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.hour?e.timeZone?e.toDate():a?e.toDate(a):new Date(e.year,e.month-1,e.day,e.hour,e.minute,e.second):e.toDate(null!=a?a:p.getLocalTimeZone())};
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),a=require("react"),t=require("@react-stately/datepicker"),l=require("@react-aria/datepicker"),n=require("@react-aria/i18n"),r=require("classnames"),i=require("@entur/form"),o=require("@internationalized/date"),d=require("@react-aria/calendar"),s=require("@react-stately/calendar"),u=require("@entur/icons"),c=require("@react-aria/button"),f=require("@entur/button"),m=require("@entur/a11y"),p=require("@floating-ui/react-dom"),b=require("react-focus-lock"),v=require("@entur/tokens"),g=require("@entur/modal");function k(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var h=k(a),C=k(r),_=k(b);function y(){return y=Object.assign||function(e){for(var a=1;a<arguments.length;a++){var t=arguments[a];for(var l in t)Object.prototype.hasOwnProperty.call(t,l)&&(e[l]=t[l])}return e},y.apply(this,arguments)}function w(e,a){if(null==e)return{};var t,l,n={},r=Object.keys(e);for(l=0;l<r.length;l++)a.indexOf(t=r[l])>=0||(n[t]=e[t]);return n}var D=function(e){var t=e.segment,n=e.state,r=a.useRef(null),i=l.useDateSegment(t,n,r).segmentProps,o=n.segments.some((function(e){return"AM"===e.text||"PM"===e.text}));return h.default.createElement("div",y({},i,{ref:r,className:C.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:i.tabIndex}),o?t.text:t.text.match(/\d+/)?t.text.padStart(2,"0"):t.text)},E=function(e){if(void 0===e&&(e="gregory"),"gregory"===e)return new o.GregorianCalendar;throw new Error("Unsupported calendar "+e)},T=function(e,a,t){return"no-no"!==a.toLowerCase()?t["aria-label"]:e},P=["selectedDate","label","locale","showTimeZone","showTime","granularity","disabled","variant","feedback","validationVariant","validationFeedback","labelTooltip","minDate","maxDate","style","className","labelProps","append"],x=h.default.forwardRef((function(r,o){var d=r.selectedDate,s=r.label,u=r.locale,c=r.showTimeZone,f=r.showTime,m=r.granularity,p=void 0===m?"day":m,b=r.disabled,v=r.variant,g=r.feedback,k=r.validationVariant,_=void 0===k?"error":k,T=r.validationFeedback,x=void 0===T?"Ugyldig dato":T,N=r.labelTooltip,F=r.minDate,I=r.maxDate,S=r.style,A=r.className,O=r.labelProps,L=r.append,R=w(r,P),M=n.useLocale(),q=t.useDateFieldState(y({},R,{locale:null!=u?u:M.locale,createCalendar:E,value:null===d?void 0:d,hideTimeZone:!c,granularity:f?"minute":p,minValue:F,maxValue:I})),V=a.useRef(null),B=l.useDateField(y({},R,{label:s,isDisabled:b||R.isDisabled}),q,V),Z=B.labelProps,W=B.fieldProps,z=e.useRandomId("datefield");return h.default.createElement(e.ConditionalWrapper,{condition:void 0!==u,wrapper:function(e){return h.default.createElement(n.I18nProvider,{locale:u},e)}},h.default.createElement(i.BaseFormControl,y({style:S,className:C.default("eds-datefield",A),labelId:z,ref:e.mergeRefs(V,o),disabled:q.isDisabled,disableLabelAnimation:!0,label:s,labelTooltip:N,labelProps:null!=O?O:Z},W,{variant:(null!=v?v:"invalid"===q.validationState)?_:void 0,feedback:(null!=g?g:"invalid"===q.validationState)?x:void 0,append:L,ariaAlertOnFeedback:!0}),q.segments.map((function(e,a){return h.default.createElement(D,{segment:e,state:q,key:a})}))))})),N=["children","className","style"],F=function(e){var t=e.children,l=e.className,n=e.style,r=w(e,N),i=a.useRef(null),o=c.useButton(r,i);return h.default.createElement(f.IconButton,y({},o.buttonProps,{ref:i,className:l,style:n}),t)},I=["state","date","onSelectedCellClick"],S=function(e){var t,l=e.state,n=e.date,r=e.onSelectedCellClick,i=void 0===r?function(){}:r,s=w(e,I),u=a.useRef(null),c=d.useCalendarCell({date:n},l,u),f=c.buttonProps,m=c.isSelected,p=c.isOutsideVisibleRange,b=c.isDisabled,v=c.isUnavailable,g=c.formattedDate;return h.default.createElement("td",y({},c.cellProps,{className:"eds-datepicker__calendar__grid__cell__td"}),h.default.createElement("div",y({},f,{ref:u,hidden:p,className:C.default("eds-datepicker__calendar__grid__cell",{"eds-datepicker__calendar__grid__cell--selected":m,"eds-datepicker__calendar__grid__cell--disabled":b||v,"eds-datepicker__calendar__grid__cell--outside-month":p,"eds-datepicker__calendar__grid__cell--today":o.isEqualDay(n,o.now(null!=(t=l.timeZone)?t:o.getLocalTimeZone()))})},s,{onClick:function(e){f.onClick&&f.onClick(e),m&&i()},onKeyDown:function(e){f.onKeyDown&&f.onKeyDown(e),"Enter"!==e.key&&" "!==e.key||m&&i()}}),g))},A=["state","navigationDescription","onSelectedCellClick"],O=function(a){var t=a.state,l=a.navigationDescription,r=a.onSelectedCellClick,i=void 0===r?function(){}:r,s=w(a,A),u=e.useRandomId("eds-calendar"),c=n.useLocale().locale,f=d.useCalendarGrid(s,t),p=f.gridProps,b=f.headerProps,v=f.weekDays,g=o.getWeeksInMonth(t.visibleRange.start,c),k=Array.from(Array(g).keys());return h.default.createElement(h.default.Fragment,null,h.default.createElement("table",y({},p,{cellSpacing:"0",className:"eds-datepicker__calendar__grid"}),h.default.createElement("thead",y({},b),h.default.createElement("tr",null,function(){if(c.toLowerCase().includes("no"))return["ma","ti","on","to","fr","lø","sø"];if(c.toLowerCase().includes("en")){if("M"===v[0])return["Mo","Tu","We","Th","Fr","Sa","Su"];if("S"===v[0])return["Su","Mo","Tu","We","Th","Fr","Sa"]}return v.map((function(e){return e.toLowerCase()}))}().map((function(e,a){return h.default.createElement("th",{key:a},e)})))),h.default.createElement("tbody",null,k.map((function(e){return h.default.createElement("tr",{key:e},t.getDatesInWeek(e).map((function(e,a){return e?h.default.createElement(S,{key:a,state:t,date:e,"aria-describedby":u+"description",onSelectedCellClick:i}):h.default.createElement("td",{key:a})})))})))),h.default.createElement(m.VisuallyHidden,{id:u+"description"},l||(c.toLowerCase().includes("en")?"Use the arrow keys to navigate between dates":"Bruk piltastene til å navigere mellom datoer")))},L=["selectedDate","onChange","locale","style","children","navigationDescription","onSelectedCellClick"],R=h.default.forwardRef((function(a,t){var l=a.onChange,r=a.locale,i=a.style,o=a.navigationDescription,c=a.onSelectedCellClick,f=void 0===c?function(){}:c,m=w(a,L),p=n.useLocale().locale,b=s.useCalendarState(y({},m,{onChange:l,locale:null!=r?r:p,createCalendar:E})),v=d.useCalendar(m,b),g=v.prevButtonProps,k=v.nextButtonProps,C=v.title;return h.default.createElement(e.ConditionalWrapper,{condition:r,wrapper:function(e){return h.default.createElement(n.I18nProvider,{locale:r},e)}},h.default.createElement("div",y({},v.calendarProps,{ref:t,className:"eds-datepicker__calendar",style:i}),h.default.createElement("div",{className:"eds-datepicker__calendar__header"},h.default.createElement(F,y({},g,{"aria-label":T("Forrige måned",p,g)}),h.default.createElement(u.LeftArrowIcon,{size:20})),h.default.createElement("h2",null,C),h.default.createElement(F,y({},k,{"aria-label":T("Neste måned",p,k)}),h.default.createElement(u.RightArrowIcon,{size:20}))),h.default.createElement(O,{state:b,navigationDescription:o,onSelectedCellClick:f})))})),M=["selectedDate","onChange","locale","disabled","showTime","showTimeZone","className","style","variant","feedback","validationVariant","validationFeedback","disableModal","labelTooltip","navigationDescription","minDate","maxDate","modalTreshold"],q=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],V=["onChange","variant","value"],B=h.default.forwardRef((function(a,t){var l=a.className,n=a.style,r=a.label,o=a.onChange,d=a.feedback,s=a.variant,c=a.disableLabelAnimation,f=a.prepend,m=void 0===f?h.default.createElement(u.DateIcon,{inline:!0}):f,p=w(a,q),b=e.useRandomId("eds-nativetimepicker");return h.default.createElement(i.BaseFormControl,{style:n,className:l,prepend:m,label:r,feedback:d,variant:s,labelId:b,disableLabelAnimation:c,isFilled:!0},h.default.createElement(Z,y({onChange:o,"aria-labelledby":b,ref:t,variant:s},p)))})),Z=h.default.forwardRef((function(a,t){var l=a.onChange,n=a.variant,r=a.value,o=w(a,V),d=i.useVariant(),s=n||d,u=i.useInputGroupContext(),c=u.isFilled,f=u.setFilled;return e.useOnMount((function(){f&&!c&&f(!0)})),h.default.useEffect((function(){r?f&&!c&&f(!0):f&&c&&f(!1)}),[r,f,c]),h.default.createElement("input",y({ref:t,"aria-invalid":"error"===s,type:"date",className:"eds-form-control eds-native-date-picker",onChange:function(e){i.isFilled(e.target)?f&&!c&&f(!0):f&&c&&f(!1),l&&l(e)},value:r},o))})),W=function(e){var a=e.direction,t=e.onClick,l=e.disabled,n=e["aria-label"];return h.default.createElement(f.IconButton,{className:C.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+a,{"eds-timepicker__arrowbutton--disabled":l}),type:"button",tabIndex:-1,onClick:t,"aria-label":n,disabled:l},h.default.createElement("left"===a?u.LeftArrowIcon:u.RightArrowIcon,null))},z=["selectedTime","onChange","disabled","className","style","label","labelTooltip","feedback","variant","locale","showTimeZone","minuteIncrementForArrowButtons","leftArrowButtonAriaLabel","rightArrowButtonAriaLabel"],j=h.default.forwardRef((function(r,d){var s=r.selectedTime,u=r.onChange,c=r.disabled,f=r.className,m=r.style,p=r.label,b=r.labelTooltip,v=r.feedback,g=r.variant,k=r.locale,_=r.showTimeZone,E=r.minuteIncrementForArrowButtons,T=void 0===E?30:E,P=r.leftArrowButtonAriaLabel,x=void 0===P?"Trekk fra "+T+" minutter":P,N=r.rightArrowButtonAriaLabel,F=void 0===N?"Legg til "+T+" minutter":N,I=w(r,z),S=n.useLocale().locale;k&&(S=k);var A=t.useTimeFieldState(y({onChange:u,label:p,locale:S,value:null===s?void 0:s,hideTimeZone:!_,isDisabled:c},I)),O=a.useRef(null),L=l.useTimeField(y({},I,{label:p}),A,O),R=L.labelProps,M=L.fieldProps,q=e.useRandomId("timepicker"),V=function(e){B?Z():j(e)},B=A.segments.some((function(e){return"––"===e.text})),Z=function(){var e=o.now(o.getLocalTimeZone()),a=Math.floor(e.minute/T)*T,t=e.set({minute:a});u(t)},j=function(e){var a;A.value&&A.setValue(null==(a=A.value)?void 0:a.add({minutes:e}))};return h.default.createElement(n.I18nProvider,{locale:S},h.default.createElement("div",{className:C.default(f,"eds-timepicker__wrapper")},h.default.createElement(W,{direction:"left",disabled:c,"aria-label":x,onClick:function(){return V(-1*T)}}),h.default.createElement(i.BaseFormControl,y({style:m,className:"eds-timepicker",labelId:q,label:p,labelProps:y({},R),ref:e.mergeRefs(O,d),disabled:c,disableLabelAnimation:!0,labelTooltip:b},M,{variant:g,feedback:v}),A.segments.map((function(e,a){return h.default.createElement(D,{segment:e,state:A,key:a})}))),h.default.createElement(W,{direction:"right",disabled:c,"aria-label":F,onClick:function(){return V(T)}})))})),H=["className","style","onChange","label","feedback","variant","prepend"],U=["onChange","value"],G=h.default.forwardRef((function(a,t){var l=a.className,n=a.style,r=a.onChange,o=a.label,d=a.feedback,s=a.variant,u=a.prepend,c=w(a,H),f=e.useRandomId("eds-native-timepicker");return h.default.createElement(i.BaseFormControl,{style:n,className:C.default(l,"eds-native-timepicker"),prepend:u,label:o,feedback:d,variant:s,labelId:f,disableLabelAnimation:!0},h.default.createElement(K,y({onChange:r,"aria-labelledby":f,ref:t},c)))})),K=h.default.forwardRef((function(a,t){var l=a.onChange,n=a.value,r=w(a,U),o=i.useVariant(),d=r.variant||o,s=i.useInputGroupContext(),u=s.isFilled,c=s.setFilled;return e.useOnMount((function(){c&&!u&&c(!0)})),h.default.useEffect((function(){n?c&&!u&&c(!0):c&&u&&c(!1)}),[n,c,u]),h.default.createElement("input",y({ref:t,"aria-invalid":"error"===d,type:"time",className:"eds-form-control",onChange:function(e){i.isFilled(e.target)?c&&!u&&c(!0):c&&u&&c(!1),l&&l(e)},value:n},r))}));e.warnAboutMissingStyles("datepicker","form","icons"),exports.Calendar=R,exports.DateField=x,exports.DatePicker=function(r){var i=r.selectedDate,o=r.onChange,d=r.locale,s=r.disabled,c=r.showTime,f=r.showTimeZone,m=void 0!==f&&f,b=r.className,k=r.variant,D=r.feedback,E=r.validationVariant,T=r.validationFeedback,P=r.disableModal,N=void 0!==P&&P,I=r.labelTooltip,S=r.navigationDescription,A=r.minDate,O=r.maxDate,L=r.modalTreshold,q=void 0===L?1e3:L,V=w(r,M),B=q,Z=a.useRef(null),W=a.useRef(null),z=a.useRef(null),j=e.useWindowDimensions().width,H=t.useDatePickerState(y({},V,{minValue:A,maxValue:O,value:i,onChange:o})),U=l.useDatePicker(y({isDisabled:s,minValue:A,maxValue:O},V),H,Z),G=U.groupProps,K=U.labelProps,Y=U.fieldProps,J=U.buttonProps,Q=U.dialogProps,X=U.calendarProps,$=p.useFloating({whileElementsMounted:p.autoUpdate,placement:"bottom-start",middleware:[p.offset(v.space.extraSmall),p.flip(),p.shift({padding:v.space.extraSmall})]}),ee=$.x,ae=$.y,te=$.reference,le=$.floating,ne=$.strategy;e.useOnClickOutside([W],(function(){H.setOpen(!1)})),e.useOnEscape(W,(function(){H.setOpen(!1)}));var re=y({},Q,X,{disabled:X.isDisabled,navigationDescription:S,onSelectedCellClick:function(){return H.setOpen(!1)},onChange:function(e){requestAnimationFrame((function(){X.onChange&&X.onChange(e)}))}}),ie=j<=B&&!N,oe=h.default.createElement("div",{style:{position:ne,top:null!=ae?ae:0,left:null!=ee?ee:0,zIndex:v.zIndexes.popover},ref:function(e){le(e)}},h.default.createElement(_.default,{disabled:!H.isOpen||ie,returnFocus:!0},H.isOpen&&h.default.createElement(R,y({},re,{ref:W})))),de=h.default.createElement(g.Modal,{size:"small",title:"",open:H.isOpen,onDismiss:function(){return H.setOpen(!1)},closeOnClickOutside:!0,className:"eds-datepicker__calendar-modal"},h.default.createElement(R,y({},re)));return h.default.createElement(e.ConditionalWrapper,{condition:void 0!==d,wrapper:function(e){return h.default.createElement(n.I18nProvider,{locale:d},e)}},h.default.createElement("div",{className:C.default("eds-datepicker",b)},h.default.createElement("div",y({},G,{ref:function(e){Z.current=e,te(e)},id:void 0,className:"eds-datepicker__datefield__wrapper"}),h.default.createElement(x,y({},Y,{selectedDate:H.value,label:V.label,labelProps:K,showTime:c,showTimeZone:m,ref:z,variant:k,feedback:D,validationVariant:E,validationFeedback:T,labelTooltip:I,className:C.default("eds-datepicker__datefield",{"eds-datepicker__datefield--disabled":Y.isDisabled})})),!Y.isDisabled&&h.default.createElement(F,y({},J,{onPress:function(){return H.setOpen(!H.isOpen)},className:"eds-datepicker__open-calendar-button"}),h.default.createElement(u.CalendarIcon,null)),ie?de:oe)))},exports.NativeDatePicker=B,exports.NativeTimePicker=G,exports.TimePicker=j,exports.ariaLabelIfNorwegian=T,exports.createCalendar=E,exports.nativeDateToTimeOrDateValue=function(e,a,t,l,n){return void 0===a&&(a=!1),void 0===t&&(t=!1),l?n?new o.ZonedDateTime(e.getFullYear(),e.getMonth()+1,e.getDate(),l,n,e.getHours(),e.getMinutes(),e.getSeconds()):o.parseAbsolute(e.toISOString(),l):a?new o.Time(e.getHours(),e.getMinutes(),e.getSeconds(),0):t?new o.CalendarDate(e.getFullYear(),e.getMonth()+1,e.getDate()):new o.CalendarDateTime(e.getFullYear(),e.getMonth()+1,e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds())},exports.timeOrDateValueToNativeDate=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.hour?e.timeZone?e.toDate():a?e.toDate(a):new Date(e.year,e.month-1,e.day,e.hour,e.minute,e.second):e.toDate(null!=a?a:o.getLocalTimeZone())};
|
|
2
2
|
//# sourceMappingURL=datepicker.cjs.production.min.js.map
|