@uxf/datepicker 1.2.0 → 10.0.0-beta.9
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/contexts/date-picker-context.d.ts +1 -1
- package/contexts/date-picker-context.js +18 -19
- package/contexts/date-range-picker-context.d.ts +1 -1
- package/contexts/date-range-picker-context.js +21 -21
- package/contexts/time-picker-context.d.ts +1 -1
- package/contexts/time-picker-context.js +9 -10
- package/hooks/use-date-picker-navigation.js +32 -36
- package/hooks/use-date-picker-navigation.test.js +37 -46
- package/hooks/use-date-picker.d.ts +1 -1
- package/hooks/use-date-picker.js +66 -86
- package/hooks/use-date-picker.test.js +25 -32
- package/hooks/use-date-range-picker.d.ts +2 -1
- package/hooks/use-date-range-picker.js +94 -112
- package/hooks/use-date-range-picker.test.js +39 -50
- package/hooks/use-day.d.ts +3 -1
- package/hooks/use-day.js +13 -14
- package/hooks/use-day.test.js +44 -44
- package/hooks/use-decade.js +11 -15
- package/hooks/use-decade.test.js +13 -18
- package/hooks/use-hour.js +6 -8
- package/hooks/use-hour.test.js +26 -31
- package/hooks/use-hours.d.ts +1 -1
- package/hooks/use-hours.js +7 -11
- package/hooks/use-hours.test.js +8 -11
- package/hooks/use-minute.js +6 -8
- package/hooks/use-minute.test.js +26 -31
- package/hooks/use-minutes.d.ts +1 -1
- package/hooks/use-minutes.js +7 -11
- package/hooks/use-minutes.test.js +8 -11
- package/hooks/use-month.js +12 -14
- package/hooks/use-month.test.js +17 -22
- package/hooks/use-time-picker.d.ts +2 -2
- package/hooks/use-time-picker.js +43 -61
- package/hooks/use-time-picker.test.js +31 -40
- package/hooks/use-year.js +8 -10
- package/hooks/use-year.test.js +13 -18
- package/package.json +5 -20
- package/utils/can-select-range.js +9 -11
- package/utils/can-select-range.test.js +10 -11
- package/utils/dayjs-en.js +8 -5
- package/utils/get-current-year-month-and-date.js +2 -3
- package/utils/get-current-year-month-and-date.test.js +4 -5
- package/utils/get-date-month-and-year.js +6 -7
- package/utils/get-date-month-and-year.test.js +2 -3
- package/utils/get-days.d.ts +1 -1
- package/utils/get-days.js +20 -47
- package/utils/get-days.test.js +6 -7
- package/utils/get-each.js +3 -5
- package/utils/get-each.test.js +6 -7
- package/utils/get-initial-months.js +7 -8
- package/utils/get-initial-months.test.js +5 -6
- package/utils/get-months.d.ts +1 -1
- package/utils/get-months.js +8 -10
- package/utils/get-months.test.js +5 -6
- package/utils/get-next-active-month.js +5 -6
- package/utils/get-next-active-month.test.js +8 -9
- package/utils/get-weekday-labels.js +6 -8
- package/utils/get-weekday-labels.test.js +8 -9
- package/utils/get-years.d.ts +1 -1
- package/utils/get-years.js +5 -7
- package/utils/get-years.test.js +5 -6
- package/utils/is-browser.js +0 -1
- package/utils/is-date-blocked.js +5 -7
- package/utils/is-date-blocked.test.js +3 -4
- package/utils/is-date-hovered.js +6 -8
- package/utils/is-date-hovered.test.js +9 -10
- package/utils/is-date-inside-range.d.ts +1 -0
- package/utils/is-date-inside-range.js +11 -0
- package/utils/is-date-selected.test.js +10 -11
- package/utils/is-end-date.js +1 -2
- package/utils/is-end-date.test.js +2 -3
- package/utils/is-first-or-last-selected-date.js +1 -2
- package/utils/is-first-or-last-selected-date.test.js +2 -3
- package/utils/is-in-unavailable-dates.js +3 -5
- package/utils/is-in-unavailable-dates.test.js +2 -3
- package/utils/is-start-date.js +1 -2
- package/utils/is-start-date.test.js +2 -3
- package/utils/types.d.ts +1 -1
- package/utils/types.js +0 -1
- package/utils/is-date-selected.d.ts +0 -1
- package/utils/is-date-selected.js +0 -12
package/hooks/use-date-picker.js
CHANGED
|
@@ -1,102 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
-
if (!m) return o;
|
|
16
|
-
var i = m.call(o), r, ar = [], e;
|
|
17
|
-
try {
|
|
18
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
-
}
|
|
20
|
-
catch (error) { e = { error: error }; }
|
|
21
|
-
finally {
|
|
22
|
-
try {
|
|
23
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
-
}
|
|
25
|
-
finally { if (e) throw e.error; }
|
|
26
|
-
}
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
3
|
exports.useDatePicker = void 0;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
function useDatePicker(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var _g = __read((0, react_1.useState)(null), 2), hoveredDate = _g[0], setHoveredDate = _g[1];
|
|
48
|
-
var _h = __read((0, react_1.useState)(selectedDate), 2), focusedDate = _h[0], setFocusedDate = _h[1];
|
|
49
|
-
var disabledDatesByUser = function (date) {
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const get_initial_months_1 = require("../utils/get-initial-months");
|
|
6
|
+
const is_date_blocked_1 = require("../utils/is-date-blocked");
|
|
7
|
+
const is_date_hovered_1 = require("../utils/is-date-hovered");
|
|
8
|
+
const is_in_unavailable_dates_1 = require("../utils/is-in-unavailable-dates");
|
|
9
|
+
const is_start_date_1 = require("../utils/is-start-date");
|
|
10
|
+
const use_date_picker_navigation_1 = require("./use-date-picker-navigation");
|
|
11
|
+
const is_browser_1 = require("../utils/is-browser");
|
|
12
|
+
const dayjs_en_1 = require("../utils/dayjs-en");
|
|
13
|
+
function useDatePicker({ firstDayOfWeek = 0, initialVisibleMonth, isDateBlocked: isDateBlockedProps = () => false, maxBookingDate, minBookingDate, numberOfMonths = 1, onDateChange, selectedDate, unavailableDates = [], }) {
|
|
14
|
+
const [activeMonths, setActiveMonths] = (0, react_1.useState)(() => selectedDate
|
|
15
|
+
? (0, get_initial_months_1.getInitialMonths)(numberOfMonths, selectedDate)
|
|
16
|
+
: (0, get_initial_months_1.getInitialMonths)(numberOfMonths, initialVisibleMonth || null));
|
|
17
|
+
const [hoveredDate, setHoveredDate] = (0, react_1.useState)(null);
|
|
18
|
+
const [focusedDate, setFocusedDate] = (0, react_1.useState)(selectedDate);
|
|
19
|
+
const disabledDatesByUser = (date) => {
|
|
50
20
|
return (0, is_in_unavailable_dates_1.isInUnavailableDates)(unavailableDates, date) || isDateBlockedProps(date);
|
|
51
21
|
};
|
|
52
|
-
|
|
22
|
+
const onDateFocus = (0, react_1.useCallback)((date) => {
|
|
53
23
|
setFocusedDate(date);
|
|
54
|
-
if (!focusedDate || !activeMonths.map(
|
|
24
|
+
if (!focusedDate || !activeMonths.map((m) => m.month).includes((0, dayjs_en_1.dayjsEn)(date).month())) {
|
|
55
25
|
setActiveMonths((0, get_initial_months_1.getInitialMonths)(numberOfMonths, date));
|
|
56
26
|
}
|
|
57
27
|
}, [activeMonths, focusedDate, numberOfMonths]);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
isDateBlocked: disabledDatesByUser,
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
(0, react_1.useEffect)(function () {
|
|
28
|
+
const _isDateSelected = (date) => (0, is_start_date_1.isStartDate)(date, selectedDate);
|
|
29
|
+
const _isDateBlocked = (date) => (0, is_date_blocked_1.isDateBlocked)({
|
|
30
|
+
date,
|
|
31
|
+
minBookingDate,
|
|
32
|
+
maxBookingDate,
|
|
33
|
+
startDate: selectedDate,
|
|
34
|
+
endDate: selectedDate,
|
|
35
|
+
minBookingDays: 1,
|
|
36
|
+
isDateBlockedFn: disabledDatesByUser,
|
|
37
|
+
});
|
|
38
|
+
const isDateFocused = (date) => (focusedDate ? (0, dayjs_en_1.dayjsEn)(date).isSame(focusedDate, "day") : false);
|
|
39
|
+
const _isDateHovered = (date) => (0, is_date_hovered_1.isDateHovered)({
|
|
40
|
+
date,
|
|
41
|
+
hoveredDate,
|
|
42
|
+
startDate: selectedDate,
|
|
43
|
+
endDate: selectedDate,
|
|
44
|
+
minBookingDays: 1,
|
|
45
|
+
exactMinBookingDays: false,
|
|
46
|
+
isDateBlocked: disabledDatesByUser,
|
|
47
|
+
});
|
|
48
|
+
(0, react_1.useEffect)(() => {
|
|
83
49
|
if (!is_browser_1.isBrowser) {
|
|
84
50
|
return;
|
|
85
51
|
}
|
|
86
52
|
function handleKeyDown(e) {
|
|
87
53
|
if ((e.key === "ArrowRight" || e.key === "ArrowLeft" || e.key === "ArrowDown" || e.key === "ArrowUp") &&
|
|
88
54
|
!focusedDate) {
|
|
89
|
-
|
|
55
|
+
const activeMonth = activeMonths[0];
|
|
90
56
|
onDateFocus(activeMonth.date);
|
|
91
57
|
setActiveMonths((0, get_initial_months_1.getInitialMonths)(numberOfMonths, activeMonth.date));
|
|
92
58
|
}
|
|
93
59
|
}
|
|
94
60
|
window.addEventListener("keydown", handleKeyDown);
|
|
95
|
-
return
|
|
61
|
+
return () => {
|
|
96
62
|
window.removeEventListener("keydown", handleKeyDown);
|
|
97
63
|
};
|
|
98
64
|
}, [activeMonths, focusedDate, numberOfMonths, onDateFocus]);
|
|
99
|
-
|
|
65
|
+
const onReset = (0, react_1.useCallback)(() => {
|
|
100
66
|
onDateChange(null);
|
|
101
67
|
}, [onDateChange]);
|
|
102
68
|
function onDateSelect(date) {
|
|
@@ -112,7 +78,7 @@ function useDatePicker(_a) {
|
|
|
112
78
|
setHoveredDate(null);
|
|
113
79
|
}
|
|
114
80
|
else {
|
|
115
|
-
|
|
81
|
+
const isNotBlocked = !_isDateBlocked(date) || (selectedDate && (0, dayjs_en_1.dayjsEn)(date).isSame(selectedDate, "day"));
|
|
116
82
|
if (isNotBlocked) {
|
|
117
83
|
setHoveredDate(date);
|
|
118
84
|
}
|
|
@@ -121,14 +87,28 @@ function useDatePicker(_a) {
|
|
|
121
87
|
}
|
|
122
88
|
}
|
|
123
89
|
}
|
|
124
|
-
return
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
90
|
+
return {
|
|
91
|
+
...(0, use_date_picker_navigation_1.useDatePickerNavigation)({
|
|
92
|
+
activeMonths,
|
|
93
|
+
maxBookingDate,
|
|
94
|
+
minBookingDate,
|
|
95
|
+
numberOfMonths,
|
|
96
|
+
setActiveMonths,
|
|
97
|
+
setFocusedDate,
|
|
98
|
+
}),
|
|
99
|
+
activeMonths,
|
|
100
|
+
firstDayOfWeek,
|
|
101
|
+
focusedDate,
|
|
102
|
+
hoveredDate,
|
|
103
|
+
isDateBlocked: _isDateBlocked,
|
|
104
|
+
isDateFocused,
|
|
105
|
+
isDateHovered: _isDateHovered,
|
|
106
|
+
isDateSelected: _isDateSelected,
|
|
107
|
+
numberOfMonths,
|
|
108
|
+
onDateFocus,
|
|
109
|
+
onDateHover,
|
|
110
|
+
onDateSelect,
|
|
111
|
+
onResetDates: onReset,
|
|
112
|
+
};
|
|
132
113
|
}
|
|
133
114
|
exports.useDatePicker = useDatePicker;
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWRhdGUtcGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZS1kYXRlLXBpY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBeUQ7QUFDekQsa0VBQStEO0FBQy9ELDREQUF5RDtBQUN6RCw0REFBeUQ7QUFDekQsNEVBQXdFO0FBQ3hFLHdEQUFxRDtBQUVyRCwyRUFBMEc7QUFDMUcsa0RBQWdEO0FBQ2hELDhDQUE0QztBQWdDNUMsU0FBZ0IsYUFBYSxDQUFDLEVBVVQ7UUFUakIsc0JBQWtCLEVBQWxCLGNBQWMsbUJBQUcsQ0FBQyxLQUFBLEVBQ2xCLG1CQUFtQix5QkFBQSxFQUNuQixxQkFBK0MsRUFBaEMsa0JBQWtCLG1CQUFHLGNBQU0sT0FBQSxLQUFLLEVBQUwsQ0FBSyxLQUFBLEVBQy9DLGNBQWMsb0JBQUEsRUFDZCxjQUFjLG9CQUFBLEVBQ2Qsc0JBQWtCLEVBQWxCLGNBQWMsbUJBQUcsQ0FBQyxLQUFBLEVBQ2xCLFlBQVksa0JBQUEsRUFDWixZQUFZLGtCQUFBLEVBQ1osd0JBQXFCLEVBQXJCLGdCQUFnQixtQkFBRyxFQUFFLEtBQUE7SUFFZixJQUFBLEtBQUEsT0FBa0MsSUFBQSxnQkFBUSxFQUFDO1FBQzdDLE9BQUEsWUFBWTtZQUNSLENBQUMsQ0FBQyxJQUFBLHFDQUFnQixFQUFDLGNBQWMsRUFBRSxZQUFZLENBQUM7WUFDaEQsQ0FBQyxDQUFDLElBQUEscUNBQWdCLEVBQUMsY0FBYyxFQUFFLG1CQUFtQixJQUFJLElBQUksQ0FBQztJQUZuRSxDQUVtRSxDQUN0RSxJQUFBLEVBSk0sWUFBWSxRQUFBLEVBQUUsZUFBZSxRQUluQyxDQUFDO0lBQ0ksSUFBQSxLQUFBLE9BQWdDLElBQUEsZ0JBQVEsRUFBYyxJQUFJLENBQUMsSUFBQSxFQUExRCxXQUFXLFFBQUEsRUFBRSxjQUFjLFFBQStCLENBQUM7SUFDNUQsSUFBQSxL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
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
test("base data",
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
});
|
|
14
|
-
}).result;
|
|
3
|
+
const react_hooks_1 = require("@testing-library/react-hooks");
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const use_date_picker_1 = require("./use-date-picker");
|
|
6
|
+
test("base data", () => {
|
|
7
|
+
const BASE_DATE = new Date("2021-09-15");
|
|
8
|
+
const { result } = (0, react_hooks_1.renderHook)(() => (0, use_date_picker_1.useDatePicker)({
|
|
9
|
+
selectedDate: BASE_DATE,
|
|
10
|
+
onDateChange: () => undefined,
|
|
11
|
+
minBookingDate: new Date("2020-01-01"),
|
|
12
|
+
}));
|
|
15
13
|
expect(result.current.firstDayOfWeek).toBe(0);
|
|
16
14
|
expect(result.current.focusedDate).toStrictEqual(BASE_DATE);
|
|
17
15
|
expect(result.current.hoveredDate).toBe(null);
|
|
@@ -25,54 +23,49 @@ test("base data", function () {
|
|
|
25
23
|
expect(result.current.isDateBlocked(new Date("2020-01-01"))).toBe(false);
|
|
26
24
|
expect(result.current.isDateBlocked(new Date("2019-12-31"))).toBe(true);
|
|
27
25
|
});
|
|
28
|
-
test("date focus",
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}).result;
|
|
34
|
-
var NEW_DATE = new Date("2022-12-22");
|
|
26
|
+
test("date focus", () => {
|
|
27
|
+
const BASE_DATE = new Date("2021-09-15");
|
|
28
|
+
const { result: state } = (0, react_hooks_1.renderHook)(() => (0, react_1.useState)(BASE_DATE));
|
|
29
|
+
const { result } = (0, react_hooks_1.renderHook)(() => (0, use_date_picker_1.useDatePicker)({ selectedDate: state.current[0], onDateChange: (date) => state.current[1](date) }));
|
|
30
|
+
const NEW_DATE = new Date("2022-12-22");
|
|
35
31
|
expect(result.current.isDateFocused(BASE_DATE)).toBe(true);
|
|
36
32
|
expect(result.current.isDateFocused(NEW_DATE)).toBe(false);
|
|
37
|
-
(0, react_hooks_1.act)(
|
|
33
|
+
(0, react_hooks_1.act)(() => {
|
|
38
34
|
result.current.onDateFocus(NEW_DATE);
|
|
39
35
|
});
|
|
40
36
|
expect(result.current.isDateFocused(NEW_DATE)).toBe(true);
|
|
41
37
|
expect(result.current.isDateFocused(BASE_DATE)).toBe(false);
|
|
42
38
|
});
|
|
43
|
-
test("date select",
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}), result = _a.result, rerender = _a.rerender;
|
|
49
|
-
var NEW_DATE = new Date("2022-12-22");
|
|
39
|
+
test("date select", () => {
|
|
40
|
+
const BASE_DATE = new Date("2021-09-15");
|
|
41
|
+
const { result: state } = (0, react_hooks_1.renderHook)(() => (0, react_1.useState)(BASE_DATE));
|
|
42
|
+
const { result, rerender } = (0, react_hooks_1.renderHook)(() => (0, use_date_picker_1.useDatePicker)({ selectedDate: state.current[0], onDateChange: (date) => state.current[1](date) }));
|
|
43
|
+
const NEW_DATE = new Date("2022-12-22");
|
|
50
44
|
expect(result.current.isDateSelected(BASE_DATE)).toBe(true);
|
|
51
45
|
expect(result.current.isDateSelected(NEW_DATE)).toBe(false);
|
|
52
|
-
(0, react_hooks_1.act)(
|
|
46
|
+
(0, react_hooks_1.act)(() => {
|
|
53
47
|
result.current.onDateSelect(NEW_DATE);
|
|
54
48
|
rerender();
|
|
55
49
|
});
|
|
56
50
|
expect(result.current.isDateSelected(NEW_DATE)).toBe(true);
|
|
57
51
|
expect(result.current.isDateSelected(BASE_DATE)).toBe(false);
|
|
58
52
|
// select another
|
|
59
|
-
(0, react_hooks_1.act)(
|
|
53
|
+
(0, react_hooks_1.act)(() => {
|
|
60
54
|
result.current.onDateSelect(BASE_DATE);
|
|
61
55
|
rerender();
|
|
62
56
|
});
|
|
63
57
|
expect(result.current.isDateSelected(BASE_DATE)).toBe(true);
|
|
64
58
|
// select save (deselect)
|
|
65
|
-
(0, react_hooks_1.act)(
|
|
59
|
+
(0, react_hooks_1.act)(() => {
|
|
66
60
|
result.current.onDateSelect(BASE_DATE);
|
|
67
61
|
rerender();
|
|
68
62
|
});
|
|
69
63
|
expect(result.current.isDateSelected(BASE_DATE)).toBe(false);
|
|
70
64
|
// reset
|
|
71
|
-
(0, react_hooks_1.act)(
|
|
65
|
+
(0, react_hooks_1.act)(() => {
|
|
72
66
|
result.current.onDateSelect(BASE_DATE);
|
|
73
67
|
result.current.onResetDates();
|
|
74
68
|
rerender();
|
|
75
69
|
});
|
|
76
70
|
expect(result.current.isDateSelected(BASE_DATE)).toBe(false);
|
|
77
71
|
});
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWRhdGUtcGlja2VyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlLWRhdGUtcGlja2VyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0REFBK0Q7QUFDL0QsK0JBQWlDO0FBQ2pDLHFEQUFrRDtBQUVsRCxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQ2QsSUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakMsSUFBQSxNQUFNLEdBQUssSUFBQSx3QkFBVSxFQUFDO1FBQzFCLE9BQUEsSUFBQSwrQkFBYSxFQUFDO1lBQ1YsWUFBWSxFQUFFLFNBQVM7WUFDdkIsWUFBWSxFQUFFLGNBQU0sT0FBQSxTQUFTLEVBQVQsQ0FBUztZQUM3QixjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQ3pDLENBQUM7SUFKRixDQUlFLENBQ0wsT0FOYSxDQU1aO0lBRUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzlDO1lBQ0ksSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM1QixLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksRUFBRSxJQUFJO1NBQ2I7S0FDSixDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFB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
|
|
@@ -2,7 +2,7 @@ import { FirstDayOfWeek, MonthType } from "../utils/types";
|
|
|
2
2
|
import { UseDatePickerNavigationReturnType } from "./use-date-picker-navigation";
|
|
3
3
|
export declare const START_DATE = "startDate";
|
|
4
4
|
export declare const END_DATE = "endDate";
|
|
5
|
-
export
|
|
5
|
+
export type FocusedInput = "startDate" | "endDate" | null;
|
|
6
6
|
export interface OnDatesChangeProps {
|
|
7
7
|
endDate: Date | null;
|
|
8
8
|
focusedInput: FocusedInput;
|
|
@@ -32,6 +32,7 @@ export interface UseDateRangePickerReturnType extends UseDatePickerNavigationRet
|
|
|
32
32
|
isDateBlocked: (date: Date) => boolean;
|
|
33
33
|
isDateFocused: (date: Date) => boolean;
|
|
34
34
|
isDateHovered: (date: Date) => boolean;
|
|
35
|
+
isDateInsideRange: (date: Date) => boolean;
|
|
35
36
|
isDateSelected: (date: Date) => boolean;
|
|
36
37
|
isEndDate: (date: Date) => boolean;
|
|
37
38
|
isStartDate: (date: Date) => boolean;
|