@entur/datepicker 9.1.4 → 9.1.6
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/DatePicker.d.ts +4 -13
- package/dist/TimePicker/TimePicker.d.ts +21 -3
- package/dist/TimePicker/TimePickerArrowButton.d.ts +6 -2
- package/dist/datepicker.cjs.development.js +130 -69
- 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 +130 -71
- 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 +29 -43
- package/package.json +8 -8
|
@@ -66,21 +66,12 @@ export type DatePickerProps<DateType extends DateValue> = {
|
|
|
66
66
|
navigationDescription?: string;
|
|
67
67
|
/** Tvinger typen på onChange til den gitte typen.
|
|
68
68
|
* Dette er nyttig når utgangsverdien din er 'null', men du ønsker at
|
|
69
|
-
* DatePicker
|
|
69
|
+
* DatePicker alltid skal returnere f.eks ZonedDateTime.
|
|
70
70
|
*
|
|
71
|
-
*
|
|
71
|
+
* Som standard returnerer onChange DateValue basert på selectedDate,
|
|
72
|
+
* eller CalendarDate hvis selectedDate er 'null'.
|
|
72
73
|
*
|
|
73
|
-
*
|
|
74
|
-
* I utgangspunktet vil en DatePicker som initieres med 'null' som verdi og ikke viser tid returnere en CalendarDate.
|
|
75
|
-
* Dette er problematisk hvis du bruker datovelgeren sammen en TimePicker da
|
|
76
|
-
* denne ikke støtter dato uten tidspunkt (CalendarDate). Ved å da tvinge DatePicker til å returnere
|
|
77
|
-
* CalendarDateTime eller ZonedDateTime vil du kunne bruke den sammen med TimePicker.
|
|
78
|
-
*
|
|
79
|
-
* Hvorfor kan ikke dette gjøres automatisk?
|
|
80
|
-
* En DatePicker som initieres med 'null' som verdi gir ingen informasjon om hvilken type man ønsker å returnere.
|
|
81
|
-
* DatePicker støtter dog at du kan sende med en TypeScript-type, men TypeScript eksisterer ikke i runtime og
|
|
82
|
-
* kan derfor ikke brukes til å bestemme hvilken type som skal returneres. Det er derfor nødvendig å enten gi
|
|
83
|
-
* en initiell 'selectedDate' eller tvinge typen med denne prop-en.
|
|
74
|
+
* @default undefined
|
|
84
75
|
*/
|
|
85
76
|
forcedReturnType?: 'CalendarDate' | 'CalendarDateTime' | 'ZonedDateTime';
|
|
86
77
|
/** Ekstra klassenavn */
|
|
@@ -9,8 +9,11 @@ export type TimePickerProps<TimeType extends TimeValue> = {
|
|
|
9
9
|
onChange: (value: MappedTimeValue<TimeType> | null) => void;
|
|
10
10
|
/** Label til TimePicker */
|
|
11
11
|
label: string;
|
|
12
|
-
/** Minutter som legges til eller trekkes fra ved klikk på pilene i TimePicker
|
|
13
|
-
*
|
|
12
|
+
/** Minutter som legges til eller trekkes fra ved klikk på pilene i TimePicker.
|
|
13
|
+
* Rundes av til nærmeste hele 'minuteIncrement' som går opp i 60.
|
|
14
|
+
*
|
|
15
|
+
* OBS: Støtter kun verdier <= 60 og multiplum av 60.
|
|
16
|
+
* @default 30
|
|
14
17
|
*/
|
|
15
18
|
minuteIncrementForArrowButtons?: number;
|
|
16
19
|
/** BCP47-språkkoden til locale-en du ønsker å bruke.
|
|
@@ -21,6 +24,10 @@ export type TimePickerProps<TimeType extends TimeValue> = {
|
|
|
21
24
|
* @default false
|
|
22
25
|
*/
|
|
23
26
|
showTimeZone?: boolean;
|
|
27
|
+
/** Viser sekunder i tillegg til minutter og timer
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
showSeconds?: boolean;
|
|
24
31
|
/** Aria-label for venstrepil-knappen som trekker fra tid
|
|
25
32
|
* @default `Trekk fra ${minuteIncrementForArrowButtons} minutter`
|
|
26
33
|
*/
|
|
@@ -36,8 +43,19 @@ export type TimePickerProps<TimeType extends TimeValue> = {
|
|
|
36
43
|
labelTooltip?: React.ReactNode;
|
|
37
44
|
disabled?: boolean;
|
|
38
45
|
inputRef?: React.ForwardedRef<HTMLDivElement>;
|
|
46
|
+
/** Tvinger typen på onChange til den gitte typen.
|
|
47
|
+
* Dette er nyttig når utgangsverdien din er 'null', men du ønsker at
|
|
48
|
+
* TimePicker alltid skal returnere f.eks Time.
|
|
49
|
+
*
|
|
50
|
+
* Som standard returnerer onChange TimeValue basert på selectedTime,
|
|
51
|
+
* eller ZonedDateTime hvis selectedTime er 'null'.
|
|
52
|
+
*
|
|
53
|
+
* @default undefined
|
|
54
|
+
*/
|
|
55
|
+
forcedReturnType?: 'Time' | 'CalendarDateTime' | 'ZonedDateTime';
|
|
56
|
+
forcedTimeZone?: string;
|
|
39
57
|
/** Ekstra klassenavn */
|
|
40
58
|
className?: string;
|
|
41
59
|
style?: React.CSSProperties;
|
|
42
60
|
} & Omit<AriaTimeFieldProps<TimeType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
|
|
43
|
-
export declare const TimePicker: <TimeType extends TimeValue>({ selectedTime, onChange, disabled, className, style, label, labelTooltip, feedback, variant, locale: customLocale, showTimeZone, minuteIncrementForArrowButtons, leftArrowButtonAriaLabel, rightArrowButtonAriaLabel, inputRef, ...rest }: TimePickerProps<TimeType>) => React.JSX.Element;
|
|
61
|
+
export declare const TimePicker: <TimeType extends TimeValue>({ selectedTime, onChange, disabled, className, style, label, labelTooltip, feedback, granularity, variant, locale: customLocale, showTimeZone, showSeconds, minuteIncrementForArrowButtons, leftArrowButtonAriaLabel, rightArrowButtonAriaLabel, inputRef, forcedReturnType, forcedTimeZone, ...rest }: TimePickerProps<TimeType>) => React.JSX.Element;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
type TimePickerArrowButtonProps = {
|
|
3
3
|
direction: 'left' | 'right';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
'aria-label': string;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
onFocus?: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const TimePickerArrowButton: ({ direction, onClick, disabled, "aria-label": ariaLabel, ...rest }: TimePickerArrowButtonProps) => React.JSX.Element;
|
|
6
10
|
export {};
|
|
@@ -48,9 +48,11 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
48
48
|
return target;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
var _excluded$b = ["segment", "state"];
|
|
51
52
|
var FieldSegment = function FieldSegment(_ref) {
|
|
52
53
|
var segment = _ref.segment,
|
|
53
|
-
state = _ref.state
|
|
54
|
+
state = _ref.state,
|
|
55
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
|
|
54
56
|
var ref = React.useRef(null);
|
|
55
57
|
var _useDateSegment = datepicker.useDateSegment(segment, state, ref),
|
|
56
58
|
segmentProps = _useDateSegment.segmentProps;
|
|
@@ -61,7 +63,7 @@ var FieldSegment = function FieldSegment(_ref) {
|
|
|
61
63
|
'eds-date-and-time-field__segment--dot-separator': segment.text === '.'
|
|
62
64
|
}),
|
|
63
65
|
tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex
|
|
64
|
-
}), segment.text);
|
|
66
|
+
}, rest), segment.text);
|
|
65
67
|
};
|
|
66
68
|
|
|
67
69
|
var nativeDateToDateTime = function nativeDateToDateTime(date$1, timeZone, offset) {
|
|
@@ -157,21 +159,46 @@ var lastMillisecondOfDay = function lastMillisecondOfDay(dateValue) {
|
|
|
157
159
|
};
|
|
158
160
|
var convertValueToType = function convertValueToType(_ref) {
|
|
159
161
|
var value = _ref.value,
|
|
160
|
-
type = _ref.type
|
|
162
|
+
type = _ref.type,
|
|
163
|
+
_ref$timezone = _ref.timezone,
|
|
164
|
+
timezone = _ref$timezone === void 0 ? 'Europe/Oslo' : _ref$timezone;
|
|
161
165
|
if (value === null) return null;
|
|
162
166
|
switch (type) {
|
|
163
167
|
case 'CalendarDate':
|
|
168
|
+
if (!('day' in value)) return date.today(timezone);
|
|
164
169
|
return date.toCalendarDate(value);
|
|
165
170
|
case 'CalendarDateTime':
|
|
171
|
+
if (!('day' in value)) return date.toCalendarDateTime(date.today(timezone), value);
|
|
166
172
|
return date.toCalendarDateTime(value);
|
|
167
173
|
case 'ZonedDateTime':
|
|
168
|
-
return date.toZoned(value,
|
|
174
|
+
if (!('day' in value)) return date.toZoned(date.toCalendarDateTime(date.today(timezone), value), timezone);
|
|
175
|
+
return date.toZoned(value, timezone);
|
|
176
|
+
case 'Time':
|
|
177
|
+
if (!('hour' in value)) return date.toTime(date.now(timezone));
|
|
178
|
+
if (!('day' in value)) return value;
|
|
179
|
+
return date.toTime(value);
|
|
169
180
|
default:
|
|
170
181
|
return value;
|
|
171
182
|
}
|
|
172
183
|
};
|
|
184
|
+
var modulo = function modulo(a, b) {
|
|
185
|
+
return (a % b + b) % b;
|
|
186
|
+
};
|
|
187
|
+
var focusSegment = function focusSegment(ref, segment) {
|
|
188
|
+
if (ref.current) {
|
|
189
|
+
var segments = ref.current.querySelectorAll('.eds-date-and-time-field__segment');
|
|
190
|
+
var firstSegment = segments[0];
|
|
191
|
+
var lastSegment = segments[segments.length - 1];
|
|
192
|
+
switch (segment) {
|
|
193
|
+
case 'first':
|
|
194
|
+
return firstSegment.focus();
|
|
195
|
+
case 'last':
|
|
196
|
+
return lastSegment.focus();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
};
|
|
173
200
|
|
|
174
|
-
var _excluded$
|
|
201
|
+
var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
175
202
|
var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
176
203
|
var selectedDate = _ref.selectedDate,
|
|
177
204
|
onChange = _ref.onChange,
|
|
@@ -196,7 +223,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
196
223
|
className = _ref.className,
|
|
197
224
|
parentLabelProps = _ref.labelProps,
|
|
198
225
|
append = _ref.append,
|
|
199
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
226
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
200
227
|
var _useLocale = i18n.useLocale(),
|
|
201
228
|
locale = _useLocale.locale;
|
|
202
229
|
var state = datepicker$1.useDateFieldState(_extends({}, rest, {
|
|
@@ -237,8 +264,8 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
237
264
|
labelTooltip: labelTooltip,
|
|
238
265
|
labelProps: parentLabelProps != null ? parentLabelProps : labelProps
|
|
239
266
|
}, fieldProps, {
|
|
240
|
-
variant:
|
|
241
|
-
feedback:
|
|
267
|
+
variant: variant != null ? variant : state.validationState === 'invalid' ? validationVariant : undefined,
|
|
268
|
+
feedback: feedback != null ? feedback : state.validationState === 'invalid' ? validationFeedback : undefined,
|
|
242
269
|
append: append,
|
|
243
270
|
ariaAlertOnFeedback: true
|
|
244
271
|
}), state.segments.map(function (segment, i) {
|
|
@@ -250,12 +277,12 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
250
277
|
})));
|
|
251
278
|
});
|
|
252
279
|
|
|
253
|
-
var _excluded$
|
|
280
|
+
var _excluded$9 = ["children", "className", "style"];
|
|
254
281
|
var CalendarButton = function CalendarButton(_ref) {
|
|
255
282
|
var children = _ref.children,
|
|
256
283
|
className = _ref.className,
|
|
257
284
|
style = _ref.style,
|
|
258
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
285
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$9);
|
|
259
286
|
var ref = React.useRef(null);
|
|
260
287
|
var _useButton = button.useButton(props, ref),
|
|
261
288
|
buttonProps = _useButton.buttonProps;
|
|
@@ -266,7 +293,7 @@ var CalendarButton = function CalendarButton(_ref) {
|
|
|
266
293
|
}), children);
|
|
267
294
|
};
|
|
268
295
|
|
|
269
|
-
var _excluded$
|
|
296
|
+
var _excluded$8 = ["state", "date", "onSelectedCellClick"];
|
|
270
297
|
var CalendarCell = function CalendarCell(_ref) {
|
|
271
298
|
var _state$timeZone;
|
|
272
299
|
var state = _ref.state,
|
|
@@ -275,7 +302,7 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
275
302
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
276
303
|
return;
|
|
277
304
|
} : _ref$onSelectedCellCl,
|
|
278
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
305
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
279
306
|
var cellRef = React.useRef(null);
|
|
280
307
|
var _useCalendarCell = calendar.useCalendarCell({
|
|
281
308
|
date: date$1
|
|
@@ -310,7 +337,7 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
310
337
|
}), formattedDate));
|
|
311
338
|
};
|
|
312
339
|
|
|
313
|
-
var _excluded$
|
|
340
|
+
var _excluded$7 = ["state", "navigationDescription", "onSelectedCellClick"];
|
|
314
341
|
var CalendarGrid = function CalendarGrid(_ref) {
|
|
315
342
|
var state = _ref.state,
|
|
316
343
|
navigationDescription = _ref.navigationDescription,
|
|
@@ -318,7 +345,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
318
345
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
319
346
|
return;
|
|
320
347
|
} : _ref$onSelectedCellCl,
|
|
321
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
348
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
322
349
|
var calendarGridId = utils.useRandomId('eds-calendar');
|
|
323
350
|
var _useLocale = i18n.useLocale(),
|
|
324
351
|
locale = _useLocale.locale;
|
|
@@ -369,7 +396,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
369
396
|
}, getNavigationDescription()));
|
|
370
397
|
};
|
|
371
398
|
|
|
372
|
-
var _excluded$
|
|
399
|
+
var _excluded$6 = ["selectedDate", "onChange", "locale", "minDate", "maxDate", "style", "children", "navigationDescription", "onSelectedCellClick"];
|
|
373
400
|
var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
374
401
|
var selectedDate = _ref.selectedDate,
|
|
375
402
|
onChange = _ref.onChange,
|
|
@@ -382,7 +409,7 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
382
409
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
383
410
|
return;
|
|
384
411
|
} : _ref$onSelectedCellCl,
|
|
385
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
412
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
386
413
|
var _useLocale = i18n.useLocale(),
|
|
387
414
|
locale = _useLocale.locale;
|
|
388
415
|
var allProps = _extends({}, rest, {
|
|
@@ -427,7 +454,7 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
427
454
|
})));
|
|
428
455
|
});
|
|
429
456
|
|
|
430
|
-
var _excluded$
|
|
457
|
+
var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType"];
|
|
431
458
|
var DatePicker = function DatePicker(_ref) {
|
|
432
459
|
var selectedDate = _ref.selectedDate,
|
|
433
460
|
onChange = _ref.onChange,
|
|
@@ -450,7 +477,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
450
477
|
_ref$modalTreshold = _ref.modalTreshold,
|
|
451
478
|
modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
|
|
452
479
|
forcedReturnType = _ref.forcedReturnType,
|
|
453
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
480
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
454
481
|
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
|
|
455
482
|
var datePickerRef = React.useRef(null);
|
|
456
483
|
var calendarRef = React.useRef(null);
|
|
@@ -461,7 +488,8 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
461
488
|
if (forcedReturnType !== undefined) {
|
|
462
489
|
return onChange(convertValueToType({
|
|
463
490
|
value: value,
|
|
464
|
-
type: forcedReturnType
|
|
491
|
+
type: forcedReturnType,
|
|
492
|
+
timezone: value !== null && 'timezone' in value ? value.timezone : undefined
|
|
465
493
|
}));
|
|
466
494
|
}
|
|
467
495
|
onChange(value);
|
|
@@ -581,7 +609,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
581
609
|
}), React.createElement(icons.CalendarIcon, null)), useModal ? modalCalendar : popoverCalendar)));
|
|
582
610
|
};
|
|
583
611
|
|
|
584
|
-
var _excluded$
|
|
612
|
+
var _excluded$4 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|
|
585
613
|
_excluded2$2 = ["onChange", "variant", "value"];
|
|
586
614
|
var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
587
615
|
var className = _ref.className,
|
|
@@ -595,7 +623,7 @@ var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
595
623
|
prepend = _ref$prepend === void 0 ? React.createElement(icons.DateIcon, {
|
|
596
624
|
inline: true
|
|
597
625
|
}) : _ref$prepend,
|
|
598
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
626
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
599
627
|
var nativedatepickerId = utils.useRandomId('eds-nativetimepicker');
|
|
600
628
|
return React.createElement(form.BaseFormControl, {
|
|
601
629
|
style: style,
|
|
@@ -654,12 +682,14 @@ var NativeDatePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
654
682
|
}, rest));
|
|
655
683
|
});
|
|
656
684
|
|
|
685
|
+
var _excluded$3 = ["direction", "onClick", "disabled", "aria-label"];
|
|
657
686
|
var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
658
687
|
var direction = _ref.direction,
|
|
659
688
|
onClick = _ref.onClick,
|
|
660
689
|
disabled = _ref.disabled,
|
|
661
|
-
ariaLabel = _ref['aria-label']
|
|
662
|
-
|
|
690
|
+
ariaLabel = _ref['aria-label'],
|
|
691
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
692
|
+
return React.createElement(button$1.IconButton, _extends({
|
|
663
693
|
className: classNames('eds-timepicker__arrowbutton', "eds-timepicker__arrowbutton--" + direction, {
|
|
664
694
|
'eds-timepicker__arrowbutton--disabled': disabled
|
|
665
695
|
}),
|
|
@@ -668,10 +698,10 @@ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
|
668
698
|
onClick: onClick,
|
|
669
699
|
"aria-label": ariaLabel,
|
|
670
700
|
disabled: disabled
|
|
671
|
-
}, direction === 'left' ? React.createElement(icons.LeftArrowIcon, null) : React.createElement(icons.RightArrowIcon, null));
|
|
701
|
+
}, rest), direction === 'left' ? React.createElement(icons.LeftArrowIcon, null) : React.createElement(icons.RightArrowIcon, null));
|
|
672
702
|
};
|
|
673
703
|
|
|
674
|
-
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "variant", "locale", "showTimeZone", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef"];
|
|
704
|
+
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "granularity", "variant", "locale", "showTimeZone", "showSeconds", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef", "forcedReturnType", "forcedTimeZone"];
|
|
675
705
|
var TimePicker = function TimePicker(_ref) {
|
|
676
706
|
var selectedTime = _ref.selectedTime,
|
|
677
707
|
onChange = _ref.onChange,
|
|
@@ -681,9 +711,12 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
681
711
|
label = _ref.label,
|
|
682
712
|
labelTooltip = _ref.labelTooltip,
|
|
683
713
|
feedback = _ref.feedback,
|
|
714
|
+
granularity = _ref.granularity,
|
|
684
715
|
variant = _ref.variant,
|
|
685
716
|
customLocale = _ref.locale,
|
|
686
717
|
showTimeZone = _ref.showTimeZone,
|
|
718
|
+
_ref$showSeconds = _ref.showSeconds,
|
|
719
|
+
showSeconds = _ref$showSeconds === void 0 ? false : _ref$showSeconds,
|
|
687
720
|
_ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
|
|
688
721
|
minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
|
|
689
722
|
_ref$leftArrowButtonA = _ref.leftArrowButtonAriaLabel,
|
|
@@ -691,15 +724,30 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
691
724
|
_ref$rightArrowButton = _ref.rightArrowButtonAriaLabel,
|
|
692
725
|
rightArrowButtonAriaLabel = _ref$rightArrowButton === void 0 ? "Legg til " + minuteIncrementForArrowButtons + " minutter" : _ref$rightArrowButton,
|
|
693
726
|
inputRef = _ref.inputRef,
|
|
727
|
+
forcedReturnType = _ref.forcedReturnType,
|
|
728
|
+
forcedTimeZone = _ref.forcedTimeZone,
|
|
694
729
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
695
730
|
var _useLocale = i18n.useLocale(),
|
|
696
731
|
locale = _useLocale.locale;
|
|
697
732
|
if (customLocale) locale = customLocale;
|
|
733
|
+
var timePickerId = utils.useRandomId('eds-timepicker');
|
|
734
|
+
var timeZone = forcedTimeZone != null ? forcedTimeZone : selectedTime !== null && 'timezone' in selectedTime ? selectedTime.timezone : 'Europe/Oslo';
|
|
735
|
+
var handleOnChange = function handleOnChange(value) {
|
|
736
|
+
if (forcedReturnType !== undefined) {
|
|
737
|
+
return onChange(convertValueToType({
|
|
738
|
+
value: value,
|
|
739
|
+
type: forcedReturnType,
|
|
740
|
+
timezone: timeZone
|
|
741
|
+
}));
|
|
742
|
+
}
|
|
743
|
+
onChange(value);
|
|
744
|
+
};
|
|
698
745
|
var state = datepicker$1.useTimeFieldState(_extends({
|
|
699
|
-
onChange:
|
|
746
|
+
onChange: handleOnChange,
|
|
700
747
|
label: label,
|
|
701
748
|
locale: locale,
|
|
702
749
|
value: selectedTime,
|
|
750
|
+
granularity: (granularity != null ? granularity : showSeconds) ? 'second' : 'minute',
|
|
703
751
|
hideTimeZone: !showTimeZone,
|
|
704
752
|
isDisabled: disabled,
|
|
705
753
|
shouldForceLeadingZeros: true
|
|
@@ -711,70 +759,81 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
711
759
|
labelProps = _useTimeField.labelProps,
|
|
712
760
|
fieldProps = _useTimeField.fieldProps;
|
|
713
761
|
var id = utils.useRandomId('timepicker');
|
|
714
|
-
var
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
addMinutesToSelectedTime(minutes);
|
|
719
|
-
}
|
|
720
|
-
};
|
|
721
|
-
var someSegmentIsUndefined = state.segments.some(function (segment) {
|
|
722
|
-
return segment.text === '––';
|
|
723
|
-
});
|
|
724
|
-
var setTimeToNearestMinuteIncrement = function setTimeToNearestMinuteIncrement() {
|
|
725
|
-
var currentTime = date.now(date.getLocalTimeZone());
|
|
726
|
-
var roundedMinute = Math.floor(currentTime.minute / minuteIncrementForArrowButtons) * minuteIncrementForArrowButtons;
|
|
727
|
-
var newTime = currentTime.set({
|
|
728
|
-
minute: roundedMinute
|
|
762
|
+
var getCurrentTime = function getCurrentTime() {
|
|
763
|
+
var getCurrentTimeWithCorrectType = convertValueToType({
|
|
764
|
+
value: date.now(timeZone),
|
|
765
|
+
type: forcedReturnType != null ? forcedReturnType : 'ZonedDateTime'
|
|
729
766
|
});
|
|
730
|
-
|
|
731
|
-
// we can't guarantee newTime matching the type of selectedTime in the future.
|
|
732
|
-
// This might lead to a type issue.
|
|
733
|
-
onChange(newTime);
|
|
767
|
+
return getCurrentTimeWithCorrectType;
|
|
734
768
|
};
|
|
735
|
-
var
|
|
736
|
-
selectedTime
|
|
737
|
-
|
|
738
|
-
|
|
769
|
+
var handleOnClickArrowButton = function handleOnClickArrowButton(operation) {
|
|
770
|
+
if (selectedTime === null) return handleOnChange(getCurrentTime());
|
|
771
|
+
switch (operation) {
|
|
772
|
+
case 'add':
|
|
773
|
+
return handleOnChange(selectedTime.add({
|
|
774
|
+
minutes: minuteIncrementForArrowButtons - modulo(selectedTime.minute, minuteIncrementForArrowButtons)
|
|
775
|
+
}));
|
|
776
|
+
case 'subtract':
|
|
777
|
+
return handleOnChange(selectedTime.subtract({
|
|
778
|
+
minutes: modulo(selectedTime.minute - 1, minuteIncrementForArrowButtons) + 1
|
|
779
|
+
}));
|
|
780
|
+
}
|
|
739
781
|
};
|
|
740
782
|
return React.createElement(i18n.I18nProvider, {
|
|
741
783
|
locale: locale
|
|
742
784
|
}, React.createElement("div", {
|
|
743
785
|
className: classNames(className, 'eds-timepicker__wrapper')
|
|
744
|
-
}, React.createElement(
|
|
745
|
-
direction: "left",
|
|
746
|
-
disabled: disabled,
|
|
747
|
-
"aria-label": leftArrowButtonAriaLabel,
|
|
748
|
-
onClick: function onClick() {
|
|
749
|
-
return handleOnClickArrowButton(minuteIncrementForArrowButtons * -1);
|
|
750
|
-
}
|
|
751
|
-
}), React.createElement(form.BaseFormControl, _extends({
|
|
786
|
+
}, React.createElement(form.BaseFormControl, _extends({
|
|
752
787
|
style: style,
|
|
753
|
-
className: 'eds-timepicker',
|
|
788
|
+
className: classNames('eds-timepicker', {
|
|
789
|
+
'eds-timepicker--disabled': disabled
|
|
790
|
+
}),
|
|
754
791
|
labelId: id,
|
|
755
792
|
label: label,
|
|
756
|
-
labelProps: _extends({}, labelProps
|
|
793
|
+
labelProps: _extends({}, labelProps, {
|
|
794
|
+
'aria-describedby': timePickerId + 'description'
|
|
795
|
+
}),
|
|
757
796
|
ref: utils.mergeRefs(timeFieldRef, inputRef),
|
|
758
797
|
disabled: disabled,
|
|
759
798
|
disableLabelAnimation: true,
|
|
760
799
|
labelTooltip: labelTooltip
|
|
761
800
|
}, fieldProps, {
|
|
762
801
|
variant: variant,
|
|
763
|
-
feedback: feedback
|
|
802
|
+
feedback: feedback,
|
|
803
|
+
ariaAlertOnFeedback: true,
|
|
804
|
+
"aria-describedby": timePickerId + 'description',
|
|
805
|
+
prepend: React.createElement(TimePickerArrowButton, {
|
|
806
|
+
direction: "left",
|
|
807
|
+
disabled: disabled,
|
|
808
|
+
"aria-label": leftArrowButtonAriaLabel,
|
|
809
|
+
onClick: function onClick() {
|
|
810
|
+
return handleOnClickArrowButton('subtract');
|
|
811
|
+
},
|
|
812
|
+
onFocus: function onFocus() {
|
|
813
|
+
return focusSegment(timeFieldRef, 'first');
|
|
814
|
+
}
|
|
815
|
+
}),
|
|
816
|
+
append: React.createElement(TimePickerArrowButton, {
|
|
817
|
+
direction: "right",
|
|
818
|
+
disabled: disabled,
|
|
819
|
+
"aria-label": rightArrowButtonAriaLabel,
|
|
820
|
+
onClick: function onClick() {
|
|
821
|
+
return handleOnClickArrowButton('add');
|
|
822
|
+
},
|
|
823
|
+
onFocus: function onFocus() {
|
|
824
|
+
return focusSegment(timeFieldRef, 'last');
|
|
825
|
+
}
|
|
826
|
+
})
|
|
764
827
|
}), state.segments.map(function (segment, i) {
|
|
765
828
|
return React.createElement(FieldSegment, {
|
|
766
829
|
segment: segment,
|
|
767
830
|
state: state,
|
|
768
|
-
key: i
|
|
831
|
+
key: i,
|
|
832
|
+
"aria-describedby": timePickerId + 'description'
|
|
769
833
|
});
|
|
770
|
-
})), React.createElement(
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
"aria-label": rightArrowButtonAriaLabel,
|
|
774
|
-
onClick: function onClick() {
|
|
775
|
-
return handleOnClickArrowButton(minuteIncrementForArrowButtons);
|
|
776
|
-
}
|
|
777
|
-
})));
|
|
834
|
+
})), React.createElement(a11y.VisuallyHidden, {
|
|
835
|
+
id: timePickerId + 'description'
|
|
836
|
+
}, selectedTime !== null ? 'valgt tid: ' + selectedTime.hour.toString().padStart(2, '0') + ':' + selectedTime.minute.toString().padStart(2, '0') + (showSeconds ? ':' + selectedTime.second.toString().padStart(2, '0') : '') : '')));
|
|
778
837
|
};
|
|
779
838
|
|
|
780
839
|
var _excluded$1 = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
|
|
@@ -1063,7 +1122,9 @@ exports.TimePicker = TimePicker;
|
|
|
1063
1122
|
exports.ariaLabelIfNorwegian = ariaLabelIfNorwegian;
|
|
1064
1123
|
exports.convertValueToType = convertValueToType;
|
|
1065
1124
|
exports.createCalendar = createCalendar;
|
|
1125
|
+
exports.focusSegment = focusSegment;
|
|
1066
1126
|
exports.lastMillisecondOfDay = lastMillisecondOfDay;
|
|
1127
|
+
exports.modulo = modulo;
|
|
1067
1128
|
exports.nativeDateToDateValue = nativeDateToDateValue;
|
|
1068
1129
|
exports.nativeDateToTimeValue = nativeDateToTimeValue;
|
|
1069
1130
|
exports.timeOrDateValueToNativeDate = timeOrDateValueToNativeDate;
|