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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +56 -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 +22 -0
  7. package/dist/cssm/hooks.js +131 -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 +175 -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 +22 -0
  21. package/dist/esm/hooks.js +117 -0
  22. package/dist/esm/index.js +14 -5
  23. package/dist/esm/index.module-1e16472a.d.ts +32 -0
  24. package/dist/esm/index.module-1e16472a.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 +159 -0
  32. package/dist/hooks.d.ts +22 -0
  33. package/dist/hooks.js +131 -0
  34. package/dist/index.js +14 -5
  35. package/dist/index.module-bcae62ec.d.ts +32 -0
  36. package/dist/index.module-bcae62ec.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 +22 -0
  40. package/dist/modern/hooks.js +113 -0
  41. package/dist/modern/index.js +13 -4
  42. package/dist/modern/index.module-7d74ac8d.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 +158 -0
  50. package/dist/utils.d.ts +1 -10
  51. package/dist/utils.js +1 -18
  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 +173 -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,62 @@
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.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)
7
+
8
+
9
+ * 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)
10
+
11
+
12
+ ### BREAKING CHANGES
13
+
14
+ * Большое обновление CalendarRange
15
+
16
+ * feat(date-input): add some improvements
17
+
18
+ * feat(date-input): some updates
19
+
20
+ * feat(date-input): validation
21
+
22
+ * feat(calendar): change period selection logic
23
+
24
+ * fix(calendar): range styles
25
+
26
+ * fix(calendar): fix styles, add rangeComplete flag
27
+
28
+ * refactor(calendar-range): temporary
29
+
30
+ * fix(calendar-range): fix hook
31
+
32
+ * fix(calendar-range): fix period
33
+
34
+ * fix(calendar-range): fix tests, fix max date
35
+
36
+ * fix: update exports
37
+
38
+ * feat(calendar): allow empty values for PeriodSlider, update today
39
+
40
+ * fix(calendar-range): hide error icon
41
+
42
+ * chore(calendar-range): demo
43
+
44
+ * feat(calendar): use IconButton
45
+
46
+ * feat(calendar-range): add onChange, update demo
47
+
48
+ * fix(calendar-range): update width
49
+
50
+ * test(calendar-range): update snapshot
51
+
52
+ * fix: import date-fns separately
53
+
54
+ * fix(calendar-range): fix rest props
55
+
56
+ Co-authored-by: dmitrsavk <dmitrsavk@yandex.ru>
57
+
58
+
59
+
60
+
61
+
6
62
  # [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
63
 
8
64
 
@@ -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-bcae62ec.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,22 @@
1
+ declare function usePopoverViewMonthes({ dateFrom, dateTo, defaultMonth, resetKey, }: {
2
+ defaultMonth: number;
3
+ dateFrom: number | null;
4
+ dateTo: number | null;
5
+ resetKey?: number;
6
+ }): {
7
+ monthFrom: number | undefined;
8
+ monthTo: number | undefined;
9
+ handleMonthFromChange: (newMonthFrom: number) => void;
10
+ handleMonthToChange: (newMonthTo: number) => void;
11
+ };
12
+ declare function useStaticViewMonthes({ selectedFrom, selectedTo, defaultMonth, }: {
13
+ selectedFrom?: number;
14
+ selectedTo?: number;
15
+ defaultMonth: number;
16
+ }): {
17
+ monthFrom: number;
18
+ monthTo: number;
19
+ handleMonthFromChange: (newMonthFrom: number) => void;
20
+ handleMonthToChange: (newMonthTo: number) => void;
21
+ };
22
+ export { usePopoverViewMonthes, useStaticViewMonthes };