@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.
@@ -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$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"];
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$9);
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$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"];
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$8);
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-NO') return propsCollection['aria-label'];
587
+ if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
586
588
  return norwegianAriaLabel;
587
589
  };
588
590
 
589
- var _excluded$7 = ["selectedDate", "label", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "labelTooltip", "style", "className", "labelProps", "append"];
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$7);
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(BaseFormControl, _extends({
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$6 = ["children", "className", "style"];
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$6);
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--unavailable': isUnavailable,
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
- return React.createElement("table", _extends({}, gridProps, {
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 style = _ref.style,
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
- locale: locale,
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; // const monthAndYear = title.split(' ');
765
-
766
-
767
- return React.createElement("div", _extends({}, calendarProps, {
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
- }); // const getTitle = (monthYearList: string[], locale: string) => {
785
- // const month = monthYearList[0];
786
- // const year = monthYearList[1];
787
- // if (locale.toLowerCase() !== 'no-no' && locale.toLowerCase() !== 'no')
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); // TODO SE PÅ OM VERDIER I USE...STATE BURDE VÆRE I USE... I STEDET
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; // calculations for floating-UI popover position
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; // set focus to selected date or today if available on open calendar
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
- var keyDownHandler = function keyDownHandler(event) {
869
- if (event.key === 'Escape') state.setOpen(false);
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
- (_calendarRef$current3 = calendarRef.current) == null ? void 0 : _calendarRef$current3.addEventListener('keydown', keyDownHandler);
873
- return function () {
874
- var _calendarRef$current4;
910
+ var setFocusToRelevantDate = function setFocusToRelevantDate() {
911
+ var _calendarRef$current3, _calendarRef$current4;
875
912
 
876
- return (_calendarRef$current4 = calendarRef.current) == null ? void 0 : _calendarRef$current4.removeEventListener('keydown', keyDownHandler);
877
- }; // eslint-disable-next-line react-hooks/exhaustive-deps
878
- }, []);
879
- return React.createElement("div", {
880
- className: classNames('eds-datepicker', className)
881
- }, React.createElement("div", _extends({}, groupProps, {
882
- ref: function ref(node) {
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"],