@entur/datepicker 4.0.0-RC.0 → 4.0.0-RC.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.
@@ -1,22 +1,16 @@
1
- import { mergeRefs, useRandomId, ConditionalWrapper, useWindowDimensions, useOnClickOutside, useOnEscape, useOnMount, warnAboutMissingStyles } from '@entur/utils';
2
- import React, { useRef, useState } from 'react';
3
- import ReactDatepicker, { registerLocale } from 'react-datepicker';
4
- import { parse, isSameDay } from 'date-fns';
5
- import { nb } from 'date-fns/locale';
6
- import classNames from 'classnames';
7
- import { LeftArrowIcon, RightArrowIcon, CalendarIcon, DateIcon } from '@entur/icons';
8
- import { Heading3 } from '@entur/typography';
9
- import { IconButton } from '@entur/button';
10
- import { TextField, BaseFormControl, useVariant, useInputGroupContext, isFilled } from '@entur/form';
11
- import { Tooltip } from '@entur/tooltip';
12
- import 'react-datepicker/dist/react-datepicker.css';
1
+ import { useRandomId, ConditionalWrapper, mergeRefs, useWindowDimensions, useOnClickOutside, useOnEscape, useOnMount, warnAboutMissingStyles } from '@entur/utils';
2
+ import React, { useRef } from 'react';
13
3
  import { useDateFieldState, useDatePickerState, useTimeFieldState } from '@react-stately/datepicker';
14
4
  import { useDateSegment, useDateField, useDatePicker, useTimeField } from '@react-aria/datepicker';
15
5
  import { useLocale, I18nProvider } from '@react-aria/i18n';
6
+ import classNames from 'classnames';
7
+ import { BaseFormControl, useVariant, useInputGroupContext, isFilled } from '@entur/form';
16
8
  import { ZonedDateTime, parseAbsolute, Time, CalendarDate, CalendarDateTime, getLocalTimeZone, GregorianCalendar, isEqualDay, now, getWeeksInMonth } from '@internationalized/date';
17
9
  import { useCalendarCell, useCalendarGrid, useCalendar } from '@react-aria/calendar';
18
10
  import { useCalendarState } from '@react-stately/calendar';
11
+ import { LeftArrowIcon, RightArrowIcon, CalendarIcon, DateIcon } from '@entur/icons';
19
12
  import { useButton } from '@react-aria/button';
13
+ import { IconButton } from '@entur/button';
20
14
  import { VisuallyHidden } from '@entur/a11y';
21
15
  import { useFloating, autoUpdate, offset, flip, shift } from '@floating-ui/react-dom';
22
16
  import FocusLock from 'react-focus-lock';
@@ -24,484 +18,47 @@ import { space, zIndexes } from '@entur/tokens';
24
18
  import { Modal } from '@entur/modal';
25
19
 
26
20
  function _extends() {
27
- _extends = Object.assign || function (target) {
21
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
28
22
  for (var i = 1; i < arguments.length; i++) {
29
23
  var source = arguments[i];
30
-
31
24
  for (var key in source) {
32
25
  if (Object.prototype.hasOwnProperty.call(source, key)) {
33
26
  target[key] = source[key];
34
27
  }
35
28
  }
36
29
  }
37
-
38
30
  return target;
39
31
  };
40
-
41
32
  return _extends.apply(this, arguments);
42
33
  }
43
-
44
34
  function _objectWithoutPropertiesLoose(source, excluded) {
45
35
  if (source == null) return {};
46
36
  var target = {};
47
37
  var sourceKeys = Object.keys(source);
48
38
  var key, i;
49
-
50
39
  for (i = 0; i < sourceKeys.length; i++) {
51
40
  key = sourceKeys[i];
52
41
  if (excluded.indexOf(key) >= 0) continue;
53
42
  target[key] = source[key];
54
43
  }
55
-
56
44
  return target;
57
45
  }
58
46
 
59
- var DatePickerHeader = function DatePickerHeader(_ref) {
60
- var _date$getMonth;
61
-
62
- var date = _ref.date,
63
- decreaseMonth = _ref.decreaseMonth,
64
- increaseMonth = _ref.increaseMonth,
65
- prevMonthButtonDisabled = _ref.prevMonthButtonDisabled,
66
- nextMonthButtonDisabled = _ref.nextMonthButtonDisabled,
67
- nextMonthAriaLabel = _ref.nextMonthAriaLabel,
68
- previousMonthAriaLabel = _ref.previousMonthAriaLabel,
69
- locale = _ref.locale;
70
- var currentMonthIndex = (_date$getMonth = date == null ? void 0 : date.getMonth()) != null ? _date$getMonth : 0;
71
- return React.createElement("div", {
72
- className: "eds-datepicker__calender__header"
73
- }, React.createElement(IconButton, {
74
- type: "button",
75
- className: "eds-datepicker__calender__header__month-button--left",
76
- onClick: decreaseMonth,
77
- disabled: prevMonthButtonDisabled,
78
- "aria-label": previousMonthAriaLabel + " (" + getMonthName(currentMonthIndex - 1, locale) + ")"
79
- }, React.createElement(LeftArrowIcon, null)), React.createElement(Heading3, {
80
- className: "eds-datepicker__calender__header__month-text"
81
- }, getMonthName(currentMonthIndex, locale)), React.createElement(Heading3, {
82
- className: "eds-datepicker__calender__header__month-text"
83
- }, date == null ? void 0 : date.getFullYear()), React.createElement(IconButton, {
84
- type: "button",
85
- className: "eds-datepicker__calender__header__month-button--right",
86
- onClick: increaseMonth,
87
- disabled: nextMonthButtonDisabled,
88
- "aria-label": nextMonthAriaLabel + " (" + getMonthName(currentMonthIndex + 1, locale) + ")"
89
- }, React.createElement(RightArrowIcon, null)));
90
- };
91
-
92
- function getMonthName(monthIndex, locale) {
93
- var year = new Date().getFullYear();
94
- var formatter = new Intl.DateTimeFormat(locale.code, {
95
- month: 'long'
96
- });
97
- return formatter.format(new Date(year, monthIndex));
98
- }
99
-
100
- var _excluded$a = ["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"];
101
- var DatePickerInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
102
- var style = _ref.style,
103
- label = _ref.label,
104
- inputPlaceholder = _ref.inputPlaceholder,
105
- prepend = _ref.prepend,
106
- feedback = _ref.feedback,
107
- variant = _ref.variant,
108
- disabled = _ref.disabled,
109
- calendarButtonTooltipOpen = _ref.calendarButtonTooltipOpen,
110
- calendarButtonTooltipClose = _ref.calendarButtonTooltipClose,
111
- hideCalendarButton = _ref.hideCalendarButton,
112
- disableLabelAnimation = _ref.disableLabelAnimation,
113
- inputRef = _ref.inputRef,
114
- calendarButtonId = _ref.calendarButtonId,
115
- forwardRef = _ref.forwardRef,
116
- toggleCalendarGUI = _ref.toggleCalendarGUI,
117
- onKeyDownInput = _ref.onKeyDownInput,
118
- onBlurInput = _ref.onBlurInput,
119
- selectedDate = _ref.selectedDate,
120
- setFocusToCalendarGUI = _ref.setFocusToCalendarGUI,
121
- setShouldFocusOnCalendarButtonAfterSelect = _ref.setShouldFocusOnCalendarButtonAfterSelect,
122
- calendarGUIIsOpen = _ref.calendarGUIIsOpen,
123
- onClick = _ref.onClick,
124
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
125
-
126
- React.useEffect(function () {
127
- var _inputRef$current, _inputRef$current2, _inputRef$current3;
128
-
129
- (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.addEventListener('keydown', handleOnKeyDown);
130
- (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.addEventListener('blur', handleOnBlur);
131
- (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.addEventListener('focus', handleOnFocus);
132
- return function () {
133
- var _inputRef$current4, _inputRef$current5, _inputRef$current6;
134
-
135
- (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.removeEventListener('keydown', handleOnKeyDown);
136
- (_inputRef$current5 = inputRef.current) == null ? void 0 : _inputRef$current5.removeEventListener('blur', handleOnBlur);
137
- (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.removeEventListener('focus', handleOnFocus);
138
- }; // eslint-disable-next-line react-hooks/exhaustive-deps
139
- }, [inputRef, selectedDate]);
140
-
141
- function handleOnKeyDown(event) {
142
- onKeyDownInput(event);
143
- }
144
-
145
- function handleOnBlur(event) {
146
- onBlurInput(event);
147
- }
148
-
149
- var handleOnFocus = function handleOnFocus() {
150
- return requestAnimationFrame(function () {
151
- var _inputRef$current7;
152
-
153
- return (_inputRef$current7 = inputRef.current) == null ? void 0 : _inputRef$current7.select();
154
- });
155
- };
156
-
157
- var handleOnClickInputField = function handleOnClickInputField(event) {
158
- setShouldFocusOnCalendarButtonAfterSelect(false);
159
- onClick && onClick(event);
160
- };
161
-
162
- var handleOnClickCalendarButton = function handleOnClickCalendarButton() {
163
- toggleCalendarGUI();
164
- setFocusToCalendarGUI();
165
- setShouldFocusOnCalendarButtonAfterSelect(true);
166
- };
167
-
168
- var calendarButtonAriaLabel = function calendarButtonAriaLabel() {
169
- var _inputRef$current8;
170
-
171
- var buttonStateText = calendarGUIIsOpen() ? calendarButtonTooltipClose : calendarButtonTooltipOpen;
172
- var currentSelectionText = selectedDate ? ((_inputRef$current8 = inputRef.current) == null ? void 0 : _inputRef$current8.value) + " valgt" : 'Ingen dato valgt';
173
- return buttonStateText + ", " + currentSelectionText;
174
- };
175
-
176
- return React.createElement(TextField, _extends({
177
- style: style,
178
- label: label,
179
- placeholder: inputPlaceholder,
180
- prepend: prepend,
181
- feedback: feedback,
182
- variant: variant,
183
- disableLabelAnimation: disableLabelAnimation,
184
- ref: mergeRefs(ref, inputRef, forwardRef),
185
- onClick: handleOnClickInputField,
186
- ariaAlertOnFeedback: true,
187
- append: !hideCalendarButton && React.createElement(Tooltip, {
188
- placement: "top",
189
- content: calendarGUIIsOpen() ? calendarButtonTooltipClose : calendarButtonTooltipOpen,
190
- disableHoverListener: disabled,
191
- disableFocusListener: disabled
192
- }, React.createElement(IconButton, {
193
- id: calendarButtonId,
194
- type: "button",
195
- onClick: handleOnClickCalendarButton,
196
- tabIndex: calendarGUIIsOpen() ? -1 : 0,
197
- "aria-label": calendarButtonAriaLabel()
198
- }, React.createElement(CalendarIcon, null)))
199
- }, rest));
200
- });
201
-
202
- var _excluded$9 = ["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"];
203
- registerLocale('nb', nb);
204
- var DatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
205
- var style = _ref.style,
206
- className = _ref.className,
207
- selectedDate = _ref.selectedDate,
208
- label = _ref.label,
209
- _ref$placeholder = _ref.placeholder,
210
- placeholder = _ref$placeholder === void 0 ? 'dd.mm.yyyy' : _ref$placeholder,
211
- onChange = _ref.onChange,
212
- _ref$onKeyDown = _ref.onKeyDown,
213
- onKeyDown = _ref$onKeyDown === void 0 ? function () {
214
- return null;
215
- } : _ref$onKeyDown,
216
- _ref$dateFormats = _ref.dateFormats,
217
- dateFormats = _ref$dateFormats === void 0 ? ['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy'] : _ref$dateFormats,
218
- minDate = _ref.minDate,
219
- maxDate = _ref.maxDate,
220
- _ref$inline = _ref.inline,
221
- inline = _ref$inline === void 0 ? false : _ref$inline,
222
- disabled = _ref.disabled,
223
- prepend = _ref.prepend,
224
- _ref$feedback = _ref.feedback,
225
- feedback = _ref$feedback === void 0 ? '' : _ref$feedback,
226
- variant = _ref.variant,
227
- _ref$validationFeedba = _ref.validationFeedback,
228
- validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
229
- _ref$validationVarian = _ref.validationVariant,
230
- validationVariant = _ref$validationVarian === void 0 ? 'error' : _ref$validationVarian,
231
- _ref$disableLabelAnim = _ref.disableLabelAnimation,
232
- disableLabelAnimation = _ref$disableLabelAnim === void 0 ? false : _ref$disableLabelAnim,
233
- _ref$calendarButtonTo = _ref.calendarButtonTooltipOpen,
234
- calendarButtonTooltipOpen = _ref$calendarButtonTo === void 0 ? 'Åpne\xa0kalender' : _ref$calendarButtonTo,
235
- _ref$calendarButtonTo2 = _ref.calendarButtonTooltipClose,
236
- calendarButtonTooltipClose = _ref$calendarButtonTo2 === void 0 ? 'Lukk\xa0kalender' : _ref$calendarButtonTo2,
237
- _ref$hideCalendarButt = _ref.hideCalendarButton,
238
- hideCalendarButton = _ref$hideCalendarButt === void 0 ? false : _ref$hideCalendarButt,
239
- _ref$hideCalendar = _ref.hideCalendar,
240
- hideCalendar = _ref$hideCalendar === void 0 ? false : _ref$hideCalendar,
241
- _ref$hideValidation = _ref.hideValidation,
242
- hideValidation = _ref$hideValidation === void 0 ? false : _ref$hideValidation,
243
- _ref$weekLabel = _ref.weekLabel,
244
- weekLabel = _ref$weekLabel === void 0 ? 'uke' : _ref$weekLabel,
245
- _ref$chooseDayAriaLab = _ref.chooseDayAriaLabelPrefix,
246
- chooseDayAriaLabelPrefix = _ref$chooseDayAriaLab === void 0 ? 'Velg' : _ref$chooseDayAriaLab,
247
- _ref$previousMonthAri = _ref.previousMonthAriaLabel,
248
- previousMonthAriaLabel = _ref$previousMonthAri === void 0 ? 'Forrige måned' : _ref$previousMonthAri,
249
- _ref$nextMonthAriaLab = _ref.nextMonthAriaLabel,
250
- nextMonthAriaLabel = _ref$nextMonthAriaLab === void 0 ? 'Neste måned' : _ref$nextMonthAriaLab,
251
- _ref$locale = _ref.locale,
252
- locale = _ref$locale === void 0 ? nb : _ref$locale,
253
- open = _ref.open,
254
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
255
-
256
- var datepickerId = useRandomId('eds-datepicker');
257
- var datepickerRef = useRef(null);
258
- var inputRef = React.useRef(null);
259
- var calendarButton = document.getElementById(datepickerId + '-button');
260
-
261
- var _useState = useState(false),
262
- showValidation = _useState[0],
263
- setShowValidation = _useState[1];
264
-
265
- var _useState2 = useState(false),
266
- shouldFocusOnCalendarButtonAfterSelect = _useState2[0],
267
- setShouldFocusOnCalendarButtonAfterSelect = _useState2[1]; // eslint-disable-next-line react-hooks/exhaustive-deps
268
-
269
-
270
- React.useEffect(function () {
271
- return validateInput();
272
- }, [selectedDate]);
273
-
274
- var handleOnChange = function handleOnChange(date, event) {
275
- var _inputRef$current;
276
-
277
- if (shouldFocusOnCalendarButtonAfterSelect && !hideCalendarButton) {
278
- calendarButton == null ? void 0 : calendarButton.focus();
279
- setShouldFocusOnCalendarButtonAfterSelect(false);
280
- } else (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
281
-
282
- onChange(date, event);
283
- };
284
-
285
- var handleOnKeyDown = function handleOnKeyDown(event) {
286
- setShowValidation(false);
287
-
288
- if (event.key === 'Enter') {
289
- if (!datePickerGUIIsOpen()) {
290
- // onBlurInput will validate if calendar is open
291
- validateInput();
292
- forceUpdateInputFormat();
293
- }
294
-
295
- focusAndSelectInputField();
296
- } else if (event.key === 'Tab' && datePickerGUIIsOpen()) {
297
- forceUpdateInputFormat();
298
- } else if (event.key === 'Escape') {
299
- forceUpdateInputFormat();
300
- focusAndSelectInputField();
301
- if (datePickerGUIIsOpen()) toggleCalendarGUI();
302
- }
303
-
304
- onKeyDown(event);
305
- };
306
-
307
- var handleOnClickOutside = function handleOnClickOutside() {
308
- return setShouldFocusOnCalendarButtonAfterSelect(false);
309
- };
310
-
311
- var handleOnBlurInput = function handleOnBlurInput() {
312
- if (datePickerGUIIsOpen()) return;
313
- validateInput();
314
- forceUpdateInputFormat();
315
- };
316
-
317
- var validateInput = function validateInput() {
318
- var _inputRef$current2;
319
-
320
- setShowValidation(false);
321
- var inputValue = (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value;
322
- if (!inputValue) return;
323
- var inputValueParsedWithAllDateFormats = dateFormats.map(function (format) {
324
- return parse(inputValue, format, new Date(), {
325
- locale: locale
326
- });
327
- });
328
- var parsedDateFromInputIsTheSameAsSelectedDate = selectedDate && inputValueParsedWithAllDateFormats.some(function (dateFormat) {
329
- return isSameDay(dateFormat, selectedDate);
330
- });
331
-
332
- if (parsedDateFromInputIsTheSameAsSelectedDate) {
333
- // valid date inputted
334
- setShowValidation(false);
335
- } else {
336
- // invalid date inputted
337
- setShowValidation(true);
338
- }
339
- };
340
-
341
- var getFeedbackAndVariant = function getFeedbackAndVariant() {
342
- if (feedback) return {
343
- feedback: feedback,
344
- variant: variant
345
- };
346
- if (!hideValidation && showValidation) return {
347
- feedback: validationFeedback,
348
- variant: validationVariant
349
- };
350
- return {
351
- feedback: '',
352
- variant: undefined
353
- };
354
- };
355
-
356
- var focusAndSelectInputField = function focusAndSelectInputField() {
357
- return requestAnimationFrame(function () {
358
- var _inputRef$current3;
359
-
360
- return (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.select();
361
- });
362
- };
363
-
364
- var forceUpdateInputFormat = function forceUpdateInputFormat() {
365
- var _datepickerRef$curren;
366
-
367
- return (_datepickerRef$curren = datepickerRef.current) == null ? void 0 : _datepickerRef$curren.setState({
368
- inputValue: null
369
- });
370
- };
371
-
372
- var toggleCalendarGUI = function toggleCalendarGUI() {
373
- var _datepickerRef$curren2;
374
-
375
- return (_datepickerRef$curren2 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren2.setOpen(!datePickerGUIIsOpen());
376
- };
377
-
378
- var setFocusToCalendarGUI = function setFocusToCalendarGUI() {
379
- if (inline || hideCalendar || datePickerGUIIsOpen()) return; // 1 frame delay to allow calendar to spawn
380
-
381
- requestAnimationFrame(function () {
382
- var _datepickerRef$curren3;
383
-
384
- var datepickerGUIWrapper = // @ts-expect-error .calendar does actually exist in ReactDatePicker ref
385
- (_datepickerRef$curren3 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren3.calendar.componentNode;
386
- var dateToSetFocusTo = selectedDate ? datepickerGUIWrapper.querySelector('.eds-datepicker__calender__day[tabindex="0"]') : datepickerGUIWrapper.querySelector('.eds-datepicker__calender__day[aria-current="date"]');
387
-
388
- if (dateToSetFocusTo !== null) {
389
- var _datepickerRef$curren4;
390
-
391
- (_datepickerRef$curren4 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren4.setBlur();
392
- dateToSetFocusTo.focus({
393
- preventScroll: true
394
- });
395
- }
396
- });
397
- setShouldFocusOnCalendarButtonAfterSelect(true);
398
- setShowValidation(false);
399
- };
400
-
401
- var datePickerGUIIsOpen = function datePickerGUIIsOpen() {
402
- var _datepickerRef$curren5;
403
-
404
- return (_datepickerRef$curren5 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren5.isCalendarOpen();
405
- };
406
-
407
- return React.createElement(React.Fragment, null, React.createElement(ReactDatepicker, _extends({
408
- selected: selectedDate,
409
- minDate: minDate,
410
- maxDate: maxDate,
411
- dateFormat: dateFormats,
412
- showWeekNumbers: true,
413
- weekLabel: weekLabel,
414
- onChange: handleOnChange,
415
- onClickOutside: handleOnClickOutside,
416
- id: datepickerId,
417
- ariaLabelledBy: datepickerId,
418
- showPopperArrow: false,
419
- locale: locale,
420
- inline: inline,
421
- disabled: disabled,
422
- preventOpenOnFocus: true,
423
- chooseDayAriaLabelPrefix: chooseDayAriaLabelPrefix,
424
- open: hideCalendar ? false : open,
425
- ref: datepickerRef,
426
- calendarClassName: "eds-datepicker__calender",
427
- dayClassName: function dayClassName() {
428
- return 'eds-datepicker__calender__day';
429
- },
430
- weekDayClassName: function weekDayClassName() {
431
- return 'eds-datepicker__calender__day-name';
432
- },
433
- className: classNames(className, 'eds-datepicker__input'),
434
- highlightDates: [{
435
- 'eds-datepicker__calender__day--today': [new Date()]
436
- }, {
437
- 'eds-datepicker__calender__day--selected': selectedDate ? [selectedDate] : []
438
- }],
439
- renderCustomHeader: function renderCustomHeader(_ref2) {
440
- var date = _ref2.date,
441
- changeYear = _ref2.changeYear,
442
- changeMonth = _ref2.changeMonth,
443
- decreaseMonth = _ref2.decreaseMonth,
444
- increaseMonth = _ref2.increaseMonth,
445
- prevMonthButtonDisabled = _ref2.prevMonthButtonDisabled,
446
- nextMonthButtonDisabled = _ref2.nextMonthButtonDisabled;
447
- return React.createElement(DatePickerHeader, {
448
- date: date,
449
- changeYear: changeYear,
450
- changeMonth: changeMonth,
451
- increaseMonth: increaseMonth,
452
- decreaseMonth: decreaseMonth,
453
- prevMonthButtonDisabled: prevMonthButtonDisabled,
454
- nextMonthButtonDisabled: nextMonthButtonDisabled,
455
- previousMonthAriaLabel: previousMonthAriaLabel,
456
- nextMonthAriaLabel: nextMonthAriaLabel,
457
- locale: locale
458
- });
459
- },
460
- customInput: React.createElement(DatePickerInput, {
461
- style: style,
462
- label: label,
463
- inputPlaceholder: placeholder,
464
- calendarButtonTooltipOpen: calendarButtonTooltipOpen,
465
- calendarButtonTooltipClose: calendarButtonTooltipClose,
466
- prepend: prepend,
467
- feedback: getFeedbackAndVariant().feedback,
468
- variant: getFeedbackAndVariant().variant,
469
- inputRef: inputRef,
470
- calendarButtonId: datepickerId + '-button',
471
- forwardRef: ref,
472
- onKeyDownInput: handleOnKeyDown,
473
- onBlurInput: handleOnBlurInput,
474
- onFocus: undefined,
475
- toggleCalendarGUI: toggleCalendarGUI,
476
- setFocusToCalendarGUI: setFocusToCalendarGUI,
477
- setShouldFocusOnCalendarButtonAfterSelect: setShouldFocusOnCalendarButtonAfterSelect,
478
- calendarGUIIsOpen: datePickerGUIIsOpen,
479
- disableLabelAnimation: disableLabelAnimation,
480
- hideCalendarButton: hideCalendarButton,
481
- selectedDate: selectedDate
482
- })
483
- }, rest)));
484
- });
485
-
486
47
  var FieldSegment = function FieldSegment(_ref) {
487
48
  var segment = _ref.segment,
488
- state = _ref.state;
49
+ state = _ref.state;
489
50
  var ref = useRef(null);
490
-
491
51
  var _useDateSegment = useDateSegment(segment, state, ref),
492
- segmentProps = _useDateSegment.segmentProps;
493
-
52
+ segmentProps = _useDateSegment.segmentProps;
494
53
  var is12HourFormatted = state.segments.some(function (segment) {
495
54
  return segment.text === 'AM' || segment.text === 'PM';
496
55
  });
497
-
498
56
  var segmentDisplayText = function segmentDisplayText() {
499
- if (is12HourFormatted) return segment.text; // if number add '0' padding to start when one digit
500
-
57
+ if (is12HourFormatted) return segment.text;
58
+ // if number add '0' padding to start when one digit
501
59
  if (segment.text.match(/\d+/)) return segment.text.padStart(2, '0');
502
60
  return segment.text;
503
61
  };
504
-
505
62
  return React.createElement("div", _extends({}, segmentProps, {
506
63
  ref: ref,
507
64
  className: classNames('eds-date-and-time-field__segment', {
@@ -521,24 +78,19 @@ var FieldSegment = function FieldSegment(_ref) {
521
78
  * @param {number} offset UTC-offset i millisekunder, må brukes med en tidssone. Ved å legge på en offset lager du en variant av en tidssone. Det betyr at tidspunktet ikke endres (time, minutt, sekund uendret), men tidssonen, med tilhørende offset, tidspunktet er i endres.
522
79
  * @returns {Time | CalendarDateTime | ZonedDateTime | CalendarDate} et av Time- eller DateValue-objektene med verdier fra date
523
80
  */
524
-
525
81
  var nativeDateToTimeOrDateValue = function nativeDateToTimeOrDateValue(date, noDateOnlyTime, noTimeOnlyDate, timeZone, offset) {
526
82
  if (noDateOnlyTime === void 0) {
527
83
  noDateOnlyTime = false;
528
84
  }
529
-
530
85
  if (noTimeOnlyDate === void 0) {
531
86
  noTimeOnlyDate = false;
532
87
  }
533
-
534
88
  if (timeZone) {
535
89
  if (offset) {
536
90
  return new ZonedDateTime(date.getFullYear(), date.getMonth() + 1, date.getDate(), timeZone, offset, date.getHours(), date.getMinutes(), date.getSeconds());
537
91
  }
538
-
539
92
  return parseAbsolute(date.toISOString(), timeZone);
540
93
  }
541
-
542
94
  if (noDateOnlyTime) return new Time(date.getHours(), date.getMinutes(), date.getSeconds(), 0);
543
95
  if (noTimeOnlyDate) return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate());
544
96
  return new CalendarDateTime(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
@@ -550,54 +102,55 @@ var nativeDateToTimeOrDateValue = function nativeDateToTimeOrDateValue(date, noD
550
102
  * @returns {Date} et Date-objekt med verdier fra time
551
103
  */
552
104
  // This function uses a lot of @ts-expect-error to make it work with all Date- and TimeValue types. Sorry ...
553
-
554
105
  var timeOrDateValueToNativeDate = function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
555
106
  // @ts-expect-error .day does not exist on Time-object
556
107
  if (!value.day) {
557
108
  // type is Time
558
- var date = new Date(); // @ts-expect-error hour does not exist on CalendarDate
559
-
560
- date.setHours(value.hour); // @ts-expect-error minute does not exist on CalendarDate
561
-
562
- date.setMinutes(value.minute); // @ts-expect-error second does not exist on CalendarDate
563
-
109
+ var date = new Date();
110
+ // @ts-expect-error hour does not exist on CalendarDate
111
+ date.setHours(value.hour);
112
+ // @ts-expect-error minute does not exist on CalendarDate
113
+ date.setMinutes(value.minute);
114
+ // @ts-expect-error second does not exist on CalendarDate
564
115
  date.setSeconds(value.second);
565
116
  return date;
566
- } // @ts-expect-error .day does not exist on Time-object
567
-
568
-
117
+ }
118
+ // @ts-expect-error .day does not exist on Time-object
569
119
  if (!value.hour) {
570
120
  // type is CalendarDate
571
121
  // @ts-expect-error .toDate(timeZone) does not exist in type Time
572
122
  return value.toDate(timeZoneForCalendarDateTime != null ? timeZoneForCalendarDateTime : getLocalTimeZone());
573
- } // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime
574
-
575
-
123
+ }
124
+ // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime
576
125
  if (!value.timeZone) {
577
126
  // type is CalendarDateTime
578
- if (timeZoneForCalendarDateTime) // @ts-expect-error .toDate(timeZone) does not exist in type Time
127
+ if (timeZoneForCalendarDateTime)
128
+ // @ts-expect-error .toDate(timeZone) does not exist in type Time
579
129
  return value.toDate(timeZoneForCalendarDateTime);
580
- return new Date( // @ts-expect-error not in type Time
581
- value.year, // @ts-expect-error not in type Time
582
- value.month - 1, // @ts-expect-error not in type Time
583
- value.day, // @ts-expect-error not in type CalendarDate
584
- value.hour, // @ts-expect-error not in type CalendarDate
585
- value.minute, // @ts-expect-error not in type CalendarDate
130
+ return new Date(
131
+ // @ts-expect-error not in type Time
132
+ value.year,
133
+ // @ts-expect-error not in type Time
134
+ value.month - 1,
135
+ // @ts-expect-error not in type Time
136
+ value.day,
137
+ // @ts-expect-error not in type CalendarDate
138
+ value.hour,
139
+ // @ts-expect-error not in type CalendarDate
140
+ value.minute,
141
+ // @ts-expect-error not in type CalendarDate
586
142
  value.second);
587
- } // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime
588
-
589
-
143
+ }
144
+ // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime
590
145
  return value.toDate();
591
146
  };
592
147
  var createCalendar = function createCalendar(identifier) {
593
148
  if (identifier === void 0) {
594
149
  identifier = 'gregory';
595
150
  }
596
-
597
151
  switch (identifier) {
598
152
  case 'gregory':
599
153
  return new GregorianCalendar();
600
-
601
154
  default:
602
155
  throw new Error("Unsupported calendar " + identifier);
603
156
  }
@@ -610,29 +163,27 @@ var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, loc
610
163
  var _excluded$8 = ["selectedDate", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "style", "className", "labelProps", "append"];
611
164
  var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
612
165
  var value = _ref.selectedDate,
613
- label = _ref.label,
614
- customLocale = _ref.locale,
615
- showTimeZone = _ref.showTimeZone,
616
- showTime = _ref.showTime,
617
- _ref$granularity = _ref.granularity,
618
- granularity = _ref$granularity === void 0 ? 'day' : _ref$granularity,
619
- disabled = _ref.disabled,
620
- variant = _ref.variant,
621
- feedback = _ref.feedback,
622
- _ref$validationVarian = _ref.validationVariant,
623
- validationVariant = _ref$validationVarian === void 0 ? 'error' : _ref$validationVarian,
624
- _ref$validationFeedba = _ref.validationFeedback,
625
- validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
626
- labelTooltip = _ref.labelTooltip,
627
- style = _ref.style,
628
- className = _ref.className,
629
- parentLabelProps = _ref.labelProps,
630
- append = _ref.append,
631
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
632
-
166
+ label = _ref.label,
167
+ customLocale = _ref.locale,
168
+ showTimeZone = _ref.showTimeZone,
169
+ showTime = _ref.showTime,
170
+ _ref$granularity = _ref.granularity,
171
+ granularity = _ref$granularity === void 0 ? 'day' : _ref$granularity,
172
+ disabled = _ref.disabled,
173
+ variant = _ref.variant,
174
+ feedback = _ref.feedback,
175
+ _ref$validationVarian = _ref.validationVariant,
176
+ validationVariant = _ref$validationVarian === void 0 ? 'error' : _ref$validationVarian,
177
+ _ref$validationFeedba = _ref.validationFeedback,
178
+ validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
179
+ labelTooltip = _ref.labelTooltip,
180
+ style = _ref.style,
181
+ className = _ref.className,
182
+ parentLabelProps = _ref.labelProps,
183
+ append = _ref.append,
184
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
633
185
  var _useLocale = useLocale(),
634
- locale = _useLocale.locale;
635
-
186
+ locale = _useLocale.locale;
636
187
  var state = useDateFieldState(_extends({}, rest, {
637
188
  locale: customLocale != null ? customLocale : locale,
638
189
  createCalendar: createCalendar,
@@ -641,14 +192,12 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
641
192
  granularity: showTime ? 'minute' : granularity
642
193
  }));
643
194
  var dateFieldRef = useRef(null);
644
-
645
195
  var _useDateField = useDateField(_extends({}, rest, {
646
- label: label,
647
- isDisabled: disabled || rest.isDisabled
648
- }), state, dateFieldRef),
649
- labelProps = _useDateField.labelProps,
650
- fieldProps = _useDateField.fieldProps;
651
-
196
+ label: label,
197
+ isDisabled: disabled || rest.isDisabled
198
+ }), state, dateFieldRef),
199
+ labelProps = _useDateField.labelProps,
200
+ fieldProps = _useDateField.fieldProps;
652
201
  var id = useRandomId('datefield');
653
202
  return React.createElement(ConditionalWrapper, {
654
203
  condition: customLocale !== undefined,
@@ -684,15 +233,12 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
684
233
  var _excluded$7 = ["children", "className", "style"];
685
234
  var CalendarButton = function CalendarButton(_ref) {
686
235
  var children = _ref.children,
687
- className = _ref.className,
688
- style = _ref.style,
689
- props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
690
-
236
+ className = _ref.className,
237
+ style = _ref.style,
238
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
691
239
  var ref = useRef(null);
692
-
693
240
  var _useButton = useButton(props, ref),
694
- buttonProps = _useButton.buttonProps;
695
-
241
+ buttonProps = _useButton.buttonProps;
696
242
  return React.createElement(IconButton, _extends({}, buttonProps, {
697
243
  ref: ref,
698
244
  className: className,
@@ -703,28 +249,24 @@ var CalendarButton = function CalendarButton(_ref) {
703
249
  var _excluded$6 = ["state", "date", "onSelectedCellClick"];
704
250
  var CalendarCell = function CalendarCell(_ref) {
705
251
  var _state$timeZone;
706
-
707
252
  var state = _ref.state,
708
- date = _ref.date,
709
- _ref$onSelectedCellCl = _ref.onSelectedCellClick,
710
- onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
711
- return;
712
- } : _ref$onSelectedCellCl,
713
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
714
-
253
+ date = _ref.date,
254
+ _ref$onSelectedCellCl = _ref.onSelectedCellClick,
255
+ onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
256
+ return;
257
+ } : _ref$onSelectedCellCl,
258
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
715
259
  var cellRef = useRef(null);
716
-
717
260
  var _useCalendarCell = useCalendarCell({
718
- date: date
719
- }, state, cellRef),
720
- cellProps = _useCalendarCell.cellProps,
721
- buttonProps = _useCalendarCell.buttonProps,
722
- isSelected = _useCalendarCell.isSelected,
723
- isOutsideVisibleRange = _useCalendarCell.isOutsideVisibleRange,
724
- isDisabled = _useCalendarCell.isDisabled,
725
- isUnavailable = _useCalendarCell.isUnavailable,
726
- formattedDate = _useCalendarCell.formattedDate;
727
-
261
+ date: date
262
+ }, state, cellRef),
263
+ cellProps = _useCalendarCell.cellProps,
264
+ buttonProps = _useCalendarCell.buttonProps,
265
+ isSelected = _useCalendarCell.isSelected,
266
+ isOutsideVisibleRange = _useCalendarCell.isOutsideVisibleRange,
267
+ isDisabled = _useCalendarCell.isDisabled,
268
+ isUnavailable = _useCalendarCell.isUnavailable,
269
+ formattedDate = _useCalendarCell.formattedDate;
728
270
  return React.createElement("td", _extends({}, cellProps, {
729
271
  className: "eds-datepicker__calendar__grid__cell__td"
730
272
  }), React.createElement("div", _extends({}, buttonProps, {
@@ -747,26 +289,21 @@ var CalendarCell = function CalendarCell(_ref) {
747
289
  var _excluded$5 = ["state", "navigationDescription", "onSelectedCellClick"];
748
290
  var CalendarGrid = function CalendarGrid(_ref) {
749
291
  var state = _ref.state,
750
- navigationDescription = _ref.navigationDescription,
751
- _ref$onSelectedCellCl = _ref.onSelectedCellClick,
752
- onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
753
- return;
754
- } : _ref$onSelectedCellCl,
755
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
756
-
292
+ navigationDescription = _ref.navigationDescription,
293
+ _ref$onSelectedCellCl = _ref.onSelectedCellClick,
294
+ onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
295
+ return;
296
+ } : _ref$onSelectedCellCl,
297
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
757
298
  var calendarGridId = useRandomId('eds-calendar');
758
-
759
299
  var _useLocale = useLocale(),
760
- locale = _useLocale.locale;
761
-
300
+ locale = _useLocale.locale;
762
301
  var _useCalendarGrid = useCalendarGrid(rest, state),
763
- gridProps = _useCalendarGrid.gridProps,
764
- headerProps = _useCalendarGrid.headerProps,
765
- weekDays = _useCalendarGrid.weekDays;
766
-
302
+ gridProps = _useCalendarGrid.gridProps,
303
+ headerProps = _useCalendarGrid.headerProps,
304
+ weekDays = _useCalendarGrid.weekDays;
767
305
  var weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);
768
306
  var weeksArray = Array.from(Array(weeksInMonth).keys());
769
-
770
307
  var weekDaysMapped = function weekDaysMapped() {
771
308
  if (locale.toLowerCase() === 'no-no' || locale.toLowerCase() === 'no') return ['ma', 'ti', 'on', 'to', 'fr', 'lø', 'sø'];
772
309
  if (weekDays.toString() === 'M,T,W,T,F,S,S') return ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
@@ -774,13 +311,11 @@ var CalendarGrid = function CalendarGrid(_ref) {
774
311
  return day.toLowerCase();
775
312
  });
776
313
  };
777
-
778
314
  var getNavigationDescription = function getNavigationDescription() {
779
315
  if (navigationDescription) return navigationDescription;
780
316
  if (locale.toLowerCase().includes('en')) return 'Use the arrow keys to navigate between dates';
781
317
  return 'Bruk piltastene til å navigere mellom datoer';
782
318
  };
783
-
784
319
  return React.createElement(React.Fragment, null, React.createElement("table", _extends({}, gridProps, {
785
320
  cellSpacing: "0",
786
321
  className: "eds-datepicker__calendar__grid"
@@ -810,30 +345,26 @@ var CalendarGrid = function CalendarGrid(_ref) {
810
345
  var _excluded$4 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription", "onSelectedCellClick"];
811
346
  var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
812
347
  var onChange = _ref.onChange,
813
- customLocale = _ref.locale,
814
- style = _ref.style,
815
- navigationDescription = _ref.navigationDescription,
816
- _ref$onSelectedCellCl = _ref.onSelectedCellClick,
817
- onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
818
- return;
819
- } : _ref$onSelectedCellCl,
820
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
821
-
348
+ customLocale = _ref.locale,
349
+ style = _ref.style,
350
+ navigationDescription = _ref.navigationDescription,
351
+ _ref$onSelectedCellCl = _ref.onSelectedCellClick,
352
+ onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
353
+ return;
354
+ } : _ref$onSelectedCellCl,
355
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
822
356
  var _useLocale = useLocale(),
823
- locale = _useLocale.locale;
824
-
357
+ locale = _useLocale.locale;
825
358
  var state = useCalendarState(_extends({}, rest, {
826
359
  onChange: onChange,
827
360
  locale: customLocale != null ? customLocale : locale,
828
361
  createCalendar: createCalendar
829
362
  }));
830
-
831
363
  var _useCalendar = useCalendar(rest, state),
832
- calendarProps = _useCalendar.calendarProps,
833
- prevButtonProps = _useCalendar.prevButtonProps,
834
- nextButtonProps = _useCalendar.nextButtonProps,
835
- title = _useCalendar.title;
836
-
364
+ calendarProps = _useCalendar.calendarProps,
365
+ prevButtonProps = _useCalendar.prevButtonProps,
366
+ nextButtonProps = _useCalendar.nextButtonProps,
367
+ title = _useCalendar.title;
837
368
  return React.createElement(ConditionalWrapper, {
838
369
  condition: customLocale,
839
370
  wrapper: function wrapper(child) {
@@ -863,85 +394,76 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
863
394
  });
864
395
 
865
396
  var _excluded$3 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold"];
866
- var DatePickerBeta = function DatePickerBeta(_ref) {
397
+ var DatePicker = function DatePicker(_ref) {
867
398
  var value = _ref.selectedDate,
868
- onChange = _ref.onChange,
869
- locale = _ref.locale,
870
- isDisabled = _ref.disabled,
871
- showTime = _ref.showTime,
872
- _ref$showTimeZone = _ref.showTimeZone,
873
- showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
874
- className = _ref.className,
875
- variant = _ref.variant,
876
- feedback = _ref.feedback,
877
- validationVariant = _ref.validationVariant,
878
- validationFeedback = _ref.validationFeedback,
879
- _ref$disableModal = _ref.disableModal,
880
- disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
881
- labelTooltip = _ref.labelTooltip,
882
- navigationDescription = _ref.navigationDescription,
883
- minValue = _ref.minDate,
884
- maxValue = _ref.maxDate,
885
- _ref$modalTreshold = _ref.modalTreshold,
886
- modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
887
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
888
-
399
+ onChange = _ref.onChange,
400
+ locale = _ref.locale,
401
+ isDisabled = _ref.disabled,
402
+ showTime = _ref.showTime,
403
+ _ref$showTimeZone = _ref.showTimeZone,
404
+ showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
405
+ className = _ref.className,
406
+ variant = _ref.variant,
407
+ feedback = _ref.feedback,
408
+ validationVariant = _ref.validationVariant,
409
+ validationFeedback = _ref.validationFeedback,
410
+ _ref$disableModal = _ref.disableModal,
411
+ disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
412
+ labelTooltip = _ref.labelTooltip,
413
+ navigationDescription = _ref.navigationDescription,
414
+ minValue = _ref.minDate,
415
+ maxValue = _ref.maxDate,
416
+ _ref$modalTreshold = _ref.modalTreshold,
417
+ modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
418
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
889
419
  var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
890
420
  var datePickerRef = useRef(null);
891
421
  var calendarRef = useRef(null);
892
422
  var dateFieldRef = useRef(null);
893
-
894
423
  var _useWindowDimensions = useWindowDimensions(),
895
- width = _useWindowDimensions.width;
896
-
424
+ width = _useWindowDimensions.width;
897
425
  var state = useDatePickerState(_extends({}, rest, {
898
426
  minValue: minValue,
899
427
  maxValue: maxValue,
900
428
  value: value,
901
429
  onChange: onChange
902
430
  }));
903
-
904
431
  var _useDatePicker = useDatePicker(_extends({
905
- isDisabled: isDisabled,
906
- minValue: minValue,
907
- maxValue: maxValue,
908
- autoFocus: true
909
- }, rest), state, datePickerRef),
910
- groupProps = _useDatePicker.groupProps,
911
- labelProps = _useDatePicker.labelProps,
912
- fieldProps = _useDatePicker.fieldProps,
913
- buttonProps = _useDatePicker.buttonProps,
914
- dialogProps = _useDatePicker.dialogProps,
915
- calendarProps = _useDatePicker.calendarProps; // calculations for floating-UI popover position
916
-
917
-
432
+ isDisabled: isDisabled,
433
+ minValue: minValue,
434
+ maxValue: maxValue
435
+ }, rest), state, datePickerRef),
436
+ groupProps = _useDatePicker.groupProps,
437
+ labelProps = _useDatePicker.labelProps,
438
+ fieldProps = _useDatePicker.fieldProps,
439
+ buttonProps = _useDatePicker.buttonProps,
440
+ dialogProps = _useDatePicker.dialogProps,
441
+ calendarProps = _useDatePicker.calendarProps;
442
+ // calculations for floating-UI popover position
918
443
  var _useFloating = useFloating({
919
- whileElementsMounted: autoUpdate,
920
- placement: 'bottom-start',
921
- middleware: [offset(space.extraSmall), flip(), shift({
922
- padding: space.extraSmall
923
- })]
924
- }),
925
- x = _useFloating.x,
926
- y = _useFloating.y,
927
- reference = _useFloating.reference,
928
- floating = _useFloating.floating,
929
- strategy = _useFloating.strategy;
930
-
444
+ whileElementsMounted: autoUpdate,
445
+ placement: 'bottom-start',
446
+ middleware: [offset(space.extraSmall), flip(), shift({
447
+ padding: space.extraSmall
448
+ })]
449
+ }),
450
+ x = _useFloating.x,
451
+ y = _useFloating.y,
452
+ reference = _useFloating.reference,
453
+ floating = _useFloating.floating,
454
+ strategy = _useFloating.strategy;
931
455
  var onChangeCalendar = function onChangeCalendar(newSelectedDate) {
932
456
  // Necessary to avoid state update on unmounted component
933
457
  requestAnimationFrame(function () {
934
458
  calendarProps.onChange && calendarProps.onChange(newSelectedDate);
935
459
  });
936
460
  };
937
-
938
461
  useOnClickOutside([calendarRef], function () {
939
462
  state.setOpen(false);
940
463
  });
941
464
  useOnEscape(calendarRef, function () {
942
465
  state.setOpen(false);
943
466
  });
944
-
945
467
  var calendarSharedProps = _extends({}, dialogProps, calendarProps, {
946
468
  disabled: calendarProps.isDisabled,
947
469
  navigationDescription: navigationDescription,
@@ -950,7 +472,6 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
950
472
  },
951
473
  onChange: onChangeCalendar
952
474
  });
953
-
954
475
  var useModal = width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
955
476
  var popoverCalendar = React.createElement("div", {
956
477
  // styling for floating-UI popover
@@ -1019,21 +540,20 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
1019
540
  };
1020
541
 
1021
542
  var _excluded$2 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
1022
- _excluded2$1 = ["onChange", "variant", "value"];
543
+ _excluded2$1 = ["onChange", "variant", "value"];
1023
544
  var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1024
545
  var className = _ref.className,
1025
- style = _ref.style,
1026
- label = _ref.label,
1027
- onChange = _ref.onChange,
1028
- feedback = _ref.feedback,
1029
- variant = _ref.variant,
1030
- disableLabelAnimation = _ref.disableLabelAnimation,
1031
- _ref$prepend = _ref.prepend,
1032
- prepend = _ref$prepend === void 0 ? React.createElement(DateIcon, {
1033
- inline: true
1034
- }) : _ref$prepend,
1035
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1036
-
546
+ style = _ref.style,
547
+ label = _ref.label,
548
+ onChange = _ref.onChange,
549
+ feedback = _ref.feedback,
550
+ variant = _ref.variant,
551
+ disableLabelAnimation = _ref.disableLabelAnimation,
552
+ _ref$prepend = _ref.prepend,
553
+ prepend = _ref$prepend === void 0 ? React.createElement(DateIcon, {
554
+ inline: true
555
+ }) : _ref$prepend,
556
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1037
557
  var nativedatepickerId = useRandomId('eds-nativetimepicker');
1038
558
  return React.createElement(BaseFormControl, {
1039
559
  style: style,
@@ -1054,17 +574,14 @@ var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1054
574
  });
1055
575
  var NativeDatePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
1056
576
  var onChange = _ref2.onChange,
1057
- variant = _ref2.variant,
1058
- value = _ref2.value,
1059
- rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
1060
-
577
+ variant = _ref2.variant,
578
+ value = _ref2.value,
579
+ rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
1061
580
  var contextVariant = useVariant();
1062
581
  var currentVariant = variant || contextVariant;
1063
-
1064
582
  var _useInputGroupContext = useInputGroupContext(),
1065
- isDatepickerFilled = _useInputGroupContext.isFilled,
1066
- setFiller = _useInputGroupContext.setFilled;
1067
-
583
+ isDatepickerFilled = _useInputGroupContext.isFilled,
584
+ setFiller = _useInputGroupContext.setFilled;
1068
585
  useOnMount(function () {
1069
586
  setFiller && !isDatepickerFilled && setFiller(true);
1070
587
  });
@@ -1075,19 +592,16 @@ var NativeDatePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
1075
592
  setFiller && isDatepickerFilled && setFiller(false);
1076
593
  }
1077
594
  }, [value, setFiller, isDatepickerFilled]);
1078
-
1079
595
  var handleChange = function handleChange(event) {
1080
596
  if (isFilled(event.target)) {
1081
597
  setFiller && !isDatepickerFilled && setFiller(true);
1082
598
  } else {
1083
599
  setFiller && isDatepickerFilled && setFiller(false);
1084
600
  }
1085
-
1086
601
  if (onChange) {
1087
602
  onChange(event);
1088
603
  }
1089
604
  };
1090
-
1091
605
  return React.createElement("input", _extends({
1092
606
  ref: ref,
1093
607
  "aria-invalid": currentVariant === 'error',
@@ -1100,9 +614,9 @@ var NativeDatePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
1100
614
 
1101
615
  var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
1102
616
  var direction = _ref.direction,
1103
- onClick = _ref.onClick,
1104
- disabled = _ref.disabled,
1105
- ariaLabel = _ref['aria-label'];
617
+ onClick = _ref.onClick,
618
+ disabled = _ref.disabled,
619
+ ariaLabel = _ref['aria-label'];
1106
620
  return React.createElement(IconButton, {
1107
621
  className: classNames('eds-timepicker__arrowbutton', "eds-timepicker__arrowbutton--" + direction, {
1108
622
  'eds-timepicker__arrowbutton--disabled': disabled
@@ -1118,27 +632,25 @@ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
1118
632
  var _excluded$1 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "variant", "locale", "showTimeZone", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel"];
1119
633
  var TimePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1120
634
  var selectedTime = _ref.selectedTime,
1121
- onChange = _ref.onChange,
1122
- disabled = _ref.disabled,
1123
- className = _ref.className,
1124
- style = _ref.style,
1125
- label = _ref.label,
1126
- labelTooltip = _ref.labelTooltip,
1127
- feedback = _ref.feedback,
1128
- variant = _ref.variant,
1129
- customLocale = _ref.locale,
1130
- showTimeZone = _ref.showTimeZone,
1131
- _ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
1132
- minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
1133
- _ref$leftArrowButtonA = _ref.leftArrowButtonAriaLabel,
1134
- leftArrowButtonAriaLabel = _ref$leftArrowButtonA === void 0 ? "Trekk fra " + minuteIncrementForArrowButtons + " minutter" : _ref$leftArrowButtonA,
1135
- _ref$rightArrowButton = _ref.rightArrowButtonAriaLabel,
1136
- rightArrowButtonAriaLabel = _ref$rightArrowButton === void 0 ? "Legg til " + minuteIncrementForArrowButtons + " minutter" : _ref$rightArrowButton,
1137
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1138
-
635
+ onChange = _ref.onChange,
636
+ disabled = _ref.disabled,
637
+ className = _ref.className,
638
+ style = _ref.style,
639
+ label = _ref.label,
640
+ labelTooltip = _ref.labelTooltip,
641
+ feedback = _ref.feedback,
642
+ variant = _ref.variant,
643
+ customLocale = _ref.locale,
644
+ showTimeZone = _ref.showTimeZone,
645
+ _ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
646
+ minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
647
+ _ref$leftArrowButtonA = _ref.leftArrowButtonAriaLabel,
648
+ leftArrowButtonAriaLabel = _ref$leftArrowButtonA === void 0 ? "Trekk fra " + minuteIncrementForArrowButtons + " minutter" : _ref$leftArrowButtonA,
649
+ _ref$rightArrowButton = _ref.rightArrowButtonAriaLabel,
650
+ rightArrowButtonAriaLabel = _ref$rightArrowButton === void 0 ? "Legg til " + minuteIncrementForArrowButtons + " minutter" : _ref$rightArrowButton,
651
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1139
652
  var _useLocale = useLocale(),
1140
- locale = _useLocale.locale;
1141
-
653
+ locale = _useLocale.locale;
1142
654
  if (customLocale) locale = customLocale;
1143
655
  var state = useTimeFieldState(_extends({
1144
656
  onChange: onChange,
@@ -1149,15 +661,12 @@ var TimePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1149
661
  isDisabled: disabled
1150
662
  }, rest));
1151
663
  var timeFieldRef = useRef(null);
1152
-
1153
664
  var _useTimeField = useTimeField(_extends({}, rest, {
1154
- label: label
1155
- }), state, timeFieldRef),
1156
- labelProps = _useTimeField.labelProps,
1157
- fieldProps = _useTimeField.fieldProps;
1158
-
665
+ label: label
666
+ }), state, timeFieldRef),
667
+ labelProps = _useTimeField.labelProps,
668
+ fieldProps = _useTimeField.fieldProps;
1159
669
  var id = useRandomId('timepicker');
1160
-
1161
670
  var handleOnClickArrowButton = function handleOnClickArrowButton(minutes) {
1162
671
  if (someSegmentIsUndefined) {
1163
672
  setTimeToNearestMinuteIncrement();
@@ -1165,11 +674,9 @@ var TimePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1165
674
  addMinutesToSelectedTime(minutes);
1166
675
  }
1167
676
  };
1168
-
1169
677
  var someSegmentIsUndefined = state.segments.some(function (segment) {
1170
678
  return segment.text === '––';
1171
679
  });
1172
-
1173
680
  var setTimeToNearestMinuteIncrement = function setTimeToNearestMinuteIncrement() {
1174
681
  var currentTime = now(getLocalTimeZone());
1175
682
  var roundedMinute = Math.floor(currentTime.minute / minuteIncrementForArrowButtons) * minuteIncrementForArrowButtons;
@@ -1178,15 +685,12 @@ var TimePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1178
685
  });
1179
686
  onChange(newTime);
1180
687
  };
1181
-
1182
688
  var addMinutesToSelectedTime = function addMinutesToSelectedTime(minutes) {
1183
689
  var _state$value;
1184
-
1185
690
  state.value && state.setValue((_state$value = state.value) == null ? void 0 : _state$value.add({
1186
691
  minutes: minutes
1187
692
  }));
1188
693
  };
1189
-
1190
694
  return React.createElement(I18nProvider, {
1191
695
  locale: locale
1192
696
  }, React.createElement("div", {
@@ -1228,17 +732,16 @@ var TimePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1228
732
  });
1229
733
 
1230
734
  var _excluded = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
1231
- _excluded2 = ["onChange", "value"];
735
+ _excluded2 = ["onChange", "value"];
1232
736
  var NativeTimePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1233
737
  var className = _ref.className,
1234
- style = _ref.style,
1235
- onChange = _ref.onChange,
1236
- label = _ref.label,
1237
- feedback = _ref.feedback,
1238
- variant = _ref.variant,
1239
- prepend = _ref.prepend,
1240
- rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1241
-
738
+ style = _ref.style,
739
+ onChange = _ref.onChange,
740
+ label = _ref.label,
741
+ feedback = _ref.feedback,
742
+ variant = _ref.variant,
743
+ prepend = _ref.prepend,
744
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1242
745
  var nativetimepickerId = useRandomId('eds-native-timepicker');
1243
746
  return React.createElement(BaseFormControl, {
1244
747
  style: style,
@@ -1257,16 +760,13 @@ var NativeTimePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1257
760
  });
1258
761
  var NativeTimePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
1259
762
  var onChange = _ref2.onChange,
1260
- value = _ref2.value,
1261
- rest = _objectWithoutPropertiesLoose(_ref2, _excluded2);
1262
-
763
+ value = _ref2.value,
764
+ rest = _objectWithoutPropertiesLoose(_ref2, _excluded2);
1263
765
  var contextVariant = useVariant();
1264
766
  var currentVariant = rest.variant || contextVariant;
1265
-
1266
767
  var _useInputGroupContext = useInputGroupContext(),
1267
- isTimepickerFilled = _useInputGroupContext.isFilled,
1268
- setFiller = _useInputGroupContext.setFilled;
1269
-
768
+ isTimepickerFilled = _useInputGroupContext.isFilled,
769
+ setFiller = _useInputGroupContext.setFilled;
1270
770
  useOnMount(function () {
1271
771
  setFiller && !isTimepickerFilled && setFiller(true);
1272
772
  });
@@ -1277,19 +777,16 @@ var NativeTimePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
1277
777
  setFiller && isTimepickerFilled && setFiller(false);
1278
778
  }
1279
779
  }, [value, setFiller, isTimepickerFilled]);
1280
-
1281
780
  var handleChange = function handleChange(event) {
1282
781
  if (isFilled(event.target)) {
1283
782
  setFiller && !isTimepickerFilled && setFiller(true);
1284
783
  } else {
1285
784
  setFiller && isTimepickerFilled && setFiller(false);
1286
785
  }
1287
-
1288
786
  if (onChange) {
1289
787
  onChange(event);
1290
788
  }
1291
789
  };
1292
-
1293
790
  return React.createElement("input", _extends({
1294
791
  ref: ref,
1295
792
  "aria-invalid": currentVariant === 'error',
@@ -1302,5 +799,5 @@ var NativeTimePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
1302
799
 
1303
800
  warnAboutMissingStyles('datepicker', 'form', 'icons');
1304
801
 
1305
- export { Calendar, DateField, DatePicker, DatePickerBeta, NativeDatePicker, NativeTimePicker, TimePicker, ariaLabelIfNorwegian, createCalendar, nativeDateToTimeOrDateValue, timeOrDateValueToNativeDate };
802
+ export { Calendar, DateField, DatePicker, NativeDatePicker, NativeTimePicker, TimePicker, ariaLabelIfNorwegian, createCalendar, nativeDateToTimeOrDateValue, timeOrDateValueToNativeDate };
1306
803
  //# sourceMappingURL=datepicker.esm.js.map