@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 CHANGED
@@ -3,6 +3,23 @@
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-beta.0](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@4.0.0-alpha.1...@entur/datepicker@4.0.0-beta.0) (2022-10-27)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **datepicker:** final touches to datepicker and supcomponents ([8c21915](https://bitbucket.org/enturas/design-system/commits/8c21915cea21346444bfdf2b66bfe10de1c9fcba))
11
+
12
+ # [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)
13
+
14
+ ### Bug Fixes
15
+
16
+ - **datepicker:** fix locale issues ([8c325b8](https://bitbucket.org/enturas/design-system/commits/8c325b86088feb9f8a7d4ad538a18ec6d78e202d))
17
+
18
+ ### Features
19
+
20
+ - **datepicker:** add i18y-wrapper to components for locale ([aed14fb](https://bitbucket.org/enturas/design-system/commits/aed14fb32e789159b4021c8b740a8101b83228fa))
21
+ - **datepicker:** add modal view for calendar when using small screen widths ([05d9325](https://bitbucket.org/enturas/design-system/commits/05d9325a83dbc8d7d2e62050e7d6bbecbe2f665e))
22
+
6
23
  # [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
24
 
8
25
  ### 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 {};
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { SpectrumDateFieldProps, DateValue } from '@react-types/datepicker';
3
+ import type { CalendarDate } from '@internationalized/date';
3
4
  import { VariantType } from '@entur/form';
4
5
  import './DateField.scss';
5
6
  export declare type DateFieldProps = {
@@ -18,15 +19,28 @@ export declare type DateFieldProps = {
18
19
  */
19
20
  showTimeZone?: boolean;
20
21
  showTime?: boolean;
22
+ /** Tidligste gyldige datovalg.
23
+ * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone */
24
+ minValue?: CalendarDate;
25
+ /** Seneste gyldige datovalg. (se minValue) */
26
+ maxValue?: CalendarDate;
21
27
  /** Varselmelding, som vil komme under TimePicker */
22
28
  feedback?: string;
23
29
  /** Valideringsvariant */
24
30
  variant?: VariantType;
31
+ /** Varselmelding som forteller om ugyldig dato
32
+ * @default "Ugyldig dato"
33
+ */
34
+ validationFeedback?: string;
35
+ /** Valideringsvariant for melding om ugyldig dato
36
+ * @default "error"
37
+ */
38
+ validationVariant?: VariantType;
25
39
  labelTooltip?: React.ReactNode;
26
40
  disabled?: boolean;
27
41
  /** Ekstra klassenavn */
28
42
  className?: string;
29
43
  style?: React.CSSProperties;
30
44
  [key: string]: any;
31
- } & Omit<SpectrumDateFieldProps<DateValue>, 'onChange' | 'label' | 'hideTimeZone' | 'placeholder'>;
45
+ } & Omit<SpectrumDateFieldProps<DateValue>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
32
46
  export declare const DateField: React.ForwardRefExoticComponent<Pick<DateFieldProps, string | number> & React.RefAttributes<HTMLDivElement>>;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- import type { DateValue } from '@react-types/datepicker';
3
- import { VariantType } from '@entur/form';
2
+ import type { CalendarDate } from '@internationalized/date';
3
+ import type { DateValue, SpectrumDatePickerProps } from '@react-types/datepicker';
4
+ import type { VariantType } from '@entur/form';
4
5
  import './DatePicker.scss';
5
6
  declare type DatePickerProps = {
6
7
  /** Den valgte datoen. Dato i '@internationalized/date'-pakkens format */
@@ -17,17 +18,46 @@ declare type DatePickerProps = {
17
18
  * @default false
18
19
  */
19
20
  showTimeZone?: boolean;
20
- /** Viser tidspunkt i tillegg til dato hvis det er tilgjengelig */
21
+ /** Viser tidspunkt i tillegg til dato.
22
+ * OBS: selectedDate må være av typen CalendarDateTime eller ZonedDateTime
23
+ */
21
24
  showTime?: boolean;
25
+ /** Tidligste gyldige datovalg.
26
+ * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone. */
27
+ minValue?: CalendarDate;
28
+ /** Seneste gyldige datovalg.
29
+ * Eks: today(getLocalTimeZone()) == i dag i lokal tidssone
30
+ *
31
+ * OBS: Hvis du bruker dato med tid vil det være til, men ikke med denne datoen */
32
+ maxValue?: CalendarDate;
33
+ /** Funksjon som tar inn en dato og sier om den er utilgjengelig.
34
+ * Eks. (date) => isWeekend(date, 'no-NO') == helgedager er ikke tilgjengelig */
35
+ isDateUnavailable?: (date: DateValue) => boolean;
22
36
  /** Varselmelding, som vil komme under DatePicker sitt inputfelt */
23
37
  feedback?: string;
24
38
  /** Valideringsvariant */
25
39
  variant?: VariantType;
40
+ /** Varselmelding som forteller om ugyldig dato
41
+ * @default "Ugyldig dato"
42
+ */
43
+ validationFeedback?: string;
44
+ /** Valideringsvariant for melding om ugyldig dato
45
+ * @default "error"
46
+ */
47
+ validationVariant?: VariantType;
26
48
  disabled?: boolean;
49
+ /** Hvis true vil kalenderen alltid vises i en popover når den åpnes
50
+ * @default false
51
+ */
52
+ disableModal?: boolean;
53
+ labelTooltip?: React.ReactNode;
54
+ /** Skjermlesertest som forklarer navigasjon i kalenderen. Oversettes automatisk for engelsk locale, men ikke andre språk.
55
+ * @default 'Bruk piltastene til å navigere mellom datoer'
56
+ */
57
+ navigationDescription?: string;
27
58
  /** Ekstra klassenavn */
28
59
  className?: string;
29
60
  style?: React.CSSProperties;
30
- [key: string]: any;
31
- };
32
- export declare const DatePickerBeta: ({ selectedDate: value, onChange, disabled: isDisabled, className, style, variant, feedback, ...rest }: DatePickerProps) => JSX.Element;
61
+ } & Omit<SpectrumDatePickerProps<DateValue>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
62
+ export declare const DatePickerBeta: ({ selectedDate: value, onChange, locale, disabled: isDisabled, showTime, showTimeZone, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, ...rest }: DatePickerProps) => JSX.Element;
33
63
  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", "validationVariant", "validationFeedback", "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,
@@ -608,18 +611,22 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
608
611
  disabled = _ref.disabled,
609
612
  variant = _ref.variant,
610
613
  feedback = _ref.feedback,
614
+ _ref$validationVarian = _ref.validationVariant,
615
+ validationVariant = _ref$validationVarian === void 0 ? 'error' : _ref$validationVarian,
616
+ _ref$validationFeedba = _ref.validationFeedback,
617
+ validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
611
618
  labelTooltip = _ref.labelTooltip,
612
619
  style = _ref.style,
613
620
  className = _ref.className,
614
621
  parentLabelProps = _ref.labelProps,
615
622
  append = _ref.append,
616
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
623
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
617
624
 
618
625
  var _useLocale = i18n.useLocale(),
619
626
  locale = _useLocale.locale;
620
627
 
621
628
  var state = datepicker$1.useDateFieldState(_extends({}, rest, {
622
- locale: locale,
629
+ locale: customLocale != null ? customLocale : locale,
623
630
  createCalendar: createCalendar,
624
631
  value: value === null ? undefined : value,
625
632
  hideTimeZone: !showTimeZone,
@@ -635,7 +642,14 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
635
642
  fieldProps = _useDateField.fieldProps;
636
643
 
637
644
  var id = utils.useRandomId('datefield');
638
- return React__default["default"].createElement(form.BaseFormControl, _extends({
645
+ return React__default["default"].createElement(utils.ConditionalWrapper, {
646
+ condition: customLocale !== undefined,
647
+ wrapper: function wrapper(child) {
648
+ return React__default["default"].createElement(i18n.I18nProvider, {
649
+ locale: customLocale
650
+ }, child);
651
+ }
652
+ }, React__default["default"].createElement(form.BaseFormControl, _extends({
639
653
  style: style,
640
654
  className: classNames__default["default"]('eds-datefield', className),
641
655
  labelId: id,
@@ -646,24 +660,25 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
646
660
  labelTooltip: labelTooltip,
647
661
  labelProps: parentLabelProps != null ? parentLabelProps : labelProps
648
662
  }, fieldProps, {
649
- variant: variant,
650
- feedback: feedback,
651
- append: append
663
+ variant: (variant != null ? variant : state.validationState === 'invalid') ? validationVariant : undefined,
664
+ feedback: (feedback != null ? feedback : state.validationState === 'invalid') ? validationFeedback : undefined,
665
+ append: append,
666
+ ariaAlertOnFeedback: true
652
667
  }), state.segments.map(function (segment, i) {
653
668
  return React__default["default"].createElement(FieldSegment, {
654
669
  segment: segment,
655
670
  state: state,
656
671
  key: i
657
672
  });
658
- }));
673
+ })));
659
674
  });
660
675
 
661
- var _excluded$6 = ["children", "className", "style"];
676
+ var _excluded$7 = ["children", "className", "style"];
662
677
  var CalendarButton = function CalendarButton(_ref) {
663
678
  var children = _ref.children,
664
679
  className = _ref.className,
665
680
  style = _ref.style,
666
- props = _objectWithoutPropertiesLoose(_ref, _excluded$6);
681
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
667
682
 
668
683
  var ref = React.useRef(null);
669
684
 
@@ -677,11 +692,14 @@ var CalendarButton = function CalendarButton(_ref) {
677
692
  }), children);
678
693
  };
679
694
 
695
+ var _excluded$6 = ["state", "date"];
680
696
  var CalendarCell = function CalendarCell(_ref) {
681
697
  var _state$timeZone;
682
698
 
683
699
  var state = _ref.state,
684
- date$1 = _ref.date;
700
+ date$1 = _ref.date,
701
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
702
+
685
703
  var cellRef = React.useRef(null);
686
704
 
687
705
  var _useCalendarCell = calendar.useCalendarCell({
@@ -702,18 +720,21 @@ var CalendarCell = function CalendarCell(_ref) {
702
720
  hidden: isOutsideVisibleRange,
703
721
  className: classNames__default["default"]('eds-datepicker__calendar__grid__cell', {
704
722
  'eds-datepicker__calendar__grid__cell--selected': isSelected,
705
- 'eds-datepicker__calendar__grid__cell--disabled': isDisabled,
706
- 'eds-datepicker__calendar__grid__cell--unavailable': isUnavailable,
723
+ 'eds-datepicker__calendar__grid__cell--disabled': isDisabled || isUnavailable,
724
+ 'eds-datepicker__calendar__grid__cell--outside-month': isOutsideVisibleRange,
707
725
  'eds-datepicker__calendar__grid__cell--today': date.isEqualDay(date$1, date.now((_state$timeZone = state.timeZone) != null ? _state$timeZone : date.getLocalTimeZone()))
708
726
  })
709
- }), formattedDate));
727
+ }, rest), formattedDate));
710
728
  };
711
729
 
712
- var _excluded$5 = ["state"];
730
+ var _excluded$5 = ["state", "navigationDescription"];
713
731
  var CalendarGrid = function CalendarGrid(_ref) {
714
732
  var state = _ref.state,
733
+ navigationDescription = _ref.navigationDescription,
715
734
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
716
735
 
736
+ var calendarGridId = utils.useRandomId('eds-calendar');
737
+
717
738
  var _useLocale = i18n.useLocale(),
718
739
  locale = _useLocale.locale;
719
740
 
@@ -733,7 +754,13 @@ var CalendarGrid = function CalendarGrid(_ref) {
733
754
  });
734
755
  };
735
756
 
736
- return React__default["default"].createElement("table", _extends({}, gridProps, {
757
+ var getNavigationDescription = function getNavigationDescription() {
758
+ if (navigationDescription) return navigationDescription;
759
+ if (locale.toLowerCase().includes('en')) return 'Use the arrow keys to navigate between dates';
760
+ return 'Bruk piltastene til å navigere mellom datoer';
761
+ };
762
+
763
+ return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement("table", _extends({}, gridProps, {
737
764
  cellSpacing: "0",
738
765
  className: "eds-datepicker__calendar__grid"
739
766
  }), React__default["default"].createElement("thead", _extends({}, headerProps), React__default["default"].createElement("tr", null, weekDaysMapped().map(function (day, index) {
@@ -747,24 +774,31 @@ var CalendarGrid = function CalendarGrid(_ref) {
747
774
  return date ? React__default["default"].createElement(CalendarCell, {
748
775
  key: i,
749
776
  state: state,
750
- date: date
777
+ date: date,
778
+ "aria-describedby": calendarGridId + 'description'
751
779
  }) : React__default["default"].createElement("td", {
752
780
  key: i
753
781
  });
754
782
  }));
755
- })));
783
+ }))), React__default["default"].createElement(a11y.VisuallyHidden, {
784
+ id: calendarGridId + 'description'
785
+ }, getNavigationDescription()));
756
786
  };
757
787
 
758
- var _excluded$4 = ["selectedDate", "style", "children"];
788
+ var _excluded$4 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription"];
759
789
  var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
760
- var style = _ref.style,
790
+ var onChange = _ref.onChange,
791
+ customLocale = _ref.locale,
792
+ style = _ref.style,
793
+ navigationDescription = _ref.navigationDescription,
761
794
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
762
795
 
763
796
  var _useLocale = i18n.useLocale(),
764
797
  locale = _useLocale.locale;
765
798
 
766
799
  var state = calendar$1.useCalendarState(_extends({}, rest, {
767
- locale: locale,
800
+ onChange: onChange,
801
+ locale: customLocale != null ? customLocale : locale,
768
802
  createCalendar: createCalendar
769
803
  }));
770
804
 
@@ -772,10 +806,16 @@ var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
772
806
  calendarProps = _useCalendar.calendarProps,
773
807
  prevButtonProps = _useCalendar.prevButtonProps,
774
808
  nextButtonProps = _useCalendar.nextButtonProps,
775
- title = _useCalendar.title; // const monthAndYear = title.split(' ');
776
-
777
-
778
- return React__default["default"].createElement("div", _extends({}, calendarProps, {
809
+ title = _useCalendar.title;
810
+
811
+ return React__default["default"].createElement(utils.ConditionalWrapper, {
812
+ condition: customLocale,
813
+ wrapper: function wrapper(child) {
814
+ return React__default["default"].createElement(i18n.I18nProvider, {
815
+ locale: customLocale
816
+ }, child);
817
+ }
818
+ }, React__default["default"].createElement("div", _extends({}, calendarProps, {
779
819
  ref: ref,
780
820
  className: "eds-datepicker__calendar",
781
821
  style: style
@@ -790,48 +830,38 @@ var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
790
830
  }), React__default["default"].createElement(icons.RightArrowIcon, {
791
831
  size: 20
792
832
  }))), 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"];
833
+ state: state,
834
+ navigationDescription: navigationDescription
835
+ })));
836
+ });
837
+
838
+ var _excluded$3 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription"];
823
839
  var DatePickerBeta = function DatePickerBeta(_ref) {
824
840
  var value = _ref.selectedDate,
825
841
  _onChange = _ref.onChange,
842
+ locale = _ref.locale,
826
843
  isDisabled = _ref.disabled,
844
+ showTime = _ref.showTime,
845
+ _ref$showTimeZone = _ref.showTimeZone,
846
+ showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
827
847
  className = _ref.className,
828
848
  variant = _ref.variant,
829
849
  feedback = _ref.feedback,
850
+ validationVariant = _ref.validationVariant,
851
+ validationFeedback = _ref.validationFeedback,
852
+ _ref$disableModal = _ref.disableModal,
853
+ disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
854
+ labelTooltip = _ref.labelTooltip,
855
+ navigationDescription = _ref.navigationDescription,
830
856
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
831
857
 
858
+ var CALENDAR_MODAL_MAX_SCREEN_WIDTH = 1000;
832
859
  var datePickerRef = React.useRef(null);
833
860
  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
861
+ var dateFieldRef = React.useRef(null);
862
+
863
+ var _useWindowDimensions = utils.useWindowDimensions(),
864
+ width = _useWindowDimensions.width;
835
865
 
836
866
  var state = datepicker$1.useDatePickerState(_extends({}, rest, {
837
867
  value: value,
@@ -846,8 +876,22 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
846
876
  fieldProps = _useDatePicker.fieldProps,
847
877
  buttonProps = _useDatePicker.buttonProps,
848
878
  dialogProps = _useDatePicker.dialogProps,
849
- calendarProps = _useDatePicker.calendarProps; // calculations for floating-UI popover position
879
+ calendarProps = _useDatePicker.calendarProps;
880
+
881
+ React.useEffect(function () {
882
+ var _calendarRef$current;
850
883
 
884
+ var keyDownHandler = function keyDownHandler(event) {
885
+ if (event.key === 'Escape') state.setOpen(false);
886
+ };
887
+
888
+ (_calendarRef$current = calendarRef.current) == null ? void 0 : _calendarRef$current.addEventListener('keydown', keyDownHandler);
889
+ return function () {
890
+ var _calendarRef$current2;
891
+
892
+ return (_calendarRef$current2 = calendarRef.current) == null ? void 0 : _calendarRef$current2.removeEventListener('keydown', keyDownHandler);
893
+ }; // eslint-disable-next-line react-hooks/exhaustive-deps
894
+ }, []); // calculations for floating-UI popover position
851
895
 
852
896
  var _useFloating = reactDom.useFloating({
853
897
  placement: 'bottom-start',
@@ -859,58 +903,31 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
859
903
  y = _useFloating.y,
860
904
  reference = _useFloating.reference,
861
905
  floating = _useFloating.floating,
862
- strategy = _useFloating.strategy; // set focus to selected date or today if available on open calendar
906
+ strategy = _useFloating.strategy;
863
907
 
864
-
865
- React.useEffect(function () {
866
- var _calendarRef$current, _calendarRef$current2;
867
-
868
- 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];
871
- if (selectedCell) selectedCell.focus();else if (todayCell) todayCell.focus();
872
- }, [state.isOpen]);
873
908
  utils.useOnClickOutside([calendarRef], function () {
874
909
  state.setOpen(false);
875
910
  });
876
- React.useEffect(function () {
877
- var _calendarRef$current3;
878
911
 
879
- var keyDownHandler = function keyDownHandler(event) {
880
- if (event.key === 'Escape') state.setOpen(false);
881
- };
912
+ var handleCalendarButtonOnClick = function handleCalendarButtonOnClick(calendarIsOpen) {
913
+ if (!calendarIsOpen) {
914
+ state.setOpen(true);
915
+ setFocusToRelevantDate();
916
+ } else {
917
+ state.setOpen(false);
918
+ }
919
+ };
882
920
 
883
- (_calendarRef$current3 = calendarRef.current) == null ? void 0 : _calendarRef$current3.addEventListener('keydown', keyDownHandler);
884
- return function () {
885
- var _calendarRef$current4;
921
+ var setFocusToRelevantDate = function setFocusToRelevantDate() {
922
+ var _calendarRef$current3, _calendarRef$current4;
886
923
 
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", {
891
- className: classNames__default["default"]('eds-datepicker', className)
892
- }, React__default["default"].createElement("div", _extends({}, groupProps, {
893
- ref: function ref(node) {
894
- datePickerRef.current = node;
895
- reference(node);
896
- },
897
- className: "eds-datepicker__datefield__wrapper"
898
- }), React__default["default"].createElement(DateField, _extends({}, fieldProps, {
899
- selectedDate: state.value,
900
- label: rest.label,
901
- labelProps: labelProps,
902
- ref: dateFieldRef,
903
- className: classNames__default["default"]('eds-datepicker__datefield', {
904
- 'eds-datepicker__datefield--disabled': fieldProps.isDisabled
905
- }),
906
- variant: variant,
907
- feedback: feedback
908
- })), !fieldProps.isDisabled && React__default["default"].createElement(CalendarButton, _extends({}, buttonProps, {
909
- onPress: function onPress() {
910
- return state.setOpen(!state.isOpen);
911
- },
912
- className: "eds-datepicker__open-calendar-button"
913
- }), React__default["default"].createElement(icons.CalendarIcon, null))), React__default["default"].createElement(FocusLock__default["default"], {
924
+ var gridCellPrefix = 'eds-datepicker__calendar__grid__cell';
925
+ var selectedCell = (_calendarRef$current3 = calendarRef.current) == null ? void 0 : _calendarRef$current3.getElementsByClassName(gridCellPrefix + '--selected')[0];
926
+ var todayCell = (_calendarRef$current4 = calendarRef.current) == null ? void 0 : _calendarRef$current4.getElementsByClassName(gridCellPrefix + '--today')[0];
927
+ if (selectedCell) selectedCell.focus();else if (todayCell) todayCell.focus();
928
+ };
929
+
930
+ var popoverCalendar = React__default["default"].createElement(FocusLock__default["default"], {
914
931
  disabled: !state.isOpen,
915
932
  returnFocus: true
916
933
  }, React__default["default"].createElement(Calendar, _extends({}, dialogProps, calendarProps, {
@@ -924,6 +941,7 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
924
941
  calendarRef.current = node;
925
942
  floating(node);
926
943
  },
944
+ navigationDescription: navigationDescription,
927
945
  // styling for floating-UI popover
928
946
  style: {
929
947
  display: state.isOpen ? 'block' : 'none',
@@ -932,7 +950,62 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
932
950
  left: x != null ? x : 0,
933
951
  zIndex: 10
934
952
  }
935
- }))));
953
+ })));
954
+ var modalCalendar = React__default["default"].createElement(modal.Modal, {
955
+ size: 'small',
956
+ title: "",
957
+ open: state.isOpen,
958
+ onDismiss: function onDismiss() {
959
+ return state.setOpen(false);
960
+ },
961
+ closeOnClickOutside: true,
962
+ className: "eds-datepicker__calendar-modal"
963
+ }, React__default["default"].createElement(Calendar, _extends({}, dialogProps, calendarProps, {
964
+ onChange: function onChange(dateValue) {
965
+ _onChange(dateValue);
966
+
967
+ state.setOpen(false);
968
+ },
969
+ disabled: calendarProps.isDisabled,
970
+ ref: calendarRef,
971
+ navigationDescription: navigationDescription
972
+ })));
973
+ return React__default["default"].createElement(utils.ConditionalWrapper, {
974
+ condition: locale !== undefined,
975
+ wrapper: function wrapper(child) {
976
+ return React__default["default"].createElement(i18n.I18nProvider, {
977
+ locale: locale
978
+ }, child);
979
+ }
980
+ }, React__default["default"].createElement("div", {
981
+ className: classNames__default["default"]('eds-datepicker', className)
982
+ }, React__default["default"].createElement("div", _extends({}, groupProps, {
983
+ ref: function ref(node) {
984
+ datePickerRef.current = node;
985
+ reference(node);
986
+ },
987
+ className: "eds-datepicker__datefield__wrapper"
988
+ }), React__default["default"].createElement(DateField, _extends({}, fieldProps, {
989
+ selectedDate: state.value,
990
+ label: rest.label,
991
+ labelProps: labelProps,
992
+ showTime: showTime,
993
+ showTimeZone: showTimeZone,
994
+ ref: dateFieldRef,
995
+ variant: variant,
996
+ feedback: feedback,
997
+ validationVariant: validationVariant,
998
+ validationFeedback: validationFeedback,
999
+ labelTooltip: labelTooltip,
1000
+ className: classNames__default["default"]('eds-datepicker__datefield', {
1001
+ 'eds-datepicker__datefield--disabled': fieldProps.isDisabled
1002
+ })
1003
+ })), !fieldProps.isDisabled && React__default["default"].createElement(CalendarButton, _extends({}, buttonProps, {
1004
+ onPress: function onPress() {
1005
+ return handleCalendarButtonOnClick(state.isOpen);
1006
+ },
1007
+ className: "eds-datepicker__open-calendar-button"
1008
+ }), React__default["default"].createElement(icons.CalendarIcon, null)), width > CALENDAR_MODAL_MAX_SCREEN_WIDTH || disableModal ? popoverCalendar : modalCalendar)));
936
1009
  };
937
1010
 
938
1011
  var _excluded$2 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],