@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.
@@ -7,6 +7,20 @@ type CalendarProps = {
7
7
  navigationDescription?: string;
8
8
  style?: React.CSSProperties;
9
9
  onSelectedCellClick?: () => void;
10
+ /** Tidligste gyldige datovalg.
11
+ * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
12
+ *
13
+ * OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
14
+ * Gyldig fra og med den tiden som legges inn som minDate.
15
+ * Dato uten tid vil være gyldig hele minDate-dagen */
16
+ minDate?: DateValue;
17
+ /** Seneste gyldige datovalg.
18
+ * Eks: today(getLocalTimeZone()).add({days: 1}) == i morgen i lokal tidssone
19
+ *
20
+ * OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
21
+ * Gyldig til og med den tiden som legges inn som maxDate.
22
+ * Dato uten tid vil være gyldig hele maxDate-dagen */
23
+ maxDate?: DateValue;
10
24
  [key: string]: any;
11
25
  };
12
26
  export declare const Calendar: React.ForwardRefExoticComponent<Omit<CalendarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -19,9 +19,18 @@ export type DateFieldProps = {
19
19
  showTimeZone?: boolean;
20
20
  showTime?: boolean;
21
21
  /** Tidligste gyldige datovalg.
22
- * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone */
22
+ * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
23
+ *
24
+ * OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
25
+ * Gyldig fra og med den tiden som legges inn som minDate.
26
+ * Dato uten tid vil være gyldig hele minDate-dagen */
23
27
  minDate?: DateValue;
24
- /** Seneste gyldige datovalg. (se minValue) */
28
+ /** Seneste gyldige datovalg.
29
+ * Eks: today(getLocalTimeZone()).add({days: 1}) == i morgen i lokal tidssone
30
+ *
31
+ * OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
32
+ * Gyldig til og med den tiden som legges inn som maxDate.
33
+ * Dato uten tid vil være gyldig hele maxDate-dagen */
25
34
  maxDate?: DateValue;
26
35
  /** Varselmelding, som vil komme under TimePicker */
27
36
  feedback?: string;
@@ -22,12 +22,18 @@ export type DatePickerProps<DateType extends DateValue> = {
22
22
  */
23
23
  showTime?: boolean;
24
24
  /** Tidligste gyldige datovalg.
25
- * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone. */
25
+ * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
26
+ *
27
+ * OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
28
+ * Gyldig fra og med den tiden som legges inn som minDate.
29
+ * Dato uten tid vil være gyldig hele minDate-dagen */
26
30
  minDate?: DateValue;
27
31
  /** Seneste gyldige datovalg.
28
- * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone
32
+ * Eks: today(getLocalTimeZone()).add({days: 1}) == i morgen i lokal tidssone
29
33
  *
30
- * OBS: Hvis du bruker dato med tid vil det være til, men ikke med denne datoen */
34
+ * OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
35
+ * Gyldig til og med den tiden som legges inn som maxDate.
36
+ * Dato uten tid vil være gyldig hele maxDate-dagen */
31
37
  maxDate?: DateValue;
32
38
  /** Funksjon som tar inn en dato og sier om den er utilgjengelig.
33
39
  * Eks. (date) => isWeekend(date, 'no-NO') == helgedager er ikke tilgjengelig */
@@ -62,4 +68,4 @@ export type DatePickerProps<DateType extends DateValue> = {
62
68
  className?: string;
63
69
  style?: React.CSSProperties;
64
70
  } & Omit<AriaDatePickerProps<DateType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
65
- export declare const DatePicker: <DateType extends DateValue>({ selectedDate: value, onChange, locale, disabled: isDisabled, showTime, showTimeZone, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, minDate: minValue, maxDate: maxValue, modalTreshold, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
71
+ export declare const DatePicker: <DateType extends DateValue>({ selectedDate, onChange, locale, disabled, showTime, showTimeZone, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
@@ -54,15 +54,6 @@ var FieldSegment = function FieldSegment(_ref) {
54
54
  var ref = React.useRef(null);
55
55
  var _useDateSegment = datepicker.useDateSegment(segment, state, ref),
56
56
  segmentProps = _useDateSegment.segmentProps;
57
- var is12HourFormatted = state.segments.some(function (segment) {
58
- return segment.text === 'AM' || segment.text === 'PM';
59
- });
60
- var segmentDisplayText = function segmentDisplayText() {
61
- if (is12HourFormatted) return segment.text;
62
- // if number add '0' padding to start when one digit
63
- if (segment.text.match(/\d+/)) return segment.text.padStart(2, '0');
64
- return segment.text;
65
- };
66
57
  return React.createElement("div", _extends({}, segmentProps, {
67
58
  ref: ref,
68
59
  className: classNames('eds-date-and-time-field__segment', {
@@ -70,7 +61,7 @@ var FieldSegment = function FieldSegment(_ref) {
70
61
  'eds-date-and-time-field__segment--dot-separator': segment.text === '.'
71
62
  }),
72
63
  tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex
73
- }), segmentDisplayText());
64
+ }), segment.text);
74
65
  };
75
66
 
76
67
  var nativeDateToDateTime = function nativeDateToDateTime(date$1, timeZone, offset) {
@@ -84,83 +75,64 @@ var nativeDateToDateTime = function nativeDateToDateTime(date$1, timeZone, offse
84
75
  };
85
76
  /**
86
77
  * Tar inn et JS Date-objekt og returnerer et av DateValue-objektene fra @internationalized/date-pakken
87
- * @param {Date} date JS Date-objekt som ønskes konvertert til et DateValue-objekt
78
+ * @param {Date | null} date JS Date-objekt som ønskes konvertert til et DateValue-objekt
88
79
  * @param {boolean} noTimeOnlyDate Hvis tidspunktet er irrelevant kan denne settes til true, da får man et CalendarDate-objekt uten tidspunkt tilbake
89
80
  * @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
90
81
  * @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.
91
- * @returns {CalendarDateTime | ZonedDateTime | CalendarDate} et av DateValue-objektene med verdier fra date
82
+ * @returns {CalendarDateTime | ZonedDateTime | CalendarDate | null} et av DateValue-objektene med verdier fra date eller null
92
83
  */
93
- var nativeDateToDateValue = function nativeDateToDateValue(date$1, noTimeOnlyDate, timeZone, offset) {
84
+ function nativeDateToDateValue(date$1, noTimeOnlyDate, timeZone, offset) {
94
85
  if (noTimeOnlyDate === void 0) {
95
86
  noTimeOnlyDate = false;
96
87
  }
88
+ if (date$1 === null) return null;
97
89
  if (noTimeOnlyDate) return new date.CalendarDate(date$1.getFullYear(), date$1.getMonth() + 1, date$1.getDate());
98
90
  return nativeDateToDateTime(date$1, timeZone, offset);
99
- };
91
+ }
100
92
  /**
101
93
  * Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken
102
- * @param {Date} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
94
+ * @param {Date | null} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
103
95
  * @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake
104
96
  * @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
105
97
  * @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.
106
- * @returns {Time | CalendarDateTime | ZonedDateTime} et av TimeValue-objektene med verdier fra date
98
+ * @returns {Time | CalendarDateTime | ZonedDateTime | null} et av TimeValue-objektene med verdier fra date eller null
107
99
  */
108
- var nativeDateToTimeValue = function nativeDateToTimeValue(date$1, noDateOnlyTime, timeZone, offset) {
100
+ function nativeDateToTimeValue(date$1, noDateOnlyTime, timeZone, offset) {
109
101
  if (noDateOnlyTime === void 0) {
110
102
  noDateOnlyTime = false;
111
103
  }
104
+ if (date$1 === null) return null;
112
105
  if (noDateOnlyTime) return new date.Time(date$1.getHours(), date$1.getMinutes(), date$1.getSeconds(), 0);
113
106
  return nativeDateToDateTime(date$1, timeZone, offset);
114
- };
107
+ }
115
108
  /**
116
- * Tar inn et av Date- eller TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt
117
- * @param {DateValue | TimeValue} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt
109
+ * Tar inn et av Date- eller TimeValue-objektene fra \@internationalized/date-pakken og returnerer et JS Date-objekt
110
+ * @param {DateValue | TimeValue | null} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt
118
111
  * @param {string} timeZoneForCalendarDateTime Tidssonen value er i. Fungerer kun med typen er CalendarDateTime
119
- * @returns {Date} et Date-objekt med verdier fra time
112
+ * @returns {Date | null} et Date-objekt med verdier fra time eller null
120
113
  */
121
- // This function uses a lot of @ts-expect-error to make it work with all Date- and TimeValue types. Sorry ...
122
- var timeOrDateValueToNativeDate = function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
123
- // @ts-expect-error .day does not exist on Time-object
124
- if (!value.day) {
125
- // type is Time
114
+ function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
115
+ if (value === null) return null;
116
+ // type is Time
117
+ if (!('day' in value)) {
126
118
  var date$1 = new Date();
127
- // @ts-expect-error hour does not exist on CalendarDate
128
119
  date$1.setHours(value.hour);
129
- // @ts-expect-error minute does not exist on CalendarDate
130
120
  date$1.setMinutes(value.minute);
131
- // @ts-expect-error second does not exist on CalendarDate
132
121
  date$1.setSeconds(value.second);
133
122
  return date$1;
134
123
  }
135
- // @ts-expect-error .day does not exist on Time-object
136
- if (!value.hour) {
137
- // type is CalendarDate
138
- // @ts-expect-error .toDate(timeZone) does not exist in type Time
124
+ // type is CalendarDate
125
+ if (!('hour' in value)) {
139
126
  return value.toDate(timeZoneForCalendarDateTime != null ? timeZoneForCalendarDateTime : date.getLocalTimeZone());
140
127
  }
141
- // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime
142
- if (!value.timeZone) {
143
- // type is CalendarDateTime
144
- if (timeZoneForCalendarDateTime)
145
- // @ts-expect-error .toDate(timeZone) does not exist in type Time
146
- return value.toDate(timeZoneForCalendarDateTime);
147
- return new Date(
148
- // @ts-expect-error not in type Time
149
- value.year,
150
- // @ts-expect-error not in type Time
151
- value.month - 1,
152
- // @ts-expect-error not in type Time
153
- value.day,
154
- // @ts-expect-error not in type CalendarDate
155
- value.hour,
156
- // @ts-expect-error not in type CalendarDate
157
- value.minute,
158
- // @ts-expect-error not in type CalendarDate
159
- value.second);
128
+ // type is CalendarDateTime
129
+ if (!('timeZone' in value)) {
130
+ if (timeZoneForCalendarDateTime) return value.toDate(timeZoneForCalendarDateTime);
131
+ return new Date(value.year, value.month - 1, value.day, value.hour, value.minute, value.second);
160
132
  }
161
- // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime
133
+ // type is ZonedDateTime
162
134
  return value.toDate();
163
- };
135
+ }
164
136
  var createCalendar = function createCalendar(identifier) {
165
137
  if (identifier === void 0) {
166
138
  identifier = 'gregory';
@@ -176,10 +148,18 @@ var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, loc
176
148
  if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
177
149
  return norwegianAriaLabel;
178
150
  };
151
+ var lastMillisecondOfDay = function lastMillisecondOfDay(dateValue) {
152
+ return date.toCalendarDateTime(dateValue.add({
153
+ days: 1
154
+ })).add({
155
+ milliseconds: -1
156
+ });
157
+ };
179
158
 
180
- var _excluded$9 = ["selectedDate", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
159
+ var _excluded$9 = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
181
160
  var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
182
- var value = _ref.selectedDate,
161
+ var selectedDate = _ref.selectedDate,
162
+ onChange = _ref.onChange,
183
163
  label = _ref.label,
184
164
  customLocale = _ref.locale,
185
165
  showTimeZone = _ref.showTimeZone,
@@ -187,6 +167,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
187
167
  _ref$granularity = _ref.granularity,
188
168
  granularity = _ref$granularity === void 0 ? 'day' : _ref$granularity,
189
169
  disabled = _ref.disabled,
170
+ isDisabled = _ref.isDisabled,
190
171
  variant = _ref.variant,
191
172
  feedback = _ref.feedback,
192
173
  _ref$validationVarian = _ref.validationVariant,
@@ -194,8 +175,8 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
194
175
  _ref$validationFeedba = _ref.validationFeedback,
195
176
  validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
196
177
  labelTooltip = _ref.labelTooltip,
197
- minValue = _ref.minDate,
198
- maxValue = _ref.maxDate,
178
+ minDate = _ref.minDate,
179
+ maxDate = _ref.maxDate,
199
180
  style = _ref.style,
200
181
  className = _ref.className,
201
182
  parentLabelProps = _ref.labelProps,
@@ -206,16 +187,19 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
206
187
  var state = datepicker$1.useDateFieldState(_extends({}, rest, {
207
188
  locale: customLocale != null ? customLocale : locale,
208
189
  createCalendar: createCalendar,
209
- value: value === null ? undefined : value,
190
+ value: selectedDate,
191
+ onChange: onChange,
210
192
  hideTimeZone: !showTimeZone,
211
193
  granularity: showTime ? 'minute' : granularity,
212
- minValue: minValue,
213
- maxValue: maxValue
194
+ minValue: minDate,
195
+ // this weird logic makes sure the entire day is included if no time is provided in maxDate
196
+ maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
197
+ isDisabled: isDisabled || disabled,
198
+ shouldForceLeadingZeros: true
214
199
  }));
215
200
  var dateFieldRef = React.useRef(null);
216
201
  var _useDateField = datepicker.useDateField(_extends({}, rest, {
217
- label: label,
218
- isDisabled: disabled || rest.isDisabled
202
+ label: label
219
203
  }), state, dateFieldRef),
220
204
  labelProps = _useDateField.labelProps,
221
205
  fieldProps = _useDateField.fieldProps;
@@ -232,7 +216,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
232
216
  className: classNames('eds-datefield', className),
233
217
  labelId: id,
234
218
  ref: utils.mergeRefs(dateFieldRef, ref),
235
- disabled: state.isDisabled,
219
+ disabled: isDisabled || disabled,
236
220
  disableLabelAnimation: true,
237
221
  label: label,
238
222
  labelTooltip: labelTooltip,
@@ -370,10 +354,13 @@ var CalendarGrid = function CalendarGrid(_ref) {
370
354
  }, getNavigationDescription()));
371
355
  };
372
356
 
373
- var _excluded$5 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription", "onSelectedCellClick"];
357
+ var _excluded$5 = ["selectedDate", "onChange", "locale", "minDate", "maxDate", "style", "children", "navigationDescription", "onSelectedCellClick"];
374
358
  var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
375
- var onChange = _ref.onChange,
359
+ var selectedDate = _ref.selectedDate,
360
+ onChange = _ref.onChange,
376
361
  customLocale = _ref.locale,
362
+ minDate = _ref.minDate,
363
+ maxDate = _ref.maxDate,
377
364
  style = _ref.style,
378
365
  navigationDescription = _ref.navigationDescription,
379
366
  _ref$onSelectedCellCl = _ref.onSelectedCellClick,
@@ -384,9 +371,12 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
384
371
  var _useLocale = i18n.useLocale(),
385
372
  locale = _useLocale.locale;
386
373
  var state = calendar$1.useCalendarState(_extends({}, rest, {
374
+ value: selectedDate,
387
375
  onChange: onChange,
388
376
  locale: customLocale != null ? customLocale : locale,
389
- createCalendar: createCalendar
377
+ createCalendar: createCalendar,
378
+ minValue: minDate,
379
+ maxValue: maxDate
390
380
  }));
391
381
  var _useCalendar = calendar.useCalendar(rest, state),
392
382
  calendarProps = _useCalendar.calendarProps,
@@ -423,10 +413,10 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
423
413
 
424
414
  var _excluded$4 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold"];
425
415
  var DatePicker = function DatePicker(_ref) {
426
- var value = _ref.selectedDate,
416
+ var selectedDate = _ref.selectedDate,
427
417
  onChange = _ref.onChange,
428
418
  locale = _ref.locale,
429
- isDisabled = _ref.disabled,
419
+ disabled = _ref.disabled,
430
420
  showTime = _ref.showTime,
431
421
  _ref$showTimeZone = _ref.showTimeZone,
432
422
  showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
@@ -439,8 +429,8 @@ var DatePicker = function DatePicker(_ref) {
439
429
  disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
440
430
  labelTooltip = _ref.labelTooltip,
441
431
  navigationDescription = _ref.navigationDescription,
442
- minValue = _ref.minDate,
443
- maxValue = _ref.maxDate,
432
+ minDate = _ref.minDate,
433
+ maxDate = _ref.maxDate,
444
434
  _ref$modalTreshold = _ref.modalTreshold,
445
435
  modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
446
436
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
@@ -451,17 +441,15 @@ var DatePicker = function DatePicker(_ref) {
451
441
  var _useWindowDimensions = utils.useWindowDimensions(),
452
442
  width = _useWindowDimensions.width;
453
443
  var state = datepicker$1.useDatePickerState(_extends({}, rest, {
454
- minValue: minValue,
455
- maxValue: maxValue,
456
- value: value === null ? undefined : value,
444
+ minValue: minDate,
445
+ // this weird logic makes sure the entire day is included if no time is provided in maxDate
446
+ maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
447
+ value: selectedDate,
457
448
  onChange: onChange,
458
- granularity: showTime ? 'minute' : rest.granularity
449
+ granularity: showTime ? 'minute' : rest.granularity,
450
+ isDisabled: disabled
459
451
  }));
460
- var _useDatePicker = datepicker.useDatePicker(_extends({
461
- isDisabled: isDisabled,
462
- minValue: minValue,
463
- maxValue: maxValue
464
- }, rest), state, datePickerRef),
452
+ var _useDatePicker = datepicker.useDatePicker(_extends({}, rest), state, datePickerRef),
465
453
  groupProps = _useDatePicker.groupProps,
466
454
  labelProps = _useDatePicker.labelProps,
467
455
  fieldProps = _useDatePicker.fieldProps,
@@ -481,12 +469,6 @@ var DatePicker = function DatePicker(_ref) {
481
469
  reference = _useFloating.reference,
482
470
  floating = _useFloating.floating,
483
471
  strategy = _useFloating.strategy;
484
- var onChangeCalendar = function onChangeCalendar(newSelectedDate) {
485
- // Necessary to avoid state update on unmounted component
486
- requestAnimationFrame(function () {
487
- calendarProps.onChange && calendarProps.onChange(newSelectedDate);
488
- });
489
- };
490
472
  utils.useOnClickOutside([calendarRef], function () {
491
473
  state.setOpen(false);
492
474
  });
@@ -494,13 +476,17 @@ var DatePicker = function DatePicker(_ref) {
494
476
  state.setOpen(false);
495
477
  });
496
478
  var calendarSharedProps = _extends({}, dialogProps, calendarProps, {
497
- disabled: calendarProps.isDisabled,
479
+ disabled: disabled,
498
480
  navigationDescription: navigationDescription,
499
481
  onSelectedCellClick: function onSelectedCellClick() {
500
482
  return state.setOpen(false);
501
483
  },
502
- onChange: onChangeCalendar,
503
- granularity: showTime ? 'minute' : rest.granularity
484
+ selectedDate: selectedDate,
485
+ onChange: onChange,
486
+ minDate: minDate,
487
+ maxDate: maxDate,
488
+ granularity: showTime ? 'minute' : rest.granularity,
489
+ ref: calendarRef
504
490
  });
505
491
  var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
506
492
  var popoverCalendar = React.createElement("div", {
@@ -517,9 +503,7 @@ var DatePicker = function DatePicker(_ref) {
517
503
  }, React.createElement(FocusLock, {
518
504
  disabled: !state.isOpen || useModal,
519
505
  returnFocus: true
520
- }, state.isOpen && React.createElement(Calendar, _extends({}, calendarSharedProps, {
521
- ref: calendarRef
522
- }))));
506
+ }, state.isOpen && React.createElement(Calendar, _extends({}, calendarSharedProps))));
523
507
  var modalCalendar = React.createElement(modal.Modal, {
524
508
  size: "small",
525
509
  title: "",
@@ -527,7 +511,6 @@ var DatePicker = function DatePicker(_ref) {
527
511
  onDismiss: function onDismiss() {
528
512
  return state.setOpen(false);
529
513
  },
530
- closeOnClickOutside: true,
531
514
  className: "eds-datepicker__calendar-modal"
532
515
  }, React.createElement(Calendar, _extends({}, calendarSharedProps)));
533
516
  return React.createElement(utils.ConditionalWrapper, {
@@ -547,9 +530,13 @@ var DatePicker = function DatePicker(_ref) {
547
530
  id: undefined,
548
531
  className: "eds-datepicker__datefield__wrapper"
549
532
  }), React.createElement(DateField, _extends({}, fieldProps, {
550
- selectedDate: state.value,
533
+ selectedDate: selectedDate,
534
+ onChange: onChange,
551
535
  label: rest.label,
552
536
  labelProps: labelProps,
537
+ disabled: disabled,
538
+ minDate: minDate,
539
+ maxDate: maxDate,
553
540
  showTime: showTime,
554
541
  showTimeZone: showTimeZone,
555
542
  ref: dateFieldRef,
@@ -559,9 +546,9 @@ var DatePicker = function DatePicker(_ref) {
559
546
  validationFeedback: validationFeedback,
560
547
  labelTooltip: labelTooltip,
561
548
  className: classNames('eds-datepicker__datefield', {
562
- 'eds-datepicker__datefield--disabled': fieldProps.isDisabled
549
+ 'eds-datepicker__datefield--disabled': disabled
563
550
  })
564
- })), !fieldProps.isDisabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
551
+ })), !disabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
565
552
  onPress: function onPress() {
566
553
  return state.setOpen(!state.isOpen);
567
554
  },
@@ -687,9 +674,10 @@ var TimePicker = function TimePicker(_ref) {
687
674
  onChange: onChange,
688
675
  label: label,
689
676
  locale: locale,
690
- value: selectedTime === null ? undefined : selectedTime,
677
+ value: selectedTime,
691
678
  hideTimeZone: !showTimeZone,
692
- isDisabled: disabled
679
+ isDisabled: disabled,
680
+ shouldForceLeadingZeros: true
693
681
  }, rest));
694
682
  var timeFieldRef = React.useRef(null);
695
683
  var _useTimeField = datepicker.useTimeField(_extends({}, rest, {
@@ -720,8 +708,7 @@ var TimePicker = function TimePicker(_ref) {
720
708
  onChange(newTime);
721
709
  };
722
710
  var addMinutesToSelectedTime = function addMinutesToSelectedTime(minutes) {
723
- var _state$value;
724
- state.value && state.setValue((_state$value = state.value) == null ? void 0 : _state$value.add({
711
+ selectedTime !== null && onChange(selectedTime.add({
725
712
  minutes: minutes
726
713
  }));
727
714
  };
@@ -870,7 +857,7 @@ var SimpleTimePicker = function SimpleTimePicker(_ref) {
870
857
  onChange: onChange,
871
858
  label: label,
872
859
  locale: locale,
873
- value: selectedTime === null ? undefined : selectedTime,
860
+ value: selectedTime,
874
861
  hideTimeZone: true,
875
862
  isDisabled: disabled,
876
863
  isReadOnly: readOnly
@@ -1050,6 +1037,7 @@ exports.SimpleTimePicker = SimpleTimePicker;
1050
1037
  exports.TimePicker = TimePicker;
1051
1038
  exports.ariaLabelIfNorwegian = ariaLabelIfNorwegian;
1052
1039
  exports.createCalendar = createCalendar;
1040
+ exports.lastMillisecondOfDay = lastMillisecondOfDay;
1053
1041
  exports.nativeDateToDateValue = nativeDateToDateValue;
1054
1042
  exports.nativeDateToTimeValue = nativeDateToTimeValue;
1055
1043
  exports.timeOrDateValueToNativeDate = timeOrDateValueToNativeDate;