@alfalab/core-components-calendar-range 4.2.3 → 5.0.0
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 +84 -0
- package/dist/Component.d.ts +25 -3
- package/dist/Component.js +19 -185
- package/dist/cssm/Component.d.ts +25 -3
- package/dist/cssm/Component.js +20 -184
- package/dist/cssm/hooks.d.ts +22 -0
- package/dist/cssm/hooks.js +131 -0
- package/dist/cssm/index.js +15 -6
- package/dist/cssm/tslib.es6-ce870b46.d.ts +32 -0
- package/dist/cssm/tslib.es6-ce870b46.js +42 -0
- package/dist/cssm/utils.d.ts +1 -10
- package/dist/cssm/utils.js +0 -15
- package/dist/cssm/{index.module.css → views/index.module.css} +30 -0
- package/dist/cssm/views/popover.d.ts +5 -0
- package/dist/cssm/views/popover.js +118 -0
- package/dist/cssm/views/static.d.ts +5 -0
- package/dist/cssm/views/static.js +175 -0
- package/dist/esm/Component.d.ts +25 -3
- package/dist/esm/Component.js +20 -185
- package/dist/esm/hooks.d.ts +22 -0
- package/dist/esm/hooks.js +117 -0
- package/dist/esm/index.js +14 -5
- package/dist/esm/index.module-1e16472a.d.ts +32 -0
- package/dist/esm/index.module-1e16472a.js +43 -0
- package/dist/esm/utils.d.ts +1 -10
- package/dist/esm/utils.js +1 -14
- package/dist/esm/views/index.css +66 -0
- package/dist/esm/views/popover.d.ts +5 -0
- package/dist/esm/views/popover.js +106 -0
- package/dist/esm/views/static.d.ts +5 -0
- package/dist/esm/views/static.js +159 -0
- package/dist/hooks.d.ts +22 -0
- package/dist/hooks.js +131 -0
- package/dist/index.js +14 -5
- package/dist/index.module-bcae62ec.d.ts +32 -0
- package/dist/index.module-bcae62ec.js +46 -0
- package/dist/modern/Component.d.ts +25 -3
- package/dist/modern/Component.js +20 -168
- package/dist/modern/hooks.d.ts +22 -0
- package/dist/modern/hooks.js +113 -0
- package/dist/modern/index.js +13 -4
- package/dist/modern/index.module-7d74ac8d.js +4 -0
- package/dist/modern/utils.d.ts +1 -10
- package/dist/modern/utils.js +1 -14
- package/dist/modern/views/index.css +66 -0
- package/dist/modern/views/popover.d.ts +5 -0
- package/dist/modern/views/popover.js +115 -0
- package/dist/modern/views/static.d.ts +5 -0
- package/dist/modern/views/static.js +158 -0
- package/dist/utils.d.ts +1 -10
- package/dist/utils.js +1 -18
- package/dist/views/index.css +66 -0
- package/dist/views/popover.d.ts +5 -0
- package/dist/views/popover.js +116 -0
- package/dist/views/static.d.ts +5 -0
- package/dist/views/static.js +173 -0
- package/package.json +6 -6
- package/dist/cssm/useCalendarMaxMinDates.d.ts +0 -16
- package/dist/cssm/useCalendarMaxMinDates.js +0 -22
- package/dist/cssm/useCalendarMonthes.d.ts +0 -14
- package/dist/cssm/useCalendarMonthes.js +0 -54
- package/dist/esm/index.css +0 -36
- package/dist/esm/useCalendarMaxMinDates.d.ts +0 -16
- package/dist/esm/useCalendarMaxMinDates.js +0 -18
- package/dist/esm/useCalendarMonthes.d.ts +0 -14
- package/dist/esm/useCalendarMonthes.js +0 -50
- package/dist/index.css +0 -36
- package/dist/modern/index.css +0 -36
- package/dist/modern/useCalendarMaxMinDates.d.ts +0 -16
- package/dist/modern/useCalendarMaxMinDates.js +0 -17
- package/dist/modern/useCalendarMonthes.d.ts +0 -14
- package/dist/modern/useCalendarMonthes.js +0 -49
- package/dist/useCalendarMaxMinDates.d.ts +0 -16
- package/dist/useCalendarMaxMinDates.js +0 -22
- package/dist/useCalendarMonthes.d.ts +0 -14
- package/dist/useCalendarMonthes.js +0 -54
package/dist/esm/Component.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
2
|
import { CalendarInputProps } from "@alfalab/core-components-calendar-input";
|
|
3
|
-
import { ValueState } from "./utils";
|
|
4
3
|
type CalendarRangeProps = {
|
|
5
4
|
/**
|
|
6
5
|
* Дополнительный класс
|
|
@@ -29,11 +28,34 @@ type CalendarRangeProps = {
|
|
|
29
28
|
/**
|
|
30
29
|
* Обработчик изменения даты от
|
|
31
30
|
*/
|
|
32
|
-
onDateFromChange?: (payload:
|
|
31
|
+
onDateFromChange?: (payload: {
|
|
32
|
+
date: number | null;
|
|
33
|
+
value: string;
|
|
34
|
+
}) => void;
|
|
33
35
|
/**
|
|
34
36
|
* Обработчик изменения даты до
|
|
35
37
|
*/
|
|
36
|
-
onDateToChange?: (payload:
|
|
38
|
+
onDateToChange?: (payload: {
|
|
39
|
+
date: number | null;
|
|
40
|
+
value: string;
|
|
41
|
+
}) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Обработчик изменения
|
|
44
|
+
*/
|
|
45
|
+
onChange?: (payload: {
|
|
46
|
+
dateFrom: number | null;
|
|
47
|
+
valueFrom: string;
|
|
48
|
+
dateTo: number | null;
|
|
49
|
+
valueTo: string;
|
|
50
|
+
}) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Список событий
|
|
53
|
+
*/
|
|
54
|
+
events?: Array<Date | number>;
|
|
55
|
+
/**
|
|
56
|
+
* Список выходных
|
|
57
|
+
*/
|
|
58
|
+
offDays?: Array<Date | number>;
|
|
37
59
|
/**
|
|
38
60
|
* Пропсы для инпута даты от
|
|
39
61
|
*/
|
package/dist/esm/Component.js
CHANGED
|
@@ -1,190 +1,25 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
19
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
20
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
21
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
22
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
23
|
-
***************************************************************************** */
|
|
24
|
-
var __assign = function () {
|
|
25
|
-
__assign = Object.assign || function __assign(t) {
|
|
26
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
27
|
-
s = arguments[i];
|
|
28
|
-
for (var p in s)
|
|
29
|
-
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
30
|
-
t[p] = s[p];
|
|
31
|
-
}
|
|
32
|
-
return t;
|
|
33
|
-
};
|
|
34
|
-
return __assign.apply(this, arguments);
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
var styles = {"component":"calendar-range__component_1dam9","divider":"calendar-range__divider_1dam9"};
|
|
38
|
-
require('./index.css')
|
|
1
|
+
import { _ as __rest, a as __assign } from './index.module-1e16472a.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import 'classnames';
|
|
4
|
+
import 'date-fns/startOfMonth';
|
|
5
|
+
import '@alfalab/core-components-calendar-input/dist/esm';
|
|
6
|
+
import '@alfalab/core-components-date-input/dist/esm';
|
|
7
|
+
import 'date-fns/addMonths';
|
|
8
|
+
import 'date-fns/subMonths';
|
|
9
|
+
import 'date-fns/max';
|
|
10
|
+
import 'date-fns/min';
|
|
11
|
+
import 'date-fns/isEqual';
|
|
12
|
+
import './hooks.js';
|
|
13
|
+
import { CalendarRangePopover } from './views/popover.js';
|
|
14
|
+
import 'date-fns/endOfMonth';
|
|
15
|
+
import '@alfalab/core-components-calendar/dist/esm';
|
|
16
|
+
import './utils.js';
|
|
17
|
+
import { CalendarRangeStatic } from './views/static.js';
|
|
39
18
|
|
|
40
19
|
var CalendarRange = function (_a) {
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
var period = usePeriod({
|
|
45
|
-
initialSelectedFrom: valueFrom ? parseDateString(valueFrom).getTime() : undefined,
|
|
46
|
-
initialSelectedTo: valueTo ? parseDateString(valueTo).getTime() : undefined,
|
|
47
|
-
});
|
|
48
|
-
var setStart = period.setStart, setEnd = period.setEnd, resetPeriod = period.resetPeriod;
|
|
49
|
-
var selectedFrom = period.selectedFrom, selectedTo = period.selectedTo;
|
|
50
|
-
if (!dateInLimits(selectedFrom, minDate, maxDate))
|
|
51
|
-
selectedFrom = undefined;
|
|
52
|
-
if (!dateInLimits(selectedTo, minDate, maxDate))
|
|
53
|
-
selectedTo = undefined;
|
|
54
|
-
var _f = useState(initialValueState), stateFrom = _f[0], setStateFrom = _f[1];
|
|
55
|
-
var _g = useState(initialValueState), stateTo = _g[0], setStateTo = _g[1];
|
|
56
|
-
var inputValueFrom = getCorrectValueState(stateFrom, valueFrom, minDate, maxDate);
|
|
57
|
-
var inputValueTo = getCorrectValueState(stateTo, valueTo, minDate, maxDate);
|
|
58
|
-
var handleStateFromChange = useCallback(function (newFromState) {
|
|
59
|
-
if (uncontrolled)
|
|
60
|
-
setStateFrom(newFromState);
|
|
61
|
-
if (onDateFromChange)
|
|
62
|
-
onDateFromChange(newFromState);
|
|
63
|
-
}, [onDateFromChange, uncontrolled]);
|
|
64
|
-
var handleStateToChange = useCallback(function (newToState) {
|
|
65
|
-
if (uncontrolled)
|
|
66
|
-
setStateTo(newToState);
|
|
67
|
-
if (onDateToChange)
|
|
68
|
-
onDateToChange(newToState);
|
|
69
|
-
}, [onDateToChange, uncontrolled]);
|
|
70
|
-
var _h = useCalendarMonthes({
|
|
71
|
-
inputValueFrom: inputValueFrom,
|
|
72
|
-
inputValueTo: inputValueTo,
|
|
73
|
-
defaultMonth: defaultMonth,
|
|
74
|
-
isPopover: isPopover,
|
|
75
|
-
}), monthFrom = _h.monthFrom, monthTo = _h.monthTo, handleMonthFromChange = _h.handleMonthFromChange, handleMonthToChange = _h.handleMonthToChange;
|
|
76
|
-
var handleInputFromChange = useCallback(function (_, _a) {
|
|
77
|
-
var value = _a.value, date = _a.date;
|
|
78
|
-
if (value === '') {
|
|
79
|
-
setStart(undefined);
|
|
80
|
-
handleStateFromChange(initialValueState);
|
|
81
|
-
}
|
|
82
|
-
if (!isCompleteDateInput(value)) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
if (dateInLimits(date, minDate, maxDate)) {
|
|
86
|
-
setStart(date.getTime());
|
|
87
|
-
handleMonthFromChange(startOfMonth(date).getTime());
|
|
88
|
-
handleStateFromChange({ date: date.getTime(), value: value });
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
setStart(undefined);
|
|
92
|
-
handleStateFromChange({ date: null, value: value });
|
|
93
|
-
}
|
|
94
|
-
}, [handleMonthFromChange, handleStateFromChange, maxDate, minDate, setStart]);
|
|
95
|
-
var handleInputToChange = useCallback(function (_, _a) {
|
|
96
|
-
var value = _a.value, date = _a.date;
|
|
97
|
-
if (value === '') {
|
|
98
|
-
setEnd(undefined);
|
|
99
|
-
handleStateToChange(initialValueState);
|
|
100
|
-
}
|
|
101
|
-
if (!isCompleteDateInput(value)) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
if (dateInLimits(date, minDate, maxDate)) {
|
|
105
|
-
setEnd(date.getTime());
|
|
106
|
-
handleMonthToChange(subMonths(startOfMonth(date), 1).getTime());
|
|
107
|
-
handleStateToChange({ date: date.getTime(), value: value });
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
setEnd(undefined);
|
|
111
|
-
handleStateToChange({ date: null, value: value });
|
|
112
|
-
}
|
|
113
|
-
}, [handleMonthToChange, handleStateToChange, maxDate, minDate, setEnd]);
|
|
114
|
-
var handleCalendarChange = useCallback(function (date) {
|
|
115
|
-
if (!inputValueFrom.date) {
|
|
116
|
-
setStart(date);
|
|
117
|
-
handleStateFromChange({ date: date, value: formatDate(date) });
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
if (date < inputValueFrom.date) {
|
|
121
|
-
resetPeriod();
|
|
122
|
-
setStart(date);
|
|
123
|
-
handleStateToChange(initialValueState);
|
|
124
|
-
handleStateFromChange({ date: date, value: formatDate(date) });
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
if (date === inputValueFrom.date && date === inputValueTo.date) {
|
|
128
|
-
resetPeriod();
|
|
129
|
-
handleStateFromChange(initialValueState);
|
|
130
|
-
handleStateToChange(initialValueState);
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
handleStateToChange({ date: date, value: formatDate(date) });
|
|
134
|
-
setEnd(date);
|
|
135
|
-
}, [
|
|
136
|
-
inputValueFrom.date,
|
|
137
|
-
inputValueTo.date,
|
|
138
|
-
handleStateToChange,
|
|
139
|
-
setEnd,
|
|
140
|
-
setStart,
|
|
141
|
-
handleStateFromChange,
|
|
142
|
-
resetPeriod,
|
|
143
|
-
]);
|
|
144
|
-
var handleFromCalendarChange = useCallback(function (date) {
|
|
145
|
-
if (!isPopover) {
|
|
146
|
-
handleCalendarChange(date);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
setStart(date);
|
|
150
|
-
handleStateFromChange({ date: date, value: formatDate(date) });
|
|
151
|
-
}, [handleCalendarChange, handleStateFromChange, isPopover, setStart]);
|
|
152
|
-
var handleToCalendarChange = useCallback(function (date) {
|
|
153
|
-
if (!isPopover) {
|
|
154
|
-
handleCalendarChange(date);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
handleStateToChange({ date: date, value: formatDate(date) });
|
|
158
|
-
setEnd(date);
|
|
159
|
-
}, [handleCalendarChange, handleStateToChange, isPopover, setEnd]);
|
|
160
|
-
var _j = useState(false), nextMonthHighlighted = _j[0], setNextMonthHighlighted = _j[1];
|
|
161
|
-
var handleCalendarToMouseOver = useCallback(function (event) {
|
|
162
|
-
var target = event.target;
|
|
163
|
-
var dayHighlighted = isDayButton(target) || isDayButton(target.parentElement);
|
|
164
|
-
if (nextMonthHighlighted && !dayHighlighted)
|
|
165
|
-
setNextMonthHighlighted(false);
|
|
166
|
-
if (!nextMonthHighlighted && dayHighlighted)
|
|
167
|
-
setNextMonthHighlighted(true);
|
|
168
|
-
}, [nextMonthHighlighted]);
|
|
169
|
-
var selectorView = isPopover ? 'full' : 'month-only';
|
|
170
|
-
var calendarSelectedTo = selectedTo || (nextMonthHighlighted ? monthTo : undefined);
|
|
171
|
-
var maxMinDates = useCalendarMaxMinDates({
|
|
172
|
-
isPopover: isPopover,
|
|
173
|
-
monthTo: monthTo,
|
|
174
|
-
monthFrom: monthFrom,
|
|
175
|
-
selectedFrom: selectedFrom,
|
|
176
|
-
selectedTo: calendarSelectedTo,
|
|
177
|
-
maxDate: maxDate,
|
|
178
|
-
minDate: minDate,
|
|
179
|
-
});
|
|
180
|
-
return (React.createElement("div", { className: cn(styles.component, className), "data-test-id": dataTestId },
|
|
181
|
-
React.createElement(CalendarInput, __assign({}, inputFromProps, { useAnchorWidth: false, calendarPosition: calendarPosition, onInputChange: handleInputFromChange, onCalendarChange: handleFromCalendarChange, value: inputValueFrom.value, minDate: maxMinDates.fromMinDate, maxDate: maxMinDates.fromMaxDate, calendarProps: __assign(__assign({}, inputFromProps.calendarProps), { month: monthFrom, onMonthChange: handleMonthFromChange, selectorView: selectorView,
|
|
182
|
-
selectedFrom: selectedFrom, selectedTo: calendarSelectedTo }) })),
|
|
183
|
-
React.createElement("span", { className: styles.divider }),
|
|
184
|
-
React.createElement("div", { onMouseOver: handleCalendarToMouseOver },
|
|
185
|
-
React.createElement(CalendarInput, __assign({}, inputToProps, { useAnchorWidth: false, calendarPosition: calendarPosition, popoverPosition: 'bottom-end', onInputChange: handleInputToChange, onCalendarChange: handleToCalendarChange, value: inputValueTo.value, minDate: maxMinDates.toMinDate, maxDate: maxMinDates.toMaxDate, calendarProps: __assign(__assign({}, inputToProps.calendarProps), { month: monthTo, onMonthChange: handleMonthToChange, selectorView: selectorView,
|
|
186
|
-
selectedFrom: selectedFrom,
|
|
187
|
-
selectedTo: selectedTo }) })))));
|
|
20
|
+
var _b = _a.calendarPosition, calendarPosition = _b === void 0 ? 'static' : _b, restProps = __rest(_a, ["calendarPosition"]);
|
|
21
|
+
var View = calendarPosition === 'popover' ? CalendarRangePopover : CalendarRangeStatic;
|
|
22
|
+
return React.createElement(View, __assign({}, restProps));
|
|
188
23
|
};
|
|
189
24
|
|
|
190
25
|
export { CalendarRange };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare function usePopoverViewMonthes({ dateFrom, dateTo, defaultMonth, resetKey, }: {
|
|
2
|
+
defaultMonth: number;
|
|
3
|
+
dateFrom: number | null;
|
|
4
|
+
dateTo: number | null;
|
|
5
|
+
resetKey?: number;
|
|
6
|
+
}): {
|
|
7
|
+
monthFrom: number | undefined;
|
|
8
|
+
monthTo: number | undefined;
|
|
9
|
+
handleMonthFromChange: (newMonthFrom: number) => void;
|
|
10
|
+
handleMonthToChange: (newMonthTo: number) => void;
|
|
11
|
+
};
|
|
12
|
+
declare function useStaticViewMonthes({ selectedFrom, selectedTo, defaultMonth, }: {
|
|
13
|
+
selectedFrom?: number;
|
|
14
|
+
selectedTo?: number;
|
|
15
|
+
defaultMonth: number;
|
|
16
|
+
}): {
|
|
17
|
+
monthFrom: number;
|
|
18
|
+
monthTo: number;
|
|
19
|
+
handleMonthFromChange: (newMonthFrom: number) => void;
|
|
20
|
+
handleMonthToChange: (newMonthTo: number) => void;
|
|
21
|
+
};
|
|
22
|
+
export { usePopoverViewMonthes, useStaticViewMonthes };
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { useState, useCallback, useEffect, useMemo } from 'react';
|
|
2
|
+
import startOfMonth from 'date-fns/startOfMonth';
|
|
3
|
+
import addMonths from 'date-fns/addMonths';
|
|
4
|
+
import subMonths from 'date-fns/subMonths';
|
|
5
|
+
import max from 'date-fns/max';
|
|
6
|
+
import min from 'date-fns/min';
|
|
7
|
+
import isEqual from 'date-fns/isEqual';
|
|
8
|
+
|
|
9
|
+
function usePopoverViewMonthes(_a) {
|
|
10
|
+
var dateFrom = _a.dateFrom, dateTo = _a.dateTo, defaultMonth = _a.defaultMonth, resetKey = _a.resetKey;
|
|
11
|
+
var _b = useState(), monthFrom = _b[0], setMonthFrom = _b[1];
|
|
12
|
+
var _c = useState(), monthTo = _c[0], setMonthTo = _c[1];
|
|
13
|
+
var handleMonthFromChange = useCallback(function (newMonthFrom) {
|
|
14
|
+
setMonthFrom(newMonthFrom);
|
|
15
|
+
if (!dateTo) {
|
|
16
|
+
setMonthTo(newMonthFrom);
|
|
17
|
+
}
|
|
18
|
+
}, [dateTo]);
|
|
19
|
+
var handleMonthToChange = useCallback(function (newMonthTo) {
|
|
20
|
+
setMonthTo(newMonthTo);
|
|
21
|
+
if (!dateFrom) {
|
|
22
|
+
setMonthFrom(newMonthTo);
|
|
23
|
+
}
|
|
24
|
+
}, [dateFrom]);
|
|
25
|
+
useEffect(function () {
|
|
26
|
+
setMonthFrom(dateFrom ? startOfMonth(dateFrom).getTime() : defaultMonth);
|
|
27
|
+
}, [defaultMonth, dateFrom, resetKey]);
|
|
28
|
+
useEffect(function () {
|
|
29
|
+
setMonthTo(dateTo ? startOfMonth(dateTo).getTime() : monthFrom);
|
|
30
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
31
|
+
}, [dateTo, resetKey]);
|
|
32
|
+
return {
|
|
33
|
+
monthFrom: monthFrom,
|
|
34
|
+
monthTo: monthTo,
|
|
35
|
+
handleMonthFromChange: handleMonthFromChange,
|
|
36
|
+
handleMonthToChange: handleMonthToChange,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function useStaticViewMonthes(_a) {
|
|
40
|
+
var selectedFrom = _a.selectedFrom, selectedTo = _a.selectedTo, defaultMonth = _a.defaultMonth;
|
|
41
|
+
/**
|
|
42
|
+
* Если указана начальная дата — левый месяц равен ей, иначе используется дата конца.
|
|
43
|
+
* Если обе даты не указаны, то используется дефолтный месяц
|
|
44
|
+
*/
|
|
45
|
+
var initialMonthFrom = useMemo(function () { return startOfMonth(selectedFrom || selectedTo || defaultMonth).getTime(); },
|
|
46
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
47
|
+
[]);
|
|
48
|
+
/**
|
|
49
|
+
* Правый месяц должен быть как минимум на 1 месяц больше левого
|
|
50
|
+
*/
|
|
51
|
+
var initialMonthTo = useMemo(function () {
|
|
52
|
+
return max([
|
|
53
|
+
selectedTo ? startOfMonth(selectedTo) : 0,
|
|
54
|
+
addMonths(initialMonthFrom, 1),
|
|
55
|
+
]).getTime();
|
|
56
|
+
},
|
|
57
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
|
+
[]);
|
|
59
|
+
var _b = useState(initialMonthFrom), monthFrom = _b[0], setMonthFrom = _b[1];
|
|
60
|
+
var _c = useState(initialMonthTo), monthTo = _c[0], setMonthTo = _c[1];
|
|
61
|
+
var handleMonthFromChange = useCallback(function (newMonthFrom) {
|
|
62
|
+
setMonthFrom(newMonthFrom);
|
|
63
|
+
if (monthTo && isEqual(newMonthFrom, monthTo)) {
|
|
64
|
+
var nextMonth = addMonths(newMonthFrom, 1).getTime();
|
|
65
|
+
setMonthTo(nextMonth);
|
|
66
|
+
}
|
|
67
|
+
}, [monthTo]);
|
|
68
|
+
var handleMonthToChange = useCallback(function (newMonthTo) {
|
|
69
|
+
setMonthTo(newMonthTo);
|
|
70
|
+
if (monthFrom && isEqual(newMonthTo, monthFrom)) {
|
|
71
|
+
var prevMonth = subMonths(newMonthTo, 1).getTime();
|
|
72
|
+
setMonthFrom(prevMonth);
|
|
73
|
+
}
|
|
74
|
+
}, [monthFrom]);
|
|
75
|
+
// eslint-disable-next-line complexity
|
|
76
|
+
useEffect(function () {
|
|
77
|
+
var selectedFromMonth = selectedFrom ? startOfMonth(selectedFrom).getTime() : undefined;
|
|
78
|
+
var selectedToMonth = selectedTo ? startOfMonth(selectedTo).getTime() : undefined;
|
|
79
|
+
// Проверяем, показываются ли выбранные месяцы в левой или правой части компонента
|
|
80
|
+
var fromMonthOnLeft = selectedFromMonth && selectedFromMonth === monthFrom;
|
|
81
|
+
var fromMonthOnRight = selectedFromMonth && selectedFromMonth === monthTo;
|
|
82
|
+
var toMonthOnRight = selectedToMonth && selectedToMonth === monthTo;
|
|
83
|
+
var toMonthOnLeft = selectedToMonth && selectedToMonth === monthFrom;
|
|
84
|
+
var fromMonthOnScreen = fromMonthOnLeft || fromMonthOnRight;
|
|
85
|
+
var toMonthOnScreen = toMonthOnLeft || toMonthOnRight;
|
|
86
|
+
if (fromMonthOnLeft && toMonthOnLeft) {
|
|
87
|
+
setMonthTo(max([addMonths(selectedFromMonth, 1), monthTo]).getTime());
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (fromMonthOnRight && toMonthOnRight) {
|
|
91
|
+
setMonthFrom(min([subMonths(selectedToMonth, 1), monthFrom]).getTime());
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (selectedFromMonth && selectedToMonth) {
|
|
95
|
+
setMonthFrom(selectedFromMonth);
|
|
96
|
+
setMonthTo(max([addMonths(selectedFromMonth, 1), selectedToMonth]).getTime());
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (selectedFromMonth && !selectedToMonth && !fromMonthOnScreen) {
|
|
100
|
+
setMonthFrom(selectedFromMonth);
|
|
101
|
+
setMonthTo(max([addMonths(selectedFromMonth, 1), monthTo]).getTime());
|
|
102
|
+
}
|
|
103
|
+
if (selectedToMonth && !selectedFromMonth && !toMonthOnScreen) {
|
|
104
|
+
setMonthTo(selectedToMonth);
|
|
105
|
+
setMonthFrom(min([subMonths(selectedToMonth, 1), monthFrom]).getTime());
|
|
106
|
+
}
|
|
107
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
108
|
+
}, [selectedFrom, selectedTo]);
|
|
109
|
+
return {
|
|
110
|
+
monthFrom: monthFrom,
|
|
111
|
+
monthTo: monthTo,
|
|
112
|
+
handleMonthFromChange: handleMonthFromChange,
|
|
113
|
+
handleMonthToChange: handleMonthToChange,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export { usePopoverViewMonthes, useStaticViewMonthes };
|
package/dist/esm/index.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import './index.module-1e16472a.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import 'classnames';
|
|
4
|
-
import 'date-fns';
|
|
5
|
-
import '@alfalab/core-components-calendar/dist/esm';
|
|
4
|
+
import 'date-fns/startOfMonth';
|
|
6
5
|
import '@alfalab/core-components-calendar-input/dist/esm';
|
|
6
|
+
import '@alfalab/core-components-date-input/dist/esm';
|
|
7
|
+
import 'date-fns/addMonths';
|
|
8
|
+
import 'date-fns/subMonths';
|
|
9
|
+
import 'date-fns/max';
|
|
10
|
+
import 'date-fns/min';
|
|
11
|
+
import 'date-fns/isEqual';
|
|
12
|
+
import './hooks.js';
|
|
13
|
+
import './views/popover.js';
|
|
14
|
+
import 'date-fns/endOfMonth';
|
|
15
|
+
import '@alfalab/core-components-calendar/dist/esm';
|
|
7
16
|
import './utils.js';
|
|
8
|
-
import './
|
|
9
|
-
|
|
17
|
+
import './views/static.js';
|
|
18
|
+
export { CalendarRange } from './Component.js';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
declare function __extends(d: any, b: any): void;
|
|
2
|
+
declare function __rest(s: any, e: any): {};
|
|
3
|
+
declare function __decorate(decorators: any, target: any, key: any, desc: any, ...args: any[]): any;
|
|
4
|
+
declare function __param(paramIndex: any, decorator: any): (target: any, key: any) => void;
|
|
5
|
+
declare function __metadata(metadataKey: any, metadataValue: any): any;
|
|
6
|
+
declare function __awaiter(thisArg: any, _arguments: any, P: any, generator: any): any;
|
|
7
|
+
declare function __generator(thisArg: any, body: any): {
|
|
8
|
+
next: (v: any) => any;
|
|
9
|
+
throw: (v: any) => any;
|
|
10
|
+
return: (v: any) => any;
|
|
11
|
+
};
|
|
12
|
+
declare function __exportStar(m: any, o: any): void;
|
|
13
|
+
declare function __values(o: any): any;
|
|
14
|
+
declare function __read(o: any, n: any): any;
|
|
15
|
+
declare function __spread(...args: any[]): any[];
|
|
16
|
+
declare function __spreadArrays(...args: any[]): any[];
|
|
17
|
+
declare function __await(v: any): any;
|
|
18
|
+
declare class __await {
|
|
19
|
+
constructor(v: any);
|
|
20
|
+
v: any;
|
|
21
|
+
}
|
|
22
|
+
declare function __asyncGenerator(thisArg: any, _arguments: any, generator: any): {};
|
|
23
|
+
declare function __asyncDelegator(o: any): {};
|
|
24
|
+
declare function __asyncValues(o: any): any;
|
|
25
|
+
declare function __makeTemplateObject(cooked: any, raw: any): any;
|
|
26
|
+
declare function __importStar(mod: any): any;
|
|
27
|
+
declare function __importDefault(mod: any): any;
|
|
28
|
+
declare function __classPrivateFieldGet(receiver: any, privateMap: any): any;
|
|
29
|
+
declare function __classPrivateFieldSet(receiver: any, privateMap: any, value: any): any;
|
|
30
|
+
declare function __assign(...args: any[]): any;
|
|
31
|
+
declare function __createBinding(o: any, m: any, k: any, k2: any): void;
|
|
32
|
+
export { __extends, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet, __assign, __createBinding };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*! *****************************************************************************
|
|
2
|
+
Copyright (c) Microsoft Corporation.
|
|
3
|
+
|
|
4
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
5
|
+
purpose with or without fee is hereby granted.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
8
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
9
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
10
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
11
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
12
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
13
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
14
|
+
***************************************************************************** */
|
|
15
|
+
var __assign = function () {
|
|
16
|
+
__assign = Object.assign || function __assign(t) {
|
|
17
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
18
|
+
s = arguments[i];
|
|
19
|
+
for (var p in s)
|
|
20
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
+
t[p] = s[p];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
return __assign.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
function __rest(s, e) {
|
|
28
|
+
var t = {};
|
|
29
|
+
for (var p in s)
|
|
30
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
31
|
+
t[p] = s[p];
|
|
32
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
33
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
34
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
35
|
+
t[p[i]] = s[p[i]];
|
|
36
|
+
}
|
|
37
|
+
return t;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var styles = {"component":"calendar-range__component_jenpd","divider":"calendar-range__divider_jenpd","static":"calendar-range__static_jenpd","calendar":"calendar-range__calendar_jenpd"};
|
|
41
|
+
require('./views/index.css')
|
|
42
|
+
|
|
43
|
+
export { __rest as _, __assign as a, styles as s };
|
package/dist/esm/utils.d.ts
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
type ValueState = {
|
|
2
|
-
date: number | null;
|
|
3
|
-
value: string;
|
|
4
|
-
};
|
|
5
|
-
declare const initialValueState: {
|
|
6
|
-
date: null;
|
|
7
|
-
value: string;
|
|
8
|
-
};
|
|
9
|
-
declare const getCorrectValueState: (stateValue: ValueState, propValue?: string | undefined, minDate?: number | undefined, maxDate?: number | undefined) => ValueState;
|
|
10
1
|
declare const isDayButton: (node: HTMLElement | null) => string | false | null | undefined;
|
|
11
|
-
export {
|
|
2
|
+
export { isDayButton };
|
package/dist/esm/utils.js
CHANGED
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
import { dateInLimits } from '@alfalab/core-components-calendar/dist/esm';
|
|
2
|
-
import { parseDateString } from '@alfalab/core-components-calendar-input/dist/esm';
|
|
3
|
-
|
|
4
|
-
var initialValueState = { date: null, value: '' };
|
|
5
|
-
var getCorrectValueState = function (stateValue, propValue, minDate, maxDate) {
|
|
6
|
-
var state = propValue === undefined
|
|
7
|
-
? stateValue
|
|
8
|
-
: { value: propValue, date: parseDateString(propValue).getTime() };
|
|
9
|
-
if (!dateInLimits(state.date, minDate, maxDate)) {
|
|
10
|
-
state.date = null;
|
|
11
|
-
}
|
|
12
|
-
return state;
|
|
13
|
-
};
|
|
14
1
|
var isDayButton = function (node) {
|
|
15
2
|
return node && node.tagName === 'BUTTON' && node.dataset.date;
|
|
16
3
|
};
|
|
17
4
|
|
|
18
|
-
export {
|
|
5
|
+
export { isDayButton };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* hash: m35lt */
|
|
2
|
+
:root {
|
|
3
|
+
--color-light-graphic-primary: #0b1f35;
|
|
4
|
+
}
|
|
5
|
+
:root {
|
|
6
|
+
|
|
7
|
+
/* Hard */
|
|
8
|
+
|
|
9
|
+
/* Up */
|
|
10
|
+
|
|
11
|
+
/* Hard up */
|
|
12
|
+
}
|
|
13
|
+
:root {
|
|
14
|
+
--gap-xs: 8px;
|
|
15
|
+
}
|
|
16
|
+
:root {
|
|
17
|
+
--calendar-inner-width: 280px;
|
|
18
|
+
|
|
19
|
+
/* Кнопки выбора месяцев и годов */
|
|
20
|
+
|
|
21
|
+
/* Шапка */
|
|
22
|
+
|
|
23
|
+
/* День */
|
|
24
|
+
|
|
25
|
+
/* today */
|
|
26
|
+
|
|
27
|
+
/* highlighted */
|
|
28
|
+
|
|
29
|
+
/* range */
|
|
30
|
+
|
|
31
|
+
/* selected */
|
|
32
|
+
|
|
33
|
+
/* disabled */
|
|
34
|
+
|
|
35
|
+
/* marker */
|
|
36
|
+
}
|
|
37
|
+
.calendar-range__component_jenpd {
|
|
38
|
+
display: flex
|
|
39
|
+
}
|
|
40
|
+
.calendar-range__component_jenpd button[aria-selected='true'] {
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
}
|
|
43
|
+
.calendar-range__component_jenpd *[class*='errorIcon_'] {
|
|
44
|
+
display: none;
|
|
45
|
+
}
|
|
46
|
+
.calendar-range__component_jenpd *[class*='calendarIcon_'] {
|
|
47
|
+
margin-right: 0;
|
|
48
|
+
}
|
|
49
|
+
.calendar-range__divider_jenpd {
|
|
50
|
+
height: 48px;
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
width: 16px;
|
|
55
|
+
margin: 0 var(--gap-xs)
|
|
56
|
+
}
|
|
57
|
+
.calendar-range__divider_jenpd:after {
|
|
58
|
+
content: '';
|
|
59
|
+
display: block;
|
|
60
|
+
width: 100%;
|
|
61
|
+
height: 1px;
|
|
62
|
+
background-color: var(--color-light-graphic-primary);
|
|
63
|
+
}
|
|
64
|
+
.calendar-range__static_jenpd .calendar-range__calendar_jenpd {
|
|
65
|
+
width: var(--calendar-inner-width);
|
|
66
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { CalendarRangeProps } from "../Component";
|
|
3
|
+
type CalendarRangePopoverProps = Omit<CalendarRangeProps, 'calendarPosition'>;
|
|
4
|
+
declare const CalendarRangePopover: FC<CalendarRangePopoverProps>;
|
|
5
|
+
export { CalendarRangePopoverProps, CalendarRangePopover };
|