@entur/datepicker 9.4.11 → 10.0.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/DateField.d.ts +12 -8
- package/dist/DatePicker/DatePicker.d.ts +3 -2
- package/dist/TimePicker/SimpleTimePicker.d.ts +2 -1
- package/dist/TimePicker/TimePicker.d.ts +3 -2
- package/dist/datepicker.cjs.development.js +120 -102
- 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 +122 -104
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/styles.css +61 -80
- package/package.json +8 -8
package/dist/datepicker.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useRandomId, ConditionalWrapper,
|
|
1
|
+
import { useRandomId, ConditionalWrapper, useWindowDimensions, useOnClickOutside, useOnEscape, useOnMount, mergeRefs, warnAboutMissingStyles } from '@entur/utils';
|
|
2
2
|
import React, { useRef, useState, useEffect } from 'react';
|
|
3
3
|
import { useDateFieldState, useDatePickerState, useTimeFieldState } from '@react-stately/datepicker';
|
|
4
4
|
import { useDateSegment, useDateField, useDatePicker, useTimeField } from '@react-aria/datepicker';
|
|
@@ -15,7 +15,7 @@ import { IconButton } from '@entur/button';
|
|
|
15
15
|
import { VisuallyHidden } from '@entur/a11y';
|
|
16
16
|
import { useFloating, autoUpdate, offset, flip, shift } from '@floating-ui/react-dom';
|
|
17
17
|
import FocusLock from 'react-focus-lock';
|
|
18
|
-
import { space, zIndexes
|
|
18
|
+
import { space, zIndexes } from '@entur/tokens';
|
|
19
19
|
import { Modal } from '@entur/modal';
|
|
20
20
|
|
|
21
21
|
function _extends() {
|
|
@@ -211,8 +211,8 @@ function getWeekNumberForDate(date) {
|
|
|
211
211
|
return weekNumber;
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
215
|
-
var DateField =
|
|
214
|
+
var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "fieldProps", "groupProps", "append", "prepend", "dateFieldRef"];
|
|
215
|
+
var DateField = function DateField(_ref) {
|
|
216
216
|
var selectedDate = _ref.selectedDate,
|
|
217
217
|
onChange = _ref.onChange,
|
|
218
218
|
label = _ref.label,
|
|
@@ -235,7 +235,11 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
235
235
|
style = _ref.style,
|
|
236
236
|
className = _ref.className,
|
|
237
237
|
parentLabelProps = _ref.labelProps,
|
|
238
|
+
parentFieldProps = _ref.fieldProps,
|
|
239
|
+
parentGroupProps = _ref.groupProps,
|
|
238
240
|
append = _ref.append,
|
|
241
|
+
prepend = _ref.prepend,
|
|
242
|
+
ref = _ref.dateFieldRef,
|
|
239
243
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
240
244
|
var _useLocale = useLocale(),
|
|
241
245
|
locale = _useLocale.locale;
|
|
@@ -243,6 +247,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
243
247
|
locale: customLocale != null ? customLocale : locale,
|
|
244
248
|
createCalendar: createCalendar,
|
|
245
249
|
value: selectedDate,
|
|
250
|
+
//@ts-expect-error incorrect type in package
|
|
246
251
|
onChange: onChange,
|
|
247
252
|
hideTimeZone: !showTimeZone,
|
|
248
253
|
granularity: showTime ? 'minute' : granularity,
|
|
@@ -253,7 +258,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
253
258
|
shouldForceLeadingZeros: true
|
|
254
259
|
}));
|
|
255
260
|
var dateFieldRef = useRef(null);
|
|
256
|
-
var _useDateField = useDateField(_extends({}, rest, {
|
|
261
|
+
var _useDateField = useDateField(_extends({}, parentFieldProps, rest, {
|
|
257
262
|
label: label
|
|
258
263
|
}), state, dateFieldRef),
|
|
259
264
|
labelProps = _useDateField.labelProps,
|
|
@@ -267,28 +272,36 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
267
272
|
}, child);
|
|
268
273
|
}
|
|
269
274
|
}, React.createElement(BaseFormControl, _extends({
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
275
|
+
append: append,
|
|
276
|
+
ariaAlertOnFeedback: true,
|
|
277
|
+
className: classNames('eds-datefield', className, {
|
|
278
|
+
'eds-datefield--has-tooltip': labelTooltip !== undefined
|
|
279
|
+
}),
|
|
274
280
|
disabled: isDisabled || disabled,
|
|
275
281
|
disableLabelAnimation: true,
|
|
282
|
+
feedback: feedback != null ? feedback : state.validationState === 'invalid' ? validationFeedback : undefined,
|
|
276
283
|
label: label,
|
|
284
|
+
labelId: id,
|
|
285
|
+
labelProps: parentLabelProps != null ? parentLabelProps : labelProps,
|
|
277
286
|
labelTooltip: labelTooltip,
|
|
278
|
-
|
|
287
|
+
prepend: prepend,
|
|
288
|
+
ref: ref,
|
|
289
|
+
style: style,
|
|
290
|
+
variant: variant != null ? variant : state.validationState === 'invalid' ? validationVariant : undefined
|
|
291
|
+
}, parentGroupProps), React.createElement("span", _extends({
|
|
292
|
+
ref: dateFieldRef
|
|
279
293
|
}, fieldProps, {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
ariaAlertOnFeedback: true
|
|
294
|
+
style: {
|
|
295
|
+
display: 'contents'
|
|
296
|
+
}
|
|
284
297
|
}), state.segments.map(function (segment, i) {
|
|
285
298
|
return React.createElement(FieldSegment, {
|
|
286
299
|
segment: segment,
|
|
287
300
|
state: state,
|
|
288
301
|
key: i
|
|
289
302
|
});
|
|
290
|
-
})));
|
|
291
|
-
}
|
|
303
|
+
}))));
|
|
304
|
+
};
|
|
292
305
|
|
|
293
306
|
var _excluded$9 = ["children", "className", "style"];
|
|
294
307
|
var CalendarButton = function CalendarButton(_ref) {
|
|
@@ -495,7 +508,7 @@ var CalendarBase = function CalendarBase(_ref2) {
|
|
|
495
508
|
}));
|
|
496
509
|
};
|
|
497
510
|
|
|
498
|
-
var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "showWeekNumbers", "weekNumberHeader", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate"];
|
|
511
|
+
var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "showWeekNumbers", "weekNumberHeader", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate", "append", "prepend"];
|
|
499
512
|
var DatePicker = function DatePicker(_ref) {
|
|
500
513
|
var selectedDate = _ref.selectedDate,
|
|
501
514
|
onChange = _ref.onChange,
|
|
@@ -506,6 +519,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
506
519
|
showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
|
|
507
520
|
classNameForDate = _ref.classNameForDate,
|
|
508
521
|
className = _ref.className,
|
|
522
|
+
style = _ref.style,
|
|
509
523
|
variant = _ref.variant,
|
|
510
524
|
feedback = _ref.feedback,
|
|
511
525
|
validationVariant = _ref.validationVariant,
|
|
@@ -522,14 +536,12 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
522
536
|
modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
|
|
523
537
|
forcedReturnType = _ref.forcedReturnType,
|
|
524
538
|
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
539
|
+
append = _ref.append,
|
|
540
|
+
prepend = _ref.prepend,
|
|
525
541
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
526
542
|
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
|
|
527
543
|
var datePickerRef = useRef(null);
|
|
528
544
|
var calendarRef = useRef(null);
|
|
529
|
-
var dateFieldRef = useRef(null);
|
|
530
|
-
var _useState = useState(false),
|
|
531
|
-
showAnimations = _useState[0],
|
|
532
|
-
setShowAnimations = _useState[1];
|
|
533
545
|
var _useWindowDimensions = useWindowDimensions(),
|
|
534
546
|
width = _useWindowDimensions.width;
|
|
535
547
|
var handleOnChange = function handleOnChange(value) {
|
|
@@ -566,14 +578,12 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
566
578
|
});
|
|
567
579
|
},
|
|
568
580
|
placement: 'bottom-start',
|
|
569
|
-
middleware: [offset(space.
|
|
581
|
+
middleware: [offset(space.extraSmall2), flip(), shift({
|
|
570
582
|
padding: space.extraSmall
|
|
571
583
|
})]
|
|
572
584
|
}),
|
|
573
|
-
x = _useFloating.x,
|
|
574
|
-
y = _useFloating.y,
|
|
575
585
|
refs = _useFloating.refs,
|
|
576
|
-
|
|
586
|
+
floatingStyles = _useFloating.floatingStyles,
|
|
577
587
|
update = _useFloating.update;
|
|
578
588
|
useOnClickOutside([calendarRef], function () {
|
|
579
589
|
state.setOpen(false);
|
|
@@ -597,26 +607,12 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
597
607
|
showWeekNumbers: showWeekNumbers,
|
|
598
608
|
weekNumberHeader: weekNumberHeader
|
|
599
609
|
});
|
|
600
|
-
// Initial position for popover is (0,0) before being moved to calculated position.
|
|
601
|
-
// To avoid animating this move we delay turning on animation by a few ms.
|
|
602
|
-
useEffect(function () {
|
|
603
|
-
setTimeout(function () {
|
|
604
|
-
return setShowAnimations(state.isOpen);
|
|
605
|
-
}, 10);
|
|
606
|
-
}, [state.isOpen]);
|
|
607
610
|
var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
|
|
608
611
|
var popoverCalendar = React.createElement("div", {
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
left: x,
|
|
614
|
-
zIndex: zIndexes.popover,
|
|
615
|
-
transition: showAnimations ? "top " + timings.medium + " ease-in-out" : 'unset'
|
|
616
|
-
},
|
|
617
|
-
ref: function ref(node) {
|
|
618
|
-
refs.setFloating(node);
|
|
619
|
-
}
|
|
612
|
+
style: _extends({}, floatingStyles, {
|
|
613
|
+
zIndex: zIndexes.popover
|
|
614
|
+
}),
|
|
615
|
+
ref: refs.setFloating
|
|
620
616
|
}, React.createElement(FocusLock, {
|
|
621
617
|
disabled: !state.isOpen || useModal,
|
|
622
618
|
returnFocus: true
|
|
@@ -637,41 +633,45 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
637
633
|
locale: locale
|
|
638
634
|
}, child);
|
|
639
635
|
}
|
|
640
|
-
}, React.createElement(
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
},
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
636
|
+
}, React.createElement(DateField, {
|
|
637
|
+
append: !disabled && React.createElement("div", {
|
|
638
|
+
style: {
|
|
639
|
+
display: 'flex',
|
|
640
|
+
alignItems: 'center'
|
|
641
|
+
}
|
|
642
|
+
}, append, React.createElement(CalendarButton, _extends({}, buttonProps, {
|
|
643
|
+
onPress: function onPress() {
|
|
644
|
+
state.setOpen(!state.isOpen);
|
|
645
|
+
update();
|
|
646
|
+
},
|
|
647
|
+
className: "eds-datepicker__open-calendar-button"
|
|
648
|
+
}), React.createElement(CalendarIcon, null))),
|
|
649
|
+
prepend: prepend,
|
|
650
|
+
className: classNames('eds-datepicker', className, {
|
|
651
|
+
'eds-datepicker--disabled': disabled
|
|
652
|
+
}),
|
|
653
|
+
disabled: disabled,
|
|
654
|
+
feedback: feedback,
|
|
655
|
+
fieldProps: fieldProps,
|
|
656
|
+
groupProps: groupProps,
|
|
652
657
|
label: rest.label,
|
|
653
658
|
labelProps: labelProps,
|
|
654
|
-
|
|
655
|
-
minDate: minDate,
|
|
659
|
+
labelTooltip: labelTooltip,
|
|
656
660
|
maxDate: maxDate,
|
|
661
|
+
minDate: minDate,
|
|
662
|
+
onChange: handleOnChange,
|
|
663
|
+
dateFieldRef: function dateFieldRef(node) {
|
|
664
|
+
refs.setReference(node);
|
|
665
|
+
datePickerRef.current = node;
|
|
666
|
+
},
|
|
667
|
+
selectedDate: selectedDate,
|
|
657
668
|
showTime: showTime,
|
|
658
669
|
showTimeZone: showTimeZone,
|
|
659
|
-
|
|
660
|
-
variant: variant,
|
|
661
|
-
feedback: feedback,
|
|
662
|
-
validationVariant: validationVariant,
|
|
670
|
+
style: style,
|
|
663
671
|
validationFeedback: validationFeedback,
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
})
|
|
668
|
-
})), !disabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
|
|
669
|
-
onPress: function onPress() {
|
|
670
|
-
state.setOpen(!state.isOpen);
|
|
671
|
-
update();
|
|
672
|
-
},
|
|
673
|
-
className: "eds-datepicker__open-calendar-button"
|
|
674
|
-
}), React.createElement(CalendarIcon, null)), useModal ? modalCalendar : popoverCalendar)));
|
|
672
|
+
validationVariant: validationVariant,
|
|
673
|
+
variant: variant
|
|
674
|
+
}), useModal ? modalCalendar : popoverCalendar);
|
|
675
675
|
};
|
|
676
676
|
|
|
677
677
|
var _excluded$4 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|
|
@@ -766,7 +766,7 @@ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
|
766
766
|
}, rest), direction === 'left' ? React.createElement(LeftArrowIcon, null) : React.createElement(RightArrowIcon, null));
|
|
767
767
|
};
|
|
768
768
|
|
|
769
|
-
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "granularity", "variant", "locale", "showTimeZone", "showSeconds", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef", "forcedReturnType", "forcedTimeZone"];
|
|
769
|
+
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "granularity", "variant", "locale", "showTimeZone", "showSeconds", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef", "forcedReturnType", "forcedTimeZone", "append", "prepend"];
|
|
770
770
|
var TimePicker = function TimePicker(_ref) {
|
|
771
771
|
var selectedTime = _ref.selectedTime,
|
|
772
772
|
onChange = _ref.onChange,
|
|
@@ -791,6 +791,8 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
791
791
|
inputRef = _ref.inputRef,
|
|
792
792
|
forcedReturnType = _ref.forcedReturnType,
|
|
793
793
|
forcedTimeZone = _ref.forcedTimeZone,
|
|
794
|
+
append = _ref.append,
|
|
795
|
+
prepend = _ref.prepend,
|
|
794
796
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
795
797
|
var _useLocale = useLocale(),
|
|
796
798
|
locale = _useLocale.locale;
|
|
@@ -846,28 +848,44 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
846
848
|
};
|
|
847
849
|
return React.createElement(I18nProvider, {
|
|
848
850
|
locale: locale
|
|
849
|
-
}, React.createElement(
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
851
|
+
}, React.createElement(BaseFormControl, {
|
|
852
|
+
append: React.createElement("div", {
|
|
853
|
+
style: {
|
|
854
|
+
display: 'flex',
|
|
855
|
+
alignItems: 'center'
|
|
856
|
+
}
|
|
857
|
+
}, append, React.createElement(TimePickerArrowButton, {
|
|
858
|
+
direction: "right",
|
|
859
|
+
disabled: disabled,
|
|
860
|
+
"aria-label": rightArrowButtonAriaLabel,
|
|
861
|
+
onClick: function onClick() {
|
|
862
|
+
return handleOnClickArrowButton('add');
|
|
863
|
+
},
|
|
864
|
+
onFocus: function onFocus() {
|
|
865
|
+
return focusSegment(timeFieldRef, 'last');
|
|
866
|
+
}
|
|
867
|
+
})),
|
|
868
|
+
ariaAlertOnFeedback: true,
|
|
869
|
+
"aria-describedby": timePickerId + 'description',
|
|
870
|
+
className: classNames('eds-timepicker', className, {
|
|
871
|
+
'eds-timepicker--disabled': disabled,
|
|
872
|
+
'eds-timepicker--has-tooltip': labelTooltip !== undefined
|
|
855
873
|
}),
|
|
856
|
-
|
|
874
|
+
disabled: disabled,
|
|
875
|
+
disableLabelAnimation: true,
|
|
876
|
+
feedback: feedback,
|
|
857
877
|
label: label,
|
|
878
|
+
labelId: id,
|
|
858
879
|
labelProps: _extends({}, labelProps, {
|
|
859
880
|
'aria-describedby': timePickerId + 'description'
|
|
860
881
|
}),
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
ariaAlertOnFeedback: true,
|
|
869
|
-
"aria-describedby": timePickerId + 'description',
|
|
870
|
-
prepend: React.createElement(TimePickerArrowButton, {
|
|
882
|
+
labelTooltip: labelTooltip,
|
|
883
|
+
prepend: React.createElement("div", {
|
|
884
|
+
style: {
|
|
885
|
+
display: 'flex',
|
|
886
|
+
alignItems: 'center'
|
|
887
|
+
}
|
|
888
|
+
}, React.createElement(TimePickerArrowButton, {
|
|
871
889
|
direction: "left",
|
|
872
890
|
disabled: disabled,
|
|
873
891
|
"aria-label": leftArrowButtonAriaLabel,
|
|
@@ -877,18 +895,16 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
877
895
|
onFocus: function onFocus() {
|
|
878
896
|
return focusSegment(timeFieldRef, 'first');
|
|
879
897
|
}
|
|
880
|
-
}),
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
}
|
|
891
|
-
})
|
|
898
|
+
}), prepend),
|
|
899
|
+
ref: inputRef,
|
|
900
|
+
style: style,
|
|
901
|
+
variant: variant
|
|
902
|
+
}, React.createElement("span", _extends({
|
|
903
|
+
ref: timeFieldRef
|
|
904
|
+
}, fieldProps, {
|
|
905
|
+
style: {
|
|
906
|
+
display: 'contents'
|
|
907
|
+
}
|
|
892
908
|
}), state.segments.map(function (segment, i) {
|
|
893
909
|
return React.createElement(FieldSegment, {
|
|
894
910
|
segment: segment,
|
|
@@ -1113,12 +1129,14 @@ var SimpleTimePicker = function SimpleTimePicker(_ref) {
|
|
|
1113
1129
|
onClick: function onClick() {
|
|
1114
1130
|
var _timeFieldRef$current;
|
|
1115
1131
|
return timeFieldRef == null ? void 0 : (_timeFieldRef$current = timeFieldRef.current) == null ? void 0 : _timeFieldRef$current.focus();
|
|
1116
|
-
}
|
|
1132
|
+
},
|
|
1133
|
+
inline: true
|
|
1117
1134
|
}) : undefined),
|
|
1118
1135
|
className: classNames('eds-simple-timepicker', {
|
|
1119
1136
|
'eds-simple-timepicker--padding-large': padding === 'large',
|
|
1120
1137
|
'eds-simple-timepicker--show-seconds': showSeconds,
|
|
1121
|
-
'eds-simple-timepicker--hide-clock': !showClockIcon
|
|
1138
|
+
'eds-simple-timepicker--hide-clock': !showClockIcon,
|
|
1139
|
+
'eds-simple-timepicker--has-tooltip': labelTooltip !== undefined
|
|
1122
1140
|
}),
|
|
1123
1141
|
disabled: disabled,
|
|
1124
1142
|
disableLabelAnimation: true,
|