@entur/datepicker 8.0.10 → 8.1.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/TimePicker/SimpleTimePicker.d.ts +37 -0
- package/dist/TimePicker/index.d.ts +1 -0
- package/dist/datepicker.cjs.development.js +204 -23
- 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 +208 -28
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/styles.css +47 -3
- package/package.json +15 -15
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { TimeValue, AriaTimeFieldProps, MappedTimeValue } from '@react-types/datepicker';
|
|
3
|
+
import { VariantType } from '@entur/form';
|
|
4
|
+
import './SimpleTimePicker.scss';
|
|
5
|
+
export type SimpleTimePickerProps<TimeType extends TimeValue> = {
|
|
6
|
+
/** Den valgte tiden. Tid i '@internationalized/date'-pakkens format */
|
|
7
|
+
selectedTime: TimeType | null;
|
|
8
|
+
/** Kalles når tiden endres. Tid i '@internationalized/date'-pakkens format */
|
|
9
|
+
onChange?: (value: MappedTimeValue<TimeType> | null) => void | React.Dispatch<React.SetStateAction<TimeValue | null>>;
|
|
10
|
+
/** Label til TimePicker */
|
|
11
|
+
label: string;
|
|
12
|
+
/** Viser den gjeldende tidssonen hvis en er valgt
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
showTimeZone?: boolean;
|
|
16
|
+
/** Viser sekund i tillegg til time og minutt
|
|
17
|
+
* @default false
|
|
18
|
+
*/
|
|
19
|
+
showSeconds?: boolean;
|
|
20
|
+
/** Viser et klokkeikonet for å klarere indikere at dette
|
|
21
|
+
* er en tidsvelger
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
showClockIcon?: boolean;
|
|
25
|
+
/** Varselmelding, som vil komme under TimePicker */
|
|
26
|
+
feedback?: string;
|
|
27
|
+
/** Valideringsvariant */
|
|
28
|
+
variant?: VariantType;
|
|
29
|
+
labelTooltip?: React.ReactNode;
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
readOnly?: boolean;
|
|
32
|
+
inputRef?: React.ForwardedRef<HTMLInputElement>;
|
|
33
|
+
/** Ekstra klassenavn */
|
|
34
|
+
className?: string;
|
|
35
|
+
style?: React.CSSProperties;
|
|
36
|
+
} & Omit<AriaTimeFieldProps<TimeType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue' | 'locale'>;
|
|
37
|
+
export declare const SimpleTimePicker: <TimeType extends TimeValue>({ className, disabled, feedback, showClockIcon, inputRef, label, labelTooltip, onChange, readOnly, selectedTime, showSeconds, showTimeZone, style, variant, ...rest }: SimpleTimePickerProps<TimeType>) => JSX.Element;
|
|
@@ -183,7 +183,7 @@ var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, loc
|
|
|
183
183
|
return norwegianAriaLabel;
|
|
184
184
|
};
|
|
185
185
|
|
|
186
|
-
var _excluded$
|
|
186
|
+
var _excluded$9 = ["selectedDate", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
187
187
|
var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
188
188
|
var value = _ref.selectedDate,
|
|
189
189
|
label = _ref.label,
|
|
@@ -206,7 +206,7 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
206
206
|
className = _ref.className,
|
|
207
207
|
parentLabelProps = _ref.labelProps,
|
|
208
208
|
append = _ref.append,
|
|
209
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
209
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
|
|
210
210
|
var _useLocale = i18n.useLocale(),
|
|
211
211
|
locale = _useLocale.locale;
|
|
212
212
|
var state = datepicker$1.useDateFieldState(_extends({}, rest, {
|
|
@@ -257,12 +257,12 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
257
257
|
})));
|
|
258
258
|
});
|
|
259
259
|
|
|
260
|
-
var _excluded$
|
|
260
|
+
var _excluded$8 = ["children", "className", "style"];
|
|
261
261
|
var CalendarButton = function CalendarButton(_ref) {
|
|
262
262
|
var children = _ref.children,
|
|
263
263
|
className = _ref.className,
|
|
264
264
|
style = _ref.style,
|
|
265
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
265
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
266
266
|
var ref = React.useRef(null);
|
|
267
267
|
var _useButton = button.useButton(props, ref),
|
|
268
268
|
buttonProps = _useButton.buttonProps;
|
|
@@ -273,7 +273,7 @@ var CalendarButton = function CalendarButton(_ref) {
|
|
|
273
273
|
}), children);
|
|
274
274
|
};
|
|
275
275
|
|
|
276
|
-
var _excluded$
|
|
276
|
+
var _excluded$7 = ["state", "date", "onSelectedCellClick"];
|
|
277
277
|
var CalendarCell = function CalendarCell(_ref) {
|
|
278
278
|
var _state$timeZone;
|
|
279
279
|
var state = _ref.state,
|
|
@@ -282,7 +282,7 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
282
282
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
283
283
|
return;
|
|
284
284
|
} : _ref$onSelectedCellCl,
|
|
285
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
285
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
286
286
|
var cellRef = React.useRef(null);
|
|
287
287
|
var _useCalendarCell = calendar.useCalendarCell({
|
|
288
288
|
date: date$1
|
|
@@ -317,7 +317,7 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
317
317
|
}), formattedDate));
|
|
318
318
|
};
|
|
319
319
|
|
|
320
|
-
var _excluded$
|
|
320
|
+
var _excluded$6 = ["state", "navigationDescription", "onSelectedCellClick"];
|
|
321
321
|
var CalendarGrid = function CalendarGrid(_ref) {
|
|
322
322
|
var state = _ref.state,
|
|
323
323
|
navigationDescription = _ref.navigationDescription,
|
|
@@ -325,7 +325,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
325
325
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
326
326
|
return;
|
|
327
327
|
} : _ref$onSelectedCellCl,
|
|
328
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
328
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
329
329
|
var calendarGridId = utils.useRandomId('eds-calendar');
|
|
330
330
|
var _useLocale = i18n.useLocale(),
|
|
331
331
|
locale = _useLocale.locale;
|
|
@@ -376,7 +376,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
376
376
|
}, getNavigationDescription()));
|
|
377
377
|
};
|
|
378
378
|
|
|
379
|
-
var _excluded$
|
|
379
|
+
var _excluded$5 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription", "onSelectedCellClick"];
|
|
380
380
|
var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
381
381
|
var onChange = _ref.onChange,
|
|
382
382
|
customLocale = _ref.locale,
|
|
@@ -386,7 +386,7 @@ var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
386
386
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
387
387
|
return;
|
|
388
388
|
} : _ref$onSelectedCellCl,
|
|
389
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
389
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
390
390
|
var _useLocale = i18n.useLocale(),
|
|
391
391
|
locale = _useLocale.locale;
|
|
392
392
|
var state = calendar$1.useCalendarState(_extends({}, rest, {
|
|
@@ -427,7 +427,7 @@ var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
427
427
|
})));
|
|
428
428
|
});
|
|
429
429
|
|
|
430
|
-
var _excluded$
|
|
430
|
+
var _excluded$4 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold"];
|
|
431
431
|
var DatePicker = function DatePicker(_ref) {
|
|
432
432
|
var value = _ref.selectedDate,
|
|
433
433
|
onChange = _ref.onChange,
|
|
@@ -449,7 +449,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
449
449
|
maxValue = _ref.maxDate,
|
|
450
450
|
_ref$modalTreshold = _ref.modalTreshold,
|
|
451
451
|
modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
|
|
452
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
452
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
453
453
|
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
|
|
454
454
|
var datePickerRef = React.useRef(null);
|
|
455
455
|
var calendarRef = React.useRef(null);
|
|
@@ -575,8 +575,8 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
575
575
|
}), React__default["default"].createElement(icons.CalendarIcon, null)), useModal ? modalCalendar : popoverCalendar)));
|
|
576
576
|
};
|
|
577
577
|
|
|
578
|
-
var _excluded$
|
|
579
|
-
_excluded2$
|
|
578
|
+
var _excluded$3 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|
|
579
|
+
_excluded2$2 = ["onChange", "variant", "value"];
|
|
580
580
|
var NativeDatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
581
581
|
var className = _ref.className,
|
|
582
582
|
style = _ref.style,
|
|
@@ -589,7 +589,7 @@ var NativeDatePicker = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
589
589
|
prepend = _ref$prepend === void 0 ? React__default["default"].createElement(icons.DateIcon, {
|
|
590
590
|
inline: true
|
|
591
591
|
}) : _ref$prepend,
|
|
592
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
592
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
593
593
|
var nativedatepickerId = utils.useRandomId('eds-nativetimepicker');
|
|
594
594
|
return React__default["default"].createElement(form.BaseFormControl, {
|
|
595
595
|
style: style,
|
|
@@ -612,7 +612,7 @@ var NativeDatePickerBase = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
|
612
612
|
var onChange = _ref2.onChange,
|
|
613
613
|
variant = _ref2.variant,
|
|
614
614
|
value = _ref2.value,
|
|
615
|
-
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$
|
|
615
|
+
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$2);
|
|
616
616
|
var contextVariant = form.useVariant();
|
|
617
617
|
var currentVariant = variant || contextVariant;
|
|
618
618
|
var _useInputGroupContext = form.useInputGroupContext(),
|
|
@@ -665,7 +665,7 @@ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
|
665
665
|
}, direction === 'left' ? React__default["default"].createElement(icons.LeftArrowIcon, null) : React__default["default"].createElement(icons.RightArrowIcon, null));
|
|
666
666
|
};
|
|
667
667
|
|
|
668
|
-
var _excluded$
|
|
668
|
+
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "variant", "locale", "showTimeZone", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef"];
|
|
669
669
|
var TimePicker = function TimePicker(_ref) {
|
|
670
670
|
var selectedTime = _ref.selectedTime,
|
|
671
671
|
onChange = _ref.onChange,
|
|
@@ -685,12 +685,11 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
685
685
|
_ref$rightArrowButton = _ref.rightArrowButtonAriaLabel,
|
|
686
686
|
rightArrowButtonAriaLabel = _ref$rightArrowButton === void 0 ? "Legg til " + minuteIncrementForArrowButtons + " minutter" : _ref$rightArrowButton,
|
|
687
687
|
inputRef = _ref.inputRef,
|
|
688
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
688
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
689
689
|
var _useLocale = i18n.useLocale(),
|
|
690
690
|
locale = _useLocale.locale;
|
|
691
691
|
if (customLocale) locale = customLocale;
|
|
692
692
|
var state = datepicker$1.useTimeFieldState(_extends({
|
|
693
|
-
// @ts-expect-error Time should be assignable to MappedTime<TimeType>
|
|
694
693
|
onChange: onChange,
|
|
695
694
|
label: label,
|
|
696
695
|
locale: locale,
|
|
@@ -772,8 +771,8 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
772
771
|
})));
|
|
773
772
|
};
|
|
774
773
|
|
|
775
|
-
var _excluded = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
|
|
776
|
-
_excluded2 = ["onChange", "value"];
|
|
774
|
+
var _excluded$1 = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
|
|
775
|
+
_excluded2$1 = ["onChange", "value"];
|
|
777
776
|
var NativeTimePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
778
777
|
var className = _ref.className,
|
|
779
778
|
style = _ref.style,
|
|
@@ -782,7 +781,7 @@ var NativeTimePicker = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
782
781
|
feedback = _ref.feedback,
|
|
783
782
|
variant = _ref.variant,
|
|
784
783
|
prepend = _ref.prepend,
|
|
785
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
784
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
786
785
|
var nativetimepickerId = utils.useRandomId('eds-native-timepicker');
|
|
787
786
|
return React__default["default"].createElement(form.BaseFormControl, {
|
|
788
787
|
style: style,
|
|
@@ -802,7 +801,7 @@ var NativeTimePicker = /*#__PURE__*/React__default["default"].forwardRef(functio
|
|
|
802
801
|
var NativeTimePickerBase = /*#__PURE__*/React__default["default"].forwardRef(function (_ref2, ref) {
|
|
803
802
|
var onChange = _ref2.onChange,
|
|
804
803
|
value = _ref2.value,
|
|
805
|
-
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2);
|
|
804
|
+
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
|
|
806
805
|
var contextVariant = form.useVariant();
|
|
807
806
|
var currentVariant = rest.variant || contextVariant;
|
|
808
807
|
var _useInputGroupContext = form.useInputGroupContext(),
|
|
@@ -838,6 +837,187 @@ var NativeTimePickerBase = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
|
838
837
|
}, rest));
|
|
839
838
|
});
|
|
840
839
|
|
|
840
|
+
var _excluded = ["className", "disabled", "feedback", "showClockIcon", "inputRef", "label", "labelTooltip", "onChange", "readOnly", "selectedTime", "showSeconds", "showTimeZone", "style", "variant"],
|
|
841
|
+
_excluded2 = ["onBlur", "onClick", "onDragStart", "onFocus", "onKeyDown", "onKeyUp", "onMouseDown", "onPointerDown", "onPointerUp"];
|
|
842
|
+
var inputResult;
|
|
843
|
+
(function (inputResult) {
|
|
844
|
+
inputResult[inputResult["RESET_TIME"] = 0] = "RESET_TIME";
|
|
845
|
+
inputResult[inputResult["INVALID"] = 1] = "INVALID";
|
|
846
|
+
})(inputResult || (inputResult = {}));
|
|
847
|
+
var SimpleTimePicker = function SimpleTimePicker(_ref) {
|
|
848
|
+
var disabled = _ref.disabled,
|
|
849
|
+
feedback = _ref.feedback,
|
|
850
|
+
_ref$showClockIcon = _ref.showClockIcon,
|
|
851
|
+
showClockIcon = _ref$showClockIcon === void 0 ? false : _ref$showClockIcon,
|
|
852
|
+
inputRef = _ref.inputRef,
|
|
853
|
+
label = _ref.label,
|
|
854
|
+
labelTooltip = _ref.labelTooltip,
|
|
855
|
+
onChange = _ref.onChange,
|
|
856
|
+
readOnly = _ref.readOnly,
|
|
857
|
+
selectedTime = _ref.selectedTime,
|
|
858
|
+
showSeconds = _ref.showSeconds,
|
|
859
|
+
showTimeZone = _ref.showTimeZone,
|
|
860
|
+
style = _ref.style,
|
|
861
|
+
variant = _ref.variant,
|
|
862
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
863
|
+
var _useState = React.useState(''),
|
|
864
|
+
inputText = _useState[0],
|
|
865
|
+
setInputText = _useState[1];
|
|
866
|
+
var timeFieldRef = React.useRef(null);
|
|
867
|
+
var _useState2 = React.useState(null),
|
|
868
|
+
lastValidSelectedTime = _useState2[0],
|
|
869
|
+
setLastValidSelectedTime = _useState2[1];
|
|
870
|
+
var _useLocale = i18n.useLocale(),
|
|
871
|
+
locale = _useLocale.locale;
|
|
872
|
+
var state = datepicker$1.useTimeFieldState(_extends({
|
|
873
|
+
onChange: onChange,
|
|
874
|
+
label: label,
|
|
875
|
+
locale: locale,
|
|
876
|
+
value: selectedTime === null ? undefined : selectedTime,
|
|
877
|
+
hideTimeZone: !showTimeZone,
|
|
878
|
+
isDisabled: disabled
|
|
879
|
+
}, rest));
|
|
880
|
+
var _useTimeField = datepicker.useTimeField(_extends({}, rest, {
|
|
881
|
+
label: label
|
|
882
|
+
}), state, timeFieldRef),
|
|
883
|
+
labelProps = _useTimeField.labelProps,
|
|
884
|
+
fieldProps = _useTimeField.fieldProps;
|
|
885
|
+
React.useEffect(function () {
|
|
886
|
+
updateInputWithSelectedTime();
|
|
887
|
+
// @ts-expect-error TimeType and MappedTimeValue<TimeType> is actually the same
|
|
888
|
+
if (selectedTime !== null) setLastValidSelectedTime(selectedTime);
|
|
889
|
+
}, [selectedTime == null ? void 0 : selectedTime.toString()]);
|
|
890
|
+
var updateInputWithSelectedTime = function updateInputWithSelectedTime() {
|
|
891
|
+
var selectedTimeString = getStringFromTimeValue(selectedTime);
|
|
892
|
+
setInputText(selectedTimeString);
|
|
893
|
+
var timeFieldIsFocused = document.activeElement === (timeFieldRef == null ? void 0 : timeFieldRef.current);
|
|
894
|
+
if (selectedTimeString === '' && !timeFieldIsFocused) addPlaceholderToInput();
|
|
895
|
+
};
|
|
896
|
+
var getStringFromTimeValue = function getStringFromTimeValue(timeValue) {
|
|
897
|
+
if (timeValue === null) return '';
|
|
898
|
+
var timeObject = 'day' in timeValue ? date.toTime(timeValue) : timeValue;
|
|
899
|
+
if (showSeconds) return timeObject.toString().slice(0, 8);
|
|
900
|
+
return timeObject.toString().slice(0, 5);
|
|
901
|
+
};
|
|
902
|
+
var addPlaceholderToInput = function addPlaceholderToInput() {
|
|
903
|
+
if (showSeconds) setInputText('–– : –– : ––');else setInputText('–– : ––');
|
|
904
|
+
};
|
|
905
|
+
var handleChangeTime = function handleChangeTime() {
|
|
906
|
+
var newTime = getValueForOnChangeFromInput();
|
|
907
|
+
if (newTime === inputResult.INVALID) {
|
|
908
|
+
return updateInputWithSelectedTime();
|
|
909
|
+
}
|
|
910
|
+
if ((newTime == null ? void 0 : newTime.toString()) !== (selectedTime == null ? void 0 : selectedTime.toString())) onChange == null ? void 0 : onChange(newTime);
|
|
911
|
+
};
|
|
912
|
+
var getValueForOnChangeFromInput = function getValueForOnChangeFromInput() {
|
|
913
|
+
var formatedTimeString = formatTimeString(inputText);
|
|
914
|
+
var newTimeObject = formatedTimeStringToTimeObject(formatedTimeString);
|
|
915
|
+
if (newTimeObject === inputResult.INVALID) {
|
|
916
|
+
return inputResult.INVALID;
|
|
917
|
+
}
|
|
918
|
+
if (newTimeObject === inputResult.RESET_TIME) {
|
|
919
|
+
return null;
|
|
920
|
+
}
|
|
921
|
+
var updatedSelectedTime = getSelectedTimeWithTimeFromObject(newTimeObject);
|
|
922
|
+
return updatedSelectedTime;
|
|
923
|
+
};
|
|
924
|
+
var formatTimeString = function formatTimeString(timeString) {
|
|
925
|
+
if (timeString.length === 0) return inputResult.RESET_TIME;
|
|
926
|
+
if (timeString.length < 3 || timeString.length > 8) return inputResult.INVALID;
|
|
927
|
+
var numberOfColons = (timeString.match(new RegExp(':', 'g')) || []).length;
|
|
928
|
+
var stringLength = timeString.length;
|
|
929
|
+
// targets 'd:dd:dd' and 'dd:dd:dd'
|
|
930
|
+
if (numberOfColons === 2 && stringLength >= 7) {
|
|
931
|
+
return timeString.padStart(8, '0');
|
|
932
|
+
}
|
|
933
|
+
// targets 'd:dd' and 'dd:dd'
|
|
934
|
+
if (numberOfColons === 1) {
|
|
935
|
+
return timeString.padStart(5, '0');
|
|
936
|
+
}
|
|
937
|
+
if (stringLength > 6) return inputResult.INVALID;
|
|
938
|
+
var stringLengthIsEven = stringLength % 2 == 0;
|
|
939
|
+
var hourString = stringLengthIsEven ? timeString.slice(0, 2) : timeString.slice(0, 1);
|
|
940
|
+
var minuteString = stringLengthIsEven ? timeString.slice(2, 4) : timeString.slice(1, 3);
|
|
941
|
+
var secondString = function () {
|
|
942
|
+
var stringSlice = stringLengthIsEven ? timeString.slice(4, 6) : timeString.slice(3, 5);
|
|
943
|
+
if (stringSlice === '') return '00';
|
|
944
|
+
return stringSlice;
|
|
945
|
+
}();
|
|
946
|
+
var timeStringWithColon = hourString.padStart(2, '0') + ':' + minuteString + (showSeconds ? ':' + secondString : '');
|
|
947
|
+
return timeStringWithColon;
|
|
948
|
+
};
|
|
949
|
+
var formatedTimeStringToTimeObject = function formatedTimeStringToTimeObject(formatedTimeString) {
|
|
950
|
+
if (formatedTimeString === inputResult.INVALID) return inputResult.INVALID;
|
|
951
|
+
if (formatedTimeString === inputResult.RESET_TIME) return inputResult.RESET_TIME;
|
|
952
|
+
var isNumberTest = /^\d+$/;
|
|
953
|
+
var hourString = formatedTimeString.slice(0, 2);
|
|
954
|
+
var minuteString = formatedTimeString.slice(3, 5);
|
|
955
|
+
var secondString = formatedTimeString.slice(6, 8);
|
|
956
|
+
if (hourString.match(isNumberTest) && minuteString.match(isNumberTest) && (secondString === '' || secondString.match(isNumberTest))) {
|
|
957
|
+
try {
|
|
958
|
+
var timeObject = date.parseTime(formatedTimeString);
|
|
959
|
+
return timeObject;
|
|
960
|
+
} catch (e) {
|
|
961
|
+
return inputResult.INVALID;
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
return inputResult.INVALID;
|
|
965
|
+
};
|
|
966
|
+
var getSelectedTimeWithTimeFromObject = function getSelectedTimeWithTimeFromObject(newTime) {
|
|
967
|
+
var selectedTimeWithUpdateTime = (lastValidSelectedTime != null ? lastValidSelectedTime : new date.Time()).set({
|
|
968
|
+
hour: newTime.hour,
|
|
969
|
+
minute: newTime.minute,
|
|
970
|
+
second: newTime.second
|
|
971
|
+
});
|
|
972
|
+
return selectedTimeWithUpdateTime;
|
|
973
|
+
};
|
|
974
|
+
var usedFieldProps = _objectWithoutPropertiesLoose(fieldProps, _excluded2);
|
|
975
|
+
return React__default["default"].createElement(i18n.I18nProvider, {
|
|
976
|
+
locale: locale
|
|
977
|
+
}, React__default["default"].createElement(form.TextField, _extends({
|
|
978
|
+
append: showClockIcon ? React__default["default"].createElement(icons.ClockIcon, {
|
|
979
|
+
inline: true,
|
|
980
|
+
onClick: function onClick() {
|
|
981
|
+
var _timeFieldRef$current;
|
|
982
|
+
return timeFieldRef == null ? void 0 : (_timeFieldRef$current = timeFieldRef.current) == null ? void 0 : _timeFieldRef$current.focus();
|
|
983
|
+
}
|
|
984
|
+
}) : undefined,
|
|
985
|
+
className: classNames__default["default"]('eds-simple-timepicker', {
|
|
986
|
+
'eds-simple-timepicker--show-seconds': showSeconds
|
|
987
|
+
}),
|
|
988
|
+
disabled: disabled,
|
|
989
|
+
disableLabelAnimation: true,
|
|
990
|
+
feedback: feedback,
|
|
991
|
+
label: label,
|
|
992
|
+
labelProps: labelProps,
|
|
993
|
+
labelTooltip: labelTooltip,
|
|
994
|
+
onBlur: function onBlur() {
|
|
995
|
+
handleChangeTime();
|
|
996
|
+
if (selectedTime === null) {
|
|
997
|
+
addPlaceholderToInput();
|
|
998
|
+
}
|
|
999
|
+
},
|
|
1000
|
+
onChange: function onChange(e) {
|
|
1001
|
+
return setInputText(e.target.value);
|
|
1002
|
+
},
|
|
1003
|
+
onFocus: function onFocus() {
|
|
1004
|
+
if (selectedTime === null) {
|
|
1005
|
+
setInputText('');
|
|
1006
|
+
}
|
|
1007
|
+
},
|
|
1008
|
+
onKeyDown: function onKeyDown(_ref2) {
|
|
1009
|
+
var key = _ref2.key;
|
|
1010
|
+
if (key === 'Enter') handleChangeTime();
|
|
1011
|
+
},
|
|
1012
|
+
placeholder: showSeconds ? '–– : –– : ––' : '–– : ––',
|
|
1013
|
+
readOnly: readOnly,
|
|
1014
|
+
ref: utils.mergeRefs(timeFieldRef, inputRef),
|
|
1015
|
+
style: style,
|
|
1016
|
+
value: inputText,
|
|
1017
|
+
variant: variant
|
|
1018
|
+
}, usedFieldProps)));
|
|
1019
|
+
};
|
|
1020
|
+
|
|
841
1021
|
utils.warnAboutMissingStyles('datepicker', 'form', 'icons');
|
|
842
1022
|
|
|
843
1023
|
exports.Calendar = Calendar;
|
|
@@ -845,6 +1025,7 @@ exports.DateField = DateField;
|
|
|
845
1025
|
exports.DatePicker = DatePicker;
|
|
846
1026
|
exports.NativeDatePicker = NativeDatePicker;
|
|
847
1027
|
exports.NativeTimePicker = NativeTimePicker;
|
|
1028
|
+
exports.SimpleTimePicker = SimpleTimePicker;
|
|
848
1029
|
exports.TimePicker = TimePicker;
|
|
849
1030
|
exports.ariaLabelIfNorwegian = ariaLabelIfNorwegian;
|
|
850
1031
|
exports.createCalendar = createCalendar;
|