@entur/datepicker 4.0.0-alpha.0 → 4.0.0-alpha.1
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 +11 -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/DatePicker.d.ts +9 -1
- package/dist/datepicker.cjs.development.js +159 -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 +160 -103
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/styles.css +74 -68
- package/package.json +9 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [4.0.0-alpha.1](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@4.0.0-alpha.0...@entur/datepicker@4.0.0-alpha.1) (2022-10-26)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **datepicker:** fix locale issues ([8c325b8](https://bitbucket.org/enturas/design-system/commits/8c325b86088feb9f8a7d4ad538a18ec6d78e202d))
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **datepicker:** add i18y-wrapper to components for locale ([aed14fb](https://bitbucket.org/enturas/design-system/commits/aed14fb32e789159b4021c8b740a8101b83228fa))
|
|
15
|
+
- **datepicker:** add modal view for calendar when using small screen widths ([05d9325](https://bitbucket.org/enturas/design-system/commits/05d9325a83dbc8d7d2e62050e7d6bbecbe2f665e))
|
|
16
|
+
|
|
6
17
|
# [4.0.0-alpha.0](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@3.0.2...@entur/datepicker@4.0.0-alpha.0) (2022-10-20)
|
|
7
18
|
|
|
8
19
|
### Bug Fixes
|
|
@@ -3,6 +3,8 @@ import { DateValue } from '@internationalized/date';
|
|
|
3
3
|
import './Calendar.scss';
|
|
4
4
|
declare type CalendarProps = {
|
|
5
5
|
selectedDate: DateValue;
|
|
6
|
+
onChange: (SelectedDate: DateValue) => void;
|
|
7
|
+
navigationDescription?: string;
|
|
6
8
|
style?: React.CSSProperties;
|
|
7
9
|
[key: string]: any;
|
|
8
10
|
};
|
|
@@ -5,5 +5,5 @@ declare type CalendarCellProps = {
|
|
|
5
5
|
state: CalendarState;
|
|
6
6
|
date: CalendarDate;
|
|
7
7
|
};
|
|
8
|
-
export declare const CalendarCell: ({ state, date }: CalendarCellProps) => JSX.Element;
|
|
8
|
+
export declare const CalendarCell: ({ state, date, ...rest }: CalendarCellProps) => JSX.Element;
|
|
9
9
|
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { CalendarState } from '@react-stately/calendar';
|
|
3
3
|
declare type CalendarGridProps = {
|
|
4
4
|
state: CalendarState;
|
|
5
|
+
navigationDescription?: string;
|
|
5
6
|
};
|
|
6
|
-
export declare const CalendarGrid: ({ state, ...rest }: CalendarGridProps) => JSX.Element;
|
|
7
|
+
export declare const CalendarGrid: ({ state, navigationDescription, ...rest }: CalendarGridProps) => JSX.Element;
|
|
7
8
|
export {};
|
|
@@ -24,10 +24,18 @@ declare type DatePickerProps = {
|
|
|
24
24
|
/** Valideringsvariant */
|
|
25
25
|
variant?: VariantType;
|
|
26
26
|
disabled?: boolean;
|
|
27
|
+
/** Hvis true vil kalenderen alltid vises i en popover når den åpnes
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
disableModal?: boolean;
|
|
27
31
|
/** Ekstra klassenavn */
|
|
28
32
|
className?: string;
|
|
29
33
|
style?: React.CSSProperties;
|
|
34
|
+
/** Skjermlesertest som forklarer navigasjon i kalenderen. Oversettes automatisk for engelsk locale, men ikke andre språk.
|
|
35
|
+
* @default 'Bruk piltastene til å navigere mellom datoer'
|
|
36
|
+
*/
|
|
37
|
+
navigationDescription?: string;
|
|
30
38
|
[key: string]: any;
|
|
31
39
|
};
|
|
32
|
-
export declare const DatePickerBeta: ({ selectedDate: value, onChange, disabled: isDisabled, className, style, variant, feedback, ...rest }: DatePickerProps) => JSX.Element;
|
|
40
|
+
export declare const DatePickerBeta: ({ selectedDate: value, onChange, locale, disabled: isDisabled, className, style, variant, feedback, disableModal, navigationDescription, ...rest }: DatePickerProps) => JSX.Element;
|
|
33
41
|
export {};
|
|
@@ -21,9 +21,11 @@ var date = require('@internationalized/date');
|
|
|
21
21
|
var calendar = require('@react-aria/calendar');
|
|
22
22
|
var calendar$1 = require('@react-stately/calendar');
|
|
23
23
|
var button$1 = require('@react-aria/button');
|
|
24
|
+
var a11y = require('@entur/a11y');
|
|
24
25
|
var reactDom = require('@floating-ui/react-dom');
|
|
25
26
|
var FocusLock = require('react-focus-lock');
|
|
26
27
|
var tokens = require('@entur/tokens');
|
|
28
|
+
var modal = require('@entur/modal');
|
|
27
29
|
|
|
28
30
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
29
31
|
|
|
@@ -106,7 +108,7 @@ function getMonthName(monthIndex, locale) {
|
|
|
106
108
|
return formatter.format(new Date(year, monthIndex));
|
|
107
109
|
}
|
|
108
110
|
|
|
109
|
-
var _excluded$
|
|
111
|
+
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"];
|
|
110
112
|
var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
111
113
|
var style = _ref.style,
|
|
112
114
|
label = _ref.label,
|
|
@@ -130,7 +132,7 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
130
132
|
setShouldFocusOnCalendarButtonAfterSelect = _ref.setShouldFocusOnCalendarButtonAfterSelect,
|
|
131
133
|
calendarGUIIsOpen = _ref.calendarGUIIsOpen,
|
|
132
134
|
onClick = _ref.onClick,
|
|
133
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
135
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
134
136
|
|
|
135
137
|
React__default["default"].useEffect(function () {
|
|
136
138
|
var _inputRef$current, _inputRef$current2, _inputRef$current3;
|
|
@@ -208,7 +210,7 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
208
210
|
}, rest));
|
|
209
211
|
});
|
|
210
212
|
|
|
211
|
-
var _excluded$
|
|
213
|
+
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"];
|
|
212
214
|
ReactDatepicker.registerLocale('nb', locale.nb);
|
|
213
215
|
var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
214
216
|
var style = _ref.style,
|
|
@@ -260,7 +262,7 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
260
262
|
_ref$locale = _ref.locale,
|
|
261
263
|
locale$1 = _ref$locale === void 0 ? locale.nb : _ref$locale,
|
|
262
264
|
open = _ref.open,
|
|
263
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
265
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
|
|
264
266
|
|
|
265
267
|
var datepickerId = utils.useRandomId('eds-datepicker');
|
|
266
268
|
var datepickerRef = React.useRef(null);
|
|
@@ -593,14 +595,15 @@ var createCalendar = function createCalendar(identifier) {
|
|
|
593
595
|
}
|
|
594
596
|
};
|
|
595
597
|
var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, locale, propsCollection) {
|
|
596
|
-
if (locale !== 'no-
|
|
598
|
+
if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
|
|
597
599
|
return norwegianAriaLabel;
|
|
598
600
|
};
|
|
599
601
|
|
|
600
|
-
var _excluded$
|
|
602
|
+
var _excluded$8 = ["selectedDate", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "labelTooltip", "style", "className", "labelProps", "append"];
|
|
601
603
|
var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
602
604
|
var value = _ref.selectedDate,
|
|
603
605
|
label = _ref.label,
|
|
606
|
+
customLocale = _ref.locale,
|
|
604
607
|
showTimeZone = _ref.showTimeZone,
|
|
605
608
|
showTime = _ref.showTime,
|
|
606
609
|
_ref$granularity = _ref.granularity,
|
|
@@ -613,13 +616,13 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
613
616
|
className = _ref.className,
|
|
614
617
|
parentLabelProps = _ref.labelProps,
|
|
615
618
|
append = _ref.append,
|
|
616
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
619
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
617
620
|
|
|
618
621
|
var _useLocale = i18n.useLocale(),
|
|
619
622
|
locale = _useLocale.locale;
|
|
620
623
|
|
|
621
624
|
var state = datepicker$1.useDateFieldState(_extends({}, rest, {
|
|
622
|
-
locale: locale,
|
|
625
|
+
locale: customLocale != null ? customLocale : locale,
|
|
623
626
|
createCalendar: createCalendar,
|
|
624
627
|
value: value === null ? undefined : value,
|
|
625
628
|
hideTimeZone: !showTimeZone,
|
|
@@ -635,7 +638,14 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
635
638
|
fieldProps = _useDateField.fieldProps;
|
|
636
639
|
|
|
637
640
|
var id = utils.useRandomId('datefield');
|
|
638
|
-
return React__default["default"].createElement(
|
|
641
|
+
return React__default["default"].createElement(utils.ConditionalWrapper, {
|
|
642
|
+
condition: customLocale !== undefined,
|
|
643
|
+
wrapper: function wrapper(child) {
|
|
644
|
+
return React__default["default"].createElement(i18n.I18nProvider, {
|
|
645
|
+
locale: customLocale
|
|
646
|
+
}, child);
|
|
647
|
+
}
|
|
648
|
+
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
639
649
|
style: style,
|
|
640
650
|
className: classNames__default["default"]('eds-datefield', className),
|
|
641
651
|
labelId: id,
|
|
@@ -655,15 +665,15 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
655
665
|
state: state,
|
|
656
666
|
key: i
|
|
657
667
|
});
|
|
658
|
-
}));
|
|
668
|
+
})));
|
|
659
669
|
});
|
|
660
670
|
|
|
661
|
-
var _excluded$
|
|
671
|
+
var _excluded$7 = ["children", "className", "style"];
|
|
662
672
|
var CalendarButton = function CalendarButton(_ref) {
|
|
663
673
|
var children = _ref.children,
|
|
664
674
|
className = _ref.className,
|
|
665
675
|
style = _ref.style,
|
|
666
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
676
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
667
677
|
|
|
668
678
|
var ref = React.useRef(null);
|
|
669
679
|
|
|
@@ -677,11 +687,14 @@ var CalendarButton = function CalendarButton(_ref) {
|
|
|
677
687
|
}), children);
|
|
678
688
|
};
|
|
679
689
|
|
|
690
|
+
var _excluded$6 = ["state", "date"];
|
|
680
691
|
var CalendarCell = function CalendarCell(_ref) {
|
|
681
692
|
var _state$timeZone;
|
|
682
693
|
|
|
683
694
|
var state = _ref.state,
|
|
684
|
-
date$1 = _ref.date
|
|
695
|
+
date$1 = _ref.date,
|
|
696
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
697
|
+
|
|
685
698
|
var cellRef = React.useRef(null);
|
|
686
699
|
|
|
687
700
|
var _useCalendarCell = calendar.useCalendarCell({
|
|
@@ -706,14 +719,17 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
706
719
|
'eds-datepicker__calendar__grid__cell--unavailable': isUnavailable,
|
|
707
720
|
'eds-datepicker__calendar__grid__cell--today': date.isEqualDay(date$1, date.now((_state$timeZone = state.timeZone) != null ? _state$timeZone : date.getLocalTimeZone()))
|
|
708
721
|
})
|
|
709
|
-
}), formattedDate));
|
|
722
|
+
}, rest), formattedDate));
|
|
710
723
|
};
|
|
711
724
|
|
|
712
|
-
var _excluded$5 = ["state"];
|
|
725
|
+
var _excluded$5 = ["state", "navigationDescription"];
|
|
713
726
|
var CalendarGrid = function CalendarGrid(_ref) {
|
|
714
727
|
var state = _ref.state,
|
|
728
|
+
navigationDescription = _ref.navigationDescription,
|
|
715
729
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
716
730
|
|
|
731
|
+
var calendarGridId = utils.useRandomId('eds-calendar');
|
|
732
|
+
|
|
717
733
|
var _useLocale = i18n.useLocale(),
|
|
718
734
|
locale = _useLocale.locale;
|
|
719
735
|
|
|
@@ -733,7 +749,13 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
733
749
|
});
|
|
734
750
|
};
|
|
735
751
|
|
|
736
|
-
|
|
752
|
+
var getNavigationDescription = function getNavigationDescription() {
|
|
753
|
+
if (navigationDescription) return navigationDescription;
|
|
754
|
+
if (locale.toLowerCase().includes('en')) return 'Use the arrow keys to navigate between dates';
|
|
755
|
+
return 'Bruk piltastene til å navigere mellom datoer';
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement("table", _extends({}, gridProps, {
|
|
737
759
|
cellSpacing: "0",
|
|
738
760
|
className: "eds-datepicker__calendar__grid"
|
|
739
761
|
}), React__default["default"].createElement("thead", _extends({}, headerProps), React__default["default"].createElement("tr", null, weekDaysMapped().map(function (day, index) {
|
|
@@ -747,24 +769,31 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
747
769
|
return date ? React__default["default"].createElement(CalendarCell, {
|
|
748
770
|
key: i,
|
|
749
771
|
state: state,
|
|
750
|
-
date: date
|
|
772
|
+
date: date,
|
|
773
|
+
"aria-describedby": calendarGridId + 'description'
|
|
751
774
|
}) : React__default["default"].createElement("td", {
|
|
752
775
|
key: i
|
|
753
776
|
});
|
|
754
777
|
}));
|
|
755
|
-
})))
|
|
778
|
+
}))), React__default["default"].createElement(a11y.VisuallyHidden, {
|
|
779
|
+
id: calendarGridId + 'description'
|
|
780
|
+
}, getNavigationDescription()));
|
|
756
781
|
};
|
|
757
782
|
|
|
758
|
-
var _excluded$4 = ["selectedDate", "style", "children"];
|
|
783
|
+
var _excluded$4 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription"];
|
|
759
784
|
var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
760
|
-
var
|
|
785
|
+
var onChange = _ref.onChange,
|
|
786
|
+
customLocale = _ref.locale,
|
|
787
|
+
style = _ref.style,
|
|
788
|
+
navigationDescription = _ref.navigationDescription,
|
|
761
789
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
762
790
|
|
|
763
791
|
var _useLocale = i18n.useLocale(),
|
|
764
792
|
locale = _useLocale.locale;
|
|
765
793
|
|
|
766
794
|
var state = calendar$1.useCalendarState(_extends({}, rest, {
|
|
767
|
-
|
|
795
|
+
onChange: onChange,
|
|
796
|
+
locale: customLocale != null ? customLocale : locale,
|
|
768
797
|
createCalendar: createCalendar
|
|
769
798
|
}));
|
|
770
799
|
|
|
@@ -772,10 +801,16 @@ var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
772
801
|
calendarProps = _useCalendar.calendarProps,
|
|
773
802
|
prevButtonProps = _useCalendar.prevButtonProps,
|
|
774
803
|
nextButtonProps = _useCalendar.nextButtonProps,
|
|
775
|
-
title = _useCalendar.title;
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
804
|
+
title = _useCalendar.title;
|
|
805
|
+
|
|
806
|
+
return React__default["default"].createElement(utils.ConditionalWrapper, {
|
|
807
|
+
condition: customLocale,
|
|
808
|
+
wrapper: function wrapper(child) {
|
|
809
|
+
return React__default["default"].createElement(i18n.I18nProvider, {
|
|
810
|
+
locale: customLocale
|
|
811
|
+
}, child);
|
|
812
|
+
}
|
|
813
|
+
}, React__default["default"].createElement("div", _extends({}, calendarProps, {
|
|
779
814
|
ref: ref,
|
|
780
815
|
className: "eds-datepicker__calendar",
|
|
781
816
|
style: style
|
|
@@ -790,48 +825,32 @@ var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
790
825
|
}), React__default["default"].createElement(icons.RightArrowIcon, {
|
|
791
826
|
size: 20
|
|
792
827
|
}))), React__default["default"].createElement(CalendarGrid, {
|
|
793
|
-
state: state
|
|
794
|
-
|
|
795
|
-
});
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
// return month + ' ' + year;
|
|
800
|
-
// switch (month.toLowerCase()) {
|
|
801
|
-
// case 'january':
|
|
802
|
-
// return 'januar ' + year;
|
|
803
|
-
// case 'february':
|
|
804
|
-
// return 'februar ' + year;
|
|
805
|
-
// case 'march':
|
|
806
|
-
// return 'mars ' + year;
|
|
807
|
-
// case 'may':
|
|
808
|
-
// return 'mai ' + year;
|
|
809
|
-
// case 'june':
|
|
810
|
-
// return 'juni ' + year;
|
|
811
|
-
// case 'july':
|
|
812
|
-
// return 'juli ' + year;
|
|
813
|
-
// case 'october':
|
|
814
|
-
// return 'oktober ' + year;
|
|
815
|
-
// case 'december':
|
|
816
|
-
// return 'desember ' + year;
|
|
817
|
-
// default:
|
|
818
|
-
// return month.toLowerCase() + ' ' + year.toLowerCase();
|
|
819
|
-
// }
|
|
820
|
-
// };
|
|
821
|
-
|
|
822
|
-
var _excluded$3 = ["selectedDate", "onChange", "disabled", "className", "style", "variant", "feedback"];
|
|
828
|
+
state: state,
|
|
829
|
+
navigationDescription: navigationDescription
|
|
830
|
+
})));
|
|
831
|
+
});
|
|
832
|
+
|
|
833
|
+
var _excluded$3 = ["selectedDate", "onChange", "locale", "disabled", "className", "style", "variant", "feedback", "disableModal", "navigationDescription"];
|
|
823
834
|
var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
824
835
|
var value = _ref.selectedDate,
|
|
825
836
|
_onChange = _ref.onChange,
|
|
837
|
+
locale = _ref.locale,
|
|
826
838
|
isDisabled = _ref.disabled,
|
|
827
839
|
className = _ref.className,
|
|
828
840
|
variant = _ref.variant,
|
|
829
841
|
feedback = _ref.feedback,
|
|
842
|
+
_ref$disableModal = _ref.disableModal,
|
|
843
|
+
disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
|
|
844
|
+
navigationDescription = _ref.navigationDescription,
|
|
830
845
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
831
846
|
|
|
847
|
+
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = 1000;
|
|
832
848
|
var datePickerRef = React.useRef(null);
|
|
833
849
|
var calendarRef = React.useRef(null);
|
|
834
|
-
var dateFieldRef = React.useRef(null);
|
|
850
|
+
var dateFieldRef = React.useRef(null);
|
|
851
|
+
|
|
852
|
+
var _useWindowDimensions = utils.useWindowDimensions(),
|
|
853
|
+
width = _useWindowDimensions.width;
|
|
835
854
|
|
|
836
855
|
var state = datepicker$1.useDatePickerState(_extends({}, rest, {
|
|
837
856
|
value: value,
|
|
@@ -846,8 +865,22 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
846
865
|
fieldProps = _useDatePicker.fieldProps,
|
|
847
866
|
buttonProps = _useDatePicker.buttonProps,
|
|
848
867
|
dialogProps = _useDatePicker.dialogProps,
|
|
849
|
-
calendarProps = _useDatePicker.calendarProps;
|
|
868
|
+
calendarProps = _useDatePicker.calendarProps;
|
|
869
|
+
|
|
870
|
+
React.useEffect(function () {
|
|
871
|
+
var _calendarRef$current;
|
|
872
|
+
|
|
873
|
+
var keyDownHandler = function keyDownHandler(event) {
|
|
874
|
+
if (event.key === 'Escape') state.setOpen(false);
|
|
875
|
+
};
|
|
850
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
|
|
851
884
|
|
|
852
885
|
var _useFloating = reactDom.useFloating({
|
|
853
886
|
placement: 'bottom-start',
|
|
@@ -859,35 +892,81 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
859
892
|
y = _useFloating.y,
|
|
860
893
|
reference = _useFloating.reference,
|
|
861
894
|
floating = _useFloating.floating,
|
|
862
|
-
strategy = _useFloating.strategy;
|
|
895
|
+
strategy = _useFloating.strategy;
|
|
863
896
|
|
|
897
|
+
utils.useOnClickOutside([calendarRef], function () {
|
|
898
|
+
state.setOpen(false);
|
|
899
|
+
});
|
|
864
900
|
|
|
865
|
-
|
|
866
|
-
|
|
901
|
+
var handleCalendarButtonOnClick = function handleCalendarButtonOnClick(calendarIsOpen) {
|
|
902
|
+
if (!calendarIsOpen) {
|
|
903
|
+
state.setOpen(true);
|
|
904
|
+
setFocusToRelevantDate();
|
|
905
|
+
} else {
|
|
906
|
+
state.setOpen(false);
|
|
907
|
+
}
|
|
908
|
+
};
|
|
909
|
+
|
|
910
|
+
var setFocusToRelevantDate = function setFocusToRelevantDate() {
|
|
911
|
+
var _calendarRef$current3, _calendarRef$current4;
|
|
867
912
|
|
|
868
913
|
var gridCellPrefix = 'eds-datepicker__calendar__grid__cell';
|
|
869
|
-
var selectedCell = (_calendarRef$
|
|
870
|
-
var todayCell = (_calendarRef$
|
|
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];
|
|
871
916
|
if (selectedCell) selectedCell.focus();else if (todayCell) todayCell.focus();
|
|
872
|
-
}
|
|
873
|
-
utils.useOnClickOutside([calendarRef], function () {
|
|
874
|
-
state.setOpen(false);
|
|
875
|
-
});
|
|
876
|
-
React.useEffect(function () {
|
|
877
|
-
var _calendarRef$current3;
|
|
917
|
+
};
|
|
878
918
|
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
919
|
+
var popoverCalendar = React__default["default"].createElement(FocusLock__default["default"], {
|
|
920
|
+
disabled: !state.isOpen,
|
|
921
|
+
returnFocus: true
|
|
922
|
+
}, React__default["default"].createElement(Calendar, _extends({}, dialogProps, calendarProps, {
|
|
923
|
+
onChange: function onChange(dateValue) {
|
|
924
|
+
_onChange(dateValue);
|
|
882
925
|
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
926
|
+
state.setOpen(false);
|
|
927
|
+
},
|
|
928
|
+
disabled: calendarProps.isDisabled,
|
|
929
|
+
ref: function ref(node) {
|
|
930
|
+
calendarRef.current = node;
|
|
931
|
+
floating(node);
|
|
932
|
+
},
|
|
933
|
+
navigationDescription: navigationDescription,
|
|
934
|
+
// styling for floating-UI popover
|
|
935
|
+
style: {
|
|
936
|
+
display: state.isOpen ? 'block' : 'none',
|
|
937
|
+
position: strategy,
|
|
938
|
+
top: y != null ? y : 0,
|
|
939
|
+
left: x != null ? x : 0,
|
|
940
|
+
zIndex: 10
|
|
941
|
+
}
|
|
942
|
+
})));
|
|
943
|
+
var modalCalendar = React__default["default"].createElement(modal.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__default["default"].createElement(Calendar, _extends({}, dialogProps, calendarProps, {
|
|
953
|
+
onChange: function onChange(dateValue) {
|
|
954
|
+
_onChange(dateValue);
|
|
886
955
|
|
|
887
|
-
|
|
888
|
-
}
|
|
889
|
-
|
|
890
|
-
|
|
956
|
+
state.setOpen(false);
|
|
957
|
+
},
|
|
958
|
+
disabled: calendarProps.isDisabled,
|
|
959
|
+
ref: calendarRef,
|
|
960
|
+
navigationDescription: navigationDescription
|
|
961
|
+
})));
|
|
962
|
+
return React__default["default"].createElement(utils.ConditionalWrapper, {
|
|
963
|
+
condition: locale !== undefined,
|
|
964
|
+
wrapper: function wrapper(child) {
|
|
965
|
+
return React__default["default"].createElement(i18n.I18nProvider, {
|
|
966
|
+
locale: locale
|
|
967
|
+
}, child);
|
|
968
|
+
}
|
|
969
|
+
}, React__default["default"].createElement("div", {
|
|
891
970
|
className: classNames__default["default"]('eds-datepicker', className)
|
|
892
971
|
}, React__default["default"].createElement("div", _extends({}, groupProps, {
|
|
893
972
|
ref: function ref(node) {
|
|
@@ -907,32 +986,10 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
907
986
|
feedback: feedback
|
|
908
987
|
})), !fieldProps.isDisabled && React__default["default"].createElement(CalendarButton, _extends({}, buttonProps, {
|
|
909
988
|
onPress: function onPress() {
|
|
910
|
-
return
|
|
989
|
+
return handleCalendarButtonOnClick(state.isOpen);
|
|
911
990
|
},
|
|
912
991
|
className: "eds-datepicker__open-calendar-button"
|
|
913
|
-
}), React__default["default"].createElement(icons.CalendarIcon, null))
|
|
914
|
-
disabled: !state.isOpen,
|
|
915
|
-
returnFocus: true
|
|
916
|
-
}, React__default["default"].createElement(Calendar, _extends({}, dialogProps, calendarProps, {
|
|
917
|
-
onChange: function onChange(dateValue) {
|
|
918
|
-
_onChange(dateValue);
|
|
919
|
-
|
|
920
|
-
state.setOpen(false);
|
|
921
|
-
},
|
|
922
|
-
disabled: calendarProps.isDisabled,
|
|
923
|
-
ref: function ref(node) {
|
|
924
|
-
calendarRef.current = node;
|
|
925
|
-
floating(node);
|
|
926
|
-
},
|
|
927
|
-
// styling for floating-UI popover
|
|
928
|
-
style: {
|
|
929
|
-
display: state.isOpen ? 'block' : 'none',
|
|
930
|
-
position: strategy,
|
|
931
|
-
top: y != null ? y : 0,
|
|
932
|
-
left: x != null ? x : 0,
|
|
933
|
-
zIndex: 10
|
|
934
|
-
}
|
|
935
|
-
}))));
|
|
992
|
+
}), React__default["default"].createElement(icons.CalendarIcon, null)), width > CALENDAR_MODAL_MAX_SCREEN_WIDTH || disableModal ? popoverCalendar : modalCalendar)));
|
|
936
993
|
};
|
|
937
994
|
|
|
938
995
|
var _excluded$2 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|