@alfalab/core-components-calendar-range 7.0.6 → 7.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Component.js +7 -2
- package/components/divider/Component.d.ts +8 -0
- package/components/divider/Component.js +25 -0
- package/components/divider/index.css +75 -0
- package/components/divider/index.d.ts +1 -0
- package/components/divider/index.js +9 -0
- package/cssm/Component.js +7 -1
- package/cssm/components/divider/Component.d.ts +8 -0
- package/cssm/components/divider/Component.js +24 -0
- package/cssm/components/divider/index.d.ts +1 -0
- package/cssm/components/divider/index.js +10 -0
- package/cssm/components/divider/index.module.css +74 -0
- package/cssm/hooks.js +31 -22
- package/cssm/index.js +2 -0
- package/cssm/views/index.module.css +0 -21
- package/cssm/views/popover.js +14 -5
- package/cssm/views/static.js +22 -9
- package/esm/Component.js +2 -1
- package/esm/components/divider/Component.d.ts +8 -0
- package/esm/components/divider/Component.js +18 -0
- package/esm/components/divider/index.css +75 -0
- package/esm/components/divider/index.d.ts +1 -0
- package/esm/components/divider/index.js +3 -0
- package/esm/index.js +2 -1
- package/esm/{index.module-bf0c7948.d.ts → index.module-1aaed941.d.ts} +0 -0
- package/esm/{index.module-bf0c7948.js → index.module-1aaed941.js} +1 -1
- package/esm/views/index.css +6 -27
- package/esm/views/popover.js +3 -2
- package/esm/views/static.js +3 -2
- package/hooks.js +31 -22
- package/index.js +2 -1
- package/{index.module-3391f602.d.ts → index.module-255b4286.d.ts} +0 -0
- package/{index.module-3391f602.js → index.module-255b4286.js} +1 -1
- package/modern/Component.js +2 -1
- package/modern/components/divider/Component.d.ts +8 -0
- package/modern/components/divider/Component.js +16 -0
- package/modern/components/divider/index.css +75 -0
- package/modern/components/divider/index.d.ts +1 -0
- package/modern/components/divider/index.js +3 -0
- package/modern/index.js +2 -1
- package/modern/index.module-491eb220.js +4 -0
- package/modern/views/index.css +6 -27
- package/modern/views/popover.js +3 -2
- package/modern/views/static.js +3 -2
- package/package.json +4 -4
- package/views/index.css +6 -27
- package/views/popover.js +13 -6
- package/views/static.js +21 -10
- package/modern/index.module-5493f8ee.js +0 -4
package/Component.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index_module = require('./index.module-
|
|
3
|
+
var index_module = require('./index.module-255b4286.js');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var views_popover = require('./views/popover.js');
|
|
6
6
|
var views_static = require('./views/static.js');
|
|
@@ -8,6 +8,7 @@ require('classnames');
|
|
|
8
8
|
require('date-fns/startOfMonth');
|
|
9
9
|
require('@alfalab/core-components-calendar-input');
|
|
10
10
|
require('@alfalab/core-components-date-input');
|
|
11
|
+
require('./components/divider/Component.js');
|
|
11
12
|
require('./hooks.js');
|
|
12
13
|
require('date-fns/addMonths');
|
|
13
14
|
require('date-fns/isEqual');
|
|
@@ -18,10 +19,14 @@ require('date-fns/endOfMonth');
|
|
|
18
19
|
require('@alfalab/core-components-calendar');
|
|
19
20
|
require('./utils.js');
|
|
20
21
|
|
|
22
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
23
|
+
|
|
24
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
25
|
+
|
|
21
26
|
var CalendarRange = function (_a) {
|
|
22
27
|
var _b = _a.calendarPosition, calendarPosition = _b === void 0 ? 'static' : _b, restProps = index_module.__rest(_a, ["calendarPosition"]);
|
|
23
28
|
var View = calendarPosition === 'popover' ? views_popover.CalendarRangePopover : views_static.CalendarRangeStatic;
|
|
24
|
-
return
|
|
29
|
+
return React__default.default.createElement(View, index_module.__assign({}, restProps));
|
|
25
30
|
};
|
|
26
31
|
|
|
27
32
|
exports.CalendarRange = CalendarRange;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { CalendarRangeProps } from "../../Component";
|
|
3
|
+
type Props = {
|
|
4
|
+
inputFromProps?: CalendarRangeProps['inputFromProps'];
|
|
5
|
+
inputToProps?: CalendarRangeProps['inputToProps'];
|
|
6
|
+
};
|
|
7
|
+
declare const Divider: FC<Props>;
|
|
8
|
+
export { Divider };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var cn = require('classnames');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
9
|
+
var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
|
|
10
|
+
|
|
11
|
+
var styles = {"component":"calendar-range__component_1tbg6","outer":"calendar-range__outer_1tbg6","s":"calendar-range__s_1tbg6","m":"calendar-range__m_1tbg6","l":"calendar-range__l_1tbg6","xl":"calendar-range__xl_1tbg6"};
|
|
12
|
+
require('./index.css')
|
|
13
|
+
|
|
14
|
+
var Divider = function (_a) {
|
|
15
|
+
var _b;
|
|
16
|
+
var inputFromProps = _a.inputFromProps, inputToProps = _a.inputToProps;
|
|
17
|
+
var outer = (inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.label) &&
|
|
18
|
+
(inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.labelView) === 'outer' &&
|
|
19
|
+
(inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.label) &&
|
|
20
|
+
(inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.labelView) === 'outer';
|
|
21
|
+
var size = (inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.size) || (inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.size) || 's';
|
|
22
|
+
return React__default.default.createElement("span", { className: cn__default.default(styles.component, styles[size], (_b = {}, _b[styles.outer] = outer, _b)) });
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
exports.Divider = Divider;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/* hash: 1udsd */
|
|
2
|
+
:root {
|
|
3
|
+
--color-light-graphic-primary: #0b1f35;
|
|
4
|
+
}
|
|
5
|
+
:root {
|
|
6
|
+
|
|
7
|
+
/* Hard */
|
|
8
|
+
|
|
9
|
+
/* Up */
|
|
10
|
+
|
|
11
|
+
/* Hard up */
|
|
12
|
+
}
|
|
13
|
+
:root {
|
|
14
|
+
--gap-xs: 8px;
|
|
15
|
+
}
|
|
16
|
+
:root {
|
|
17
|
+
--size-s-height: 48px;
|
|
18
|
+
--size-m-height: 56px;
|
|
19
|
+
--size-l-height: 64px;
|
|
20
|
+
--size-xl-height: 72px;
|
|
21
|
+
}
|
|
22
|
+
:root {
|
|
23
|
+
|
|
24
|
+
/* Кнопки выбора месяцев и годов */
|
|
25
|
+
|
|
26
|
+
/* Шапка */
|
|
27
|
+
|
|
28
|
+
/* День */
|
|
29
|
+
|
|
30
|
+
/* today */
|
|
31
|
+
|
|
32
|
+
/* highlighted */
|
|
33
|
+
|
|
34
|
+
/* holidays */
|
|
35
|
+
|
|
36
|
+
/* range */
|
|
37
|
+
|
|
38
|
+
/* selected */
|
|
39
|
+
|
|
40
|
+
/* disabled */
|
|
41
|
+
|
|
42
|
+
/* marker */
|
|
43
|
+
}
|
|
44
|
+
.calendar-range__component_1tbg6 {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
justify-content: center;
|
|
48
|
+
width: 16px;
|
|
49
|
+
margin: 0 var(--gap-xs)
|
|
50
|
+
}
|
|
51
|
+
.calendar-range__component_1tbg6:after {
|
|
52
|
+
content: '';
|
|
53
|
+
display: block;
|
|
54
|
+
width: 100%;
|
|
55
|
+
height: 1px;
|
|
56
|
+
background-color: var(--color-light-graphic-primary);
|
|
57
|
+
}
|
|
58
|
+
.calendar-range__outer_1tbg6 {
|
|
59
|
+
position: relative;
|
|
60
|
+
|
|
61
|
+
/* FormControl .above height + margin-bottom */
|
|
62
|
+
top: 24px;
|
|
63
|
+
}
|
|
64
|
+
.calendar-range__s_1tbg6 {
|
|
65
|
+
height: var(--size-s-height);
|
|
66
|
+
}
|
|
67
|
+
.calendar-range__m_1tbg6 {
|
|
68
|
+
height: var(--size-m-height);
|
|
69
|
+
}
|
|
70
|
+
.calendar-range__l_1tbg6 {
|
|
71
|
+
height: var(--size-l-height);
|
|
72
|
+
}
|
|
73
|
+
.calendar-range__xl_1tbg6 {
|
|
74
|
+
height: var(--size-xl-height);
|
|
75
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Component";
|
package/cssm/Component.js
CHANGED
|
@@ -8,6 +8,8 @@ require('classnames');
|
|
|
8
8
|
require('date-fns/startOfMonth');
|
|
9
9
|
require('@alfalab/core-components-calendar-input/cssm');
|
|
10
10
|
require('@alfalab/core-components-date-input/cssm');
|
|
11
|
+
require('./components/divider/Component.js');
|
|
12
|
+
require('./components/divider/index.module.css');
|
|
11
13
|
require('./hooks.js');
|
|
12
14
|
require('date-fns/addMonths');
|
|
13
15
|
require('date-fns/isEqual');
|
|
@@ -19,10 +21,14 @@ require('date-fns/endOfMonth');
|
|
|
19
21
|
require('@alfalab/core-components-calendar/cssm');
|
|
20
22
|
require('./utils.js');
|
|
21
23
|
|
|
24
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
25
|
+
|
|
26
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
27
|
+
|
|
22
28
|
var CalendarRange = function (_a) {
|
|
23
29
|
var _b = _a.calendarPosition, calendarPosition = _b === void 0 ? 'static' : _b, restProps = tslib_es6.__rest(_a, ["calendarPosition"]);
|
|
24
30
|
var View = calendarPosition === 'popover' ? views_popover.CalendarRangePopover : views_static.CalendarRangeStatic;
|
|
25
|
-
return
|
|
31
|
+
return React__default.default.createElement(View, tslib_es6.__assign({}, restProps));
|
|
26
32
|
};
|
|
27
33
|
|
|
28
34
|
exports.CalendarRange = CalendarRange;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { CalendarRangeProps } from "../../Component";
|
|
3
|
+
type Props = {
|
|
4
|
+
inputFromProps?: CalendarRangeProps['inputFromProps'];
|
|
5
|
+
inputToProps?: CalendarRangeProps['inputToProps'];
|
|
6
|
+
};
|
|
7
|
+
declare const Divider: FC<Props>;
|
|
8
|
+
export { Divider };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var cn = require('classnames');
|
|
5
|
+
var styles = require('./index.module.css');
|
|
6
|
+
|
|
7
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
8
|
+
|
|
9
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
10
|
+
var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
|
|
11
|
+
var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
|
|
12
|
+
|
|
13
|
+
var Divider = function (_a) {
|
|
14
|
+
var _b;
|
|
15
|
+
var inputFromProps = _a.inputFromProps, inputToProps = _a.inputToProps;
|
|
16
|
+
var outer = (inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.label) &&
|
|
17
|
+
(inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.labelView) === 'outer' &&
|
|
18
|
+
(inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.label) &&
|
|
19
|
+
(inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.labelView) === 'outer';
|
|
20
|
+
var size = (inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.size) || (inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.size) || 's';
|
|
21
|
+
return React__default.default.createElement("span", { className: cn__default.default(styles__default.default.component, styles__default.default[size], (_b = {}, _b[styles__default.default.outer] = outer, _b)) });
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
exports.Divider = Divider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Component";
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--color-light-graphic-primary: #0b1f35;
|
|
3
|
+
}
|
|
4
|
+
:root {
|
|
5
|
+
|
|
6
|
+
/* Hard */
|
|
7
|
+
|
|
8
|
+
/* Up */
|
|
9
|
+
|
|
10
|
+
/* Hard up */
|
|
11
|
+
}
|
|
12
|
+
:root {
|
|
13
|
+
--gap-xs: 8px;
|
|
14
|
+
}
|
|
15
|
+
:root {
|
|
16
|
+
--size-s-height: 48px;
|
|
17
|
+
--size-m-height: 56px;
|
|
18
|
+
--size-l-height: 64px;
|
|
19
|
+
--size-xl-height: 72px;
|
|
20
|
+
}
|
|
21
|
+
:root {
|
|
22
|
+
|
|
23
|
+
/* Кнопки выбора месяцев и годов */
|
|
24
|
+
|
|
25
|
+
/* Шапка */
|
|
26
|
+
|
|
27
|
+
/* День */
|
|
28
|
+
|
|
29
|
+
/* today */
|
|
30
|
+
|
|
31
|
+
/* highlighted */
|
|
32
|
+
|
|
33
|
+
/* holidays */
|
|
34
|
+
|
|
35
|
+
/* range */
|
|
36
|
+
|
|
37
|
+
/* selected */
|
|
38
|
+
|
|
39
|
+
/* disabled */
|
|
40
|
+
|
|
41
|
+
/* marker */
|
|
42
|
+
}
|
|
43
|
+
.component {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
justify-content: center;
|
|
47
|
+
width: 16px;
|
|
48
|
+
margin: 0 var(--gap-xs)
|
|
49
|
+
}
|
|
50
|
+
.component:after {
|
|
51
|
+
content: '';
|
|
52
|
+
display: block;
|
|
53
|
+
width: 100%;
|
|
54
|
+
height: 1px;
|
|
55
|
+
background-color: var(--color-light-graphic-primary);
|
|
56
|
+
}
|
|
57
|
+
.outer {
|
|
58
|
+
position: relative;
|
|
59
|
+
|
|
60
|
+
/* FormControl .above height + margin-bottom */
|
|
61
|
+
top: 24px;
|
|
62
|
+
}
|
|
63
|
+
.s {
|
|
64
|
+
height: var(--size-s-height);
|
|
65
|
+
}
|
|
66
|
+
.m {
|
|
67
|
+
height: var(--size-m-height);
|
|
68
|
+
}
|
|
69
|
+
.l {
|
|
70
|
+
height: var(--size-l-height);
|
|
71
|
+
}
|
|
72
|
+
.xl {
|
|
73
|
+
height: var(--size-xl-height);
|
|
74
|
+
}
|
package/cssm/hooks.js
CHANGED
|
@@ -8,6 +8,15 @@ var min = require('date-fns/min');
|
|
|
8
8
|
var startOfMonth = require('date-fns/startOfMonth');
|
|
9
9
|
var subMonths = require('date-fns/subMonths');
|
|
10
10
|
|
|
11
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var addMonths__default = /*#__PURE__*/_interopDefaultCompat(addMonths);
|
|
14
|
+
var isEqual__default = /*#__PURE__*/_interopDefaultCompat(isEqual);
|
|
15
|
+
var max__default = /*#__PURE__*/_interopDefaultCompat(max);
|
|
16
|
+
var min__default = /*#__PURE__*/_interopDefaultCompat(min);
|
|
17
|
+
var startOfMonth__default = /*#__PURE__*/_interopDefaultCompat(startOfMonth);
|
|
18
|
+
var subMonths__default = /*#__PURE__*/_interopDefaultCompat(subMonths);
|
|
19
|
+
|
|
11
20
|
function usePopoverViewMonthes(_a) {
|
|
12
21
|
var dateFrom = _a.dateFrom, dateTo = _a.dateTo, defaultMonth = _a.defaultMonth, resetKey = _a.resetKey;
|
|
13
22
|
var _b = React.useState(), monthFrom = _b[0], setMonthFrom = _b[1];
|
|
@@ -25,10 +34,10 @@ function usePopoverViewMonthes(_a) {
|
|
|
25
34
|
}
|
|
26
35
|
}, [dateFrom]);
|
|
27
36
|
React.useEffect(function () {
|
|
28
|
-
setMonthFrom(dateFrom ?
|
|
37
|
+
setMonthFrom(dateFrom ? startOfMonth__default.default(dateFrom).getTime() : defaultMonth);
|
|
29
38
|
}, [defaultMonth, dateFrom, resetKey]);
|
|
30
39
|
React.useEffect(function () {
|
|
31
|
-
setMonthTo(dateTo ?
|
|
40
|
+
setMonthTo(dateTo ? startOfMonth__default.default(dateTo).getTime() : monthFrom);
|
|
32
41
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33
42
|
}, [dateTo, resetKey]);
|
|
34
43
|
return {
|
|
@@ -44,44 +53,44 @@ function useStaticViewMonthes(_a) {
|
|
|
44
53
|
* Если указана начальная дата — левый месяц равен ей, иначе используется дата конца.
|
|
45
54
|
* Если обе даты не указаны, то используется дефолтный месяц
|
|
46
55
|
*/
|
|
47
|
-
var initialMonthFrom = React.useMemo(function () { return
|
|
56
|
+
var initialMonthFrom = React.useMemo(function () { return startOfMonth__default.default(selectedFrom || selectedTo || defaultMonth).getTime(); },
|
|
48
57
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
49
58
|
[]);
|
|
50
59
|
/**
|
|
51
60
|
* Правый месяц должен быть как минимум на 1 месяц больше левого
|
|
52
61
|
*/
|
|
53
62
|
var initialMonthTo = React.useMemo(function () {
|
|
54
|
-
return
|
|
55
|
-
selectedTo ?
|
|
56
|
-
|
|
63
|
+
return max__default.default([
|
|
64
|
+
selectedTo ? startOfMonth__default.default(selectedTo) : 0,
|
|
65
|
+
addMonths__default.default(initialMonthFrom, 1),
|
|
57
66
|
]).getTime();
|
|
58
67
|
},
|
|
59
68
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
60
69
|
[]);
|
|
61
70
|
if (defaultMonthPosition === 'right') {
|
|
62
71
|
initialMonthTo = initialMonthFrom;
|
|
63
|
-
initialMonthFrom =
|
|
72
|
+
initialMonthFrom = subMonths__default.default(initialMonthFrom, 1).getTime();
|
|
64
73
|
}
|
|
65
74
|
var _b = React.useState(initialMonthFrom), monthFrom = _b[0], setMonthFrom = _b[1];
|
|
66
75
|
var _c = React.useState(initialMonthTo), monthTo = _c[0], setMonthTo = _c[1];
|
|
67
76
|
var handleMonthFromChange = React.useCallback(function (newMonthFrom) {
|
|
68
77
|
setMonthFrom(newMonthFrom);
|
|
69
|
-
if (monthTo &&
|
|
70
|
-
var nextMonth =
|
|
78
|
+
if (monthTo && isEqual__default.default(newMonthFrom, monthTo)) {
|
|
79
|
+
var nextMonth = addMonths__default.default(newMonthFrom, 1).getTime();
|
|
71
80
|
setMonthTo(nextMonth);
|
|
72
81
|
}
|
|
73
82
|
}, [monthTo]);
|
|
74
83
|
var handleMonthToChange = React.useCallback(function (newMonthTo) {
|
|
75
84
|
setMonthTo(newMonthTo);
|
|
76
|
-
if (monthFrom &&
|
|
77
|
-
var prevMonth =
|
|
85
|
+
if (monthFrom && isEqual__default.default(newMonthTo, monthFrom)) {
|
|
86
|
+
var prevMonth = subMonths__default.default(newMonthTo, 1).getTime();
|
|
78
87
|
setMonthFrom(prevMonth);
|
|
79
88
|
}
|
|
80
89
|
}, [monthFrom]);
|
|
81
90
|
// eslint-disable-next-line complexity
|
|
82
91
|
React.useEffect(function () {
|
|
83
|
-
var selectedFromMonth = selectedFrom ?
|
|
84
|
-
var selectedToMonth = selectedTo ?
|
|
92
|
+
var selectedFromMonth = selectedFrom ? startOfMonth__default.default(selectedFrom).getTime() : undefined;
|
|
93
|
+
var selectedToMonth = selectedTo ? startOfMonth__default.default(selectedTo).getTime() : undefined;
|
|
85
94
|
// Проверяем, показываются ли выбранные месяцы в левой или правой части компонента
|
|
86
95
|
var fromMonthOnLeft = selectedFromMonth && selectedFromMonth === monthFrom;
|
|
87
96
|
var fromMonthOnRight = selectedFromMonth && selectedFromMonth === monthTo;
|
|
@@ -90,25 +99,25 @@ function useStaticViewMonthes(_a) {
|
|
|
90
99
|
var fromMonthOnScreen = fromMonthOnLeft || fromMonthOnRight;
|
|
91
100
|
var toMonthOnScreen = toMonthOnLeft || toMonthOnRight;
|
|
92
101
|
if (fromMonthOnLeft && toMonthOnLeft) {
|
|
93
|
-
setMonthTo(
|
|
102
|
+
setMonthTo(max__default.default([addMonths__default.default(selectedFromMonth, 1), monthTo]).getTime());
|
|
94
103
|
return;
|
|
95
104
|
}
|
|
96
105
|
if (fromMonthOnRight && toMonthOnRight) {
|
|
97
|
-
setMonthFrom(
|
|
106
|
+
setMonthFrom(min__default.default([subMonths__default.default(selectedToMonth, 1), monthFrom]).getTime());
|
|
98
107
|
return;
|
|
99
108
|
}
|
|
100
109
|
if (selectedFromMonth && selectedToMonth) {
|
|
101
110
|
setMonthFrom(selectedFromMonth);
|
|
102
|
-
setMonthTo(
|
|
111
|
+
setMonthTo(max__default.default([addMonths__default.default(selectedFromMonth, 1), selectedToMonth]).getTime());
|
|
103
112
|
return;
|
|
104
113
|
}
|
|
105
114
|
if (selectedFromMonth && !selectedToMonth && !fromMonthOnScreen) {
|
|
106
115
|
setMonthFrom(selectedFromMonth);
|
|
107
|
-
setMonthTo(
|
|
116
|
+
setMonthTo(max__default.default([addMonths__default.default(selectedFromMonth, 1), monthTo]).getTime());
|
|
108
117
|
}
|
|
109
118
|
if (selectedToMonth && !selectedFromMonth && !toMonthOnScreen) {
|
|
110
119
|
setMonthTo(selectedToMonth);
|
|
111
|
-
setMonthFrom(
|
|
120
|
+
setMonthFrom(min__default.default([subMonths__default.default(selectedToMonth, 1), monthFrom]).getTime());
|
|
112
121
|
}
|
|
113
122
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
114
123
|
}, [selectedFrom, selectedTo]);
|
|
@@ -124,15 +133,15 @@ function useSelectionProps(from, to, highlighted) {
|
|
|
124
133
|
if (from && to) {
|
|
125
134
|
return {
|
|
126
135
|
rangeComplete: true,
|
|
127
|
-
selectedFrom:
|
|
128
|
-
selectedTo:
|
|
136
|
+
selectedFrom: min__default.default([from, to]).getTime(),
|
|
137
|
+
selectedTo: max__default.default([from, to]).getTime(),
|
|
129
138
|
};
|
|
130
139
|
}
|
|
131
140
|
var dates = [from, to, highlighted].filter(function (date) { return date !== undefined; });
|
|
132
141
|
return {
|
|
133
142
|
rangeComplete: false,
|
|
134
|
-
selectedFrom: from || dates.length === 2 ?
|
|
135
|
-
selectedTo: to || dates.length === 2 ?
|
|
143
|
+
selectedFrom: from || dates.length === 2 ? min__default.default(dates).getTime() : undefined,
|
|
144
|
+
selectedTo: to || dates.length === 2 ? max__default.default(dates).getTime() : undefined,
|
|
136
145
|
};
|
|
137
146
|
}, [from, highlighted, to]);
|
|
138
147
|
}
|
package/cssm/index.js
CHANGED
|
@@ -8,6 +8,8 @@ require('classnames');
|
|
|
8
8
|
require('date-fns/startOfMonth');
|
|
9
9
|
require('@alfalab/core-components-calendar-input/cssm');
|
|
10
10
|
require('@alfalab/core-components-date-input/cssm');
|
|
11
|
+
require('./components/divider/Component.js');
|
|
12
|
+
require('./components/divider/index.module.css');
|
|
11
13
|
require('./hooks.js');
|
|
12
14
|
require('date-fns/addMonths');
|
|
13
15
|
require('date-fns/isEqual');
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--color-light-graphic-primary: #0b1f35;
|
|
3
|
-
}
|
|
4
1
|
:root {
|
|
5
2
|
|
|
6
3
|
/* Hard */
|
|
@@ -9,9 +6,6 @@
|
|
|
9
6
|
|
|
10
7
|
/* Hard up */
|
|
11
8
|
}
|
|
12
|
-
:root {
|
|
13
|
-
--gap-xs: 8px;
|
|
14
|
-
}
|
|
15
9
|
:root {
|
|
16
10
|
--calendar-inner-width: 280px;
|
|
17
11
|
|
|
@@ -47,21 +41,6 @@
|
|
|
47
41
|
.component *[class*='calendarIcon_'] {
|
|
48
42
|
margin-right: 0;
|
|
49
43
|
}
|
|
50
|
-
.divider {
|
|
51
|
-
height: 48px;
|
|
52
|
-
display: flex;
|
|
53
|
-
align-items: center;
|
|
54
|
-
justify-content: center;
|
|
55
|
-
width: 16px;
|
|
56
|
-
margin: 0 var(--gap-xs)
|
|
57
|
-
}
|
|
58
|
-
.divider:after {
|
|
59
|
-
content: '';
|
|
60
|
-
display: block;
|
|
61
|
-
width: 100%;
|
|
62
|
-
height: 1px;
|
|
63
|
-
background-color: var(--color-light-graphic-primary);
|
|
64
|
-
}
|
|
65
44
|
.static .calendar {
|
|
66
45
|
width: var(--calendar-inner-width);
|
|
67
46
|
}
|
package/cssm/views/popover.js
CHANGED
|
@@ -6,16 +6,25 @@ var cn = require('classnames');
|
|
|
6
6
|
var startOfMonth = require('date-fns/startOfMonth');
|
|
7
7
|
var coreComponentsCalendarInput = require('@alfalab/core-components-calendar-input/cssm');
|
|
8
8
|
var coreComponentsDateInput = require('@alfalab/core-components-date-input/cssm');
|
|
9
|
+
var components_divider_Component = require('../components/divider/Component.js');
|
|
9
10
|
var hooks = require('../hooks.js');
|
|
10
11
|
var styles = require('./index.module.css');
|
|
12
|
+
require('../components/divider/index.module.css');
|
|
11
13
|
require('date-fns/addMonths');
|
|
12
14
|
require('date-fns/isEqual');
|
|
13
15
|
require('date-fns/max');
|
|
14
16
|
require('date-fns/min');
|
|
15
17
|
require('date-fns/subMonths');
|
|
16
18
|
|
|
19
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
20
|
+
|
|
21
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
22
|
+
var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
|
|
23
|
+
var startOfMonth__default = /*#__PURE__*/_interopDefaultCompat(startOfMonth);
|
|
24
|
+
var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
|
|
25
|
+
|
|
17
26
|
var CalendarRangePopover = function (_a) {
|
|
18
|
-
var className = _a.className, _b = _a.defaultMonth, defaultMonth = _b === void 0 ?
|
|
27
|
+
var className = _a.className, _b = _a.defaultMonth, defaultMonth = _b === void 0 ? startOfMonth__default.default(new Date()).getTime() : _b, minDate = _a.minDate, maxDate = _a.maxDate, _c = _a.valueFrom, valueFrom = _c === void 0 ? '' : _c, _d = _a.valueTo, valueTo = _d === void 0 ? '' : _d, _e = _a.onDateFromChange, onDateFromChange = _e === void 0 ? function () { return null; } : _e, _f = _a.onDateToChange, onDateToChange = _f === void 0 ? function () { return null; } : _f, _g = _a.onChange, onChange = _g === void 0 ? function () { return null; } : _g, onError = _a.onError, _h = _a.inputFromProps, inputFromProps = _h === void 0 ? {} : _h, _j = _a.inputToProps, inputToProps = _j === void 0 ? {} : _j, offDays = _a.offDays, events = _a.events, dataTestId = _a.dataTestId;
|
|
19
28
|
var _k = React.useState(valueFrom), inputFromValue = _k[0], setInputFromValue = _k[1];
|
|
20
29
|
var _l = React.useState(valueTo), inputToValue = _l[0], setInputToValue = _l[1];
|
|
21
30
|
/**
|
|
@@ -107,10 +116,10 @@ var CalendarRangePopover = function (_a) {
|
|
|
107
116
|
}
|
|
108
117
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
109
118
|
}, [hasValidateError]);
|
|
110
|
-
return (
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
119
|
+
return (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.component, className), "data-test-id": dataTestId },
|
|
120
|
+
React__default.default.createElement(coreComponentsCalendarInput.CalendarInput, tslib_es6.__assign({}, inputFromProps, { useAnchorWidth: false, calendarPosition: 'popover', popoverPosition: 'bottom-start', error: inputFromInvalid || bothInvalid || inputFromProps.error, onChange: handleFromChange, onInputChange: handleInputFromChange, onBlur: handleInputFromBlur, value: inputFromValue, minDate: minDate, maxDate: maxDate, offDays: offDays, events: events, calendarProps: tslib_es6.__assign(tslib_es6.__assign({}, inputFromProps.calendarProps), { month: monthFrom, onMonthChange: handleMonthFromChange, selectorView: 'full' }) })),
|
|
121
|
+
React__default.default.createElement(components_divider_Component.Divider, { inputFromProps: inputFromProps, inputToProps: inputToProps }),
|
|
122
|
+
React__default.default.createElement(coreComponentsCalendarInput.CalendarInput, tslib_es6.__assign({}, inputToProps, { useAnchorWidth: false, calendarPosition: 'popover', popoverPosition: 'bottom-end', error: inputToInvalid || bothInvalid || inputToProps.error, onChange: handleToChange, onInputChange: handleInputToChange, onBlur: handleInputToBlur, value: inputToValue, minDate: dateFrom || minDate, maxDate: maxDate, offDays: offDays, events: events, calendarProps: tslib_es6.__assign(tslib_es6.__assign({}, inputToProps.calendarProps), { month: monthTo, onMonthChange: handleMonthToChange, selectorView: 'full' }) }))));
|
|
114
123
|
};
|
|
115
124
|
|
|
116
125
|
exports.CalendarRangePopover = CalendarRangePopover;
|
package/cssm/views/static.js
CHANGED
|
@@ -11,14 +11,27 @@ var subMonths = require('date-fns/subMonths');
|
|
|
11
11
|
var coreComponentsCalendar = require('@alfalab/core-components-calendar/cssm');
|
|
12
12
|
var coreComponentsCalendarInput = require('@alfalab/core-components-calendar-input/cssm');
|
|
13
13
|
var coreComponentsDateInput = require('@alfalab/core-components-date-input/cssm');
|
|
14
|
+
var components_divider_Component = require('../components/divider/Component.js');
|
|
14
15
|
var hooks = require('../hooks.js');
|
|
15
16
|
var utils = require('../utils.js');
|
|
16
17
|
var styles = require('./index.module.css');
|
|
18
|
+
require('../components/divider/index.module.css');
|
|
17
19
|
require('date-fns/isEqual');
|
|
18
20
|
require('date-fns/min');
|
|
19
21
|
|
|
22
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
23
|
+
|
|
24
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
25
|
+
var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
|
|
26
|
+
var addMonths__default = /*#__PURE__*/_interopDefaultCompat(addMonths);
|
|
27
|
+
var endOfMonth__default = /*#__PURE__*/_interopDefaultCompat(endOfMonth);
|
|
28
|
+
var max__default = /*#__PURE__*/_interopDefaultCompat(max);
|
|
29
|
+
var startOfMonth__default = /*#__PURE__*/_interopDefaultCompat(startOfMonth);
|
|
30
|
+
var subMonths__default = /*#__PURE__*/_interopDefaultCompat(subMonths);
|
|
31
|
+
var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
|
|
32
|
+
|
|
20
33
|
var CalendarRangeStatic = function (_a) {
|
|
21
|
-
var className = _a.className, _b = _a.defaultMonth, defaultMonth = _b === void 0 ?
|
|
34
|
+
var className = _a.className, _b = _a.defaultMonth, defaultMonth = _b === void 0 ? startOfMonth__default.default(new Date()).getTime() : _b, _c = _a.defaultMonthPosition, defaultMonthPosition = _c === void 0 ? 'left' : _c, minDate = _a.minDate, maxDate = _a.maxDate, _d = _a.valueFrom, valueFrom = _d === void 0 ? '' : _d, _e = _a.valueTo, valueTo = _e === void 0 ? '' : _e, _f = _a.onDateFromChange, onDateFromChange = _f === void 0 ? function () { return null; } : _f, _g = _a.onDateToChange, onDateToChange = _g === void 0 ? function () { return null; } : _g, _h = _a.onChange, onChange = _h === void 0 ? function () { return null; } : _h, onError = _a.onError, _j = _a.inputFromProps, inputFromProps = _j === void 0 ? {} : _j, _k = _a.inputToProps, inputToProps = _k === void 0 ? {} : _k, offDays = _a.offDays, events = _a.events, dataTestId = _a.dataTestId;
|
|
22
35
|
var _l = React.useState(valueFrom), inputFromValue = _l[0], setInputFromValue = _l[1];
|
|
23
36
|
var _m = React.useState(valueTo), inputToValue = _m[0], setInputToValue = _m[1];
|
|
24
37
|
var dateFrom = coreComponentsCalendarInput.isValidInputValue(inputFromValue, minDate, maxDate, offDays)
|
|
@@ -148,18 +161,18 @@ var CalendarRangeStatic = function (_a) {
|
|
|
148
161
|
var CalendarToComponent = dateInputToProps.Calendar || coreComponentsCalendar.Calendar;
|
|
149
162
|
return (
|
|
150
163
|
// eslint-disable-next-line jsx-a11y/mouse-events-have-key-events
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
164
|
+
React__default.default.createElement("div", { className: cn__default.default(styles__default.default.component, styles__default.default.static, className), onMouseOver: handleMouseOver, "data-test-id": dataTestId },
|
|
165
|
+
React__default.default.createElement("div", null,
|
|
166
|
+
React__default.default.createElement(coreComponentsDateInput.DateInput, tslib_es6.__assign({}, dateInputFromProps, { mobileMode: dateInputFromProps.mobileMode === 'popover'
|
|
154
167
|
? 'input'
|
|
155
168
|
: dateInputFromProps.mobileMode, value: inputFromValue, onChange: handleInputFromChange, onClear: handleClearFrom, onBlur: handleValidInputFrom, error: bothInvalid || inputFromInvalid || dateInputFromProps.error, clear: true, block: true })),
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
169
|
+
React__default.default.createElement(CalendarFromComponent, tslib_es6.__assign({}, calendarFromProps, { className: cn__default.default(styles__default.default.calendar, calendarFromProps === null || calendarFromProps === void 0 ? void 0 : calendarFromProps.className), month: monthFrom, selectorView: 'month-only', offDays: offDays, events: events, onChange: period.updatePeriod, onMonthChange: handleMonthFromChange, minDate: minDate, maxDate: maxDate && max__default.default([maxDate, endOfMonth__default.default(subMonths__default.default(maxDate, 1))]).getTime() }, rangeProps))),
|
|
170
|
+
React__default.default.createElement(components_divider_Component.Divider, { inputFromProps: inputFromProps, inputToProps: inputToProps }),
|
|
171
|
+
React__default.default.createElement("div", null,
|
|
172
|
+
React__default.default.createElement(coreComponentsDateInput.DateInput, tslib_es6.__assign({}, dateInputToProps, { mobileMode: dateInputToProps.mobileMode === 'popover'
|
|
160
173
|
? 'input'
|
|
161
174
|
: dateInputToProps.mobileMode, value: inputToValue, onChange: handleInputToChange, onClear: handleClearTo, onBlur: handleValidInputTo, error: bothInvalid || inputToInvalid, clear: true, block: true })),
|
|
162
|
-
|
|
175
|
+
React__default.default.createElement(CalendarToComponent, tslib_es6.__assign({}, calendarToProps, { className: cn__default.default(styles__default.default.calendar, calendarToProps === null || calendarToProps === void 0 ? void 0 : calendarToProps.className), month: monthTo, selectorView: 'month-only', offDays: offDays, events: events, onChange: period.updatePeriod, onMonthChange: handleMonthToChange, minDate: minDate && startOfMonth__default.default(addMonths__default.default(minDate, 1)).getTime(), maxDate: maxDate }, rangeProps)))));
|
|
163
176
|
};
|
|
164
177
|
|
|
165
178
|
exports.CalendarRangeStatic = CalendarRangeStatic;
|
package/esm/Component.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as __rest, a as __assign } from './index.module-
|
|
1
|
+
import { _ as __rest, a as __assign } from './index.module-1aaed941.js';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { CalendarRangePopover } from './views/popover.js';
|
|
4
4
|
import { CalendarRangeStatic } from './views/static.js';
|
|
@@ -6,6 +6,7 @@ import 'classnames';
|
|
|
6
6
|
import 'date-fns/startOfMonth';
|
|
7
7
|
import '@alfalab/core-components-calendar-input/esm';
|
|
8
8
|
import '@alfalab/core-components-date-input/esm';
|
|
9
|
+
import './components/divider/Component.js';
|
|
9
10
|
import './hooks.js';
|
|
10
11
|
import 'date-fns/addMonths';
|
|
11
12
|
import 'date-fns/isEqual';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { CalendarRangeProps } from "../../Component";
|
|
3
|
+
type Props = {
|
|
4
|
+
inputFromProps?: CalendarRangeProps['inputFromProps'];
|
|
5
|
+
inputToProps?: CalendarRangeProps['inputToProps'];
|
|
6
|
+
};
|
|
7
|
+
declare const Divider: FC<Props>;
|
|
8
|
+
export { Divider };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
|
|
4
|
+
var styles = {"component":"calendar-range__component_1tbg6","outer":"calendar-range__outer_1tbg6","s":"calendar-range__s_1tbg6","m":"calendar-range__m_1tbg6","l":"calendar-range__l_1tbg6","xl":"calendar-range__xl_1tbg6"};
|
|
5
|
+
require('./index.css')
|
|
6
|
+
|
|
7
|
+
var Divider = function (_a) {
|
|
8
|
+
var _b;
|
|
9
|
+
var inputFromProps = _a.inputFromProps, inputToProps = _a.inputToProps;
|
|
10
|
+
var outer = (inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.label) &&
|
|
11
|
+
(inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.labelView) === 'outer' &&
|
|
12
|
+
(inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.label) &&
|
|
13
|
+
(inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.labelView) === 'outer';
|
|
14
|
+
var size = (inputFromProps === null || inputFromProps === void 0 ? void 0 : inputFromProps.size) || (inputToProps === null || inputToProps === void 0 ? void 0 : inputToProps.size) || 's';
|
|
15
|
+
return React.createElement("span", { className: cn(styles.component, styles[size], (_b = {}, _b[styles.outer] = outer, _b)) });
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { Divider };
|