@entur/datepicker 2.0.4 → 2.0.5

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,12 @@
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
+ ## [2.0.5](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.0.4...@entur/datepicker@2.0.5) (2022-06-02)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **datepicker:** make keyboard navigation in datepicker more accessible ([ec7be40](https://bitbucket.org/enturas/design-system/commits/ec7be4018bfbdab9da48b996e83968297c6d4f4b))
11
+
6
12
  ## [2.0.4](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.0.3...@entur/datepicker@2.0.4) (2022-05-13)
7
13
 
8
14
  **Note:** Version bump only for package @entur/datepicker
@@ -12,11 +12,15 @@ declare type DatePickerInputProps = {
12
12
  calendarButtonTooltip: string;
13
13
  hideCalendarButton?: boolean;
14
14
  inputRef: React.RefObject<HTMLInputElement>;
15
+ calendarButtonId: string;
15
16
  forwardRef: React.ForwardedRef<HTMLInputElement>;
16
17
  toggleCalendarGUI: () => void;
17
- onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLInputElement>;
18
+ setFocusToCalendarGUI: () => void;
19
+ setShouldFocusOnCalendarButtonAfterSelect: React.Dispatch<React.SetStateAction<boolean>>;
18
20
  onKeyDownInput: (event: KeyboardEvent) => any;
19
21
  onBlurInput: (event: FocusEvent) => any;
22
+ calendarGUIIsOpen: () => boolean | undefined;
23
+ onClick?: React.MouseEventHandler<HTMLInputElement>;
20
24
  onFocus: undefined;
21
25
  selectedDate: Date | null;
22
26
  placeholder?: null;
@@ -138,7 +138,7 @@ function getMonthList(locale) {
138
138
  return Array.from(monthList, getMonthName);
139
139
  }
140
140
 
141
- var _excluded$4 = ["style", "label", "inputPlaceholder", "prepend", "feedback", "variant", "disabled", "calendarButtonTooltip", "hideCalendarButton", "disableLabelAnimation", "inputRef", "forwardRef", "toggleCalendarGUI", "onKeyDownInput", "onBlurInput", "selectedDate", "placeholder"];
141
+ var _excluded$4 = ["style", "label", "inputPlaceholder", "prepend", "feedback", "variant", "disabled", "calendarButtonTooltip", "hideCalendarButton", "disableLabelAnimation", "inputRef", "calendarButtonId", "forwardRef", "toggleCalendarGUI", "onKeyDownInput", "onBlurInput", "selectedDate", "setFocusToCalendarGUI", "setShouldFocusOnCalendarButtonAfterSelect", "calendarGUIIsOpen", "placeholder", "onClick"];
142
142
  var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
143
143
  var style = _ref.style,
144
144
  label = _ref.label,
@@ -151,11 +151,16 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
151
151
  hideCalendarButton = _ref.hideCalendarButton,
152
152
  disableLabelAnimation = _ref.disableLabelAnimation,
153
153
  inputRef = _ref.inputRef,
154
+ calendarButtonId = _ref.calendarButtonId,
154
155
  forwardRef = _ref.forwardRef,
155
156
  toggleCalendarGUI = _ref.toggleCalendarGUI,
156
157
  onKeyDownInput = _ref.onKeyDownInput,
157
158
  onBlurInput = _ref.onBlurInput,
158
159
  selectedDate = _ref.selectedDate,
160
+ setFocusToCalendarGUI = _ref.setFocusToCalendarGUI,
161
+ setShouldFocusOnCalendarButtonAfterSelect = _ref.setShouldFocusOnCalendarButtonAfterSelect,
162
+ calendarGUIIsOpen = _ref.calendarGUIIsOpen,
163
+ onClick = _ref.onClick,
159
164
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
160
165
 
161
166
  React__default["default"].useEffect(function () {
@@ -170,7 +175,7 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
170
175
  (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.removeEventListener('keydown', handleOnKeyDown);
171
176
  (_inputRef$current5 = inputRef.current) == null ? void 0 : _inputRef$current5.removeEventListener('blur', handleOnBlur);
172
177
  (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.removeEventListener('focus', handleOnFocus);
173
- };
178
+ }; // eslint-disable-next-line react-hooks/exhaustive-deps
174
179
  }, [inputRef, selectedDate]);
175
180
 
176
181
  function handleOnKeyDown(event) {
@@ -181,13 +186,24 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
181
186
  onBlurInput(event);
182
187
  }
183
188
 
184
- function handleOnFocus() {
185
- setTimeout(function () {
189
+ var handleOnFocus = function handleOnFocus() {
190
+ return requestAnimationFrame(function () {
186
191
  var _inputRef$current7;
187
192
 
188
193
  return (_inputRef$current7 = inputRef.current) == null ? void 0 : _inputRef$current7.select();
189
- }, 5);
190
- }
194
+ });
195
+ };
196
+
197
+ var handleOnClickInputField = function handleOnClickInputField(event) {
198
+ setShouldFocusOnCalendarButtonAfterSelect(false);
199
+ onClick && onClick(event);
200
+ };
201
+
202
+ var handleOnClickCalendarButton = function handleOnClickCalendarButton() {
203
+ toggleCalendarGUI();
204
+ setFocusToCalendarGUI();
205
+ setShouldFocusOnCalendarButtonAfterSelect(true);
206
+ };
191
207
 
192
208
  return React__default["default"].createElement(form.TextField, _extends({
193
209
  style: style,
@@ -198,14 +214,17 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
198
214
  variant: variant,
199
215
  disableLabelAnimation: disableLabelAnimation,
200
216
  ref: mergeRefs(ref, inputRef, forwardRef),
217
+ onClick: handleOnClickInputField,
201
218
  append: !hideCalendarButton && React__default["default"].createElement(tooltip.Tooltip, {
202
219
  placement: "top",
203
220
  content: calendarButtonTooltip,
204
221
  disableHoverListener: disabled,
205
222
  disableFocusListener: disabled
206
223
  }, React__default["default"].createElement(button.IconButton, {
224
+ id: calendarButtonId,
207
225
  type: "button",
208
- onClick: toggleCalendarGUI
226
+ onClick: handleOnClickCalendarButton,
227
+ tabIndex: calendarGUIIsOpen() ? -1 : 0
209
228
  }, React__default["default"].createElement(icons.CalendarIcon, null)))
210
229
  }, rest));
211
230
  });
@@ -273,40 +292,71 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
273
292
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
274
293
 
275
294
  var datepickerId = utils.useRandomId('eds-datepicker');
295
+ var datepickerRef = React.useRef(null);
296
+ var inputRef = React__default["default"].useRef(null);
297
+ var calendarButton = document.getElementById(datepickerId + '-button');
276
298
 
277
299
  var _useState = React.useState(false),
278
300
  showValidation = _useState[0],
279
301
  setShowValidation = _useState[1];
280
302
 
281
- var datepickerRef = React.useRef(null);
282
- var inputRef = React__default["default"].useRef(null);
303
+ var _useState2 = React.useState(false),
304
+ shouldFocusOnCalendarButtonAfterSelect = _useState2[0],
305
+ setShouldFocusOnCalendarButtonAfterSelect = _useState2[1]; // eslint-disable-next-line react-hooks/exhaustive-deps
306
+
307
+
283
308
  React__default["default"].useEffect(function () {
284
309
  return validateInput();
285
310
  }, [selectedDate]);
286
311
 
287
- var handleOnKeyDown = function handleOnKeyDown(event) {
288
- var _datepickerRef$curren;
312
+ var handleOnChange = function handleOnChange(date, event) {
313
+ var _inputRef$current;
289
314
 
290
- var calendarIsClosed = !((_datepickerRef$curren = datepickerRef.current) != null && _datepickerRef$curren.isCalendarOpen());
315
+ if (shouldFocusOnCalendarButtonAfterSelect && !hideCalendarButton) {
316
+ calendarButton == null ? void 0 : calendarButton.focus();
317
+ setShouldFocusOnCalendarButtonAfterSelect(false);
318
+ } else (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
319
+
320
+ onChange(date, event);
321
+ };
322
+
323
+ var handleOnKeyDown = function handleOnKeyDown(event) {
291
324
  setShowValidation(false);
292
325
 
293
326
  if (event.key === 'Enter') {
294
- validateInput();
327
+ if (!datePickerGUIIsOpen()) {
328
+ // onBlurInput will validate if calendar is open
329
+ validateInput();
330
+ forceUpdateInputFormat();
331
+ }
332
+
295
333
  focusAndSelectInputField();
334
+ } else if (event.key === 'Tab' && datePickerGUIIsOpen()) {
296
335
  forceUpdateInputFormat();
297
- } else if (event.key === 'Tab' && calendarIsClosed) {
298
- validateInput();
336
+ } else if (event.key === 'Escape') {
299
337
  forceUpdateInputFormat();
338
+ focusAndSelectInputField();
339
+ if (datePickerGUIIsOpen()) toggleCalendarGUI();
300
340
  }
301
341
 
302
342
  onKeyDown(event);
303
343
  };
304
344
 
345
+ var handleOnClickOutside = function handleOnClickOutside() {
346
+ return setShouldFocusOnCalendarButtonAfterSelect(false);
347
+ };
348
+
349
+ var handleOnBlurInput = function handleOnBlurInput() {
350
+ if (datePickerGUIIsOpen()) return;
351
+ validateInput();
352
+ forceUpdateInputFormat();
353
+ };
354
+
305
355
  var validateInput = function validateInput() {
306
- var _inputRef$current;
356
+ var _inputRef$current2;
307
357
 
308
358
  setShowValidation(false);
309
- var inputValue = (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.value;
359
+ var inputValue = (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value;
310
360
  if (!inputValue) return;
311
361
  var inputValueParsedWithAllDateFormats = dateFormats.map(function (format) {
312
362
  return dateFns.parse(inputValue, format, new Date(), {
@@ -342,25 +392,43 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
342
392
  };
343
393
 
344
394
  var focusAndSelectInputField = function focusAndSelectInputField() {
345
- return setTimeout(function () {
346
- var _inputRef$current2;
395
+ return requestAnimationFrame(function () {
396
+ var _inputRef$current3;
347
397
 
348
- (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.select();
349
- }, 5);
398
+ return (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.select();
399
+ });
350
400
  };
351
401
 
352
402
  var forceUpdateInputFormat = function forceUpdateInputFormat() {
353
- var _datepickerRef$curren2;
403
+ var _datepickerRef$curren;
354
404
 
355
- return (_datepickerRef$curren2 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren2.setState({
405
+ return (_datepickerRef$curren = datepickerRef.current) == null ? void 0 : _datepickerRef$curren.setState({
356
406
  inputValue: null
357
407
  });
358
408
  };
359
409
 
360
410
  var toggleCalendarGUI = function toggleCalendarGUI() {
361
- var _datepickerRef$curren3, _datepickerRef$curren4;
411
+ var _datepickerRef$curren2;
362
412
 
363
- return (_datepickerRef$curren3 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren3.setOpen(!((_datepickerRef$curren4 = datepickerRef.current) != null && _datepickerRef$curren4.isCalendarOpen()));
413
+ return (_datepickerRef$curren2 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren2.setOpen(!datePickerGUIIsOpen());
414
+ }; // this focus function will fail if both an inline and a non-inline calendar is present in the same document
415
+
416
+
417
+ var setFocusToCalendarGUI = function setFocusToCalendarGUI() {
418
+ if (inline || hideCalendar || datePickerGUIIsOpen()) return; // 1 frame delay to allow calendar to spawn
419
+
420
+ requestAnimationFrame(function () {
421
+ var dateToSetFocusTo = selectedDate ? document.getElementsByClassName('eds-datepicker__calender__day--selected')[0] : document.getElementsByClassName('eds-datepicker__calender__day--today')[0];
422
+ if (dateToSetFocusTo !== null) dateToSetFocusTo.focus();
423
+ });
424
+ setShouldFocusOnCalendarButtonAfterSelect(true);
425
+ setShowValidation(false);
426
+ };
427
+
428
+ var datePickerGUIIsOpen = function datePickerGUIIsOpen() {
429
+ var _datepickerRef$curren3;
430
+
431
+ return (_datepickerRef$curren3 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren3.isCalendarOpen();
364
432
  };
365
433
 
366
434
  return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(ReactDatepicker__default["default"], _extends({
@@ -370,8 +438,8 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
370
438
  dateFormat: dateFormats,
371
439
  showWeekNumbers: true,
372
440
  weekLabel: weekLabel,
373
- onChange: onChange,
374
- onClickOutside: validateInput,
441
+ onChange: handleOnChange,
442
+ onClickOutside: handleOnClickOutside,
375
443
  id: datepickerId,
376
444
  ariaLabelledBy: datepickerId,
377
445
  showPopperArrow: false,
@@ -421,15 +489,15 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
421
489
  feedback: getFeedbackAndVariant().feedback,
422
490
  variant: getFeedbackAndVariant().variant,
423
491
  inputRef: inputRef,
492
+ calendarButtonId: datepickerId + '-button',
424
493
  forwardRef: ref,
425
494
  onKeyDownInput: handleOnKeyDown,
426
- onBlurInput: function onBlurInput() {
427
- var _datepickerRef$curren5;
428
-
429
- return !((_datepickerRef$curren5 = datepickerRef.current) != null && _datepickerRef$curren5.isCalendarOpen()) && validateInput();
430
- },
495
+ onBlurInput: handleOnBlurInput,
431
496
  onFocus: undefined,
432
497
  toggleCalendarGUI: toggleCalendarGUI,
498
+ setFocusToCalendarGUI: setFocusToCalendarGUI,
499
+ setShouldFocusOnCalendarButtonAfterSelect: setShouldFocusOnCalendarButtonAfterSelect,
500
+ calendarGUIIsOpen: datePickerGUIIsOpen,
433
501
  disableLabelAnimation: disableLabelAnimation,
434
502
  hideCalendarButton: hideCalendarButton,
435
503
  selectedDate: selectedDate
@@ -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.tsx","../src/NativeTimePicker.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport { ReactDatePickerCustomHeaderProps } from 'react-datepicker';\n\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { Heading3 } from '@entur/typography';\nimport { IconButton } from '@entur/button';\n\nexport const DatePickerHeader = ({\n date,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n}: Partial<ReactDatePickerCustomHeaderProps>) => {\n const monthNames = getMonthList();\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 >\n <LeftArrowIcon />\n </IconButton>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {monthNames[date?.getMonth() ?? 0]}\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 >\n <RightArrowIcon />\n </IconButton>\n </div>\n );\n};\n\nfunction getMonthList(locale = 'nb') {\n const year = new Date().getFullYear();\n const monthList = Array(12).keys();\n const formatter = new Intl.DateTimeFormat(locale, {\n month: 'long',\n });\n const getMonthName = (monthIndex: number) =>\n formatter.format(new Date(year, monthIndex));\n\n return Array.from(monthList, getMonthName);\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';\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 calendarButtonTooltip: string;\n hideCalendarButton?: boolean;\n inputRef: React.RefObject<HTMLInputElement>;\n forwardRef: React.ForwardedRef<HTMLInputElement>;\n toggleCalendarGUI: () => void;\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLInputElement>;\n onKeyDownInput: (event: KeyboardEvent) => any;\n onBlurInput: (event: FocusEvent) => any;\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};\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 calendarButtonTooltip,\n hideCalendarButton,\n disableLabelAnimation,\n inputRef,\n forwardRef,\n toggleCalendarGUI,\n onKeyDownInput,\n onBlurInput,\n selectedDate,\n placeholder, // eslint-disable-line\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 }, [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 function handleOnFocus() {\n setTimeout(() => inputRef.current?.select(), 5);\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 append={\n !hideCalendarButton && (\n <Tooltip\n placement=\"top\"\n content={calendarButtonTooltip}\n disableHoverListener={disabled}\n disableFocusListener={disabled}\n >\n <IconButton type=\"button\" onClick={toggleCalendarGUI}>\n <CalendarIcon />\n </IconButton>\n </Tooltip>\n )\n }\n {...rest}\n />\n );\n },\n);\n\nconst mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\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 ved hover på «Åpne kalender»-knappen\n */\n calendarButtonTooltip?: 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 // For testing\n 'data-cy'?: any;\n} & Omit<\n ReactDatePickerProps,\n 'selected' | 'customInput' | 'onChangeRaw' | 'dateFormat' | 'locale'\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 calendarButtonTooltip = 'Åpne\\xa0kalender',\n hideCalendarButton = false,\n hideCalendar = false,\n hideValidation = false,\n weekLabel = 'uke',\n locale = nb,\n open,\n ...rest\n },\n ref,\n ) => {\n const datepickerId = useRandomId('eds-datepicker');\n\n const [showValidation, setShowValidation] = useState(false);\n\n const datepickerRef = useRef<ReactDatePicker>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => validateInput(), [selectedDate]);\n\n const handleOnKeyDown = (event: KeyboardEvent) => {\n const calendarIsClosed = !datepickerRef.current?.isCalendarOpen();\n\n setShowValidation(false);\n if (event.key === 'Enter') {\n validateInput();\n focusAndSelectInputField();\n forceUpdateInputFormat();\n } else if (event.key === 'Tab' && calendarIsClosed) {\n validateInput();\n forceUpdateInputFormat();\n }\n onKeyDown(event);\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 setTimeout(() => {\n inputRef.current?.select();\n }, 5);\n\n const forceUpdateInputFormat = () =>\n datepickerRef.current?.setState({ inputValue: null });\n\n const toggleCalendarGUI = () =>\n datepickerRef.current?.setOpen(!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={onChange}\n onClickOutside={validateInput}\n id={datepickerId}\n ariaLabelledBy={datepickerId}\n showPopperArrow={false}\n locale={locale}\n inline={inline}\n disabled={disabled}\n preventOpenOnFocus={true}\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 />\n )}\n customInput={\n <DatePickerInput\n style={style}\n label={label}\n inputPlaceholder={placeholder}\n calendarButtonTooltip={calendarButtonTooltip}\n prepend={prepend}\n feedback={getFeedbackAndVariant().feedback}\n variant={getFeedbackAndVariant().variant}\n inputRef={inputRef}\n forwardRef={ref}\n onKeyDownInput={handleOnKeyDown}\n onBlurInput={() =>\n !datepickerRef.current?.isCalendarOpen() && validateInput()\n }\n onFocus={undefined}\n toggleCalendarGUI={toggleCalendarGUI}\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 from 'react';\nimport {\n default as ReactDatepicker,\n ReactDatePickerProps,\n registerLocale,\n} from 'react-datepicker';\nimport classNames from 'classnames';\nimport {\n BaseFormControl,\n useInputGroupContext,\n VariantType,\n} from '@entur/form';\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\nimport { nb } from 'date-fns/locale';\nimport { add, sub } from 'date-fns';\nimport * as Popper from '@popperjs/core';\nimport './TimePicker.scss';\nregisterLocale('nb', nb);\n\nexport type TimePickerProps = {\n /** Hva som er den valgte datoen */\n selectedTime?: Date;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event>,\n ) => void;\n /** Placeholder om ingen dato er valgt\n * @default \"Velg tid\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over TimePicker */\n label: string;\n /** Varselmelding, som vil komme under TimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n style?: React.CSSProperties;\n labelTooltip?: React.ReactNode;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Kalles ved klikk på pil venstre i TimePicker\n * @default Trekker fra 30 minutter av den valgte tiden\n */\n onLeftArrowClick?: (selectedTime?: Date | null, e?: React.MouseEvent) => void;\n /** Kalles ved klikk på pil høyre i TimePicker\n * @default Legger til 30 minutter av den valgte tiden\n */\n onRightArrowClick?: (\n selectedTime?: Date | null,\n e?: React.MouseEvent,\n ) => void;\n} & ReactDatePickerProps;\n\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n selectedTime = null,\n onChange,\n placeholder = 'Velg tid',\n disabled,\n className,\n style,\n label,\n labelTooltip,\n feedback,\n variant,\n disableLabelAnimation,\n locale = 'nb',\n onLeftArrowClick = (selectedTime, event) =>\n selectedTime && onChange(sub(selectedTime, { minutes: 30 }), event),\n onRightArrowClick = (selectedTime, event) =>\n selectedTime && onChange(add(selectedTime, { minutes: 30 }), event),\n ...rest\n },\n ref,\n ) => {\n const timepickerId = useRandomId('eds-timepicker');\n return (\n <BaseFormControl\n style={style}\n ref={ref}\n label={label}\n labelId={timepickerId}\n labelTooltip={labelTooltip}\n variant={variant}\n feedback={feedback}\n disableLabelAnimation={disableLabelAnimation}\n className=\"eds-timepicker-form-control\"\n disabled={disabled}\n prepend={\n <TimePickerArrowButton\n direction=\"left\"\n tabIndex={-1}\n onClick={(e: React.MouseEvent) => onLeftArrowClick(selectedTime, e)}\n disabled={disabled}\n />\n }\n >\n <TimePickerBase\n selectedTime={selectedTime}\n onChange={onChange}\n placeholder={placeholder}\n className={className}\n locale={locale}\n ariaLabelledBy={timepickerId}\n disabled={disabled}\n {...rest}\n />\n <TimePickerArrowButton\n direction=\"right\"\n tabIndex={-1}\n onClick={(e: React.MouseEvent) => onRightArrowClick(selectedTime, e)}\n disabled={disabled}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TimePickerBaseProps = {\n /** Hva som er den valgte datoen */\n selectedTime?: Date | null;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event>,\n ) => void;\n /** Placeholder om ingen dato er valgt\n * @default \"Velg tid\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n} & ReactDatePickerProps;\n\nconst POPPER_MODIFIERS: Popper.StrictModifiers[] = [\n {\n name: 'offset',\n enabled: true,\n options: {\n offset: [0, 0],\n },\n },\n];\nconst TimePickerBase: React.FC<TimePickerBaseProps> = ({\n className,\n onChange,\n selectedTime,\n placeholder,\n timeFormat = 'HH:mm',\n dateFormat = ['HH:mm', 'HHmm'],\n ...rest\n}) => {\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (selectedTime) {\n setFiller && !isTimepickerFilled && setFiller(true);\n }\n });\n\n React.useEffect(() => {\n if (selectedTime) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [selectedTime, setFiller, isTimepickerFilled]);\n\n const handleChange = (date: any, event: any) => {\n if (date) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(date, event);\n }\n };\n return (\n <ReactDatepicker\n className={classNames(\n 'eds-form-control',\n 'eds-timepicker__input',\n className,\n )}\n calendarClassName=\"eds-timepicker\"\n selected={selectedTime}\n onChange={handleChange}\n dateFormat={dateFormat}\n timeFormat={timeFormat}\n showTimeSelect\n showTimeInput={true}\n showTimeSelectOnly\n showPopperArrow={false}\n placeholderText={placeholder}\n popperClassName=\"eds-datepicker__popper\"\n popperModifiers={POPPER_MODIFIERS}\n open={false}\n {...rest}\n />\n );\n};\n\ntype TimePickerArrowButtonProps = {\n direction: 'left' | 'right';\n} & React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n>;\n\nconst TimePickerArrowButton: React.FC<TimePickerArrowButtonProps> = ({\n direction,\n ...rest\n}) => {\n return (\n <button\n className={classNames(\n 'eds-timepicker__arrowbutton',\n `eds-timepicker__arrowbutton--${direction}`,\n )}\n type=\"button\"\n {...rest}\n >\n {direction === 'left' ? <LeftArrowIcon /> : <RightArrowIcon />}\n </button>\n );\n};\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { ClockIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\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 /** 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 <ClockIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeTimePicker = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerProps\n>(\n (\n {\n className,\n style,\n onChange,\n label,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <ClockIcon />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativetimepickerId = 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={nativetimepickerId}\n disableLabelAnimation={disableLabelAnimation}\n >\n <NativeTimePickerBase\n onChange={onChange}\n aria-labelledby={nativetimepickerId}\n ref={ref}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeTimePickerBaseProps = {\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeTimePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerBaseProps\n>(({ onChange, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = rest.variant || contextVariant;\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isTimepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isTimepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"time\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('datepicker', 'form', 'icons');\n\nexport * from './DatePicker';\nexport * from './NativeDatePicker';\nexport * from './TimePicker';\nexport * from './NativeTimePicker';\n"],"names":["DatePickerHeader","date","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","monthNames","getMonthList","React","className","IconButton","type","onClick","disabled","LeftArrowIcon","Heading3","getMonth","getFullYear","RightArrowIcon","locale","year","Date","monthList","Array","keys","formatter","Intl","DateTimeFormat","month","getMonthName","monthIndex","format","from","DatePickerInput","forwardRef","ref","style","label","inputPlaceholder","prepend","feedback","variant","calendarButtonTooltip","hideCalendarButton","disableLabelAnimation","inputRef","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","rest","useEffect","current","addEventListener","handleOnKeyDown","handleOnBlur","handleOnFocus","removeEventListener","event","setTimeout","select","TextField","placeholder","mergeRefs","append","Tooltip","placement","content","disableHoverListener","disableFocusListener","CalendarIcon","refs","node","registerLocale","nb","DatePicker","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","validationFeedback","validationVariant","hideCalendar","hideValidation","weekLabel","open","datepickerId","useRandomId","useState","showValidation","setShowValidation","datepickerRef","useRef","validateInput","calendarIsClosed","isCalendarOpen","key","focusAndSelectInputField","forceUpdateInputFormat","inputValue","value","inputValueParsedWithAllDateFormats","map","parse","parsedDateFromInputIsTheSameAsSelectedDate","some","dateFormat","isSameDay","getFeedbackAndVariant","undefined","setState","setOpen","ReactDatepicker","selected","showWeekNumbers","onClickOutside","id","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","TimePicker","selectedTime","labelTooltip","onLeftArrowClick","sub","minutes","onRightArrowClick","add","timepickerId","TimePickerArrowButton","direction","tabIndex","e","TimePickerBase","POPPER_MODIFIERS","name","enabled","options","offset","timeFormat","isTimepickerFilled","showTimeSelect","showTimeInput","showTimeSelectOnly","placeholderText","popperClassName","popperModifiers","NativeTimePicker","ClockIcon","nativetimepickerId","NativeTimePickerBase","warnAboutMissingStyles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB;;;MAC9BC,YAAAA;MACAC,qBAAAA;MACAC,qBAAAA;MACAC,+BAAAA;MACAC,+BAAAA;AAEA,MAAMC,UAAU,GAAGC,YAAY,EAA/B;AACA,SACEC,uCAAA,MAAA;AAAKC,IAAAA,SAAS,EAAC;GAAf,EACED,uCAAA,CAACE,iBAAD;AACEC,IAAAA,IAAI,EAAC;AACLF,IAAAA,SAAS,EAAC;AACVG,IAAAA,OAAO,EAAEV;AACTW,IAAAA,QAAQ,EAAET;GAJZ,EAMEI,uCAAA,CAACM,mBAAD,MAAA,CANF,CADF,EASEN,uCAAA,CAACO,mBAAD;AAAUN,IAAAA,SAAS,EAAC;GAApB,EACGH,UAAU,mBAACL,IAAD,oBAACA,IAAI,CAAEe,QAAN,EAAD,6BAAqB,CAArB,CADb,CATF,EAYER,uCAAA,CAACO,mBAAD;AAAUN,IAAAA,SAAS,EAAC;GAApB,EACGR,IADH,oBACGA,IAAI,CAAEgB,WAAN,EADH,CAZF,EAgBET,uCAAA,CAACE,iBAAD;AACEC,IAAAA,IAAI,EAAC;AACLF,IAAAA,SAAS,EAAC;AACVG,IAAAA,OAAO,EAAET;AACTU,IAAAA,QAAQ,EAAER;GAJZ,EAMEG,uCAAA,CAACU,oBAAD,MAAA,CANF,CAhBF,CADF;AA2BD,CAnCM;;AAqCP,SAASX,YAAT,CAAsBY,MAAtB;MAAsBA;AAAAA,IAAAA,SAAS;;;AAC7B,MAAMC,IAAI,GAAG,IAAIC,IAAJ,GAAWJ,WAAX,EAAb;AACA,MAAMK,SAAS,GAAGC,KAAK,CAAC,EAAD,CAAL,CAAUC,IAAV,EAAlB;AACA,MAAMC,SAAS,GAAG,IAAIC,IAAI,CAACC,cAAT,CAAwBR,MAAxB,EAAgC;AAChDS,IAAAA,KAAK,EAAE;AADyC,GAAhC,CAAlB;;AAGA,MAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,UAAD;AAAA,WACnBL,SAAS,CAACM,MAAV,CAAiB,IAAIV,IAAJ,CAASD,IAAT,EAAeU,UAAf,CAAjB,CADmB;AAAA,GAArB;;AAGA,SAAOP,KAAK,CAACS,IAAN,CAAWV,SAAX,EAAsBO,YAAtB,CAAP;AACD;;;ACzBM,IAAMI,eAAe,gBAAGzB,yBAAK,CAAC0B,UAAN,CAI7B,gBAqBEC,GArBF;MAEIC,aAAAA;MACAC,aAAAA;MACAC,wBAAAA;MACAC,eAAAA;MACAC,gBAAAA;MACAC,eAAAA;MACA5B,gBAAAA;MACA6B,6BAAAA;MACAC,0BAAAA;MACAC,6BAAAA;MACAC,gBAAAA;MACAX,kBAAAA;MACAY,yBAAAA;MACAC,sBAAAA;MACAC,mBAAAA;MACAC,oBAAAA;MAEGC;;AAIL1C,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;;;AACd,yBAAAN,QAAQ,CAACO,OAAT,uCAAkBC,gBAAlB,CAAmC,SAAnC,EAA8CC,eAA9C;AACA,0BAAAT,QAAQ,CAACO,OAAT,wCAAkBC,gBAAlB,CAAmC,MAAnC,EAA2CE,YAA3C;AACA,0BAAAV,QAAQ,CAACO,OAAT,wCAAkBC,gBAAlB,CAAmC,OAAnC,EAA4CG,aAA5C;AACA,WAAO;;;AACL,4BAAAX,QAAQ,CAACO,OAAT,wCAAkBK,mBAAlB,CAAsC,SAAtC,EAAiDH,eAAjD;AACA,4BAAAT,QAAQ,CAACO,OAAT,wCAAkBK,mBAAlB,CAAsC,MAAtC,EAA8CF,YAA9C;AACA,4BAAAV,QAAQ,CAACO,OAAT,wCAAkBK,mBAAlB,CAAsC,OAAtC,EAA+CD,aAA/C;AACD,KAJD;AAKD,GATD,EASG,CAACX,QAAD,EAAWI,YAAX,CATH;;AAWA,WAASK,eAAT,CAA4CI,KAA5C;AACEX,IAAAA,cAAc,CAACW,KAAD,CAAd;AACD;;AACD,WAASH,YAAT,CAAyCG,KAAzC;AACEV,IAAAA,WAAW,CAACU,KAAD,CAAX;AACD;;AACD,WAASF,aAAT;AACEG,IAAAA,UAAU,CAAC;AAAA;;AAAA,mCAAMd,QAAQ,CAACO,OAAf,qBAAM,mBAAkBQ,MAAlB,EAAN;AAAA,KAAD,EAAmC,CAAnC,CAAV;AACD;;AAED,SACEpD,uCAAA,CAACqD,cAAD;AACEzB,IAAAA,KAAK,EAAEA,KADT;AAEEC,IAAAA,KAAK,EAAEA,KAFT;AAGEyB,IAAAA,WAAW,EAAExB,gBAHf;AAIEC,IAAAA,OAAO,EAAEA,OAJX;AAKEC,IAAAA,QAAQ,EAAEA,QALZ;AAMEC,IAAAA,OAAO,EAAEA,OANX;AAOEG,IAAAA,qBAAqB,EAAEA,qBAPzB;AAQET,IAAAA,GAAG,EAAE4B,SAAS,CAAC5B,GAAD,EAAMU,QAAN,EAAgBX,UAAhB,CARhB;AASE8B,IAAAA,MAAM,EACJ,CAACrB,kBAAD,IACEnC,uCAAA,CAACyD,eAAD;AACEC,MAAAA,SAAS,EAAC;AACVC,MAAAA,OAAO,EAAEzB;AACT0B,MAAAA,oBAAoB,EAAEvD;AACtBwD,MAAAA,oBAAoB,EAAExD;KAJxB,EAMEL,uCAAA,CAACE,iBAAD;AAAYC,MAAAA,IAAI,EAAC;AAASC,MAAAA,OAAO,EAAEkC;KAAnC,EACEtC,uCAAA,CAAC8D,kBAAD,MAAA,CADF,CANF;AAXN,KAuBMpB,IAvBN,EADF;AA2BD,CA3E4B,CAAxB;;AA8EP,IAAMa,SAAS,GAAG,SAAZA,SAAY;oCACbQ;AAAAA,IAAAA;;;AAEH,SAAO,UAACC,IAAD;AACL,yDAAkBD,IAAlB,wCAAwB;AAAA,UAAbpC,GAAa;;AACtB,UAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;AAC7BA,QAAAA,GAAG,CAACqC,IAAD,CAAH;AACD,OAFD,MAEO,IAAIrC,GAAJ,EAASA,GAAG,CAACiB,OAAJ,GAAcoB,IAAd;AACjB;AACF,GAND;AAOD,CAVD;;;ACxFAC,8BAAc,CAAC,IAAD,EAAOC,SAAP,CAAd;IAsFaC,UAAU,gBAAGnE,yBAAK,CAAC0B,UAAN,CACxB,gBA6BEC,GA7BF;MAEIC,aAAAA;MACA3B,iBAAAA;MACAwC,oBAAAA;MACAZ,aAAAA;8BACAyB;MAAAA,4CAAc;MACdc,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;MACTpE,gBAAAA;MACA0B,eAAAA;2BACAC;MAAAA,sCAAW;MACXC,eAAAA;mCACAyC;MAAAA,wDAAqB;mCACrBC;MAAAA,uDAAoB;mCACpBvC;MAAAA,2DAAwB;mCACxBF;MAAAA,2DAAwB;mCACxBC;MAAAA,wDAAqB;+BACrByC;MAAAA,8CAAe;iCACfC;MAAAA,kDAAiB;4BACjBC;MAAAA,wCAAY;yBACZnE;MAAAA,oCAASuD;MACTa,YAAAA;MACGrC;;AAIL,MAAMsC,YAAY,GAAGC,iBAAW,CAAC,gBAAD,CAAhC;;AAEA,kBAA4CC,cAAQ,CAAC,KAAD,CAApD;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AAEA,MAAMC,aAAa,GAAGC,YAAM,CAAkB,IAAlB,CAA5B;AACA,MAAMjD,QAAQ,GAAGrC,yBAAK,CAACsF,MAAN,CAA+B,IAA/B,CAAjB;AAEAtF,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;AAAA,WAAM4C,aAAa,EAAnB;AAAA,GAAhB,EAAuC,CAAC9C,YAAD,CAAvC;;AAEA,MAAMK,eAAe,GAAG,SAAlBA,eAAkB,CAACI,KAAD;;;AACtB,QAAMsC,gBAAgB,GAAG,2BAACH,aAAa,CAACzC,OAAf,aAAC,sBAAuB6C,cAAvB,EAAD,CAAzB;AAEAL,IAAAA,iBAAiB,CAAC,KAAD,CAAjB;;AACA,QAAIlC,KAAK,CAACwC,GAAN,KAAc,OAAlB,EAA2B;AACzBH,MAAAA,aAAa;AACbI,MAAAA,wBAAwB;AACxBC,MAAAA,sBAAsB;AACvB,KAJD,MAIO,IAAI1C,KAAK,CAACwC,GAAN,KAAc,KAAd,IAAuBF,gBAA3B,EAA6C;AAClDD,MAAAA,aAAa;AACbK,MAAAA,sBAAsB;AACvB;;AACDvB,IAAAA,SAAS,CAACnB,KAAD,CAAT;AACD,GAbD;;AAeA,MAAMqC,aAAa,GAAG,SAAhBA,aAAgB;;;AACpBH,IAAAA,iBAAiB,CAAC,KAAD,CAAjB;AACA,QAAMS,UAAU,wBAAGxD,QAAQ,CAACO,OAAZ,qBAAG,kBAAkBkD,KAArC;AACA,QAAI,CAACD,UAAL,EAAiB;AAEjB,QAAME,kCAAkC,GAAGzB,WAAW,CAAC0B,GAAZ,CAAgB,UAAAzE,MAAM;AAAA,aAC/D0E,aAAK,CAACJ,UAAD,EAAatE,MAAb,EAAqB,IAAIV,IAAJ,EAArB,EAAiC;AACpCF,QAAAA,MAAM,EAAEA;AAD4B,OAAjC,CAD0D;AAAA,KAAtB,CAA3C;AAMA,QAAMuF,0CAA0C,GAC9CzD,YAAY,IACZsD,kCAAkC,CAACI,IAAnC,CAAwC,UAAAC,UAAU;AAAA,aAChDC,iBAAS,CAACD,UAAD,EAAa3D,YAAb,CADuC;AAAA,KAAlD,CAFF;;AAMA,QAAIyD,0CAAJ,EAAgD;AAC9C;AACAd,MAAAA,iBAAiB,CAAC,KAAD,CAAjB;AACD,KAHD,MAGO;AACL;AACAA,MAAAA,iBAAiB,CAAC,IAAD,CAAjB;AACD;AACF,GAxBD;;AA0BA,MAAMkB,qBAAqB,GAAG,SAAxBA,qBAAwB;AAI5B,QAAItE,QAAJ,EAAc,OAAO;AAAEA,MAAAA,QAAQ,EAARA,QAAF;AAAYC,MAAAA,OAAO,EAAPA;AAAZ,KAAP;AACd,QAAI,CAAC4C,cAAD,IAAmBM,cAAvB,EACE,OAAO;AAAEnD,MAAAA,QAAQ,EAAE0C,kBAAZ;AAAgCzC,MAAAA,OAAO,EAAE0C;AAAzC,KAAP;AACF,WAAO;AAAE3C,MAAAA,QAAQ,EAAE,EAAZ;AAAgBC,MAAAA,OAAO,EAAEsE;AAAzB,KAAP;AACD,GARD;;AAUA,MAAMZ,wBAAwB,GAAG,SAA3BA,wBAA2B;AAAA,WAC/BxC,UAAU,CAAC;;;AACT,4BAAAd,QAAQ,CAACO,OAAT,wCAAkBQ,MAAlB;AACD,KAFS,EAEP,CAFO,CADqB;AAAA,GAAjC;;AAKA,MAAMwC,sBAAsB,GAAG,SAAzBA,sBAAyB;AAAA;;AAAA,qCAC7BP,aAAa,CAACzC,OADe,qBAC7B,uBAAuB4D,QAAvB,CAAgC;AAAEX,MAAAA,UAAU,EAAE;AAAd,KAAhC,CAD6B;AAAA,GAA/B;;AAGA,MAAMvD,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA;;AAAA,qCACxB+C,aAAa,CAACzC,OADU,qBACxB,uBAAuB6D,OAAvB,CAA+B,4BAACpB,aAAa,CAACzC,OAAf,aAAC,uBAAuB6C,cAAvB,EAAD,CAA/B,CADwB;AAAA,GAA1B;;AAGA,SACEzF,uCAAA,mCAAA,MAAA,EACEA,uCAAA,CAAC0G,mCAAD;AACEC,IAAAA,QAAQ,EAAElE,YADZ;AAEE8B,IAAAA,OAAO,EAAEA,OAFX;AAGEC,IAAAA,OAAO,EAAEA,OAHX;AAIE4B,IAAAA,UAAU,EAAE9B,WAJd;AAKEsC,IAAAA,eAAe,MALjB;AAME9B,IAAAA,SAAS,EAAEA,SANb;AAOEV,IAAAA,QAAQ,EAAEA,QAPZ;AAQEyC,IAAAA,cAAc,EAAEtB,aARlB;AASEuB,IAAAA,EAAE,EAAE9B,YATN;AAUE+B,IAAAA,cAAc,EAAE/B,YAVlB;AAWEgC,IAAAA,eAAe,EAAE,KAXnB;AAYErG,IAAAA,MAAM,EAAEA,QAZV;AAaE8D,IAAAA,MAAM,EAAEA,MAbV;AAcEpE,IAAAA,QAAQ,EAAEA,QAdZ;AAeE4G,IAAAA,kBAAkB,EAAE,IAftB;AAgBElC,IAAAA,IAAI,EAAEH,YAAY,GAAG,KAAH,GAAWG,IAhB/B;AAiBEpD,IAAAA,GAAG,EAAE0D,aAjBP;AAkBE6B,IAAAA,iBAAiB,EAAC,0BAlBpB;AAmBEC,IAAAA,YAAY,EAAE;AAAA,aAAM,+BAAN;AAAA,KAnBhB;AAoBEC,IAAAA,gBAAgB,EAAE;AAAA,aAAM,oCAAN;AAAA,KApBpB;AAqBEnH,IAAAA,SAAS,EAAEoH,8BAAU,CAACpH,SAAD,EAAY,uBAAZ,CArBvB;AAsBEqH,IAAAA,cAAc,EAAE,CACd;AAAE,8CAAwC,CAAC,IAAIzG,IAAJ,EAAD;AAA1C,KADc,EAEd;AACE,iDAA2C4B,YAAY,GACnD,CAACA,YAAD,CADmD,GAEnD;AAHN,KAFc,CAtBlB;AA8BE8E,IAAAA,kBAAkB,EAAE;AAAA,UAClB9H,IADkB,SAClBA,IADkB;AAAA,UAElB+H,UAFkB,SAElBA,UAFkB;AAAA,UAGlBC,WAHkB,SAGlBA,WAHkB;AAAA,UAIlB/H,aAJkB,SAIlBA,aAJkB;AAAA,UAKlBC,aALkB,SAKlBA,aALkB;AAAA,UAMlBC,uBANkB,SAMlBA,uBANkB;AAAA,UAOlBC,uBAPkB,SAOlBA,uBAPkB;AAAA,aASlBG,uCAAA,CAACR,gBAAD;AACEC,QAAAA,IAAI,EAAEA;AACN+H,QAAAA,UAAU,EAAEA;AACZC,QAAAA,WAAW,EAAEA;AACb9H,QAAAA,aAAa,EAAEA;AACfD,QAAAA,aAAa,EAAEA;AACfE,QAAAA,uBAAuB,EAAEA;AACzBC,QAAAA,uBAAuB,EAAEA;OAP3B,CATkB;AAAA,KA9BtB;AAiDE6H,IAAAA,WAAW,EACT1H,uCAAA,CAACyB,eAAD;AACEG,MAAAA,KAAK,EAAEA;AACPC,MAAAA,KAAK,EAAEA;AACPC,MAAAA,gBAAgB,EAAEwB;AAClBpB,MAAAA,qBAAqB,EAAEA;AACvBH,MAAAA,OAAO,EAAEA;AACTC,MAAAA,QAAQ,EAAEsE,qBAAqB,GAAGtE;AAClCC,MAAAA,OAAO,EAAEqE,qBAAqB,GAAGrE;AACjCI,MAAAA,QAAQ,EAAEA;AACVX,MAAAA,UAAU,EAAEC;AACZY,MAAAA,cAAc,EAAEO;AAChBN,MAAAA,WAAW,EAAE;AAAA;;AAAA,eACX,4BAAC6C,aAAa,CAACzC,OAAf,aAAC,uBAAuB6C,cAAvB,EAAD,KAA4CF,aAAa,EAD9C;AAAA;AAGboC,MAAAA,OAAO,EAAEpB;AACTjE,MAAAA,iBAAiB,EAAEA;AACnBF,MAAAA,qBAAqB,EAAEA;AACvBD,MAAAA,kBAAkB,EAAEA;AACpBM,MAAAA,YAAY,EAAEA;KAlBhB;AAlDJ,KAuEMC,IAvEN,EADF,CADF;AA6ED,CApLuB;;;;IC3EbkF,gBAAgB,gBAAG5H,yBAAK,CAAC0B,UAAN,CAI9B,gBAYEC,GAZF;MAEI1B,iBAAAA;MACA2B,aAAAA;MACAC,aAAAA;MACAuC,gBAAAA;MACApC,gBAAAA;MACAC,eAAAA;MACAG,6BAAAA;0BACAL;MAAAA,oCAAU/B,uCAAA,CAAC6H,cAAD;AAAUpD,IAAAA,MAAM;GAAhB;MACP/B;;AAIL,MAAMoF,kBAAkB,GAAG7C,iBAAW,CAAC,sBAAD,CAAtC;AACA,SACEjF,uCAAA,CAAC+H,oBAAD;AACEnG,IAAAA,KAAK,EAAEA;AACP3B,IAAAA,SAAS,EAAEA;AACX8B,IAAAA,OAAO,EAAEA;AACTF,IAAAA,KAAK,EAAEA;AACPG,IAAAA,QAAQ,EAAEA;AACVC,IAAAA,OAAO,EAAEA;AACT+F,IAAAA,OAAO,EAAEF;AACT1F,IAAAA,qBAAqB,EAAEA;AACvB6F,IAAAA,QAAQ;GATV,EAWEjI,uCAAA,CAACkI,oBAAD;AACE9D,IAAAA,QAAQ,EAAEA,QADZ;uBAEmB0D,kBAFnB;AAGEnG,IAAAA,GAAG,EAAEA,GAHP;AAIEM,IAAAA,OAAO,EAAEA;AAJX,KAKMS,IALN,EAXF,CADF;AAqBD,CAxC6B;AAmDhC,IAAMwF,oBAAoB,gBAAGlI,yBAAK,CAAC0B,UAAN,CAG3B,iBAAwCC,GAAxC;MAAGyC,iBAAAA;MAAUnC,gBAAAA;MAAS6D,cAAAA;MAAUpD;;AAChC,MAAMyF,cAAc,GAAGC,eAAU,EAAjC;AACA,MAAMC,cAAc,GAAGpG,OAAO,IAAIkG,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;AAIAxI,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;AACd,QAAImD,KAAJ,EAAW;AACT0C,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,CAAC1C,KAAD,EAAQ0C,SAAR,EAAmBD,kBAAnB,CANH;;AAQA,MAAMI,YAAY,GAAG,SAAfA,YAAe,CAACzF,KAAD;AACnB,QAAI+E,aAAQ,CAAC/E,KAAK,CAAC0F,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,QAAIpE,QAAJ,EAAc;AACZA,MAAAA,QAAQ,CAAClB,KAAD,CAAR;AACD;AACF,GATD;;AAUA,SACElD,uCAAA,QAAA;AACE2B,IAAAA,GAAG,EAAEA,GADP;oBAEgB0G,cAAc,KAAK,OAFnC;AAGElI,IAAAA,IAAI,EAAC,MAHP;AAIEF,IAAAA,SAAS,EAAC,yCAJZ;AAKEmE,IAAAA,QAAQ,EAAEuE,YALZ;AAME7C,IAAAA,KAAK,EAAEA;AANT,KAOMpD,IAPN,EADF;AAWD,CA1C4B,CAA7B;;;;;AC/DAuB,8BAAc,CAAC,IAAD,EAAOC,SAAP,CAAd;IAyCa2E,UAAU,gBAAG7I,yBAAK,CAAC0B,UAAN,CACxB,gBAoBEC,GApBF;+BAEImH;MAAAA,8CAAe;MACf1E,gBAAAA;8BACAd;MAAAA,4CAAc;MACdjD,gBAAAA;MACAJ,iBAAAA;MACA2B,aAAAA;MACAC,aAAAA;MACAkH,oBAAAA;MACA/G,gBAAAA;MACAC,eAAAA;MACAG,6BAAAA;yBACAzB;MAAAA,kCAAS;mCACTqI;MAAAA,sDAAmB,UAACF,YAAD,EAAe5F,KAAf;AAAA,WACjB4F,YAAY,IAAI1E,QAAQ,CAAC6E,WAAG,CAACH,YAAD,EAAe;AAAEI,MAAAA,OAAO,EAAE;AAAX,KAAf,CAAJ,EAAqChG,KAArC,CADP;AAAA;mCAEnBiG;MAAAA,uDAAoB,UAACL,YAAD,EAAe5F,KAAf;AAAA,WAClB4F,YAAY,IAAI1E,QAAQ,CAACgF,WAAG,CAACN,YAAD,EAAe;AAAEI,MAAAA,OAAO,EAAE;AAAX,KAAf,CAAJ,EAAqChG,KAArC,CADN;AAAA;MAEjBR;;AAIL,MAAM2G,YAAY,GAAGpE,iBAAW,CAAC,gBAAD,CAAhC;AACA,SACEjF,uCAAA,CAAC+H,oBAAD;AACEnG,IAAAA,KAAK,EAAEA;AACPD,IAAAA,GAAG,EAAEA;AACLE,IAAAA,KAAK,EAAEA;AACPmG,IAAAA,OAAO,EAAEqB;AACTN,IAAAA,YAAY,EAAEA;AACd9G,IAAAA,OAAO,EAAEA;AACTD,IAAAA,QAAQ,EAAEA;AACVI,IAAAA,qBAAqB,EAAEA;AACvBnC,IAAAA,SAAS,EAAC;AACVI,IAAAA,QAAQ,EAAEA;AACV0B,IAAAA,OAAO,EACL/B,uCAAA,CAACsJ,qBAAD;AACEC,MAAAA,SAAS,EAAC;AACVC,MAAAA,QAAQ,EAAE,CAAC;AACXpJ,MAAAA,OAAO,EAAE,iBAACqJ,CAAD;AAAA,eAAyBT,gBAAgB,CAACF,YAAD,EAAeW,CAAf,CAAzC;AAAA;AACTpJ,MAAAA,QAAQ,EAAEA;KAJZ;GAZJ,EAoBEL,uCAAA,CAAC0J,cAAD;AACEZ,IAAAA,YAAY,EAAEA,YADhB;AAEE1E,IAAAA,QAAQ,EAAEA,QAFZ;AAGEd,IAAAA,WAAW,EAAEA,WAHf;AAIErD,IAAAA,SAAS,EAAEA,SAJb;AAKEU,IAAAA,MAAM,EAAEA,MALV;AAMEoG,IAAAA,cAAc,EAAEsC,YANlB;AAOEhJ,IAAAA,QAAQ,EAAEA;AAPZ,KAQMqC,IARN,EApBF,EA8BE1C,uCAAA,CAACsJ,qBAAD;AACEC,IAAAA,SAAS,EAAC;AACVC,IAAAA,QAAQ,EAAE,CAAC;AACXpJ,IAAAA,OAAO,EAAE,iBAACqJ,CAAD;AAAA,aAAyBN,iBAAiB,CAACL,YAAD,EAAeW,CAAf,CAA1C;AAAA;AACTpJ,IAAAA,QAAQ,EAAEA;GAJZ,CA9BF,CADF;AAuCD,CA/DuB;AAmF1B,IAAMsJ,gBAAgB,GAA6B,CACjD;AACEC,EAAAA,IAAI,EAAE,QADR;AAEEC,EAAAA,OAAO,EAAE,IAFX;AAGEC,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ;AADD;AAHX,CADiD,CAAnD;;AASA,IAAML,cAAc,GAAkC,SAAhDA,cAAgD;MACpDzJ,kBAAAA;MACAmE,iBAAAA;MACA0E,qBAAAA;MACAxF,oBAAAA;+BACA0G;MAAAA,2CAAa;+BACb5D;MAAAA,2CAAa,CAAC,OAAD,EAAU,MAAV;MACV1D;;AAEH,8BACE4F,yBAAoB,EADtB;AAAA,MAAkB2B,kBAAlB,yBAAQhC,QAAR;AAAA,MAAiDO,SAAjD,yBAAsCC,SAAtC;;AAGAC,EAAAA,gBAAU,CAAC;AACT,QAAII,YAAJ,EAAkB;AAChBN,MAAAA,SAAS,IAAI,CAACyB,kBAAd,IAAoCzB,SAAS,CAAC,IAAD,CAA7C;AACD;AACF,GAJS,CAAV;AAMAxI,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;AACd,QAAImG,YAAJ,EAAkB;AAChBN,MAAAA,SAAS,IAAI,CAACyB,kBAAd,IAAoCzB,SAAS,CAAC,IAAD,CAA7C;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,IAAIyB,kBAAb,IAAmCzB,SAAS,CAAC,KAAD,CAA5C;AACD;AACF,GAND,EAMG,CAACM,YAAD,EAAeN,SAAf,EAA0ByB,kBAA1B,CANH;;AAQA,MAAMtB,YAAY,GAAG,SAAfA,YAAe,CAAClJ,IAAD,EAAYyD,KAAZ;AACnB,QAAIzD,IAAJ,EAAU;AACR+I,MAAAA,SAAS,IAAI,CAACyB,kBAAd,IAAoCzB,SAAS,CAAC,IAAD,CAA7C;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,IAAIyB,kBAAb,IAAmCzB,SAAS,CAAC,KAAD,CAA5C;AACD;;AACD,QAAIpE,QAAJ,EAAc;AACZA,MAAAA,QAAQ,CAAC3E,IAAD,EAAOyD,KAAP,CAAR;AACD;AACF,GATD;;AAUA,SACElD,uCAAA,CAAC0G,mCAAD;AACEzG,IAAAA,SAAS,EAAEoH,8BAAU,CACnB,kBADmB,EAEnB,uBAFmB,EAGnBpH,SAHmB,CADvB;AAMEiH,IAAAA,iBAAiB,EAAC,gBANpB;AAOEP,IAAAA,QAAQ,EAAEmC,YAPZ;AAQE1E,IAAAA,QAAQ,EAAEuE,YARZ;AASEvC,IAAAA,UAAU,EAAEA,UATd;AAUE4D,IAAAA,UAAU,EAAEA,UAVd;AAWEE,IAAAA,cAAc,MAXhB;AAYEC,IAAAA,aAAa,EAAE,IAZjB;AAaEC,IAAAA,kBAAkB,MAbpB;AAcEpD,IAAAA,eAAe,EAAE,KAdnB;AAeEqD,IAAAA,eAAe,EAAE/G,WAfnB;AAgBEgH,IAAAA,eAAe,EAAC,wBAhBlB;AAiBEC,IAAAA,eAAe,EAAEZ,gBAjBnB;AAkBE5E,IAAAA,IAAI,EAAE;AAlBR,KAmBMrC,IAnBN,EADF;AAuBD,CA3DD;;AAoEA,IAAM4G,qBAAqB,GAAyC,SAA9DA,qBAA8D;MAClEC,kBAAAA;MACG7G;;AAEH,SACE1C,uCAAA,SAAA;AACEC,IAAAA,SAAS,EAAEoH,8BAAU,CACnB,6BADmB,oCAEakC,SAFb,CADvB;AAKEpJ,IAAAA,IAAI,EAAC;AALP,KAMMuC,IANN,GAQG6G,SAAS,KAAK,MAAd,GAAuBvJ,uCAAA,CAACM,mBAAD,MAAA,CAAvB,GAA2CN,uCAAA,CAACU,oBAAD,MAAA,CAR9C,CADF;AAYD,CAhBD;;;;IC7La8J,gBAAgB,gBAAGxK,yBAAK,CAAC0B,UAAN,CAI9B,gBAYEC,GAZF;MAEI1B,iBAAAA;MACA2B,aAAAA;MACAwC,gBAAAA;MACAvC,aAAAA;MACAG,gBAAAA;MACAC,eAAAA;MACAG,6BAAAA;0BACAL;MAAAA,oCAAU/B,uCAAA,CAACyK,eAAD,MAAA;MACP/H;;AAIL,MAAMgI,kBAAkB,GAAGzF,iBAAW,CAAC,sBAAD,CAAtC;AACA,SACEjF,uCAAA,CAAC+H,oBAAD;AACEnG,IAAAA,KAAK,EAAEA;AACP3B,IAAAA,SAAS,EAAEA;AACX8B,IAAAA,OAAO,EAAEA;AACTF,IAAAA,KAAK,EAAEA;AACPG,IAAAA,QAAQ,EAAEA;AACVC,IAAAA,OAAO,EAAEA;AACT+F,IAAAA,OAAO,EAAE0C;AACTtI,IAAAA,qBAAqB,EAAEA;GARzB,EAUEpC,uCAAA,CAAC2K,oBAAD;AACEvG,IAAAA,QAAQ,EAAEA,QADZ;uBAEmBsG,kBAFnB;AAGE/I,IAAAA,GAAG,EAAEA;AAHP,KAIMe,IAJN,EAVF,CADF;AAmBD,CAtC6B;AAgDhC,IAAMiI,oBAAoB,gBAAG3K,yBAAK,CAAC0B,UAAN,CAG3B,iBAA+BC,GAA/B;MAAGyC,iBAAAA;MAAU0B,cAAAA;MAAUpD;;AACvB,MAAMyF,cAAc,GAAGC,eAAU,EAAjC;AACA,MAAMC,cAAc,GAAG3F,IAAI,CAACT,OAAL,IAAgBkG,cAAvC;;AACA,8BACEG,yBAAoB,EADtB;AAAA,MAAkB2B,kBAAlB,yBAAQhC,QAAR;AAAA,MAAiDO,SAAjD,yBAAsCC,SAAtC;;AAGAC,EAAAA,gBAAU,CAAC;AACTF,IAAAA,SAAS,IAAI,CAACyB,kBAAd,IAAoCzB,SAAS,CAAC,IAAD,CAA7C;AACD,GAFS,CAAV;AAIAxI,EAAAA,yBAAK,CAAC2C,SAAN,CAAgB;AACd,QAAImD,KAAJ,EAAW;AACT0C,MAAAA,SAAS,IAAI,CAACyB,kBAAd,IAAoCzB,SAAS,CAAC,IAAD,CAA7C;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,IAAIyB,kBAAb,IAAmCzB,SAAS,CAAC,KAAD,CAA5C;AACD;AACF,GAND,EAMG,CAAC1C,KAAD,EAAQ0C,SAAR,EAAmByB,kBAAnB,CANH;;AAQA,MAAMtB,YAAY,GAAG,SAAfA,YAAe,CAACzF,KAAD;AACnB,QAAI+E,aAAQ,CAAC/E,KAAK,CAAC0F,MAAP,CAAZ,EAA4B;AAC1BJ,MAAAA,SAAS,IAAI,CAACyB,kBAAd,IAAoCzB,SAAS,CAAC,IAAD,CAA7C;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,IAAIyB,kBAAb,IAAmCzB,SAAS,CAAC,KAAD,CAA5C;AACD;;AACD,QAAIpE,QAAJ,EAAc;AACZA,MAAAA,QAAQ,CAAClB,KAAD,CAAR;AACD;AACF,GATD;;AAUA,SACElD,uCAAA,QAAA;AACE2B,IAAAA,GAAG,EAAEA,GADP;oBAEgB0G,cAAc,KAAK,OAFnC;AAGElI,IAAAA,IAAI,EAAC,MAHP;AAIEF,IAAAA,SAAS,EAAC,yCAJZ;AAKEmE,IAAAA,QAAQ,EAAEuE,YALZ;AAME7C,IAAAA,KAAK,EAAEA;AANT,KAOMpD,IAPN,EADF;AAWD,CA1C4B,CAA7B;;AC3EAkI,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.tsx","../src/NativeTimePicker.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport { ReactDatePickerCustomHeaderProps } from 'react-datepicker';\n\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { Heading3 } from '@entur/typography';\nimport { IconButton } from '@entur/button';\n\nexport const DatePickerHeader = ({\n date,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n}: Partial<ReactDatePickerCustomHeaderProps>) => {\n const monthNames = getMonthList();\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 >\n <LeftArrowIcon />\n </IconButton>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {monthNames[date?.getMonth() ?? 0]}\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 >\n <RightArrowIcon />\n </IconButton>\n </div>\n );\n};\n\nfunction getMonthList(locale = 'nb') {\n const year = new Date().getFullYear();\n const monthList = Array(12).keys();\n const formatter = new Intl.DateTimeFormat(locale, {\n month: 'long',\n });\n const getMonthName = (monthIndex: number) =>\n formatter.format(new Date(year, monthIndex));\n\n return Array.from(monthList, getMonthName);\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';\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 calendarButtonTooltip: 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};\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 calendarButtonTooltip,\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 ...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 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 append={\n !hideCalendarButton && (\n <Tooltip\n placement=\"top\"\n content={calendarButtonTooltip}\n disableHoverListener={disabled}\n disableFocusListener={disabled}\n >\n <IconButton\n id={calendarButtonId}\n type=\"button\"\n onClick={handleOnClickCalendarButton}\n tabIndex={calendarGUIIsOpen() ? -1 : 0}\n >\n <CalendarIcon />\n </IconButton>\n </Tooltip>\n )\n }\n {...rest}\n />\n );\n },\n);\n\nconst mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\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 ved hover på «Åpne kalender»-knappen\n */\n calendarButtonTooltip?: 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 // For testing\n 'data-cy'?: any;\n} & Omit<\n ReactDatePickerProps,\n 'selected' | 'customInput' | 'onChangeRaw' | 'dateFormat' | 'locale'\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 calendarButtonTooltip = 'Åpne\\xa0kalender',\n hideCalendarButton = false,\n hideCalendar = false,\n hideValidation = false,\n weekLabel = 'uke',\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 // this focus function will fail if both an inline and a non-inline calendar is present in the same document\n const setFocusToCalendarGUI = () => {\n if (inline || hideCalendar || datePickerGUIIsOpen()) return;\n // 1 frame delay to allow calendar to spawn\n requestAnimationFrame(() => {\n const dateToSetFocusTo = selectedDate\n ? (document.getElementsByClassName(\n 'eds-datepicker__calender__day--selected',\n )[0] as HTMLElement | null)\n : (document.getElementsByClassName(\n 'eds-datepicker__calender__day--today',\n )[0] as HTMLElement | null);\n if (dateToSetFocusTo !== null) dateToSetFocusTo.focus();\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 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 />\n )}\n customInput={\n <DatePickerInput\n style={style}\n label={label}\n inputPlaceholder={placeholder}\n calendarButtonTooltip={calendarButtonTooltip}\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 from 'react';\nimport {\n default as ReactDatepicker,\n ReactDatePickerProps,\n registerLocale,\n} from 'react-datepicker';\nimport classNames from 'classnames';\nimport {\n BaseFormControl,\n useInputGroupContext,\n VariantType,\n} from '@entur/form';\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\nimport { nb } from 'date-fns/locale';\nimport { add, sub } from 'date-fns';\nimport * as Popper from '@popperjs/core';\nimport './TimePicker.scss';\nregisterLocale('nb', nb);\n\nexport type TimePickerProps = {\n /** Hva som er den valgte datoen */\n selectedTime?: Date;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event>,\n ) => void;\n /** Placeholder om ingen dato er valgt\n * @default \"Velg tid\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over TimePicker */\n label: string;\n /** Varselmelding, som vil komme under TimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n style?: React.CSSProperties;\n labelTooltip?: React.ReactNode;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Kalles ved klikk på pil venstre i TimePicker\n * @default Trekker fra 30 minutter av den valgte tiden\n */\n onLeftArrowClick?: (selectedTime?: Date | null, e?: React.MouseEvent) => void;\n /** Kalles ved klikk på pil høyre i TimePicker\n * @default Legger til 30 minutter av den valgte tiden\n */\n onRightArrowClick?: (\n selectedTime?: Date | null,\n e?: React.MouseEvent,\n ) => void;\n} & ReactDatePickerProps;\n\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n selectedTime = null,\n onChange,\n placeholder = 'Velg tid',\n disabled,\n className,\n style,\n label,\n labelTooltip,\n feedback,\n variant,\n disableLabelAnimation,\n locale = 'nb',\n onLeftArrowClick = (selectedTime, event) =>\n selectedTime && onChange(sub(selectedTime, { minutes: 30 }), event),\n onRightArrowClick = (selectedTime, event) =>\n selectedTime && onChange(add(selectedTime, { minutes: 30 }), event),\n ...rest\n },\n ref,\n ) => {\n const timepickerId = useRandomId('eds-timepicker');\n return (\n <BaseFormControl\n style={style}\n ref={ref}\n label={label}\n labelId={timepickerId}\n labelTooltip={labelTooltip}\n variant={variant}\n feedback={feedback}\n disableLabelAnimation={disableLabelAnimation}\n className=\"eds-timepicker-form-control\"\n disabled={disabled}\n prepend={\n <TimePickerArrowButton\n direction=\"left\"\n tabIndex={-1}\n onClick={(e: React.MouseEvent) => onLeftArrowClick(selectedTime, e)}\n disabled={disabled}\n />\n }\n >\n <TimePickerBase\n selectedTime={selectedTime}\n onChange={onChange}\n placeholder={placeholder}\n className={className}\n locale={locale}\n ariaLabelledBy={timepickerId}\n disabled={disabled}\n {...rest}\n />\n <TimePickerArrowButton\n direction=\"right\"\n tabIndex={-1}\n onClick={(e: React.MouseEvent) => onRightArrowClick(selectedTime, e)}\n disabled={disabled}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TimePickerBaseProps = {\n /** Hva som er den valgte datoen */\n selectedTime?: Date | null;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event>,\n ) => void;\n /** Placeholder om ingen dato er valgt\n * @default \"Velg tid\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n} & ReactDatePickerProps;\n\nconst POPPER_MODIFIERS: Popper.StrictModifiers[] = [\n {\n name: 'offset',\n enabled: true,\n options: {\n offset: [0, 0],\n },\n },\n];\nconst TimePickerBase: React.FC<TimePickerBaseProps> = ({\n className,\n onChange,\n selectedTime,\n placeholder,\n timeFormat = 'HH:mm',\n dateFormat = ['HH:mm', 'HHmm'],\n ...rest\n}) => {\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (selectedTime) {\n setFiller && !isTimepickerFilled && setFiller(true);\n }\n });\n\n React.useEffect(() => {\n if (selectedTime) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [selectedTime, setFiller, isTimepickerFilled]);\n\n const handleChange = (date: any, event: any) => {\n if (date) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(date, event);\n }\n };\n return (\n <ReactDatepicker\n className={classNames(\n 'eds-form-control',\n 'eds-timepicker__input',\n className,\n )}\n calendarClassName=\"eds-timepicker\"\n selected={selectedTime}\n onChange={handleChange}\n dateFormat={dateFormat}\n timeFormat={timeFormat}\n showTimeSelect\n showTimeInput={true}\n showTimeSelectOnly\n showPopperArrow={false}\n placeholderText={placeholder}\n popperClassName=\"eds-datepicker__popper\"\n popperModifiers={POPPER_MODIFIERS}\n open={false}\n {...rest}\n />\n );\n};\n\ntype TimePickerArrowButtonProps = {\n direction: 'left' | 'right';\n} & React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n>;\n\nconst TimePickerArrowButton: React.FC<TimePickerArrowButtonProps> = ({\n direction,\n ...rest\n}) => {\n return (\n <button\n className={classNames(\n 'eds-timepicker__arrowbutton',\n `eds-timepicker__arrowbutton--${direction}`,\n )}\n type=\"button\"\n {...rest}\n >\n {direction === 'left' ? <LeftArrowIcon /> : <RightArrowIcon />}\n </button>\n );\n};\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { ClockIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\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 /** 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 <ClockIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeTimePicker = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerProps\n>(\n (\n {\n className,\n style,\n onChange,\n label,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <ClockIcon />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativetimepickerId = 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={nativetimepickerId}\n disableLabelAnimation={disableLabelAnimation}\n >\n <NativeTimePickerBase\n onChange={onChange}\n aria-labelledby={nativetimepickerId}\n ref={ref}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeTimePickerBaseProps = {\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeTimePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerBaseProps\n>(({ onChange, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = rest.variant || contextVariant;\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isTimepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isTimepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"time\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('datepicker', 'form', 'icons');\n\nexport * from './DatePicker';\nexport * from './NativeDatePicker';\nexport * from './TimePicker';\nexport * from './NativeTimePicker';\n"],"names":["DatePickerHeader","date","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","monthNames","getMonthList","React","className","IconButton","type","onClick","disabled","LeftArrowIcon","Heading3","getMonth","getFullYear","RightArrowIcon","locale","year","Date","monthList","Array","keys","formatter","Intl","DateTimeFormat","month","getMonthName","monthIndex","format","from","DatePickerInput","forwardRef","ref","style","label","inputPlaceholder","prepend","feedback","variant","calendarButtonTooltip","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","rest","useEffect","current","addEventListener","handleOnKeyDown","handleOnBlur","handleOnFocus","removeEventListener","event","requestAnimationFrame","select","handleOnClickInputField","handleOnClickCalendarButton","TextField","placeholder","mergeRefs","append","Tooltip","placement","content","disableHoverListener","disableFocusListener","id","tabIndex","CalendarIcon","refs","node","registerLocale","nb","DatePicker","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","validationFeedback","validationVariant","hideCalendar","hideValidation","weekLabel","open","datepickerId","useRandomId","datepickerRef","useRef","calendarButton","document","getElementById","useState","showValidation","setShowValidation","shouldFocusOnCalendarButtonAfterSelect","validateInput","handleOnChange","focus","key","datePickerGUIIsOpen","forceUpdateInputFormat","focusAndSelectInputField","handleOnClickOutside","handleOnBlurInput","inputValue","value","inputValueParsedWithAllDateFormats","map","parse","parsedDateFromInputIsTheSameAsSelectedDate","some","dateFormat","isSameDay","getFeedbackAndVariant","undefined","setState","setOpen","dateToSetFocusTo","getElementsByClassName","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","TimePicker","selectedTime","labelTooltip","onLeftArrowClick","sub","minutes","onRightArrowClick","add","timepickerId","TimePickerArrowButton","direction","e","TimePickerBase","POPPER_MODIFIERS","name","enabled","options","offset","timeFormat","isTimepickerFilled","showTimeSelect","showTimeInput","showTimeSelectOnly","placeholderText","popperClassName","popperModifiers","NativeTimePicker","ClockIcon","nativetimepickerId","NativeTimePickerBase","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");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("react-datepicker/dist/react-datepicker.css");var f=s(t),m=s(a),p=s(l);function b(){return b=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},b.apply(this,arguments)}function v(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}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function y(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(a)return(a=a.call(e)).next.bind(a);if(Array.isArray(e)||(a=function(e,t){if(e){if("string"==typeof e)return h(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?h(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var k=function(e){var t,a=e.date,n=e.decreaseMonth,r=e.increaseMonth,l=e.prevMonthButtonDisabled,u=e.nextMonthButtonDisabled,c=function(e){void 0===e&&(e="nb");var t=(new Date).getFullYear(),a=Array(12).keys(),n=new Intl.DateTimeFormat(e,{month:"long"});return Array.from(a,(function(e){return n.format(new Date(t,e))}))}();return f.default.createElement("div",{className:"eds-datepicker__calender__header"},f.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--left",onClick:n,disabled:l},f.default.createElement(o.LeftArrowIcon,null)),f.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},c[null!=(t=null==a?void 0:a.getMonth())?t:0]),f.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},null==a?void 0:a.getFullYear()),f.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--right",onClick:r,disabled:u},f.default.createElement(o.RightArrowIcon,null)))},g=["style","label","inputPlaceholder","prepend","feedback","variant","disabled","calendarButtonTooltip","hideCalendarButton","disableLabelAnimation","inputRef","forwardRef","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","placeholder"],C=f.default.forwardRef((function(e,t){var a=e.style,n=e.label,r=e.inputPlaceholder,l=e.prepend,i=e.feedback,s=e.variant,m=e.disabled,p=e.calendarButtonTooltip,h=e.hideCalendarButton,y=e.disableLabelAnimation,k=e.inputRef,C=e.forwardRef,w=e.toggleCalendarGUI,E=e.onKeyDownInput,I=e.onBlurInput,A=e.selectedDate,L=v(e,g);function D(e){E(e)}function N(e){I(e)}function F(){setTimeout((function(){var e;return null==(e=k.current)?void 0:e.select()}),5)}return f.default.useEffect((function(){var e,t,a;return null==(e=k.current)||e.addEventListener("keydown",D),null==(t=k.current)||t.addEventListener("blur",N),null==(a=k.current)||a.addEventListener("focus",F),function(){var e,t,a;null==(e=k.current)||e.removeEventListener("keydown",D),null==(t=k.current)||t.removeEventListener("blur",N),null==(a=k.current)||a.removeEventListener("focus",F)}}),[k,A]),f.default.createElement(u.TextField,b({style:a,label:n,placeholder:r,prepend:l,feedback:i,variant:s,disableLabelAnimation:y,ref:_(t,k,C),append:!h&&f.default.createElement(c.Tooltip,{placement:"top",content:p,disableHoverListener:m,disableFocusListener:m},f.default.createElement(d.IconButton,{type:"button",onClick:w},f.default.createElement(o.CalendarIcon,null)))},L))})),_=function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return function(e){for(var a,n=y(t);!(a=n()).done;){var r=a.value;"function"==typeof r?r(e):r&&(r.current=e)}}},w=["style","className","selectedDate","label","placeholder","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","disabled","prepend","feedback","variant","validationFeedback","validationVariant","disableLabelAnimation","calendarButtonTooltip","hideCalendarButton","hideCalendar","hideValidation","weekLabel","locale","open"];a.registerLocale("nb",r.nb);var E=f.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,h=a.onChange,y=a.onKeyDown,g=void 0===y?function(){return null}:y,_=a.dateFormats,E=void 0===_?["dd.MM.yyyy","ddMMyyyy","dd/MM/yyyy","ddMMyy"]:_,I=a.minDate,A=a.maxDate,L=a.inline,D=void 0!==L&&L,N=a.disabled,F=a.prepend,M=a.feedback,B=void 0===M?"":M,T=a.variant,R=a.validationFeedback,x=void 0===R?"Ugyldig dato":R,O=a.validationVariant,q=void 0===O?"error":O,P=a.disableLabelAnimation,S=void 0!==P&&P,H=a.calendarButtonTooltip,j=void 0===H?"Åpne kalender":H,V=a.hideCalendarButton,G=void 0!==V&&V,K=a.hideCalendar,U=void 0!==K&&K,Y=a.hideValidation,W=void 0!==Y&&Y,$=a.weekLabel,z=void 0===$?"uke":$,J=a.locale,Q=void 0===J?r.nb:J,X=a.open,Z=v(a,w),ee=e.useRandomId("eds-datepicker"),te=t.useState(!1),ae=te[0],ne=te[1],re=t.useRef(null),le=f.default.useRef(null);f.default.useEffect((function(){return oe()}),[d]);var oe=function(){var e;ne(!1);var t=null==(e=le.current)?void 0:e.value;if(t){var a=E.map((function(e){return n.parse(t,e,new Date,{locale:Q})})),r=d&&a.some((function(e){return n.isSameDay(e,d)}));ne(!r)}},ie=function(){return B?{feedback:B,variant:T}:!W&&ae?{feedback:x,variant:q}:{feedback:"",variant:void 0}},de=function(){var e;return null==(e=re.current)?void 0:e.setState({inputValue:null})};return f.default.createElement(f.default.Fragment,null,f.default.createElement(m.default,b({selected:d,minDate:I,maxDate:A,dateFormat:E,showWeekNumbers:!0,weekLabel:z,onChange:h,onClickOutside:oe,id:ee,ariaLabelledBy:ee,showPopperArrow:!1,locale:Q,inline:D,disabled:N,preventOpenOnFocus:!0,open:!U&&X,ref:re,calendarClassName:"eds-datepicker__calender",dayClassName:function(){return"eds-datepicker__calender__day"},weekDayClassName:function(){return"eds-datepicker__calender__day-name"},className:p.default(i,"eds-datepicker__input"),highlightDates:[{"eds-datepicker__calender__day--today":[new Date]},{"eds-datepicker__calender__day--selected":d?[d]:[]}],renderCustomHeader:function(e){return f.default.createElement(k,{date:e.date,changeYear:e.changeYear,changeMonth:e.changeMonth,increaseMonth:e.increaseMonth,decreaseMonth:e.decreaseMonth,prevMonthButtonDisabled:e.prevMonthButtonDisabled,nextMonthButtonDisabled:e.nextMonthButtonDisabled})},customInput:f.default.createElement(C,{style:o,label:u,inputPlaceholder:s,calendarButtonTooltip:j,prepend:F,feedback:ie().feedback,variant:ie().variant,inputRef:le,forwardRef:l,onKeyDownInput:function(e){var t,a=!(null!=(t=re.current)&&t.isCalendarOpen());ne(!1),"Enter"===e.key?(oe(),setTimeout((function(){var e;null==(e=le.current)||e.select()}),5),de()):"Tab"===e.key&&a&&(oe(),de()),g(e)},onBlurInput:function(){var e;return!(null!=(e=re.current)&&e.isCalendarOpen())&&oe()},onFocus:void 0,toggleCalendarGUI:function(){var e,t;return null==(e=re.current)?void 0:e.setOpen(!(null!=(t=re.current)&&t.isCalendarOpen()))},disableLabelAnimation:S,hideCalendarButton:G,selectedDate:d})},Z)))})),I=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],A=["onChange","variant","value"],L=f.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,m=t.prepend,p=void 0===m?f.default.createElement(o.DateIcon,{inline:!0}):m,h=v(t,I),y=e.useRandomId("eds-nativetimepicker");return f.default.createElement(u.BaseFormControl,{style:r,className:n,prepend:p,label:l,feedback:d,variant:c,labelId:y,disableLabelAnimation:s,isFilled:!0},f.default.createElement(D,b({onChange:i,"aria-labelledby":y,ref:a,variant:c},h)))})),D=f.default.forwardRef((function(t,a){var n=t.onChange,r=t.variant,l=t.value,o=v(t,A),i=u.useVariant(),d=r||i,c=u.useInputGroupContext(),s=c.isFilled,m=c.setFilled;return e.useOnMount((function(){m&&!s&&m(!0)})),f.default.useEffect((function(){l?m&&!s&&m(!0):m&&s&&m(!1)}),[l,m,s]),f.default.createElement("input",b({ref:a,"aria-invalid":"error"===d,type:"date",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?m&&!s&&m(!0):m&&s&&m(!1),n&&n(e)},value:l},o))})),N=["selectedTime","onChange","placeholder","disabled","className","style","label","labelTooltip","feedback","variant","disableLabelAnimation","locale","onLeftArrowClick","onRightArrowClick"],F=["className","onChange","selectedTime","placeholder","timeFormat","dateFormat"],M=["direction"];a.registerLocale("nb",r.nb);var B=f.default.forwardRef((function(t,a){var r=t.selectedTime,l=void 0===r?null:r,o=t.onChange,i=t.placeholder,d=void 0===i?"Velg tid":i,c=t.disabled,s=t.className,m=t.style,p=t.label,h=t.labelTooltip,y=t.feedback,k=t.variant,g=t.disableLabelAnimation,C=t.locale,_=void 0===C?"nb":C,w=t.onLeftArrowClick,E=void 0===w?function(e,t){return e&&o(n.sub(e,{minutes:30}),t)}:w,I=t.onRightArrowClick,A=void 0===I?function(e,t){return e&&o(n.add(e,{minutes:30}),t)}:I,L=v(t,N),D=e.useRandomId("eds-timepicker");return f.default.createElement(u.BaseFormControl,{style:m,ref:a,label:p,labelId:D,labelTooltip:h,variant:k,feedback:y,disableLabelAnimation:g,className:"eds-timepicker-form-control",disabled:c,prepend:f.default.createElement(x,{direction:"left",tabIndex:-1,onClick:function(e){return E(l,e)},disabled:c})},f.default.createElement(R,b({selectedTime:l,onChange:o,placeholder:d,className:s,locale:_,ariaLabelledBy:D,disabled:c},L)),f.default.createElement(x,{direction:"right",tabIndex:-1,onClick:function(e){return A(l,e)},disabled:c}))})),T=[{name:"offset",enabled:!0,options:{offset:[0,0]}}],R=function(t){var a=t.className,n=t.onChange,r=t.selectedTime,l=t.placeholder,o=t.timeFormat,i=void 0===o?"HH:mm":o,d=t.dateFormat,c=void 0===d?["HH:mm","HHmm"]:d,s=v(t,F),h=u.useInputGroupContext(),y=h.isFilled,k=h.setFilled;return e.useOnMount((function(){r&&k&&!y&&k(!0)})),f.default.useEffect((function(){r?k&&!y&&k(!0):k&&y&&k(!1)}),[r,k,y]),f.default.createElement(m.default,b({className:p.default("eds-form-control","eds-timepicker__input",a),calendarClassName:"eds-timepicker",selected:r,onChange:function(e,t){e?k&&!y&&k(!0):k&&y&&k(!1),n&&n(e,t)},dateFormat:c,timeFormat:i,showTimeSelect:!0,showTimeInput:!0,showTimeSelectOnly:!0,showPopperArrow:!1,placeholderText:l,popperClassName:"eds-datepicker__popper",popperModifiers:T,open:!1},s))},x=function(e){var t=e.direction,a=v(e,M);return f.default.createElement("button",b({className:p.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+t),type:"button"},a),f.default.createElement("left"===t?o.LeftArrowIcon:o.RightArrowIcon,null))},O=["className","style","onChange","label","feedback","variant","disableLabelAnimation","prepend"],q=["onChange","value"],P=f.default.forwardRef((function(t,a){var n=t.className,r=t.style,l=t.onChange,i=t.label,d=t.feedback,c=t.variant,s=t.disableLabelAnimation,m=t.prepend,p=void 0===m?f.default.createElement(o.ClockIcon,null):m,h=v(t,O),y=e.useRandomId("eds-nativetimepicker");return f.default.createElement(u.BaseFormControl,{style:r,className:n,prepend:p,label:i,feedback:d,variant:c,labelId:y,disableLabelAnimation:s},f.default.createElement(S,b({onChange:l,"aria-labelledby":y,ref:a},h)))})),S=f.default.forwardRef((function(t,a){var n=t.onChange,r=t.value,l=v(t,q),o=u.useVariant(),i=l.variant||o,d=u.useInputGroupContext(),c=d.isFilled,s=d.setFilled;return e.useOnMount((function(){s&&!c&&s(!0)})),f.default.useEffect((function(){r?s&&!c&&s(!0):s&&c&&s(!1)}),[r,s,c]),f.default.createElement("input",b({ref:a,"aria-invalid":"error"===i,type:"time",className:"eds-form-control eds-native-date-picker",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=L,exports.NativeTimePicker=P,exports.TimePicker=B;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("react-datepicker"),a=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");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("react-datepicker/dist/react-datepicker.css");var f=s(t),m=s(n),p=s(l);function b(){return b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},b.apply(this,arguments)}function v(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(r[n]=e[n]);return r}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function y(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var k=function(e){var t,n=e.date,a=e.decreaseMonth,r=e.increaseMonth,l=e.prevMonthButtonDisabled,u=e.nextMonthButtonDisabled,c=function(e){void 0===e&&(e="nb");var t=(new Date).getFullYear(),n=Array(12).keys(),a=new Intl.DateTimeFormat(e,{month:"long"});return Array.from(n,(function(e){return a.format(new Date(t,e))}))}();return f.default.createElement("div",{className:"eds-datepicker__calender__header"},f.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--left",onClick:a,disabled:l},f.default.createElement(o.LeftArrowIcon,null)),f.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},c[null!=(t=null==n?void 0:n.getMonth())?t:0]),f.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},null==n?void 0:n.getFullYear()),f.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--right",onClick:r,disabled:u},f.default.createElement(o.RightArrowIcon,null)))},g=["style","label","inputPlaceholder","prepend","feedback","variant","disabled","calendarButtonTooltip","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","forwardRef","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","placeholder","onClick"],C=f.default.forwardRef((function(e,t){var n=e.style,a=e.label,r=e.inputPlaceholder,l=e.prepend,i=e.feedback,s=e.variant,m=e.disabled,p=e.calendarButtonTooltip,h=e.hideCalendarButton,y=e.disableLabelAnimation,k=e.inputRef,C=e.calendarButtonId,I=e.forwardRef,w=e.toggleCalendarGUI,E=e.onKeyDownInput,A=e.onBlurInput,F=e.selectedDate,B=e.setFocusToCalendarGUI,L=e.setShouldFocusOnCalendarButtonAfterSelect,N=e.calendarGUIIsOpen,D=e.onClick,M=v(e,g);function T(e){E(e)}function x(e){A(e)}f.default.useEffect((function(){var e,t,n;return null==(e=k.current)||e.addEventListener("keydown",T),null==(t=k.current)||t.addEventListener("blur",x),null==(n=k.current)||n.addEventListener("focus",O),function(){var e,t,n;null==(e=k.current)||e.removeEventListener("keydown",T),null==(t=k.current)||t.removeEventListener("blur",x),null==(n=k.current)||n.removeEventListener("focus",O)}}),[k,F]);var O=function(){return requestAnimationFrame((function(){var e;return null==(e=k.current)?void 0:e.select()}))};return f.default.createElement(u.TextField,b({style:n,label:a,placeholder:r,prepend:l,feedback:i,variant:s,disableLabelAnimation:y,ref:_(t,k,I),onClick:function(e){L(!1),D&&D(e)},append:!h&&f.default.createElement(c.Tooltip,{placement:"top",content:p,disableHoverListener:m,disableFocusListener:m},f.default.createElement(d.IconButton,{id:C,type:"button",onClick:function(){w(),B(),L(!0)},tabIndex:N()?-1:0},f.default.createElement(o.CalendarIcon,null)))},M))})),_=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){for(var n,a=y(t);!(n=a()).done;){var r=n.value;"function"==typeof r?r(e):r&&(r.current=e)}}},I=["style","className","selectedDate","label","placeholder","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","disabled","prepend","feedback","variant","validationFeedback","validationVariant","disableLabelAnimation","calendarButtonTooltip","hideCalendarButton","hideCalendar","hideValidation","weekLabel","locale","open"];n.registerLocale("nb",r.nb);var w=f.default.forwardRef((function(n,l){var o=n.style,i=n.className,d=n.selectedDate,u=n.label,c=n.placeholder,s=void 0===c?"dd.mm.yyyy":c,h=n.onChange,y=n.onKeyDown,g=void 0===y?function(){return null}:y,_=n.dateFormats,w=void 0===_?["dd.MM.yyyy","ddMMyyyy","dd/MM/yyyy","ddMMyy"]:_,E=n.minDate,A=n.maxDate,F=n.inline,B=void 0!==F&&F,L=n.disabled,N=n.prepend,D=n.feedback,M=void 0===D?"":D,T=n.variant,x=n.validationFeedback,O=void 0===x?"Ugyldig dato":x,R=n.validationVariant,S=void 0===R?"error":R,q=n.disableLabelAnimation,G=void 0!==q&&q,P=n.calendarButtonTooltip,U=void 0===P?"Åpne kalender":P,H=n.hideCalendarButton,j=void 0!==H&&H,V=n.hideCalendar,K=void 0!==V&&V,Y=n.hideValidation,W=void 0!==Y&&Y,$=n.weekLabel,z=void 0===$?"uke":$,J=n.locale,Q=void 0===J?r.nb:J,X=n.open,Z=v(n,I),ee=e.useRandomId("eds-datepicker"),te=t.useRef(null),ne=f.default.useRef(null),ae=document.getElementById(ee+"-button"),re=t.useState(!1),le=re[0],oe=re[1],ie=t.useState(!1),de=ie[0],ue=ie[1];f.default.useEffect((function(){return ce()}),[d]);var ce=function(){var e;oe(!1);var t=null==(e=ne.current)?void 0:e.value;if(t){var n=w.map((function(e){return a.parse(t,e,new Date,{locale:Q})})),r=d&&n.some((function(e){return a.isSameDay(e,d)}));oe(!r)}},se=function(){return M?{feedback:M,variant:T}:!W&&le?{feedback:O,variant:S}:{feedback:"",variant:void 0}},fe=function(){return requestAnimationFrame((function(){var e;return null==(e=ne.current)?void 0:e.select()}))},me=function(){var e;return null==(e=te.current)?void 0:e.setState({inputValue:null})},pe=function(){var e;return null==(e=te.current)?void 0:e.setOpen(!be())},be=function(){var e;return null==(e=te.current)?void 0:e.isCalendarOpen()};return f.default.createElement(f.default.Fragment,null,f.default.createElement(m.default,b({selected:d,minDate:E,maxDate:A,dateFormat:w,showWeekNumbers:!0,weekLabel:z,onChange:function(e,t){var n;de&&!j?(null==ae||ae.focus(),ue(!1)):null==(n=ne.current)||n.focus(),h(e,t)},onClickOutside:function(){return ue(!1)},id:ee,ariaLabelledBy:ee,showPopperArrow:!1,locale:Q,inline:B,disabled:L,preventOpenOnFocus:!0,open:!K&&X,ref:te,calendarClassName:"eds-datepicker__calender",dayClassName:function(){return"eds-datepicker__calender__day"},weekDayClassName:function(){return"eds-datepicker__calender__day-name"},className:p.default(i,"eds-datepicker__input"),highlightDates:[{"eds-datepicker__calender__day--today":[new Date]},{"eds-datepicker__calender__day--selected":d?[d]:[]}],renderCustomHeader:function(e){return f.default.createElement(k,{date:e.date,changeYear:e.changeYear,changeMonth:e.changeMonth,increaseMonth:e.increaseMonth,decreaseMonth:e.decreaseMonth,prevMonthButtonDisabled:e.prevMonthButtonDisabled,nextMonthButtonDisabled:e.nextMonthButtonDisabled})},customInput:f.default.createElement(C,{style:o,label:u,inputPlaceholder:s,calendarButtonTooltip:U,prepend:N,feedback:se().feedback,variant:se().variant,inputRef:ne,calendarButtonId:ee+"-button",forwardRef:l,onKeyDownInput:function(e){oe(!1),"Enter"===e.key?(be()||(ce(),me()),fe()):"Tab"===e.key&&be()?me():"Escape"===e.key&&(me(),fe(),be()&&pe()),g(e)},onBlurInput:function(){be()||(ce(),me())},onFocus:void 0,toggleCalendarGUI:pe,setFocusToCalendarGUI:function(){B||K||be()||(requestAnimationFrame((function(){var e=d?document.getElementsByClassName("eds-datepicker__calender__day--selected")[0]:document.getElementsByClassName("eds-datepicker__calender__day--today")[0];null!==e&&e.focus()})),ue(!0),oe(!1))},setShouldFocusOnCalendarButtonAfterSelect:ue,calendarGUIIsOpen:be,disableLabelAnimation:G,hideCalendarButton:j,selectedDate:d})},Z)))})),E=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],A=["onChange","variant","value"],F=f.default.forwardRef((function(t,n){var a=t.className,r=t.style,l=t.label,i=t.onChange,d=t.feedback,c=t.variant,s=t.disableLabelAnimation,m=t.prepend,p=void 0===m?f.default.createElement(o.DateIcon,{inline:!0}):m,h=v(t,E),y=e.useRandomId("eds-nativetimepicker");return f.default.createElement(u.BaseFormControl,{style:r,className:a,prepend:p,label:l,feedback:d,variant:c,labelId:y,disableLabelAnimation:s,isFilled:!0},f.default.createElement(B,b({onChange:i,"aria-labelledby":y,ref:n,variant:c},h)))})),B=f.default.forwardRef((function(t,n){var a=t.onChange,r=t.variant,l=t.value,o=v(t,A),i=u.useVariant(),d=r||i,c=u.useInputGroupContext(),s=c.isFilled,m=c.setFilled;return e.useOnMount((function(){m&&!s&&m(!0)})),f.default.useEffect((function(){l?m&&!s&&m(!0):m&&s&&m(!1)}),[l,m,s]),f.default.createElement("input",b({ref:n,"aria-invalid":"error"===d,type:"date",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?m&&!s&&m(!0):m&&s&&m(!1),a&&a(e)},value:l},o))})),L=["selectedTime","onChange","placeholder","disabled","className","style","label","labelTooltip","feedback","variant","disableLabelAnimation","locale","onLeftArrowClick","onRightArrowClick"],N=["className","onChange","selectedTime","placeholder","timeFormat","dateFormat"],D=["direction"];n.registerLocale("nb",r.nb);var M=f.default.forwardRef((function(t,n){var r=t.selectedTime,l=void 0===r?null:r,o=t.onChange,i=t.placeholder,d=void 0===i?"Velg tid":i,c=t.disabled,s=t.className,m=t.style,p=t.label,h=t.labelTooltip,y=t.feedback,k=t.variant,g=t.disableLabelAnimation,C=t.locale,_=void 0===C?"nb":C,I=t.onLeftArrowClick,w=void 0===I?function(e,t){return e&&o(a.sub(e,{minutes:30}),t)}:I,E=t.onRightArrowClick,A=void 0===E?function(e,t){return e&&o(a.add(e,{minutes:30}),t)}:E,F=v(t,L),B=e.useRandomId("eds-timepicker");return f.default.createElement(u.BaseFormControl,{style:m,ref:n,label:p,labelId:B,labelTooltip:h,variant:k,feedback:y,disableLabelAnimation:g,className:"eds-timepicker-form-control",disabled:c,prepend:f.default.createElement(O,{direction:"left",tabIndex:-1,onClick:function(e){return w(l,e)},disabled:c})},f.default.createElement(x,b({selectedTime:l,onChange:o,placeholder:d,className:s,locale:_,ariaLabelledBy:B,disabled:c},F)),f.default.createElement(O,{direction:"right",tabIndex:-1,onClick:function(e){return A(l,e)},disabled:c}))})),T=[{name:"offset",enabled:!0,options:{offset:[0,0]}}],x=function(t){var n=t.className,a=t.onChange,r=t.selectedTime,l=t.placeholder,o=t.timeFormat,i=void 0===o?"HH:mm":o,d=t.dateFormat,c=void 0===d?["HH:mm","HHmm"]:d,s=v(t,N),h=u.useInputGroupContext(),y=h.isFilled,k=h.setFilled;return e.useOnMount((function(){r&&k&&!y&&k(!0)})),f.default.useEffect((function(){r?k&&!y&&k(!0):k&&y&&k(!1)}),[r,k,y]),f.default.createElement(m.default,b({className:p.default("eds-form-control","eds-timepicker__input",n),calendarClassName:"eds-timepicker",selected:r,onChange:function(e,t){e?k&&!y&&k(!0):k&&y&&k(!1),a&&a(e,t)},dateFormat:c,timeFormat:i,showTimeSelect:!0,showTimeInput:!0,showTimeSelectOnly:!0,showPopperArrow:!1,placeholderText:l,popperClassName:"eds-datepicker__popper",popperModifiers:T,open:!1},s))},O=function(e){var t=e.direction,n=v(e,D);return f.default.createElement("button",b({className:p.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+t),type:"button"},n),f.default.createElement("left"===t?o.LeftArrowIcon:o.RightArrowIcon,null))},R=["className","style","onChange","label","feedback","variant","disableLabelAnimation","prepend"],S=["onChange","value"],q=f.default.forwardRef((function(t,n){var a=t.className,r=t.style,l=t.onChange,i=t.label,d=t.feedback,c=t.variant,s=t.disableLabelAnimation,m=t.prepend,p=void 0===m?f.default.createElement(o.ClockIcon,null):m,h=v(t,R),y=e.useRandomId("eds-nativetimepicker");return f.default.createElement(u.BaseFormControl,{style:r,className:a,prepend:p,label:i,feedback:d,variant:c,labelId:y,disableLabelAnimation:s},f.default.createElement(G,b({onChange:l,"aria-labelledby":y,ref:n},h)))})),G=f.default.forwardRef((function(t,n){var a=t.onChange,r=t.value,l=v(t,S),o=u.useVariant(),i=l.variant||o,d=u.useInputGroupContext(),c=d.isFilled,s=d.setFilled;return e.useOnMount((function(){s&&!c&&s(!0)})),f.default.useEffect((function(){r?s&&!c&&s(!0):s&&c&&s(!1)}),[r,s,c]),f.default.createElement("input",b({ref:n,"aria-invalid":"error"===i,type:"time",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?s&&!c&&s(!0):s&&c&&s(!1),a&&a(e)},value:r},l))}));e.warnAboutMissingStyles("datepicker","form","icons"),exports.DatePicker=w,exports.NativeDatePicker=F,exports.NativeTimePicker=q,exports.TimePicker=M;
2
2
  //# sourceMappingURL=datepicker.cjs.production.min.js.map