react-day-picker 8.0.0-beta.32 → 8.0.0-beta.33
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 +12 -3
- package/build/DayPicker.d.ts +3 -2
- package/build/DayPicker.js +6 -5
- package/build/DayPicker.js.map +1 -1
- package/build/components/Button/Button.d.ts +1 -1
- package/build/components/Button/Button.js +1 -1
- package/build/components/Button/Button.js.map +1 -1
- package/build/components/Caption/Caption.d.ts +7 -0
- package/build/components/Caption/Caption.js +8 -8
- package/build/components/Caption/Caption.js.map +1 -1
- package/build/components/CaptionLabel/CaptionLabel.js +1 -1
- package/build/components/CaptionLabel/CaptionLabel.js.map +1 -1
- package/build/components/Day/Day.js +1 -1
- package/build/components/Day/Day.js.map +1 -1
- package/build/components/Day/hooks/useDay.d.ts +2 -2
- package/build/components/Day/hooks/useDay.js +5 -5
- package/build/components/Day/hooks/useDay.js.map +1 -1
- package/build/components/Day/hooks/useDayFocus.d.ts +1 -1
- package/build/components/Day/hooks/useDayFocus.js +1 -1
- package/build/components/Day/hooks/useDayFocus.js.map +1 -1
- package/build/components/DayContent/DayContent.js +1 -1
- package/build/components/DayContent/DayContent.js.map +1 -1
- package/build/components/Dropdown/Dropdown.d.ts +1 -1
- package/build/components/Dropdown/Dropdown.js +1 -1
- package/build/components/Dropdown/Dropdown.js.map +1 -1
- package/build/components/Footer/Footer.js +1 -1
- package/build/components/Footer/Footer.js.map +1 -1
- package/build/components/Head/Head.js +1 -1
- package/build/components/Head/Head.js.map +1 -1
- package/build/components/IconDropdown/IconDropdown.d.ts +2 -2
- package/build/components/IconDropdown/IconDropdown.js +1 -1
- package/build/components/IconDropdown/IconDropdown.js.map +1 -1
- package/build/components/IconLeft/IconLeft.d.ts +2 -2
- package/build/components/IconLeft/IconLeft.js +3 -3
- package/build/components/IconLeft/IconLeft.js.map +1 -1
- package/build/components/IconRight/IconRight.d.ts +2 -2
- package/build/components/IconRight/IconRight.js +3 -3
- package/build/components/IconRight/IconRight.js.map +1 -1
- package/build/components/MonthsDropdown/MonthsDropdown.d.ts +1 -1
- package/build/components/MonthsDropdown/MonthsDropdown.js +1 -1
- package/build/components/MonthsDropdown/MonthsDropdown.js.map +1 -1
- package/build/components/Navigation/Navigation.d.ts +1 -1
- package/build/components/Navigation/Navigation.js +1 -1
- package/build/components/Navigation/Navigation.js.map +1 -1
- package/build/components/Root/Root.js +1 -2
- package/build/components/Root/Root.js.map +1 -1
- package/build/components/Row/Row.js +1 -1
- package/build/components/Row/Row.js.map +1 -1
- package/build/components/Table/Table.js +1 -1
- package/build/components/Table/Table.js.map +1 -1
- package/build/components/WeekNumber/WeekNumber.js +1 -1
- package/build/components/WeekNumber/WeekNumber.js.map +1 -1
- package/build/components/YearsDropdown/YearsDropdown.d.ts +1 -1
- package/build/components/YearsDropdown/YearsDropdown.js +1 -1
- package/build/components/YearsDropdown/YearsDropdown.js.map +1 -1
- package/build/contexts/DayPicker/DayPickerContext.d.ts +3 -2
- package/build/contexts/DayPicker/DayPickerContext.js +1 -1
- package/build/contexts/DayPicker/DayPickerContext.js.map +1 -1
- package/build/contexts/DayPicker/DayPickerProvider.d.ts +1 -1
- package/build/contexts/DayPicker/DayPickerProvider.js +1 -1
- package/build/contexts/DayPicker/DayPickerProvider.js.map +1 -1
- package/build/contexts/DayPicker/defaultClassNames.js +1 -3
- package/build/contexts/DayPicker/defaultClassNames.js.map +1 -1
- package/build/contexts/DayPicker/labels/labelDay.d.ts +2 -2
- package/build/contexts/DayPicker/labels/labelDay.js +1 -1
- package/build/contexts/DayPicker/labels/labelDay.js.map +1 -1
- package/build/contexts/DayPicker/labels/labelNext.d.ts +2 -2
- package/build/contexts/DayPicker/labels/labelNext.js.map +1 -1
- package/build/contexts/DayPicker/labels/labelPrevious.d.ts +2 -2
- package/build/contexts/DayPicker/labels/labelPrevious.js.map +1 -1
- package/build/contexts/DayPicker/labels/labelWeekNumber.d.ts +2 -2
- package/build/contexts/DayPicker/labels/labelWeekNumber.js.map +1 -1
- package/build/contexts/DayPicker/labels/labelWeekday.d.ts +2 -2
- package/build/contexts/DayPicker/labels/labelWeekday.js.map +1 -1
- package/build/contexts/DayPicker/useDayPicker.js +1 -1
- package/build/contexts/DayPicker/useDayPicker.js.map +1 -1
- package/build/contexts/DayPicker/utils/parseModifierProps.js +1 -0
- package/build/contexts/DayPicker/utils/parseModifierProps.js.map +1 -1
- package/build/contexts/Focus/FocusContext.d.ts +5 -1
- package/build/contexts/Focus/FocusContext.js +63 -3
- package/build/contexts/Focus/FocusContext.js.map +1 -1
- package/build/contexts/Focus/index.d.ts +0 -1
- package/build/contexts/Focus/useFocus.js +1 -1
- package/build/contexts/Focus/useFocus.js.map +1 -1
- package/build/contexts/Navigation/NavigationContext.d.ts +5 -1
- package/build/contexts/Navigation/NavigationContext.js +23 -3
- package/build/contexts/Navigation/NavigationContext.js.map +1 -1
- package/build/contexts/Navigation/index.d.ts +0 -1
- package/build/contexts/Navigation/useNavigation.js +1 -1
- package/build/contexts/Navigation/useNavigation.js.map +1 -1
- package/build/contexts/RootProvider.d.ts +8 -0
- package/build/contexts/{ContextProvider.js → RootProvider.js} +9 -14
- package/build/contexts/RootProvider.js.map +1 -0
- package/build/contexts/SelectMultiple/SelectMultipleContext.d.ts +14 -2
- package/build/contexts/SelectMultiple/SelectMultipleContext.js +73 -3
- package/build/contexts/SelectMultiple/SelectMultipleContext.js.map +1 -1
- package/build/contexts/SelectMultiple/index.d.ts +0 -1
- package/build/contexts/SelectMultiple/useSelectMultiple.js +1 -1
- package/build/contexts/SelectMultiple/useSelectMultiple.js.map +1 -1
- package/build/contexts/SelectRange/SelectRangeContext.d.ts +14 -3
- package/build/contexts/SelectRange/SelectRangeContext.js +114 -3
- package/build/contexts/SelectRange/SelectRangeContext.js.map +1 -1
- package/build/contexts/SelectRange/index.d.ts +0 -1
- package/build/contexts/SelectRange/useSelectRange.js +1 -1
- package/build/contexts/SelectRange/useSelectRange.js.map +1 -1
- package/build/contexts/SelectSingle/SelectSingleContext.d.ts +17 -3
- package/build/contexts/SelectSingle/SelectSingleContext.js +36 -3
- package/build/contexts/SelectSingle/SelectSingleContext.js.map +1 -1
- package/build/contexts/SelectSingle/index.d.ts +0 -1
- package/build/contexts/SelectSingle/useSelectSingle.js +1 -1
- package/build/contexts/SelectSingle/useSelectSingle.js.map +1 -1
- package/build/contexts/index.d.ts +1 -1
- package/build/hooks/useControlledValue/useControlledValue.js +2 -2
- package/build/hooks/useControlledValue/useControlledValue.js.map +1 -1
- package/build/hooks/useInput/useInput.d.ts +11 -32
- package/build/hooks/useInput/useInput.js +2 -4
- package/build/hooks/useInput/useInput.js.map +1 -1
- package/build/hooks/useModifiers/useModifiers.js +3 -5
- package/build/hooks/useModifiers/useModifiers.js.map +1 -1
- package/build/hooks/useModifiers/utils/isDateInRange.d.ts +1 -1
- package/build/hooks/useModifiers/utils/isDateInRange.js.map +1 -1
- package/build/hooks/useModifiers/utils/isMatch.d.ts +1 -1
- package/build/hooks/useModifiers/utils/isMatch.js +10 -8
- package/build/hooks/useModifiers/utils/isMatch.js.map +1 -1
- package/build/main.js +11 -22
- package/build/main.js.map +1 -1
- package/build/types/{DayPickerProps.d.ts → DayPicker.d.ts} +35 -16
- package/build/types/DayPickerCustom.d.ts +11 -0
- package/build/types/{isDayPickerCustom.js → DayPickerCustom.js} +1 -1
- package/build/types/DayPickerCustom.js.map +1 -0
- package/build/types/{DayPickerMultipleProps.d.ts → DayPickerMultiple.d.ts} +5 -5
- package/build/types/{isDayPickerMultiple.js → DayPickerMultiple.js} +1 -1
- package/build/types/DayPickerMultiple.js.map +1 -0
- package/build/types/{DayPickerRangeProps.d.ts → DayPickerRange.d.ts} +6 -6
- package/build/types/{isDayPickerRange.js → DayPickerRange.js} +1 -1
- package/build/types/DayPickerRange.js.map +1 -0
- package/build/types/DayPickerSingle.d.ts +14 -0
- package/build/types/{isDayPickerSingle.js → DayPickerSingle.js} +1 -1
- package/build/types/DayPickerSingle.js.map +1 -0
- package/build/types/EventHandlers.d.ts +51 -0
- package/build/types/Formatters.d.ts +10 -5
- package/build/types/Labels.d.ts +24 -12
- package/build/types/Matchers.d.ts +34 -0
- package/build/types/Matchers.js +27 -0
- package/build/types/Matchers.js.map +1 -0
- package/build/types/Modifiers.d.ts +15 -4
- package/build/types/Styles.d.ts +83 -2
- package/build/types/index.d.ts +7 -50
- package/dist/main.js +555 -589
- package/dist/main.js.map +1 -1
- package/package.json +3 -2
- package/build/contexts/ContextProvider.d.ts +0 -8
- package/build/contexts/ContextProvider.js.map +0 -1
- package/build/contexts/Focus/FocusProvider.d.ts +0 -5
- package/build/contexts/Focus/FocusProvider.js +0 -66
- package/build/contexts/Focus/FocusProvider.js.map +0 -1
- package/build/contexts/Navigation/NavigationProvider.d.ts +0 -5
- package/build/contexts/Navigation/NavigationProvider.js +0 -26
- package/build/contexts/Navigation/NavigationProvider.js.map +0 -1
- package/build/contexts/SelectMultiple/SelectMultipleProvider.d.ts +0 -9
- package/build/contexts/SelectMultiple/SelectMultipleProvider.js +0 -23
- package/build/contexts/SelectMultiple/SelectMultipleProvider.js.map +0 -1
- package/build/contexts/SelectMultiple/SelectMultipleProviderInternal.d.ts +0 -8
- package/build/contexts/SelectMultiple/SelectMultipleProviderInternal.js +0 -61
- package/build/contexts/SelectMultiple/SelectMultipleProviderInternal.js.map +0 -1
- package/build/contexts/SelectRange/SelectRangeProvider.d.ts +0 -9
- package/build/contexts/SelectRange/SelectRangeProvider.js +0 -26
- package/build/contexts/SelectRange/SelectRangeProvider.js.map +0 -1
- package/build/contexts/SelectRange/SelectRangeProviderInternal.d.ts +0 -8
- package/build/contexts/SelectRange/SelectRangeProviderInternal.js +0 -99
- package/build/contexts/SelectRange/SelectRangeProviderInternal.js.map +0 -1
- package/build/contexts/SelectSingle/SelectSingleProvider.d.ts +0 -9
- package/build/contexts/SelectSingle/SelectSingleProvider.js +0 -20
- package/build/contexts/SelectSingle/SelectSingleProvider.js.map +0 -1
- package/build/contexts/SelectSingle/SelectSingleProviderInternal.d.ts +0 -8
- package/build/contexts/SelectSingle/SelectSingleProviderInternal.js +0 -27
- package/build/contexts/SelectSingle/SelectSingleProviderInternal.js.map +0 -1
- package/build/types/CaptionLayout.d.ts +0 -7
- package/build/types/ClassNames.d.ts +0 -3
- package/build/types/Components.d.ts +0 -39
- package/build/types/CustomModifiers.d.ts +0 -4
- package/build/types/DateAfter.d.ts +0 -7
- package/build/types/DateBefore.d.ts +0 -7
- package/build/types/DateFormatter.d.ts +0 -6
- package/build/types/DateInterval.d.ts +0 -8
- package/build/types/DateRange.d.ts +0 -8
- package/build/types/DayClickEventHandler.d.ts +0 -6
- package/build/types/DayFocusEventHandler.d.ts +0 -6
- package/build/types/DayKeyboardEventHandler.d.ts +0 -6
- package/build/types/DayLabelFormatter.d.ts +0 -7
- package/build/types/DayMouseEventHandler.d.ts +0 -6
- package/build/types/DayOfWeekMatcher.d.ts +0 -7
- package/build/types/DayPickerCustomProps.d.ts +0 -11
- package/build/types/DayPickerSingleProps.d.ts +0 -14
- package/build/types/DayTouchEventHandler.d.ts +0 -6
- package/build/types/InternalModifier.d.ts +0 -2
- package/build/types/Matcher.d.ts +0 -10
- package/build/types/Modifier.d.ts +0 -5
- package/build/types/ModifierClassNames.d.ts +0 -5
- package/build/types/ModifierStatus.d.ts +0 -5
- package/build/types/ModifierStyles.d.ts +0 -4
- package/build/types/MonthChangeEventHandler.d.ts +0 -4
- package/build/types/NavButtonLabelFormatter.d.ts +0 -7
- package/build/types/SelectMultipleEventHandler.d.ts +0 -12
- package/build/types/SelectRangeEventHandler.d.ts +0 -10
- package/build/types/SelectSingleEventHandler.d.ts +0 -12
- package/build/types/StyledComponentProps.d.ts +0 -10
- package/build/types/StyledElement.d.ts +0 -76
- package/build/types/WeekNumberClickEventHandler.d.ts +0 -9
- package/build/types/WeekNumberFormatter.d.ts +0 -6
- package/build/types/WeekNumberLabelFormatter.d.ts +0 -5
- package/build/types/WeekdayLabelFormatter.d.ts +0 -4
- package/build/types/isArrayOfDates.d.ts +0 -2
- package/build/types/isArrayOfDates.js +0 -9
- package/build/types/isArrayOfDates.js.map +0 -1
- package/build/types/isDateAfterType.d.ts +0 -3
- package/build/types/isDateAfterType.js +0 -7
- package/build/types/isDateAfterType.js.map +0 -1
- package/build/types/isDateBeforeType.d.ts +0 -3
- package/build/types/isDateBeforeType.js +0 -7
- package/build/types/isDateBeforeType.js.map +0 -1
- package/build/types/isDateInterval.d.ts +0 -3
- package/build/types/isDateInterval.js +0 -10
- package/build/types/isDateInterval.js.map +0 -1
- package/build/types/isDateRange.d.ts +0 -3
- package/build/types/isDateRange.js +0 -8
- package/build/types/isDateRange.js.map +0 -1
- package/build/types/isDateType.d.ts +0 -2
- package/build/types/isDateType.js +0 -9
- package/build/types/isDateType.js.map +0 -1
- package/build/types/isDayOfWeekType.d.ts +0 -3
- package/build/types/isDayOfWeekType.js +0 -7
- package/build/types/isDayOfWeekType.js.map +0 -1
- package/build/types/isDayPickerCustom.d.ts +0 -4
- package/build/types/isDayPickerCustom.js.map +0 -1
- package/build/types/isDayPickerMultiple.d.ts +0 -4
- package/build/types/isDayPickerMultiple.js.map +0 -1
- package/build/types/isDayPickerRange.d.ts +0 -4
- package/build/types/isDayPickerRange.js.map +0 -1
- package/build/types/isDayPickerSingle.d.ts +0 -4
- package/build/types/isDayPickerSingle.js.map +0 -1
package/dist/main.js
CHANGED
|
@@ -8,25 +8,6 @@ var enUS = require('date-fns/locale/en-US');
|
|
|
8
8
|
|
|
9
9
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
10
|
|
|
11
|
-
function _interopNamespace(e) {
|
|
12
|
-
if (e && e.__esModule) return e;
|
|
13
|
-
var n = Object.create(null);
|
|
14
|
-
if (e) {
|
|
15
|
-
Object.keys(e).forEach(function (k) {
|
|
16
|
-
if (k !== 'default') {
|
|
17
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () { return e[k]; }
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
n["default"] = e;
|
|
26
|
-
return Object.freeze(n);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
30
11
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
31
12
|
var enUS__default = /*#__PURE__*/_interopDefaultLegacy(enUS);
|
|
32
13
|
|
|
@@ -86,7 +67,7 @@ function __spreadArray(to, from, pack) {
|
|
|
86
67
|
* Access this context from the [[useDayPicker]] hook when using custom
|
|
87
68
|
* components.
|
|
88
69
|
*/
|
|
89
|
-
var DayPickerContext =
|
|
70
|
+
var DayPickerContext = React__default["default"].createContext(undefined);
|
|
90
71
|
|
|
91
72
|
/**
|
|
92
73
|
* Hook to access the [[DayPickerContext]].
|
|
@@ -95,7 +76,7 @@ var DayPickerContext = React__namespace.createContext(undefined);
|
|
|
95
76
|
* [[DayPickerProvider]].
|
|
96
77
|
* */
|
|
97
78
|
function useDayPicker() {
|
|
98
|
-
var context =
|
|
79
|
+
var context = React__default["default"].useContext(DayPickerContext);
|
|
99
80
|
if (!context) {
|
|
100
81
|
throw new Error("Context is not defined. useDayPicker must be used within a DayPickerProvider with a valid values.");
|
|
101
82
|
}
|
|
@@ -174,10 +155,131 @@ function getWeeks(month, _a) {
|
|
|
174
155
|
function Table(props) {
|
|
175
156
|
var _a = useDayPicker(), locale = _a.locale, classNames = _a.classNames, styles = _a.styles, hideHead = _a.hideHead, fixedWeeks = _a.fixedWeeks, _b = _a.components, Head = _b.Head, Row = _b.Row, Footer = _b.Footer;
|
|
176
157
|
var weeks = getWeeks(props.displayMonth, { locale: locale, fixedWeeks: fixedWeeks });
|
|
177
|
-
return (
|
|
178
|
-
!hideHead &&
|
|
179
|
-
|
|
180
|
-
|
|
158
|
+
return (React__default["default"].createElement("table", { className: classNames.table, style: styles.table },
|
|
159
|
+
!hideHead && React__default["default"].createElement(Head, null),
|
|
160
|
+
React__default["default"].createElement("tbody", { className: classNames.tbody, style: styles.tbody }, weeks.map(function (week) { return (React__default["default"].createElement(Row, { displayMonth: props.displayMonth, key: week.weekNumber, dates: week.dates, weekNumber: week.weekNumber })); })),
|
|
161
|
+
React__default["default"].createElement(Footer, null)));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/** Return the initial month according to the given options. */
|
|
165
|
+
function getInitialMonth(context) {
|
|
166
|
+
var month = context.month, defaultMonth = context.defaultMonth, today = context.today;
|
|
167
|
+
var initialMonth = month || defaultMonth || today || new Date();
|
|
168
|
+
var toDate = context.toDate, fromDate = context.fromDate, _a = context.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;
|
|
169
|
+
// Fix the initialMonth if is after the to-date
|
|
170
|
+
if (toDate && dateFns.differenceInCalendarMonths(toDate, initialMonth) < 0) {
|
|
171
|
+
var offset = -1 * (numberOfMonths - 1);
|
|
172
|
+
initialMonth = dateFns.addMonths(toDate, offset);
|
|
173
|
+
}
|
|
174
|
+
// Fix the initialMonth if is before the from-date
|
|
175
|
+
if (fromDate && dateFns.differenceInCalendarMonths(initialMonth, fromDate) < 0) {
|
|
176
|
+
initialMonth = fromDate;
|
|
177
|
+
}
|
|
178
|
+
return dateFns.startOfMonth(initialMonth);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Helper hook for using controlled/uncontrolled values from a component props.
|
|
183
|
+
*
|
|
184
|
+
* When the value is not controlled, pass `undefined` as `controlledValue` and
|
|
185
|
+
* use the returned setter to update it.
|
|
186
|
+
*
|
|
187
|
+
* When the value is controlled, pass the controlled value as second
|
|
188
|
+
* argument, which will be always returned as `value`.
|
|
189
|
+
*/
|
|
190
|
+
function useControlledValue(defaultValue, controlledValue) {
|
|
191
|
+
var _a = React__default["default"].useState(defaultValue), uncontrolledValue = _a[0], setValue = _a[1];
|
|
192
|
+
var value = controlledValue === undefined ? uncontrolledValue : controlledValue;
|
|
193
|
+
return [value, setValue];
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/** Controls the navigation state. */
|
|
197
|
+
function useNavigationState() {
|
|
198
|
+
var context = useDayPicker();
|
|
199
|
+
var initialMonth = getInitialMonth(context);
|
|
200
|
+
var _a = useControlledValue(initialMonth, context.month), month = _a[0], setMonth = _a[1];
|
|
201
|
+
var goToMonth = function (date) {
|
|
202
|
+
if (context.disableNavigation)
|
|
203
|
+
return;
|
|
204
|
+
setMonth(date);
|
|
205
|
+
};
|
|
206
|
+
return [month, goToMonth];
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Return the months to display in the component according to the number of
|
|
211
|
+
* months and the from/to date.
|
|
212
|
+
*/
|
|
213
|
+
function getDisplayMonths(month, _a) {
|
|
214
|
+
var reverseMonths = _a.reverseMonths, numberOfMonths = _a.numberOfMonths;
|
|
215
|
+
var start = dateFns.startOfMonth(month);
|
|
216
|
+
var end = dateFns.startOfMonth(dateFns.addMonths(start, numberOfMonths));
|
|
217
|
+
var monthsDiff = dateFns.differenceInCalendarMonths(end, start);
|
|
218
|
+
var months = [];
|
|
219
|
+
for (var i = 0; i < monthsDiff; i++) {
|
|
220
|
+
var nextMonth = dateFns.addMonths(start, i);
|
|
221
|
+
months.push(nextMonth);
|
|
222
|
+
}
|
|
223
|
+
if (reverseMonths)
|
|
224
|
+
months = months.reverse();
|
|
225
|
+
return months;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Returns the next month the user can navigate to according to the given
|
|
230
|
+
* options.
|
|
231
|
+
*
|
|
232
|
+
* Please note that the next month is not always the next calendar month:
|
|
233
|
+
*
|
|
234
|
+
* - if after the `toDate` range, is undefined;
|
|
235
|
+
* - if the navigation is paged, is the number of months displayed ahead.
|
|
236
|
+
*
|
|
237
|
+
*/
|
|
238
|
+
function getNextMonth(startingMonth, options) {
|
|
239
|
+
if (options.disableNavigation) {
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
var toDate = options.toDate, pagedNavigation = options.pagedNavigation, _a = options.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;
|
|
243
|
+
var offset = pagedNavigation ? numberOfMonths : 1;
|
|
244
|
+
var month = dateFns.startOfMonth(startingMonth);
|
|
245
|
+
if (!toDate) {
|
|
246
|
+
return dateFns.addMonths(month, offset);
|
|
247
|
+
}
|
|
248
|
+
var monthsDiff = dateFns.differenceInCalendarMonths(toDate, startingMonth);
|
|
249
|
+
if (monthsDiff < numberOfMonths) {
|
|
250
|
+
return undefined;
|
|
251
|
+
}
|
|
252
|
+
// Jump forward as the number of months when paged navigation
|
|
253
|
+
return dateFns.addMonths(month, offset);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Returns the next previous the user can navigate to, according to the given
|
|
258
|
+
* options.
|
|
259
|
+
*
|
|
260
|
+
* Please note that the previous month is not always the previous calendar
|
|
261
|
+
* month:
|
|
262
|
+
*
|
|
263
|
+
* - if before the `fromDate` date, is `undefined`;
|
|
264
|
+
* - if the navigation is paged, is the number of months displayed before.
|
|
265
|
+
*
|
|
266
|
+
*/
|
|
267
|
+
function getPreviousMonth(startingMonth, options) {
|
|
268
|
+
if (options.disableNavigation) {
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
var fromDate = options.fromDate, pagedNavigation = options.pagedNavigation, _a = options.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;
|
|
272
|
+
var offset = pagedNavigation ? numberOfMonths : 1;
|
|
273
|
+
var month = dateFns.startOfMonth(startingMonth);
|
|
274
|
+
if (!fromDate) {
|
|
275
|
+
return dateFns.addMonths(month, -offset);
|
|
276
|
+
}
|
|
277
|
+
var monthsDiff = dateFns.differenceInCalendarMonths(month, fromDate);
|
|
278
|
+
if (monthsDiff <= 0) {
|
|
279
|
+
return undefined;
|
|
280
|
+
}
|
|
281
|
+
// Jump back as the number of months when paged navigation
|
|
282
|
+
return dateFns.addMonths(month, -offset);
|
|
181
283
|
}
|
|
182
284
|
|
|
183
285
|
/**
|
|
@@ -185,11 +287,26 @@ function Table(props) {
|
|
|
185
287
|
*
|
|
186
288
|
* Access this context from the [[useNavigation]] hook.
|
|
187
289
|
*/
|
|
188
|
-
var NavigationContext =
|
|
290
|
+
var NavigationContext = React__default["default"].createContext(undefined);
|
|
291
|
+
/** Provides the values for the [[NavigationContext]]. */
|
|
292
|
+
function NavigationProvider(props) {
|
|
293
|
+
var context = useDayPicker();
|
|
294
|
+
var _a = useNavigationState(), month = _a[0], goToMonth = _a[1];
|
|
295
|
+
var displayMonths = getDisplayMonths(month, context);
|
|
296
|
+
var nextMonth = getNextMonth(month, context);
|
|
297
|
+
var previousMonth = getPreviousMonth(month, context);
|
|
298
|
+
return (React__default["default"].createElement(NavigationContext.Provider, { value: {
|
|
299
|
+
month: month,
|
|
300
|
+
displayMonths: displayMonths,
|
|
301
|
+
goToMonth: goToMonth,
|
|
302
|
+
previousMonth: previousMonth,
|
|
303
|
+
nextMonth: nextMonth
|
|
304
|
+
} }, props.children));
|
|
305
|
+
}
|
|
189
306
|
|
|
190
307
|
/** Hook to access the [[NavigationContext]]. */
|
|
191
308
|
function useNavigation() {
|
|
192
|
-
var context =
|
|
309
|
+
var context = React__default["default"].useContext(NavigationContext);
|
|
193
310
|
if (!context) {
|
|
194
311
|
throw new Error('useNavigation must be used within a NavigationProvider');
|
|
195
312
|
}
|
|
@@ -228,12 +345,12 @@ function Root() {
|
|
|
228
345
|
className.push(classNames.caption_last);
|
|
229
346
|
if (!isFirst && !isLast)
|
|
230
347
|
className.push(classNames.caption_middle);
|
|
231
|
-
return (
|
|
232
|
-
|
|
233
|
-
|
|
348
|
+
return (React__default["default"].createElement("div", { key: displayIndex, className: className.join(' '), style: style },
|
|
349
|
+
React__default["default"].createElement(Caption, { displayMonth: displayMonth }),
|
|
350
|
+
React__default["default"].createElement(Table, { displayMonth: displayMonth })));
|
|
234
351
|
};
|
|
235
|
-
return (
|
|
236
|
-
|
|
352
|
+
return (React__default["default"].createElement("div", { className: rootClassNames.join(' '), style: __assign(__assign({}, styles.root), style), dir: dir },
|
|
353
|
+
React__default["default"].createElement("div", { className: classNames.months, style: styles.months }, displayMonths.map(renderMonth))));
|
|
237
354
|
}
|
|
238
355
|
|
|
239
356
|
/**
|
|
@@ -244,7 +361,7 @@ function MonthsDropdown(props) {
|
|
|
244
361
|
var _a = useDayPicker(), fromDate = _a.fromDate, toDate = _a.toDate, styles = _a.styles, locale = _a.locale, formatMonthCaption = _a.formatters.formatMonthCaption, classNames = _a.classNames, Dropdown = _a.components.Dropdown, labelMonthDropdown = _a.labels.labelMonthDropdown;
|
|
245
362
|
if (!fromDate && !toDate) {
|
|
246
363
|
// TODO: use type guards
|
|
247
|
-
return
|
|
364
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
248
365
|
}
|
|
249
366
|
var dropdownMonths = [];
|
|
250
367
|
if (fromDate && toDate) {
|
|
@@ -266,13 +383,13 @@ function MonthsDropdown(props) {
|
|
|
266
383
|
var newMonth = dateFns.setMonth(new Date(displayMonth), Number(e.target.value));
|
|
267
384
|
props.onChange(newMonth);
|
|
268
385
|
};
|
|
269
|
-
return (
|
|
386
|
+
return (React__default["default"].createElement(Dropdown, { "aria-label": labelMonthDropdown(), className: classNames.dropdown_month, style: styles.dropdown_month, onChange: handleChange, value: displayMonth.getMonth(), caption: formatMonthCaption(displayMonth, { locale: locale }) }, dropdownMonths.map(function (m) { return (React__default["default"].createElement("option", { key: m.getMonth(), value: m.getMonth() }, formatMonthCaption(m, { locale: locale }))); })));
|
|
270
387
|
}
|
|
271
388
|
|
|
272
389
|
/**
|
|
273
390
|
* Render a button HTML element applying the reset class name.
|
|
274
391
|
*/
|
|
275
|
-
var Button =
|
|
392
|
+
var Button = React__default["default"].forwardRef(function (props, ref) {
|
|
276
393
|
var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles;
|
|
277
394
|
var classNamesArr = [classNames.button_reset, classNames.button];
|
|
278
395
|
if (props.className) {
|
|
@@ -283,7 +400,7 @@ var Button = React__namespace.forwardRef(function (props, ref) {
|
|
|
283
400
|
if (props.style) {
|
|
284
401
|
Object.assign(style, props.style);
|
|
285
402
|
}
|
|
286
|
-
return (
|
|
403
|
+
return (React__default["default"].createElement("button", __assign({}, props, { ref: ref, type: "button", className: className, style: style })));
|
|
287
404
|
});
|
|
288
405
|
|
|
289
406
|
/** A component rendering the navigation buttons or the drop-downs. */
|
|
@@ -306,11 +423,11 @@ function Navigation(props) {
|
|
|
306
423
|
classNames.nav_button_next
|
|
307
424
|
].join(' ');
|
|
308
425
|
if (!nextMonth && !previousMonth) {
|
|
309
|
-
return
|
|
426
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
310
427
|
}
|
|
311
|
-
return (
|
|
312
|
-
!props.hidePrevious && (
|
|
313
|
-
!props.hideNext && (
|
|
428
|
+
return (React__default["default"].createElement("div", { className: classNames.nav, style: styles.nav },
|
|
429
|
+
!props.hidePrevious && (React__default["default"].createElement(Button, { "aria-label": previousLabel, className: previousClassName, style: styles.nav_button_next, disabled: !previousMonth, onClick: dir === 'rtl' ? onNextClick : onPreviousClick }, dir === 'rtl' ? (React__default["default"].createElement(IconRight, { className: classNames.nav_icon, style: styles.nav_icon })) : (React__default["default"].createElement(IconLeft, { className: classNames.nav_icon, style: styles.nav_icon })))),
|
|
430
|
+
!props.hideNext && (React__default["default"].createElement(Button, { "aria-label": nextLabel, className: nextClassName, style: styles.nav_button_next, disabled: !nextMonth, onClick: dir === 'rtl' ? onPreviousClick : onNextClick }, dir === 'rtl' ? (React__default["default"].createElement(IconLeft, { className: classNames.nav_icon, style: styles.nav_icon })) : (React__default["default"].createElement(IconRight, { className: classNames.nav_icon, style: styles.nav_icon }))))));
|
|
314
431
|
}
|
|
315
432
|
|
|
316
433
|
/**
|
|
@@ -332,7 +449,7 @@ function YearsDropdown(props) {
|
|
|
332
449
|
var newMonth = dateFns.setYear(new Date(displayMonth), Number(e.target.value));
|
|
333
450
|
props.onChange(newMonth);
|
|
334
451
|
};
|
|
335
|
-
return (
|
|
452
|
+
return (React__default["default"].createElement(Dropdown, { "aria-label": labelYearDropdown(), className: classNames.dropdown_month, style: styles.dropdown_month, onChange: handleChange, value: displayMonth.getFullYear(), caption: formatYearCaption(displayMonth, { locale: locale }) }, years.map(function (year) { return (React__default["default"].createElement("option", { key: year.getFullYear(), value: year.getFullYear() }, formatYearCaption(year, { locale: locale }))); })));
|
|
336
453
|
}
|
|
337
454
|
|
|
338
455
|
/**
|
|
@@ -384,7 +501,7 @@ function Caption(props) {
|
|
|
384
501
|
/** Render the caption for the displayed month. This component is used when `captionLayout="buttons"`. */
|
|
385
502
|
function CaptionLabel(props) {
|
|
386
503
|
var _a = useDayPicker(), locale = _a.locale, classNames = _a.classNames, styles = _a.styles, formatCaption = _a.formatters.formatCaption;
|
|
387
|
-
return (
|
|
504
|
+
return (React__default["default"].createElement("div", { key: "caption", className: classNames.caption_label, style: styles.caption_label, "aria-live": "polite", "aria-atomic": "true" }, formatCaption(props.displayMonth, { locale: locale })));
|
|
388
505
|
}
|
|
389
506
|
|
|
390
507
|
/** Returns true when the props are of type [[DayPickerMultiple]]. */
|
|
@@ -408,11 +525,78 @@ function isDayPickerSingle(props) {
|
|
|
408
525
|
*
|
|
409
526
|
* Access this context from the [[useSelectMultiple]] hook.
|
|
410
527
|
*/
|
|
411
|
-
var SelectMultipleContext =
|
|
528
|
+
var SelectMultipleContext = React__default["default"].createContext(undefined);
|
|
529
|
+
/** Provides the values for the [[SelectMultipleContext]]. */
|
|
530
|
+
function SelectMultipleProvider(props) {
|
|
531
|
+
if (!isDayPickerMultiple(props.initialProps)) {
|
|
532
|
+
var emptyContextValue = {
|
|
533
|
+
selected: undefined,
|
|
534
|
+
modifiers: {
|
|
535
|
+
selected: [],
|
|
536
|
+
disabled: []
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
return (React__default["default"].createElement(SelectMultipleContext.Provider, { value: emptyContextValue }, props.children));
|
|
540
|
+
}
|
|
541
|
+
return (React__default["default"].createElement(SelectMultipleProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
542
|
+
}
|
|
543
|
+
function SelectMultipleProviderInternal(_a) {
|
|
544
|
+
var initialProps = _a.initialProps, children = _a.children;
|
|
545
|
+
var selected = initialProps.selected;
|
|
546
|
+
var handleDayClick = function (day, modifiers, e) {
|
|
547
|
+
var _a, _b;
|
|
548
|
+
(_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, modifiers, e);
|
|
549
|
+
var isMinSelected = Boolean(initialProps.min &&
|
|
550
|
+
modifiers.selected &&
|
|
551
|
+
selected &&
|
|
552
|
+
selected.length === initialProps.min);
|
|
553
|
+
if (isMinSelected) {
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
var isMaxSelected = Boolean(initialProps.max &&
|
|
557
|
+
!modifiers.selected &&
|
|
558
|
+
selected &&
|
|
559
|
+
selected.length === initialProps.max);
|
|
560
|
+
if (isMaxSelected) {
|
|
561
|
+
return;
|
|
562
|
+
}
|
|
563
|
+
var days = selected ? __spreadArray([], selected, true) : [];
|
|
564
|
+
if (modifiers.selected) {
|
|
565
|
+
var index = days.findIndex(function (selectedDay) {
|
|
566
|
+
return dateFns.isSameDay(day, selectedDay);
|
|
567
|
+
});
|
|
568
|
+
days.splice(index, 1);
|
|
569
|
+
}
|
|
570
|
+
else {
|
|
571
|
+
days.push(day);
|
|
572
|
+
}
|
|
573
|
+
(_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, days, day, modifiers, e);
|
|
574
|
+
};
|
|
575
|
+
var modifiers = {
|
|
576
|
+
selected: [],
|
|
577
|
+
disabled: []
|
|
578
|
+
};
|
|
579
|
+
if (selected) {
|
|
580
|
+
modifiers.selected = selected;
|
|
581
|
+
modifiers.disabled = [
|
|
582
|
+
function disableDay(day) {
|
|
583
|
+
var isMaxSelected = initialProps.max &&
|
|
584
|
+
selected &&
|
|
585
|
+
selected.length > initialProps.max - 1;
|
|
586
|
+
var isSelected = selected === null || selected === void 0 ? void 0 : selected.some(function (selectedDay) {
|
|
587
|
+
return dateFns.isSameDay(selectedDay, day);
|
|
588
|
+
});
|
|
589
|
+
return Boolean(isMaxSelected && !isSelected);
|
|
590
|
+
}
|
|
591
|
+
];
|
|
592
|
+
}
|
|
593
|
+
var contextValue = { selected: selected, handleDayClick: handleDayClick, modifiers: modifiers };
|
|
594
|
+
return (React__default["default"].createElement(SelectMultipleContext.Provider, { value: contextValue }, children));
|
|
595
|
+
}
|
|
412
596
|
|
|
413
597
|
/** Hook to access the [[SelectMultipleContext]]. */
|
|
414
598
|
function useSelectMultiple() {
|
|
415
|
-
var context =
|
|
599
|
+
var context = React__default["default"].useContext(SelectMultipleContext);
|
|
416
600
|
if (!context) {
|
|
417
601
|
throw new Error('useSelectMultiple must be used within a SelectMultipleProvider');
|
|
418
602
|
}
|
|
@@ -420,52 +604,212 @@ function useSelectMultiple() {
|
|
|
420
604
|
}
|
|
421
605
|
|
|
422
606
|
/**
|
|
423
|
-
*
|
|
424
|
-
* range selection mode.
|
|
607
|
+
* Add a day to an existing range.
|
|
425
608
|
*
|
|
426
|
-
*
|
|
609
|
+
* The returned range takes in account the `undefined` values and if the added
|
|
610
|
+
* day is already present in the range.
|
|
427
611
|
*/
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
var context = React__namespace.useContext(SelectRangeContext);
|
|
433
|
-
if (!context) {
|
|
434
|
-
throw new Error('useSelectRange must be used within a SelectRangeProvider');
|
|
612
|
+
function addToRange(day, range) {
|
|
613
|
+
var _a = range || {}, from = _a.from, to = _a.to;
|
|
614
|
+
if (!from) {
|
|
615
|
+
return { from: day, to: day };
|
|
435
616
|
}
|
|
436
|
-
|
|
617
|
+
if (!to && dateFns.isSameDay(from, day)) {
|
|
618
|
+
return undefined;
|
|
619
|
+
}
|
|
620
|
+
if (!to && dateFns.isBefore(day, from)) {
|
|
621
|
+
return { from: day, to: from };
|
|
622
|
+
}
|
|
623
|
+
if (!to) {
|
|
624
|
+
return { from: from, to: day };
|
|
625
|
+
}
|
|
626
|
+
if (dateFns.isSameDay(to, day) && dateFns.isSameDay(from, day)) {
|
|
627
|
+
return undefined;
|
|
628
|
+
}
|
|
629
|
+
if (dateFns.isSameDay(to, day)) {
|
|
630
|
+
return { from: to, to: to };
|
|
631
|
+
}
|
|
632
|
+
if (dateFns.isSameDay(from, day)) {
|
|
633
|
+
return undefined;
|
|
634
|
+
}
|
|
635
|
+
if (dateFns.isAfter(from, day)) {
|
|
636
|
+
return { from: day, to: to };
|
|
637
|
+
}
|
|
638
|
+
return { from: from, to: day };
|
|
437
639
|
}
|
|
438
640
|
|
|
439
641
|
/**
|
|
440
|
-
* The
|
|
441
|
-
*
|
|
642
|
+
* The SelectRange context shares details about the selected days when in
|
|
643
|
+
* range selection mode.
|
|
442
644
|
*
|
|
443
|
-
* Access this context from the [[
|
|
645
|
+
* Access this context from the [[useSelectRange]] hook.
|
|
444
646
|
*/
|
|
445
|
-
var
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
}
|
|
647
|
+
var SelectRangeContext = React__default["default"].createContext(undefined);
|
|
648
|
+
/** Provides the values for the [[SelectRangeProvider]]. */
|
|
649
|
+
function SelectRangeProvider(props) {
|
|
650
|
+
if (!isDayPickerRange(props.initialProps)) {
|
|
651
|
+
var emptyContextValue = {
|
|
652
|
+
selected: undefined,
|
|
653
|
+
modifiers: {
|
|
654
|
+
selected: [],
|
|
655
|
+
range_start: [],
|
|
656
|
+
range_end: [],
|
|
657
|
+
range_middle: [],
|
|
658
|
+
disabled: []
|
|
659
|
+
}
|
|
660
|
+
};
|
|
661
|
+
return (React__default["default"].createElement(SelectRangeContext.Provider, { value: emptyContextValue }, props.children));
|
|
662
|
+
}
|
|
663
|
+
return (React__default["default"].createElement(SelectRangeProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
664
|
+
}
|
|
665
|
+
function SelectRangeProviderInternal(_a) {
|
|
666
|
+
var initialProps = _a.initialProps, children = _a.children;
|
|
667
|
+
var selected = initialProps.selected;
|
|
668
|
+
var min = initialProps.min;
|
|
669
|
+
var max = initialProps.max;
|
|
670
|
+
var handleDayClick = function (day, modifiers, e) {
|
|
671
|
+
var _a, _b;
|
|
672
|
+
(_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, modifiers, e);
|
|
673
|
+
var newValue = addToRange(day, selected);
|
|
674
|
+
if ((min || max) &&
|
|
675
|
+
selected &&
|
|
676
|
+
(newValue === null || newValue === void 0 ? void 0 : newValue.to) &&
|
|
677
|
+
newValue.from &&
|
|
678
|
+
newValue.from !== newValue.to) {
|
|
679
|
+
var diff = Math.abs(dateFns.differenceInCalendarDays(newValue === null || newValue === void 0 ? void 0 : newValue.to, newValue === null || newValue === void 0 ? void 0 : newValue.from));
|
|
680
|
+
if (min && diff < min) {
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
if (max && diff >= max) {
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
(_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, newValue, day, modifiers, e);
|
|
688
|
+
};
|
|
689
|
+
var modifiers = {
|
|
690
|
+
selected: [],
|
|
691
|
+
range_start: [],
|
|
692
|
+
range_end: [],
|
|
693
|
+
range_middle: [],
|
|
694
|
+
disabled: []
|
|
695
|
+
};
|
|
696
|
+
if (selected) {
|
|
697
|
+
modifiers.selected = [selected];
|
|
698
|
+
if (selected.from) {
|
|
699
|
+
modifiers.range_start = [selected.from];
|
|
700
|
+
if (selected.to) {
|
|
701
|
+
modifiers.range_middle = [
|
|
702
|
+
{
|
|
703
|
+
after: selected.from,
|
|
704
|
+
before: selected.to
|
|
705
|
+
}
|
|
706
|
+
];
|
|
707
|
+
if (max || min) {
|
|
708
|
+
modifiers.disabled = [
|
|
709
|
+
function (date) {
|
|
710
|
+
if (max &&
|
|
711
|
+
selected.to &&
|
|
712
|
+
selected.from &&
|
|
713
|
+
dateFns.isBefore(date, selected.from)) {
|
|
714
|
+
var diff = dateFns.differenceInCalendarDays(selected.to, date);
|
|
715
|
+
if (diff >= max) {
|
|
716
|
+
return true;
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
if (max &&
|
|
720
|
+
selected.to &&
|
|
721
|
+
selected.from &&
|
|
722
|
+
dateFns.isAfter(date, selected.to)) {
|
|
723
|
+
var diff = dateFns.differenceInCalendarDays(date, selected.from);
|
|
724
|
+
if (diff >= max) {
|
|
725
|
+
return true;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
if (min && selected.from && dateFns.isBefore(date, selected.from)) {
|
|
729
|
+
var diff = dateFns.differenceInCalendarDays(selected.from, date);
|
|
730
|
+
if (diff < min) {
|
|
731
|
+
return true;
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
if (min &&
|
|
735
|
+
selected.to &&
|
|
736
|
+
selected.from &&
|
|
737
|
+
dateFns.isAfter(date, selected.to)) {
|
|
738
|
+
var diff = dateFns.differenceInCalendarDays(date, selected.from);
|
|
739
|
+
if (diff < min) {
|
|
740
|
+
return true;
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
return false;
|
|
744
|
+
}
|
|
745
|
+
];
|
|
746
|
+
}
|
|
747
|
+
modifiers.range_end = [selected.to];
|
|
748
|
+
}
|
|
749
|
+
else {
|
|
750
|
+
modifiers.range_end = [selected.from];
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
return (React__default["default"].createElement(SelectRangeContext.Provider, { value: { selected: selected, handleDayClick: handleDayClick, modifiers: modifiers } }, children));
|
|
755
|
+
}
|
|
460
756
|
|
|
461
|
-
/**
|
|
462
|
-
function
|
|
463
|
-
|
|
757
|
+
/** Hook to access the [[SelectRangeContext]]. */
|
|
758
|
+
function useSelectRange() {
|
|
759
|
+
var context = React__default["default"].useContext(SelectRangeContext);
|
|
760
|
+
if (!context) {
|
|
761
|
+
throw new Error('useSelectRange must be used within a SelectRangeProvider');
|
|
762
|
+
}
|
|
763
|
+
return context;
|
|
464
764
|
}
|
|
465
765
|
|
|
466
|
-
/**
|
|
467
|
-
|
|
468
|
-
|
|
766
|
+
/**
|
|
767
|
+
* The SelectSingle context shares details about the selected days when in
|
|
768
|
+
* single selection mode.
|
|
769
|
+
*
|
|
770
|
+
* Access this context from the [[useSelectSingle]] hook.
|
|
771
|
+
*/
|
|
772
|
+
var SelectSingleContext = React__default["default"].createContext(undefined);
|
|
773
|
+
/** Provides the values for the [[SelectSingleProvider]]. */
|
|
774
|
+
function SelectSingleProvider(props) {
|
|
775
|
+
if (!isDayPickerSingle(props.initialProps)) {
|
|
776
|
+
var emptyContextValue = {
|
|
777
|
+
selected: undefined,
|
|
778
|
+
modifiers: { selected: [] }
|
|
779
|
+
};
|
|
780
|
+
return (React__default["default"].createElement(SelectSingleContext.Provider, { value: emptyContextValue }, props.children));
|
|
781
|
+
}
|
|
782
|
+
return (React__default["default"].createElement(SelectSingleProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
783
|
+
}
|
|
784
|
+
function SelectSingleProviderInternal(_a) {
|
|
785
|
+
var initialProps = _a.initialProps, children = _a.children;
|
|
786
|
+
var handleDayClick = function (day, dayModifiers, e) {
|
|
787
|
+
var _a, _b;
|
|
788
|
+
if (dayModifiers.selected && !initialProps.required) {
|
|
789
|
+
(_a = initialProps.onSelect) === null || _a === void 0 ? void 0 : _a.call(initialProps, undefined, day, dayModifiers, e);
|
|
790
|
+
return;
|
|
791
|
+
}
|
|
792
|
+
(_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, day, day, dayModifiers, e);
|
|
793
|
+
};
|
|
794
|
+
var modifiers = { selected: [] };
|
|
795
|
+
if (initialProps.selected) {
|
|
796
|
+
modifiers.selected = [initialProps.selected];
|
|
797
|
+
}
|
|
798
|
+
var contextValue = {
|
|
799
|
+
selected: initialProps.selected,
|
|
800
|
+
handleDayClick: handleDayClick,
|
|
801
|
+
modifiers: modifiers
|
|
802
|
+
};
|
|
803
|
+
return (React__default["default"].createElement(SelectSingleContext.Provider, { value: contextValue }, children));
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
/** Hook to access the [[SelectSingleContext]]. */
|
|
807
|
+
function useSelectSingle() {
|
|
808
|
+
var context = React__default["default"].useContext(SelectSingleContext);
|
|
809
|
+
if (!context) {
|
|
810
|
+
throw new Error('useSelectSingle must be used within a SelectSingleProvider');
|
|
811
|
+
}
|
|
812
|
+
return context;
|
|
469
813
|
}
|
|
470
814
|
|
|
471
815
|
/** Returns true if `matcher` is of type [[DateInterval]]. */
|
|
@@ -474,19 +818,20 @@ function isDateInterval(matcher) {
|
|
|
474
818
|
typeof matcher === 'object' &&
|
|
475
819
|
'before' in matcher &&
|
|
476
820
|
'after' in matcher);
|
|
477
|
-
}
|
|
478
|
-
|
|
821
|
+
}
|
|
479
822
|
/** Returns true if `value` is a [[DateRange]] type. */
|
|
480
823
|
function isDateRange(value) {
|
|
481
824
|
// TODO: Check if dates?!
|
|
482
825
|
return Boolean(value && typeof value === 'object' && 'from' in value);
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
826
|
+
}
|
|
827
|
+
/** Returns true if `value` is of type [[DateAfter]]. */
|
|
828
|
+
function isDateAfterType(value) {
|
|
829
|
+
return Boolean(value && typeof value === 'object' && 'after' in value);
|
|
830
|
+
}
|
|
831
|
+
/** Returns true if `value` is of type [[DateBefore]]. */
|
|
832
|
+
function isDateBeforeType(value) {
|
|
833
|
+
return Boolean(value && typeof value === 'object' && 'before' in value);
|
|
834
|
+
}
|
|
490
835
|
/** Returns true if `value` is a [[DayOfWeek]] type. */
|
|
491
836
|
function isDayOfWeekType(value) {
|
|
492
837
|
return Boolean(value && typeof value === 'object' && 'dayOfWeek' in value);
|
|
@@ -513,6 +858,14 @@ function isDateInRange(date, range) {
|
|
|
513
858
|
dateFns.differenceInCalendarDays(to, date) >= 0);
|
|
514
859
|
}
|
|
515
860
|
|
|
861
|
+
/** Returns true if `value` is a Date type. */
|
|
862
|
+
function isDateType(value) {
|
|
863
|
+
return dateFns.isDate(value);
|
|
864
|
+
}
|
|
865
|
+
/** Returns true if `value` is an array of valid dates. */
|
|
866
|
+
function isArrayOfDates(value) {
|
|
867
|
+
return Array.isArray(value) && value.every(dateFns.isDate);
|
|
868
|
+
}
|
|
516
869
|
/**
|
|
517
870
|
* Returns `true` whether the day matches against the given matchers.
|
|
518
871
|
*/
|
|
@@ -624,11 +977,67 @@ function useModifiers(date) {
|
|
|
624
977
|
*
|
|
625
978
|
* Access this context from the [[useFocus]] hook.
|
|
626
979
|
*/
|
|
627
|
-
var FocusContext =
|
|
980
|
+
var FocusContext = React__default["default"].createContext(undefined);
|
|
981
|
+
/** The provider for the [[FocusContext]]. */
|
|
982
|
+
function FocusProvider(_a) {
|
|
983
|
+
var children = _a.children;
|
|
984
|
+
var _b = React__default["default"].useState(), focusedDay = _b[0], setDay = _b[1];
|
|
985
|
+
var _c = useNavigation(), goToMonth = _c.goToMonth, displayMonths = _c.displayMonths;
|
|
986
|
+
var numberOfMonths = useDayPicker().numberOfMonths;
|
|
987
|
+
var blur = function () { return setDay(undefined); };
|
|
988
|
+
var focus = function (date) { return setDay(date); };
|
|
989
|
+
var switchMonth = function (date, offset) {
|
|
990
|
+
if (displayMonths.some(function (m) { return dateFns.isSameMonth(date, m); }))
|
|
991
|
+
return;
|
|
992
|
+
if (offset < 0) {
|
|
993
|
+
goToMonth(dateFns.addMonths(date, 1 + offset));
|
|
994
|
+
}
|
|
995
|
+
else {
|
|
996
|
+
goToMonth(date);
|
|
997
|
+
}
|
|
998
|
+
};
|
|
999
|
+
var focusDayBefore = function () {
|
|
1000
|
+
if (!focusedDay)
|
|
1001
|
+
return;
|
|
1002
|
+
var before = dateFns.addDays(focusedDay, -1);
|
|
1003
|
+
setDay(before);
|
|
1004
|
+
switchMonth(before, numberOfMonths * -1);
|
|
1005
|
+
};
|
|
1006
|
+
var focusDayAfter = function () {
|
|
1007
|
+
if (!focusedDay)
|
|
1008
|
+
return;
|
|
1009
|
+
var after = dateFns.addDays(focusedDay, 1);
|
|
1010
|
+
setDay(after);
|
|
1011
|
+
switchMonth(after, numberOfMonths);
|
|
1012
|
+
};
|
|
1013
|
+
var focusWeekBeforeDay = function () {
|
|
1014
|
+
if (!focusedDay)
|
|
1015
|
+
return;
|
|
1016
|
+
var up = dateFns.addWeeks(focusedDay, -1);
|
|
1017
|
+
setDay(up);
|
|
1018
|
+
switchMonth(up, numberOfMonths * -1);
|
|
1019
|
+
};
|
|
1020
|
+
var focusWeekAfterDay = function () {
|
|
1021
|
+
if (!focusedDay)
|
|
1022
|
+
return;
|
|
1023
|
+
var down = dateFns.addWeeks(focusedDay, 1);
|
|
1024
|
+
setDay(down);
|
|
1025
|
+
switchMonth(down, numberOfMonths);
|
|
1026
|
+
};
|
|
1027
|
+
var setters = {
|
|
1028
|
+
blur: blur,
|
|
1029
|
+
focus: focus,
|
|
1030
|
+
focusDayAfter: focusDayAfter,
|
|
1031
|
+
focusDayBefore: focusDayBefore,
|
|
1032
|
+
focusWeekAfterDay: focusWeekAfterDay,
|
|
1033
|
+
focusWeekBeforeDay: focusWeekBeforeDay
|
|
1034
|
+
};
|
|
1035
|
+
return (React__default["default"].createElement(FocusContext.Provider, { value: [focusedDay, setters] }, children));
|
|
1036
|
+
}
|
|
628
1037
|
|
|
629
1038
|
/** Hook to access the [[FocusContext]]. */
|
|
630
1039
|
function useFocus() {
|
|
631
|
-
var context =
|
|
1040
|
+
var context = React__default["default"].useContext(FocusContext);
|
|
632
1041
|
if (!context) {
|
|
633
1042
|
throw new Error('useFocus must be used within a FocusProvider');
|
|
634
1043
|
}
|
|
@@ -640,7 +1049,7 @@ function useDayFocus(date, buttonRef) {
|
|
|
640
1049
|
var _a = useFocus(), focusedDay = _a[0], _b = _a[1], focusDayAfter = _b.focusDayAfter, focusDayBefore = _b.focusDayBefore, focusWeekAfterDay = _b.focusWeekAfterDay, focusWeekBeforeDay = _b.focusWeekBeforeDay, blur = _b.blur, focus = _b.focus;
|
|
641
1050
|
var dir = useDayPicker().dir;
|
|
642
1051
|
// Focus the HTML element if this is the focused day.
|
|
643
|
-
|
|
1052
|
+
React__default["default"].useEffect(function () {
|
|
644
1053
|
var _a;
|
|
645
1054
|
if (!focusedDay)
|
|
646
1055
|
return;
|
|
@@ -838,16 +1247,16 @@ buttonRef) {
|
|
|
838
1247
|
* modifiers.
|
|
839
1248
|
*/
|
|
840
1249
|
function Day(props) {
|
|
841
|
-
var buttonRef =
|
|
1250
|
+
var buttonRef = React__default["default"].useRef(null);
|
|
842
1251
|
var day = useDay(props.date, props.displayMonth, buttonRef);
|
|
843
1252
|
var buttonProps = day.buttonProps, nonInteractiveProps = day.nonInteractiveProps;
|
|
844
1253
|
if (!buttonProps && !nonInteractiveProps) {
|
|
845
|
-
return
|
|
1254
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
846
1255
|
}
|
|
847
1256
|
if (nonInteractiveProps) {
|
|
848
|
-
return
|
|
1257
|
+
return React__default["default"].createElement("div", __assign({}, nonInteractiveProps));
|
|
849
1258
|
}
|
|
850
|
-
return
|
|
1259
|
+
return React__default["default"].createElement(Button, __assign({ ref: buttonRef }, buttonProps));
|
|
851
1260
|
}
|
|
852
1261
|
|
|
853
1262
|
/**
|
|
@@ -894,6 +1303,7 @@ function parseModifierProps(initialProps) {
|
|
|
894
1303
|
selected: [],
|
|
895
1304
|
disabled: [],
|
|
896
1305
|
hidden: [],
|
|
1306
|
+
today: [],
|
|
897
1307
|
range_end: [],
|
|
898
1308
|
range_middle: [],
|
|
899
1309
|
range_start: []
|
|
@@ -931,9 +1341,9 @@ function parseModifierProps(initialProps) {
|
|
|
931
1341
|
*/
|
|
932
1342
|
function DayContent(props) {
|
|
933
1343
|
var _a = useDayPicker(), locale = _a.locale, classNames = _a.classNames, styles = _a.styles, labelDay = _a.labels.labelDay, formatDay = _a.formatters.formatDay;
|
|
934
|
-
return (
|
|
935
|
-
|
|
936
|
-
|
|
1344
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1345
|
+
React__default["default"].createElement("span", { "aria-hidden": "true" }, formatDay(props.date, { locale: locale })),
|
|
1346
|
+
React__default["default"].createElement("span", { className: classNames.vhidden, style: styles.vhidden }, labelDay(props.date, props.modifiers, { locale: locale }))));
|
|
937
1347
|
}
|
|
938
1348
|
|
|
939
1349
|
/**
|
|
@@ -943,22 +1353,22 @@ function DayContent(props) {
|
|
|
943
1353
|
function Dropdown(props) {
|
|
944
1354
|
var onChange = props.onChange, value = props.value, children = props.children, caption = props.caption, className = props.className, style = props.style;
|
|
945
1355
|
var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles, IconDropdown = _a.components.IconDropdown;
|
|
946
|
-
return (
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
1356
|
+
return (React__default["default"].createElement("div", { className: className, style: style },
|
|
1357
|
+
React__default["default"].createElement("span", { className: classNames.vhidden }, props['aria-label']),
|
|
1358
|
+
React__default["default"].createElement("select", { "aria-label": props['aria-label'], className: classNames.dropdown, style: styles.dropdown, value: value, onChange: onChange }, children),
|
|
1359
|
+
React__default["default"].createElement("div", { className: classNames.caption_label, style: styles.caption_label, "aria-hidden": "true" },
|
|
950
1360
|
caption,
|
|
951
|
-
|
|
1361
|
+
React__default["default"].createElement(IconDropdown, { className: classNames.dropdown_icon, style: styles.dropdown_icon }))));
|
|
952
1362
|
}
|
|
953
1363
|
|
|
954
1364
|
/** Render the Footer component (empty as default).*/
|
|
955
1365
|
function Footer() {
|
|
956
1366
|
var _a = useDayPicker(), footer = _a.footer, styles = _a.styles, tfoot = _a.classNames.tfoot;
|
|
957
1367
|
if (!footer)
|
|
958
|
-
return
|
|
959
|
-
return (
|
|
960
|
-
|
|
961
|
-
|
|
1368
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
1369
|
+
return (React__default["default"].createElement("tfoot", { className: tfoot, style: styles.tfoot },
|
|
1370
|
+
React__default["default"].createElement("tr", null,
|
|
1371
|
+
React__default["default"].createElement("td", { colSpan: 8 }, footer))));
|
|
962
1372
|
}
|
|
963
1373
|
|
|
964
1374
|
/**
|
|
@@ -981,20 +1391,20 @@ function getWeekdays(locale) {
|
|
|
981
1391
|
function Head() {
|
|
982
1392
|
var _a = useDayPicker(), classNames = _a.classNames, styles = _a.styles, showWeekNumber = _a.showWeekNumber, locale = _a.locale, formatWeekdayName = _a.formatters.formatWeekdayName, labelWeekday = _a.labels.labelWeekday;
|
|
983
1393
|
var weekdays = getWeekdays(locale);
|
|
984
|
-
return (
|
|
985
|
-
|
|
986
|
-
showWeekNumber && (
|
|
987
|
-
weekdays.map(function (weekday, i) { return (
|
|
988
|
-
|
|
989
|
-
|
|
1394
|
+
return (React__default["default"].createElement("thead", { style: styles.head, className: classNames.head },
|
|
1395
|
+
React__default["default"].createElement("tr", { style: styles.head_row, className: classNames.head_row },
|
|
1396
|
+
showWeekNumber && (React__default["default"].createElement("th", { scope: "col", style: styles.head_cell, className: classNames.head_cell })),
|
|
1397
|
+
weekdays.map(function (weekday, i) { return (React__default["default"].createElement("th", { key: i, scope: "col", className: classNames.head_cell, style: styles.head_cell },
|
|
1398
|
+
React__default["default"].createElement("span", { className: classNames.vhidden, "aria-label": "" }, labelWeekday(weekday, { locale: locale })),
|
|
1399
|
+
React__default["default"].createElement("span", { "aria-hidden": true }, formatWeekdayName(weekday, { locale: locale })))); }))));
|
|
990
1400
|
}
|
|
991
1401
|
|
|
992
1402
|
/**
|
|
993
1403
|
* Render the icon in the styled drop-down.
|
|
994
1404
|
*/
|
|
995
1405
|
function IconDropdown(props) {
|
|
996
|
-
return (
|
|
997
|
-
|
|
1406
|
+
return (React__default["default"].createElement("svg", __assign({ width: "8px", height: "8px", viewBox: "0 0 120 120", "data-testid": "iconDropdown" }, props),
|
|
1407
|
+
React__default["default"].createElement("path", { d: "M4.22182541,48.2218254 C8.44222828,44.0014225 15.2388494,43.9273804 19.5496459,47.9996989 L19.7781746,48.2218254 L60,88.443 L100.221825,48.2218254 C104.442228,44.0014225 111.238849,43.9273804 115.549646,47.9996989 L115.778175,48.2218254 C119.998577,52.4422283 120.07262,59.2388494 116.000301,63.5496459 L115.778175,63.7781746 L67.7781746,111.778175 C63.5577717,115.998577 56.7611506,116.07262 52.4503541,112.000301 L52.2218254,111.778175 L4.22182541,63.7781746 C-0.0739418023,59.4824074 -0.0739418023,52.5175926 4.22182541,48.2218254 Z", fill: "currentColor", fillRule: "nonzero" })));
|
|
998
1408
|
}
|
|
999
1409
|
|
|
1000
1410
|
/**
|
|
@@ -1020,13 +1430,13 @@ function Row(props) {
|
|
|
1020
1430
|
var _a = useDayPicker(), styles = _a.styles, classNames = _a.classNames, showWeekNumber = _a.showWeekNumber, _b = _a.components, Day = _b.Day, WeekNumber = _b.WeekNumber;
|
|
1021
1431
|
var weekNumberCell;
|
|
1022
1432
|
if (showWeekNumber) {
|
|
1023
|
-
weekNumberCell = (
|
|
1024
|
-
|
|
1433
|
+
weekNumberCell = (React__default["default"].createElement("td", { className: classNames.cell, style: styles.cell },
|
|
1434
|
+
React__default["default"].createElement(WeekNumber, { number: props.weekNumber, dates: props.dates })));
|
|
1025
1435
|
}
|
|
1026
|
-
return (
|
|
1436
|
+
return (React__default["default"].createElement("tr", { className: classNames.row, style: styles.row },
|
|
1027
1437
|
weekNumberCell,
|
|
1028
|
-
props.dates.map(function (date) { return (
|
|
1029
|
-
|
|
1438
|
+
props.dates.map(function (date) { return (React__default["default"].createElement("td", { className: classNames.cell, style: styles.cell, key: dateFns.getUnixTime(date) },
|
|
1439
|
+
React__default["default"].createElement(Day, { displayMonth: props.displayMonth, date: date }))); })));
|
|
1030
1440
|
}
|
|
1031
1441
|
|
|
1032
1442
|
/**
|
|
@@ -1041,10 +1451,10 @@ function WeekNumber(props) {
|
|
|
1041
1451
|
};
|
|
1042
1452
|
var content = formatWeekNumber(Number(weekNumber), { locale: locale });
|
|
1043
1453
|
if (!onWeekNumberClick) {
|
|
1044
|
-
return (
|
|
1454
|
+
return (React__default["default"].createElement("span", { className: classNames.weeknumber, style: styles.weeknumber }, content));
|
|
1045
1455
|
}
|
|
1046
1456
|
var label = labelWeekNumber(Number(weekNumber), { locale: locale });
|
|
1047
|
-
return (
|
|
1457
|
+
return (React__default["default"].createElement(Button, { "aria-label": label, className: classNames.weeknumber, style: styles.weeknumber, onClick: handleClick }, content));
|
|
1048
1458
|
}
|
|
1049
1459
|
|
|
1050
1460
|
/**
|
|
@@ -1081,12 +1491,10 @@ var defaultClassNames = {
|
|
|
1081
1491
|
nav_button_next: 'rdp-nav_button_next',
|
|
1082
1492
|
nav_icon: 'rdp-nav_icon',
|
|
1083
1493
|
row: 'rdp-row',
|
|
1084
|
-
row_head: 'rdp-row_head',
|
|
1085
1494
|
weeknumber: 'rdp-weeknumber',
|
|
1086
1495
|
cell: 'rdp-cell',
|
|
1087
1496
|
day: 'rdp-day',
|
|
1088
|
-
day_outside: 'rdp-day_outside'
|
|
1089
|
-
day_today: 'rdp-day_today'
|
|
1497
|
+
day_outside: 'rdp-day_outside'
|
|
1090
1498
|
};
|
|
1091
1499
|
|
|
1092
1500
|
/**
|
|
@@ -1144,7 +1552,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
1144
1552
|
/**
|
|
1145
1553
|
* The default ARIA label for the day button.
|
|
1146
1554
|
*/
|
|
1147
|
-
var labelDay = function (day, options) {
|
|
1555
|
+
var labelDay = function (day, modifers, options) {
|
|
1148
1556
|
return dateFns.format(day, 'do MMMM (EEEE)', options);
|
|
1149
1557
|
};
|
|
1150
1558
|
|
|
@@ -1227,460 +1635,18 @@ function DayPickerProvider(props) {
|
|
|
1227
1635
|
}
|
|
1228
1636
|
initialProps.toYear; initialProps.fromYear; initialProps.toMonth; initialProps.fromMonth; var contextProps = __rest(initialProps, ["toYear", "fromYear", "toMonth", "fromMonth"]);
|
|
1229
1637
|
var context = __assign(__assign({}, contextProps), { captionLayout: captionLayout, fromDate: fromDate, toDate: toDate, today: today, locale: locale, modifierClassNames: (_e = initialProps.modifierClassNames) !== null && _e !== void 0 ? _e : {}, modifierPrefix: 'rdp-day_', modifiers: modifiers, numberOfMonths: numberOfMonths, styles: (_f = initialProps.styles) !== null && _f !== void 0 ? _f : {}, classNames: __assign(__assign({}, defaultClassNames), initialProps.classNames), formatters: __assign(__assign({}, index), initialProps.formatters), labels: __assign(__assign({}, index$1), initialProps.labels), components: __assign({ Caption: Caption, CaptionLabel: CaptionLabel, Day: Day, DayContent: DayContent, Dropdown: Dropdown, Footer: Footer, Head: Head, IconDropdown: IconDropdown, IconRight: IconRight, IconLeft: IconLeft, Row: Row, WeekNumber: WeekNumber }, initialProps.components) });
|
|
1230
|
-
return (
|
|
1231
|
-
}
|
|
1232
|
-
|
|
1233
|
-
/** The provider for the [[FocusContext]]. */
|
|
1234
|
-
function FocusProvider(_a) {
|
|
1235
|
-
var children = _a.children;
|
|
1236
|
-
var _b = React__namespace.useState(), focusedDay = _b[0], setDay = _b[1];
|
|
1237
|
-
var _c = useNavigation(), goToMonth = _c.goToMonth, displayMonths = _c.displayMonths;
|
|
1238
|
-
var numberOfMonths = useDayPicker().numberOfMonths;
|
|
1239
|
-
var blur = function () { return setDay(undefined); };
|
|
1240
|
-
var focus = function (date) { return setDay(date); };
|
|
1241
|
-
var switchMonth = function (date, offset) {
|
|
1242
|
-
if (displayMonths.some(function (m) { return dateFns.isSameMonth(date, m); }))
|
|
1243
|
-
return;
|
|
1244
|
-
if (offset < 0) {
|
|
1245
|
-
goToMonth(dateFns.addMonths(date, 1 + offset));
|
|
1246
|
-
}
|
|
1247
|
-
else {
|
|
1248
|
-
goToMonth(date);
|
|
1249
|
-
}
|
|
1250
|
-
};
|
|
1251
|
-
var focusDayBefore = function () {
|
|
1252
|
-
if (!focusedDay)
|
|
1253
|
-
return;
|
|
1254
|
-
var before = dateFns.addDays(focusedDay, -1);
|
|
1255
|
-
setDay(before);
|
|
1256
|
-
switchMonth(before, numberOfMonths * -1);
|
|
1257
|
-
};
|
|
1258
|
-
var focusDayAfter = function () {
|
|
1259
|
-
if (!focusedDay)
|
|
1260
|
-
return;
|
|
1261
|
-
var after = dateFns.addDays(focusedDay, 1);
|
|
1262
|
-
setDay(after);
|
|
1263
|
-
switchMonth(after, numberOfMonths);
|
|
1264
|
-
};
|
|
1265
|
-
var focusWeekBeforeDay = function () {
|
|
1266
|
-
if (!focusedDay)
|
|
1267
|
-
return;
|
|
1268
|
-
var up = dateFns.addWeeks(focusedDay, -1);
|
|
1269
|
-
setDay(up);
|
|
1270
|
-
switchMonth(up, numberOfMonths * -1);
|
|
1271
|
-
};
|
|
1272
|
-
var focusWeekAfterDay = function () {
|
|
1273
|
-
if (!focusedDay)
|
|
1274
|
-
return;
|
|
1275
|
-
var down = dateFns.addWeeks(focusedDay, 1);
|
|
1276
|
-
setDay(down);
|
|
1277
|
-
switchMonth(down, numberOfMonths);
|
|
1278
|
-
};
|
|
1279
|
-
var setters = {
|
|
1280
|
-
blur: blur,
|
|
1281
|
-
focus: focus,
|
|
1282
|
-
focusDayAfter: focusDayAfter,
|
|
1283
|
-
focusDayBefore: focusDayBefore,
|
|
1284
|
-
focusWeekAfterDay: focusWeekAfterDay,
|
|
1285
|
-
focusWeekBeforeDay: focusWeekBeforeDay
|
|
1286
|
-
};
|
|
1287
|
-
return (React__namespace.createElement(FocusContext.Provider, { value: [focusedDay, setters] }, children));
|
|
1288
|
-
}
|
|
1289
|
-
|
|
1290
|
-
/** Return the initial month according to the given options. */
|
|
1291
|
-
function getInitialMonth(context) {
|
|
1292
|
-
var month = context.month, defaultMonth = context.defaultMonth, today = context.today;
|
|
1293
|
-
var initialMonth = month || defaultMonth || today || new Date();
|
|
1294
|
-
var toDate = context.toDate, fromDate = context.fromDate, _a = context.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;
|
|
1295
|
-
// Fix the initialMonth if is after the to-date
|
|
1296
|
-
if (toDate && dateFns.differenceInCalendarMonths(toDate, initialMonth) < 0) {
|
|
1297
|
-
var offset = -1 * (numberOfMonths - 1);
|
|
1298
|
-
initialMonth = dateFns.addMonths(toDate, offset);
|
|
1299
|
-
}
|
|
1300
|
-
// Fix the initialMonth if is before the from-date
|
|
1301
|
-
if (fromDate && dateFns.differenceInCalendarMonths(initialMonth, fromDate) < 0) {
|
|
1302
|
-
initialMonth = fromDate;
|
|
1303
|
-
}
|
|
1304
|
-
return dateFns.startOfMonth(initialMonth);
|
|
1305
|
-
}
|
|
1306
|
-
|
|
1307
|
-
/**
|
|
1308
|
-
* Helper hook for using controlled/uncontrolled values from a component props.
|
|
1309
|
-
*
|
|
1310
|
-
* When the value is not controlled, pass `undefined` as `controlledValue` and
|
|
1311
|
-
* use the returned setter to update it.
|
|
1312
|
-
*
|
|
1313
|
-
* When the value is controlled, pass the controlled value as second
|
|
1314
|
-
* argument, which will be always returned as `value`.
|
|
1315
|
-
*/
|
|
1316
|
-
function useControlledValue(defaultValue, controlledValue) {
|
|
1317
|
-
var _a = React__default["default"].useState(defaultValue), uncontrolledValue = _a[0], setValue = _a[1];
|
|
1318
|
-
var value = controlledValue === undefined ? uncontrolledValue : controlledValue;
|
|
1319
|
-
return [value, setValue];
|
|
1320
|
-
}
|
|
1321
|
-
|
|
1322
|
-
/** Controls the navigation state. */
|
|
1323
|
-
function useNavigationState() {
|
|
1324
|
-
var context = useDayPicker();
|
|
1325
|
-
var initialMonth = getInitialMonth(context);
|
|
1326
|
-
var _a = useControlledValue(initialMonth, context.month), month = _a[0], setMonth = _a[1];
|
|
1327
|
-
var goToMonth = function (date) {
|
|
1328
|
-
if (context.disableNavigation)
|
|
1329
|
-
return;
|
|
1330
|
-
setMonth(date);
|
|
1331
|
-
};
|
|
1332
|
-
return [month, goToMonth];
|
|
1333
|
-
}
|
|
1334
|
-
|
|
1335
|
-
/**
|
|
1336
|
-
* Return the months to display in the component according to the number of
|
|
1337
|
-
* months and the from/to date.
|
|
1338
|
-
*/
|
|
1339
|
-
function getDisplayMonths(month, _a) {
|
|
1340
|
-
var reverseMonths = _a.reverseMonths, numberOfMonths = _a.numberOfMonths;
|
|
1341
|
-
var start = dateFns.startOfMonth(month);
|
|
1342
|
-
var end = dateFns.startOfMonth(dateFns.addMonths(start, numberOfMonths));
|
|
1343
|
-
var monthsDiff = dateFns.differenceInCalendarMonths(end, start);
|
|
1344
|
-
var months = [];
|
|
1345
|
-
for (var i = 0; i < monthsDiff; i++) {
|
|
1346
|
-
var nextMonth = dateFns.addMonths(start, i);
|
|
1347
|
-
months.push(nextMonth);
|
|
1348
|
-
}
|
|
1349
|
-
if (reverseMonths)
|
|
1350
|
-
months = months.reverse();
|
|
1351
|
-
return months;
|
|
1352
|
-
}
|
|
1353
|
-
|
|
1354
|
-
/**
|
|
1355
|
-
* Returns the next month the user can navigate to according to the given
|
|
1356
|
-
* options.
|
|
1357
|
-
*
|
|
1358
|
-
* Please note that the next month is not always the next calendar month:
|
|
1359
|
-
*
|
|
1360
|
-
* - if after the `toDate` range, is undefined;
|
|
1361
|
-
* - if the navigation is paged, is the number of months displayed ahead.
|
|
1362
|
-
*
|
|
1363
|
-
*/
|
|
1364
|
-
function getNextMonth(startingMonth, options) {
|
|
1365
|
-
if (options.disableNavigation) {
|
|
1366
|
-
return undefined;
|
|
1367
|
-
}
|
|
1368
|
-
var toDate = options.toDate, pagedNavigation = options.pagedNavigation, _a = options.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;
|
|
1369
|
-
var offset = pagedNavigation ? numberOfMonths : 1;
|
|
1370
|
-
var month = dateFns.startOfMonth(startingMonth);
|
|
1371
|
-
if (!toDate) {
|
|
1372
|
-
return dateFns.addMonths(month, offset);
|
|
1373
|
-
}
|
|
1374
|
-
var monthsDiff = dateFns.differenceInCalendarMonths(toDate, startingMonth);
|
|
1375
|
-
if (monthsDiff < numberOfMonths) {
|
|
1376
|
-
return undefined;
|
|
1377
|
-
}
|
|
1378
|
-
// Jump forward as the number of months when paged navigation
|
|
1379
|
-
return dateFns.addMonths(month, offset);
|
|
1380
|
-
}
|
|
1381
|
-
|
|
1382
|
-
/**
|
|
1383
|
-
* Returns the next previous the user can navigate to, according to the given
|
|
1384
|
-
* options.
|
|
1385
|
-
*
|
|
1386
|
-
* Please note that the previous month is not always the previous calendar
|
|
1387
|
-
* month:
|
|
1388
|
-
*
|
|
1389
|
-
* - if before the `fromDate` date, is `undefined`;
|
|
1390
|
-
* - if the navigation is paged, is the number of months displayed before.
|
|
1391
|
-
*
|
|
1392
|
-
*/
|
|
1393
|
-
function getPreviousMonth(startingMonth, options) {
|
|
1394
|
-
if (options.disableNavigation) {
|
|
1395
|
-
return undefined;
|
|
1396
|
-
}
|
|
1397
|
-
var fromDate = options.fromDate, pagedNavigation = options.pagedNavigation, _a = options.numberOfMonths, numberOfMonths = _a === void 0 ? 1 : _a;
|
|
1398
|
-
var offset = pagedNavigation ? numberOfMonths : 1;
|
|
1399
|
-
var month = dateFns.startOfMonth(startingMonth);
|
|
1400
|
-
if (!fromDate) {
|
|
1401
|
-
return dateFns.addMonths(month, -offset);
|
|
1402
|
-
}
|
|
1403
|
-
var monthsDiff = dateFns.differenceInCalendarMonths(month, fromDate);
|
|
1404
|
-
if (monthsDiff <= 0) {
|
|
1405
|
-
return undefined;
|
|
1406
|
-
}
|
|
1407
|
-
// Jump back as the number of months when paged navigation
|
|
1408
|
-
return dateFns.addMonths(month, -offset);
|
|
1409
|
-
}
|
|
1410
|
-
|
|
1411
|
-
/** Provides the values for the [[NavigationContext]]. */
|
|
1412
|
-
function NavigationProvider(props) {
|
|
1413
|
-
var context = useDayPicker();
|
|
1414
|
-
var _a = useNavigationState(), month = _a[0], goToMonth = _a[1];
|
|
1415
|
-
var displayMonths = getDisplayMonths(month, context);
|
|
1416
|
-
var nextMonth = getNextMonth(month, context);
|
|
1417
|
-
var previousMonth = getPreviousMonth(month, context);
|
|
1418
|
-
return (React__namespace.createElement(NavigationContext.Provider, { value: {
|
|
1419
|
-
month: month,
|
|
1420
|
-
displayMonths: displayMonths,
|
|
1421
|
-
goToMonth: goToMonth,
|
|
1422
|
-
previousMonth: previousMonth,
|
|
1423
|
-
nextMonth: nextMonth
|
|
1424
|
-
} }, props.children));
|
|
1425
|
-
}
|
|
1426
|
-
|
|
1427
|
-
function SelectMultipleProviderInternal(_a) {
|
|
1428
|
-
var initialProps = _a.initialProps, children = _a.children;
|
|
1429
|
-
var selected = initialProps.selected;
|
|
1430
|
-
var handleDayClick = function (day, modifiers, e) {
|
|
1431
|
-
var _a, _b;
|
|
1432
|
-
(_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, modifiers, e);
|
|
1433
|
-
var isMinSelected = Boolean(initialProps.min &&
|
|
1434
|
-
modifiers.selected &&
|
|
1435
|
-
selected &&
|
|
1436
|
-
selected.length === initialProps.min);
|
|
1437
|
-
if (isMinSelected) {
|
|
1438
|
-
return;
|
|
1439
|
-
}
|
|
1440
|
-
var isMaxSelected = Boolean(initialProps.max &&
|
|
1441
|
-
!modifiers.selected &&
|
|
1442
|
-
selected &&
|
|
1443
|
-
selected.length === initialProps.max);
|
|
1444
|
-
if (isMaxSelected) {
|
|
1445
|
-
return;
|
|
1446
|
-
}
|
|
1447
|
-
var days = selected ? __spreadArray([], selected, true) : [];
|
|
1448
|
-
if (modifiers.selected) {
|
|
1449
|
-
var index = days.findIndex(function (selectedDay) {
|
|
1450
|
-
return dateFns.isSameDay(day, selectedDay);
|
|
1451
|
-
});
|
|
1452
|
-
days.splice(index, 1);
|
|
1453
|
-
}
|
|
1454
|
-
else {
|
|
1455
|
-
days.push(day);
|
|
1456
|
-
}
|
|
1457
|
-
(_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, days, day, modifiers, e);
|
|
1458
|
-
};
|
|
1459
|
-
var modifiers = {
|
|
1460
|
-
selected: [],
|
|
1461
|
-
disabled: []
|
|
1462
|
-
};
|
|
1463
|
-
if (selected) {
|
|
1464
|
-
modifiers.selected = selected;
|
|
1465
|
-
modifiers.disabled = [
|
|
1466
|
-
function disableDay(day) {
|
|
1467
|
-
var isMaxSelected = initialProps.max &&
|
|
1468
|
-
selected &&
|
|
1469
|
-
selected.length > initialProps.max - 1;
|
|
1470
|
-
var isSelected = selected === null || selected === void 0 ? void 0 : selected.some(function (selectedDay) {
|
|
1471
|
-
return dateFns.isSameDay(selectedDay, day);
|
|
1472
|
-
});
|
|
1473
|
-
return Boolean(isMaxSelected && !isSelected);
|
|
1474
|
-
}
|
|
1475
|
-
];
|
|
1476
|
-
}
|
|
1477
|
-
var contextValue = { selected: selected, handleDayClick: handleDayClick, modifiers: modifiers };
|
|
1478
|
-
return (React__namespace.createElement(SelectMultipleContext.Provider, { value: contextValue }, children));
|
|
1479
|
-
}
|
|
1480
|
-
|
|
1481
|
-
/** Provides the values for the [[SelectMultipleContext]]. */
|
|
1482
|
-
function SelectMultipleProvider(props) {
|
|
1483
|
-
if (!isDayPickerMultiple(props.initialProps)) {
|
|
1484
|
-
var emptyContextValue = {
|
|
1485
|
-
selected: undefined,
|
|
1486
|
-
modifiers: {
|
|
1487
|
-
selected: [],
|
|
1488
|
-
disabled: []
|
|
1489
|
-
}
|
|
1490
|
-
};
|
|
1491
|
-
return (React__namespace.createElement(SelectMultipleContext.Provider, { value: emptyContextValue }, props.children));
|
|
1492
|
-
}
|
|
1493
|
-
return (React__namespace.createElement(SelectMultipleProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
1494
|
-
}
|
|
1495
|
-
|
|
1496
|
-
/**
|
|
1497
|
-
* Add a day to an existing range.
|
|
1498
|
-
*
|
|
1499
|
-
* The returned range takes in account the `undefined` values and if the added
|
|
1500
|
-
* day is already present in the range.
|
|
1501
|
-
*/
|
|
1502
|
-
function addToRange(day, range) {
|
|
1503
|
-
var _a = range || {}, from = _a.from, to = _a.to;
|
|
1504
|
-
if (!from) {
|
|
1505
|
-
return { from: day, to: day };
|
|
1506
|
-
}
|
|
1507
|
-
if (!to && dateFns.isSameDay(from, day)) {
|
|
1508
|
-
return undefined;
|
|
1509
|
-
}
|
|
1510
|
-
if (!to && dateFns.isBefore(day, from)) {
|
|
1511
|
-
return { from: day, to: from };
|
|
1512
|
-
}
|
|
1513
|
-
if (!to) {
|
|
1514
|
-
return { from: from, to: day };
|
|
1515
|
-
}
|
|
1516
|
-
if (dateFns.isSameDay(to, day) && dateFns.isSameDay(from, day)) {
|
|
1517
|
-
return undefined;
|
|
1518
|
-
}
|
|
1519
|
-
if (dateFns.isSameDay(to, day)) {
|
|
1520
|
-
return { from: to, to: to };
|
|
1521
|
-
}
|
|
1522
|
-
if (dateFns.isSameDay(from, day)) {
|
|
1523
|
-
return undefined;
|
|
1524
|
-
}
|
|
1525
|
-
if (dateFns.isAfter(from, day)) {
|
|
1526
|
-
return { from: day, to: to };
|
|
1527
|
-
}
|
|
1528
|
-
return { from: from, to: day };
|
|
1529
|
-
}
|
|
1530
|
-
|
|
1531
|
-
function SelectRangeProviderInternal(_a) {
|
|
1532
|
-
var initialProps = _a.initialProps, children = _a.children;
|
|
1533
|
-
var selected = initialProps.selected;
|
|
1534
|
-
var min = initialProps.min;
|
|
1535
|
-
var max = initialProps.max;
|
|
1536
|
-
var handleDayClick = function (day, modifiers, e) {
|
|
1537
|
-
var _a, _b;
|
|
1538
|
-
(_a = initialProps.onDayClick) === null || _a === void 0 ? void 0 : _a.call(initialProps, day, modifiers, e);
|
|
1539
|
-
var newValue = addToRange(day, selected);
|
|
1540
|
-
if ((min || max) &&
|
|
1541
|
-
selected &&
|
|
1542
|
-
(newValue === null || newValue === void 0 ? void 0 : newValue.to) &&
|
|
1543
|
-
newValue.from &&
|
|
1544
|
-
newValue.from !== newValue.to) {
|
|
1545
|
-
var diff = Math.abs(dateFns.differenceInCalendarDays(newValue === null || newValue === void 0 ? void 0 : newValue.to, newValue === null || newValue === void 0 ? void 0 : newValue.from));
|
|
1546
|
-
if (min && diff < min) {
|
|
1547
|
-
return;
|
|
1548
|
-
}
|
|
1549
|
-
if (max && diff >= max) {
|
|
1550
|
-
return;
|
|
1551
|
-
}
|
|
1552
|
-
}
|
|
1553
|
-
(_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, newValue, day, modifiers, e);
|
|
1554
|
-
};
|
|
1555
|
-
var modifiers = {
|
|
1556
|
-
selected: [],
|
|
1557
|
-
range_start: [],
|
|
1558
|
-
range_end: [],
|
|
1559
|
-
range_middle: [],
|
|
1560
|
-
disabled: []
|
|
1561
|
-
};
|
|
1562
|
-
if (selected) {
|
|
1563
|
-
modifiers.selected = [selected];
|
|
1564
|
-
if (selected.from) {
|
|
1565
|
-
modifiers.range_start = [selected.from];
|
|
1566
|
-
if (selected.to) {
|
|
1567
|
-
modifiers.range_middle = [
|
|
1568
|
-
{
|
|
1569
|
-
after: selected.from,
|
|
1570
|
-
before: selected.to
|
|
1571
|
-
}
|
|
1572
|
-
];
|
|
1573
|
-
if (max || min) {
|
|
1574
|
-
modifiers.disabled = [
|
|
1575
|
-
function (date) {
|
|
1576
|
-
if (max &&
|
|
1577
|
-
selected.to &&
|
|
1578
|
-
selected.from &&
|
|
1579
|
-
dateFns.isBefore(date, selected.from)) {
|
|
1580
|
-
var diff = dateFns.differenceInCalendarDays(selected.to, date);
|
|
1581
|
-
if (diff >= max) {
|
|
1582
|
-
return true;
|
|
1583
|
-
}
|
|
1584
|
-
}
|
|
1585
|
-
if (max &&
|
|
1586
|
-
selected.to &&
|
|
1587
|
-
selected.from &&
|
|
1588
|
-
dateFns.isAfter(date, selected.to)) {
|
|
1589
|
-
var diff = dateFns.differenceInCalendarDays(date, selected.from);
|
|
1590
|
-
if (diff >= max) {
|
|
1591
|
-
return true;
|
|
1592
|
-
}
|
|
1593
|
-
}
|
|
1594
|
-
if (min && selected.from && dateFns.isBefore(date, selected.from)) {
|
|
1595
|
-
var diff = dateFns.differenceInCalendarDays(selected.from, date);
|
|
1596
|
-
if (diff < min) {
|
|
1597
|
-
return true;
|
|
1598
|
-
}
|
|
1599
|
-
}
|
|
1600
|
-
if (min &&
|
|
1601
|
-
selected.to &&
|
|
1602
|
-
selected.from &&
|
|
1603
|
-
dateFns.isAfter(date, selected.to)) {
|
|
1604
|
-
var diff = dateFns.differenceInCalendarDays(date, selected.from);
|
|
1605
|
-
if (diff < min) {
|
|
1606
|
-
return true;
|
|
1607
|
-
}
|
|
1608
|
-
}
|
|
1609
|
-
return false;
|
|
1610
|
-
}
|
|
1611
|
-
];
|
|
1612
|
-
}
|
|
1613
|
-
modifiers.range_end = [selected.to];
|
|
1614
|
-
}
|
|
1615
|
-
else {
|
|
1616
|
-
modifiers.range_end = [selected.from];
|
|
1617
|
-
}
|
|
1618
|
-
}
|
|
1619
|
-
}
|
|
1620
|
-
return (React__namespace.createElement(SelectRangeContext.Provider, { value: { selected: selected, handleDayClick: handleDayClick, modifiers: modifiers } }, children));
|
|
1621
|
-
}
|
|
1622
|
-
|
|
1623
|
-
/** Provides the values for the [[SelectRangeProvider]]. */
|
|
1624
|
-
function SelectRangeProvider(props) {
|
|
1625
|
-
if (!isDayPickerRange(props.initialProps)) {
|
|
1626
|
-
var emptyContextValue = {
|
|
1627
|
-
selected: undefined,
|
|
1628
|
-
modifiers: {
|
|
1629
|
-
selected: [],
|
|
1630
|
-
range_start: [],
|
|
1631
|
-
range_end: [],
|
|
1632
|
-
range_middle: [],
|
|
1633
|
-
disabled: []
|
|
1634
|
-
}
|
|
1635
|
-
};
|
|
1636
|
-
return (React__namespace.createElement(SelectRangeContext.Provider, { value: emptyContextValue }, props.children));
|
|
1637
|
-
}
|
|
1638
|
-
return (React__namespace.createElement(SelectRangeProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
1639
|
-
}
|
|
1640
|
-
|
|
1641
|
-
function SelectSingleProviderInternal(_a) {
|
|
1642
|
-
var initialProps = _a.initialProps, children = _a.children;
|
|
1643
|
-
var handleDayClick = function (day, dayModifiers, e) {
|
|
1644
|
-
var _a, _b;
|
|
1645
|
-
if (dayModifiers.selected && !initialProps.required) {
|
|
1646
|
-
(_a = initialProps.onSelect) === null || _a === void 0 ? void 0 : _a.call(initialProps, undefined, day, dayModifiers, e);
|
|
1647
|
-
return;
|
|
1648
|
-
}
|
|
1649
|
-
(_b = initialProps.onSelect) === null || _b === void 0 ? void 0 : _b.call(initialProps, day, day, dayModifiers, e);
|
|
1650
|
-
};
|
|
1651
|
-
var modifiers = { selected: [] };
|
|
1652
|
-
if (initialProps.selected) {
|
|
1653
|
-
modifiers.selected = [initialProps.selected];
|
|
1654
|
-
}
|
|
1655
|
-
var contextValue = {
|
|
1656
|
-
selected: initialProps.selected,
|
|
1657
|
-
handleDayClick: handleDayClick,
|
|
1658
|
-
modifiers: modifiers
|
|
1659
|
-
};
|
|
1660
|
-
return (React__namespace.createElement(SelectSingleContext.Provider, { value: contextValue }, children));
|
|
1661
|
-
}
|
|
1662
|
-
|
|
1663
|
-
/** Provides the values for the [[SelectSingleProvider]]. */
|
|
1664
|
-
function SelectSingleProvider(props) {
|
|
1665
|
-
if (!isDayPickerSingle(props.initialProps)) {
|
|
1666
|
-
var emptyContextValue = {
|
|
1667
|
-
selected: undefined,
|
|
1668
|
-
modifiers: { selected: [] }
|
|
1669
|
-
};
|
|
1670
|
-
return (React__namespace.createElement(SelectSingleContext.Provider, { value: emptyContextValue }, props.children));
|
|
1671
|
-
}
|
|
1672
|
-
return (React__namespace.createElement(SelectSingleProviderInternal, { initialProps: props.initialProps, children: props.children }));
|
|
1638
|
+
return (React__default["default"].createElement(DayPickerContext.Provider, { value: context }, children));
|
|
1673
1639
|
}
|
|
1674
1640
|
|
|
1675
1641
|
/** Provide the value for all the context providers. */
|
|
1676
|
-
function
|
|
1642
|
+
function RootProvider(props) {
|
|
1677
1643
|
var children = props.children, initialProps = __rest(props, ["children"]);
|
|
1678
|
-
return (
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1644
|
+
return (React__default["default"].createElement(DayPickerProvider, { initialProps: initialProps },
|
|
1645
|
+
React__default["default"].createElement(NavigationProvider, null,
|
|
1646
|
+
React__default["default"].createElement(SelectSingleProvider, { initialProps: initialProps },
|
|
1647
|
+
React__default["default"].createElement(SelectMultipleProvider, { initialProps: initialProps },
|
|
1648
|
+
React__default["default"].createElement(SelectRangeProvider, { initialProps: initialProps },
|
|
1649
|
+
React__default["default"].createElement(FocusProvider, null, children)))))));
|
|
1684
1650
|
}
|
|
1685
1651
|
|
|
1686
1652
|
/**
|
|
@@ -1719,6 +1685,7 @@ function ContextProvider(props) {
|
|
|
1719
1685
|
* days that can be selected with the `min` or the `max` props.
|
|
1720
1686
|
* - `mode="range"`: users can select a range of days. Limit the amount of days
|
|
1721
1687
|
* in the range with the `min` or the `max` props.
|
|
1688
|
+
* - `mode="custom"`: implement your own selection mode with `onDayClick`.
|
|
1722
1689
|
*
|
|
1723
1690
|
* These selection modes should cover the most common use cases. In case you
|
|
1724
1691
|
* need a more refined way of selecting days, use `mode="custom"`. Use the
|
|
@@ -1742,8 +1709,8 @@ function ContextProvider(props) {
|
|
|
1742
1709
|
*
|
|
1743
1710
|
* ### Styling
|
|
1744
1711
|
*
|
|
1745
|
-
* DayPicker comes with a default, basic style in `react-day-picker/style` –
|
|
1746
|
-
*
|
|
1712
|
+
* DayPicker comes with a default, basic style in `react-day-picker/style` – use
|
|
1713
|
+
* it as template for your own style.
|
|
1747
1714
|
*
|
|
1748
1715
|
* If you are using CSS modules, pass the imported styles object the
|
|
1749
1716
|
* `classNames` props.
|
|
@@ -1769,8 +1736,8 @@ function ContextProvider(props) {
|
|
|
1769
1736
|
* ```
|
|
1770
1737
|
*/
|
|
1771
1738
|
function DayPicker(props) {
|
|
1772
|
-
return (
|
|
1773
|
-
|
|
1739
|
+
return (React__default["default"].createElement(RootProvider, __assign({}, props),
|
|
1740
|
+
React__default["default"].createElement(Root, null)));
|
|
1774
1741
|
}
|
|
1775
1742
|
|
|
1776
1743
|
/** Returns true when the props are of type [[DayPickerCustom]]. */
|
|
@@ -1788,16 +1755,15 @@ function useInput(options) {
|
|
|
1788
1755
|
if (options === void 0) { options = {}; }
|
|
1789
1756
|
var _a = options.locale, locale = _a === void 0 ? enUS__default["default"] : _a, required = options.required, _b = options.format, format$1 = _b === void 0 ? 'PP' : _b, defaultSelected = options.defaultSelected, _c = options.today, today = _c === void 0 ? new Date() : _c;
|
|
1790
1757
|
var _d = parseFromToProps(options), fromDate = _d.fromDate, toDate = _d.toDate;
|
|
1791
|
-
var min = required ? 1 : 0;
|
|
1792
1758
|
// Shortcut to the DateFns functions
|
|
1793
1759
|
var parseValue = function (value) { return dateFns.parse(value, format$1, today, { locale: locale }); };
|
|
1794
1760
|
// Initialize states
|
|
1795
|
-
var _e =
|
|
1796
|
-
var _f =
|
|
1761
|
+
var _e = React__default["default"].useState(defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : today), month = _e[0], setMonth = _e[1];
|
|
1762
|
+
var _f = React__default["default"].useState(defaultSelected), selectedDay = _f[0], setSelectedDay = _f[1];
|
|
1797
1763
|
var defaultInputValue = defaultSelected
|
|
1798
1764
|
? dateFns.format(defaultSelected, format$1, { locale: locale })
|
|
1799
1765
|
: '';
|
|
1800
|
-
var _g =
|
|
1766
|
+
var _g = React__default["default"].useState(defaultInputValue), inputValue = _g[0], setInputValue = _g[1];
|
|
1801
1767
|
var reset = function () {
|
|
1802
1768
|
setSelectedDay(defaultSelected);
|
|
1803
1769
|
setMonth(defaultSelected !== null && defaultSelected !== void 0 ? defaultSelected : today);
|
|
@@ -1865,8 +1831,7 @@ function useInput(options) {
|
|
|
1865
1831
|
locale: locale,
|
|
1866
1832
|
fromDate: options === null || options === void 0 ? void 0 : options.fromDate,
|
|
1867
1833
|
toDate: options === null || options === void 0 ? void 0 : options.toDate,
|
|
1868
|
-
today: today
|
|
1869
|
-
min: min
|
|
1834
|
+
today: today
|
|
1870
1835
|
};
|
|
1871
1836
|
var inputProps = {
|
|
1872
1837
|
onBlur: handleBlur,
|
|
@@ -1881,7 +1846,6 @@ function useInput(options) {
|
|
|
1881
1846
|
exports.Button = Button;
|
|
1882
1847
|
exports.Caption = Caption;
|
|
1883
1848
|
exports.CaptionLabel = CaptionLabel;
|
|
1884
|
-
exports.ContextProvider = ContextProvider;
|
|
1885
1849
|
exports.Day = Day;
|
|
1886
1850
|
exports.DayContent = DayContent;
|
|
1887
1851
|
exports.DayPicker = DayPicker;
|
|
@@ -1898,22 +1862,24 @@ exports.Navigation = Navigation;
|
|
|
1898
1862
|
exports.NavigationContext = NavigationContext;
|
|
1899
1863
|
exports.NavigationProvider = NavigationProvider;
|
|
1900
1864
|
exports.Root = Root;
|
|
1865
|
+
exports.RootProvider = RootProvider;
|
|
1901
1866
|
exports.Row = Row;
|
|
1902
1867
|
exports.SelectMultipleContext = SelectMultipleContext;
|
|
1903
1868
|
exports.SelectMultipleProvider = SelectMultipleProvider;
|
|
1869
|
+
exports.SelectMultipleProviderInternal = SelectMultipleProviderInternal;
|
|
1904
1870
|
exports.SelectRangeContext = SelectRangeContext;
|
|
1905
1871
|
exports.SelectRangeProvider = SelectRangeProvider;
|
|
1872
|
+
exports.SelectRangeProviderInternal = SelectRangeProviderInternal;
|
|
1906
1873
|
exports.SelectSingleContext = SelectSingleContext;
|
|
1907
1874
|
exports.SelectSingleProvider = SelectSingleProvider;
|
|
1875
|
+
exports.SelectSingleProviderInternal = SelectSingleProviderInternal;
|
|
1908
1876
|
exports.Table = Table;
|
|
1909
1877
|
exports.WeekNumber = WeekNumber;
|
|
1910
1878
|
exports.YearsDropdown = YearsDropdown;
|
|
1911
|
-
exports.isArrayOfDates = isArrayOfDates;
|
|
1912
1879
|
exports.isDateAfterType = isDateAfterType;
|
|
1913
1880
|
exports.isDateBeforeType = isDateBeforeType;
|
|
1914
1881
|
exports.isDateInterval = isDateInterval;
|
|
1915
1882
|
exports.isDateRange = isDateRange;
|
|
1916
|
-
exports.isDateType = isDateType;
|
|
1917
1883
|
exports.isDayOfWeekType = isDayOfWeekType;
|
|
1918
1884
|
exports.isDayPickerCustom = isDayPickerCustom;
|
|
1919
1885
|
exports.isDayPickerMultiple = isDayPickerMultiple;
|