@entur/datepicker 3.0.0-alpha.0 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.0.0-alpha.1](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.3...@entur/datepicker@3.0.0-alpha.1) (2022-09-06)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **timepicker:** fix bugs with disabled state in new TimePicker ([b82a9ca](https://bitbucket.org/enturas/design-system/commits/b82a9ca2bfb9611b07c8f244035a5309438555e2))
11
+
12
+ ### Features
13
+
14
+ - **native time picker:** update native timepicker with small tweaks ([9d72bf7](https://bitbucket.org/enturas/design-system/commits/9d72bf79951aed9b236fb55a007fc96d019b9c46))
15
+ - **timepicker:** add new timepicker component using react-aria ([cd90a09](https://bitbucket.org/enturas/design-system/commits/cd90a092de72ebf1cf1cef61147ada5f42fb67b4))
16
+ - **timepicker utils:** add utility functions for converting between TimeValue and JS Date ([f5ee77e](https://bitbucket.org/enturas/design-system/commits/f5ee77e9b3666816bda82b7e0deceaf27672f536))
17
+
18
+ ### BREAKING CHANGES
19
+
20
+ - **native time picker:** disableLabelAnimation prop has been removed (is always true now)
21
+ - **timepicker:** This is a complete rewrite. Changes in the API will need to be accounted for when using this new
22
+ version
23
+
6
24
  # [3.0.0-alpha.0](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.3...@entur/datepicker@3.0.0-alpha.0) (2022-09-02)
7
25
 
8
26
  ### Features
@@ -21,6 +21,14 @@ export declare type TimePickerProps = {
21
21
  * @default false
22
22
  */
23
23
  showTimeZone?: boolean;
24
+ /** Aria-label for venstrepil-knappen som trekker fra tid
25
+ * @default `Trekk fra ${minuteIncrementForArrowButtons} minutter`
26
+ */
27
+ leftArrowButtonAriaLabel?: string;
28
+ /** Aria-label for høyrepil-knappen som legger til tid
29
+ * @default `Legg til ${minuteIncrementForArrowButtons} minutter`
30
+ */
31
+ rightArrowButtonAriaLabel?: string;
24
32
  /** Varselmelding, som vil komme under TimePicker */
25
33
  feedback?: string;
26
34
  /** Valideringsvariant */
@@ -50,6 +58,14 @@ export declare const TimePicker: React.ForwardRefExoticComponent<{
50
58
  * @default false
51
59
  */
52
60
  showTimeZone?: boolean | undefined;
61
+ /** Aria-label for venstrepil-knappen som trekker fra tid
62
+ * @default `Trekk fra ${minuteIncrementForArrowButtons} minutter`
63
+ */
64
+ leftArrowButtonAriaLabel?: string | undefined;
65
+ /** Aria-label for høyrepil-knappen som legger til tid
66
+ * @default `Legg til ${minuteIncrementForArrowButtons} minutter`
67
+ */
68
+ rightArrowButtonAriaLabel?: string | undefined;
53
69
  /** Varselmelding, som vil komme under TimePicker */
54
70
  feedback?: string | undefined;
55
71
  /** Valideringsvariant */
@@ -593,16 +593,18 @@ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
593
593
  disabled = _ref.disabled,
594
594
  ariaLabel = _ref['aria-label'];
595
595
  return React__default["default"].createElement(button.IconButton, {
596
- className: classNames__default["default"]('eds-timepicker__arrowbutton', "eds-timepicker__arrowbutton--" + direction),
596
+ className: classNames__default["default"]('eds-timepicker__arrowbutton', "eds-timepicker__arrowbutton--" + direction, {
597
+ 'eds-timepicker__arrowbutton--disabled': disabled
598
+ }),
597
599
  type: "button",
598
600
  tabIndex: -1,
599
601
  onClick: onClick,
600
- disabled: disabled,
601
- "aria-label": ariaLabel
602
+ "aria-label": ariaLabel,
603
+ disabled: disabled
602
604
  }, direction === 'left' ? React__default["default"].createElement(icons.LeftArrowIcon, null) : React__default["default"].createElement(icons.RightArrowIcon, null));
603
605
  };
604
606
 
605
- var _excluded$1 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "variant", "locale", "showTimeZone", "minuteIncrementForArrowButtons", "children"];
607
+ var _excluded$1 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "variant", "locale", "showTimeZone", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "children"];
606
608
  var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
607
609
  var selectedTime = _ref.selectedTime,
608
610
  onChange = _ref.onChange,
@@ -617,6 +619,10 @@ var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
617
619
  showTimeZone = _ref.showTimeZone,
618
620
  _ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
619
621
  minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
622
+ _ref$leftArrowButtonA = _ref.leftArrowButtonAriaLabel,
623
+ leftArrowButtonAriaLabel = _ref$leftArrowButtonA === void 0 ? "Trekk fra " + minuteIncrementForArrowButtons + " minutter" : _ref$leftArrowButtonA,
624
+ _ref$rightArrowButton = _ref.rightArrowButtonAriaLabel,
625
+ rightArrowButtonAriaLabel = _ref$rightArrowButton === void 0 ? "Legg til " + minuteIncrementForArrowButtons + " minutter" : _ref$rightArrowButton,
620
626
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
621
627
 
622
628
  var _useLocale = i18n.useLocale(),
@@ -628,7 +634,8 @@ var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
628
634
  label: label,
629
635
  locale: locale,
630
636
  value: selectedTime,
631
- hideTimeZone: !showTimeZone
637
+ hideTimeZone: !showTimeZone,
638
+ isDisabled: disabled
632
639
  }, rest));
633
640
  var timeFieldRef = React.useRef(null);
634
641
 
@@ -638,6 +645,26 @@ var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
638
645
 
639
646
  var id = utils.useRandomId('timepicker');
640
647
 
648
+ var handleOnClickArrowButton = function handleOnClickArrowButton(minutes) {
649
+ if (someSegmentIsUndefined) {
650
+ setToCurrentHour();
651
+ } else {
652
+ addMinutesToSelectedTime(minutes);
653
+ }
654
+ };
655
+
656
+ var someSegmentIsUndefined = state.segments.some(function (segment) {
657
+ return segment.text === '––';
658
+ });
659
+
660
+ var setToCurrentHour = function setToCurrentHour() {
661
+ var currentTime = date.now(date.getLocalTimeZone());
662
+ var currentHour = currentTime.minute >= 30 ? currentTime.hour + 1 : currentTime.hour;
663
+ state.setSegment('minute', 0); // this gets overridden but still needed
664
+
665
+ state.setSegment('hour', currentHour);
666
+ };
667
+
641
668
  var addMinutesToSelectedTime = function addMinutesToSelectedTime(minutes) {
642
669
  state.value && state.setValue(state.value && state.value.add({
643
670
  minutes: minutes
@@ -650,16 +677,16 @@ var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
650
677
  return React__default["default"].createElement(i18n.I18nProvider, {
651
678
  locale: locale
652
679
  }, React__default["default"].createElement("div", {
653
- className: classNames__default["default"](className, 'eds-timepicker__wrapper'),
654
- style: style
680
+ className: classNames__default["default"](className, 'eds-timepicker__wrapper')
655
681
  }, React__default["default"].createElement(TimePickerArrowButton, {
656
682
  direction: "left",
657
683
  disabled: disabled,
658
- "aria-label": "Trekk fra " + minuteIncrementForArrowButtons + " minutter",
684
+ "aria-label": leftArrowButtonAriaLabel,
659
685
  onClick: function onClick() {
660
- return addMinutesToSelectedTime(minuteIncrementForArrowButtons * -1);
686
+ return handleOnClickArrowButton(minuteIncrementForArrowButtons * -1);
661
687
  }
662
688
  }), React__default["default"].createElement(form.BaseFormControl, _extends({
689
+ style: style,
663
690
  className: 'eds-timepicker',
664
691
  labelId: id,
665
692
  label: label,
@@ -682,9 +709,9 @@ var TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
682
709
  })), React__default["default"].createElement(TimePickerArrowButton, {
683
710
  direction: "right",
684
711
  disabled: disabled,
685
- "aria-label": "Legg til " + minuteIncrementForArrowButtons + " minutter",
712
+ "aria-label": rightArrowButtonAriaLabel,
686
713
  onClick: function onClick() {
687
- return addMinutesToSelectedTime(minuteIncrementForArrowButtons);
714
+ return handleOnClickArrowButton(minuteIncrementForArrowButtons);
688
715
  }
689
716
  })));
690
717
  });
@@ -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 { useDateSegment } from '@react-aria/datepicker';\nimport { DateSegment, DateFieldState } from '@react-stately/datepicker';\n\ntype TimeSegmentProps = {\n segment: DateSegment;\n state: DateFieldState;\n isAmPm: boolean;\n index: number;\n};\n\nexport const TimeSegment = ({\n segment,\n state,\n isAmPm,\n index,\n}: TimeSegmentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n const segmentDisplayText = () => {\n if (isAmPm) return segment.text;\n if (index === 0 && segment.text.length === 1) return '0' + segment.text;\n return segment.text;\n };\n\n return (\n <div\n {...segmentProps}\n ref={ref}\n className={`eds-timepicker__segment ${\n segment.isPlaceholder ? 'eds-timepicker__segment--placeholder' : ''\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 )}\n type=\"button\"\n tabIndex={-1}\n onClick={onClick}\n disabled={disabled}\n aria-label={ariaLabel}\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';\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;\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 /** 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 children,\n ...rest\n },\n ref,\n ) => {\n let { locale } = useLocale();\n if (customLocale) locale = customLocale;\n\n const state = useTimeFieldState({\n onChange,\n label,\n locale,\n value: selectedTime,\n hideTimeZone: !showTimeZone,\n ...rest,\n });\n const timeFieldRef = useRef(null);\n const { labelProps, fieldProps } = useTimeField(rest, state, timeFieldRef);\n const id = useRandomId('timepicker');\n\n const addMinutesToSelectedTime = (minutes: number) => {\n state.value &&\n state.setValue(\n state.value &&\n state.value.add({\n minutes: minutes,\n }),\n );\n };\n\n const isAmPm = state.segments.some(\n segment => segment.text === 'AM' || segment.text === 'PM',\n );\n\n return (\n <I18nProvider locale={locale}>\n <div\n className={classNames(className, 'eds-timepicker__wrapper')}\n style={style}\n >\n <TimePickerArrowButton\n direction=\"left\"\n disabled={disabled}\n aria-label={`Trekk fra ${minuteIncrementForArrowButtons} minutter`}\n onClick={() =>\n addMinutesToSelectedTime(minuteIncrementForArrowButtons * -1)\n }\n />\n <BaseFormControl\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\n segment={segment}\n state={state}\n isAmPm={isAmPm}\n index={i}\n key={i}\n />\n ))}\n </BaseFormControl>\n <TimePickerArrowButton\n direction=\"right\"\n disabled={disabled}\n aria-label={`Legg til ${minuteIncrementForArrowButtons} minutter`}\n onClick={() =>\n addMinutesToSelectedTime(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={true}\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","isAmPm","index","useDateSegment","segmentProps","segmentDisplayText","text","length","isPlaceholder","TimePickerArrowButton","direction","ariaLabel","TimePicker","selectedTime","labelTooltip","customLocale","showTimeZone","minuteIncrementForArrowButtons","useLocale","useTimeFieldState","hideTimeZone","timeFieldRef","useTimeField","labelProps","fieldProps","addMinutesToSelectedTime","minutes","setValue","add","segments","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","minute","setSeconds","second","toDate","warnAboutMissingStyles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB;;;MAC9BC,YAAAA;MACAC,qBAAAA;MACAC,qBAAAA;MACAC,+BAAAA;MACAC,+BAAAA;MACAC,0BAAAA;MACAC,8BAAAA;MACAC,cAAAA;AAEA,MAAMC,iBAAiB,qBAAGR,IAAH,oBAAGA,IAAI,CAAES,QAAN,EAAH,6BAAuB,CAA9C;AACA,SACEC,uCAAA,MAAA;AAAKC,IAAAA,SAAS,EAAC;GAAf,EACED,uCAAA,CAACE,iBAAD;AACEC,IAAAA,IAAI,EAAC;AACLF,IAAAA,SAAS,EAAC;AACVG,IAAAA,OAAO,EAAEb;AACTc,IAAAA,QAAQ,EAAEZ;kBACKG,gCAA2BU,YAAY,CACpDR,iBAAiB,GAAG,CADgC,EAEpDD,MAFoD;GALxD,EAUEG,uCAAA,CAACO,mBAAD,MAAA,CAVF,CADF,EAcEP,uCAAA,CAACQ,mBAAD;AAAUP,IAAAA,SAAS,EAAC;GAApB,EACGK,YAAY,CAACR,iBAAD,EAAoBD,MAApB,CADf,CAdF,EAiBEG,uCAAA,CAACQ,mBAAD;AAAUP,IAAAA,SAAS,EAAC;GAApB,EACGX,IADH,oBACGA,IAAI,CAAEmB,WAAN,EADH,CAjBF,EAqBET,uCAAA,CAACE,iBAAD;AACEC,IAAAA,IAAI,EAAC;AACLF,IAAAA,SAAS,EAAC;AACVG,IAAAA,OAAO,EAAEZ;AACTa,IAAAA,QAAQ,EAAEX;kBACKC,4BAAuBW,YAAY,CAChDR,iBAAiB,GAAG,CAD4B,EAEhDD,MAFgD;GALpD,EAUEG,uCAAA,CAACU,oBAAD,MAAA,CAVF,CArBF,CADF;AAoCD,CA/CM;;AAiDP,SAASJ,YAAT,CAAsBK,UAAtB,EAA0Cd,MAA1C;AACE,MAAMe,IAAI,GAAG,IAAIC,IAAJ,GAAWJ,WAAX,EAAb;AACA,MAAMK,SAAS,GAAG,IAAIC,IAAI,CAACC,cAAT,CAAwBnB,MAAM,CAACoB,IAA/B,EAAqC;AACrDC,IAAAA,KAAK,EAAE;AAD8C,GAArC,CAAlB;AAGA,SAAOJ,SAAS,CAACK,MAAV,CAAiB,IAAIN,IAAJ,CAASD,IAAT,EAAeD,UAAf,CAAjB,CAAP;AACD;;;AC9BM,IAAMS,eAAe,gBAAGpB,yBAAK,CAACqB,UAAN,CAI7B,gBA4BEC,GA5BF;MAEIC,aAAAA;MACAC,aAAAA;MACAC,wBAAAA;MACAC,eAAAA;MACAC,gBAAAA;MACAC,eAAAA;MACAvB,gBAAAA;MACAwB,iCAAAA;MACAC,kCAAAA;MACAC,0BAAAA;MACAC,6BAAAA;MACAC,gBAAAA;MACAC,wBAAAA;MACAb,kBAAAA;MACAc,yBAAAA;MACAC,sBAAAA;MACAC,mBAAAA;MACAC,oBAAAA;MACAC,6BAAAA;MACAC,iDAAAA;MACAC,yBAAAA;MAEArC,eAAAA;MAEGsC;;AAIL1C,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;;;AACd,yBAAAV,QAAQ,CAACW,OAAT,uCAAkBC,gBAAlB,CAAmC,SAAnC,EAA8CC,eAA9C;AACA,0BAAAb,QAAQ,CAACW,OAAT,wCAAkBC,gBAAlB,CAAmC,MAAnC,EAA2CE,YAA3C;AACA,0BAAAd,QAAQ,CAACW,OAAT,wCAAkBC,gBAAlB,CAAmC,OAAnC,EAA4CG,aAA5C;AACA,WAAO;;;AACL,4BAAAf,QAAQ,CAACW,OAAT,wCAAkBK,mBAAlB,CAAsC,SAAtC,EAAiDH,eAAjD;AACA,4BAAAb,QAAQ,CAACW,OAAT,wCAAkBK,mBAAlB,CAAsC,MAAtC,EAA8CF,YAA9C;AACA,4BAAAd,QAAQ,CAACW,OAAT,wCAAkBK,mBAAlB,CAAsC,OAAtC,EAA+CD,aAA/C;AACD,KAJD;AAMD,GAVD,EAUG,CAACf,QAAD,EAAWK,YAAX,CAVH;;AAYA,WAASQ,eAAT,CAA4CI,KAA5C;AACEd,IAAAA,cAAc,CAACc,KAAD,CAAd;AACD;;AACD,WAASH,YAAT,CAAyCG,KAAzC;AACEb,IAAAA,WAAW,CAACa,KAAD,CAAX;AACD;;AACD,MAAMF,aAAa,GAAG,SAAhBA,aAAgB;AAAA,WACpBG,qBAAqB,CAAC;AAAA;;AAAA,mCAAMlB,QAAQ,CAACW,OAAf,qBAAM,mBAAkBQ,MAAlB,EAAN;AAAA,KAAD,CADD;AAAA,GAAtB;;AAGA,MAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,CAC9BH,KAD8B;AAG9BV,IAAAA,yCAAyC,CAAC,KAAD,CAAzC;AACApC,IAAAA,OAAO,IAAIA,OAAO,CAAC8C,KAAD,CAAlB;AACD,GALD;;AAOA,MAAMI,2BAA2B,GAAG,SAA9BA,2BAA8B;AAClCnB,IAAAA,iBAAiB;AACjBI,IAAAA,qBAAqB;AACrBC,IAAAA,yCAAyC,CAAC,IAAD,CAAzC;AACD,GAJD;;AAMA,MAAMe,uBAAuB,GAAG,SAA1BA,uBAA0B;;;AAC9B,QAAMC,eAAe,GAAGf,iBAAiB,KACrCX,0BADqC,GAErCD,yBAFJ;AAGA,QAAM4B,oBAAoB,GAAGnB,YAAY,0BAClCL,QAAQ,CAACW,OADyB,qBAClC,mBAAkBc,KADgB,eAErC,kBAFJ;AAGA,WAAUF,eAAV,UAA8BC,oBAA9B;AACD,GARD;;AAUA,SACEzD,uCAAA,CAAC2D,cAAD;AACEpC,IAAAA,KAAK,EAAEA,KADT;AAEEC,IAAAA,KAAK,EAAEA,KAFT;AAGEoC,IAAAA,WAAW,EAAEnC,gBAHf;AAIEC,IAAAA,OAAO,EAAEA,OAJX;AAKEC,IAAAA,QAAQ,EAAEA,QALZ;AAMEC,IAAAA,OAAO,EAAEA,OANX;AAOEI,IAAAA,qBAAqB,EAAEA,qBAPzB;AAQEV,IAAAA,GAAG,EAAEuC,eAAS,CAACvC,GAAD,EAAMW,QAAN,EAAgBZ,UAAhB,CARhB;AASEjB,IAAAA,OAAO,EAAEiD,uBATX;AAUES,IAAAA,mBAAmB,MAVrB;AAWEC,IAAAA,MAAM,EACJ,CAAChC,kBAAD,IACE/B,uCAAA,CAACgE,eAAD;AACEC,MAAAA,SAAS,EAAC;AACVC,MAAAA,OAAO,EACLzB,iBAAiB,KACbX,0BADa,GAEbD;AAENsC,MAAAA,oBAAoB,EAAE9D;AACtB+D,MAAAA,oBAAoB,EAAE/D;KARxB,EAUEL,uCAAA,CAACE,iBAAD;AACEmE,MAAAA,EAAE,EAAEnC;AACJ/B,MAAAA,IAAI,EAAC;AACLC,MAAAA,OAAO,EAAEkD;AACTgB,MAAAA,QAAQ,EAAE7B,iBAAiB,KAAK,CAAC,CAAN,GAAU;oBACzBc,uBAAuB;KALrC,EAOEvD,uCAAA,CAACuE,kBAAD,MAAA,CAPF,CAVF;AAbN,KAmCM7B,IAnCN,EADF;AAuCD,CArH4B,CAAxB;;;ACnBP8B,8BAAc,CAAC,IAAD,EAAOC,SAAP,CAAd;IA6GaC,UAAU,gBAAG1E,yBAAK,CAACqB,UAAN,CACxB,gBAiCEC,GAjCF;MAEIC,aAAAA;MACAtB,iBAAAA;MACAqC,oBAAAA;MACAd,aAAAA;8BACAoC;MAAAA,4CAAc;MACde,gBAAAA;4BACAC;MAAAA,wCAAY;AAAA,WAAM,IAAN;AAAA;8BACZC;MAAAA,4CAAc,CAAC,YAAD,EAAe,UAAf,EAA2B,YAA3B,EAAyC,QAAzC;MACdC,eAAAA;MACAC,eAAAA;yBACAC;MAAAA,kCAAS;MACT3E,gBAAAA;MACAqB,eAAAA;2BACAC;MAAAA,sCAAW;MACXC,eAAAA;mCACAqD;MAAAA,wDAAqB;mCACrBC;MAAAA,uDAAoB;mCACpBlD;MAAAA,2DAAwB;mCACxBH;MAAAA,+DAA4B;oCAC5BC;MAAAA,iEAA6B;mCAC7BC;MAAAA,wDAAqB;+BACrBoD;MAAAA,8CAAe;iCACfC;MAAAA,kDAAiB;4BACjBC;MAAAA,wCAAY;mCACZC;MAAAA,8DAA2B;mCAC3B1F;MAAAA,4DAAyB;mCACzBD;MAAAA,wDAAqB;yBACrBE;MAAAA,oCAAS4E;MACTc,YAAAA;MACG7C;;AAIL,MAAM8C,YAAY,GAAGC,iBAAW,CAAC,gBAAD,CAAhC;AAEA,MAAMC,aAAa,GAAGC,YAAM,CAAkB,IAAlB,CAA5B;AACA,MAAM1D,QAAQ,GAAGjC,yBAAK,CAAC2F,MAAN,CAA+B,IAA/B,CAAjB;AACA,MAAMC,cAAc,GAAGC,QAAQ,CAACC,cAAT,CAAwBN,YAAY,GAAG,SAAvC,CAAvB;;AAEA,kBAA4CO,cAAQ,CAAC,KAAD,CAApD;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,mBAGIF,cAAQ,CAAC,KAAD,CAHZ;AAAA,MACEG,sCADF;AAAA,MAEE1D,yCAFF;;;AAMAxC,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;AAAA,WAAMwD,aAAa,EAAnB;AAAA,GAAhB,EAAuC,CAAC7D,YAAD,CAAvC;;AAEA,MAAM8D,cAAc,GAAG,SAAjBA,cAAiB,CACrB9G,IADqB,EAErB4D,KAFqB;;;AAIrB,QAAIgD,sCAAsC,IAAI,CAACnE,kBAA/C,EAAmE;AACjE6D,MAAAA,cAAc,QAAd,YAAAA,cAAc,CAAES,KAAhB;AACA7D,MAAAA,yCAAyC,CAAC,KAAD,CAAzC;AACD,KAHD,MAGO,qBAAAP,QAAQ,CAACW,OAAT,uCAAkByD,KAAlB;;AAEP1B,IAAAA,QAAQ,CAACrF,IAAD,EAAO4D,KAAP,CAAR;AACD,GAVD;;AAYA,MAAMJ,eAAe,GAAG,SAAlBA,eAAkB,CAACI,KAAD;AACtB+C,IAAAA,iBAAiB,CAAC,KAAD,CAAjB;;AAEA,QAAI/C,KAAK,CAACoD,GAAN,KAAc,OAAlB,EAA2B;AACzB,UAAI,CAACC,mBAAmB,EAAxB,EAA4B;AAC1B;AACAJ,QAAAA,aAAa;AACbK,QAAAA,sBAAsB;AACvB;;AACDC,MAAAA,wBAAwB;AACzB,KAPD,MAOO,IAAIvD,KAAK,CAACoD,GAAN,KAAc,KAAd,IAAuBC,mBAAmB,EAA9C,EAAkD;AACvDC,MAAAA,sBAAsB;AACvB,KAFM,MAEA,IAAItD,KAAK,CAACoD,GAAN,KAAc,QAAlB,EAA4B;AACjCE,MAAAA,sBAAsB;AACtBC,MAAAA,wBAAwB;AACxB,UAAIF,mBAAmB,EAAvB,EAA2BpE,iBAAiB;AAC7C;;AACDyC,IAAAA,SAAS,CAAC1B,KAAD,CAAT;AACD,GAlBD;;AAoBA,MAAMwD,oBAAoB,GAAG,SAAvBA,oBAAuB;AAAA,WAC3BlE,yCAAyC,CAAC,KAAD,CADd;AAAA,GAA7B;;AAGA,MAAMmE,iBAAiB,GAAG,SAApBA,iBAAoB;AACxB,QAAIJ,mBAAmB,EAAvB,EAA2B;AAC3BJ,IAAAA,aAAa;AACbK,IAAAA,sBAAsB;AACvB,GAJD;;AAMA,MAAML,aAAa,GAAG,SAAhBA,aAAgB;;;AACpBF,IAAAA,iBAAiB,CAAC,KAAD,CAAjB;AACA,QAAMW,UAAU,yBAAG3E,QAAQ,CAACW,OAAZ,qBAAG,mBAAkBc,KAArC;AACA,QAAI,CAACkD,UAAL,EAAiB;AAEjB,QAAMC,kCAAkC,GAAGhC,WAAW,CAACiC,GAAZ,CAAgB,UAAA3F,MAAM;AAAA,aAC/D4F,aAAK,CAACH,UAAD,EAAazF,MAAb,EAAqB,IAAIN,IAAJ,EAArB,EAAiC;AACpChB,QAAAA,MAAM,EAAEA;AAD4B,OAAjC,CAD0D;AAAA,KAAtB,CAA3C;AAMA,QAAMmH,0CAA0C,GAC9C1E,YAAY,IACZuE,kCAAkC,CAACI,IAAnC,CAAwC,UAAAC,UAAU;AAAA,aAChDC,iBAAS,CAACD,UAAD,EAAa5E,YAAb,CADuC;AAAA,KAAlD,CAFF;;AAMA,QAAI0E,0CAAJ,EAAgD;AAC9C;AACAf,MAAAA,iBAAiB,CAAC,KAAD,CAAjB;AACD,KAHD,MAGO;AACL;AACAA,MAAAA,iBAAiB,CAAC,IAAD,CAAjB;AACD;AACF,GAxBD;;AA0BA,MAAMmB,qBAAqB,GAAG,SAAxBA,qBAAwB;AAI5B,QAAIzF,QAAJ,EAAc,OAAO;AAAEA,MAAAA,QAAQ,EAARA,QAAF;AAAYC,MAAAA,OAAO,EAAPA;AAAZ,KAAP;AACd,QAAI,CAACwD,cAAD,IAAmBY,cAAvB,EACE,OAAO;AAAErE,MAAAA,QAAQ,EAAEsD,kBAAZ;AAAgCrD,MAAAA,OAAO,EAAEsD;AAAzC,KAAP;AACF,WAAO;AAAEvD,MAAAA,QAAQ,EAAE,EAAZ;AAAgBC,MAAAA,OAAO,EAAEyF;AAAzB,KAAP;AACD,GARD;;AAUA,MAAMZ,wBAAwB,GAAG,SAA3BA,wBAA2B;AAAA,WAC/BtD,qBAAqB,CAAC;AAAA;;AAAA,mCAAMlB,QAAQ,CAACW,OAAf,qBAAM,mBAAkBQ,MAAlB,EAAN;AAAA,KAAD,CADU;AAAA,GAAjC;;AAGA,MAAMoD,sBAAsB,GAAG,SAAzBA,sBAAyB;AAAA;;AAAA,oCAC7Bd,aAAa,CAAC9C,OADe,qBAC7B,sBAAuB0E,QAAvB,CAAgC;AAAEV,MAAAA,UAAU,EAAE;AAAd,KAAhC,CAD6B;AAAA,GAA/B;;AAGA,MAAMzE,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA;;AAAA,qCACxBuD,aAAa,CAAC9C,OADU,qBACxB,uBAAuB2E,OAAvB,CAA+B,CAAChB,mBAAmB,EAAnD,CADwB;AAAA,GAA1B;;AAGA,MAAMhE,qBAAqB,GAAG,SAAxBA,qBAAwB;AAC5B,QAAIyC,MAAM,IAAIG,YAAV,IAA0BoB,mBAAmB,EAAjD,EAAqD;;AAErDpD,IAAAA,qBAAqB,CAAC;;;AACpB,UAAMqE,oBAAoB;AAAA,gCAExB9B,aAAa,CAAC9C,OAFU,qBAExB,uBAAuB6E,QAAvB,CAAgCC,aAFlC;AAIA,UAAMC,gBAAgB,GAAGrF,YAAY,GAChCkF,oBAAoB,CAACI,aAArB,CACC,8CADD,CADgC,GAIhCJ,oBAAoB,CAACI,aAArB,CACC,qDADD,CAJL;;AAOA,UAAID,gBAAgB,KAAK,IAAzB,EAA+B;AAAA;;AAC7B,kCAAAjC,aAAa,CAAC9C,OAAd,4CAAuBiF,OAAvB;AACAF,QAAAA,gBAAgB,CAACtB,KAAjB,CAAuB;AAAEyB,UAAAA,aAAa,EAAE;AAAjB,SAAvB;AACD;AACF,KAhBoB,CAArB;AAiBAtF,IAAAA,yCAAyC,CAAC,IAAD,CAAzC;AACAyD,IAAAA,iBAAiB,CAAC,KAAD,CAAjB;AACD,GAtBD;;AAwBA,MAAMM,mBAAmB,GAAG,SAAtBA,mBAAsB;AAAA;;AAAA,qCAAMb,aAAa,CAAC9C,OAApB,qBAAM,uBAAuBmF,cAAvB,EAAN;AAAA,GAA5B;;AAEA,SACE/H,uCAAA,mCAAA,MAAA,EACEA,uCAAA,CAACgI,mCAAD;AACEC,IAAAA,QAAQ,EAAE3F,YADZ;AAEEwC,IAAAA,OAAO,EAAEA,OAFX;AAGEC,IAAAA,OAAO,EAAEA,OAHX;AAIEmC,IAAAA,UAAU,EAAErC,WAJd;AAKEqD,IAAAA,eAAe,MALjB;AAME7C,IAAAA,SAAS,EAAEA,SANb;AAOEV,IAAAA,QAAQ,EAAEyB,cAPZ;AAQE+B,IAAAA,cAAc,EAAEzB,oBARlB;AASErC,IAAAA,EAAE,EAAEmB,YATN;AAUE4C,IAAAA,cAAc,EAAE5C,YAVlB;AAWE6C,IAAAA,eAAe,EAAE,KAXnB;AAYExI,IAAAA,MAAM,EAAEA,QAZV;AAaEmF,IAAAA,MAAM,EAAEA,MAbV;AAcE3E,IAAAA,QAAQ,EAAEA,QAdZ;AAeEiI,IAAAA,kBAAkB,EAAE,IAftB;AAgBEhD,IAAAA,wBAAwB,EAAEA,wBAhB5B;AAiBEC,IAAAA,IAAI,EAAEJ,YAAY,GAAG,KAAH,GAAWI,IAjB/B;AAkBEjE,IAAAA,GAAG,EAAEoE,aAlBP;AAmBE6C,IAAAA,iBAAiB,EAAC,0BAnBpB;AAoBEC,IAAAA,YAAY,EAAE;AAAA,aAAM,+BAAN;AAAA,KApBhB;AAqBEC,IAAAA,gBAAgB,EAAE;AAAA,aAAM,oCAAN;AAAA,KArBpB;AAsBExI,IAAAA,SAAS,EAAEyI,8BAAU,CAACzI,SAAD,EAAY,uBAAZ,CAtBvB;AAuBE0I,IAAAA,cAAc,EAAE,CACd;AAAE,8CAAwC,CAAC,IAAI9H,IAAJ,EAAD;AAA1C,KADc,EAEd;AACE,iDAA2CyB,YAAY,GACnD,CAACA,YAAD,CADmD,GAEnD;AAHN,KAFc,CAvBlB;AA+BEsG,IAAAA,kBAAkB,EAAE;AAAA,UAClBtJ,IADkB,SAClBA,IADkB;AAAA,UAElBuJ,UAFkB,SAElBA,UAFkB;AAAA,UAGlBC,WAHkB,SAGlBA,WAHkB;AAAA,UAIlBvJ,aAJkB,SAIlBA,aAJkB;AAAA,UAKlBC,aALkB,SAKlBA,aALkB;AAAA,UAMlBC,uBANkB,SAMlBA,uBANkB;AAAA,UAOlBC,uBAPkB,SAOlBA,uBAPkB;AAAA,aASlBM,uCAAA,CAACX,gBAAD;AACEC,QAAAA,IAAI,EAAEA;AACNuJ,QAAAA,UAAU,EAAEA;AACZC,QAAAA,WAAW,EAAEA;AACbtJ,QAAAA,aAAa,EAAEA;AACfD,QAAAA,aAAa,EAAEA;AACfE,QAAAA,uBAAuB,EAAEA;AACzBC,QAAAA,uBAAuB,EAAEA;AACzBE,QAAAA,sBAAsB,EAAEA;AACxBD,QAAAA,kBAAkB,EAAEA;AACpBE,QAAAA,MAAM,EAAEA;OAVV,CATkB;AAAA,KA/BtB;AAqDEkJ,IAAAA,WAAW,EACT/I,uCAAA,CAACoB,eAAD;AACEG,MAAAA,KAAK,EAAEA;AACPC,MAAAA,KAAK,EAAEA;AACPC,MAAAA,gBAAgB,EAAEmC;AAClB/B,MAAAA,yBAAyB,EAAEA;AAC3BC,MAAAA,0BAA0B,EAAEA;AAC5BJ,MAAAA,OAAO,EAAEA;AACTC,MAAAA,QAAQ,EAAEyF,qBAAqB,GAAGzF;AAClCC,MAAAA,OAAO,EAAEwF,qBAAqB,GAAGxF;AACjCK,MAAAA,QAAQ,EAAEA;AACVC,MAAAA,gBAAgB,EAAEsD,YAAY,GAAG;AACjCnE,MAAAA,UAAU,EAAEC;AACZc,MAAAA,cAAc,EAAEU;AAChBT,MAAAA,WAAW,EAAEsE;AACbqC,MAAAA,OAAO,EAAE3B;AACTlF,MAAAA,iBAAiB,EAAEA;AACnBI,MAAAA,qBAAqB,EAAEA;AACvBC,MAAAA,yCAAyC,EACvCA;AAEFC,MAAAA,iBAAiB,EAAE8D;AACnBvE,MAAAA,qBAAqB,EAAEA;AACvBD,MAAAA,kBAAkB,EAAEA;AACpBO,MAAAA,YAAY,EAAEA;KAvBhB;AAtDJ,KAgFMI,IAhFN,EADF,CADF;AAsFD,CAzPuB;;;;IClGbuG,gBAAgB,gBAAGjJ,yBAAK,CAACqB,UAAN,CAI9B,gBAYEC,GAZF;MAEIrB,iBAAAA;MACAsB,aAAAA;MACAC,aAAAA;MACAmD,gBAAAA;MACAhD,gBAAAA;MACAC,eAAAA;MACAI,6BAAAA;0BACAN;MAAAA,oCAAU1B,uCAAA,CAACkJ,cAAD;AAAUlE,IAAAA,MAAM;GAAhB;MACPtC;;AAIL,MAAMyG,kBAAkB,GAAG1D,iBAAW,CAAC,sBAAD,CAAtC;AACA,SACEzF,uCAAA,CAACoJ,oBAAD;AACE7H,IAAAA,KAAK,EAAEA;AACPtB,IAAAA,SAAS,EAAEA;AACXyB,IAAAA,OAAO,EAAEA;AACTF,IAAAA,KAAK,EAAEA;AACPG,IAAAA,QAAQ,EAAEA;AACVC,IAAAA,OAAO,EAAEA;AACTyH,IAAAA,OAAO,EAAEF;AACTnH,IAAAA,qBAAqB,EAAEA;AACvBsH,IAAAA,QAAQ;GATV,EAWEtJ,uCAAA,CAACuJ,oBAAD;AACE5E,IAAAA,QAAQ,EAAEA,QADZ;uBAEmBwE,kBAFnB;AAGE7H,IAAAA,GAAG,EAAEA,GAHP;AAIEM,IAAAA,OAAO,EAAEA;AAJX,KAKMc,IALN,EAXF,CADF;AAqBD,CAxC6B;AAmDhC,IAAM6G,oBAAoB,gBAAGvJ,yBAAK,CAACqB,UAAN,CAG3B,iBAAwCC,GAAxC;MAAGqD,iBAAAA;MAAU/C,gBAAAA;MAAS8B,cAAAA;MAAUhB;;AAChC,MAAM8G,cAAc,GAAGC,eAAU,EAAjC;AACA,MAAMC,cAAc,GAAG9H,OAAO,IAAI4H,cAAlC;;AACA,8BACEG,yBAAoB,EADtB;AAAA,MAAkBC,kBAAlB,yBAAQN,QAAR;AAAA,MAAiDO,SAAjD,yBAAsCC,SAAtC;;AAGAC,EAAAA,gBAAU,CAAC;AACTF,IAAAA,SAAS,IAAI,CAACD,kBAAd,IAAoCC,SAAS,CAAC,IAAD,CAA7C;AACD,GAFS,CAAV;AAIA7J,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;AACd,QAAIe,KAAJ,EAAW;AACTmG,MAAAA,SAAS,IAAI,CAACD,kBAAd,IAAoCC,SAAS,CAAC,IAAD,CAA7C;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,IAAID,kBAAb,IAAmCC,SAAS,CAAC,KAAD,CAA5C;AACD;AACF,GAND,EAMG,CAACnG,KAAD,EAAQmG,SAAR,EAAmBD,kBAAnB,CANH;;AAQA,MAAMI,YAAY,GAAG,SAAfA,YAAe,CAAC9G,KAAD;AACnB,QAAIoG,aAAQ,CAACpG,KAAK,CAAC+G,MAAP,CAAZ,EAA4B;AAC1BJ,MAAAA,SAAS,IAAI,CAACD,kBAAd,IAAoCC,SAAS,CAAC,IAAD,CAA7C;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,IAAID,kBAAb,IAAmCC,SAAS,CAAC,KAAD,CAA5C;AACD;;AACD,QAAIlF,QAAJ,EAAc;AACZA,MAAAA,QAAQ,CAACzB,KAAD,CAAR;AACD;AACF,GATD;;AAUA,SACElD,uCAAA,QAAA;AACEsB,IAAAA,GAAG,EAAEA,GADP;oBAEgBoI,cAAc,KAAK,OAFnC;AAGEvJ,IAAAA,IAAI,EAAC,MAHP;AAIEF,IAAAA,SAAS,EAAC,yCAJZ;AAKE0E,IAAAA,QAAQ,EAAEqF,YALZ;AAMEtG,IAAAA,KAAK,EAAEA;AANT,KAOMhB,IAPN,EADF;AAWD,CA1C4B,CAA7B;;ACtEO,IAAMwH,WAAW,GAAG,SAAdA,WAAc;MACzBC,eAAAA;MACAC,aAAAA;MACAC,cAAAA;MACAC,aAAAA;AAEA,MAAMhJ,GAAG,GAAGqE,YAAM,CAAiB,IAAjB,CAAlB;;AACA,wBAAyB4E,yBAAc,CAACJ,OAAD,EAAUC,KAAV,EAAiB9I,GAAjB,CAAvC;AAAA,MAAQkJ,YAAR,mBAAQA,YAAR;;AAEA,MAAMC,kBAAkB,GAAG,SAArBA,kBAAqB;AACzB,QAAIJ,MAAJ,EAAY,OAAOF,OAAO,CAACO,IAAf;AACZ,QAAIJ,KAAK,KAAK,CAAV,IAAeH,OAAO,CAACO,IAAR,CAAaC,MAAb,KAAwB,CAA3C,EAA8C,OAAO,MAAMR,OAAO,CAACO,IAArB;AAC9C,WAAOP,OAAO,CAACO,IAAf;AACD,GAJD;;AAMA,SACE1K,uCAAA,MAAA,eACMwK,YADN;AAEElJ,IAAAA,GAAG,EAAEA,GAFP;AAGErB,IAAAA,SAAS,gCACPkK,OAAO,CAACS,aAAR,GAAwB,sCAAxB,GAAiE,EAD1D;AAHX,MAOGH,kBAAkB,EAPrB,CADF;AAWD,CA1BM;;ACEA,IAAMI,qBAAqB,GAAyC,SAA9DA,qBAA8D;MACzEC,iBAAAA;MACA1K,eAAAA;MACAC,gBAAAA;MACc0K,iBAAd;AAEA,SACE/K,uCAAA,CAACE,iBAAD;AACED,IAAAA,SAAS,EAAEyI,8BAAU,CACnB,6BADmB,oCAEaoC,SAFb;AAIrB3K,IAAAA,IAAI,EAAC;AACLmE,IAAAA,QAAQ,EAAE,CAAC;AACXlE,IAAAA,OAAO,EAAEA;AACTC,IAAAA,QAAQ,EAAEA;kBACE0K;GATd,EAWGD,SAAS,KAAK,MAAd,GAAuB9K,uCAAA,CAACO,mBAAD,MAAA,CAAvB,GAA2CP,uCAAA,CAACU,oBAAD,MAAA,CAX9C,CADF;AAeD,CArBM;;;ICuCMsK,UAAU,gBAAGhL,yBAAK,CAACqB,UAAN,CACxB,gBAiBEC,GAjBF;MAEI2J,oBAAAA;MACAtG,gBAAAA;MACAtE,gBAAAA;MACAJ,iBAAAA;MACAsB,aAAAA;MACAC,aAAAA;MACA0J,oBAAAA;MACAvJ,gBAAAA;MACAC,eAAAA;MACQuJ,oBAARtL;MACAuL,oBAAAA;mCACAC;MAAAA,oEAAiC;MAE9B3I;;AAIL,mBAAiB4I,cAAS,EAA1B;AAAA,MAAMzL,MAAN,cAAMA,MAAN;;AACA,MAAIsL,YAAJ,EAAkBtL,MAAM,GAAGsL,YAAT;AAElB,MAAMf,KAAK,GAAGmB,8BAAiB;AAC7B5G,IAAAA,QAAQ,EAARA,QAD6B;AAE7BnD,IAAAA,KAAK,EAALA,KAF6B;AAG7B3B,IAAAA,MAAM,EAANA,MAH6B;AAI7B6D,IAAAA,KAAK,EAAEuH,YAJsB;AAK7BO,IAAAA,YAAY,EAAE,CAACJ;AALc,KAM1B1I,IAN0B,EAA/B;AAQA,MAAM+I,YAAY,GAAG9F,YAAM,CAAC,IAAD,CAA3B;;AACA,sBAAmC+F,uBAAY,CAAChJ,IAAD,EAAO0H,KAAP,EAAcqB,YAAd,CAA/C;AAAA,MAAQE,UAAR,iBAAQA,UAAR;AAAA,MAAoBC,UAApB,iBAAoBA,UAApB;;AACA,MAAMvH,EAAE,GAAGoB,iBAAW,CAAC,YAAD,CAAtB;;AAEA,MAAMoG,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,OAAD;AAC/B1B,IAAAA,KAAK,CAAC1G,KAAN,IACE0G,KAAK,CAAC2B,QAAN,CACE3B,KAAK,CAAC1G,KAAN,IACE0G,KAAK,CAAC1G,KAAN,CAAYsI,GAAZ,CAAgB;AACdF,MAAAA,OAAO,EAAEA;AADK,KAAhB,CAFJ,CADF;AAOD,GARD;;AAUA,MAAMzB,MAAM,GAAGD,KAAK,CAAC6B,QAAN,CAAehF,IAAf,CACb,UAAAkD,OAAO;AAAA,WAAIA,OAAO,CAACO,IAAR,KAAiB,IAAjB,IAAyBP,OAAO,CAACO,IAAR,KAAiB,IAA9C;AAAA,GADM,CAAf;AAIA,SACE1K,uCAAA,CAACkM,iBAAD;AAAcrM,IAAAA,MAAM,EAAEA;GAAtB,EACEG,uCAAA,MAAA;AACEC,IAAAA,SAAS,EAAEyI,8BAAU,CAACzI,SAAD,EAAY,yBAAZ;AACrBsB,IAAAA,KAAK,EAAEA;GAFT,EAIEvB,uCAAA,CAAC6K,qBAAD;AACEC,IAAAA,SAAS,EAAC;AACVzK,IAAAA,QAAQ,EAAEA;iCACegL;AACzBjL,IAAAA,OAAO,EAAE;AAAA,aACPyL,wBAAwB,CAACR,8BAA8B,GAAG,CAAC,CAAnC,CADjB;AAAA;GAJX,CAJF,EAYErL,uCAAA,CAACoJ,oBAAD;AACEnJ,IAAAA,SAAS,EAAE,gBADb;AAEEoJ,IAAAA,OAAO,EAAEhF,EAFX;AAGE7C,IAAAA,KAAK,EAAEA,KAHT;AAIEmK,IAAAA,UAAU,eAAOA,UAAP,CAJZ;AAKErK,IAAAA,GAAG,EAAEuC,eAAS,CAAC4H,YAAD,EAAenK,GAAf,CALhB;AAMEjB,IAAAA,QAAQ,EAAEA,QANZ;AAOE2B,IAAAA,qBAAqB,MAPvB;AAQEkJ,IAAAA,YAAY,EAAEA;AARhB,KASMU,UATN;AAUEhK,IAAAA,OAAO,EAAEA,OAVX;AAWED,IAAAA,QAAQ,EAAEA;AAXZ,MAaGyI,KAAK,CAAC6B,QAAN,CAAenF,GAAf,CAAmB,UAACqD,OAAD,EAAUgC,CAAV;AAAA,WAClBnM,uCAAA,CAACkK,WAAD;AACEC,MAAAA,OAAO,EAAEA;AACTC,MAAAA,KAAK,EAAEA;AACPC,MAAAA,MAAM,EAAEA;AACRC,MAAAA,KAAK,EAAE6B;AACP7F,MAAAA,GAAG,EAAE6F;KALP,CADkB;AAAA,GAAnB,CAbH,CAZF,EAmCEnM,uCAAA,CAAC6K,qBAAD;AACEC,IAAAA,SAAS,EAAC;AACVzK,IAAAA,QAAQ,EAAEA;gCACcgL;AACxBjL,IAAAA,OAAO,EAAE;AAAA,aACPyL,wBAAwB,CAACR,8BAAD,CADjB;AAAA;GAJX,CAnCF,CADF,CADF;AAgDD,CAjGuB;;;;IC1Bbe,gBAAgB,gBAAGpM,yBAAK,CAACqB,UAAN,CAI9B,gBAEEC,GAFF;MACIrB,iBAAAA;MAAWsB,aAAAA;MAAOoD,gBAAAA;MAAUnD,aAAAA;MAAOG,gBAAAA;MAAUC,eAAAA;MAASF,eAAAA;MAAYgB;;AAGpE,MAAM2J,kBAAkB,GAAG5G,iBAAW,CAAC,uBAAD,CAAtC;AACA,SACEzF,uCAAA,CAACoJ,oBAAD;AACE7H,IAAAA,KAAK,EAAEA;AACPtB,IAAAA,SAAS,EAAEyI,8BAAU,CAACzI,SAAD,EAAY,uBAAZ;AACrByB,IAAAA,OAAO,EAAEA;AACTF,IAAAA,KAAK,EAAEA;AACPG,IAAAA,QAAQ,EAAEA;AACVC,IAAAA,OAAO,EAAEA;AACTyH,IAAAA,OAAO,EAAEgD;AACTrK,IAAAA,qBAAqB,EAAE;GARzB,EAUEhC,uCAAA,CAACsM,oBAAD;AACE3H,IAAAA,QAAQ,EAAEA,QADZ;uBAEmB0H,kBAFnB;AAGE/K,IAAAA,GAAG,EAAEA;AAHP,KAIMoB,IAJN,EAVF,CADF;AAmBD,CA5B6B;AAsChC,IAAM4J,oBAAoB,gBAAGtM,yBAAK,CAACqB,UAAN,CAG3B,iBAA+BC,GAA/B;MAAGqD,iBAAAA;MAAUjB,cAAAA;MAAUhB;;AACvB,MAAM8G,cAAc,GAAGC,eAAU,EAAjC;AACA,MAAMC,cAAc,GAAGhH,IAAI,CAACd,OAAL,IAAgB4H,cAAvC;;AACA,8BACEG,yBAAoB,EADtB;AAAA,MAAkB4C,kBAAlB,yBAAQjD,QAAR;AAAA,MAAiDO,SAAjD,yBAAsCC,SAAtC;;AAGAC,EAAAA,gBAAU,CAAC;AACTF,IAAAA,SAAS,IAAI,CAAC0C,kBAAd,IAAoC1C,SAAS,CAAC,IAAD,CAA7C;AACD,GAFS,CAAV;AAIA7J,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;AACd,QAAIe,KAAJ,EAAW;AACTmG,MAAAA,SAAS,IAAI,CAAC0C,kBAAd,IAAoC1C,SAAS,CAAC,IAAD,CAA7C;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,IAAI0C,kBAAb,IAAmC1C,SAAS,CAAC,KAAD,CAA5C;AACD;AACF,GAND,EAMG,CAACnG,KAAD,EAAQmG,SAAR,EAAmB0C,kBAAnB,CANH;;AAQA,MAAMvC,YAAY,GAAG,SAAfA,YAAe,CAAC9G,KAAD;AACnB,QAAIoG,aAAQ,CAACpG,KAAK,CAAC+G,MAAP,CAAZ,EAA4B;AAC1BJ,MAAAA,SAAS,IAAI,CAAC0C,kBAAd,IAAoC1C,SAAS,CAAC,IAAD,CAA7C;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,IAAI0C,kBAAb,IAAmC1C,SAAS,CAAC,KAAD,CAA5C;AACD;;AACD,QAAIlF,QAAJ,EAAc;AACZA,MAAAA,QAAQ,CAACzB,KAAD,CAAR;AACD;AACF,GATD;;AAUA,SACElD,uCAAA,QAAA;AACEsB,IAAAA,GAAG,EAAEA,GADP;oBAEgBoI,cAAc,KAAK,OAFnC;AAGEvJ,IAAAA,IAAI,EAAC,MAHP;AAIEF,IAAAA,SAAS,EAAC,kBAJZ;AAKE0E,IAAAA,QAAQ,EAAEqF,YALZ;AAMEtG,IAAAA,KAAK,EAAEA;AANT,KAOMhB,IAPN,EADF;AAWD,CA1C4B,CAA7B;;ACxDA;;;;;;;;;IAQa8J,qBAAqB,GAAG,SAAxBA,qBAAwB,CACnClN,MADmC,EAEnCmN,cAFmC,EAGnCC,QAHmC,EAInCC,MAJmC;MAEnCF;AAAAA,IAAAA,iBAAiB;;;AAIjB,MAAIC,QAAJ,EAAc;AACZ,QAAIC,MAAJ,EAAY;AACV,aAAO,IAAIC,kBAAJ,CACLtN,MAAI,CAACmB,WAAL,EADK,EAELnB,MAAI,CAACS,QAAL,KAAkB,CAFb,EAGLT,MAAI,CAACuN,OAAL,EAHK,EAILH,QAJK,EAKLC,MALK,EAMLrN,MAAI,CAACwN,QAAL,EANK,EAOLxN,MAAI,CAACyN,UAAL,EAPK,EAQLzN,MAAI,CAAC0N,UAAL,EARK,CAAP;AAUD;;AACD,WAAOC,kBAAa,CAAC3N,MAAI,CAAC4N,WAAL,EAAD,EAAqBR,QAArB,CAApB;AACD;;AACD,MAAID,cAAJ,EACE,OAAO,IAAIU,SAAJ,CAAS7N,MAAI,CAACwN,QAAL,EAAT,EAA0BxN,MAAI,CAACyN,UAAL,EAA1B,EAA6CzN,MAAI,CAAC0N,UAAL,EAA7C,EAAgE,CAAhE,CAAP;AACF,SAAO,IAAII,qBAAJ,CACL9N,MAAI,CAACmB,WAAL,EADK,EAELnB,MAAI,CAACS,QAAL,KAAkB,CAFb,EAGLT,MAAI,CAACuN,OAAL,EAHK,EAILvN,MAAI,CAACwN,QAAL,EAJK,EAKLxN,MAAI,CAACyN,UAAL,EALK,EAMLzN,MAAI,CAAC0N,UAAL,EANK,CAAP;AAQD;AAED;;;;;;AAMA;;IACaK,qBAAqB,GAAG,SAAxBA,qBAAwB,CACnCC,IADmC,EAEnCC,2BAFmC;AAInC;AACA,MAAI,CAACD,IAAI,CAACE,GAAV,EAAe;AACb;AACA,QAAMlO,IAAI,GAAG,IAAIuB,IAAJ,EAAb;AACAvB,IAAAA,IAAI,CAACmO,QAAL,CAAcH,IAAI,CAACI,IAAnB;AACApO,IAAAA,IAAI,CAACqO,UAAL,CAAgBL,IAAI,CAACM,MAArB;AACAtO,IAAAA,IAAI,CAACuO,UAAL,CAAgBP,IAAI,CAACQ,MAArB;AACA,WAAOxO,IAAP;AACD;;;AAGD,MAAI,CAACgO,IAAI,CAACZ,QAAV,EAAoB;AAClB;AACA,QAAIa,2BAAJ;AAEE,aAAOD,IAAI,CAACS,MAAL,CAAYR,2BAAZ,CAAP;AAEF,WAAO,IAAI1M,IAAJ;AAELyM,IAAAA,IAAI,CAAC1M,IAFA;AAIL0M,IAAAA,IAAI,CAACpM,KAAL,GAAa,CAJR;AAMLoM,IAAAA,IAAI,CAACE,GANA,EAOLF,IAAI,CAACI,IAPA,EAQLJ,IAAI,CAACM,MARA,EASLN,IAAI,CAACQ,MATA,CAAP;AAWD;;;AAGD,SAAOR,IAAI,CAACS,MAAL,EAAP;AACD;;ACzFDC,4BAAsB,CAAC,YAAD,EAAe,MAAf,EAAuB,OAAvB,CAAtB;;;;;;;;;"}
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 { useDateSegment } from '@react-aria/datepicker';\nimport { DateSegment, DateFieldState } from '@react-stately/datepicker';\n\ntype TimeSegmentProps = {\n segment: DateSegment;\n state: DateFieldState;\n isAmPm: boolean;\n index: number;\n};\n\nexport const TimeSegment = ({\n segment,\n state,\n isAmPm,\n index,\n}: TimeSegmentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const { segmentProps } = useDateSegment(segment, state, ref);\n\n const segmentDisplayText = () => {\n if (isAmPm) return segment.text;\n if (index === 0 && segment.text.length === 1) return '0' + segment.text;\n return segment.text;\n };\n\n return (\n <div\n {...segmentProps}\n ref={ref}\n className={`eds-timepicker__segment ${\n segment.isPlaceholder ? 'eds-timepicker__segment--placeholder' : ''\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;\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 children,\n ...rest\n },\n ref,\n ) => {\n let { locale } = useLocale();\n if (customLocale) locale = customLocale;\n\n const state = useTimeFieldState({\n onChange,\n label,\n locale,\n value: selectedTime,\n hideTimeZone: !showTimeZone,\n isDisabled: disabled,\n ...rest,\n });\n const timeFieldRef = useRef(null);\n const { labelProps, fieldProps } = useTimeField(rest, state, timeFieldRef);\n const id = useRandomId('timepicker');\n\n const handleOnClickArrowButton = (minutes: number) => {\n if (someSegmentIsUndefined) {\n setToCurrentHour();\n } else {\n addMinutesToSelectedTime(minutes);\n }\n };\n\n const someSegmentIsUndefined = state.segments.some(\n segment => segment.text === '––',\n );\n\n const setToCurrentHour = () => {\n const currentTime = now(getLocalTimeZone());\n const currentHour =\n currentTime.minute >= 30 ? currentTime.hour + 1 : currentTime.hour;\n state.setSegment('minute', 0); // this gets overridden but still needed\n state.setSegment('hour', currentHour);\n };\n\n const addMinutesToSelectedTime = (minutes: number) => {\n state.value &&\n state.setValue(\n state.value &&\n state.value.add({\n minutes: minutes,\n }),\n );\n };\n\n const isAmPm = state.segments.some(\n segment => segment.text === 'AM' || segment.text === 'PM',\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\n segment={segment}\n state={state}\n isAmPm={isAmPm}\n index={i}\n key={i}\n />\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={true}\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","isAmPm","index","useDateSegment","segmentProps","segmentDisplayText","text","length","isPlaceholder","TimePickerArrowButton","direction","ariaLabel","TimePicker","selectedTime","labelTooltip","customLocale","showTimeZone","minuteIncrementForArrowButtons","leftArrowButtonAriaLabel","rightArrowButtonAriaLabel","useLocale","useTimeFieldState","hideTimeZone","isDisabled","timeFieldRef","useTimeField","labelProps","fieldProps","handleOnClickArrowButton","minutes","someSegmentIsUndefined","setToCurrentHour","addMinutesToSelectedTime","segments","currentTime","now","getLocalTimeZone","currentHour","minute","hour","setSegment","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","setMinutes","setSeconds","second","toDate","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),k=b(l);function g(){return g=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},g.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 I=["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"],w=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,k=t.disableLabelAnimation,_=t.inputRef,C=t.calendarButtonId,w=t.forwardRef,D=t.toggleCalendarGUI,E=t.onKeyDownInput,M=t.onBlurInput,B=t.selectedDate,A=t.setFocusToCalendarGUI,F=t.setShouldFocusOnCalendarButtonAfterSelect,L=t.calendarGUIIsOpen,x=t.onClick,T=y(t,I);function N(e){E(e)}function O(e){M(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",P),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",P)}}),[_,B]);var R,P=function(){return requestAnimationFrame((function(){var e;return null==(e=_.current)?void 0:e.select()}))};return v.default.createElement(u.TextField,g({style:n,label:r,placeholder:l,prepend:i,feedback:s,variant:f,disableLabelAnimation:k,ref:e.mergeRefs(a,_,w),onClick:function(e){F(!1),x&&x(e)},ariaAlertOnFeedback:!0,append:!h&&v.default.createElement(c.Tooltip,{placement:"top",content:L()?b:p,disableHoverListener:m,disableFocusListener:m},v.default.createElement(d.IconButton,{id:C,type:"button",onClick:function(){D(),A(),F(!0)},tabIndex:L()?-1:0,"aria-label":(L()?b:p)+", "+(B?(null==(R=_.current)?void 0:R.value)+" valgt":"Ingen dato valgt")},v.default.createElement(o.CalendarIcon,null)))},T))})),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 E=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,I=a.minDate,E=a.maxDate,M=a.inline,B=void 0!==M&&M,A=a.disabled,F=a.prepend,L=a.feedback,x=void 0===L?"":L,T=a.variant,N=a.validationFeedback,O=void 0===N?"Ugyldig dato":N,R=a.validationVariant,P=void 0===R?"error":R,S=a.disableLabelAnimation,q=void 0!==S&&S,G=a.calendarButtonTooltipOpen,V=void 0===G?"Åpne kalender":G,U=a.calendarButtonTooltipClose,H=void 0===U?"Lukk kalender":U,Y=a.hideCalendarButton,j=void 0!==Y&&Y,K=a.hideCalendar,Z=void 0!==K&&K,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 ke()}),[d]);var ke=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)}},ge=function(){return x?{feedback:x,variant:T}:!W&&me?{feedback:O,variant:P}:{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(!Ie())},Ie=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,g({selected:d,minDate:I,maxDate:E,dateFormat:C,showWeekNumbers:!0,weekLabel:Q,onChange:function(e,t){var a;ve&&!j?(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:B,disabled:A,preventOpenOnFocus:!0,chooseDayAriaLabelPrefix:$,open:!Z&&oe,ref:ue,calendarClassName:"eds-datepicker__calender",dayClassName:function(){return"eds-datepicker__calender__day"},weekDayClassName:function(){return"eds-datepicker__calender__day-name"},className:k.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(w,{style:o,label:u,inputPlaceholder:s,calendarButtonTooltipOpen:V,calendarButtonTooltipClose:H,prepend:F,feedback:ge().feedback,variant:ge().variant,inputRef:ce,calendarButtonId:de+"-button",forwardRef:l,onKeyDownInput:function(e){pe(!1),"Enter"===e.key?(Ie()||(ke(),_e()),ye()):"Tab"===e.key&&Ie()?_e():"Escape"===e.key&&(_e(),ye(),Ie()&&Ce()),p(e)},onBlurInput:function(){Ie()||(ke(),_e())},onFocus:void 0,toggleCalendarGUI:Ce,setFocusToCalendarGUI:function(){B||Z||Ie()||(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:Ie,disableLabelAnimation:q,hideCalendarButton:j,selectedDate:d})},ie)))})),M=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],B=["onChange","variant","value"],A=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,M),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(F,g({onChange:i,"aria-labelledby":b,ref:a,variant:c},p)))})),F=v.default.forwardRef((function(t,a){var n=t.onChange,r=t.variant,l=t.value,o=y(t,B),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",g({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))})),L=function(e){var a=e.segment,n=e.state,r=e.isAmPm,l=e.index,o=t.useRef(null),i=s.useDateSegment(a,n,o);return v.default.createElement("div",g({},i.segmentProps,{ref:o,className:"eds-timepicker__segment "+(a.isPlaceholder?"eds-timepicker__segment--placeholder":"")}),r?a.text:0===l&&1===a.text.length?"0"+a.text:a.text)},x=function(e){var t=e.direction,a=e.onClick,n=e.disabled,r=e["aria-label"];return v.default.createElement(d.IconButton,{className:k.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+t),type:"button",tabIndex:-1,onClick:a,disabled:n,"aria-label":r},v.default.createElement("left"===t?o.LeftArrowIcon:o.RightArrowIcon,null))},T=["selectedTime","onChange","disabled","className","style","label","labelTooltip","feedback","variant","locale","showTimeZone","minuteIncrementForArrowButtons","children"],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,p=a.labelTooltip,b=a.feedback,h=a.variant,_=a.locale,C=a.showTimeZone,I=a.minuteIncrementForArrowButtons,w=void 0===I?30:I,D=y(a,T),E=f.useLocale().locale;_&&(E=_);var M=m.useTimeFieldState(g({onChange:l,label:c,locale:E,value:r,hideTimeZone:!C},D)),B=t.useRef(null),A=s.useTimeField(D,M,B),F=A.labelProps,N=A.fieldProps,O=e.useRandomId("timepicker"),R=function(e){M.value&&M.setValue(M.value&&M.value.add({minutes:e}))},P=M.segments.some((function(e){return"AM"===e.text||"PM"===e.text}));return v.default.createElement(f.I18nProvider,{locale:E},v.default.createElement("div",{className:k.default(i,"eds-timepicker__wrapper"),style:d},v.default.createElement(x,{direction:"left",disabled:o,"aria-label":"Trekk fra "+w+" minutter",onClick:function(){return R(-1*w)}}),v.default.createElement(u.BaseFormControl,g({className:"eds-timepicker",labelId:O,label:c,labelProps:g({},F),ref:e.mergeRefs(B,n),disabled:o,disableLabelAnimation:!0,labelTooltip:p},N,{variant:h,feedback:b}),M.segments.map((function(e,t){return v.default.createElement(L,{segment:e,state:M,isAmPm:P,index:t,key:t})}))),v.default.createElement(x,{direction:"right",disabled:o,"aria-label":"Legg til "+w+" minutter",onClick:function(){return R(w)}})))})),O=["className","style","onChange","label","feedback","variant","prepend"],R=["onChange","value"],P=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:k.default(n,"eds-native-timepicker"),prepend:c,label:o,feedback:i,variant:d,labelId:f,disableLabelAnimation:!0},v.default.createElement(S,g({onChange:l,"aria-labelledby":f,ref:a},s)))})),S=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",g({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=E,exports.NativeDatePicker=A,exports.NativeTimePicker=P,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"),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,A=t.toggleCalendarGUI,D=t.onKeyDownInput,B=t.onBlurInput,L=t.selectedDate,E=t.setFocusToCalendarGUI,M=t.setShouldFocusOnCalendarButtonAfterSelect,F=t.calendarGUIIsOpen,x=t.onClick,T=y(t,w);function N(e){D(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),x&&x(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(){A(),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)))},T))})),A=["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 D=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,D=a.maxDate,B=a.inline,L=void 0!==B&&B,E=a.disabled,M=a.prepend,F=a.feedback,x=void 0===F?"":F,T=a.variant,N=a.validationFeedback,O=void 0===N?"Ugyldig dato":N,R=a.validationVariant,S=void 0===R?"error":R,P=a.disableLabelAnimation,q=void 0!==P&&P,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,A),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 x?{feedback:x,variant:T}:!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:D,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:q,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=e.isAmPm,l=e.index,o=t.useRef(null),i=s.useDateSegment(a,n,o);return v.default.createElement("div",k({},i.segmentProps,{ref:o,className:"eds-timepicker__segment "+(a.isPlaceholder?"eds-timepicker__segment--placeholder":"")}),r?a.text:0===l&&1===a.text.length?"0"+a.text:a.text)},x=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))},T=["selectedTime","onChange","disabled","className","style","label","labelTooltip","feedback","variant","locale","showTimeZone","minuteIncrementForArrowButtons","leftArrowButtonAriaLabel","rightArrowButtonAriaLabel","children"],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,A=void 0===I?30:I,D=a.leftArrowButtonAriaLabel,B=void 0===D?"Trekk fra "+A+" minutter":D,L=a.rightArrowButtonAriaLabel,E=void 0===L?"Legg til "+A+" minutter":L,M=y(a,T),N=f.useLocale().locale;C&&(N=C);var O=m.useTimeFieldState(k({onChange:l,label:c,locale:N,value:r,hideTimeZone:!w,isDisabled:o},M)),R=t.useRef(null),S=s.useTimeField(M,O,R),P=S.labelProps,q=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=e.minute>=30?e.hour+1:e.hour;O.setSegment("minute",0),O.setSegment("hour",t)},Y=function(e){O.value&&O.setValue(O.value&&O.value.add({minutes:e}))},Z=O.segments.some((function(e){return"AM"===e.text||"PM"===e.text}));return v.default.createElement(f.I18nProvider,{locale:N},v.default.createElement("div",{className:g.default(i,"eds-timepicker__wrapper")},v.default.createElement(x,{direction:"left",disabled:o,"aria-label":B,onClick:function(){return V(-1*A)}}),v.default.createElement(u.BaseFormControl,k({style:d,className:"eds-timepicker",labelId:G,label:c,labelProps:k({},P),ref:e.mergeRefs(R,n),disabled:o,disableLabelAnimation:!0,labelTooltip:b},q,{variant:_,feedback:h}),O.segments.map((function(e,t){return v.default.createElement(F,{segment:e,state:O,isAmPm:Z,index:t,key:t})}))),v.default.createElement(x,{direction:"right",disabled:o,"aria-label":E,onClick:function(){return V(A)}})))})),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(P,k({onChange:l,"aria-labelledby":f,ref:a},s)))})),P=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=D,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)};
2
2
  //# sourceMappingURL=datepicker.cjs.production.min.js.map