@entur/datepicker 4.0.0-beta.1 → 4.0.0-beta.3

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.
@@ -13,14 +13,14 @@ import 'react-datepicker/dist/react-datepicker.css';
13
13
  import { useDateFieldState, useDatePickerState, useTimeFieldState } from '@react-stately/datepicker';
14
14
  import { useDateSegment, useDateField, useDatePicker, useTimeField } from '@react-aria/datepicker';
15
15
  import { useLocale, I18nProvider } from '@react-aria/i18n';
16
- import { ZonedDateTime, parseAbsolute, Time, CalendarDateTime, GregorianCalendar, isEqualDay, now, getLocalTimeZone, getWeeksInMonth } from '@internationalized/date';
16
+ import { ZonedDateTime, parseAbsolute, Time, CalendarDate, CalendarDateTime, getLocalTimeZone, GregorianCalendar, isEqualDay, now, getWeeksInMonth } from '@internationalized/date';
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
20
  import { VisuallyHidden } from '@entur/a11y';
21
21
  import { useFloating, offset, flip, shift } from '@floating-ui/react-dom';
22
22
  import FocusLock from 'react-focus-lock';
23
- import { space } from '@entur/tokens';
23
+ import { space, zIndexes } from '@entur/tokens';
24
24
  import { Modal } from '@entur/modal';
25
25
 
26
26
  function _extends() {
@@ -513,19 +513,24 @@ var FieldSegment = function FieldSegment(_ref) {
513
513
  };
514
514
 
515
515
  /**
516
- * Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken
517
- * @param {Date} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
516
+ * Tar inn et JS Date-objekt og returnerer et av Date- eller TimeValue-objektene fra @internationalized/date-pakken
517
+ * @param {Date} date JS Date-objekt som ønskes konvertert til et Date- eller TimeValue-objekt
518
518
  * @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake
519
+ * @param {boolean} noTimeOnlyDate Hvis tidspunktet er irrelevant kan denne settes til true, da får man et CalendarDate-objekt uten tidspunkt tilbake
519
520
  * @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset
520
521
  * @param {number} offset UTC-offset i millisekunder, må brukes med en tidssone. Ved å legge på en offset lager du en variant av en tidssone. Det betyr at tidspunktet ikke endres (time, minutt, sekund uendret), men tidssonen, med tilhørende offset, tidspunktet er i endres.
521
- * @returns {Time | CalendarDateTime | ZonedDateTime} et av TimeValue-objektene med verdier fra date
522
+ * @returns {Time | CalendarDateTime | ZonedDateTime | CalendarDate} et av TimeValue-objektene med verdier fra date
522
523
  */
523
524
 
524
- var nativeDateToTimeValue = function nativeDateToTimeValue(date, noDateOnlyTime, timeZone, offset) {
525
+ var nativeDateToTimeOrDateValue = function nativeDateToTimeOrDateValue(date, noDateOnlyTime, noTimeOnlyDate, timeZone, offset) {
525
526
  if (noDateOnlyTime === void 0) {
526
527
  noDateOnlyTime = false;
527
528
  }
528
529
 
530
+ if (noTimeOnlyDate === void 0) {
531
+ noTimeOnlyDate = false;
532
+ }
533
+
529
534
  if (timeZone) {
530
535
  if (offset) {
531
536
  return new ZonedDateTime(date.getFullYear(), date.getMonth() + 1, date.getDate(), timeZone, offset, date.getHours(), date.getMinutes(), date.getSeconds());
@@ -535,40 +540,54 @@ var nativeDateToTimeValue = function nativeDateToTimeValue(date, noDateOnlyTime,
535
540
  }
536
541
 
537
542
  if (noDateOnlyTime) return new Time(date.getHours(), date.getMinutes(), date.getSeconds(), 0);
543
+ if (noTimeOnlyDate) return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate());
538
544
  return new CalendarDateTime(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
539
545
  };
540
546
  /**
541
- * Tar inn et av TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt
542
- * @param {TimeValue} time Et tidspunkt på TimeValue-formatet som ønsket konvertert til et JS Date-objekt
543
- * @param {string} timeZoneForCalendarDateTime Tidssonen time er i. Fungerer kun med typen er CalendarDateTime
547
+ * Tar inn et av Date- eller TimeValue-objektene fra @internationalized/date-pakken og returnerer et JS Date-objekt
548
+ * @param {DateValue | TimeValue} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt
549
+ * @param {string} timeZoneForCalendarDateTime Tidssonen value er i. Fungerer kun med typen er CalendarDateTime
544
550
  * @returns {Date} et Date-objekt med verdier fra time
545
551
  */
546
552
  // This function uses a lot of @ts-expect-error to make it work with all TimeValue types. Sorry ...
547
553
 
548
- var timeValueToNativeDate = function timeValueToNativeDate(time, timeZoneForCalendarDateTime) {
554
+ var timeOrDateValueToNativeDate = function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
549
555
  // @ts-expect-error .day does not exist on Time-object
550
- if (!time.day) {
556
+ if (!value.day) {
551
557
  // type is Time
552
- var date = new Date();
553
- date.setHours(time.hour);
554
- date.setMinutes(time.minute);
555
- date.setSeconds(time.second);
558
+ var date = new Date(); // @ts-expect-error hour does not exist on CalendarDate
559
+
560
+ date.setHours(value.hour); // @ts-expect-error minute does not exist on CalendarDate
561
+
562
+ date.setMinutes(value.minute); // @ts-expect-error second does not exist on CalendarDate
563
+
564
+ date.setSeconds(value.second);
556
565
  return date;
566
+ } // @ts-expect-error .day does not exist on Time-object
567
+
568
+
569
+ if (!value.hour) {
570
+ // type is CalendarDate
571
+ // @ts-expect-error .toDate(timeZone) does not exist in type Time
572
+ return value.toDate(timeZoneForCalendarDateTime != null ? timeZoneForCalendarDateTime : getLocalTimeZone());
557
573
  } // @ts-expect-error .timeZone does not exist in type Time and CalendarDateTime
558
574
 
559
575
 
560
- if (!time.timeZone) {
576
+ if (!value.timeZone) {
561
577
  // type is CalendarDateTime
562
578
  if (timeZoneForCalendarDateTime) // @ts-expect-error .toDate(timeZone) does not exist in type Time
563
- return time.toDate(timeZoneForCalendarDateTime);
579
+ return value.toDate(timeZoneForCalendarDateTime);
564
580
  return new Date( // @ts-expect-error not in type Time
565
- time.year, // @ts-expect-error not in type Time
566
- time.month - 1, // @ts-expect-error not in type Time
567
- time.day, time.hour, time.minute, time.second);
581
+ value.year, // @ts-expect-error not in type Time
582
+ value.month - 1, // @ts-expect-error not in type Time
583
+ value.day, // @ts-expect-error not in type CalendarDate
584
+ value.hour, // @ts-expect-error not in type CalendarDate
585
+ value.minute, // @ts-expect-error not in type CalendarDate
586
+ value.second);
568
587
  } // @ts-expect-error .toDate() does not exist in type Time or CalendarDateTime
569
588
 
570
589
 
571
- return time.toDate();
590
+ return value.toDate();
572
591
  };
573
592
  var createCalendar = function createCalendar(identifier) {
574
593
  if (identifier === void 0) {
@@ -824,7 +843,7 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
824
843
  })));
825
844
  });
826
845
 
827
- var _excluded$3 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription"];
846
+ var _excluded$3 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate"];
828
847
  var DatePickerBeta = function DatePickerBeta(_ref) {
829
848
  var value = _ref.selectedDate,
830
849
  _onChange = _ref.onChange,
@@ -842,6 +861,8 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
842
861
  disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
843
862
  labelTooltip = _ref.labelTooltip,
844
863
  navigationDescription = _ref.navigationDescription,
864
+ minValue = _ref.minDate,
865
+ maxValue = _ref.maxDate,
845
866
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
846
867
 
847
868
  var CALENDAR_MODAL_MAX_SCREEN_WIDTH = 1000;
@@ -853,12 +874,16 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
853
874
  width = _useWindowDimensions.width;
854
875
 
855
876
  var state = useDatePickerState(_extends({}, rest, {
877
+ minValue: minValue,
878
+ maxValue: maxValue,
856
879
  value: value,
857
880
  onChange: _onChange
858
881
  }));
859
882
 
860
883
  var _useDatePicker = useDatePicker(_extends({
861
- isDisabled: isDisabled
884
+ isDisabled: isDisabled,
885
+ minValue: minValue,
886
+ maxValue: maxValue
862
887
  }, rest), state, datePickerRef),
863
888
  groupProps = _useDatePicker.groupProps,
864
889
  labelProps = _useDatePicker.labelProps,
@@ -916,7 +941,7 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
916
941
  if (selectedCell) selectedCell.focus();else if (todayCell) todayCell.focus();
917
942
  };
918
943
 
919
- var popoverCalendar = React.createElement(FocusLock, {
944
+ var popoverCalendar = React.createElement(React.Fragment, null, state.isOpen && React.createElement(FocusLock, {
920
945
  disabled: !state.isOpen,
921
946
  returnFocus: true
922
947
  }, React.createElement(Calendar, _extends({}, dialogProps, calendarProps, {
@@ -933,13 +958,12 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
933
958
  navigationDescription: navigationDescription,
934
959
  // styling for floating-UI popover
935
960
  style: {
936
- display: state.isOpen ? 'block' : 'none',
937
961
  position: strategy,
938
962
  top: y != null ? y : 0,
939
963
  left: x != null ? x : 0,
940
- zIndex: 10
964
+ zIndex: zIndexes.popover
941
965
  }
942
- })));
966
+ }))));
943
967
  var modalCalendar = React.createElement(Modal, {
944
968
  size: 'small',
945
969
  title: "",
@@ -1281,5 +1305,5 @@ var NativeTimePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
1281
1305
 
1282
1306
  warnAboutMissingStyles('datepicker', 'form', 'icons');
1283
1307
 
1284
- export { Calendar, DateField, DatePicker, DatePickerBeta, NativeDatePicker, NativeTimePicker, TimePicker, ariaLabelIfNorwegian, createCalendar, nativeDateToTimeValue, timeValueToNativeDate };
1308
+ export { Calendar, DateField, DatePicker, DatePickerBeta, NativeDatePicker, NativeTimePicker, TimePicker, ariaLabelIfNorwegian, createCalendar, nativeDateToTimeOrDateValue, timeOrDateValueToNativeDate };
1285
1309
  //# sourceMappingURL=datepicker.esm.js.map