@entur/datepicker 9.1.5 → 9.2.0-beta.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.
- package/dist/DatePicker/Calendar.d.ts +17 -3
- package/dist/DatePicker/CalendarCell.d.ts +3 -1
- package/dist/DatePicker/CalendarGrid.d.ts +4 -1
- package/dist/DatePicker/DatePicker.d.ts +22 -15
- package/dist/TimePicker/TimePicker.d.ts +21 -3
- package/dist/TimePicker/TimePickerArrowButton.d.ts +6 -2
- package/dist/datepicker.cjs.development.js +151 -74
- package/dist/datepicker.cjs.development.js.map +1 -1
- package/dist/datepicker.cjs.production.min.js +1 -1
- package/dist/datepicker.cjs.production.min.js.map +1 -1
- package/dist/datepicker.esm.js +151 -76
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/shared/FieldSegment.d.ts +2 -1
- package/dist/shared/utils.d.ts +7 -4
- package/dist/styles.css +38 -52
- package/package.json +6 -6
package/dist/datepicker.esm.js
CHANGED
|
@@ -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, toCalendarDateTime, toZoned, toCalendarDate, ZonedDateTime, parseAbsolute, CalendarDateTime, isEqualDay,
|
|
8
|
+
import { CalendarDate, Time, getLocalTimeZone, GregorianCalendar, toCalendarDateTime, toTime, now, toZoned, today, toCalendarDate, ZonedDateTime, parseAbsolute, CalendarDateTime, isEqualDay, getWeeksInMonth, 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';
|
|
@@ -45,9 +45,11 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
45
45
|
return target;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
var _excluded$b = ["segment", "state"];
|
|
48
49
|
var FieldSegment = function FieldSegment(_ref) {
|
|
49
50
|
var segment = _ref.segment,
|
|
50
|
-
state = _ref.state
|
|
51
|
+
state = _ref.state,
|
|
52
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
|
|
51
53
|
var ref = useRef(null);
|
|
52
54
|
var _useDateSegment = useDateSegment(segment, state, ref),
|
|
53
55
|
segmentProps = _useDateSegment.segmentProps;
|
|
@@ -58,7 +60,7 @@ var FieldSegment = function FieldSegment(_ref) {
|
|
|
58
60
|
'eds-date-and-time-field__segment--dot-separator': segment.text === '.'
|
|
59
61
|
}),
|
|
60
62
|
tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex
|
|
61
|
-
}), segment.text);
|
|
63
|
+
}, rest), segment.text);
|
|
62
64
|
};
|
|
63
65
|
|
|
64
66
|
var nativeDateToDateTime = function nativeDateToDateTime(date, timeZone, offset) {
|
|
@@ -154,21 +156,46 @@ var lastMillisecondOfDay = function lastMillisecondOfDay(dateValue) {
|
|
|
154
156
|
};
|
|
155
157
|
var convertValueToType = function convertValueToType(_ref) {
|
|
156
158
|
var value = _ref.value,
|
|
157
|
-
type = _ref.type
|
|
159
|
+
type = _ref.type,
|
|
160
|
+
_ref$timezone = _ref.timezone,
|
|
161
|
+
timezone = _ref$timezone === void 0 ? 'Europe/Oslo' : _ref$timezone;
|
|
158
162
|
if (value === null) return null;
|
|
159
163
|
switch (type) {
|
|
160
164
|
case 'CalendarDate':
|
|
165
|
+
if (!('day' in value)) return today(timezone);
|
|
161
166
|
return toCalendarDate(value);
|
|
162
167
|
case 'CalendarDateTime':
|
|
168
|
+
if (!('day' in value)) return toCalendarDateTime(today(timezone), value);
|
|
163
169
|
return toCalendarDateTime(value);
|
|
164
170
|
case 'ZonedDateTime':
|
|
165
|
-
return toZoned(value,
|
|
171
|
+
if (!('day' in value)) return toZoned(toCalendarDateTime(today(timezone), value), timezone);
|
|
172
|
+
return toZoned(value, timezone);
|
|
173
|
+
case 'Time':
|
|
174
|
+
if (!('hour' in value)) return toTime(now(timezone));
|
|
175
|
+
if (!('day' in value)) return value;
|
|
176
|
+
return toTime(value);
|
|
166
177
|
default:
|
|
167
178
|
return value;
|
|
168
179
|
}
|
|
169
180
|
};
|
|
181
|
+
var modulo = function modulo(a, b) {
|
|
182
|
+
return (a % b + b) % b;
|
|
183
|
+
};
|
|
184
|
+
var focusSegment = function focusSegment(ref, segment) {
|
|
185
|
+
if (ref.current) {
|
|
186
|
+
var segments = ref.current.querySelectorAll('.eds-date-and-time-field__segment');
|
|
187
|
+
var firstSegment = segments[0];
|
|
188
|
+
var lastSegment = segments[segments.length - 1];
|
|
189
|
+
switch (segment) {
|
|
190
|
+
case 'first':
|
|
191
|
+
return firstSegment.focus();
|
|
192
|
+
case 'last':
|
|
193
|
+
return lastSegment.focus();
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
};
|
|
170
197
|
|
|
171
|
-
var _excluded$
|
|
198
|
+
var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
172
199
|
var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
173
200
|
var selectedDate = _ref.selectedDate,
|
|
174
201
|
onChange = _ref.onChange,
|
|
@@ -193,7 +220,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
193
220
|
className = _ref.className,
|
|
194
221
|
parentLabelProps = _ref.labelProps,
|
|
195
222
|
append = _ref.append,
|
|
196
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
223
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
197
224
|
var _useLocale = useLocale(),
|
|
198
225
|
locale = _useLocale.locale;
|
|
199
226
|
var state = useDateFieldState(_extends({}, rest, {
|
|
@@ -234,8 +261,8 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
234
261
|
labelTooltip: labelTooltip,
|
|
235
262
|
labelProps: parentLabelProps != null ? parentLabelProps : labelProps
|
|
236
263
|
}, fieldProps, {
|
|
237
|
-
variant:
|
|
238
|
-
feedback:
|
|
264
|
+
variant: variant != null ? variant : state.validationState === 'invalid' ? validationVariant : undefined,
|
|
265
|
+
feedback: feedback != null ? feedback : state.validationState === 'invalid' ? validationFeedback : undefined,
|
|
239
266
|
append: append,
|
|
240
267
|
ariaAlertOnFeedback: true
|
|
241
268
|
}), state.segments.map(function (segment, i) {
|
|
@@ -247,12 +274,12 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
247
274
|
})));
|
|
248
275
|
});
|
|
249
276
|
|
|
250
|
-
var _excluded$
|
|
277
|
+
var _excluded$9 = ["children", "className", "style"];
|
|
251
278
|
var CalendarButton = function CalendarButton(_ref) {
|
|
252
279
|
var children = _ref.children,
|
|
253
280
|
className = _ref.className,
|
|
254
281
|
style = _ref.style,
|
|
255
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
282
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$9);
|
|
256
283
|
var ref = useRef(null);
|
|
257
284
|
var _useButton = useButton(props, ref),
|
|
258
285
|
buttonProps = _useButton.buttonProps;
|
|
@@ -263,16 +290,18 @@ var CalendarButton = function CalendarButton(_ref) {
|
|
|
263
290
|
}), children);
|
|
264
291
|
};
|
|
265
292
|
|
|
266
|
-
var _excluded$
|
|
293
|
+
var _excluded$8 = ["state", "date", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
|
|
267
294
|
var CalendarCell = function CalendarCell(_ref) {
|
|
268
|
-
var _state$timeZone;
|
|
295
|
+
var _ariaLabelForDate, _classNameForDate, _state$timeZone;
|
|
269
296
|
var state = _ref.state,
|
|
270
297
|
date = _ref.date,
|
|
271
298
|
_ref$onSelectedCellCl = _ref.onSelectedCellClick,
|
|
272
299
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
273
300
|
return;
|
|
274
301
|
} : _ref$onSelectedCellCl,
|
|
275
|
-
|
|
302
|
+
classNameForDate = _ref.classNameForDate,
|
|
303
|
+
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
304
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
276
305
|
var cellRef = useRef(null);
|
|
277
306
|
var _useCalendarCell = useCalendarCell({
|
|
278
307
|
date: date
|
|
@@ -284,12 +313,14 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
284
313
|
isDisabled = _useCalendarCell.isDisabled,
|
|
285
314
|
isUnavailable = _useCalendarCell.isUnavailable,
|
|
286
315
|
formattedDate = _useCalendarCell.formattedDate;
|
|
316
|
+
var ariaLabel = buttonProps['aria-label'] + " " + ((_ariaLabelForDate = ariaLabelForDate == null ? void 0 : ariaLabelForDate(date)) != null ? _ariaLabelForDate : '');
|
|
287
317
|
return React.createElement("td", _extends({}, cellProps, {
|
|
288
318
|
className: "eds-datepicker__calendar__grid__cell__td"
|
|
289
319
|
}), React.createElement("div", _extends({}, buttonProps, {
|
|
320
|
+
"aria-label": ariaLabel,
|
|
290
321
|
ref: cellRef,
|
|
291
322
|
hidden: isOutsideVisibleRange,
|
|
292
|
-
className: classNames('eds-datepicker__calendar__grid__cell', {
|
|
323
|
+
className: classNames('eds-datepicker__calendar__grid__cell', [(_classNameForDate = classNameForDate == null ? void 0 : classNameForDate(date)) != null ? _classNameForDate : ''], {
|
|
293
324
|
'eds-datepicker__calendar__grid__cell--selected': isSelected,
|
|
294
325
|
'eds-datepicker__calendar__grid__cell--disabled': isDisabled || isUnavailable,
|
|
295
326
|
'eds-datepicker__calendar__grid__cell--outside-month': isOutsideVisibleRange,
|
|
@@ -307,7 +338,7 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
307
338
|
}), formattedDate));
|
|
308
339
|
};
|
|
309
340
|
|
|
310
|
-
var _excluded$
|
|
341
|
+
var _excluded$7 = ["state", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
|
|
311
342
|
var CalendarGrid = function CalendarGrid(_ref) {
|
|
312
343
|
var state = _ref.state,
|
|
313
344
|
navigationDescription = _ref.navigationDescription,
|
|
@@ -315,7 +346,9 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
315
346
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
316
347
|
return;
|
|
317
348
|
} : _ref$onSelectedCellCl,
|
|
318
|
-
|
|
349
|
+
classNameForDate = _ref.classNameForDate,
|
|
350
|
+
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
351
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
319
352
|
var calendarGridId = useRandomId('eds-calendar');
|
|
320
353
|
var _useLocale = useLocale(),
|
|
321
354
|
locale = _useLocale.locale;
|
|
@@ -356,7 +389,9 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
356
389
|
state: state,
|
|
357
390
|
date: date,
|
|
358
391
|
"aria-describedby": calendarGridId + 'description',
|
|
359
|
-
onSelectedCellClick: onSelectedCellClick
|
|
392
|
+
onSelectedCellClick: onSelectedCellClick,
|
|
393
|
+
classNameForDate: classNameForDate,
|
|
394
|
+
ariaLabelForDate: ariaLabelForDate
|
|
360
395
|
}) : React.createElement("td", {
|
|
361
396
|
key: i
|
|
362
397
|
});
|
|
@@ -366,7 +401,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
366
401
|
}, getNavigationDescription()));
|
|
367
402
|
};
|
|
368
403
|
|
|
369
|
-
var _excluded$
|
|
404
|
+
var _excluded$6 = ["selectedDate", "onChange", "locale", "minDate", "maxDate", "style", "children", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
|
|
370
405
|
var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
371
406
|
var selectedDate = _ref.selectedDate,
|
|
372
407
|
onChange = _ref.onChange,
|
|
@@ -379,7 +414,9 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
379
414
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
380
415
|
return;
|
|
381
416
|
} : _ref$onSelectedCellCl,
|
|
382
|
-
|
|
417
|
+
classNameForDate = _ref.classNameForDate,
|
|
418
|
+
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
419
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
383
420
|
var _useLocale = useLocale(),
|
|
384
421
|
locale = _useLocale.locale;
|
|
385
422
|
var allProps = _extends({}, rest, {
|
|
@@ -420,11 +457,13 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
420
457
|
}))), React.createElement(CalendarGrid, {
|
|
421
458
|
state: state,
|
|
422
459
|
navigationDescription: navigationDescription,
|
|
423
|
-
onSelectedCellClick: onSelectedCellClick
|
|
460
|
+
onSelectedCellClick: onSelectedCellClick,
|
|
461
|
+
classNameForDate: classNameForDate,
|
|
462
|
+
ariaLabelForDate: ariaLabelForDate
|
|
424
463
|
})));
|
|
425
464
|
});
|
|
426
465
|
|
|
427
|
-
var _excluded$
|
|
466
|
+
var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate"];
|
|
428
467
|
var DatePicker = function DatePicker(_ref) {
|
|
429
468
|
var selectedDate = _ref.selectedDate,
|
|
430
469
|
onChange = _ref.onChange,
|
|
@@ -433,6 +472,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
433
472
|
showTime = _ref.showTime,
|
|
434
473
|
_ref$showTimeZone = _ref.showTimeZone,
|
|
435
474
|
showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
|
|
475
|
+
classNameForDate = _ref.classNameForDate,
|
|
436
476
|
className = _ref.className,
|
|
437
477
|
variant = _ref.variant,
|
|
438
478
|
feedback = _ref.feedback,
|
|
@@ -447,7 +487,8 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
447
487
|
_ref$modalTreshold = _ref.modalTreshold,
|
|
448
488
|
modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
|
|
449
489
|
forcedReturnType = _ref.forcedReturnType,
|
|
450
|
-
|
|
490
|
+
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
491
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
451
492
|
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
|
|
452
493
|
var datePickerRef = useRef(null);
|
|
453
494
|
var calendarRef = useRef(null);
|
|
@@ -458,7 +499,8 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
458
499
|
if (forcedReturnType !== undefined) {
|
|
459
500
|
return onChange(convertValueToType({
|
|
460
501
|
value: value,
|
|
461
|
-
type: forcedReturnType
|
|
502
|
+
type: forcedReturnType,
|
|
503
|
+
timezone: value !== null && 'timezone' in value ? value.timezone : undefined
|
|
462
504
|
}));
|
|
463
505
|
}
|
|
464
506
|
onChange(value);
|
|
@@ -508,7 +550,9 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
508
550
|
onChange: handleOnChange,
|
|
509
551
|
minDate: minDate,
|
|
510
552
|
maxDate: maxDate,
|
|
511
|
-
ref: calendarRef
|
|
553
|
+
ref: calendarRef,
|
|
554
|
+
classNameForDate: classNameForDate,
|
|
555
|
+
ariaLabelForDate: ariaLabelForDate
|
|
512
556
|
});
|
|
513
557
|
var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
|
|
514
558
|
var popoverCalendar = React.createElement("div", {
|
|
@@ -578,7 +622,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
578
622
|
}), React.createElement(CalendarIcon, null)), useModal ? modalCalendar : popoverCalendar)));
|
|
579
623
|
};
|
|
580
624
|
|
|
581
|
-
var _excluded$
|
|
625
|
+
var _excluded$4 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|
|
582
626
|
_excluded2$2 = ["onChange", "variant", "value"];
|
|
583
627
|
var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
584
628
|
var className = _ref.className,
|
|
@@ -592,7 +636,7 @@ var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
592
636
|
prepend = _ref$prepend === void 0 ? React.createElement(DateIcon, {
|
|
593
637
|
inline: true
|
|
594
638
|
}) : _ref$prepend,
|
|
595
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
639
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
596
640
|
var nativedatepickerId = useRandomId('eds-nativetimepicker');
|
|
597
641
|
return React.createElement(BaseFormControl, {
|
|
598
642
|
style: style,
|
|
@@ -651,12 +695,14 @@ var NativeDatePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
651
695
|
}, rest));
|
|
652
696
|
});
|
|
653
697
|
|
|
698
|
+
var _excluded$3 = ["direction", "onClick", "disabled", "aria-label"];
|
|
654
699
|
var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
655
700
|
var direction = _ref.direction,
|
|
656
701
|
onClick = _ref.onClick,
|
|
657
702
|
disabled = _ref.disabled,
|
|
658
|
-
ariaLabel = _ref['aria-label']
|
|
659
|
-
|
|
703
|
+
ariaLabel = _ref['aria-label'],
|
|
704
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
705
|
+
return React.createElement(IconButton, _extends({
|
|
660
706
|
className: classNames('eds-timepicker__arrowbutton', "eds-timepicker__arrowbutton--" + direction, {
|
|
661
707
|
'eds-timepicker__arrowbutton--disabled': disabled
|
|
662
708
|
}),
|
|
@@ -665,10 +711,10 @@ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
|
665
711
|
onClick: onClick,
|
|
666
712
|
"aria-label": ariaLabel,
|
|
667
713
|
disabled: disabled
|
|
668
|
-
}, direction === 'left' ? React.createElement(LeftArrowIcon, null) : React.createElement(RightArrowIcon, null));
|
|
714
|
+
}, rest), direction === 'left' ? React.createElement(LeftArrowIcon, null) : React.createElement(RightArrowIcon, null));
|
|
669
715
|
};
|
|
670
716
|
|
|
671
|
-
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "variant", "locale", "showTimeZone", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef"];
|
|
717
|
+
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "granularity", "variant", "locale", "showTimeZone", "showSeconds", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef", "forcedReturnType", "forcedTimeZone"];
|
|
672
718
|
var TimePicker = function TimePicker(_ref) {
|
|
673
719
|
var selectedTime = _ref.selectedTime,
|
|
674
720
|
onChange = _ref.onChange,
|
|
@@ -678,9 +724,12 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
678
724
|
label = _ref.label,
|
|
679
725
|
labelTooltip = _ref.labelTooltip,
|
|
680
726
|
feedback = _ref.feedback,
|
|
727
|
+
granularity = _ref.granularity,
|
|
681
728
|
variant = _ref.variant,
|
|
682
729
|
customLocale = _ref.locale,
|
|
683
730
|
showTimeZone = _ref.showTimeZone,
|
|
731
|
+
_ref$showSeconds = _ref.showSeconds,
|
|
732
|
+
showSeconds = _ref$showSeconds === void 0 ? false : _ref$showSeconds,
|
|
684
733
|
_ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
|
|
685
734
|
minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
|
|
686
735
|
_ref$leftArrowButtonA = _ref.leftArrowButtonAriaLabel,
|
|
@@ -688,15 +737,30 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
688
737
|
_ref$rightArrowButton = _ref.rightArrowButtonAriaLabel,
|
|
689
738
|
rightArrowButtonAriaLabel = _ref$rightArrowButton === void 0 ? "Legg til " + minuteIncrementForArrowButtons + " minutter" : _ref$rightArrowButton,
|
|
690
739
|
inputRef = _ref.inputRef,
|
|
740
|
+
forcedReturnType = _ref.forcedReturnType,
|
|
741
|
+
forcedTimeZone = _ref.forcedTimeZone,
|
|
691
742
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
692
743
|
var _useLocale = useLocale(),
|
|
693
744
|
locale = _useLocale.locale;
|
|
694
745
|
if (customLocale) locale = customLocale;
|
|
746
|
+
var timePickerId = useRandomId('eds-timepicker');
|
|
747
|
+
var timeZone = forcedTimeZone != null ? forcedTimeZone : selectedTime !== null && 'timezone' in selectedTime ? selectedTime.timezone : 'Europe/Oslo';
|
|
748
|
+
var handleOnChange = function handleOnChange(value) {
|
|
749
|
+
if (forcedReturnType !== undefined) {
|
|
750
|
+
return onChange(convertValueToType({
|
|
751
|
+
value: value,
|
|
752
|
+
type: forcedReturnType,
|
|
753
|
+
timezone: timeZone
|
|
754
|
+
}));
|
|
755
|
+
}
|
|
756
|
+
onChange(value);
|
|
757
|
+
};
|
|
695
758
|
var state = useTimeFieldState(_extends({
|
|
696
|
-
onChange:
|
|
759
|
+
onChange: handleOnChange,
|
|
697
760
|
label: label,
|
|
698
761
|
locale: locale,
|
|
699
762
|
value: selectedTime,
|
|
763
|
+
granularity: (granularity != null ? granularity : showSeconds) ? 'second' : 'minute',
|
|
700
764
|
hideTimeZone: !showTimeZone,
|
|
701
765
|
isDisabled: disabled,
|
|
702
766
|
shouldForceLeadingZeros: true
|
|
@@ -708,70 +772,81 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
708
772
|
labelProps = _useTimeField.labelProps,
|
|
709
773
|
fieldProps = _useTimeField.fieldProps;
|
|
710
774
|
var id = useRandomId('timepicker');
|
|
711
|
-
var
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
addMinutesToSelectedTime(minutes);
|
|
716
|
-
}
|
|
717
|
-
};
|
|
718
|
-
var someSegmentIsUndefined = state.segments.some(function (segment) {
|
|
719
|
-
return segment.text === '––';
|
|
720
|
-
});
|
|
721
|
-
var setTimeToNearestMinuteIncrement = function setTimeToNearestMinuteIncrement() {
|
|
722
|
-
var currentTime = now(getLocalTimeZone());
|
|
723
|
-
var roundedMinute = Math.floor(currentTime.minute / minuteIncrementForArrowButtons) * minuteIncrementForArrowButtons;
|
|
724
|
-
var newTime = currentTime.set({
|
|
725
|
-
minute: roundedMinute
|
|
775
|
+
var getCurrentTime = function getCurrentTime() {
|
|
776
|
+
var getCurrentTimeWithCorrectType = convertValueToType({
|
|
777
|
+
value: now(timeZone),
|
|
778
|
+
type: forcedReturnType != null ? forcedReturnType : 'ZonedDateTime'
|
|
726
779
|
});
|
|
727
|
-
|
|
728
|
-
// we can't guarantee newTime matching the type of selectedTime in the future.
|
|
729
|
-
// This might lead to a type issue.
|
|
730
|
-
onChange(newTime);
|
|
780
|
+
return getCurrentTimeWithCorrectType;
|
|
731
781
|
};
|
|
732
|
-
var
|
|
733
|
-
selectedTime
|
|
734
|
-
|
|
735
|
-
|
|
782
|
+
var handleOnClickArrowButton = function handleOnClickArrowButton(operation) {
|
|
783
|
+
if (selectedTime === null) return handleOnChange(getCurrentTime());
|
|
784
|
+
switch (operation) {
|
|
785
|
+
case 'add':
|
|
786
|
+
return handleOnChange(selectedTime.add({
|
|
787
|
+
minutes: minuteIncrementForArrowButtons - modulo(selectedTime.minute, minuteIncrementForArrowButtons)
|
|
788
|
+
}));
|
|
789
|
+
case 'subtract':
|
|
790
|
+
return handleOnChange(selectedTime.subtract({
|
|
791
|
+
minutes: modulo(selectedTime.minute - 1, minuteIncrementForArrowButtons) + 1
|
|
792
|
+
}));
|
|
793
|
+
}
|
|
736
794
|
};
|
|
737
795
|
return React.createElement(I18nProvider, {
|
|
738
796
|
locale: locale
|
|
739
797
|
}, React.createElement("div", {
|
|
740
798
|
className: classNames(className, 'eds-timepicker__wrapper')
|
|
741
|
-
}, React.createElement(
|
|
742
|
-
direction: "left",
|
|
743
|
-
disabled: disabled,
|
|
744
|
-
"aria-label": leftArrowButtonAriaLabel,
|
|
745
|
-
onClick: function onClick() {
|
|
746
|
-
return handleOnClickArrowButton(minuteIncrementForArrowButtons * -1);
|
|
747
|
-
}
|
|
748
|
-
}), React.createElement(BaseFormControl, _extends({
|
|
799
|
+
}, React.createElement(BaseFormControl, _extends({
|
|
749
800
|
style: style,
|
|
750
|
-
className: 'eds-timepicker',
|
|
801
|
+
className: classNames('eds-timepicker', {
|
|
802
|
+
'eds-timepicker--disabled': disabled
|
|
803
|
+
}),
|
|
751
804
|
labelId: id,
|
|
752
805
|
label: label,
|
|
753
|
-
labelProps: _extends({}, labelProps
|
|
806
|
+
labelProps: _extends({}, labelProps, {
|
|
807
|
+
'aria-describedby': timePickerId + 'description'
|
|
808
|
+
}),
|
|
754
809
|
ref: mergeRefs(timeFieldRef, inputRef),
|
|
755
810
|
disabled: disabled,
|
|
756
811
|
disableLabelAnimation: true,
|
|
757
812
|
labelTooltip: labelTooltip
|
|
758
813
|
}, fieldProps, {
|
|
759
814
|
variant: variant,
|
|
760
|
-
feedback: feedback
|
|
815
|
+
feedback: feedback,
|
|
816
|
+
ariaAlertOnFeedback: true,
|
|
817
|
+
"aria-describedby": timePickerId + 'description',
|
|
818
|
+
prepend: React.createElement(TimePickerArrowButton, {
|
|
819
|
+
direction: "left",
|
|
820
|
+
disabled: disabled,
|
|
821
|
+
"aria-label": leftArrowButtonAriaLabel,
|
|
822
|
+
onClick: function onClick() {
|
|
823
|
+
return handleOnClickArrowButton('subtract');
|
|
824
|
+
},
|
|
825
|
+
onFocus: function onFocus() {
|
|
826
|
+
return focusSegment(timeFieldRef, 'first');
|
|
827
|
+
}
|
|
828
|
+
}),
|
|
829
|
+
append: React.createElement(TimePickerArrowButton, {
|
|
830
|
+
direction: "right",
|
|
831
|
+
disabled: disabled,
|
|
832
|
+
"aria-label": rightArrowButtonAriaLabel,
|
|
833
|
+
onClick: function onClick() {
|
|
834
|
+
return handleOnClickArrowButton('add');
|
|
835
|
+
},
|
|
836
|
+
onFocus: function onFocus() {
|
|
837
|
+
return focusSegment(timeFieldRef, 'last');
|
|
838
|
+
}
|
|
839
|
+
})
|
|
761
840
|
}), state.segments.map(function (segment, i) {
|
|
762
841
|
return React.createElement(FieldSegment, {
|
|
763
842
|
segment: segment,
|
|
764
843
|
state: state,
|
|
765
|
-
key: i
|
|
844
|
+
key: i,
|
|
845
|
+
"aria-describedby": timePickerId + 'description'
|
|
766
846
|
});
|
|
767
|
-
})), React.createElement(
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
"aria-label": rightArrowButtonAriaLabel,
|
|
771
|
-
onClick: function onClick() {
|
|
772
|
-
return handleOnClickArrowButton(minuteIncrementForArrowButtons);
|
|
773
|
-
}
|
|
774
|
-
})));
|
|
847
|
+
})), React.createElement(VisuallyHidden, {
|
|
848
|
+
id: timePickerId + 'description'
|
|
849
|
+
}, selectedTime !== null ? 'valgt tid: ' + selectedTime.hour.toString().padStart(2, '0') + ':' + selectedTime.minute.toString().padStart(2, '0') + (showSeconds ? ':' + selectedTime.second.toString().padStart(2, '0') : '') : '')));
|
|
775
850
|
};
|
|
776
851
|
|
|
777
852
|
var _excluded$1 = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
|
|
@@ -1034,5 +1109,5 @@ var SimpleTimePicker = function SimpleTimePicker(_ref) {
|
|
|
1034
1109
|
|
|
1035
1110
|
warnAboutMissingStyles('datepicker', 'form', 'icons');
|
|
1036
1111
|
|
|
1037
|
-
export { Calendar, DateField, DatePicker, NativeDatePicker, NativeTimePicker, SimpleTimePicker, TimePicker, ariaLabelIfNorwegian, convertValueToType, createCalendar, lastMillisecondOfDay, nativeDateToDateValue, nativeDateToTimeValue, timeOrDateValueToNativeDate };
|
|
1112
|
+
export { Calendar, DateField, DatePicker, NativeDatePicker, NativeTimePicker, SimpleTimePicker, TimePicker, ariaLabelIfNorwegian, convertValueToType, createCalendar, focusSegment, lastMillisecondOfDay, modulo, nativeDateToDateValue, nativeDateToTimeValue, timeOrDateValueToNativeDate };
|
|
1038
1113
|
//# sourceMappingURL=datepicker.esm.js.map
|