@entur/datepicker 2.0.9 → 2.1.2

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,29 @@
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.1.2](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.1...@entur/datepicker@2.1.2) (2022-08-24)
7
+
8
+ **Note:** Version bump only for package @entur/datepicker
9
+
10
+ ## [2.1.1](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.1.0...@entur/datepicker@2.1.1) (2022-08-12)
11
+
12
+ **Note:** Version bump only for package @entur/datepicker
13
+
14
+ # [2.1.0](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.0.9...@entur/datepicker@2.1.0) (2022-08-09)
15
+
16
+ ### Bug Fixes
17
+
18
+ - **datepicker:** fix current date read wrong on screen reader for mac ([2162571](https://bitbucket.org/enturas/design-system/commits/21625715db0b121c977cdd36e60a014af91f3a01))
19
+ - **datepicker:** fix focus change to calendar not working when no date is selected ([a429843](https://bitbucket.org/enturas/design-system/commits/a4298437d344a36e77eb1ee6a34af7b04c61e036))
20
+ - **datepicker:** fix focus handling for screen readers when using calendar GUI ([be698b3](https://bitbucket.org/enturas/design-system/commits/be698b317748d9f9d6b2da0a9ba5d0a68c2e7a48))
21
+ - **datepicker:** fix selected date outside of month colour ([36bd1c0](https://bitbucket.org/enturas/design-system/commits/36bd1c041867e8959702ce257d515c149a67b2e9))
22
+ - **datepicker:** misc fixes for datepicker when using screen reader ([d076cff](https://bitbucket.org/enturas/design-system/commits/d076cffb01ac2b04369aff2f8abb6c3a27bcd3cc))
23
+
24
+ ### Features
25
+
26
+ - **datepicker:** add alert for screenreader when invalid date is inputed ([f21a0d9](https://bitbucket.org/enturas/design-system/commits/f21a0d9a50eb83ce8e7ae0acc876d2a465ea42d0))
27
+ - **datepicker:** add screen reader labels and props for the labels ([da0617f](https://bitbucket.org/enturas/design-system/commits/da0617f829e4ada05ff0b85f1eb4e8e8950e9fe5))
28
+
6
29
  ## [2.0.9](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.0.8...@entur/datepicker@2.0.9) (2022-08-09)
7
30
 
8
31
  **Note:** Version bump only for package @entur/datepicker
@@ -59,9 +59,13 @@ export declare type DatePickerProps = {
59
59
  */
60
60
  prepend?: React.ReactNode;
61
61
  /**
62
- * Tekst som vises ved hover på «Åpne kalender»-knappen
62
+ * Tekst som vises når kalender ikke er åpen på «Åpne/Lukk kalender»-knappen ved hover
63
63
  */
64
- calendarButtonTooltip?: string;
64
+ calendarButtonTooltipOpen?: string;
65
+ /**
66
+ * Tekst som vises når kalender er åpen på «Åpne/Lukk kalender»-knappen ved hover
67
+ */
68
+ calendarButtonTooltipClose?: string;
65
69
  /** Skjuler knapp for åpning av kalender
66
70
  * @default false
67
71
  */
@@ -78,8 +82,21 @@ export declare type DatePickerProps = {
78
82
  * @default false
79
83
  */
80
84
  inline?: boolean;
85
+ /** Skjermlesertekst for forrige måned-knapen
86
+ * @default "Forrige måned"
87
+ */
88
+ previousMonthAriaLabel?: string;
89
+ /** Skjermlesertekst for neste måned-knapen
90
+ * @default "Neste måned"
91
+ */
92
+ nextMonthAriaLabel?: string;
93
+ /**
94
+ * Skjermlesertekst som leses før dato i kalenderGUI-et
95
+ * @default "Velg"
96
+ */
97
+ chooseDayAriaLabelPrefix?: string;
81
98
  'data-cy'?: any;
82
- } & Omit<ReactDatePickerProps, 'selected' | 'customInput' | 'onChangeRaw' | 'dateFormat' | 'locale'>;
99
+ } & Omit<ReactDatePickerProps, 'selected' | 'customInput' | 'onChangeRaw' | 'dateFormat' | 'locale' | 'previousMonthAriaLabel' | 'nextMonthAriaLabel'>;
83
100
  export declare const DatePicker: React.ForwardRefExoticComponent<{
84
101
  /** Hva som er den valgte datoen */
85
102
  selectedDate: Date | null;
@@ -135,9 +152,13 @@ export declare const DatePicker: React.ForwardRefExoticComponent<{
135
152
  */
136
153
  prepend?: React.ReactNode;
137
154
  /**
138
- * Tekst som vises ved hover på «Åpne kalender»-knappen
155
+ * Tekst som vises når kalender ikke er åpen på «Åpne/Lukk kalender»-knappen ved hover
139
156
  */
140
- calendarButtonTooltip?: string | undefined;
157
+ calendarButtonTooltipOpen?: string | undefined;
158
+ /**
159
+ * Tekst som vises når kalender er åpen på «Åpne/Lukk kalender»-knappen ved hover
160
+ */
161
+ calendarButtonTooltipClose?: string | undefined;
141
162
  /** Skjuler knapp for åpning av kalender
142
163
  * @default false
143
164
  */
@@ -154,5 +175,18 @@ export declare const DatePicker: React.ForwardRefExoticComponent<{
154
175
  * @default false
155
176
  */
156
177
  inline?: boolean | undefined;
178
+ /** Skjermlesertekst for forrige måned-knapen
179
+ * @default "Forrige måned"
180
+ */
181
+ previousMonthAriaLabel?: string | undefined;
182
+ /** Skjermlesertekst for neste måned-knapen
183
+ * @default "Neste måned"
184
+ */
185
+ nextMonthAriaLabel?: string | undefined;
186
+ /**
187
+ * Skjermlesertekst som leses før dato i kalenderGUI-et
188
+ * @default "Velg"
189
+ */
190
+ chooseDayAriaLabelPrefix?: string | undefined;
157
191
  'data-cy'?: any;
158
- } & Omit<ReactDatePickerProps<never, undefined>, "selected" | "customInput" | "onChangeRaw" | "dateFormat" | "locale"> & React.RefAttributes<HTMLInputElement>>;
192
+ } & Omit<ReactDatePickerProps<never, undefined>, "selected" | "customInput" | "onChangeRaw" | "dateFormat" | "locale" | "previousMonthAriaLabel" | "nextMonthAriaLabel"> & React.RefAttributes<HTMLInputElement>>;
@@ -1,3 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { ReactDatePickerCustomHeaderProps } from 'react-datepicker';
3
- export declare const DatePickerHeader: ({ date, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, }: Partial<ReactDatePickerCustomHeaderProps>) => JSX.Element;
3
+ declare type DatePickerHeaderProps = {
4
+ nextMonthAriaLabel: string;
5
+ previousMonthAriaLabel: string;
6
+ locale: globalThis.Locale;
7
+ } & Partial<ReactDatePickerCustomHeaderProps>;
8
+ export declare const DatePickerHeader: ({ date, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, nextMonthAriaLabel, previousMonthAriaLabel, locale, }: DatePickerHeaderProps) => JSX.Element;
9
+ export {};
@@ -9,7 +9,8 @@ declare type DatePickerInputProps = {
9
9
  variant?: VariantType;
10
10
  disabled?: boolean;
11
11
  disableLabelAnimation?: boolean;
12
- calendarButtonTooltip: string;
12
+ calendarButtonTooltipOpen: string;
13
+ calendarButtonTooltipClose: string;
13
14
  hideCalendarButton?: boolean;
14
15
  inputRef: React.RefObject<HTMLInputElement>;
15
16
  calendarButtonId: string;
@@ -24,6 +25,7 @@ declare type DatePickerInputProps = {
24
25
  onFocus: undefined;
25
26
  selectedDate: Date | null;
26
27
  placeholder?: null;
28
+ 'aria-labelledby'?: string;
27
29
  };
28
30
  export declare const DatePickerInput: React.ForwardRefExoticComponent<DatePickerInputProps & React.RefAttributes<HTMLInputElement>>;
29
31
  export {};
@@ -99,46 +99,41 @@ var DatePickerHeader = function DatePickerHeader(_ref) {
99
99
  decreaseMonth = _ref.decreaseMonth,
100
100
  increaseMonth = _ref.increaseMonth,
101
101
  prevMonthButtonDisabled = _ref.prevMonthButtonDisabled,
102
- nextMonthButtonDisabled = _ref.nextMonthButtonDisabled;
103
- var monthNames = getMonthList();
102
+ nextMonthButtonDisabled = _ref.nextMonthButtonDisabled,
103
+ nextMonthAriaLabel = _ref.nextMonthAriaLabel,
104
+ previousMonthAriaLabel = _ref.previousMonthAriaLabel,
105
+ locale = _ref.locale;
106
+ var currentMonthIndex = (_date$getMonth = date == null ? void 0 : date.getMonth()) != null ? _date$getMonth : 0;
104
107
  return React__default["default"].createElement("div", {
105
108
  className: "eds-datepicker__calender__header"
106
109
  }, React__default["default"].createElement(button.IconButton, {
107
110
  type: "button",
108
111
  className: "eds-datepicker__calender__header__month-button--left",
109
112
  onClick: decreaseMonth,
110
- disabled: prevMonthButtonDisabled
113
+ disabled: prevMonthButtonDisabled,
114
+ "aria-label": previousMonthAriaLabel + " (" + getMonthName(currentMonthIndex - 1, locale) + ")"
111
115
  }, React__default["default"].createElement(icons.LeftArrowIcon, null)), React__default["default"].createElement(typography.Heading3, {
112
116
  className: "eds-datepicker__calender__header__month-text"
113
- }, monthNames[(_date$getMonth = date == null ? void 0 : date.getMonth()) != null ? _date$getMonth : 0]), React__default["default"].createElement(typography.Heading3, {
117
+ }, getMonthName(currentMonthIndex, locale)), React__default["default"].createElement(typography.Heading3, {
114
118
  className: "eds-datepicker__calender__header__month-text"
115
119
  }, date == null ? void 0 : date.getFullYear()), React__default["default"].createElement(button.IconButton, {
116
120
  type: "button",
117
121
  className: "eds-datepicker__calender__header__month-button--right",
118
122
  onClick: increaseMonth,
119
- disabled: nextMonthButtonDisabled
123
+ disabled: nextMonthButtonDisabled,
124
+ "aria-label": nextMonthAriaLabel + " (" + getMonthName(currentMonthIndex + 1, locale) + ")"
120
125
  }, React__default["default"].createElement(icons.RightArrowIcon, null)));
121
126
  };
122
127
 
123
- function getMonthList(locale) {
124
- if (locale === void 0) {
125
- locale = 'nb';
126
- }
127
-
128
+ function getMonthName(monthIndex, locale) {
128
129
  var year = new Date().getFullYear();
129
- var monthList = Array(12).keys();
130
- var formatter = new Intl.DateTimeFormat(locale, {
130
+ var formatter = new Intl.DateTimeFormat(locale.code, {
131
131
  month: 'long'
132
132
  });
133
-
134
- var getMonthName = function getMonthName(monthIndex) {
135
- return formatter.format(new Date(year, monthIndex));
136
- };
137
-
138
- return Array.from(monthList, getMonthName);
133
+ return formatter.format(new Date(year, monthIndex));
139
134
  }
140
135
 
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"];
136
+ var _excluded$4 = ["style", "label", "inputPlaceholder", "prepend", "feedback", "variant", "disabled", "calendarButtonTooltipOpen", "calendarButtonTooltipClose", "hideCalendarButton", "disableLabelAnimation", "inputRef", "calendarButtonId", "forwardRef", "toggleCalendarGUI", "onKeyDownInput", "onBlurInput", "selectedDate", "setFocusToCalendarGUI", "setShouldFocusOnCalendarButtonAfterSelect", "calendarGUIIsOpen", "placeholder", "onClick", "aria-labelledby"];
142
137
  var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
143
138
  var style = _ref.style,
144
139
  label = _ref.label,
@@ -147,7 +142,8 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
147
142
  feedback = _ref.feedback,
148
143
  variant = _ref.variant,
149
144
  disabled = _ref.disabled,
150
- calendarButtonTooltip = _ref.calendarButtonTooltip,
145
+ calendarButtonTooltipOpen = _ref.calendarButtonTooltipOpen,
146
+ calendarButtonTooltipClose = _ref.calendarButtonTooltipClose,
151
147
  hideCalendarButton = _ref.hideCalendarButton,
152
148
  disableLabelAnimation = _ref.disableLabelAnimation,
153
149
  inputRef = _ref.inputRef,
@@ -205,6 +201,14 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
205
201
  setShouldFocusOnCalendarButtonAfterSelect(true);
206
202
  };
207
203
 
204
+ var calendarButtonAriaLabel = function calendarButtonAriaLabel() {
205
+ var _inputRef$current8;
206
+
207
+ var buttonStateText = calendarGUIIsOpen() ? calendarButtonTooltipClose : calendarButtonTooltipOpen;
208
+ var currentSelectionText = selectedDate ? ((_inputRef$current8 = inputRef.current) == null ? void 0 : _inputRef$current8.value) + " valgt" : 'Ingen dato valgt';
209
+ return buttonStateText + ", " + currentSelectionText;
210
+ };
211
+
208
212
  return React__default["default"].createElement(form.TextField, _extends({
209
213
  style: style,
210
214
  label: label,
@@ -215,16 +219,18 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
215
219
  disableLabelAnimation: disableLabelAnimation,
216
220
  ref: mergeRefs(ref, inputRef, forwardRef),
217
221
  onClick: handleOnClickInputField,
222
+ ariaAlertOnFeedback: true,
218
223
  append: !hideCalendarButton && React__default["default"].createElement(tooltip.Tooltip, {
219
224
  placement: "top",
220
- content: calendarButtonTooltip,
225
+ content: calendarGUIIsOpen() ? calendarButtonTooltipClose : calendarButtonTooltipOpen,
221
226
  disableHoverListener: disabled,
222
227
  disableFocusListener: disabled
223
228
  }, React__default["default"].createElement(button.IconButton, {
224
229
  id: calendarButtonId,
225
230
  type: "button",
226
231
  onClick: handleOnClickCalendarButton,
227
- tabIndex: calendarGUIIsOpen() ? -1 : 0
232
+ tabIndex: calendarGUIIsOpen() ? -1 : 0,
233
+ "aria-label": calendarButtonAriaLabel()
228
234
  }, React__default["default"].createElement(icons.CalendarIcon, null)))
229
235
  }, rest));
230
236
  });
@@ -245,7 +251,7 @@ var mergeRefs = function mergeRefs() {
245
251
  };
246
252
  };
247
253
 
248
- var _excluded$3 = ["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"];
254
+ var _excluded$3 = ["style", "className", "selectedDate", "label", "placeholder", "onChange", "onKeyDown", "dateFormats", "minDate", "maxDate", "inline", "disabled", "prepend", "feedback", "variant", "validationFeedback", "validationVariant", "disableLabelAnimation", "calendarButtonTooltipOpen", "calendarButtonTooltipClose", "hideCalendarButton", "hideCalendar", "hideValidation", "weekLabel", "chooseDayAriaLabelPrefix", "previousMonthAriaLabel", "nextMonthAriaLabel", "locale", "open"];
249
255
  ReactDatepicker.registerLocale('nb', locale.nb);
250
256
  var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
251
257
  var style = _ref.style,
@@ -276,8 +282,10 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
276
282
  validationVariant = _ref$validationVarian === void 0 ? 'error' : _ref$validationVarian,
277
283
  _ref$disableLabelAnim = _ref.disableLabelAnimation,
278
284
  disableLabelAnimation = _ref$disableLabelAnim === void 0 ? false : _ref$disableLabelAnim,
279
- _ref$calendarButtonTo = _ref.calendarButtonTooltip,
280
- calendarButtonTooltip = _ref$calendarButtonTo === void 0 ? 'Åpne\xa0kalender' : _ref$calendarButtonTo,
285
+ _ref$calendarButtonTo = _ref.calendarButtonTooltipOpen,
286
+ calendarButtonTooltipOpen = _ref$calendarButtonTo === void 0 ? 'Åpne\xa0kalender' : _ref$calendarButtonTo,
287
+ _ref$calendarButtonTo2 = _ref.calendarButtonTooltipClose,
288
+ calendarButtonTooltipClose = _ref$calendarButtonTo2 === void 0 ? 'Lukk\xa0kalender' : _ref$calendarButtonTo2,
281
289
  _ref$hideCalendarButt = _ref.hideCalendarButton,
282
290
  hideCalendarButton = _ref$hideCalendarButt === void 0 ? false : _ref$hideCalendarButt,
283
291
  _ref$hideCalendar = _ref.hideCalendar,
@@ -286,6 +294,12 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
286
294
  hideValidation = _ref$hideValidation === void 0 ? false : _ref$hideValidation,
287
295
  _ref$weekLabel = _ref.weekLabel,
288
296
  weekLabel = _ref$weekLabel === void 0 ? 'uke' : _ref$weekLabel,
297
+ _ref$chooseDayAriaLab = _ref.chooseDayAriaLabelPrefix,
298
+ chooseDayAriaLabelPrefix = _ref$chooseDayAriaLab === void 0 ? 'Velg' : _ref$chooseDayAriaLab,
299
+ _ref$previousMonthAri = _ref.previousMonthAriaLabel,
300
+ previousMonthAriaLabel = _ref$previousMonthAri === void 0 ? 'Forrige måned' : _ref$previousMonthAri,
301
+ _ref$nextMonthAriaLab = _ref.nextMonthAriaLabel,
302
+ nextMonthAriaLabel = _ref$nextMonthAriaLab === void 0 ? 'Neste måned' : _ref$nextMonthAriaLab,
289
303
  _ref$locale = _ref.locale,
290
304
  locale$1 = _ref$locale === void 0 ? locale.nb : _ref$locale,
291
305
  open = _ref.open,
@@ -411,24 +425,35 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
411
425
  var _datepickerRef$curren2;
412
426
 
413
427
  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
-
428
+ };
416
429
 
417
430
  var setFocusToCalendarGUI = function setFocusToCalendarGUI() {
418
431
  if (inline || hideCalendar || datePickerGUIIsOpen()) return; // 1 frame delay to allow calendar to spawn
419
432
 
420
433
  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();
434
+ var _datepickerRef$curren3;
435
+
436
+ var datepickerGUIWrapper = // @ts-expect-error .calendar does actually exist in ReactDatePicker ref
437
+ (_datepickerRef$curren3 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren3.calendar.componentNode;
438
+ var dateToSetFocusTo = selectedDate ? datepickerGUIWrapper.querySelector('.eds-datepicker__calender__day[tabindex="0"]') : datepickerGUIWrapper.querySelector('.eds-datepicker__calender__day[aria-current="date"]');
439
+
440
+ if (dateToSetFocusTo !== null) {
441
+ var _datepickerRef$curren4;
442
+
443
+ (_datepickerRef$curren4 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren4.setBlur();
444
+ dateToSetFocusTo.focus({
445
+ preventScroll: true
446
+ });
447
+ }
423
448
  });
424
449
  setShouldFocusOnCalendarButtonAfterSelect(true);
425
450
  setShowValidation(false);
426
451
  };
427
452
 
428
453
  var datePickerGUIIsOpen = function datePickerGUIIsOpen() {
429
- var _datepickerRef$curren3;
454
+ var _datepickerRef$curren5;
430
455
 
431
- return (_datepickerRef$curren3 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren3.isCalendarOpen();
456
+ return (_datepickerRef$curren5 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren5.isCalendarOpen();
432
457
  };
433
458
 
434
459
  return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(ReactDatepicker__default["default"], _extends({
@@ -447,6 +472,7 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
447
472
  inline: inline,
448
473
  disabled: disabled,
449
474
  preventOpenOnFocus: true,
475
+ chooseDayAriaLabelPrefix: chooseDayAriaLabelPrefix,
450
476
  open: hideCalendar ? false : open,
451
477
  ref: datepickerRef,
452
478
  calendarClassName: "eds-datepicker__calender",
@@ -477,14 +503,18 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
477
503
  increaseMonth: increaseMonth,
478
504
  decreaseMonth: decreaseMonth,
479
505
  prevMonthButtonDisabled: prevMonthButtonDisabled,
480
- nextMonthButtonDisabled: nextMonthButtonDisabled
506
+ nextMonthButtonDisabled: nextMonthButtonDisabled,
507
+ previousMonthAriaLabel: previousMonthAriaLabel,
508
+ nextMonthAriaLabel: nextMonthAriaLabel,
509
+ locale: locale$1
481
510
  });
482
511
  },
483
512
  customInput: React__default["default"].createElement(DatePickerInput, {
484
513
  style: style,
485
514
  label: label,
486
515
  inputPlaceholder: placeholder,
487
- calendarButtonTooltip: calendarButtonTooltip,
516
+ calendarButtonTooltipOpen: calendarButtonTooltipOpen,
517
+ calendarButtonTooltipClose: calendarButtonTooltipClose,
488
518
  prepend: prepend,
489
519
  feedback: getFeedbackAndVariant().feedback,
490
520
  variant: getFeedbackAndVariant().variant,
@@ -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 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
+ {"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\ntype DatePickerHeaderProps = {\n nextMonthAriaLabel: string;\n previousMonthAriaLabel: string;\n locale: globalThis.Locale;\n} & Partial<ReactDatePickerCustomHeaderProps>;\n\nexport const DatePickerHeader = ({\n date,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n nextMonthAriaLabel,\n previousMonthAriaLabel,\n locale,\n}: DatePickerHeaderProps) => {\n const currentMonthIndex = date?.getMonth() ?? 0;\n return (\n <div className=\"eds-datepicker__calender__header\">\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--left\"\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled}\n aria-label={`${previousMonthAriaLabel} (${getMonthName(\n currentMonthIndex - 1,\n locale,\n )})`}\n >\n <LeftArrowIcon />\n </IconButton>\n\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {getMonthName(currentMonthIndex, locale)}\n </Heading3>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {date?.getFullYear()}\n </Heading3>\n\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--right\"\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled}\n aria-label={`${nextMonthAriaLabel} (${getMonthName(\n currentMonthIndex + 1,\n locale,\n )})`}\n >\n <RightArrowIcon />\n </IconButton>\n </div>\n );\n};\n\nfunction getMonthName(monthIndex: number, locale: globalThis.Locale) {\n const year = new Date().getFullYear();\n const formatter = new Intl.DateTimeFormat(locale.code, {\n month: 'long',\n });\n return formatter.format(new Date(year, monthIndex));\n}\n","import React from 'react';\n\nimport { TextField, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\nimport { CalendarIcon } from '@entur/icons';\n\ntype DatePickerInputProps = {\n style?: React.CSSProperties;\n label: string;\n inputPlaceholder: string;\n prepend?: React.ReactNode;\n feedback?: string;\n variant?: VariantType;\n disabled?: boolean;\n disableLabelAnimation?: boolean;\n calendarButtonTooltipOpen: string;\n calendarButtonTooltipClose: string;\n hideCalendarButton?: boolean;\n inputRef: React.RefObject<HTMLInputElement>;\n calendarButtonId: string;\n forwardRef: React.ForwardedRef<HTMLInputElement>;\n toggleCalendarGUI: () => void;\n setFocusToCalendarGUI: () => void;\n setShouldFocusOnCalendarButtonAfterSelect: React.Dispatch<\n React.SetStateAction<boolean>\n >;\n onKeyDownInput: (event: KeyboardEvent) => any;\n onBlurInput: (event: FocusEvent) => any;\n calendarGUIIsOpen: () => boolean | undefined;\n onClick?: React.MouseEventHandler<HTMLInputElement>; // react-datepicker's onClick prop\n onFocus: undefined; // To prevent open on focus\n selectedDate: Date | null; // Necessary to update component on state change\n placeholder?: null; // override react-datepickers placeholder prop\n 'aria-labelledby'?: string;\n};\n\nexport const DatePickerInput = React.forwardRef<\n HTMLInputElement,\n DatePickerInputProps\n>(\n (\n {\n style,\n label,\n inputPlaceholder,\n prepend,\n feedback,\n variant,\n disabled,\n calendarButtonTooltipOpen,\n calendarButtonTooltipClose,\n hideCalendarButton,\n disableLabelAnimation,\n inputRef,\n calendarButtonId,\n forwardRef,\n toggleCalendarGUI,\n onKeyDownInput,\n onBlurInput,\n selectedDate,\n setFocusToCalendarGUI,\n setShouldFocusOnCalendarButtonAfterSelect,\n calendarGUIIsOpen,\n placeholder, // eslint-disable-line\n onClick,\n 'aria-labelledby': ariaLabelledBy, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...rest // forwarded props from react-datepicker\n },\n ref,\n ) => {\n React.useEffect(() => {\n inputRef.current?.addEventListener('keydown', handleOnKeyDown);\n inputRef.current?.addEventListener('blur', handleOnBlur);\n inputRef.current?.addEventListener('focus', handleOnFocus);\n return () => {\n inputRef.current?.removeEventListener('keydown', handleOnKeyDown);\n inputRef.current?.removeEventListener('blur', handleOnBlur);\n inputRef.current?.removeEventListener('focus', handleOnFocus);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputRef, selectedDate]);\n\n function handleOnKeyDown(this: HTMLElement, event: KeyboardEvent) {\n onKeyDownInput(event);\n }\n function handleOnBlur(this: HTMLElement, event: FocusEvent) {\n onBlurInput(event);\n }\n const handleOnFocus = () =>\n requestAnimationFrame(() => inputRef.current?.select());\n\n const handleOnClickInputField = (\n event: React.MouseEvent<HTMLInputElement, MouseEvent>,\n ) => {\n setShouldFocusOnCalendarButtonAfterSelect(false);\n onClick && onClick(event);\n };\n\n const handleOnClickCalendarButton = () => {\n toggleCalendarGUI();\n setFocusToCalendarGUI();\n setShouldFocusOnCalendarButtonAfterSelect(true);\n };\n\n const calendarButtonAriaLabel = () => {\n const buttonStateText = calendarGUIIsOpen()\n ? calendarButtonTooltipClose\n : calendarButtonTooltipOpen;\n const currentSelectionText = selectedDate\n ? `${inputRef.current?.value} valgt`\n : 'Ingen dato valgt';\n return `${buttonStateText}, ${currentSelectionText}`;\n };\n\n return (\n <TextField\n style={style}\n label={label}\n placeholder={inputPlaceholder}\n prepend={prepend}\n feedback={feedback}\n variant={variant}\n disableLabelAnimation={disableLabelAnimation}\n ref={mergeRefs(ref, inputRef, forwardRef)}\n onClick={handleOnClickInputField}\n ariaAlertOnFeedback\n append={\n !hideCalendarButton && (\n <Tooltip\n placement=\"top\"\n content={\n calendarGUIIsOpen()\n ? calendarButtonTooltipClose\n : calendarButtonTooltipOpen\n }\n disableHoverListener={disabled}\n disableFocusListener={disabled}\n >\n <IconButton\n id={calendarButtonId}\n type=\"button\"\n onClick={handleOnClickCalendarButton}\n tabIndex={calendarGUIIsOpen() ? -1 : 0}\n aria-label={calendarButtonAriaLabel()}\n >\n <CalendarIcon />\n </IconButton>\n </Tooltip>\n )\n }\n {...rest}\n />\n );\n },\n);\n\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 når kalender ikke er åpen på «Åpne/Lukk kalender»-knappen ved hover\n */\n calendarButtonTooltipOpen?: string;\n /**\n * Tekst som vises når kalender er åpen på «Åpne/Lukk kalender»-knappen ved hover\n */\n calendarButtonTooltipClose?: string;\n /** Skjuler knapp for åpning av kalender\n * @default false\n */\n hideCalendarButton?: boolean;\n /** Skjuler tilbakemeldingsteksten ved feil dato-input\n * @default false\n */\n hideValidation?: boolean;\n /** Skjuler kalender-GUI-et\n * @default false\n */\n hideCalendar?: boolean;\n /** Viser kun kalender-popover-en\n * @default false\n */\n inline?: boolean;\n /** Skjermlesertekst for forrige måned-knapen\n * @default \"Forrige måned\"\n */\n previousMonthAriaLabel?: string;\n /** Skjermlesertekst for neste måned-knapen\n * @default \"Neste måned\"\n */\n nextMonthAriaLabel?: string;\n /**\n * Skjermlesertekst som leses før dato i kalenderGUI-et\n * @default \"Velg\"\n */\n chooseDayAriaLabelPrefix?: string;\n // For testing\n 'data-cy'?: any;\n} & Omit<\n ReactDatePickerProps,\n | 'selected'\n | 'customInput'\n | 'onChangeRaw'\n | 'dateFormat'\n | 'locale'\n | 'previousMonthAriaLabel'\n | 'nextMonthAriaLabel'\n>;\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n style,\n className,\n selectedDate,\n label,\n placeholder = 'dd.mm.yyyy',\n onChange,\n onKeyDown = () => null,\n dateFormats = ['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy'],\n minDate,\n maxDate,\n inline = false,\n disabled,\n prepend,\n feedback = '',\n variant,\n validationFeedback = 'Ugyldig dato',\n validationVariant = 'error',\n disableLabelAnimation = false,\n calendarButtonTooltipOpen = 'Åpne\\xa0kalender',\n calendarButtonTooltipClose = 'Lukk\\xa0kalender',\n hideCalendarButton = false,\n hideCalendar = false,\n hideValidation = false,\n weekLabel = 'uke',\n chooseDayAriaLabelPrefix = 'Velg',\n previousMonthAriaLabel = 'Forrige måned',\n nextMonthAriaLabel = 'Neste måned',\n locale = nb,\n open,\n ...rest\n },\n ref,\n ) => {\n const datepickerId = useRandomId('eds-datepicker');\n\n const datepickerRef = useRef<ReactDatePicker>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const calendarButton = document.getElementById(datepickerId + '-button');\n\n const [showValidation, setShowValidation] = useState(false);\n const [\n shouldFocusOnCalendarButtonAfterSelect,\n setShouldFocusOnCalendarButtonAfterSelect,\n ] = useState(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(() => validateInput(), [selectedDate]);\n\n const handleOnChange = (\n date: Date | null,\n event: React.SyntheticEvent<any, Event> | undefined,\n ): void => {\n if (shouldFocusOnCalendarButtonAfterSelect && !hideCalendarButton) {\n calendarButton?.focus();\n setShouldFocusOnCalendarButtonAfterSelect(false);\n } else inputRef.current?.focus();\n\n onChange(date, event);\n };\n\n const handleOnKeyDown = (event: KeyboardEvent) => {\n setShowValidation(false);\n\n if (event.key === 'Enter') {\n if (!datePickerGUIIsOpen()) {\n // onBlurInput will validate if calendar is open\n validateInput();\n forceUpdateInputFormat();\n }\n focusAndSelectInputField();\n } else if (event.key === 'Tab' && datePickerGUIIsOpen()) {\n forceUpdateInputFormat();\n } else if (event.key === 'Escape') {\n forceUpdateInputFormat();\n focusAndSelectInputField();\n if (datePickerGUIIsOpen()) toggleCalendarGUI();\n }\n onKeyDown(event);\n };\n\n const handleOnClickOutside = () =>\n setShouldFocusOnCalendarButtonAfterSelect(false);\n\n const handleOnBlurInput = () => {\n if (datePickerGUIIsOpen()) return;\n validateInput();\n forceUpdateInputFormat();\n };\n\n const validateInput = () => {\n setShowValidation(false);\n const inputValue = inputRef.current?.value;\n if (!inputValue) return;\n\n const inputValueParsedWithAllDateFormats = dateFormats.map(format =>\n parse(inputValue, format, new Date(), {\n locale: locale,\n }),\n );\n\n const parsedDateFromInputIsTheSameAsSelectedDate =\n selectedDate &&\n inputValueParsedWithAllDateFormats.some(dateFormat =>\n isSameDay(dateFormat, selectedDate),\n );\n\n if (parsedDateFromInputIsTheSameAsSelectedDate) {\n // valid date inputted\n setShowValidation(false);\n } else {\n // invalid date inputted\n setShowValidation(true);\n }\n };\n\n const getFeedbackAndVariant = (): {\n feedback: string;\n variant: VariantType | undefined;\n } => {\n if (feedback) return { feedback, variant };\n if (!hideValidation && showValidation)\n return { feedback: validationFeedback, variant: validationVariant };\n return { feedback: '', variant: undefined };\n };\n\n const focusAndSelectInputField = () =>\n requestAnimationFrame(() => inputRef.current?.select());\n\n const forceUpdateInputFormat = () =>\n datepickerRef.current?.setState({ inputValue: null });\n\n const toggleCalendarGUI = () =>\n datepickerRef.current?.setOpen(!datePickerGUIIsOpen());\n\n const setFocusToCalendarGUI = () => {\n if (inline || hideCalendar || datePickerGUIIsOpen()) return;\n // 1 frame delay to allow calendar to spawn\n requestAnimationFrame(() => {\n const datepickerGUIWrapper =\n // @ts-expect-error .calendar does actually exist in ReactDatePicker ref\n datepickerRef.current?.calendar.componentNode;\n\n const dateToSetFocusTo = selectedDate\n ? (datepickerGUIWrapper.querySelector(\n '.eds-datepicker__calender__day[tabindex=\"0\"]',\n ) as HTMLElement | null)\n : (datepickerGUIWrapper.querySelector(\n '.eds-datepicker__calender__day[aria-current=\"date\"]',\n ) as HTMLElement | null);\n if (dateToSetFocusTo !== null) {\n datepickerRef.current?.setBlur();\n dateToSetFocusTo.focus({ preventScroll: true });\n }\n });\n setShouldFocusOnCalendarButtonAfterSelect(true);\n setShowValidation(false);\n };\n\n const datePickerGUIIsOpen = () => datepickerRef.current?.isCalendarOpen();\n\n return (\n <>\n <ReactDatepicker\n selected={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormats}\n showWeekNumbers\n weekLabel={weekLabel}\n onChange={handleOnChange}\n onClickOutside={handleOnClickOutside}\n id={datepickerId}\n ariaLabelledBy={datepickerId}\n showPopperArrow={false}\n locale={locale}\n inline={inline}\n disabled={disabled}\n preventOpenOnFocus={true}\n chooseDayAriaLabelPrefix={chooseDayAriaLabelPrefix}\n open={hideCalendar ? false : open}\n ref={datepickerRef}\n calendarClassName=\"eds-datepicker__calender\"\n dayClassName={() => 'eds-datepicker__calender__day'}\n weekDayClassName={() => 'eds-datepicker__calender__day-name'}\n className={classNames(className, 'eds-datepicker__input')}\n highlightDates={[\n { 'eds-datepicker__calender__day--today': [new Date()] },\n {\n 'eds-datepicker__calender__day--selected': selectedDate\n ? [selectedDate]\n : [],\n },\n ]}\n renderCustomHeader={({\n date,\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n }) => (\n <DatePickerHeader\n date={date}\n changeYear={changeYear}\n changeMonth={changeMonth}\n increaseMonth={increaseMonth}\n decreaseMonth={decreaseMonth}\n prevMonthButtonDisabled={prevMonthButtonDisabled}\n nextMonthButtonDisabled={nextMonthButtonDisabled}\n previousMonthAriaLabel={previousMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n locale={locale}\n />\n )}\n customInput={\n <DatePickerInput\n style={style}\n label={label}\n inputPlaceholder={placeholder}\n calendarButtonTooltipOpen={calendarButtonTooltipOpen}\n calendarButtonTooltipClose={calendarButtonTooltipClose}\n prepend={prepend}\n feedback={getFeedbackAndVariant().feedback}\n variant={getFeedbackAndVariant().variant}\n inputRef={inputRef}\n calendarButtonId={datepickerId + '-button'}\n forwardRef={ref}\n onKeyDownInput={handleOnKeyDown}\n onBlurInput={handleOnBlurInput}\n onFocus={undefined}\n toggleCalendarGUI={toggleCalendarGUI}\n setFocusToCalendarGUI={setFocusToCalendarGUI}\n setShouldFocusOnCalendarButtonAfterSelect={\n setShouldFocusOnCalendarButtonAfterSelect\n }\n calendarGUIIsOpen={datePickerGUIIsOpen}\n disableLabelAnimation={disableLabelAnimation}\n hideCalendarButton={hideCalendarButton}\n selectedDate={selectedDate}\n />\n }\n {...rest}\n />\n </>\n );\n },\n);\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { DateIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nexport type NativeDatePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeDatePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeDatePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeDatePicker = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerProps\n>(\n (\n {\n className,\n style,\n label,\n onChange,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <DateIcon inline />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativedatepickerId = useRandomId('eds-nativetimepicker');\n return (\n <BaseFormControl\n style={style}\n className={className}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativedatepickerId}\n disableLabelAnimation={disableLabelAnimation}\n isFilled\n >\n <NativeDatePickerBase\n onChange={onChange}\n aria-labelledby={nativedatepickerId}\n ref={ref}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeDatePickerBaseProps = {\n onChange?: any;\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeDatePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerBaseProps\n>(({ onChange, variant, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isDatepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isDatepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isDatepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"date\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import React 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","nextMonthAriaLabel","previousMonthAriaLabel","locale","currentMonthIndex","getMonth","React","className","IconButton","type","onClick","disabled","getMonthName","LeftArrowIcon","Heading3","getFullYear","RightArrowIcon","monthIndex","year","Date","formatter","Intl","DateTimeFormat","code","month","format","DatePickerInput","forwardRef","ref","style","label","inputPlaceholder","prepend","feedback","variant","calendarButtonTooltipOpen","calendarButtonTooltipClose","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","rest","useEffect","current","addEventListener","handleOnKeyDown","handleOnBlur","handleOnFocus","removeEventListener","event","requestAnimationFrame","select","handleOnClickInputField","handleOnClickCalendarButton","calendarButtonAriaLabel","buttonStateText","currentSelectionText","value","TextField","placeholder","mergeRefs","ariaAlertOnFeedback","append","Tooltip","placement","content","disableHoverListener","disableFocusListener","id","tabIndex","CalendarIcon","refs","node","registerLocale","nb","DatePicker","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","validationFeedback","validationVariant","hideCalendar","hideValidation","weekLabel","chooseDayAriaLabelPrefix","open","datepickerId","useRandomId","datepickerRef","useRef","calendarButton","document","getElementById","useState","showValidation","setShowValidation","shouldFocusOnCalendarButtonAfterSelect","validateInput","handleOnChange","focus","key","datePickerGUIIsOpen","forceUpdateInputFormat","focusAndSelectInputField","handleOnClickOutside","handleOnBlurInput","inputValue","inputValueParsedWithAllDateFormats","map","parse","parsedDateFromInputIsTheSameAsSelectedDate","some","dateFormat","isSameDay","getFeedbackAndVariant","undefined","setState","setOpen","datepickerGUIWrapper","calendar","componentNode","dateToSetFocusTo","querySelector","setBlur","preventScroll","isCalendarOpen","ReactDatepicker","selected","showWeekNumbers","onClickOutside","ariaLabelledBy","showPopperArrow","preventOpenOnFocus","calendarClassName","dayClassName","weekDayClassName","classNames","highlightDates","renderCustomHeader","changeYear","changeMonth","customInput","onFocus","NativeDatePicker","DateIcon","nativedatepickerId","BaseFormControl","labelId","isFilled","NativeDatePickerBase","contextVariant","useVariant","currentVariant","useInputGroupContext","isDatepickerFilled","setFiller","setFilled","useOnMount","handleChange","target","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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"}