@entur/datepicker 8.1.7 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,7 @@ import { useDateSegment, useDateField, useDatePicker, useTimeField } from '@reac
5
5
  import { useLocale, I18nProvider } from '@react-aria/i18n';
6
6
  import classNames from 'classnames';
7
7
  import { BaseFormControl, useVariant, useInputGroupContext, isFilled, TextField } from '@entur/form';
8
- import { CalendarDate, Time, getLocalTimeZone, GregorianCalendar, ZonedDateTime, parseAbsolute, CalendarDateTime, isEqualDay, now, getWeeksInMonth, toTime, parseTime } from '@internationalized/date';
8
+ import { CalendarDate, Time, getLocalTimeZone, GregorianCalendar, toCalendarDateTime, ZonedDateTime, parseAbsolute, CalendarDateTime, isEqualDay, now, getWeeksInMonth, toTime, parseTime } from '@internationalized/date';
9
9
  export { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from '@internationalized/date';
10
10
  import { useCalendarCell, useCalendarGrid, useCalendar } from '@react-aria/calendar';
11
11
  import { useCalendarState } from '@react-stately/calendar';
@@ -51,15 +51,6 @@ var FieldSegment = function FieldSegment(_ref) {
51
51
  var ref = useRef(null);
52
52
  var _useDateSegment = useDateSegment(segment, state, ref),
53
53
  segmentProps = _useDateSegment.segmentProps;
54
- var is12HourFormatted = state.segments.some(function (segment) {
55
- return segment.text === 'AM' || segment.text === 'PM';
56
- });
57
- var segmentDisplayText = function segmentDisplayText() {
58
- if (is12HourFormatted) return segment.text;
59
- // if number add '0' padding to start when one digit
60
- if (segment.text.match(/\d+/)) return segment.text.padStart(2, '0');
61
- return segment.text;
62
- };
63
54
  return React.createElement("div", _extends({}, segmentProps, {
64
55
  ref: ref,
65
56
  className: classNames('eds-date-and-time-field__segment', {
@@ -67,7 +58,7 @@ var FieldSegment = function FieldSegment(_ref) {
67
58
  'eds-date-and-time-field__segment--dot-separator': segment.text === '.'
68
59
  }),
69
60
  tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex
70
- }), segmentDisplayText());
61
+ }), segment.text);
71
62
  };
72
63
 
73
64
  var nativeDateToDateTime = function nativeDateToDateTime(date, timeZone, offset) {
@@ -81,83 +72,64 @@ var nativeDateToDateTime = function nativeDateToDateTime(date, timeZone, offset)
81
72
  };
82
73
  /**
83
74
  * Tar inn et JS Date-objekt og returnerer et av DateValue-objektene fra @internationalized/date-pakken
84
- * @param {Date} date JS Date-objekt som ønskes konvertert til et DateValue-objekt
75
+ * @param {Date | null} date JS Date-objekt som ønskes konvertert til et DateValue-objekt
85
76
  * @param {boolean} noTimeOnlyDate Hvis tidspunktet er irrelevant kan denne settes til true, da får man et CalendarDate-objekt uten tidspunkt tilbake
86
77
  * @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset
87
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.
88
- * @returns {CalendarDateTime | ZonedDateTime | CalendarDate} et av DateValue-objektene med verdier fra date
79
+ * @returns {CalendarDateTime | ZonedDateTime | CalendarDate | null} et av DateValue-objektene med verdier fra date eller null
89
80
  */
90
- var nativeDateToDateValue = function nativeDateToDateValue(date, noTimeOnlyDate, timeZone, offset) {
81
+ function nativeDateToDateValue(date, noTimeOnlyDate, timeZone, offset) {
91
82
  if (noTimeOnlyDate === void 0) {
92
83
  noTimeOnlyDate = false;
93
84
  }
85
+ if (date === null) return null;
94
86
  if (noTimeOnlyDate) return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate());
95
87
  return nativeDateToDateTime(date, timeZone, offset);
96
- };
88
+ }
97
89
  /**
98
90
  * Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken
99
- * @param {Date} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
91
+ * @param {Date | null} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
100
92
  * @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake
101
93
  * @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset
102
94
  * @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.
103
- * @returns {Time | CalendarDateTime | ZonedDateTime} et av TimeValue-objektene med verdier fra date
95
+ * @returns {Time | CalendarDateTime | ZonedDateTime | null} et av TimeValue-objektene med verdier fra date eller null
104
96
  */
105
- var nativeDateToTimeValue = function nativeDateToTimeValue(date, noDateOnlyTime, timeZone, offset) {
97
+ function nativeDateToTimeValue(date, noDateOnlyTime, timeZone, offset) {
106
98
  if (noDateOnlyTime === void 0) {
107
99
  noDateOnlyTime = false;
108
100
  }
101
+ if (date === null) return null;
109
102
  if (noDateOnlyTime) return new Time(date.getHours(), date.getMinutes(), date.getSeconds(), 0);
110
103
  return nativeDateToDateTime(date, timeZone, offset);
111
- };
104
+ }
112
105
  /**
113
- * Tar inn et av Date- eller TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt
114
- * @param {DateValue | TimeValue} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt
106
+ * Tar inn et av Date- eller TimeValue-objektene fra \@internationalized/date-pakken og returnerer et JS Date-objekt
107
+ * @param {DateValue | TimeValue | null} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt
115
108
  * @param {string} timeZoneForCalendarDateTime Tidssonen value er i. Fungerer kun med typen er CalendarDateTime
116
- * @returns {Date} et Date-objekt med verdier fra time
109
+ * @returns {Date | null} et Date-objekt med verdier fra time eller null
117
110
  */
118
- // This function uses a lot of @ts-expect-error to make it work with all Date- and TimeValue types. Sorry ...
119
- var timeOrDateValueToNativeDate = function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
120
- // @ts-expect-error .day does not exist on Time-object
121
- if (!value.day) {
122
- // type is Time
111
+ function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
112
+ if (value === null) return null;
113
+ // type is Time
114
+ if (!('day' in value)) {
123
115
  var date = new Date();
124
- // @ts-expect-error hour does not exist on CalendarDate
125
116
  date.setHours(value.hour);
126
- // @ts-expect-error minute does not exist on CalendarDate
127
117
  date.setMinutes(value.minute);
128
- // @ts-expect-error second does not exist on CalendarDate
129
118
  date.setSeconds(value.second);
130
119
  return date;
131
120
  }
132
- // @ts-expect-error .day does not exist on Time-object
133
- if (!value.hour) {
134
- // type is CalendarDate
135
- // @ts-expect-error .toDate(timeZone) does not exist in type Time
121
+ // type is CalendarDate
122
+ if (!('hour' in value)) {
136
123
  return value.toDate(timeZoneForCalendarDateTime != null ? timeZoneForCalendarDateTime : getLocalTimeZone());
137
124
  }
138
- // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime
139
- if (!value.timeZone) {
140
- // type is CalendarDateTime
141
- if (timeZoneForCalendarDateTime)
142
- // @ts-expect-error .toDate(timeZone) does not exist in type Time
143
- return value.toDate(timeZoneForCalendarDateTime);
144
- return new Date(
145
- // @ts-expect-error not in type Time
146
- value.year,
147
- // @ts-expect-error not in type Time
148
- value.month - 1,
149
- // @ts-expect-error not in type Time
150
- value.day,
151
- // @ts-expect-error not in type CalendarDate
152
- value.hour,
153
- // @ts-expect-error not in type CalendarDate
154
- value.minute,
155
- // @ts-expect-error not in type CalendarDate
156
- value.second);
125
+ // type is CalendarDateTime
126
+ if (!('timeZone' in value)) {
127
+ if (timeZoneForCalendarDateTime) return value.toDate(timeZoneForCalendarDateTime);
128
+ return new Date(value.year, value.month - 1, value.day, value.hour, value.minute, value.second);
157
129
  }
158
- // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime
130
+ // type is ZonedDateTime
159
131
  return value.toDate();
160
- };
132
+ }
161
133
  var createCalendar = function createCalendar(identifier) {
162
134
  if (identifier === void 0) {
163
135
  identifier = 'gregory';
@@ -173,10 +145,18 @@ var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, loc
173
145
  if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
174
146
  return norwegianAriaLabel;
175
147
  };
148
+ var lastMillisecondOfDay = function lastMillisecondOfDay(dateValue) {
149
+ return toCalendarDateTime(dateValue.add({
150
+ days: 1
151
+ })).add({
152
+ milliseconds: -1
153
+ });
154
+ };
176
155
 
177
- var _excluded$9 = ["selectedDate", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
156
+ var _excluded$9 = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
178
157
  var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
179
- var value = _ref.selectedDate,
158
+ var selectedDate = _ref.selectedDate,
159
+ onChange = _ref.onChange,
180
160
  label = _ref.label,
181
161
  customLocale = _ref.locale,
182
162
  showTimeZone = _ref.showTimeZone,
@@ -184,6 +164,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
184
164
  _ref$granularity = _ref.granularity,
185
165
  granularity = _ref$granularity === void 0 ? 'day' : _ref$granularity,
186
166
  disabled = _ref.disabled,
167
+ isDisabled = _ref.isDisabled,
187
168
  variant = _ref.variant,
188
169
  feedback = _ref.feedback,
189
170
  _ref$validationVarian = _ref.validationVariant,
@@ -191,8 +172,8 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
191
172
  _ref$validationFeedba = _ref.validationFeedback,
192
173
  validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
193
174
  labelTooltip = _ref.labelTooltip,
194
- minValue = _ref.minDate,
195
- maxValue = _ref.maxDate,
175
+ minDate = _ref.minDate,
176
+ maxDate = _ref.maxDate,
196
177
  style = _ref.style,
197
178
  className = _ref.className,
198
179
  parentLabelProps = _ref.labelProps,
@@ -203,16 +184,19 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
203
184
  var state = useDateFieldState(_extends({}, rest, {
204
185
  locale: customLocale != null ? customLocale : locale,
205
186
  createCalendar: createCalendar,
206
- value: value === null ? undefined : value,
187
+ value: selectedDate,
188
+ onChange: onChange,
207
189
  hideTimeZone: !showTimeZone,
208
190
  granularity: showTime ? 'minute' : granularity,
209
- minValue: minValue,
210
- maxValue: maxValue
191
+ minValue: minDate,
192
+ // this weird logic makes sure the entire day is included if no time is provided in maxDate
193
+ maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
194
+ isDisabled: isDisabled || disabled,
195
+ shouldForceLeadingZeros: true
211
196
  }));
212
197
  var dateFieldRef = useRef(null);
213
198
  var _useDateField = useDateField(_extends({}, rest, {
214
- label: label,
215
- isDisabled: disabled || rest.isDisabled
199
+ label: label
216
200
  }), state, dateFieldRef),
217
201
  labelProps = _useDateField.labelProps,
218
202
  fieldProps = _useDateField.fieldProps;
@@ -229,7 +213,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
229
213
  className: classNames('eds-datefield', className),
230
214
  labelId: id,
231
215
  ref: mergeRefs(dateFieldRef, ref),
232
- disabled: state.isDisabled,
216
+ disabled: isDisabled || disabled,
233
217
  disableLabelAnimation: true,
234
218
  label: label,
235
219
  labelTooltip: labelTooltip,
@@ -367,10 +351,13 @@ var CalendarGrid = function CalendarGrid(_ref) {
367
351
  }, getNavigationDescription()));
368
352
  };
369
353
 
370
- var _excluded$5 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription", "onSelectedCellClick"];
354
+ var _excluded$5 = ["selectedDate", "onChange", "locale", "minDate", "maxDate", "style", "children", "navigationDescription", "onSelectedCellClick"];
371
355
  var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
372
- var onChange = _ref.onChange,
356
+ var selectedDate = _ref.selectedDate,
357
+ onChange = _ref.onChange,
373
358
  customLocale = _ref.locale,
359
+ minDate = _ref.minDate,
360
+ maxDate = _ref.maxDate,
374
361
  style = _ref.style,
375
362
  navigationDescription = _ref.navigationDescription,
376
363
  _ref$onSelectedCellCl = _ref.onSelectedCellClick,
@@ -381,9 +368,12 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
381
368
  var _useLocale = useLocale(),
382
369
  locale = _useLocale.locale;
383
370
  var state = useCalendarState(_extends({}, rest, {
371
+ value: selectedDate,
384
372
  onChange: onChange,
385
373
  locale: customLocale != null ? customLocale : locale,
386
- createCalendar: createCalendar
374
+ createCalendar: createCalendar,
375
+ minValue: minDate,
376
+ maxValue: maxDate
387
377
  }));
388
378
  var _useCalendar = useCalendar(rest, state),
389
379
  calendarProps = _useCalendar.calendarProps,
@@ -420,10 +410,10 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
420
410
 
421
411
  var _excluded$4 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold"];
422
412
  var DatePicker = function DatePicker(_ref) {
423
- var value = _ref.selectedDate,
413
+ var selectedDate = _ref.selectedDate,
424
414
  onChange = _ref.onChange,
425
415
  locale = _ref.locale,
426
- isDisabled = _ref.disabled,
416
+ disabled = _ref.disabled,
427
417
  showTime = _ref.showTime,
428
418
  _ref$showTimeZone = _ref.showTimeZone,
429
419
  showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
@@ -436,8 +426,8 @@ var DatePicker = function DatePicker(_ref) {
436
426
  disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
437
427
  labelTooltip = _ref.labelTooltip,
438
428
  navigationDescription = _ref.navigationDescription,
439
- minValue = _ref.minDate,
440
- maxValue = _ref.maxDate,
429
+ minDate = _ref.minDate,
430
+ maxDate = _ref.maxDate,
441
431
  _ref$modalTreshold = _ref.modalTreshold,
442
432
  modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
443
433
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
@@ -448,17 +438,15 @@ var DatePicker = function DatePicker(_ref) {
448
438
  var _useWindowDimensions = useWindowDimensions(),
449
439
  width = _useWindowDimensions.width;
450
440
  var state = useDatePickerState(_extends({}, rest, {
451
- minValue: minValue,
452
- maxValue: maxValue,
453
- value: value === null ? undefined : value,
441
+ minValue: minDate,
442
+ // this weird logic makes sure the entire day is included if no time is provided in maxDate
443
+ maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
444
+ value: selectedDate,
454
445
  onChange: onChange,
455
- granularity: showTime ? 'minute' : rest.granularity
446
+ granularity: showTime ? 'minute' : rest.granularity,
447
+ isDisabled: disabled
456
448
  }));
457
- var _useDatePicker = useDatePicker(_extends({
458
- isDisabled: isDisabled,
459
- minValue: minValue,
460
- maxValue: maxValue
461
- }, rest), state, datePickerRef),
449
+ var _useDatePicker = useDatePicker(_extends({}, rest), state, datePickerRef),
462
450
  groupProps = _useDatePicker.groupProps,
463
451
  labelProps = _useDatePicker.labelProps,
464
452
  fieldProps = _useDatePicker.fieldProps,
@@ -478,12 +466,6 @@ var DatePicker = function DatePicker(_ref) {
478
466
  reference = _useFloating.reference,
479
467
  floating = _useFloating.floating,
480
468
  strategy = _useFloating.strategy;
481
- var onChangeCalendar = function onChangeCalendar(newSelectedDate) {
482
- // Necessary to avoid state update on unmounted component
483
- requestAnimationFrame(function () {
484
- calendarProps.onChange && calendarProps.onChange(newSelectedDate);
485
- });
486
- };
487
469
  useOnClickOutside([calendarRef], function () {
488
470
  state.setOpen(false);
489
471
  });
@@ -491,13 +473,17 @@ var DatePicker = function DatePicker(_ref) {
491
473
  state.setOpen(false);
492
474
  });
493
475
  var calendarSharedProps = _extends({}, dialogProps, calendarProps, {
494
- disabled: calendarProps.isDisabled,
476
+ disabled: disabled,
495
477
  navigationDescription: navigationDescription,
496
478
  onSelectedCellClick: function onSelectedCellClick() {
497
479
  return state.setOpen(false);
498
480
  },
499
- onChange: onChangeCalendar,
500
- granularity: showTime ? 'minute' : rest.granularity
481
+ selectedDate: selectedDate,
482
+ onChange: onChange,
483
+ minDate: minDate,
484
+ maxDate: maxDate,
485
+ granularity: showTime ? 'minute' : rest.granularity,
486
+ ref: calendarRef
501
487
  });
502
488
  var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
503
489
  var popoverCalendar = React.createElement("div", {
@@ -514,9 +500,7 @@ var DatePicker = function DatePicker(_ref) {
514
500
  }, React.createElement(FocusLock, {
515
501
  disabled: !state.isOpen || useModal,
516
502
  returnFocus: true
517
- }, state.isOpen && React.createElement(Calendar, _extends({}, calendarSharedProps, {
518
- ref: calendarRef
519
- }))));
503
+ }, state.isOpen && React.createElement(Calendar, _extends({}, calendarSharedProps))));
520
504
  var modalCalendar = React.createElement(Modal, {
521
505
  size: "small",
522
506
  title: "",
@@ -524,7 +508,6 @@ var DatePicker = function DatePicker(_ref) {
524
508
  onDismiss: function onDismiss() {
525
509
  return state.setOpen(false);
526
510
  },
527
- closeOnClickOutside: true,
528
511
  className: "eds-datepicker__calendar-modal"
529
512
  }, React.createElement(Calendar, _extends({}, calendarSharedProps)));
530
513
  return React.createElement(ConditionalWrapper, {
@@ -544,9 +527,13 @@ var DatePicker = function DatePicker(_ref) {
544
527
  id: undefined,
545
528
  className: "eds-datepicker__datefield__wrapper"
546
529
  }), React.createElement(DateField, _extends({}, fieldProps, {
547
- selectedDate: state.value,
530
+ selectedDate: selectedDate,
531
+ onChange: onChange,
548
532
  label: rest.label,
549
533
  labelProps: labelProps,
534
+ disabled: disabled,
535
+ minDate: minDate,
536
+ maxDate: maxDate,
550
537
  showTime: showTime,
551
538
  showTimeZone: showTimeZone,
552
539
  ref: dateFieldRef,
@@ -556,9 +543,9 @@ var DatePicker = function DatePicker(_ref) {
556
543
  validationFeedback: validationFeedback,
557
544
  labelTooltip: labelTooltip,
558
545
  className: classNames('eds-datepicker__datefield', {
559
- 'eds-datepicker__datefield--disabled': fieldProps.isDisabled
546
+ 'eds-datepicker__datefield--disabled': disabled
560
547
  })
561
- })), !fieldProps.isDisabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
548
+ })), !disabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
562
549
  onPress: function onPress() {
563
550
  return state.setOpen(!state.isOpen);
564
551
  },
@@ -684,9 +671,10 @@ var TimePicker = function TimePicker(_ref) {
684
671
  onChange: onChange,
685
672
  label: label,
686
673
  locale: locale,
687
- value: selectedTime === null ? undefined : selectedTime,
674
+ value: selectedTime,
688
675
  hideTimeZone: !showTimeZone,
689
- isDisabled: disabled
676
+ isDisabled: disabled,
677
+ shouldForceLeadingZeros: true
690
678
  }, rest));
691
679
  var timeFieldRef = useRef(null);
692
680
  var _useTimeField = useTimeField(_extends({}, rest, {
@@ -717,8 +705,7 @@ var TimePicker = function TimePicker(_ref) {
717
705
  onChange(newTime);
718
706
  };
719
707
  var addMinutesToSelectedTime = function addMinutesToSelectedTime(minutes) {
720
- var _state$value;
721
- state.value && state.setValue((_state$value = state.value) == null ? void 0 : _state$value.add({
708
+ selectedTime !== null && onChange(selectedTime.add({
722
709
  minutes: minutes
723
710
  }));
724
711
  };
@@ -867,7 +854,7 @@ var SimpleTimePicker = function SimpleTimePicker(_ref) {
867
854
  onChange: onChange,
868
855
  label: label,
869
856
  locale: locale,
870
- value: selectedTime === null ? undefined : selectedTime,
857
+ value: selectedTime,
871
858
  hideTimeZone: true,
872
859
  isDisabled: disabled,
873
860
  isReadOnly: readOnly
@@ -1022,5 +1009,5 @@ var SimpleTimePicker = function SimpleTimePicker(_ref) {
1022
1009
 
1023
1010
  warnAboutMissingStyles('datepicker', 'form', 'icons');
1024
1011
 
1025
- export { Calendar, DateField, DatePicker, NativeDatePicker, NativeTimePicker, SimpleTimePicker, TimePicker, ariaLabelIfNorwegian, createCalendar, nativeDateToDateValue, nativeDateToTimeValue, timeOrDateValueToNativeDate };
1012
+ export { Calendar, DateField, DatePicker, NativeDatePicker, NativeTimePicker, SimpleTimePicker, TimePicker, ariaLabelIfNorwegian, createCalendar, lastMillisecondOfDay, nativeDateToDateValue, nativeDateToTimeValue, timeOrDateValueToNativeDate };
1026
1013
  //# sourceMappingURL=datepicker.esm.js.map