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