@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 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$9 = ["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"];
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$9);
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$8 = ["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"];
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$8);
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-NO') return propsCollection['aria-label'];
598
+ if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
597
599
  return norwegianAriaLabel;
598
600
  };
599
601
 
600
- var _excluded$7 = ["selectedDate", "label", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "labelTooltip", "style", "className", "labelProps", "append"];
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$7);
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(form.BaseFormControl, _extends({
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$6 = ["children", "className", "style"];
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$6);
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
- return React__default["default"].createElement("table", _extends({}, gridProps, {
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 style = _ref.style,
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
- locale: locale,
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; // const monthAndYear = title.split(' ');
776
-
777
-
778
- return React__default["default"].createElement("div", _extends({}, calendarProps, {
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
- }); // const getTitle = (monthYearList: string[], locale: string) => {
796
- // const month = monthYearList[0];
797
- // const year = monthYearList[1];
798
- // if (locale.toLowerCase() !== 'no-no' && locale.toLowerCase() !== 'no')
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); // TODO SE PÅ OM VERDIER I USE...STATE BURDE VÆRE I USE... I STEDET
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; // calculations for floating-UI popover position
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; // set focus to selected date or today if available on open calendar
895
+ strategy = _useFloating.strategy;
863
896
 
897
+ utils.useOnClickOutside([calendarRef], function () {
898
+ state.setOpen(false);
899
+ });
864
900
 
865
- React.useEffect(function () {
866
- var _calendarRef$current, _calendarRef$current2;
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$current = calendarRef.current) == null ? void 0 : _calendarRef$current.getElementsByClassName(gridCellPrefix + '--selected')[0];
870
- var todayCell = (_calendarRef$current2 = calendarRef.current) == null ? void 0 : _calendarRef$current2.getElementsByClassName(gridCellPrefix + '--today')[0];
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
- }, [state.isOpen]);
873
- utils.useOnClickOutside([calendarRef], function () {
874
- state.setOpen(false);
875
- });
876
- React.useEffect(function () {
877
- var _calendarRef$current3;
917
+ };
878
918
 
879
- var keyDownHandler = function keyDownHandler(event) {
880
- if (event.key === 'Escape') state.setOpen(false);
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
- (_calendarRef$current3 = calendarRef.current) == null ? void 0 : _calendarRef$current3.addEventListener('keydown', keyDownHandler);
884
- return function () {
885
- var _calendarRef$current4;
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
- return (_calendarRef$current4 = calendarRef.current) == null ? void 0 : _calendarRef$current4.removeEventListener('keydown', keyDownHandler);
888
- }; // eslint-disable-next-line react-hooks/exhaustive-deps
889
- }, []);
890
- return React__default["default"].createElement("div", {
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 state.setOpen(!state.isOpen);
989
+ return handleCalendarButtonOnClick(state.isOpen);
911
990
  },
912
991
  className: "eds-datepicker__open-calendar-button"
913
- }), React__default["default"].createElement(icons.CalendarIcon, null))), React__default["default"].createElement(FocusLock__default["default"], {
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"],