@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.
- package/CHANGELOG.md +13 -0
- package/dist/DatePicker/beta/DatePicker.d.ts +3 -3
- package/dist/datepicker.cjs.development.js +52 -28
- package/dist/datepicker.cjs.development.js.map +1 -1
- package/dist/datepicker.cjs.production.min.js +1 -1
- package/dist/datepicker.cjs.production.min.js.map +1 -1
- package/dist/datepicker.esm.js +52 -28
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/utils.d.ts +10 -9
- package/dist/styles.css +103 -103
- package/package.json +2 -2
package/dist/datepicker.esm.js
CHANGED
|
@@ -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,
|
|
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
|
|
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}
|
|
543
|
-
* @param {string} timeZoneForCalendarDateTime Tidssonen
|
|
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
|
|
554
|
+
var timeOrDateValueToNativeDate = function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
|
|
549
555
|
// @ts-expect-error .day does not exist on Time-object
|
|
550
|
-
if (!
|
|
556
|
+
if (!value.day) {
|
|
551
557
|
// type is Time
|
|
552
|
-
var date = new Date();
|
|
553
|
-
|
|
554
|
-
date.
|
|
555
|
-
|
|
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 (!
|
|
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
|
|
579
|
+
return value.toDate(timeZoneForCalendarDateTime);
|
|
564
580
|
return new Date( // @ts-expect-error not in type Time
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
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
|
|
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:
|
|
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,
|
|
1308
|
+
export { Calendar, DateField, DatePicker, DatePickerBeta, NativeDatePicker, NativeTimePicker, TimePicker, ariaLabelIfNorwegian, createCalendar, nativeDateToTimeOrDateValue, timeOrDateValueToNativeDate };
|
|
1285
1309
|
//# sourceMappingURL=datepicker.esm.js.map
|