@entur/datepicker 4.0.0-RC.1 → 4.0.0-RC.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.cjs.development.js","sources":["../src/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/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';\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 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 >\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() === '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 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 { CalendarDate } from '@internationalized/date';\nimport type {\n DateValue,\n SpectrumDatePickerProps,\n} 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?: 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 /** 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 SpectrumDatePickerProps<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, autoFocus: true, ...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 {\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":["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","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","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","onChange","useCalendarState","useCalendar","calendarProps","prevButtonProps","nextButtonProps","title","LeftArrowIcon","size","RightArrowIcon","DatePicker","disableModal","minValue","minDate","maxValue","maxDate","modalTreshold","CALENDAR_MODAL_MAX_SCREEN_WIDTH","datePickerRef","calendarRef","useWindowDimensions","width","useDatePickerState","useDatePicker","autoFocus","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
+ {"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/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';\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 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 >\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() === '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 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 { CalendarDate } from '@internationalized/date';\nimport type {\n DateValue,\n SpectrumDatePickerProps,\n} 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?: 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 /** 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 SpectrumDatePickerProps<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 {\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":["FieldSegment","segment","state","ref","useRef","useDateSegment","segmentProps","is12HourFormatted","segments","some","text","segmentDisplayText","match","padStart","React","createElement","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","style","parentLabelProps","labelProps","append","rest","_excluded","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","CalendarGrid","navigationDescription","calendarGridId","useCalendarGrid","gridProps","headerProps","weekDays","weeksInMonth","getWeeksInMonth","visibleRange","start","weeksArray","Array","from","keys","weekDaysMapped","toString","getNavigationDescription","includes","Fragment","cellSpacing","index","weekIndex","getDatesInWeek","VisuallyHidden","Calendar","onChange","_","useCalendarState","useCalendar","calendarProps","prevButtonProps","nextButtonProps","title","LeftArrowIcon","size","RightArrowIcon","DatePicker","disableModal","minValue","minDate","maxValue","maxDate","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","_excluded2","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-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 C=k(a),h=k(r),_=k(b);function w(){return w=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},w.apply(this,arguments)}function y(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 E=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 C.default.createElement("div",w({},i,{ref:r,className:h.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)},D=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","style","className","labelProps","append"],N=C.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,N=void 0===T?"Ugyldig dato":T,x=r.labelTooltip,F=r.style,I=r.className,S=r.labelProps,A=r.append,O=y(r,P),L=n.useLocale(),R=t.useDateFieldState(w({},O,{locale:null!=u?u:L.locale,createCalendar:D,value:null===d?void 0:d,hideTimeZone:!c,granularity:f?"minute":p})),M=a.useRef(null),q=l.useDateField(w({},O,{label:s,isDisabled:b||O.isDisabled}),R,M),B=q.labelProps,V=q.fieldProps,Z=e.useRandomId("datefield");return C.default.createElement(e.ConditionalWrapper,{condition:void 0!==u,wrapper:function(e){return C.default.createElement(n.I18nProvider,{locale:u},e)}},C.default.createElement(i.BaseFormControl,w({style:F,className:h.default("eds-datefield",I),labelId:Z,ref:e.mergeRefs(M,o),disabled:R.isDisabled,disableLabelAnimation:!0,label:s,labelTooltip:x,labelProps:null!=S?S:B},V,{variant:(null!=v?v:"invalid"===R.validationState)?_:void 0,feedback:(null!=g?g:"invalid"===R.validationState)?N:void 0,append:A,ariaAlertOnFeedback:!0}),R.segments.map((function(e,a){return C.default.createElement(E,{segment:e,state:R,key:a})}))))})),x=["children","className","style"],F=function(e){var t=e.children,l=e.className,n=e.style,r=y(e,x),i=a.useRef(null),o=c.useButton(r,i);return C.default.createElement(f.IconButton,w({},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=y(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 C.default.createElement("td",w({},c.cellProps,{className:"eds-datepicker__calendar__grid__cell__td"}),C.default.createElement("div",w({},f,{ref:u,hidden:p,className:h.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()}}),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=y(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 C.default.createElement(C.default.Fragment,null,C.default.createElement("table",w({},p,{cellSpacing:"0",className:"eds-datepicker__calendar__grid"}),C.default.createElement("thead",w({},b),C.default.createElement("tr",null,("no-no"===c.toLowerCase()||"no"===c.toLowerCase()?["ma","ti","on","to","fr","lø","sø"]:"M,T,W,T,F,S,S"===v.toString()?["Mo","Tu","We","Th","Fr","Sa","Su"]:v.map((function(e){return e.toLowerCase()}))).map((function(e,a){return C.default.createElement("th",{key:a},e)})))),C.default.createElement("tbody",null,k.map((function(e){return C.default.createElement("tr",{key:e},t.getDatesInWeek(e).map((function(e,a){return e?C.default.createElement(S,{key:a,state:t,date:e,"aria-describedby":u+"description",onSelectedCellClick:i}):C.default.createElement("td",{key:a})})))})))),C.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=C.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=y(a,L),p=n.useLocale().locale,b=s.useCalendarState(w({},m,{onChange:l,locale:null!=r?r:p,createCalendar:D})),v=d.useCalendar(m,b),g=v.prevButtonProps,k=v.nextButtonProps,h=v.title;return C.default.createElement(e.ConditionalWrapper,{condition:r,wrapper:function(e){return C.default.createElement(n.I18nProvider,{locale:r},e)}},C.default.createElement("div",w({},v.calendarProps,{ref:t,className:"eds-datepicker__calendar",style:i}),C.default.createElement("div",{className:"eds-datepicker__calendar__header"},C.default.createElement(F,w({},g,{"aria-label":T("Forrige måned",p,g)}),C.default.createElement(u.LeftArrowIcon,{size:20})),C.default.createElement("h2",null,h),C.default.createElement(F,w({},k,{"aria-label":T("Neste måned",p,k)}),C.default.createElement(u.RightArrowIcon,{size:20}))),C.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"],B=["onChange","variant","value"],V=C.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?C.default.createElement(u.DateIcon,{inline:!0}):f,p=y(a,q),b=e.useRandomId("eds-nativetimepicker");return C.default.createElement(i.BaseFormControl,{style:n,className:l,prepend:m,label:r,feedback:d,variant:s,labelId:b,disableLabelAnimation:c,isFilled:!0},C.default.createElement(Z,w({onChange:o,"aria-labelledby":b,ref:t,variant:s},p)))})),Z=C.default.forwardRef((function(a,t){var l=a.onChange,n=a.variant,r=a.value,o=y(a,B),d=i.useVariant(),s=n||d,u=i.useInputGroupContext(),c=u.isFilled,f=u.setFilled;return e.useOnMount((function(){f&&!c&&f(!0)})),C.default.useEffect((function(){r?f&&!c&&f(!0):f&&c&&f(!1)}),[r,f,c]),C.default.createElement("input",w({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 C.default.createElement(f.IconButton,{className:h.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+a,{"eds-timepicker__arrowbutton--disabled":l}),type:"button",tabIndex:-1,onClick:t,"aria-label":n,disabled:l},C.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=C.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,D=r.minuteIncrementForArrowButtons,T=void 0===D?30:D,P=r.leftArrowButtonAriaLabel,N=void 0===P?"Trekk fra "+T+" minutter":P,x=r.rightArrowButtonAriaLabel,F=void 0===x?"Legg til "+T+" minutter":x,I=y(r,z),S=n.useLocale().locale;k&&(S=k);var A=t.useTimeFieldState(w({onChange:u,label:p,locale:S,value:null===s?void 0:s,hideTimeZone:!_,isDisabled:c},I)),O=a.useRef(null),L=l.useTimeField(w({},I,{label:p}),A,O),R=L.labelProps,M=L.fieldProps,q=e.useRandomId("timepicker"),B=function(e){V?Z():j(e)},V=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 C.default.createElement(n.I18nProvider,{locale:S},C.default.createElement("div",{className:h.default(f,"eds-timepicker__wrapper")},C.default.createElement(W,{direction:"left",disabled:c,"aria-label":N,onClick:function(){return B(-1*T)}}),C.default.createElement(i.BaseFormControl,w({style:m,className:"eds-timepicker",labelId:q,label:p,labelProps:w({},R),ref:e.mergeRefs(O,d),disabled:c,disableLabelAnimation:!0,labelTooltip:b},M,{variant:g,feedback:v}),A.segments.map((function(e,a){return C.default.createElement(E,{segment:e,state:A,key:a})}))),C.default.createElement(W,{direction:"right",disabled:c,"aria-label":F,onClick:function(){return B(T)}})))})),H=["className","style","onChange","label","feedback","variant","prepend"],U=["onChange","value"],G=C.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=y(a,H),f=e.useRandomId("eds-native-timepicker");return C.default.createElement(i.BaseFormControl,{style:n,className:h.default(l,"eds-native-timepicker"),prepend:u,label:o,feedback:d,variant:s,labelId:f,disableLabelAnimation:!0},C.default.createElement(Y,w({onChange:r,"aria-labelledby":f,ref:t},c)))})),Y=C.default.forwardRef((function(a,t){var l=a.onChange,n=a.value,r=y(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)})),C.default.useEffect((function(){n?c&&!u&&c(!0):c&&u&&c(!1)}),[n,c,u]),C.default.createElement("input",w({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=N,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,E=r.feedback,D=r.validationVariant,T=r.validationFeedback,P=r.disableModal,x=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,B=y(r,M),V=q,Z=a.useRef(null),W=a.useRef(null),z=a.useRef(null),j=e.useWindowDimensions().width,H=t.useDatePickerState(w({},B,{minValue:A,maxValue:O,value:i,onChange:o})),U=l.useDatePicker(w({isDisabled:s,minValue:A,maxValue:O,autoFocus:!0},B),H,Z),G=U.groupProps,Y=U.labelProps,J=U.fieldProps,K=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=w({},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<=V&&!x,oe=C.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)}},C.default.createElement(_.default,{disabled:!H.isOpen||ie,returnFocus:!0},H.isOpen&&C.default.createElement(R,w({},re,{ref:W})))),de=C.default.createElement(g.Modal,{size:"small",title:"",open:H.isOpen,onDismiss:function(){return H.setOpen(!1)},closeOnClickOutside:!0,className:"eds-datepicker__calendar-modal"},C.default.createElement(R,w({},re)));return C.default.createElement(e.ConditionalWrapper,{condition:void 0!==d,wrapper:function(e){return C.default.createElement(n.I18nProvider,{locale:d},e)}},C.default.createElement("div",{className:h.default("eds-datepicker",b)},C.default.createElement("div",w({},G,{ref:function(e){Z.current=e,te(e)},id:void 0,className:"eds-datepicker__datefield__wrapper"}),C.default.createElement(N,w({},J,{selectedDate:H.value,label:B.label,labelProps:Y,showTime:c,showTimeZone:m,ref:z,variant:k,feedback:E,validationVariant:D,validationFeedback:T,labelTooltip:I,className:h.default("eds-datepicker__datefield",{"eds-datepicker__datefield--disabled":J.isDisabled})})),!J.isDisabled&&C.default.createElement(F,w({},K,{onPress:function(){return H.setOpen(!H.isOpen)},className:"eds-datepicker__open-calendar-button"}),C.default.createElement(u.CalendarIcon,null)),ie?de:oe)))},exports.NativeDatePicker=V,exports.NativeTimePicker=G,exports.TimePicker=j,exports.ariaLabelIfNorwegian=T,exports.createCalendar=D,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())};
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 C=k(a),h=k(r),_=k(b);function w(){return w=Object.assign?Object.assign.bind():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},w.apply(this,arguments)}function y(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 E=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 C.default.createElement("div",w({},i,{ref:r,className:h.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)},D=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","style","className","labelProps","append"],N=C.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,N=void 0===T?"Ugyldig dato":T,x=r.labelTooltip,F=r.style,I=r.className,S=r.labelProps,O=r.append,A=y(r,P),L=n.useLocale(),R=t.useDateFieldState(w({},A,{locale:null!=u?u:L.locale,createCalendar:D,value:null===d?void 0:d,hideTimeZone:!c,granularity:f?"minute":p})),M=a.useRef(null),q=l.useDateField(w({},A,{label:s,isDisabled:b||A.isDisabled}),R,M),B=q.labelProps,V=q.fieldProps,Z=e.useRandomId("datefield");return C.default.createElement(e.ConditionalWrapper,{condition:void 0!==u,wrapper:function(e){return C.default.createElement(n.I18nProvider,{locale:u},e)}},C.default.createElement(i.BaseFormControl,w({style:F,className:h.default("eds-datefield",I),labelId:Z,ref:e.mergeRefs(M,o),disabled:R.isDisabled,disableLabelAnimation:!0,label:s,labelTooltip:x,labelProps:null!=S?S:B},V,{variant:(null!=v?v:"invalid"===R.validationState)?_:void 0,feedback:(null!=g?g:"invalid"===R.validationState)?N:void 0,append:O,ariaAlertOnFeedback:!0}),R.segments.map((function(e,a){return C.default.createElement(E,{segment:e,state:R,key:a})}))))})),x=["children","className","style"],F=function(e){var t=e.children,l=e.className,n=e.style,r=y(e,x),i=a.useRef(null),o=c.useButton(r,i);return C.default.createElement(f.IconButton,w({},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=y(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 C.default.createElement("td",w({},c.cellProps,{className:"eds-datepicker__calendar__grid__cell__td"}),C.default.createElement("div",w({},f,{ref:u,hidden:p,className:h.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()}}),g))},O=["state","navigationDescription","onSelectedCellClick"],A=function(a){var t=a.state,l=a.navigationDescription,r=a.onSelectedCellClick,i=void 0===r?function(){}:r,s=y(a,O),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 C.default.createElement(C.default.Fragment,null,C.default.createElement("table",w({},p,{cellSpacing:"0",className:"eds-datepicker__calendar__grid"}),C.default.createElement("thead",w({},b),C.default.createElement("tr",null,("no-no"===c.toLowerCase()||"no"===c.toLowerCase()?["ma","ti","on","to","fr","lø","sø"]:"M,T,W,T,F,S,S"===v.toString()?["Mo","Tu","We","Th","Fr","Sa","Su"]:v.map((function(e){return e.toLowerCase()}))).map((function(e,a){return C.default.createElement("th",{key:a},e)})))),C.default.createElement("tbody",null,k.map((function(e){return C.default.createElement("tr",{key:e},t.getDatesInWeek(e).map((function(e,a){return e?C.default.createElement(S,{key:a,state:t,date:e,"aria-describedby":u+"description",onSelectedCellClick:i}):C.default.createElement("td",{key:a})})))})))),C.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=C.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=y(a,L),p=n.useLocale().locale,b=s.useCalendarState(w({},m,{onChange:l,locale:null!=r?r:p,createCalendar:D})),v=d.useCalendar(m,b),g=v.prevButtonProps,k=v.nextButtonProps,h=v.title;return C.default.createElement(e.ConditionalWrapper,{condition:r,wrapper:function(e){return C.default.createElement(n.I18nProvider,{locale:r},e)}},C.default.createElement("div",w({},v.calendarProps,{ref:t,className:"eds-datepicker__calendar",style:i}),C.default.createElement("div",{className:"eds-datepicker__calendar__header"},C.default.createElement(F,w({},g,{"aria-label":T("Forrige måned",p,g)}),C.default.createElement(u.LeftArrowIcon,{size:20})),C.default.createElement("h2",null,h),C.default.createElement(F,w({},k,{"aria-label":T("Neste måned",p,k)}),C.default.createElement(u.RightArrowIcon,{size:20}))),C.default.createElement(A,{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"],B=["onChange","variant","value"],V=C.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?C.default.createElement(u.DateIcon,{inline:!0}):f,p=y(a,q),b=e.useRandomId("eds-nativetimepicker");return C.default.createElement(i.BaseFormControl,{style:n,className:l,prepend:m,label:r,feedback:d,variant:s,labelId:b,disableLabelAnimation:c,isFilled:!0},C.default.createElement(Z,w({onChange:o,"aria-labelledby":b,ref:t,variant:s},p)))})),Z=C.default.forwardRef((function(a,t){var l=a.onChange,n=a.variant,r=a.value,o=y(a,B),d=i.useVariant(),s=n||d,u=i.useInputGroupContext(),c=u.isFilled,f=u.setFilled;return e.useOnMount((function(){f&&!c&&f(!0)})),C.default.useEffect((function(){r?f&&!c&&f(!0):f&&c&&f(!1)}),[r,f,c]),C.default.createElement("input",w({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 C.default.createElement(f.IconButton,{className:h.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+a,{"eds-timepicker__arrowbutton--disabled":l}),type:"button",tabIndex:-1,onClick:t,"aria-label":n,disabled:l},C.default.createElement("left"===a?u.LeftArrowIcon:u.RightArrowIcon,null))},j=["selectedTime","onChange","disabled","className","style","label","labelTooltip","feedback","variant","locale","showTimeZone","minuteIncrementForArrowButtons","leftArrowButtonAriaLabel","rightArrowButtonAriaLabel"],z=C.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,D=r.minuteIncrementForArrowButtons,T=void 0===D?30:D,P=r.leftArrowButtonAriaLabel,N=void 0===P?"Trekk fra "+T+" minutter":P,x=r.rightArrowButtonAriaLabel,F=void 0===x?"Legg til "+T+" minutter":x,I=y(r,j),S=n.useLocale().locale;k&&(S=k);var O=t.useTimeFieldState(w({onChange:u,label:p,locale:S,value:null===s?void 0:s,hideTimeZone:!_,isDisabled:c},I)),A=a.useRef(null),L=l.useTimeField(w({},I,{label:p}),O,A),R=L.labelProps,M=L.fieldProps,q=e.useRandomId("timepicker"),B=function(e){V?Z():z(e)},V=O.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)},z=function(e){var a;O.value&&O.setValue(null==(a=O.value)?void 0:a.add({minutes:e}))};return C.default.createElement(n.I18nProvider,{locale:S},C.default.createElement("div",{className:h.default(f,"eds-timepicker__wrapper")},C.default.createElement(W,{direction:"left",disabled:c,"aria-label":N,onClick:function(){return B(-1*T)}}),C.default.createElement(i.BaseFormControl,w({style:m,className:"eds-timepicker",labelId:q,label:p,labelProps:w({},R),ref:e.mergeRefs(A,d),disabled:c,disableLabelAnimation:!0,labelTooltip:b},M,{variant:g,feedback:v}),O.segments.map((function(e,a){return C.default.createElement(E,{segment:e,state:O,key:a})}))),C.default.createElement(W,{direction:"right",disabled:c,"aria-label":F,onClick:function(){return B(T)}})))})),H=["className","style","onChange","label","feedback","variant","prepend"],U=["onChange","value"],G=C.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=y(a,H),f=e.useRandomId("eds-native-timepicker");return C.default.createElement(i.BaseFormControl,{style:n,className:h.default(l,"eds-native-timepicker"),prepend:u,label:o,feedback:d,variant:s,labelId:f,disableLabelAnimation:!0},C.default.createElement(Y,w({onChange:r,"aria-labelledby":f,ref:t},c)))})),Y=C.default.forwardRef((function(a,t){var l=a.onChange,n=a.value,r=y(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)})),C.default.useEffect((function(){n?c&&!u&&c(!0):c&&u&&c(!1)}),[n,c,u]),C.default.createElement("input",w({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=N,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,E=r.feedback,D=r.validationVariant,T=r.validationFeedback,P=r.disableModal,x=void 0!==P&&P,I=r.labelTooltip,S=r.navigationDescription,O=r.minDate,A=r.maxDate,L=r.modalTreshold,q=void 0===L?1e3:L,B=y(r,M),V=q,Z=a.useRef(null),W=a.useRef(null),j=a.useRef(null),z=e.useWindowDimensions().width,H=t.useDatePickerState(w({},B,{minValue:O,maxValue:A,value:i,onChange:o})),U=l.useDatePicker(w({isDisabled:s,minValue:O,maxValue:A},B),H,Z),G=U.groupProps,Y=U.labelProps,J=U.fieldProps,K=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=w({},Q,X,{disabled:X.isDisabled,navigationDescription:S,onSelectedCellClick:function(){return H.setOpen(!1)},onChange:function(e){requestAnimationFrame((function(){X.onChange&&X.onChange(e)}))}}),ie=z<=V&&!x,oe=C.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)}},C.default.createElement(_.default,{disabled:!H.isOpen||ie,returnFocus:!0},H.isOpen&&C.default.createElement(R,w({},re,{ref:W})))),de=C.default.createElement(g.Modal,{size:"small",title:"",open:H.isOpen,onDismiss:function(){return H.setOpen(!1)},closeOnClickOutside:!0,className:"eds-datepicker__calendar-modal"},C.default.createElement(R,w({},re)));return C.default.createElement(e.ConditionalWrapper,{condition:void 0!==d,wrapper:function(e){return C.default.createElement(n.I18nProvider,{locale:d},e)}},C.default.createElement("div",{className:h.default("eds-datepicker",b)},C.default.createElement("div",w({},G,{ref:function(e){Z.current=e,te(e)},id:void 0,className:"eds-datepicker__datefield__wrapper"}),C.default.createElement(N,w({},J,{selectedDate:H.value,label:B.label,labelProps:Y,showTime:c,showTimeZone:m,ref:j,variant:k,feedback:E,validationVariant:D,validationFeedback:T,labelTooltip:I,className:h.default("eds-datepicker__datefield",{"eds-datepicker__datefield--disabled":J.isDisabled})})),!J.isDisabled&&C.default.createElement(F,w({},K,{onPress:function(){return H.setOpen(!H.isOpen)},className:"eds-datepicker__open-calendar-button"}),C.default.createElement(u.CalendarIcon,null)),ie?de:oe)))},exports.NativeDatePicker=V,exports.NativeTimePicker=G,exports.TimePicker=z,exports.ariaLabelIfNorwegian=T,exports.createCalendar=D,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