@alfalab/core-components-calendar-range 4.2.4 → 5.1.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 +92 -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 +27 -0
- package/dist/cssm/hooks.js +149 -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 +170 -0
- package/dist/esm/Component.d.ts +25 -3
- package/dist/esm/Component.js +20 -185
- package/dist/esm/hooks.d.ts +27 -0
- package/dist/esm/hooks.js +134 -0
- package/dist/esm/index.js +14 -5
- package/dist/esm/index.module-bbf7d46d.d.ts +32 -0
- package/dist/esm/index.module-bbf7d46d.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 +154 -0
- package/dist/hooks.d.ts +27 -0
- package/dist/hooks.js +149 -0
- package/dist/index.js +14 -5
- package/dist/index.module-a9bc9731.d.ts +32 -0
- package/dist/index.module-a9bc9731.js +46 -0
- package/dist/modern/Component.d.ts +25 -3
- package/dist/modern/Component.js +20 -168
- package/dist/modern/hooks.d.ts +27 -0
- package/dist/modern/hooks.js +130 -0
- package/dist/modern/index.js +13 -4
- package/dist/modern/index.module-4c141936.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 +154 -0
- package/dist/utils.d.ts +1 -10
- package/dist/utils.js +0 -15
- 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 +168 -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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,98 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [5.1.0](https://github.com/alfa-laboratory/core-components/compare/@alfalab/core-components-calendar-range@5.0.0...@alfalab/core-components-calendar-range@5.1.0) (2022-02-21)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **calendar-range:** correct highlights ([#1002](https://github.com/alfa-laboratory/core-components/issues/1002)) ([5c12da2](https://github.com/alfa-laboratory/core-components/commit/5c12da2eb72b146b0a5f58447312f96f4b424c48))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* Исправить импорты в сторях. ([#998](https://github.com/alfa-laboratory/core-components/issues/998)) ([e6a654a](https://github.com/alfa-laboratory/core-components/commit/e6a654a0599451c7d149484cb61d8067eed083b7))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [5.0.0](https://github.com/alfa-laboratory/core-components/compare/@alfalab/core-components-calendar-range@4.3.0...@alfalab/core-components-calendar-range@5.0.0) (2022-02-17)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
* refactor/calendar-range (#984) ([714f615](https://github.com/alfa-laboratory/core-components/commit/714f61590586bafe1060e652943e95c133ed002a)), closes [#984](https://github.com/alfa-laboratory/core-components/issues/984)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### BREAKING CHANGES
|
|
29
|
+
|
|
30
|
+
* Большое обновление CalendarRange
|
|
31
|
+
|
|
32
|
+
* feat(date-input): add some improvements
|
|
33
|
+
|
|
34
|
+
* feat(date-input): some updates
|
|
35
|
+
|
|
36
|
+
* feat(date-input): validation
|
|
37
|
+
|
|
38
|
+
* feat(calendar): change period selection logic
|
|
39
|
+
|
|
40
|
+
* fix(calendar): range styles
|
|
41
|
+
|
|
42
|
+
* fix(calendar): fix styles, add rangeComplete flag
|
|
43
|
+
|
|
44
|
+
* refactor(calendar-range): temporary
|
|
45
|
+
|
|
46
|
+
* fix(calendar-range): fix hook
|
|
47
|
+
|
|
48
|
+
* fix(calendar-range): fix period
|
|
49
|
+
|
|
50
|
+
* fix(calendar-range): fix tests, fix max date
|
|
51
|
+
|
|
52
|
+
* fix: update exports
|
|
53
|
+
|
|
54
|
+
* feat(calendar): allow empty values for PeriodSlider, update today
|
|
55
|
+
|
|
56
|
+
* fix(calendar-range): hide error icon
|
|
57
|
+
|
|
58
|
+
* chore(calendar-range): demo
|
|
59
|
+
|
|
60
|
+
* feat(calendar): use IconButton
|
|
61
|
+
|
|
62
|
+
* feat(calendar-range): add onChange, update demo
|
|
63
|
+
|
|
64
|
+
* fix(calendar-range): update width
|
|
65
|
+
|
|
66
|
+
* test(calendar-range): update snapshot
|
|
67
|
+
|
|
68
|
+
* fix: import date-fns separately
|
|
69
|
+
|
|
70
|
+
* fix(calendar-range): fix rest props
|
|
71
|
+
|
|
72
|
+
Co-authored-by: dmitrsavk <dmitrsavk@yandex.ru>
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
# [4.3.0](https://github.com/alfa-laboratory/core-components/compare/@alfalab/core-components-calendar-range@4.2.5...@alfalab/core-components-calendar-range@4.3.0) (2022-02-17)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
### Features
|
|
82
|
+
|
|
83
|
+
* **calendar:** design & logic updates ([#991](https://github.com/alfa-laboratory/core-components/issues/991)) ([358142c](https://github.com/alfa-laboratory/core-components/commit/358142c6d259e1463954139cc648787cdf461f76)), closes [#993](https://github.com/alfa-laboratory/core-components/issues/993) [#990](https://github.com/alfa-laboratory/core-components/issues/990)
|
|
84
|
+
* **date-input:** add some improvements ([#971](https://github.com/alfa-laboratory/core-components/issues/971)) ([47756ca](https://github.com/alfa-laboratory/core-components/commit/47756ca1d4eea89f78ed7234e95c02e51dd72e49))
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
## [4.2.5](https://github.com/alfa-laboratory/core-components/compare/@alfalab/core-components-calendar-range@4.2.4...@alfalab/core-components-calendar-range@4.2.5) (2022-02-15)
|
|
91
|
+
|
|
92
|
+
**Note:** Version bump only for package @alfalab/core-components-calendar-range
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
6
98
|
## [4.2.4](https://github.com/alfa-laboratory/core-components/compare/@alfalab/core-components-calendar-range@4.2.3...@alfalab/core-components-calendar-range@4.2.4) (2022-02-09)
|
|
7
99
|
|
|
8
100
|
**Note:** Version bump only for package @alfalab/core-components-calendar-range
|
package/dist/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/Component.js
CHANGED
|
@@ -2,198 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var index_module = require('./index.module-a9bc9731.js');
|
|
5
6
|
var React = require('react');
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
require('classnames');
|
|
8
|
+
require('date-fns/startOfMonth');
|
|
9
|
+
require('@alfalab/core-components-calendar-input');
|
|
10
|
+
require('@alfalab/core-components-date-input');
|
|
11
|
+
require('date-fns/addMonths');
|
|
12
|
+
require('date-fns/subMonths');
|
|
13
|
+
require('date-fns/max');
|
|
14
|
+
require('date-fns/min');
|
|
15
|
+
require('date-fns/isEqual');
|
|
16
|
+
require('./hooks.js');
|
|
17
|
+
var views_popover = require('./views/popover.js');
|
|
18
|
+
require('date-fns/endOfMonth');
|
|
19
|
+
require('@alfalab/core-components-calendar');
|
|
20
|
+
require('./utils.js');
|
|
21
|
+
var views_static = require('./views/static.js');
|
|
13
22
|
|
|
14
23
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
24
|
|
|
16
25
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
17
|
-
var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
|
|
18
|
-
|
|
19
|
-
/*! *****************************************************************************
|
|
20
|
-
Copyright (c) Microsoft Corporation.
|
|
21
|
-
|
|
22
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
23
|
-
purpose with or without fee is hereby granted.
|
|
24
|
-
|
|
25
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
26
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
27
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
28
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
29
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
30
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
31
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
32
|
-
***************************************************************************** */
|
|
33
|
-
var __assign = function () {
|
|
34
|
-
__assign = Object.assign || function __assign(t) {
|
|
35
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
36
|
-
s = arguments[i];
|
|
37
|
-
for (var p in s)
|
|
38
|
-
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
39
|
-
t[p] = s[p];
|
|
40
|
-
}
|
|
41
|
-
return t;
|
|
42
|
-
};
|
|
43
|
-
return __assign.apply(this, arguments);
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
var styles = {"component":"calendar-range__component_zi6if","divider":"calendar-range__divider_zi6if"};
|
|
47
|
-
require('./index.css')
|
|
48
26
|
|
|
49
27
|
var CalendarRange = function (_a) {
|
|
50
|
-
var
|
|
51
|
-
var
|
|
52
|
-
|
|
53
|
-
var period = coreComponentsCalendar.usePeriod({
|
|
54
|
-
initialSelectedFrom: valueFrom ? coreComponentsCalendarInput.parseDateString(valueFrom).getTime() : undefined,
|
|
55
|
-
initialSelectedTo: valueTo ? coreComponentsCalendarInput.parseDateString(valueTo).getTime() : undefined,
|
|
56
|
-
});
|
|
57
|
-
var setStart = period.setStart, setEnd = period.setEnd, resetPeriod = period.resetPeriod;
|
|
58
|
-
var selectedFrom = period.selectedFrom, selectedTo = period.selectedTo;
|
|
59
|
-
if (!coreComponentsCalendar.dateInLimits(selectedFrom, minDate, maxDate))
|
|
60
|
-
selectedFrom = undefined;
|
|
61
|
-
if (!coreComponentsCalendar.dateInLimits(selectedTo, minDate, maxDate))
|
|
62
|
-
selectedTo = undefined;
|
|
63
|
-
var _f = React.useState(utils.initialValueState), stateFrom = _f[0], setStateFrom = _f[1];
|
|
64
|
-
var _g = React.useState(utils.initialValueState), stateTo = _g[0], setStateTo = _g[1];
|
|
65
|
-
var inputValueFrom = utils.getCorrectValueState(stateFrom, valueFrom, minDate, maxDate);
|
|
66
|
-
var inputValueTo = utils.getCorrectValueState(stateTo, valueTo, minDate, maxDate);
|
|
67
|
-
var handleStateFromChange = React.useCallback(function (newFromState) {
|
|
68
|
-
if (uncontrolled)
|
|
69
|
-
setStateFrom(newFromState);
|
|
70
|
-
if (onDateFromChange)
|
|
71
|
-
onDateFromChange(newFromState);
|
|
72
|
-
}, [onDateFromChange, uncontrolled]);
|
|
73
|
-
var handleStateToChange = React.useCallback(function (newToState) {
|
|
74
|
-
if (uncontrolled)
|
|
75
|
-
setStateTo(newToState);
|
|
76
|
-
if (onDateToChange)
|
|
77
|
-
onDateToChange(newToState);
|
|
78
|
-
}, [onDateToChange, uncontrolled]);
|
|
79
|
-
var _h = useCalendarMonthes.useCalendarMonthes({
|
|
80
|
-
inputValueFrom: inputValueFrom,
|
|
81
|
-
inputValueTo: inputValueTo,
|
|
82
|
-
defaultMonth: defaultMonth,
|
|
83
|
-
isPopover: isPopover,
|
|
84
|
-
}), monthFrom = _h.monthFrom, monthTo = _h.monthTo, handleMonthFromChange = _h.handleMonthFromChange, handleMonthToChange = _h.handleMonthToChange;
|
|
85
|
-
var handleInputFromChange = React.useCallback(function (_, _a) {
|
|
86
|
-
var value = _a.value, date = _a.date;
|
|
87
|
-
if (value === '') {
|
|
88
|
-
setStart(undefined);
|
|
89
|
-
handleStateFromChange(utils.initialValueState);
|
|
90
|
-
}
|
|
91
|
-
if (!coreComponentsCalendarInput.isCompleteDateInput(value)) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
if (coreComponentsCalendar.dateInLimits(date, minDate, maxDate)) {
|
|
95
|
-
setStart(date.getTime());
|
|
96
|
-
handleMonthFromChange(dateFns.startOfMonth(date).getTime());
|
|
97
|
-
handleStateFromChange({ date: date.getTime(), value: value });
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
setStart(undefined);
|
|
101
|
-
handleStateFromChange({ date: null, value: value });
|
|
102
|
-
}
|
|
103
|
-
}, [handleMonthFromChange, handleStateFromChange, maxDate, minDate, setStart]);
|
|
104
|
-
var handleInputToChange = React.useCallback(function (_, _a) {
|
|
105
|
-
var value = _a.value, date = _a.date;
|
|
106
|
-
if (value === '') {
|
|
107
|
-
setEnd(undefined);
|
|
108
|
-
handleStateToChange(utils.initialValueState);
|
|
109
|
-
}
|
|
110
|
-
if (!coreComponentsCalendarInput.isCompleteDateInput(value)) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
if (coreComponentsCalendar.dateInLimits(date, minDate, maxDate)) {
|
|
114
|
-
setEnd(date.getTime());
|
|
115
|
-
handleMonthToChange(dateFns.subMonths(dateFns.startOfMonth(date), 1).getTime());
|
|
116
|
-
handleStateToChange({ date: date.getTime(), value: value });
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
setEnd(undefined);
|
|
120
|
-
handleStateToChange({ date: null, value: value });
|
|
121
|
-
}
|
|
122
|
-
}, [handleMonthToChange, handleStateToChange, maxDate, minDate, setEnd]);
|
|
123
|
-
var handleCalendarChange = React.useCallback(function (date) {
|
|
124
|
-
if (!inputValueFrom.date) {
|
|
125
|
-
setStart(date);
|
|
126
|
-
handleStateFromChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
if (date < inputValueFrom.date) {
|
|
130
|
-
resetPeriod();
|
|
131
|
-
setStart(date);
|
|
132
|
-
handleStateToChange(utils.initialValueState);
|
|
133
|
-
handleStateFromChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
if (date === inputValueFrom.date && date === inputValueTo.date) {
|
|
137
|
-
resetPeriod();
|
|
138
|
-
handleStateFromChange(utils.initialValueState);
|
|
139
|
-
handleStateToChange(utils.initialValueState);
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
handleStateToChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
143
|
-
setEnd(date);
|
|
144
|
-
}, [
|
|
145
|
-
inputValueFrom.date,
|
|
146
|
-
inputValueTo.date,
|
|
147
|
-
handleStateToChange,
|
|
148
|
-
setEnd,
|
|
149
|
-
setStart,
|
|
150
|
-
handleStateFromChange,
|
|
151
|
-
resetPeriod,
|
|
152
|
-
]);
|
|
153
|
-
var handleFromCalendarChange = React.useCallback(function (date) {
|
|
154
|
-
if (!isPopover) {
|
|
155
|
-
handleCalendarChange(date);
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
setStart(date);
|
|
159
|
-
handleStateFromChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
160
|
-
}, [handleCalendarChange, handleStateFromChange, isPopover, setStart]);
|
|
161
|
-
var handleToCalendarChange = React.useCallback(function (date) {
|
|
162
|
-
if (!isPopover) {
|
|
163
|
-
handleCalendarChange(date);
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
handleStateToChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
167
|
-
setEnd(date);
|
|
168
|
-
}, [handleCalendarChange, handleStateToChange, isPopover, setEnd]);
|
|
169
|
-
var _j = React.useState(false), nextMonthHighlighted = _j[0], setNextMonthHighlighted = _j[1];
|
|
170
|
-
var handleCalendarToMouseOver = React.useCallback(function (event) {
|
|
171
|
-
var target = event.target;
|
|
172
|
-
var dayHighlighted = utils.isDayButton(target) || utils.isDayButton(target.parentElement);
|
|
173
|
-
if (nextMonthHighlighted && !dayHighlighted)
|
|
174
|
-
setNextMonthHighlighted(false);
|
|
175
|
-
if (!nextMonthHighlighted && dayHighlighted)
|
|
176
|
-
setNextMonthHighlighted(true);
|
|
177
|
-
}, [nextMonthHighlighted]);
|
|
178
|
-
var selectorView = isPopover ? 'full' : 'month-only';
|
|
179
|
-
var calendarSelectedTo = selectedTo || (nextMonthHighlighted ? monthTo : undefined);
|
|
180
|
-
var maxMinDates = useCalendarMaxMinDates.useCalendarMaxMinDates({
|
|
181
|
-
isPopover: isPopover,
|
|
182
|
-
monthTo: monthTo,
|
|
183
|
-
monthFrom: monthFrom,
|
|
184
|
-
selectedFrom: selectedFrom,
|
|
185
|
-
selectedTo: calendarSelectedTo,
|
|
186
|
-
maxDate: maxDate,
|
|
187
|
-
minDate: minDate,
|
|
188
|
-
});
|
|
189
|
-
return (React__default['default'].createElement("div", { className: cn__default['default'](styles.component, className), "data-test-id": dataTestId },
|
|
190
|
-
React__default['default'].createElement(coreComponentsCalendarInput.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,
|
|
191
|
-
selectedFrom: selectedFrom, selectedTo: calendarSelectedTo }) })),
|
|
192
|
-
React__default['default'].createElement("span", { className: styles.divider }),
|
|
193
|
-
React__default['default'].createElement("div", { onMouseOver: handleCalendarToMouseOver },
|
|
194
|
-
React__default['default'].createElement(coreComponentsCalendarInput.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,
|
|
195
|
-
selectedFrom: selectedFrom,
|
|
196
|
-
selectedTo: selectedTo }) })))));
|
|
28
|
+
var _b = _a.calendarPosition, calendarPosition = _b === void 0 ? 'static' : _b, restProps = index_module.__rest(_a, ["calendarPosition"]);
|
|
29
|
+
var View = calendarPosition === 'popover' ? views_popover.CalendarRangePopover : views_static.CalendarRangeStatic;
|
|
30
|
+
return React__default['default'].createElement(View, index_module.__assign({}, restProps));
|
|
197
31
|
};
|
|
198
32
|
|
|
199
33
|
exports.CalendarRange = CalendarRange;
|
package/dist/cssm/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/cssm/Component.js
CHANGED
|
@@ -2,197 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var tslib_es6 = require('./tslib.es6-ce870b46.js');
|
|
5
6
|
var React = require('react');
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
require('classnames');
|
|
8
|
+
require('date-fns/startOfMonth');
|
|
9
|
+
require('@alfalab/core-components-calendar-input/dist/cssm');
|
|
10
|
+
require('@alfalab/core-components-date-input/dist/cssm');
|
|
11
|
+
require('date-fns/addMonths');
|
|
12
|
+
require('date-fns/subMonths');
|
|
13
|
+
require('date-fns/max');
|
|
14
|
+
require('date-fns/min');
|
|
15
|
+
require('date-fns/isEqual');
|
|
16
|
+
require('./hooks.js');
|
|
17
|
+
require('./views/index.module.css');
|
|
18
|
+
var views_popover = require('./views/popover.js');
|
|
19
|
+
require('date-fns/endOfMonth');
|
|
20
|
+
require('@alfalab/core-components-calendar/dist/cssm');
|
|
21
|
+
require('./utils.js');
|
|
22
|
+
var views_static = require('./views/static.js');
|
|
14
23
|
|
|
15
24
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
25
|
|
|
17
26
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
18
|
-
var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
|
|
19
|
-
var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles);
|
|
20
|
-
|
|
21
|
-
/*! *****************************************************************************
|
|
22
|
-
Copyright (c) Microsoft Corporation.
|
|
23
|
-
|
|
24
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
25
|
-
purpose with or without fee is hereby granted.
|
|
26
|
-
|
|
27
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
28
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
29
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
30
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
31
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
32
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
33
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
34
|
-
***************************************************************************** */
|
|
35
|
-
var __assign = function () {
|
|
36
|
-
__assign = Object.assign || function __assign(t) {
|
|
37
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
38
|
-
s = arguments[i];
|
|
39
|
-
for (var p in s)
|
|
40
|
-
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
41
|
-
t[p] = s[p];
|
|
42
|
-
}
|
|
43
|
-
return t;
|
|
44
|
-
};
|
|
45
|
-
return __assign.apply(this, arguments);
|
|
46
|
-
};
|
|
47
27
|
|
|
48
28
|
var CalendarRange = function (_a) {
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
var period = coreComponentsCalendar.usePeriod({
|
|
53
|
-
initialSelectedFrom: valueFrom ? coreComponentsCalendarInput.parseDateString(valueFrom).getTime() : undefined,
|
|
54
|
-
initialSelectedTo: valueTo ? coreComponentsCalendarInput.parseDateString(valueTo).getTime() : undefined,
|
|
55
|
-
});
|
|
56
|
-
var setStart = period.setStart, setEnd = period.setEnd, resetPeriod = period.resetPeriod;
|
|
57
|
-
var selectedFrom = period.selectedFrom, selectedTo = period.selectedTo;
|
|
58
|
-
if (!coreComponentsCalendar.dateInLimits(selectedFrom, minDate, maxDate))
|
|
59
|
-
selectedFrom = undefined;
|
|
60
|
-
if (!coreComponentsCalendar.dateInLimits(selectedTo, minDate, maxDate))
|
|
61
|
-
selectedTo = undefined;
|
|
62
|
-
var _f = React.useState(utils.initialValueState), stateFrom = _f[0], setStateFrom = _f[1];
|
|
63
|
-
var _g = React.useState(utils.initialValueState), stateTo = _g[0], setStateTo = _g[1];
|
|
64
|
-
var inputValueFrom = utils.getCorrectValueState(stateFrom, valueFrom, minDate, maxDate);
|
|
65
|
-
var inputValueTo = utils.getCorrectValueState(stateTo, valueTo, minDate, maxDate);
|
|
66
|
-
var handleStateFromChange = React.useCallback(function (newFromState) {
|
|
67
|
-
if (uncontrolled)
|
|
68
|
-
setStateFrom(newFromState);
|
|
69
|
-
if (onDateFromChange)
|
|
70
|
-
onDateFromChange(newFromState);
|
|
71
|
-
}, [onDateFromChange, uncontrolled]);
|
|
72
|
-
var handleStateToChange = React.useCallback(function (newToState) {
|
|
73
|
-
if (uncontrolled)
|
|
74
|
-
setStateTo(newToState);
|
|
75
|
-
if (onDateToChange)
|
|
76
|
-
onDateToChange(newToState);
|
|
77
|
-
}, [onDateToChange, uncontrolled]);
|
|
78
|
-
var _h = useCalendarMonthes.useCalendarMonthes({
|
|
79
|
-
inputValueFrom: inputValueFrom,
|
|
80
|
-
inputValueTo: inputValueTo,
|
|
81
|
-
defaultMonth: defaultMonth,
|
|
82
|
-
isPopover: isPopover,
|
|
83
|
-
}), monthFrom = _h.monthFrom, monthTo = _h.monthTo, handleMonthFromChange = _h.handleMonthFromChange, handleMonthToChange = _h.handleMonthToChange;
|
|
84
|
-
var handleInputFromChange = React.useCallback(function (_, _a) {
|
|
85
|
-
var value = _a.value, date = _a.date;
|
|
86
|
-
if (value === '') {
|
|
87
|
-
setStart(undefined);
|
|
88
|
-
handleStateFromChange(utils.initialValueState);
|
|
89
|
-
}
|
|
90
|
-
if (!coreComponentsCalendarInput.isCompleteDateInput(value)) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
if (coreComponentsCalendar.dateInLimits(date, minDate, maxDate)) {
|
|
94
|
-
setStart(date.getTime());
|
|
95
|
-
handleMonthFromChange(dateFns.startOfMonth(date).getTime());
|
|
96
|
-
handleStateFromChange({ date: date.getTime(), value: value });
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
setStart(undefined);
|
|
100
|
-
handleStateFromChange({ date: null, value: value });
|
|
101
|
-
}
|
|
102
|
-
}, [handleMonthFromChange, handleStateFromChange, maxDate, minDate, setStart]);
|
|
103
|
-
var handleInputToChange = React.useCallback(function (_, _a) {
|
|
104
|
-
var value = _a.value, date = _a.date;
|
|
105
|
-
if (value === '') {
|
|
106
|
-
setEnd(undefined);
|
|
107
|
-
handleStateToChange(utils.initialValueState);
|
|
108
|
-
}
|
|
109
|
-
if (!coreComponentsCalendarInput.isCompleteDateInput(value)) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
if (coreComponentsCalendar.dateInLimits(date, minDate, maxDate)) {
|
|
113
|
-
setEnd(date.getTime());
|
|
114
|
-
handleMonthToChange(dateFns.subMonths(dateFns.startOfMonth(date), 1).getTime());
|
|
115
|
-
handleStateToChange({ date: date.getTime(), value: value });
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
setEnd(undefined);
|
|
119
|
-
handleStateToChange({ date: null, value: value });
|
|
120
|
-
}
|
|
121
|
-
}, [handleMonthToChange, handleStateToChange, maxDate, minDate, setEnd]);
|
|
122
|
-
var handleCalendarChange = React.useCallback(function (date) {
|
|
123
|
-
if (!inputValueFrom.date) {
|
|
124
|
-
setStart(date);
|
|
125
|
-
handleStateFromChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
if (date < inputValueFrom.date) {
|
|
129
|
-
resetPeriod();
|
|
130
|
-
setStart(date);
|
|
131
|
-
handleStateToChange(utils.initialValueState);
|
|
132
|
-
handleStateFromChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
if (date === inputValueFrom.date && date === inputValueTo.date) {
|
|
136
|
-
resetPeriod();
|
|
137
|
-
handleStateFromChange(utils.initialValueState);
|
|
138
|
-
handleStateToChange(utils.initialValueState);
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
handleStateToChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
142
|
-
setEnd(date);
|
|
143
|
-
}, [
|
|
144
|
-
inputValueFrom.date,
|
|
145
|
-
inputValueTo.date,
|
|
146
|
-
handleStateToChange,
|
|
147
|
-
setEnd,
|
|
148
|
-
setStart,
|
|
149
|
-
handleStateFromChange,
|
|
150
|
-
resetPeriod,
|
|
151
|
-
]);
|
|
152
|
-
var handleFromCalendarChange = React.useCallback(function (date) {
|
|
153
|
-
if (!isPopover) {
|
|
154
|
-
handleCalendarChange(date);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
setStart(date);
|
|
158
|
-
handleStateFromChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
159
|
-
}, [handleCalendarChange, handleStateFromChange, isPopover, setStart]);
|
|
160
|
-
var handleToCalendarChange = React.useCallback(function (date) {
|
|
161
|
-
if (!isPopover) {
|
|
162
|
-
handleCalendarChange(date);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
handleStateToChange({ date: date, value: coreComponentsCalendarInput.formatDate(date) });
|
|
166
|
-
setEnd(date);
|
|
167
|
-
}, [handleCalendarChange, handleStateToChange, isPopover, setEnd]);
|
|
168
|
-
var _j = React.useState(false), nextMonthHighlighted = _j[0], setNextMonthHighlighted = _j[1];
|
|
169
|
-
var handleCalendarToMouseOver = React.useCallback(function (event) {
|
|
170
|
-
var target = event.target;
|
|
171
|
-
var dayHighlighted = utils.isDayButton(target) || utils.isDayButton(target.parentElement);
|
|
172
|
-
if (nextMonthHighlighted && !dayHighlighted)
|
|
173
|
-
setNextMonthHighlighted(false);
|
|
174
|
-
if (!nextMonthHighlighted && dayHighlighted)
|
|
175
|
-
setNextMonthHighlighted(true);
|
|
176
|
-
}, [nextMonthHighlighted]);
|
|
177
|
-
var selectorView = isPopover ? 'full' : 'month-only';
|
|
178
|
-
var calendarSelectedTo = selectedTo || (nextMonthHighlighted ? monthTo : undefined);
|
|
179
|
-
var maxMinDates = useCalendarMaxMinDates.useCalendarMaxMinDates({
|
|
180
|
-
isPopover: isPopover,
|
|
181
|
-
monthTo: monthTo,
|
|
182
|
-
monthFrom: monthFrom,
|
|
183
|
-
selectedFrom: selectedFrom,
|
|
184
|
-
selectedTo: calendarSelectedTo,
|
|
185
|
-
maxDate: maxDate,
|
|
186
|
-
minDate: minDate,
|
|
187
|
-
});
|
|
188
|
-
return (React__default['default'].createElement("div", { className: cn__default['default'](styles__default['default'].component, className), "data-test-id": dataTestId },
|
|
189
|
-
React__default['default'].createElement(coreComponentsCalendarInput.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,
|
|
190
|
-
selectedFrom: selectedFrom, selectedTo: calendarSelectedTo }) })),
|
|
191
|
-
React__default['default'].createElement("span", { className: styles__default['default'].divider }),
|
|
192
|
-
React__default['default'].createElement("div", { onMouseOver: handleCalendarToMouseOver },
|
|
193
|
-
React__default['default'].createElement(coreComponentsCalendarInput.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,
|
|
194
|
-
selectedFrom: selectedFrom,
|
|
195
|
-
selectedTo: selectedTo }) })))));
|
|
29
|
+
var _b = _a.calendarPosition, calendarPosition = _b === void 0 ? 'static' : _b, restProps = tslib_es6.__rest(_a, ["calendarPosition"]);
|
|
30
|
+
var View = calendarPosition === 'popover' ? views_popover.CalendarRangePopover : views_static.CalendarRangeStatic;
|
|
31
|
+
return React__default['default'].createElement(View, tslib_es6.__assign({}, restProps));
|
|
196
32
|
};
|
|
197
33
|
|
|
198
34
|
exports.CalendarRange = CalendarRange;
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
declare function useSelectionProps(from?: number, to?: number, highlighted?: number): {
|
|
23
|
+
rangeComplete: boolean;
|
|
24
|
+
selectedFrom: number | undefined;
|
|
25
|
+
selectedTo: number | undefined;
|
|
26
|
+
};
|
|
27
|
+
export { usePopoverViewMonthes, useStaticViewMonthes, useSelectionProps };
|