@entur/datepicker 4.0.0-alpha.0 → 4.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/CHANGELOG.md +17 -0
- package/dist/DatePicker/beta/Calendar.d.ts +2 -0
- package/dist/DatePicker/beta/CalendarCell.d.ts +1 -1
- package/dist/DatePicker/beta/CalendarGrid.d.ts +2 -1
- package/dist/DatePicker/beta/DateField.d.ts +15 -1
- package/dist/DatePicker/beta/DatePicker.d.ts +36 -6
- package/dist/datepicker.cjs.development.js +181 -108
- 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 +182 -109
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/styles.css +72 -55
- package/package.json +9 -7
package/dist/datepicker.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mergeRefs, useRandomId, useOnClickOutside, useOnMount, warnAboutMissingStyles } from '@entur/utils';
|
|
1
|
+
import { mergeRefs, useRandomId, ConditionalWrapper, useWindowDimensions, useOnClickOutside, useOnMount, warnAboutMissingStyles } from '@entur/utils';
|
|
2
2
|
import React, { useRef, useState, useEffect } from 'react';
|
|
3
3
|
import ReactDatepicker, { registerLocale } from 'react-datepicker';
|
|
4
4
|
import { parse, isSameDay } from 'date-fns';
|
|
@@ -17,9 +17,11 @@ import { ZonedDateTime, parseAbsolute, Time, CalendarDateTime, GregorianCalendar
|
|
|
17
17
|
import { useCalendarCell, useCalendarGrid, useCalendar } from '@react-aria/calendar';
|
|
18
18
|
import { useCalendarState } from '@react-stately/calendar';
|
|
19
19
|
import { useButton } from '@react-aria/button';
|
|
20
|
+
import { VisuallyHidden } from '@entur/a11y';
|
|
20
21
|
import { useFloating, offset, flip, shift } from '@floating-ui/react-dom';
|
|
21
22
|
import FocusLock from 'react-focus-lock';
|
|
22
23
|
import { space } from '@entur/tokens';
|
|
24
|
+
import { Modal } from '@entur/modal';
|
|
23
25
|
|
|
24
26
|
function _extends() {
|
|
25
27
|
_extends = Object.assign || function (target) {
|
|
@@ -95,7 +97,7 @@ function getMonthName(monthIndex, locale) {
|
|
|
95
97
|
return formatter.format(new Date(year, monthIndex));
|
|
96
98
|
}
|
|
97
99
|
|
|
98
|
-
var _excluded$
|
|
100
|
+
var _excluded$a = ["style", "label", "inputPlaceholder", "prepend", "feedback", "variant", "disabled", "calendarButtonTooltipOpen", "calendarButtonTooltipClose", "hideCalendarButton", "disableLabelAnimation", "inputRef", "calendarButtonId", "forwardRef", "toggleCalendarGUI", "onKeyDownInput", "onBlurInput", "selectedDate", "setFocusToCalendarGUI", "setShouldFocusOnCalendarButtonAfterSelect", "calendarGUIIsOpen", "placeholder", "onClick", "aria-labelledby"];
|
|
99
101
|
var DatePickerInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
100
102
|
var style = _ref.style,
|
|
101
103
|
label = _ref.label,
|
|
@@ -119,7 +121,7 @@ var DatePickerInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
119
121
|
setShouldFocusOnCalendarButtonAfterSelect = _ref.setShouldFocusOnCalendarButtonAfterSelect,
|
|
120
122
|
calendarGUIIsOpen = _ref.calendarGUIIsOpen,
|
|
121
123
|
onClick = _ref.onClick,
|
|
122
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
124
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
123
125
|
|
|
124
126
|
React.useEffect(function () {
|
|
125
127
|
var _inputRef$current, _inputRef$current2, _inputRef$current3;
|
|
@@ -197,7 +199,7 @@ var DatePickerInput = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
197
199
|
}, rest));
|
|
198
200
|
});
|
|
199
201
|
|
|
200
|
-
var _excluded$
|
|
202
|
+
var _excluded$9 = ["style", "className", "selectedDate", "label", "placeholder", "onChange", "onKeyDown", "dateFormats", "minDate", "maxDate", "inline", "disabled", "prepend", "feedback", "variant", "validationFeedback", "validationVariant", "disableLabelAnimation", "calendarButtonTooltipOpen", "calendarButtonTooltipClose", "hideCalendarButton", "hideCalendar", "hideValidation", "weekLabel", "chooseDayAriaLabelPrefix", "previousMonthAriaLabel", "nextMonthAriaLabel", "locale", "open"];
|
|
201
203
|
registerLocale('nb', nb);
|
|
202
204
|
var DatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
203
205
|
var style = _ref.style,
|
|
@@ -249,7 +251,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
249
251
|
_ref$locale = _ref.locale,
|
|
250
252
|
locale = _ref$locale === void 0 ? nb : _ref$locale,
|
|
251
253
|
open = _ref.open,
|
|
252
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
254
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
|
|
253
255
|
|
|
254
256
|
var datepickerId = useRandomId('eds-datepicker');
|
|
255
257
|
var datepickerRef = useRef(null);
|
|
@@ -582,14 +584,15 @@ var createCalendar = function createCalendar(identifier) {
|
|
|
582
584
|
}
|
|
583
585
|
};
|
|
584
586
|
var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, locale, propsCollection) {
|
|
585
|
-
if (locale !== 'no-
|
|
587
|
+
if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
|
|
586
588
|
return norwegianAriaLabel;
|
|
587
589
|
};
|
|
588
590
|
|
|
589
|
-
var _excluded$
|
|
591
|
+
var _excluded$8 = ["selectedDate", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "style", "className", "labelProps", "append"];
|
|
590
592
|
var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
591
593
|
var value = _ref.selectedDate,
|
|
592
594
|
label = _ref.label,
|
|
595
|
+
customLocale = _ref.locale,
|
|
593
596
|
showTimeZone = _ref.showTimeZone,
|
|
594
597
|
showTime = _ref.showTime,
|
|
595
598
|
_ref$granularity = _ref.granularity,
|
|
@@ -597,18 +600,22 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
597
600
|
disabled = _ref.disabled,
|
|
598
601
|
variant = _ref.variant,
|
|
599
602
|
feedback = _ref.feedback,
|
|
603
|
+
_ref$validationVarian = _ref.validationVariant,
|
|
604
|
+
validationVariant = _ref$validationVarian === void 0 ? 'error' : _ref$validationVarian,
|
|
605
|
+
_ref$validationFeedba = _ref.validationFeedback,
|
|
606
|
+
validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
|
|
600
607
|
labelTooltip = _ref.labelTooltip,
|
|
601
608
|
style = _ref.style,
|
|
602
609
|
className = _ref.className,
|
|
603
610
|
parentLabelProps = _ref.labelProps,
|
|
604
611
|
append = _ref.append,
|
|
605
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
612
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
606
613
|
|
|
607
614
|
var _useLocale = useLocale(),
|
|
608
615
|
locale = _useLocale.locale;
|
|
609
616
|
|
|
610
617
|
var state = useDateFieldState(_extends({}, rest, {
|
|
611
|
-
locale: locale,
|
|
618
|
+
locale: customLocale != null ? customLocale : locale,
|
|
612
619
|
createCalendar: createCalendar,
|
|
613
620
|
value: value === null ? undefined : value,
|
|
614
621
|
hideTimeZone: !showTimeZone,
|
|
@@ -624,7 +631,14 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
624
631
|
fieldProps = _useDateField.fieldProps;
|
|
625
632
|
|
|
626
633
|
var id = useRandomId('datefield');
|
|
627
|
-
return React.createElement(
|
|
634
|
+
return React.createElement(ConditionalWrapper, {
|
|
635
|
+
condition: customLocale !== undefined,
|
|
636
|
+
wrapper: function wrapper(child) {
|
|
637
|
+
return React.createElement(I18nProvider, {
|
|
638
|
+
locale: customLocale
|
|
639
|
+
}, child);
|
|
640
|
+
}
|
|
641
|
+
}, React.createElement(BaseFormControl, _extends({
|
|
628
642
|
style: style,
|
|
629
643
|
className: classNames('eds-datefield', className),
|
|
630
644
|
labelId: id,
|
|
@@ -635,24 +649,25 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
635
649
|
labelTooltip: labelTooltip,
|
|
636
650
|
labelProps: parentLabelProps != null ? parentLabelProps : labelProps
|
|
637
651
|
}, fieldProps, {
|
|
638
|
-
variant: variant,
|
|
639
|
-
feedback: feedback,
|
|
640
|
-
append: append
|
|
652
|
+
variant: (variant != null ? variant : state.validationState === 'invalid') ? validationVariant : undefined,
|
|
653
|
+
feedback: (feedback != null ? feedback : state.validationState === 'invalid') ? validationFeedback : undefined,
|
|
654
|
+
append: append,
|
|
655
|
+
ariaAlertOnFeedback: true
|
|
641
656
|
}), state.segments.map(function (segment, i) {
|
|
642
657
|
return React.createElement(FieldSegment, {
|
|
643
658
|
segment: segment,
|
|
644
659
|
state: state,
|
|
645
660
|
key: i
|
|
646
661
|
});
|
|
647
|
-
}));
|
|
662
|
+
})));
|
|
648
663
|
});
|
|
649
664
|
|
|
650
|
-
var _excluded$
|
|
665
|
+
var _excluded$7 = ["children", "className", "style"];
|
|
651
666
|
var CalendarButton = function CalendarButton(_ref) {
|
|
652
667
|
var children = _ref.children,
|
|
653
668
|
className = _ref.className,
|
|
654
669
|
style = _ref.style,
|
|
655
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
670
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
656
671
|
|
|
657
672
|
var ref = useRef(null);
|
|
658
673
|
|
|
@@ -666,11 +681,14 @@ var CalendarButton = function CalendarButton(_ref) {
|
|
|
666
681
|
}), children);
|
|
667
682
|
};
|
|
668
683
|
|
|
684
|
+
var _excluded$6 = ["state", "date"];
|
|
669
685
|
var CalendarCell = function CalendarCell(_ref) {
|
|
670
686
|
var _state$timeZone;
|
|
671
687
|
|
|
672
688
|
var state = _ref.state,
|
|
673
|
-
date = _ref.date
|
|
689
|
+
date = _ref.date,
|
|
690
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
691
|
+
|
|
674
692
|
var cellRef = useRef(null);
|
|
675
693
|
|
|
676
694
|
var _useCalendarCell = useCalendarCell({
|
|
@@ -691,18 +709,21 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
691
709
|
hidden: isOutsideVisibleRange,
|
|
692
710
|
className: classNames('eds-datepicker__calendar__grid__cell', {
|
|
693
711
|
'eds-datepicker__calendar__grid__cell--selected': isSelected,
|
|
694
|
-
'eds-datepicker__calendar__grid__cell--disabled': isDisabled,
|
|
695
|
-
'eds-datepicker__calendar__grid__cell--
|
|
712
|
+
'eds-datepicker__calendar__grid__cell--disabled': isDisabled || isUnavailable,
|
|
713
|
+
'eds-datepicker__calendar__grid__cell--outside-month': isOutsideVisibleRange,
|
|
696
714
|
'eds-datepicker__calendar__grid__cell--today': isEqualDay(date, now((_state$timeZone = state.timeZone) != null ? _state$timeZone : getLocalTimeZone()))
|
|
697
715
|
})
|
|
698
|
-
}), formattedDate));
|
|
716
|
+
}, rest), formattedDate));
|
|
699
717
|
};
|
|
700
718
|
|
|
701
|
-
var _excluded$5 = ["state"];
|
|
719
|
+
var _excluded$5 = ["state", "navigationDescription"];
|
|
702
720
|
var CalendarGrid = function CalendarGrid(_ref) {
|
|
703
721
|
var state = _ref.state,
|
|
722
|
+
navigationDescription = _ref.navigationDescription,
|
|
704
723
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
705
724
|
|
|
725
|
+
var calendarGridId = useRandomId('eds-calendar');
|
|
726
|
+
|
|
706
727
|
var _useLocale = useLocale(),
|
|
707
728
|
locale = _useLocale.locale;
|
|
708
729
|
|
|
@@ -722,7 +743,13 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
722
743
|
});
|
|
723
744
|
};
|
|
724
745
|
|
|
725
|
-
|
|
746
|
+
var getNavigationDescription = function getNavigationDescription() {
|
|
747
|
+
if (navigationDescription) return navigationDescription;
|
|
748
|
+
if (locale.toLowerCase().includes('en')) return 'Use the arrow keys to navigate between dates';
|
|
749
|
+
return 'Bruk piltastene til å navigere mellom datoer';
|
|
750
|
+
};
|
|
751
|
+
|
|
752
|
+
return React.createElement(React.Fragment, null, React.createElement("table", _extends({}, gridProps, {
|
|
726
753
|
cellSpacing: "0",
|
|
727
754
|
className: "eds-datepicker__calendar__grid"
|
|
728
755
|
}), React.createElement("thead", _extends({}, headerProps), React.createElement("tr", null, weekDaysMapped().map(function (day, index) {
|
|
@@ -736,24 +763,31 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
736
763
|
return date ? React.createElement(CalendarCell, {
|
|
737
764
|
key: i,
|
|
738
765
|
state: state,
|
|
739
|
-
date: date
|
|
766
|
+
date: date,
|
|
767
|
+
"aria-describedby": calendarGridId + 'description'
|
|
740
768
|
}) : React.createElement("td", {
|
|
741
769
|
key: i
|
|
742
770
|
});
|
|
743
771
|
}));
|
|
744
|
-
})))
|
|
772
|
+
}))), React.createElement(VisuallyHidden, {
|
|
773
|
+
id: calendarGridId + 'description'
|
|
774
|
+
}, getNavigationDescription()));
|
|
745
775
|
};
|
|
746
776
|
|
|
747
|
-
var _excluded$4 = ["selectedDate", "style", "children"];
|
|
777
|
+
var _excluded$4 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription"];
|
|
748
778
|
var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
749
|
-
var
|
|
779
|
+
var onChange = _ref.onChange,
|
|
780
|
+
customLocale = _ref.locale,
|
|
781
|
+
style = _ref.style,
|
|
782
|
+
navigationDescription = _ref.navigationDescription,
|
|
750
783
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
751
784
|
|
|
752
785
|
var _useLocale = useLocale(),
|
|
753
786
|
locale = _useLocale.locale;
|
|
754
787
|
|
|
755
788
|
var state = useCalendarState(_extends({}, rest, {
|
|
756
|
-
|
|
789
|
+
onChange: onChange,
|
|
790
|
+
locale: customLocale != null ? customLocale : locale,
|
|
757
791
|
createCalendar: createCalendar
|
|
758
792
|
}));
|
|
759
793
|
|
|
@@ -761,10 +795,16 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
761
795
|
calendarProps = _useCalendar.calendarProps,
|
|
762
796
|
prevButtonProps = _useCalendar.prevButtonProps,
|
|
763
797
|
nextButtonProps = _useCalendar.nextButtonProps,
|
|
764
|
-
title = _useCalendar.title;
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
798
|
+
title = _useCalendar.title;
|
|
799
|
+
|
|
800
|
+
return React.createElement(ConditionalWrapper, {
|
|
801
|
+
condition: customLocale,
|
|
802
|
+
wrapper: function wrapper(child) {
|
|
803
|
+
return React.createElement(I18nProvider, {
|
|
804
|
+
locale: customLocale
|
|
805
|
+
}, child);
|
|
806
|
+
}
|
|
807
|
+
}, React.createElement("div", _extends({}, calendarProps, {
|
|
768
808
|
ref: ref,
|
|
769
809
|
className: "eds-datepicker__calendar",
|
|
770
810
|
style: style
|
|
@@ -779,48 +819,38 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
779
819
|
}), React.createElement(RightArrowIcon, {
|
|
780
820
|
size: 20
|
|
781
821
|
}))), React.createElement(CalendarGrid, {
|
|
782
|
-
state: state
|
|
783
|
-
|
|
784
|
-
});
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
// return month + ' ' + year;
|
|
789
|
-
// switch (month.toLowerCase()) {
|
|
790
|
-
// case 'january':
|
|
791
|
-
// return 'januar ' + year;
|
|
792
|
-
// case 'february':
|
|
793
|
-
// return 'februar ' + year;
|
|
794
|
-
// case 'march':
|
|
795
|
-
// return 'mars ' + year;
|
|
796
|
-
// case 'may':
|
|
797
|
-
// return 'mai ' + year;
|
|
798
|
-
// case 'june':
|
|
799
|
-
// return 'juni ' + year;
|
|
800
|
-
// case 'july':
|
|
801
|
-
// return 'juli ' + year;
|
|
802
|
-
// case 'october':
|
|
803
|
-
// return 'oktober ' + year;
|
|
804
|
-
// case 'december':
|
|
805
|
-
// return 'desember ' + year;
|
|
806
|
-
// default:
|
|
807
|
-
// return month.toLowerCase() + ' ' + year.toLowerCase();
|
|
808
|
-
// }
|
|
809
|
-
// };
|
|
810
|
-
|
|
811
|
-
var _excluded$3 = ["selectedDate", "onChange", "disabled", "className", "style", "variant", "feedback"];
|
|
822
|
+
state: state,
|
|
823
|
+
navigationDescription: navigationDescription
|
|
824
|
+
})));
|
|
825
|
+
});
|
|
826
|
+
|
|
827
|
+
var _excluded$3 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription"];
|
|
812
828
|
var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
813
829
|
var value = _ref.selectedDate,
|
|
814
830
|
_onChange = _ref.onChange,
|
|
831
|
+
locale = _ref.locale,
|
|
815
832
|
isDisabled = _ref.disabled,
|
|
833
|
+
showTime = _ref.showTime,
|
|
834
|
+
_ref$showTimeZone = _ref.showTimeZone,
|
|
835
|
+
showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
|
|
816
836
|
className = _ref.className,
|
|
817
837
|
variant = _ref.variant,
|
|
818
838
|
feedback = _ref.feedback,
|
|
839
|
+
validationVariant = _ref.validationVariant,
|
|
840
|
+
validationFeedback = _ref.validationFeedback,
|
|
841
|
+
_ref$disableModal = _ref.disableModal,
|
|
842
|
+
disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
|
|
843
|
+
labelTooltip = _ref.labelTooltip,
|
|
844
|
+
navigationDescription = _ref.navigationDescription,
|
|
819
845
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
820
846
|
|
|
847
|
+
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = 1000;
|
|
821
848
|
var datePickerRef = useRef(null);
|
|
822
849
|
var calendarRef = useRef(null);
|
|
823
|
-
var dateFieldRef = useRef(null);
|
|
850
|
+
var dateFieldRef = useRef(null);
|
|
851
|
+
|
|
852
|
+
var _useWindowDimensions = useWindowDimensions(),
|
|
853
|
+
width = _useWindowDimensions.width;
|
|
824
854
|
|
|
825
855
|
var state = useDatePickerState(_extends({}, rest, {
|
|
826
856
|
value: value,
|
|
@@ -835,8 +865,22 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
835
865
|
fieldProps = _useDatePicker.fieldProps,
|
|
836
866
|
buttonProps = _useDatePicker.buttonProps,
|
|
837
867
|
dialogProps = _useDatePicker.dialogProps,
|
|
838
|
-
calendarProps = _useDatePicker.calendarProps;
|
|
868
|
+
calendarProps = _useDatePicker.calendarProps;
|
|
869
|
+
|
|
870
|
+
useEffect(function () {
|
|
871
|
+
var _calendarRef$current;
|
|
839
872
|
|
|
873
|
+
var keyDownHandler = function keyDownHandler(event) {
|
|
874
|
+
if (event.key === 'Escape') state.setOpen(false);
|
|
875
|
+
};
|
|
876
|
+
|
|
877
|
+
(_calendarRef$current = calendarRef.current) == null ? void 0 : _calendarRef$current.addEventListener('keydown', keyDownHandler);
|
|
878
|
+
return function () {
|
|
879
|
+
var _calendarRef$current2;
|
|
880
|
+
|
|
881
|
+
return (_calendarRef$current2 = calendarRef.current) == null ? void 0 : _calendarRef$current2.removeEventListener('keydown', keyDownHandler);
|
|
882
|
+
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
883
|
+
}, []); // calculations for floating-UI popover position
|
|
840
884
|
|
|
841
885
|
var _useFloating = useFloating({
|
|
842
886
|
placement: 'bottom-start',
|
|
@@ -848,58 +892,31 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
848
892
|
y = _useFloating.y,
|
|
849
893
|
reference = _useFloating.reference,
|
|
850
894
|
floating = _useFloating.floating,
|
|
851
|
-
strategy = _useFloating.strategy;
|
|
895
|
+
strategy = _useFloating.strategy;
|
|
852
896
|
|
|
853
|
-
|
|
854
|
-
useEffect(function () {
|
|
855
|
-
var _calendarRef$current, _calendarRef$current2;
|
|
856
|
-
|
|
857
|
-
var gridCellPrefix = 'eds-datepicker__calendar__grid__cell';
|
|
858
|
-
var selectedCell = (_calendarRef$current = calendarRef.current) == null ? void 0 : _calendarRef$current.getElementsByClassName(gridCellPrefix + '--selected')[0];
|
|
859
|
-
var todayCell = (_calendarRef$current2 = calendarRef.current) == null ? void 0 : _calendarRef$current2.getElementsByClassName(gridCellPrefix + '--today')[0];
|
|
860
|
-
if (selectedCell) selectedCell.focus();else if (todayCell) todayCell.focus();
|
|
861
|
-
}, [state.isOpen]);
|
|
862
897
|
useOnClickOutside([calendarRef], function () {
|
|
863
898
|
state.setOpen(false);
|
|
864
899
|
});
|
|
865
|
-
useEffect(function () {
|
|
866
|
-
var _calendarRef$current3;
|
|
867
900
|
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
901
|
+
var handleCalendarButtonOnClick = function handleCalendarButtonOnClick(calendarIsOpen) {
|
|
902
|
+
if (!calendarIsOpen) {
|
|
903
|
+
state.setOpen(true);
|
|
904
|
+
setFocusToRelevantDate();
|
|
905
|
+
} else {
|
|
906
|
+
state.setOpen(false);
|
|
907
|
+
}
|
|
908
|
+
};
|
|
871
909
|
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
var _calendarRef$current4;
|
|
910
|
+
var setFocusToRelevantDate = function setFocusToRelevantDate() {
|
|
911
|
+
var _calendarRef$current3, _calendarRef$current4;
|
|
875
912
|
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
datePickerRef.current = node;
|
|
884
|
-
reference(node);
|
|
885
|
-
},
|
|
886
|
-
className: "eds-datepicker__datefield__wrapper"
|
|
887
|
-
}), React.createElement(DateField, _extends({}, fieldProps, {
|
|
888
|
-
selectedDate: state.value,
|
|
889
|
-
label: rest.label,
|
|
890
|
-
labelProps: labelProps,
|
|
891
|
-
ref: dateFieldRef,
|
|
892
|
-
className: classNames('eds-datepicker__datefield', {
|
|
893
|
-
'eds-datepicker__datefield--disabled': fieldProps.isDisabled
|
|
894
|
-
}),
|
|
895
|
-
variant: variant,
|
|
896
|
-
feedback: feedback
|
|
897
|
-
})), !fieldProps.isDisabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
|
|
898
|
-
onPress: function onPress() {
|
|
899
|
-
return state.setOpen(!state.isOpen);
|
|
900
|
-
},
|
|
901
|
-
className: "eds-datepicker__open-calendar-button"
|
|
902
|
-
}), React.createElement(CalendarIcon, null))), React.createElement(FocusLock, {
|
|
913
|
+
var gridCellPrefix = 'eds-datepicker__calendar__grid__cell';
|
|
914
|
+
var selectedCell = (_calendarRef$current3 = calendarRef.current) == null ? void 0 : _calendarRef$current3.getElementsByClassName(gridCellPrefix + '--selected')[0];
|
|
915
|
+
var todayCell = (_calendarRef$current4 = calendarRef.current) == null ? void 0 : _calendarRef$current4.getElementsByClassName(gridCellPrefix + '--today')[0];
|
|
916
|
+
if (selectedCell) selectedCell.focus();else if (todayCell) todayCell.focus();
|
|
917
|
+
};
|
|
918
|
+
|
|
919
|
+
var popoverCalendar = React.createElement(FocusLock, {
|
|
903
920
|
disabled: !state.isOpen,
|
|
904
921
|
returnFocus: true
|
|
905
922
|
}, React.createElement(Calendar, _extends({}, dialogProps, calendarProps, {
|
|
@@ -913,6 +930,7 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
913
930
|
calendarRef.current = node;
|
|
914
931
|
floating(node);
|
|
915
932
|
},
|
|
933
|
+
navigationDescription: navigationDescription,
|
|
916
934
|
// styling for floating-UI popover
|
|
917
935
|
style: {
|
|
918
936
|
display: state.isOpen ? 'block' : 'none',
|
|
@@ -921,7 +939,62 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
921
939
|
left: x != null ? x : 0,
|
|
922
940
|
zIndex: 10
|
|
923
941
|
}
|
|
924
|
-
})))
|
|
942
|
+
})));
|
|
943
|
+
var modalCalendar = React.createElement(Modal, {
|
|
944
|
+
size: 'small',
|
|
945
|
+
title: "",
|
|
946
|
+
open: state.isOpen,
|
|
947
|
+
onDismiss: function onDismiss() {
|
|
948
|
+
return state.setOpen(false);
|
|
949
|
+
},
|
|
950
|
+
closeOnClickOutside: true,
|
|
951
|
+
className: "eds-datepicker__calendar-modal"
|
|
952
|
+
}, React.createElement(Calendar, _extends({}, dialogProps, calendarProps, {
|
|
953
|
+
onChange: function onChange(dateValue) {
|
|
954
|
+
_onChange(dateValue);
|
|
955
|
+
|
|
956
|
+
state.setOpen(false);
|
|
957
|
+
},
|
|
958
|
+
disabled: calendarProps.isDisabled,
|
|
959
|
+
ref: calendarRef,
|
|
960
|
+
navigationDescription: navigationDescription
|
|
961
|
+
})));
|
|
962
|
+
return React.createElement(ConditionalWrapper, {
|
|
963
|
+
condition: locale !== undefined,
|
|
964
|
+
wrapper: function wrapper(child) {
|
|
965
|
+
return React.createElement(I18nProvider, {
|
|
966
|
+
locale: locale
|
|
967
|
+
}, child);
|
|
968
|
+
}
|
|
969
|
+
}, React.createElement("div", {
|
|
970
|
+
className: classNames('eds-datepicker', className)
|
|
971
|
+
}, React.createElement("div", _extends({}, groupProps, {
|
|
972
|
+
ref: function ref(node) {
|
|
973
|
+
datePickerRef.current = node;
|
|
974
|
+
reference(node);
|
|
975
|
+
},
|
|
976
|
+
className: "eds-datepicker__datefield__wrapper"
|
|
977
|
+
}), React.createElement(DateField, _extends({}, fieldProps, {
|
|
978
|
+
selectedDate: state.value,
|
|
979
|
+
label: rest.label,
|
|
980
|
+
labelProps: labelProps,
|
|
981
|
+
showTime: showTime,
|
|
982
|
+
showTimeZone: showTimeZone,
|
|
983
|
+
ref: dateFieldRef,
|
|
984
|
+
variant: variant,
|
|
985
|
+
feedback: feedback,
|
|
986
|
+
validationVariant: validationVariant,
|
|
987
|
+
validationFeedback: validationFeedback,
|
|
988
|
+
labelTooltip: labelTooltip,
|
|
989
|
+
className: classNames('eds-datepicker__datefield', {
|
|
990
|
+
'eds-datepicker__datefield--disabled': fieldProps.isDisabled
|
|
991
|
+
})
|
|
992
|
+
})), !fieldProps.isDisabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
|
|
993
|
+
onPress: function onPress() {
|
|
994
|
+
return handleCalendarButtonOnClick(state.isOpen);
|
|
995
|
+
},
|
|
996
|
+
className: "eds-datepicker__open-calendar-button"
|
|
997
|
+
}), React.createElement(CalendarIcon, null)), width > CALENDAR_MODAL_MAX_SCREEN_WIDTH || disableModal ? popoverCalendar : modalCalendar)));
|
|
925
998
|
};
|
|
926
999
|
|
|
927
1000
|
var _excluded$2 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|