@salt-ds/date-components 0.0.0-snapshot-20260330155807
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 +109 -0
- package/README.md +63 -0
- package/css/salt-date-components.css +633 -0
- package/dist-cjs/calendar/Calendar.css.js +6 -0
- package/dist-cjs/calendar/Calendar.css.js.map +1 -0
- package/dist-cjs/calendar/Calendar.js +154 -0
- package/dist-cjs/calendar/Calendar.js.map +1 -0
- package/dist-cjs/calendar/CalendarGrid.js +85 -0
- package/dist-cjs/calendar/CalendarGrid.js.map +1 -0
- package/dist-cjs/calendar/CalendarMonthHeader.css.js +6 -0
- package/dist-cjs/calendar/CalendarMonthHeader.css.js.map +1 -0
- package/dist-cjs/calendar/CalendarMonthHeader.js +41 -0
- package/dist-cjs/calendar/CalendarMonthHeader.js.map +1 -0
- package/dist-cjs/calendar/CalendarNavigation.css.js +6 -0
- package/dist-cjs/calendar/CalendarNavigation.css.js.map +1 -0
- package/dist-cjs/calendar/CalendarNavigation.js +334 -0
- package/dist-cjs/calendar/CalendarNavigation.js.map +1 -0
- package/dist-cjs/calendar/CalendarWeekHeader.css.js +6 -0
- package/dist-cjs/calendar/CalendarWeekHeader.css.js.map +1 -0
- package/dist-cjs/calendar/CalendarWeekHeader.js +46 -0
- package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarContext.js +23 -0
- package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarDay.css.js +6 -0
- package/dist-cjs/calendar/internal/CalendarDay.css.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarDay.js +98 -0
- package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarMonth.css.js +6 -0
- package/dist-cjs/calendar/internal/CalendarMonth.css.js.map +1 -0
- package/dist-cjs/calendar/internal/CalendarMonth.js +81 -0
- package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -0
- package/dist-cjs/calendar/internal/createAnnouncement.js +90 -0
- package/dist-cjs/calendar/internal/createAnnouncement.js.map +1 -0
- package/dist-cjs/calendar/internal/useFocusManagement.js +66 -0
- package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -0
- package/dist-cjs/calendar/internal/utils.js +50 -0
- package/dist-cjs/calendar/internal/utils.js.map +1 -0
- package/dist-cjs/calendar/useCalendar.js +464 -0
- package/dist-cjs/calendar/useCalendar.js.map +1 -0
- package/dist-cjs/calendar/useCalendarDay.js +84 -0
- package/dist-cjs/calendar/useCalendarDay.js.map +1 -0
- package/dist-cjs/calendar/useCalendarSelection.js +353 -0
- package/dist-cjs/calendar/useCalendarSelection.js.map +1 -0
- package/dist-cjs/calendar/useDateSelectionAnnouncer.js +52 -0
- package/dist-cjs/calendar/useDateSelectionAnnouncer.js.map +1 -0
- package/dist-cjs/date-input/DateInput.css.js +6 -0
- package/dist-cjs/date-input/DateInput.css.js.map +1 -0
- package/dist-cjs/date-input/DateInputRange.js +353 -0
- package/dist-cjs/date-input/DateInputRange.js.map +1 -0
- package/dist-cjs/date-input/DateInputSingle.js +237 -0
- package/dist-cjs/date-input/DateInputSingle.js.map +1 -0
- package/dist-cjs/date-picker/DatePicker.js +83 -0
- package/dist-cjs/date-picker/DatePicker.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerActions.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerActions.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerActions.js +119 -0
- package/dist-cjs/date-picker/DatePickerActions.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerContext.js +36 -0
- package/dist-cjs/date-picker/DatePickerContext.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerHelperText.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerHelperText.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerHelperText.js +36 -0
- package/dist-cjs/date-picker/DatePickerHelperText.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlay.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerOverlay.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js +49 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js +164 -0
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerPanel.css.js +6 -0
- package/dist-cjs/date-picker/DatePickerPanel.css.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerRangeGridPanel.js +250 -0
- package/dist-cjs/date-picker/DatePickerRangeGridPanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerRangeInput.js +206 -0
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerRangePanel.js +365 -0
- package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSingleGridPanel.js +262 -0
- package/dist-cjs/date-picker/DatePickerSingleGridPanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSingleInput.js +150 -0
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerSinglePanel.js +20 -0
- package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -0
- package/dist-cjs/date-picker/DatePickerTrigger.js +32 -0
- package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -0
- package/dist-cjs/date-picker/useDatePicker.js +222 -0
- package/dist-cjs/date-picker/useDatePicker.js.map +1 -0
- package/dist-cjs/date-picker/useFocusOut.js +43 -0
- package/dist-cjs/date-picker/useFocusOut.js.map +1 -0
- package/dist-cjs/date-picker/useKeyboard.js +22 -0
- package/dist-cjs/date-picker/useKeyboard.js.map +1 -0
- package/dist-cjs/index.js +64 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/localization-provider/LocalizationProvider.js +51 -0
- package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -0
- package/dist-es/calendar/Calendar.css.js +4 -0
- package/dist-es/calendar/Calendar.css.js.map +1 -0
- package/dist-es/calendar/Calendar.js +152 -0
- package/dist-es/calendar/Calendar.js.map +1 -0
- package/dist-es/calendar/CalendarGrid.js +83 -0
- package/dist-es/calendar/CalendarGrid.js.map +1 -0
- package/dist-es/calendar/CalendarMonthHeader.css.js +4 -0
- package/dist-es/calendar/CalendarMonthHeader.css.js.map +1 -0
- package/dist-es/calendar/CalendarMonthHeader.js +39 -0
- package/dist-es/calendar/CalendarMonthHeader.js.map +1 -0
- package/dist-es/calendar/CalendarNavigation.css.js +4 -0
- package/dist-es/calendar/CalendarNavigation.css.js.map +1 -0
- package/dist-es/calendar/CalendarNavigation.js +332 -0
- package/dist-es/calendar/CalendarNavigation.js.map +1 -0
- package/dist-es/calendar/CalendarWeekHeader.css.js +4 -0
- package/dist-es/calendar/CalendarWeekHeader.css.js.map +1 -0
- package/dist-es/calendar/CalendarWeekHeader.js +44 -0
- package/dist-es/calendar/CalendarWeekHeader.js.map +1 -0
- package/dist-es/calendar/internal/CalendarContext.js +20 -0
- package/dist-es/calendar/internal/CalendarContext.js.map +1 -0
- package/dist-es/calendar/internal/CalendarDay.css.js +4 -0
- package/dist-es/calendar/internal/CalendarDay.css.js.map +1 -0
- package/dist-es/calendar/internal/CalendarDay.js +96 -0
- package/dist-es/calendar/internal/CalendarDay.js.map +1 -0
- package/dist-es/calendar/internal/CalendarMonth.css.js +4 -0
- package/dist-es/calendar/internal/CalendarMonth.css.js.map +1 -0
- package/dist-es/calendar/internal/CalendarMonth.js +79 -0
- package/dist-es/calendar/internal/CalendarMonth.js.map +1 -0
- package/dist-es/calendar/internal/createAnnouncement.js +87 -0
- package/dist-es/calendar/internal/createAnnouncement.js.map +1 -0
- package/dist-es/calendar/internal/useFocusManagement.js +64 -0
- package/dist-es/calendar/internal/useFocusManagement.js.map +1 -0
- package/dist-es/calendar/internal/utils.js +44 -0
- package/dist-es/calendar/internal/utils.js.map +1 -0
- package/dist-es/calendar/useCalendar.js +462 -0
- package/dist-es/calendar/useCalendar.js.map +1 -0
- package/dist-es/calendar/useCalendarDay.js +82 -0
- package/dist-es/calendar/useCalendarDay.js.map +1 -0
- package/dist-es/calendar/useCalendarSelection.js +349 -0
- package/dist-es/calendar/useCalendarSelection.js.map +1 -0
- package/dist-es/calendar/useDateSelectionAnnouncer.js +50 -0
- package/dist-es/calendar/useDateSelectionAnnouncer.js.map +1 -0
- package/dist-es/date-input/DateInput.css.js +4 -0
- package/dist-es/date-input/DateInput.css.js.map +1 -0
- package/dist-es/date-input/DateInputRange.js +350 -0
- package/dist-es/date-input/DateInputRange.js.map +1 -0
- package/dist-es/date-input/DateInputSingle.js +235 -0
- package/dist-es/date-input/DateInputSingle.js.map +1 -0
- package/dist-es/date-picker/DatePicker.js +80 -0
- package/dist-es/date-picker/DatePicker.js.map +1 -0
- package/dist-es/date-picker/DatePickerActions.css.js +4 -0
- package/dist-es/date-picker/DatePickerActions.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerActions.js +117 -0
- package/dist-es/date-picker/DatePickerActions.js.map +1 -0
- package/dist-es/date-picker/DatePickerContext.js +32 -0
- package/dist-es/date-picker/DatePickerContext.js.map +1 -0
- package/dist-es/date-picker/DatePickerHelperText.css.js +4 -0
- package/dist-es/date-picker/DatePickerHelperText.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerHelperText.js +34 -0
- package/dist-es/date-picker/DatePickerHelperText.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlay.css.js +4 -0
- package/dist-es/date-picker/DatePickerOverlay.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlay.js +47 -0
- package/dist-es/date-picker/DatePickerOverlay.js.map +1 -0
- package/dist-es/date-picker/DatePickerOverlayProvider.js +161 -0
- package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -0
- package/dist-es/date-picker/DatePickerPanel.css.js +4 -0
- package/dist-es/date-picker/DatePickerPanel.css.js.map +1 -0
- package/dist-es/date-picker/DatePickerRangeGridPanel.js +248 -0
- package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerRangeInput.js +203 -0
- package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -0
- package/dist-es/date-picker/DatePickerRangePanel.js +363 -0
- package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerSingleGridPanel.js +260 -0
- package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerSingleInput.js +148 -0
- package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -0
- package/dist-es/date-picker/DatePickerSinglePanel.js +18 -0
- package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -0
- package/dist-es/date-picker/DatePickerTrigger.js +30 -0
- package/dist-es/date-picker/DatePickerTrigger.js.map +1 -0
- package/dist-es/date-picker/useDatePicker.js +220 -0
- package/dist-es/date-picker/useDatePicker.js.map +1 -0
- package/dist-es/date-picker/useFocusOut.js +41 -0
- package/dist-es/date-picker/useFocusOut.js.map +1 -0
- package/dist-es/date-picker/useKeyboard.js +20 -0
- package/dist-es/date-picker/useKeyboard.js.map +1 -0
- package/dist-es/index.js +25 -0
- package/dist-es/index.js.map +1 -0
- package/dist-es/localization-provider/LocalizationProvider.js +47 -0
- package/dist-es/localization-provider/LocalizationProvider.js.map +1 -0
- package/dist-types/calendar/Calendar.d.ts +105 -0
- package/dist-types/calendar/CalendarGrid.d.ts +27 -0
- package/dist-types/calendar/CalendarMonthHeader.d.ts +17 -0
- package/dist-types/calendar/CalendarNavigation.d.ts +43 -0
- package/dist-types/calendar/CalendarWeekHeader.d.ts +6 -0
- package/dist-types/calendar/index.d.ts +9 -0
- package/dist-types/calendar/internal/CalendarContext.d.ts +6 -0
- package/dist-types/calendar/internal/CalendarDay.d.ts +33 -0
- package/dist-types/calendar/internal/CalendarMonth.d.ts +14 -0
- package/dist-types/calendar/internal/createAnnouncement.d.ts +24 -0
- package/dist-types/calendar/internal/useFocusManagement.d.ts +9 -0
- package/dist-types/calendar/internal/utils.d.ts +6 -0
- package/dist-types/calendar/useCalendar.d.ts +335 -0
- package/dist-types/calendar/useCalendarDay.d.ts +67 -0
- package/dist-types/calendar/useCalendarSelection.d.ts +145 -0
- package/dist-types/calendar/useDateSelectionAnnouncer.d.ts +6 -0
- package/dist-types/date-input/DateInputRange.d.ts +131 -0
- package/dist-types/date-input/DateInputSingle.d.ts +99 -0
- package/dist-types/date-input/index.d.ts +2 -0
- package/dist-types/date-picker/DatePicker.d.ts +52 -0
- package/dist-types/date-picker/DatePickerActions.d.ts +79 -0
- package/dist-types/date-picker/DatePickerContext.d.ts +172 -0
- package/dist-types/date-picker/DatePickerHelperText.d.ts +4 -0
- package/dist-types/date-picker/DatePickerOverlay.d.ts +11 -0
- package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +106 -0
- package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +14 -0
- package/dist-types/date-picker/DatePickerRangeInput.d.ts +17 -0
- package/dist-types/date-picker/DatePickerRangePanel.d.ts +83 -0
- package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +63 -0
- package/dist-types/date-picker/DatePickerSingleInput.d.ts +15 -0
- package/dist-types/date-picker/DatePickerSinglePanel.d.ts +8 -0
- package/dist-types/date-picker/DatePickerTrigger.d.ts +9 -0
- package/dist-types/date-picker/index.d.ts +13 -0
- package/dist-types/date-picker/useDatePicker.d.ts +121 -0
- package/dist-types/date-picker/useFocusOut.d.ts +9 -0
- package/dist-types/date-picker/useKeyboard.d.ts +20 -0
- package/dist-types/index.d.ts +4 -0
- package/dist-types/localization-provider/LocalizationProvider.d.ts +62 -0
- package/dist-types/localization-provider/index.d.ts +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var dateAdapters = require('@salt-ds/date-adapters');
|
|
6
|
+
var clsx = require('clsx');
|
|
7
|
+
var react = require('react');
|
|
8
|
+
var DateInputRange = require('../date-input/DateInputRange.js');
|
|
9
|
+
require('../date-input/DateInputSingle.js');
|
|
10
|
+
var LocalizationProvider = require('../localization-provider/LocalizationProvider.js');
|
|
11
|
+
var DatePickerContext = require('./DatePickerContext.js');
|
|
12
|
+
var DatePickerOverlayProvider = require('./DatePickerOverlayProvider.js');
|
|
13
|
+
|
|
14
|
+
const withBaseName = core.makePrefixer("saltDatePickerRangeInput");
|
|
15
|
+
function defaultRangeValidator(dateAdapter, date, details, minDate, maxDate) {
|
|
16
|
+
const { startDate, endDate } = date || {};
|
|
17
|
+
if (!startDate) {
|
|
18
|
+
details.startDate = details.startDate || {};
|
|
19
|
+
details.startDate.errors = details.startDate.errors || [];
|
|
20
|
+
const unsetStartDateError = details.startDate.errors.find(
|
|
21
|
+
(err) => err.type === dateAdapters.DateDetailError.UNSET
|
|
22
|
+
);
|
|
23
|
+
if (unsetStartDateError) {
|
|
24
|
+
unsetStartDateError.message = "no start date defined";
|
|
25
|
+
} else {
|
|
26
|
+
details.startDate.errors.push({
|
|
27
|
+
type: dateAdapters.DateDetailError.UNSET,
|
|
28
|
+
message: "no start date defined"
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!endDate) {
|
|
33
|
+
details.endDate = details.endDate || {};
|
|
34
|
+
details.endDate.errors = details.endDate.errors || [];
|
|
35
|
+
const unsetEndDateError = details.endDate.errors.find(
|
|
36
|
+
(err) => err.type === dateAdapters.DateDetailError.UNSET
|
|
37
|
+
);
|
|
38
|
+
if (unsetEndDateError) {
|
|
39
|
+
unsetEndDateError.message = "no end date defined";
|
|
40
|
+
} else {
|
|
41
|
+
details.endDate.errors.push({
|
|
42
|
+
type: dateAdapters.DateDetailError.UNSET,
|
|
43
|
+
message: "no end date defined"
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (dateAdapter.isValid(startDate) && dateAdapter.isValid(endDate) && dateAdapter.compare(startDate, endDate) > 0) {
|
|
48
|
+
details.startDate = details.startDate || {};
|
|
49
|
+
details.startDate.errors = details.startDate.errors || [];
|
|
50
|
+
details.startDate.errors.push({
|
|
51
|
+
type: "greater-than-end-date",
|
|
52
|
+
message: "start date after end date"
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (minDate && dateAdapter.isValid(startDate) && dateAdapter.compare(startDate, minDate) < 0) {
|
|
56
|
+
details.startDate = details.startDate || {};
|
|
57
|
+
details.startDate.errors = details.startDate.errors || [];
|
|
58
|
+
details.startDate.errors.push({
|
|
59
|
+
type: "min-date",
|
|
60
|
+
message: "is before min date"
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (maxDate && dateAdapter.isValid(startDate) && dateAdapter.compare(startDate, maxDate) > 0) {
|
|
64
|
+
details.startDate = details.startDate || {};
|
|
65
|
+
details.startDate.errors = details.startDate.errors || [];
|
|
66
|
+
details.startDate.errors.push({
|
|
67
|
+
type: "max-date",
|
|
68
|
+
message: "is after max date"
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (minDate && dateAdapter.isValid(endDate) && dateAdapter.compare(endDate, minDate) < 0) {
|
|
72
|
+
details.endDate = details.endDate || {};
|
|
73
|
+
details.endDate.errors = details.endDate.errors || [];
|
|
74
|
+
details.endDate.errors.push({
|
|
75
|
+
type: "max-date",
|
|
76
|
+
message: "is before min date"
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
if (maxDate && dateAdapter.isValid(endDate) && dateAdapter.compare(endDate, maxDate) > 0) {
|
|
80
|
+
details.endDate = details.endDate || {};
|
|
81
|
+
details.endDate.errors = details.endDate.errors || [];
|
|
82
|
+
details.endDate.errors.push({
|
|
83
|
+
type: "max-date",
|
|
84
|
+
message: "is after max date"
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return details;
|
|
88
|
+
}
|
|
89
|
+
const DatePickerRangeInput = react.forwardRef((props, ref) => {
|
|
90
|
+
const { dateAdapter } = LocalizationProvider.useLocalization();
|
|
91
|
+
const {
|
|
92
|
+
className,
|
|
93
|
+
endInputProps,
|
|
94
|
+
startInputProps,
|
|
95
|
+
defaultValue,
|
|
96
|
+
format = "DD MMM YYYY",
|
|
97
|
+
value: valueProp,
|
|
98
|
+
validate,
|
|
99
|
+
onChange,
|
|
100
|
+
onDateValueChange,
|
|
101
|
+
...rest
|
|
102
|
+
} = props;
|
|
103
|
+
const { CalendarIcon } = core.useIcon();
|
|
104
|
+
const {
|
|
105
|
+
state: {
|
|
106
|
+
selectedDate,
|
|
107
|
+
disabled,
|
|
108
|
+
readOnly,
|
|
109
|
+
cancelled,
|
|
110
|
+
minDate,
|
|
111
|
+
maxDate,
|
|
112
|
+
timezone
|
|
113
|
+
},
|
|
114
|
+
helpers: { select }
|
|
115
|
+
} = DatePickerContext.useDatePickerContext({
|
|
116
|
+
selectionVariant: "range"
|
|
117
|
+
});
|
|
118
|
+
const {
|
|
119
|
+
state: { open },
|
|
120
|
+
helpers: { setOpen }
|
|
121
|
+
} = DatePickerOverlayProvider.useDatePickerOverlay();
|
|
122
|
+
const previousValue = react.useRef();
|
|
123
|
+
const [value, setValue] = core.useControlled({
|
|
124
|
+
controlled: valueProp,
|
|
125
|
+
default: defaultValue,
|
|
126
|
+
name: "DatePickerRangeInput",
|
|
127
|
+
state: "dateValue"
|
|
128
|
+
});
|
|
129
|
+
react.useEffect(() => {
|
|
130
|
+
setValue({
|
|
131
|
+
startDate: !(selectedDate == null ? void 0 : selectedDate.startDate) ? "" : (selectedDate == null ? void 0 : selectedDate.startDate) && dateAdapter.isValid(selectedDate.startDate) ? dateAdapter.format(selectedDate.startDate, format) : value == null ? void 0 : value.startDate,
|
|
132
|
+
endDate: !(selectedDate == null ? void 0 : selectedDate.endDate) ? "" : (selectedDate == null ? void 0 : selectedDate.endDate) && dateAdapter.isValid(selectedDate.endDate) ? dateAdapter.format(selectedDate.endDate, format) : value == null ? void 0 : value.endDate
|
|
133
|
+
});
|
|
134
|
+
}, [dateAdapter, format, selectedDate]);
|
|
135
|
+
const handleCalendarButton = react.useCallback(
|
|
136
|
+
(event) => {
|
|
137
|
+
event.persist();
|
|
138
|
+
setOpen(!open, event.nativeEvent, "click");
|
|
139
|
+
event.stopPropagation();
|
|
140
|
+
},
|
|
141
|
+
[open, setOpen]
|
|
142
|
+
);
|
|
143
|
+
const handleDateChange = react.useCallback(
|
|
144
|
+
(event, date, details) => {
|
|
145
|
+
const validatedDetails = validate ? validate(date, details) : defaultRangeValidator(dateAdapter, date, details, minDate, maxDate);
|
|
146
|
+
select(event, date, validatedDetails);
|
|
147
|
+
},
|
|
148
|
+
[dateAdapter, select, minDate, maxDate, validate]
|
|
149
|
+
);
|
|
150
|
+
const handleDateValueChange = react.useCallback(
|
|
151
|
+
(event, newDateValue) => {
|
|
152
|
+
setValue(newDateValue);
|
|
153
|
+
onDateValueChange == null ? void 0 : onDateValueChange(event, newDateValue);
|
|
154
|
+
},
|
|
155
|
+
[onDateValueChange]
|
|
156
|
+
);
|
|
157
|
+
react.useEffect(() => {
|
|
158
|
+
if (open) {
|
|
159
|
+
previousValue.current = value;
|
|
160
|
+
}
|
|
161
|
+
}, [open]);
|
|
162
|
+
react.useEffect(() => {
|
|
163
|
+
if (cancelled) {
|
|
164
|
+
setValue(previousValue.current);
|
|
165
|
+
}
|
|
166
|
+
}, [cancelled]);
|
|
167
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
168
|
+
DateInputRange.DateInputRange,
|
|
169
|
+
{
|
|
170
|
+
value: value ?? {
|
|
171
|
+
startDate: "",
|
|
172
|
+
endDate: ""
|
|
173
|
+
},
|
|
174
|
+
className: clsx.clsx(withBaseName(), className),
|
|
175
|
+
date: selectedDate ?? null,
|
|
176
|
+
startInputProps,
|
|
177
|
+
endInputProps,
|
|
178
|
+
readOnly,
|
|
179
|
+
disabled,
|
|
180
|
+
ref,
|
|
181
|
+
onDateChange: handleDateChange,
|
|
182
|
+
onDateValueChange: handleDateValueChange,
|
|
183
|
+
onChange,
|
|
184
|
+
endAdornment: !readOnly && /* @__PURE__ */ jsxRuntime.jsx(
|
|
185
|
+
core.Button,
|
|
186
|
+
{
|
|
187
|
+
appearance: "transparent",
|
|
188
|
+
sentiment: "neutral",
|
|
189
|
+
onClick: handleCalendarButton,
|
|
190
|
+
disabled,
|
|
191
|
+
"aria-haspopup": "dialog",
|
|
192
|
+
"aria-label": "Open Calendar",
|
|
193
|
+
"aria-expanded": open,
|
|
194
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CalendarIcon, { "aria-hidden": true })
|
|
195
|
+
}
|
|
196
|
+
),
|
|
197
|
+
format,
|
|
198
|
+
timezone,
|
|
199
|
+
...rest
|
|
200
|
+
}
|
|
201
|
+
);
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
exports.DatePickerRangeInput = DatePickerRangeInput;
|
|
205
|
+
exports.defaultRangeValidator = defaultRangeValidator;
|
|
206
|
+
//# sourceMappingURL=DatePickerRangeInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerRangeInput.js","sources":["../src/date-picker/DatePickerRangeInput.tsx"],"sourcesContent":["import { Button, makePrefixer, useControlled, useIcon } from \"@salt-ds/core\";\nimport {\n DateDetailError,\n type DateFrameworkType,\n type SaltDateAdapter,\n} from \"@salt-ds/date-adapters\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n type MouseEventHandler,\n type SyntheticEvent,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport type { DateRangeSelection } from \"../calendar\";\nimport {\n DateInputRange,\n type DateInputRangeDetails,\n type DateInputRangeProps,\n type DateInputRangeValue,\n} from \"../date-input\";\nimport { useLocalization } from \"../localization-provider\";\nimport {\n type RangeDatePickerState,\n useDatePickerContext,\n} from \"./DatePickerContext\";\nimport { useDatePickerOverlay } from \"./DatePickerOverlayProvider\";\n\nconst withBaseName = makePrefixer(\"saltDatePickerRangeInput\");\n\n/**\n * Props for the DatePickerRangeInput component.\n */\nexport interface DatePickerRangeInputProps extends DateInputRangeProps {\n /**\n * Function to validate the entered date\n * @param date - The selected date\n * @param details - The details of date selection, either a valid date or error\n * @returns updated DateInputRangeDetails details\n */\n validate?: (\n date: DateRangeSelection | null,\n details: DateInputRangeDetails,\n ) => DateInputRangeDetails;\n}\n\nexport function defaultRangeValidator(\n dateAdapter: SaltDateAdapter,\n date: DateRangeSelection | null,\n details: DateInputRangeDetails,\n minDate?: DateFrameworkType,\n maxDate?: DateFrameworkType,\n): DateInputRangeDetails {\n const { startDate, endDate } = date || {};\n\n if (!startDate) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n const unsetStartDateError = details.startDate.errors.find(\n (err) => err.type === DateDetailError.UNSET,\n );\n if (unsetStartDateError) {\n unsetStartDateError.message = \"no start date defined\";\n } else {\n details.startDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no start date defined\",\n });\n }\n }\n\n if (!endDate) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n const unsetEndDateError = details.endDate.errors.find(\n (err) => err.type === DateDetailError.UNSET,\n );\n if (unsetEndDateError) {\n unsetEndDateError.message = \"no end date defined\";\n } else {\n details.endDate.errors.push({\n type: DateDetailError.UNSET,\n message: \"no end date defined\",\n });\n }\n }\n\n // If startDate is after endDate\n if (\n dateAdapter.isValid(startDate) &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(startDate, endDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"greater-than-end-date\",\n message: \"start date after end date\",\n });\n }\n // If startDate is before minDate\n if (\n minDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, minDate) < 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"min-date\",\n message: \"is before min date\",\n });\n }\n // If startDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(startDate) &&\n dateAdapter.compare(startDate, maxDate) > 0\n ) {\n details.startDate = details.startDate || {};\n details.startDate.errors = details.startDate.errors || [];\n details.startDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n if (\n minDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, minDate) < 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is before min date\",\n });\n }\n // If endDate is after maxDate\n if (\n maxDate &&\n dateAdapter.isValid(endDate) &&\n dateAdapter.compare(endDate, maxDate) > 0\n ) {\n details.endDate = details.endDate || {};\n details.endDate.errors = details.endDate.errors || [];\n details.endDate.errors.push({\n type: \"max-date\",\n message: \"is after max date\",\n });\n }\n return details;\n}\n\nexport const DatePickerRangeInput = forwardRef<\n HTMLDivElement,\n DatePickerRangeInputProps\n>((props: DatePickerRangeInputProps, ref: React.Ref<HTMLDivElement>) => {\n const { dateAdapter } = useLocalization();\n const {\n className,\n endInputProps,\n startInputProps,\n defaultValue,\n format = \"DD MMM YYYY\",\n value: valueProp,\n validate,\n onChange,\n onDateValueChange,\n ...rest\n } = props;\n\n const { CalendarIcon } = useIcon();\n\n const {\n state: {\n selectedDate,\n disabled,\n readOnly,\n cancelled,\n minDate,\n maxDate,\n timezone,\n },\n helpers: { select },\n } = useDatePickerContext({\n selectionVariant: \"range\",\n }) as RangeDatePickerState;\n const {\n state: { open },\n helpers: { setOpen },\n } = useDatePickerOverlay();\n\n const previousValue = useRef<typeof valueProp>();\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"DatePickerRangeInput\",\n state: \"dateValue\",\n });\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: run when date changes to sync the value\n useEffect(() => {\n setValue({\n startDate: !selectedDate?.startDate\n ? \"\"\n : selectedDate?.startDate && dateAdapter.isValid(selectedDate.startDate)\n ? dateAdapter.format(selectedDate.startDate, format)\n : value?.startDate,\n endDate: !selectedDate?.endDate\n ? \"\"\n : selectedDate?.endDate && dateAdapter.isValid(selectedDate.endDate)\n ? dateAdapter.format(selectedDate.endDate, format)\n : value?.endDate,\n });\n }, [dateAdapter, format, selectedDate]);\n\n const handleCalendarButton: MouseEventHandler<HTMLButtonElement> =\n useCallback(\n (event) => {\n event.persist();\n setOpen(!open, event.nativeEvent, \"click\");\n event.stopPropagation();\n },\n [open, setOpen],\n );\n\n const handleDateChange = useCallback(\n (\n event: SyntheticEvent,\n date: DateRangeSelection | null,\n details: DateInputRangeDetails,\n ) => {\n const validatedDetails = validate\n ? validate(date, details)\n : defaultRangeValidator(dateAdapter, date, details, minDate, maxDate);\n select(event, date, validatedDetails);\n },\n [dateAdapter, select, minDate, maxDate, validate],\n );\n\n const handleDateValueChange = useCallback(\n (event: SyntheticEvent | null, newDateValue: DateInputRangeValue) => {\n setValue(newDateValue);\n onDateValueChange?.(event, newDateValue);\n },\n [onDateValueChange],\n );\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: should run when open changes and not selected date or value\n useEffect(() => {\n if (open) {\n previousValue.current = value;\n }\n }, [open]);\n\n useEffect(() => {\n if (cancelled) {\n setValue(previousValue.current);\n }\n }, [cancelled]);\n\n return (\n <DateInputRange\n value={\n value ?? {\n startDate: \"\",\n endDate: \"\",\n }\n }\n className={clsx(withBaseName(), className)}\n date={selectedDate ?? null}\n startInputProps={startInputProps}\n endInputProps={endInputProps}\n readOnly={readOnly}\n disabled={disabled}\n ref={ref}\n onDateChange={handleDateChange}\n onDateValueChange={handleDateValueChange}\n onChange={onChange}\n endAdornment={\n !readOnly && (\n <Button\n appearance=\"transparent\"\n sentiment=\"neutral\"\n onClick={handleCalendarButton}\n disabled={disabled}\n aria-haspopup=\"dialog\"\n aria-label=\"Open Calendar\"\n aria-expanded={open}\n >\n <CalendarIcon aria-hidden />\n </Button>\n )\n }\n format={format}\n timezone={timezone}\n {...rest}\n />\n );\n});\n"],"names":["makePrefixer","DateDetailError","forwardRef","useLocalization","useIcon","useDatePickerContext","useDatePickerOverlay","useRef","useControlled","useEffect","useCallback","jsx","DateInputRange","clsx","Button"],"mappings":";;;;;;;;;;;;;AA6BA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA;AAkBrD,SAAS,qBAAA,CACd,WAAA,EACA,IAAA,EACA,OAAA,EACA,SACA,OAAA,EACuB;AACvB,EAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,QAAQ,EAAC;AAExC,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAA,CAAQ,SAAA,GAAY,OAAA,CAAQ,SAAA,IAAa,EAAC;AAC1C,IAAA,OAAA,CAAQ,SAAA,CAAU,MAAA,GAAS,OAAA,CAAQ,SAAA,CAAU,UAAU,EAAC;AACxD,IAAA,MAAM,mBAAA,GAAsB,OAAA,CAAQ,SAAA,CAAU,MAAA,CAAO,IAAA;AAAA,MACnD,CAAC,GAAA,KAAQ,GAAA,CAAI,IAAA,KAASC,4BAAA,CAAgB;AAAA,KACxC;AACA,IAAA,IAAI,mBAAA,EAAqB;AACvB,MAAA,mBAAA,CAAoB,OAAA,GAAU,uBAAA;AAAA,IAChC,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,SAAA,CAAU,OAAO,IAAA,CAAK;AAAA,QAC5B,MAAMA,4BAAA,CAAgB,KAAA;AAAA,QACtB,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAA,CAAQ,OAAA,GAAU,OAAA,CAAQ,OAAA,IAAW,EAAC;AACtC,IAAA,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,UAAU,EAAC;AACpD,IAAA,MAAM,iBAAA,GAAoB,OAAA,CAAQ,OAAA,CAAQ,MAAA,CAAO,IAAA;AAAA,MAC/C,CAAC,GAAA,KAAQ,GAAA,CAAI,IAAA,KAASA,4BAAA,CAAgB;AAAA,KACxC;AACA,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,iBAAA,CAAkB,OAAA,GAAU,qBAAA;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,OAAA,CAAQ,OAAO,IAAA,CAAK;AAAA,QAC1B,MAAMA,4BAAA,CAAgB,KAAA;AAAA,QACtB,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH;AAAA,EACF;AAGA,EAAA,IACE,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAA,IAC7B,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA,IAC3B,WAAA,CAAY,OAAA,CAAQ,SAAA,EAAW,OAAO,IAAI,CAAA,EAC1C;AACA,IAAA,OAAA,CAAQ,SAAA,GAAY,OAAA,CAAQ,SAAA,IAAa,EAAC;AAC1C,IAAA,OAAA,CAAQ,SAAA,CAAU,MAAA,GAAS,OAAA,CAAQ,SAAA,CAAU,UAAU,EAAC;AACxD,IAAA,OAAA,CAAQ,SAAA,CAAU,OAAO,IAAA,CAAK;AAAA,MAC5B,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAEA,EAAA,IACE,OAAA,IACA,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAA,IAC7B,YAAY,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA,GAAI,CAAA,EAC1C;AACA,IAAA,OAAA,CAAQ,SAAA,GAAY,OAAA,CAAQ,SAAA,IAAa,EAAC;AAC1C,IAAA,OAAA,CAAQ,SAAA,CAAU,MAAA,GAAS,OAAA,CAAQ,SAAA,CAAU,UAAU,EAAC;AACxD,IAAA,OAAA,CAAQ,SAAA,CAAU,OAAO,IAAA,CAAK;AAAA,MAC5B,IAAA,EAAM,UAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAEA,EAAA,IACE,OAAA,IACA,WAAA,CAAY,OAAA,CAAQ,SAAS,CAAA,IAC7B,YAAY,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA,GAAI,CAAA,EAC1C;AACA,IAAA,OAAA,CAAQ,SAAA,GAAY,OAAA,CAAQ,SAAA,IAAa,EAAC;AAC1C,IAAA,OAAA,CAAQ,SAAA,CAAU,MAAA,GAAS,OAAA,CAAQ,SAAA,CAAU,UAAU,EAAC;AACxD,IAAA,OAAA,CAAQ,SAAA,CAAU,OAAO,IAAA,CAAK;AAAA,MAC5B,IAAA,EAAM,UAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACA,EAAA,IACE,OAAA,IACA,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA,IAC3B,YAAY,OAAA,CAAQ,OAAA,EAAS,OAAO,CAAA,GAAI,CAAA,EACxC;AACA,IAAA,OAAA,CAAQ,OAAA,GAAU,OAAA,CAAQ,OAAA,IAAW,EAAC;AACtC,IAAA,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,UAAU,EAAC;AACpD,IAAA,OAAA,CAAQ,OAAA,CAAQ,OAAO,IAAA,CAAK;AAAA,MAC1B,IAAA,EAAM,UAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AAEA,EAAA,IACE,OAAA,IACA,WAAA,CAAY,OAAA,CAAQ,OAAO,CAAA,IAC3B,YAAY,OAAA,CAAQ,OAAA,EAAS,OAAO,CAAA,GAAI,CAAA,EACxC;AACA,IAAA,OAAA,CAAQ,OAAA,GAAU,OAAA,CAAQ,OAAA,IAAW,EAAC;AACtC,IAAA,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,UAAU,EAAC;AACpD,IAAA,OAAA,CAAQ,OAAA,CAAQ,OAAO,IAAA,CAAK;AAAA,MAC1B,IAAA,EAAM,UAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACA,EAAA,OAAO,OAAA;AACT;AAEO,MAAM,oBAAA,GAAuBC,gBAAA,CAGlC,CAAC,KAAA,EAAkC,GAAA,KAAmC;AACtE,EAAA,MAAM,EAAE,WAAA,EAAY,GAAIC,oCAAA,EAAgB;AACxC,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA,GAAS,aAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,QAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,EAAE,YAAA,EAAa,GAAIC,YAAA,EAAQ;AAEjC,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,OAAA,EAAS,EAAE,MAAA;AAAO,MAChBC,sCAAA,CAAqB;AAAA,IACvB,gBAAA,EAAkB;AAAA,GACnB,CAAA;AACD,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,EAAE,IAAA,EAAK;AAAA,IACd,OAAA,EAAS,EAAE,OAAA;AAAQ,MACjBC,8CAAA,EAAqB;AAEzB,EAAA,MAAM,gBAAgBC,YAAA,EAAyB;AAE/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,kBAAA,CAAc;AAAA,IACtC,UAAA,EAAY,SAAA;AAAA,IACZ,OAAA,EAAS,YAAA;AAAA,IACT,IAAA,EAAM,sBAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACR,CAAA;AAGD,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS;AAAA,MACP,WAAW,EAAC,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,aACtB,EAAA,GAAA,CACA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,cAAa,WAAA,CAAY,OAAA,CAAQ,YAAA,CAAa,SAAS,IACnE,WAAA,CAAY,MAAA,CAAO,aAAa,SAAA,EAAW,MAAM,IACjD,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,SAAA;AAAA,MACb,SAAS,EAAC,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,WACpB,EAAA,GAAA,CACA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,YAAW,WAAA,CAAY,OAAA,CAAQ,YAAA,CAAa,OAAO,IAC/D,WAAA,CAAY,MAAA,CAAO,aAAa,OAAA,EAAS,MAAM,IAC/C,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO;AAAA,KACd,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,WAAA,EAAa,MAAA,EAAQ,YAAY,CAAC,CAAA;AAEtC,EAAA,MAAM,oBAAA,GACJC,iBAAA;AAAA,IACE,CAAC,KAAA,KAAU;AACT,MAAA,KAAA,CAAM,OAAA,EAAQ;AACd,MAAA,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAA,CAAM,WAAA,EAAa,OAAO,CAAA;AACzC,MAAA,KAAA,CAAM,eAAA,EAAgB;AAAA,IACxB,CAAA;AAAA,IACA,CAAC,MAAM,OAAO;AAAA,GAChB;AAEF,EAAA,MAAM,gBAAA,GAAmBA,iBAAA;AAAA,IACvB,CACE,KAAA,EACA,IAAA,EACA,OAAA,KACG;AACH,MAAA,MAAM,gBAAA,GAAmB,QAAA,GACrB,QAAA,CAAS,IAAA,EAAM,OAAO,CAAA,GACtB,qBAAA,CAAsB,WAAA,EAAa,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AACtE,MAAA,MAAA,CAAO,KAAA,EAAO,MAAM,gBAAgB,CAAA;AAAA,IACtC,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,MAAA,EAAQ,OAAA,EAAS,SAAS,QAAQ;AAAA,GAClD;AAEA,EAAA,MAAM,qBAAA,GAAwBA,iBAAA;AAAA,IAC5B,CAAC,OAA8B,YAAA,KAAsC;AACnE,MAAA,QAAA,CAAS,YAAY,CAAA;AACrB,MAAA,iBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAoB,KAAA,EAAO,YAAA,CAAA;AAAA,IAC7B,CAAA;AAAA,IACA,CAAC,iBAAiB;AAAA,GACpB;AAGA,EAAAD,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,aAAA,CAAc,OAAA,GAAU,KAAA;AAAA,IAC1B;AAAA,EACF,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,QAAA,CAAS,cAAc,OAAO,CAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,uBACEE,cAAA;AAAA,IAACC,6BAAA;AAAA,IAAA;AAAA,MACC,OACE,KAAA,IAAS;AAAA,QACP,SAAA,EAAW,EAAA;AAAA,QACX,OAAA,EAAS;AAAA,OACX;AAAA,MAEF,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,MACzC,MAAM,YAAA,IAAgB,IAAA;AAAA,MACtB,eAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAA;AAAA,MACA,YAAA,EAAc,gBAAA;AAAA,MACd,iBAAA,EAAmB,qBAAA;AAAA,MACnB,QAAA;AAAA,MACA,YAAA,EACE,CAAC,QAAA,oBACCF,cAAA;AAAA,QAACG,WAAA;AAAA,QAAA;AAAA,UACC,UAAA,EAAW,aAAA;AAAA,UACX,SAAA,EAAU,SAAA;AAAA,UACV,OAAA,EAAS,oBAAA;AAAA,UACT,QAAA;AAAA,UACA,eAAA,EAAc,QAAA;AAAA,UACd,YAAA,EAAW,eAAA;AAAA,UACX,eAAA,EAAe,IAAA;AAAA,UAEf,QAAA,kBAAAH,cAAA,CAAC,YAAA,EAAA,EAAa,aAAA,EAAW,IAAA,EAAC;AAAA;AAAA,OAC5B;AAAA,MAGJ,MAAA;AAAA,MACA,QAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;;;;;"}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var styles = require('@salt-ds/styles');
|
|
6
|
+
var window = require('@salt-ds/window');
|
|
7
|
+
var clsx = require('clsx');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var Calendar = require('../calendar/Calendar.js');
|
|
10
|
+
var CalendarGrid = require('../calendar/CalendarGrid.js');
|
|
11
|
+
var CalendarNavigation = require('../calendar/CalendarNavigation.js');
|
|
12
|
+
require('../calendar/CalendarWeekHeader.js');
|
|
13
|
+
var LocalizationProvider = require('../localization-provider/LocalizationProvider.js');
|
|
14
|
+
var utils = require('../calendar/internal/utils.js');
|
|
15
|
+
require('../calendar/useCalendarSelection.js');
|
|
16
|
+
require('../calendar/internal/CalendarContext.js');
|
|
17
|
+
var DatePickerContext = require('./DatePickerContext.js');
|
|
18
|
+
var DatePickerOverlayProvider = require('./DatePickerOverlayProvider.js');
|
|
19
|
+
var DatePickerPanel = require('./DatePickerPanel.css.js');
|
|
20
|
+
|
|
21
|
+
function getFallbackVisibleMonths(dateAdapter, selectedDate, timezone = "default") {
|
|
22
|
+
function createConsecutiveRange(date) {
|
|
23
|
+
const startDate = dateAdapter.startOf(date, "month");
|
|
24
|
+
const endDate = dateAdapter.add(startDate, { months: 1 });
|
|
25
|
+
return [startDate, endDate];
|
|
26
|
+
}
|
|
27
|
+
if (selectedDate && dateAdapter.isValid(selectedDate == null ? void 0 : selectedDate.startDate)) {
|
|
28
|
+
const { startDate, endDate } = selectedDate;
|
|
29
|
+
if (dateAdapter.isValid(endDate)) {
|
|
30
|
+
return dateAdapter.isSame(startDate, endDate, "month") ? createConsecutiveRange(startDate) : [
|
|
31
|
+
dateAdapter.startOf(startDate, "month"),
|
|
32
|
+
dateAdapter.startOf(endDate, "month")
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
return createConsecutiveRange(startDate);
|
|
36
|
+
}
|
|
37
|
+
const currentMonth = dateAdapter.startOf(
|
|
38
|
+
dateAdapter.today(timezone),
|
|
39
|
+
"month"
|
|
40
|
+
);
|
|
41
|
+
return [currentMonth, dateAdapter.add(currentMonth, { months: 1 })];
|
|
42
|
+
}
|
|
43
|
+
const withBaseName = core.makePrefixer("saltDatePickerPanel");
|
|
44
|
+
const DatePickerRangePanel = react.forwardRef(function DatePickerRangePanel2(props, ref) {
|
|
45
|
+
const { dateAdapter } = LocalizationProvider.useLocalization();
|
|
46
|
+
const {
|
|
47
|
+
className,
|
|
48
|
+
defaultStartVisibleMonth: defaultStartVisibleMonthProp,
|
|
49
|
+
startVisibleMonth: startVisibleMonthProp,
|
|
50
|
+
onStartVisibleMonthChange,
|
|
51
|
+
defaultEndVisibleMonth: defaultEndVisibleMonthProp,
|
|
52
|
+
endVisibleMonth: endVisibleMonthProp,
|
|
53
|
+
onEndVisibleMonthChange,
|
|
54
|
+
helperText,
|
|
55
|
+
onFocusedDateChange,
|
|
56
|
+
onHoveredDateChange,
|
|
57
|
+
onSelectionChange,
|
|
58
|
+
StartCalendarProps: StartCalendarPropsProp,
|
|
59
|
+
StartCalendarNavigationProps,
|
|
60
|
+
StartCalendarGridProps,
|
|
61
|
+
EndCalendarProps: EndCalendarPropsProp,
|
|
62
|
+
EndCalendarNavigationProps,
|
|
63
|
+
EndCalendarGridProps,
|
|
64
|
+
...rest
|
|
65
|
+
} = props;
|
|
66
|
+
const targetWindow = window.useWindow();
|
|
67
|
+
styles.useComponentCssInjection({
|
|
68
|
+
testId: "salt-date-picker-range-panel",
|
|
69
|
+
css: DatePickerPanel,
|
|
70
|
+
window: targetWindow
|
|
71
|
+
});
|
|
72
|
+
const calendarsRef = react.useRef(null);
|
|
73
|
+
const containerRef = core.useForkRef(ref, calendarsRef);
|
|
74
|
+
const {
|
|
75
|
+
state: {
|
|
76
|
+
timezone,
|
|
77
|
+
selectedDate,
|
|
78
|
+
minDate = dateAdapter.startOf(dateAdapter.today(timezone), "month"),
|
|
79
|
+
maxDate = dateAdapter.add(minDate, { months: 1 })
|
|
80
|
+
},
|
|
81
|
+
helpers: { select, isDayHighlighted, isDayUnselectable }
|
|
82
|
+
} = DatePickerContext.useDatePickerContext({
|
|
83
|
+
selectionVariant: "range"
|
|
84
|
+
});
|
|
85
|
+
const {
|
|
86
|
+
state: { initialFocusRef, focused }
|
|
87
|
+
} = DatePickerOverlayProvider.useDatePickerOverlay();
|
|
88
|
+
const [hoveredDate, setHoveredDate] = react.useState(
|
|
89
|
+
null
|
|
90
|
+
);
|
|
91
|
+
const [[fallbackStartVisibleMonth, fallbackEndVisibleMonth]] = react.useState(
|
|
92
|
+
() => getFallbackVisibleMonths(dateAdapter, selectedDate, timezone)
|
|
93
|
+
);
|
|
94
|
+
const [startVisibleMonth, setStartVisibleMonth] = core.useControlled({
|
|
95
|
+
controlled: startVisibleMonthProp,
|
|
96
|
+
default: defaultStartVisibleMonthProp || fallbackStartVisibleMonth,
|
|
97
|
+
name: "DatePickerRangePanel",
|
|
98
|
+
state: "startVisibleMonth"
|
|
99
|
+
});
|
|
100
|
+
const [endVisibleMonth, setEndVisibleMonth] = core.useControlled({
|
|
101
|
+
controlled: endVisibleMonthProp,
|
|
102
|
+
default: defaultEndVisibleMonthProp || fallbackEndVisibleMonth,
|
|
103
|
+
name: "DatePickerRangePanel",
|
|
104
|
+
state: "endVisibleMonth"
|
|
105
|
+
});
|
|
106
|
+
const handleSelectionChange = react.useCallback(
|
|
107
|
+
(event, newDate) => {
|
|
108
|
+
select(event, newDate);
|
|
109
|
+
onSelectionChange == null ? void 0 : onSelectionChange(event, newDate);
|
|
110
|
+
},
|
|
111
|
+
[select, onSelectionChange]
|
|
112
|
+
);
|
|
113
|
+
const handleHoveredStartDateChange = react.useCallback(
|
|
114
|
+
(event, newHoveredDate) => {
|
|
115
|
+
setHoveredDate(newHoveredDate);
|
|
116
|
+
onHoveredDateChange == null ? void 0 : onHoveredDateChange(event, newHoveredDate);
|
|
117
|
+
},
|
|
118
|
+
[onHoveredDateChange]
|
|
119
|
+
);
|
|
120
|
+
const handleHoveredEndDateChange = react.useCallback(
|
|
121
|
+
(event, newHoveredDate) => {
|
|
122
|
+
setHoveredDate(newHoveredDate);
|
|
123
|
+
onHoveredDateChange == null ? void 0 : onHoveredDateChange(event, newHoveredDate);
|
|
124
|
+
},
|
|
125
|
+
[onHoveredDateChange]
|
|
126
|
+
);
|
|
127
|
+
const handleStartVisibleMonthChange = react.useCallback(
|
|
128
|
+
(event, newVisibleMonth) => {
|
|
129
|
+
setStartVisibleMonth(newVisibleMonth);
|
|
130
|
+
if (dateAdapter.compare(newVisibleMonth, endVisibleMonth) >= 0) {
|
|
131
|
+
setEndVisibleMonth(dateAdapter.add(newVisibleMonth, { months: 1 }));
|
|
132
|
+
}
|
|
133
|
+
onStartVisibleMonthChange == null ? void 0 : onStartVisibleMonthChange(event, newVisibleMonth);
|
|
134
|
+
},
|
|
135
|
+
[dateAdapter, endVisibleMonth, onStartVisibleMonthChange]
|
|
136
|
+
);
|
|
137
|
+
const handleEndVisibleMonthChange = react.useCallback(
|
|
138
|
+
(event, newVisibleMonth) => {
|
|
139
|
+
setEndVisibleMonth(newVisibleMonth);
|
|
140
|
+
if (dateAdapter.compare(newVisibleMonth, startVisibleMonth) <= 0) {
|
|
141
|
+
setStartVisibleMonth(
|
|
142
|
+
dateAdapter.startOf(
|
|
143
|
+
dateAdapter.subtract(newVisibleMonth, { months: 1 }),
|
|
144
|
+
"month"
|
|
145
|
+
)
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
onEndVisibleMonthChange == null ? void 0 : onEndVisibleMonthChange(event, newVisibleMonth);
|
|
149
|
+
},
|
|
150
|
+
[dateAdapter, startVisibleMonth, onEndVisibleMonthChange]
|
|
151
|
+
);
|
|
152
|
+
const calendarSelectedDate = {
|
|
153
|
+
startDate: selectedDate && dateAdapter.isValid(selectedDate.startDate) ? selectedDate.startDate : null,
|
|
154
|
+
endDate: selectedDate && dateAdapter.isValid(selectedDate.endDate) ? selectedDate.endDate : null
|
|
155
|
+
};
|
|
156
|
+
const [focusedDate, setFocusedDate] = react.useState(
|
|
157
|
+
null
|
|
158
|
+
);
|
|
159
|
+
const handleStartCalendarFocusedDateChange = react.useCallback(
|
|
160
|
+
(event, newFocusedDate) => {
|
|
161
|
+
setFocusedDate(newFocusedDate);
|
|
162
|
+
if (newFocusedDate && !dateAdapter.isSame(startVisibleMonth, newFocusedDate, "month")) {
|
|
163
|
+
handleStartVisibleMonthChange(
|
|
164
|
+
event,
|
|
165
|
+
dateAdapter.startOf(newFocusedDate, "month")
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
onFocusedDateChange == null ? void 0 : onFocusedDateChange(event, newFocusedDate);
|
|
169
|
+
},
|
|
170
|
+
[
|
|
171
|
+
dateAdapter,
|
|
172
|
+
startVisibleMonth,
|
|
173
|
+
handleStartVisibleMonthChange,
|
|
174
|
+
onFocusedDateChange
|
|
175
|
+
]
|
|
176
|
+
);
|
|
177
|
+
const handleEndCalendarFocusedDateChange = react.useCallback(
|
|
178
|
+
(event, newFocusedDate) => {
|
|
179
|
+
setFocusedDate(newFocusedDate);
|
|
180
|
+
if (newFocusedDate && !dateAdapter.isSame(endVisibleMonth, newFocusedDate, "month")) {
|
|
181
|
+
handleEndVisibleMonthChange(
|
|
182
|
+
event,
|
|
183
|
+
dateAdapter.startOf(newFocusedDate, "month")
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
onFocusedDateChange == null ? void 0 : onFocusedDateChange(event, newFocusedDate);
|
|
187
|
+
},
|
|
188
|
+
[
|
|
189
|
+
dateAdapter,
|
|
190
|
+
endVisibleMonth,
|
|
191
|
+
handleEndVisibleMonthChange,
|
|
192
|
+
onFocusedDateChange
|
|
193
|
+
]
|
|
194
|
+
);
|
|
195
|
+
const getNextFocusedDate = (nextStartVisibleMonth, nextEndVisibleMonth) => {
|
|
196
|
+
const isOutsideAllowedDates = (date) => {
|
|
197
|
+
return dateAdapter.compare(date, minDate) < 0 || dateAdapter.compare(date, maxDate) > 0;
|
|
198
|
+
};
|
|
199
|
+
const isDaySelectable = (date) => !(date && ((isDayUnselectable == null ? void 0 : isDayUnselectable(date)) || isOutsideAllowedDates(date)));
|
|
200
|
+
const getVisibleSelectedDate = (visibleMonth) => {
|
|
201
|
+
if ((selectedDate == null ? void 0 : selectedDate.startDate) && dateAdapter.isSame(visibleMonth, selectedDate.startDate, "month") && isDaySelectable(selectedDate.startDate)) {
|
|
202
|
+
return selectedDate.startDate;
|
|
203
|
+
}
|
|
204
|
+
if ((selectedDate == null ? void 0 : selectedDate.endDate) && dateAdapter.isSame(visibleMonth, selectedDate.endDate, "month") && isDaySelectable(selectedDate.endDate)) {
|
|
205
|
+
return selectedDate.endDate;
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
};
|
|
209
|
+
let focusSelectedDate = getVisibleSelectedDate(nextStartVisibleMonth);
|
|
210
|
+
focusSelectedDate = focusSelectedDate ?? getVisibleSelectedDate(nextEndVisibleMonth);
|
|
211
|
+
if (focusSelectedDate && isDaySelectable(focusSelectedDate)) {
|
|
212
|
+
return focusSelectedDate;
|
|
213
|
+
}
|
|
214
|
+
const today = dateAdapter.today(timezone);
|
|
215
|
+
if ((dateAdapter.isSame(nextStartVisibleMonth, today, "month") || dateAdapter.isSame(nextEndVisibleMonth, today, "month")) && isDaySelectable(today)) {
|
|
216
|
+
return today;
|
|
217
|
+
}
|
|
218
|
+
const getFirstSelectableDate = (visibleMonth) => {
|
|
219
|
+
const firstSelectableDate = utils.generateDatesForMonth(
|
|
220
|
+
dateAdapter,
|
|
221
|
+
visibleMonth
|
|
222
|
+
).find((visibleDay) => isDaySelectable(visibleDay));
|
|
223
|
+
return firstSelectableDate ?? null;
|
|
224
|
+
};
|
|
225
|
+
return getFirstSelectableDate(nextStartVisibleMonth) ?? getFirstSelectableDate(nextEndVisibleMonth);
|
|
226
|
+
};
|
|
227
|
+
core.useIsomorphicLayoutEffect(() => {
|
|
228
|
+
if (!focused) {
|
|
229
|
+
setFocusedDate(null);
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const isStartDateValid = (selectedDate == null ? void 0 : selectedDate.startDate) && dateAdapter.isValid(selectedDate.startDate) && dateAdapter.compare(selectedDate.startDate, minDate) >= 0 && dateAdapter.compare(selectedDate.startDate, maxDate) <= 0;
|
|
233
|
+
const isEndDateValid = (selectedDate == null ? void 0 : selectedDate.endDate) && dateAdapter.isValid(selectedDate.endDate) && dateAdapter.compare(selectedDate.endDate, minDate) >= 0 && dateAdapter.compare(selectedDate.endDate, maxDate) <= 0;
|
|
234
|
+
let nextStartVisibleMonth = startVisibleMonth;
|
|
235
|
+
let nextEndVisibleMonth = endVisibleMonth;
|
|
236
|
+
const setVisibleMonths = (start, end) => {
|
|
237
|
+
nextStartVisibleMonth = dateAdapter.startOf(start, "month");
|
|
238
|
+
nextEndVisibleMonth = dateAdapter.startOf(end, "month");
|
|
239
|
+
};
|
|
240
|
+
if ((selectedDate == null ? void 0 : selectedDate.startDate) && (selectedDate == null ? void 0 : selectedDate.endDate) && isStartDateValid && isEndDateValid) {
|
|
241
|
+
if (dateAdapter.isSame(
|
|
242
|
+
selectedDate.startDate,
|
|
243
|
+
startVisibleMonth,
|
|
244
|
+
"month"
|
|
245
|
+
) && dateAdapter.isSame(selectedDate.endDate, startVisibleMonth, "month")) {
|
|
246
|
+
setVisibleMonths(
|
|
247
|
+
selectedDate.startDate,
|
|
248
|
+
dateAdapter.add(selectedDate.startDate, { months: 1 })
|
|
249
|
+
);
|
|
250
|
+
} else {
|
|
251
|
+
setVisibleMonths(selectedDate.startDate, selectedDate.endDate);
|
|
252
|
+
}
|
|
253
|
+
} else if ((selectedDate == null ? void 0 : selectedDate.startDate) && isStartDateValid) {
|
|
254
|
+
setVisibleMonths(
|
|
255
|
+
selectedDate.startDate,
|
|
256
|
+
dateAdapter.add(selectedDate.startDate, { months: 1 })
|
|
257
|
+
);
|
|
258
|
+
} else if ((selectedDate == null ? void 0 : selectedDate.endDate) && isEndDateValid) {
|
|
259
|
+
setVisibleMonths(
|
|
260
|
+
dateAdapter.subtract(selectedDate.endDate, { months: 1 }),
|
|
261
|
+
selectedDate.endDate
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
if (!focusedDate) {
|
|
265
|
+
setFocusedDate((prevFocusedDate) => {
|
|
266
|
+
if (!prevFocusedDate) {
|
|
267
|
+
return getNextFocusedDate(nextStartVisibleMonth, nextEndVisibleMonth);
|
|
268
|
+
}
|
|
269
|
+
return prevFocusedDate;
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}, [dateAdapter, minDate, maxDate, focused]);
|
|
273
|
+
const StartCalendarProps = {
|
|
274
|
+
visibleMonth: startVisibleMonth,
|
|
275
|
+
hoveredDate,
|
|
276
|
+
selectedDate: calendarSelectedDate,
|
|
277
|
+
isDayHighlighted,
|
|
278
|
+
isDayUnselectable,
|
|
279
|
+
focusedDateRef: initialFocusRef,
|
|
280
|
+
focusedDate: focusedDate && dateAdapter.compare(
|
|
281
|
+
focusedDate,
|
|
282
|
+
dateAdapter.startOf(endVisibleMonth, "month")
|
|
283
|
+
) < 0 ? focusedDate : null,
|
|
284
|
+
onHoveredDateChange: handleHoveredStartDateChange,
|
|
285
|
+
onFocusedDateChange: handleStartCalendarFocusedDateChange,
|
|
286
|
+
onVisibleMonthChange: handleStartVisibleMonthChange,
|
|
287
|
+
onSelectionChange: handleSelectionChange,
|
|
288
|
+
hideOutOfRangeDates: true,
|
|
289
|
+
minDate,
|
|
290
|
+
maxDate,
|
|
291
|
+
timezone,
|
|
292
|
+
...StartCalendarPropsProp
|
|
293
|
+
};
|
|
294
|
+
const EndCalendarProps = {
|
|
295
|
+
visibleMonth: endVisibleMonth,
|
|
296
|
+
hoveredDate,
|
|
297
|
+
isDayHighlighted,
|
|
298
|
+
isDayUnselectable,
|
|
299
|
+
focusedDateRef: initialFocusRef,
|
|
300
|
+
focusedDate: focusedDate && dateAdapter.compare(
|
|
301
|
+
focusedDate,
|
|
302
|
+
dateAdapter.startOf(endVisibleMonth, "month")
|
|
303
|
+
) >= 0 ? focusedDate : null,
|
|
304
|
+
selectedDate: calendarSelectedDate,
|
|
305
|
+
onFocusedDateChange: handleEndCalendarFocusedDateChange,
|
|
306
|
+
onHoveredDateChange: handleHoveredEndDateChange,
|
|
307
|
+
onVisibleMonthChange: handleEndVisibleMonthChange,
|
|
308
|
+
onSelectionChange: handleSelectionChange,
|
|
309
|
+
hideOutOfRangeDates: true,
|
|
310
|
+
minDate,
|
|
311
|
+
maxDate,
|
|
312
|
+
timezone,
|
|
313
|
+
...EndCalendarPropsProp
|
|
314
|
+
};
|
|
315
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
316
|
+
core.StackLayout,
|
|
317
|
+
{
|
|
318
|
+
separators: true,
|
|
319
|
+
gap: 0,
|
|
320
|
+
className: clsx.clsx(className, withBaseName("container")),
|
|
321
|
+
ref: containerRef,
|
|
322
|
+
...rest,
|
|
323
|
+
children: [
|
|
324
|
+
helperText && /* @__PURE__ */ jsxRuntime.jsx(core.FlexItem, { className: withBaseName("header"), children: /* @__PURE__ */ jsxRuntime.jsx(core.FormFieldHelperText, { children: helperText }) }),
|
|
325
|
+
/* @__PURE__ */ jsxRuntime.jsx(core.FlexLayout, { gap: 0, children: /* @__PURE__ */ jsxRuntime.jsxs(core.FormFieldContext.Provider, { value: {}, children: [
|
|
326
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Calendar.Calendar, { selectionVariant: "range", ...StartCalendarProps, children: [
|
|
327
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
328
|
+
CalendarNavigation.CalendarNavigation,
|
|
329
|
+
{
|
|
330
|
+
NextButtonProps: {
|
|
331
|
+
disabled: dateAdapter.isSame(
|
|
332
|
+
startVisibleMonth,
|
|
333
|
+
dateAdapter.subtract(maxDate, { months: 1 }),
|
|
334
|
+
"month"
|
|
335
|
+
)
|
|
336
|
+
},
|
|
337
|
+
...StartCalendarNavigationProps
|
|
338
|
+
}
|
|
339
|
+
),
|
|
340
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarGrid.CalendarGrid, { ...StartCalendarGridProps })
|
|
341
|
+
] }),
|
|
342
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Calendar.Calendar, { selectionVariant: "range", ...EndCalendarProps, children: [
|
|
343
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
344
|
+
CalendarNavigation.CalendarNavigation,
|
|
345
|
+
{
|
|
346
|
+
NextButtonProps: {
|
|
347
|
+
disabled: dateAdapter.isSame(
|
|
348
|
+
endVisibleMonth,
|
|
349
|
+
dateAdapter.add(minDate, { months: 1 }),
|
|
350
|
+
"month"
|
|
351
|
+
)
|
|
352
|
+
},
|
|
353
|
+
...EndCalendarNavigationProps
|
|
354
|
+
}
|
|
355
|
+
),
|
|
356
|
+
/* @__PURE__ */ jsxRuntime.jsx(CalendarGrid.CalendarGrid, { ...EndCalendarGridProps })
|
|
357
|
+
] })
|
|
358
|
+
] }) })
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
);
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
exports.DatePickerRangePanel = DatePickerRangePanel;
|
|
365
|
+
//# sourceMappingURL=DatePickerRangePanel.js.map
|