@alfalab/core-components-calendar-range 4.3.0 → 5.1.1

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 +80 -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-87a4536c.d.ts +32 -0
  24. package/dist/esm/index.module-87a4536c.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-f4db2833.d.ts +32 -0
  36. package/dist/index.module-f4db2833.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-ac929490.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,86 @@
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.1](https://github.com/alfa-laboratory/core-components/compare/@alfalab/core-components-calendar-range@5.1.0...@alfalab/core-components-calendar-range@5.1.1) (2022-03-01)
7
+
8
+ **Note:** Version bump only for package @alfalab/core-components-calendar-range
9
+
10
+
11
+
12
+
13
+
14
+ # [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)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **calendar-range:** correct highlights ([#1002](https://github.com/alfa-laboratory/core-components/issues/1002)) ([5c12da2](https://github.com/alfa-laboratory/core-components/commit/5c12da2eb72b146b0a5f58447312f96f4b424c48))
20
+
21
+
22
+ ### Features
23
+
24
+ * Исправить импорты в сторях. ([#998](https://github.com/alfa-laboratory/core-components/issues/998)) ([e6a654a](https://github.com/alfa-laboratory/core-components/commit/e6a654a0599451c7d149484cb61d8067eed083b7))
25
+
26
+
27
+
28
+
29
+
30
+ # [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)
31
+
32
+
33
+ * 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)
34
+
35
+
36
+ ### BREAKING CHANGES
37
+
38
+ * Большое обновление CalendarRange
39
+
40
+ * feat(date-input): add some improvements
41
+
42
+ * feat(date-input): some updates
43
+
44
+ * feat(date-input): validation
45
+
46
+ * feat(calendar): change period selection logic
47
+
48
+ * fix(calendar): range styles
49
+
50
+ * fix(calendar): fix styles, add rangeComplete flag
51
+
52
+ * refactor(calendar-range): temporary
53
+
54
+ * fix(calendar-range): fix hook
55
+
56
+ * fix(calendar-range): fix period
57
+
58
+ * fix(calendar-range): fix tests, fix max date
59
+
60
+ * fix: update exports
61
+
62
+ * feat(calendar): allow empty values for PeriodSlider, update today
63
+
64
+ * fix(calendar-range): hide error icon
65
+
66
+ * chore(calendar-range): demo
67
+
68
+ * feat(calendar): use IconButton
69
+
70
+ * feat(calendar-range): add onChange, update demo
71
+
72
+ * fix(calendar-range): update width
73
+
74
+ * test(calendar-range): update snapshot
75
+
76
+ * fix: import date-fns separately
77
+
78
+ * fix(calendar-range): fix rest props
79
+
80
+ Co-authored-by: dmitrsavk <dmitrsavk@yandex.ru>
81
+
82
+
83
+
84
+
85
+
6
86
  # [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)
7
87
 
8
88
 
@@ -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-f4db2833.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_7sbdm","divider":"calendar-range__divider_7sbdm"};
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 };