@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.
Files changed (76) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/dist/Component.d.ts +25 -3
  3. package/dist/Component.js +19 -185
  4. package/dist/cssm/Component.d.ts +25 -3
  5. package/dist/cssm/Component.js +20 -184
  6. package/dist/cssm/hooks.d.ts +27 -0
  7. package/dist/cssm/hooks.js +149 -0
  8. package/dist/cssm/index.js +15 -6
  9. package/dist/cssm/tslib.es6-ce870b46.d.ts +32 -0
  10. package/dist/cssm/tslib.es6-ce870b46.js +42 -0
  11. package/dist/cssm/utils.d.ts +1 -10
  12. package/dist/cssm/utils.js +0 -15
  13. package/dist/cssm/{index.module.css → views/index.module.css} +30 -0
  14. package/dist/cssm/views/popover.d.ts +5 -0
  15. package/dist/cssm/views/popover.js +118 -0
  16. package/dist/cssm/views/static.d.ts +5 -0
  17. package/dist/cssm/views/static.js +170 -0
  18. package/dist/esm/Component.d.ts +25 -3
  19. package/dist/esm/Component.js +20 -185
  20. package/dist/esm/hooks.d.ts +27 -0
  21. package/dist/esm/hooks.js +134 -0
  22. package/dist/esm/index.js +14 -5
  23. package/dist/esm/index.module-bbf7d46d.d.ts +32 -0
  24. package/dist/esm/index.module-bbf7d46d.js +43 -0
  25. package/dist/esm/utils.d.ts +1 -10
  26. package/dist/esm/utils.js +1 -14
  27. package/dist/esm/views/index.css +66 -0
  28. package/dist/esm/views/popover.d.ts +5 -0
  29. package/dist/esm/views/popover.js +106 -0
  30. package/dist/esm/views/static.d.ts +5 -0
  31. package/dist/esm/views/static.js +154 -0
  32. package/dist/hooks.d.ts +27 -0
  33. package/dist/hooks.js +149 -0
  34. package/dist/index.js +14 -5
  35. package/dist/index.module-a9bc9731.d.ts +32 -0
  36. package/dist/index.module-a9bc9731.js +46 -0
  37. package/dist/modern/Component.d.ts +25 -3
  38. package/dist/modern/Component.js +20 -168
  39. package/dist/modern/hooks.d.ts +27 -0
  40. package/dist/modern/hooks.js +130 -0
  41. package/dist/modern/index.js +13 -4
  42. package/dist/modern/index.module-4c141936.js +4 -0
  43. package/dist/modern/utils.d.ts +1 -10
  44. package/dist/modern/utils.js +1 -14
  45. package/dist/modern/views/index.css +66 -0
  46. package/dist/modern/views/popover.d.ts +5 -0
  47. package/dist/modern/views/popover.js +115 -0
  48. package/dist/modern/views/static.d.ts +5 -0
  49. package/dist/modern/views/static.js +154 -0
  50. package/dist/utils.d.ts +1 -10
  51. package/dist/utils.js +0 -15
  52. package/dist/views/index.css +66 -0
  53. package/dist/views/popover.d.ts +5 -0
  54. package/dist/views/popover.js +116 -0
  55. package/dist/views/static.d.ts +5 -0
  56. package/dist/views/static.js +168 -0
  57. package/package.json +6 -6
  58. package/dist/cssm/useCalendarMaxMinDates.d.ts +0 -16
  59. package/dist/cssm/useCalendarMaxMinDates.js +0 -22
  60. package/dist/cssm/useCalendarMonthes.d.ts +0 -14
  61. package/dist/cssm/useCalendarMonthes.js +0 -54
  62. package/dist/esm/index.css +0 -36
  63. package/dist/esm/useCalendarMaxMinDates.d.ts +0 -16
  64. package/dist/esm/useCalendarMaxMinDates.js +0 -18
  65. package/dist/esm/useCalendarMonthes.d.ts +0 -14
  66. package/dist/esm/useCalendarMonthes.js +0 -50
  67. package/dist/index.css +0 -36
  68. package/dist/modern/index.css +0 -36
  69. package/dist/modern/useCalendarMaxMinDates.d.ts +0 -16
  70. package/dist/modern/useCalendarMaxMinDates.js +0 -17
  71. package/dist/modern/useCalendarMonthes.d.ts +0 -14
  72. package/dist/modern/useCalendarMonthes.js +0 -49
  73. package/dist/useCalendarMaxMinDates.d.ts +0 -16
  74. package/dist/useCalendarMaxMinDates.js +0 -22
  75. package/dist/useCalendarMonthes.d.ts +0 -14
  76. 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
@@ -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: ValueState) => void;
31
+ onDateFromChange?: (payload: {
32
+ date: number | null;
33
+ value: string;
34
+ }) => void;
33
35
  /**
34
36
  * Обработчик изменения даты до
35
37
  */
36
- onDateToChange?: (payload: ValueState) => void;
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
- var cn = require('classnames');
7
- var dateFns = require('date-fns');
8
- var coreComponentsCalendar = require('@alfalab/core-components-calendar');
9
- var coreComponentsCalendarInput = require('@alfalab/core-components-calendar-input');
10
- var utils = require('./utils.js');
11
- var useCalendarMonthes = require('./useCalendarMonthes.js');
12
- var useCalendarMaxMinDates = require('./useCalendarMaxMinDates.js');
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 className = _a.className, _b = _a.defaultMonth, defaultMonth = _b === void 0 ? dateFns.startOfMonth(new Date()).getTime() : _b, minDate = _a.minDate, maxDate = _a.maxDate, valueFrom = _a.valueFrom, valueTo = _a.valueTo, onDateFromChange = _a.onDateFromChange, onDateToChange = _a.onDateToChange, _c = _a.inputFromProps, inputFromProps = _c === void 0 ? {} : _c, _d = _a.inputToProps, inputToProps = _d === void 0 ? {} : _d, _e = _a.calendarPosition, calendarPosition = _e === void 0 ? 'static' : _e, dataTestId = _a.dataTestId;
51
- var uncontrolled = valueFrom === undefined && valueTo === undefined;
52
- var isPopover = calendarPosition === 'popover';
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;
@@ -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: ValueState) => void;
31
+ onDateFromChange?: (payload: {
32
+ date: number | null;
33
+ value: string;
34
+ }) => void;
33
35
  /**
34
36
  * Обработчик изменения даты до
35
37
  */
36
- onDateToChange?: (payload: ValueState) => void;
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
  */
@@ -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
- var cn = require('classnames');
7
- var dateFns = require('date-fns');
8
- var coreComponentsCalendar = require('@alfalab/core-components-calendar/dist/cssm');
9
- var coreComponentsCalendarInput = require('@alfalab/core-components-calendar-input/dist/cssm');
10
- var utils = require('./utils.js');
11
- var useCalendarMonthes = require('./useCalendarMonthes.js');
12
- var useCalendarMaxMinDates = require('./useCalendarMaxMinDates.js');
13
- var styles = require('./index.module.css');
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 className = _a.className, _b = _a.defaultMonth, defaultMonth = _b === void 0 ? dateFns.startOfMonth(new Date()).getTime() : _b, minDate = _a.minDate, maxDate = _a.maxDate, valueFrom = _a.valueFrom, valueTo = _a.valueTo, onDateFromChange = _a.onDateFromChange, onDateToChange = _a.onDateToChange, _c = _a.inputFromProps, inputFromProps = _c === void 0 ? {} : _c, _d = _a.inputToProps, inputToProps = _d === void 0 ? {} : _d, _e = _a.calendarPosition, calendarPosition = _e === void 0 ? 'static' : _e, dataTestId = _a.dataTestId;
50
- var uncontrolled = valueFrom === undefined && valueTo === undefined;
51
- var isPopover = calendarPosition === 'popover';
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 };