@ozen-ui/kit 0.61.0 → 0.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__inner__/cjs/components/AutocompleteNext/Autocomplete.css +1 -1
- package/__inner__/cjs/components/Calendar/Calendar.js +2 -2
- package/__inner__/cjs/components/Calendar/CalendarContext.d.ts +2 -3
- package/__inner__/cjs/components/Calendar/components/CalendarGridItem/types.d.ts +2 -2
- package/__inner__/cjs/components/Calendar/components/CalendarModeRange/CalendarModeRange.d.ts +2 -2
- package/__inner__/cjs/components/Calendar/components/CalendarModeRange/CalendarModeRange.js +14 -18
- package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/index.d.ts +0 -1
- package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/index.js +0 -1
- package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.d.ts +2 -2
- package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.js +10 -18
- package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/index.d.ts +0 -1
- package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/index.js +0 -1
- package/__inner__/cjs/components/Calendar/components/Calendars/Calendars.d.ts +5 -0
- package/__inner__/cjs/components/Calendar/components/Calendars/Calendars.js +45 -0
- package/__inner__/cjs/components/Calendar/components/Calendars/index.d.ts +1 -0
- package/__inner__/cjs/components/Calendar/components/{CalendarModeSingle/components/CalendarConsumer → Calendars}/index.js +1 -1
- package/__inner__/cjs/components/Calendar/components/index.d.ts +1 -0
- package/__inner__/cjs/components/Calendar/components/index.js +1 -0
- package/__inner__/cjs/components/Calendar/constants.d.ts +1 -1
- package/__inner__/cjs/components/Calendar/constants.js +2 -2
- package/__inner__/cjs/components/Calendar/types.d.ts +60 -24
- package/__inner__/cjs/components/DataList/DataList.css +1 -1
- package/__inner__/cjs/components/DatePicker/DatePicker.css +12 -1
- package/__inner__/cjs/components/DatePicker/DatePicker.d.ts +2 -3
- package/__inner__/cjs/components/DatePicker/DatePicker.js +9 -143
- package/__inner__/cjs/components/DatePicker/components/DateInput/DateInput.js +1 -2
- package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +0 -1
- package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +1 -3
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.d.ts +2 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js +159 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.d.ts +2 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.js +247 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/formatDateForCalendar.d.ts +3 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/formatDateForCalendar.js +10 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/getOffsetDateInRange.d.ts +6 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/getOffsetDateInRange.js +32 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/getValueForDoubleProp.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/getValueForDoubleProp.js +7 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/index.d.ts +3 -0
- package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/utils/index.js +6 -0
- package/__inner__/cjs/components/DatePicker/components/index.d.ts +2 -0
- package/__inner__/cjs/components/DatePicker/components/index.js +2 -0
- package/__inner__/cjs/components/DatePicker/constants.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/constants.js +2 -1
- package/__inner__/cjs/components/DatePicker/types.d.ts +84 -16
- package/__inner__/cjs/components/DatePicker/types.js +2 -0
- package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +1 -2
- package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.d.ts +3 -0
- package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.js +16 -0
- package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/utils/getCommonPopoverProps/getCommonPopoverProps.d.ts +4 -0
- package/__inner__/cjs/components/DatePicker/utils/getCommonPopoverProps/getCommonPopoverProps.js +13 -0
- package/__inner__/cjs/components/DatePicker/utils/getCommonPopoverProps/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/utils/getCommonPopoverProps/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/utils/index.d.ts +4 -0
- package/__inner__/cjs/components/DatePicker/utils/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/utils/isValidDateString/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/utils/isValidDateString/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/utils/isValidDateString/isValidDateString.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/utils/isValidDateString/isValidDateString.js +15 -0
- package/__inner__/cjs/components/DatePicker/utils/useCalendarKeyboard/index.d.ts +1 -0
- package/__inner__/cjs/components/DatePicker/utils/useCalendarKeyboard/index.js +4 -0
- package/__inner__/cjs/components/DatePicker/utils/useCalendarKeyboard/useCalendarKeyboard.d.ts +8 -0
- package/__inner__/cjs/components/DatePicker/utils/useCalendarKeyboard/useCalendarKeyboard.js +47 -0
- package/__inner__/cjs/components/Menu/Menu.css +1 -1
- package/__inner__/cjs/components/Popover/Popover.js +2 -2
- package/__inner__/cjs/components/Popover/types.d.ts +2 -0
- package/__inner__/cjs/components/Skeleton/Skeleton.css +1 -1
- package/__inner__/cjs/hooks/useClickOutside/useClickOutside.d.ts +4 -4
- package/__inner__/cjs/hooks/useClickOutside/useClickOutside.js +7 -12
- package/__inner__/cjs/utils/date/index.d.ts +1 -0
- package/__inner__/cjs/utils/date/index.js +1 -0
- package/__inner__/cjs/utils/date/isValidDate/index.d.ts +1 -0
- package/__inner__/cjs/{components/Calendar/components/CalendarModeRange/components/CalendarConsumer → utils/date/isValidDate}/index.js +1 -1
- package/__inner__/cjs/utils/date/isValidDate/isValidDate.d.ts +1 -0
- package/__inner__/cjs/utils/date/isValidDate/isValidDate.js +7 -0
- package/__inner__/cjs/utils/date/monthDiff/monthDiff.d.ts +1 -1
- package/__inner__/cjs/utils/date/monthDiff/monthDiff.js +3 -0
- package/__inner__/esm/components/AutocompleteNext/Autocomplete.css +1 -1
- package/__inner__/esm/components/Calendar/Calendar.js +3 -3
- package/__inner__/esm/components/Calendar/CalendarContext.d.ts +2 -3
- package/__inner__/esm/components/Calendar/components/CalendarGridItem/types.d.ts +2 -2
- package/__inner__/esm/components/Calendar/components/CalendarModeRange/CalendarModeRange.d.ts +2 -2
- package/__inner__/esm/components/Calendar/components/CalendarModeRange/CalendarModeRange.js +15 -19
- package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/index.d.ts +0 -1
- package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/index.js +0 -1
- package/__inner__/esm/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.d.ts +2 -2
- package/__inner__/esm/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.js +11 -19
- package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/index.d.ts +0 -1
- package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/index.js +0 -1
- package/__inner__/esm/components/Calendar/components/Calendars/Calendars.d.ts +5 -0
- package/__inner__/esm/components/Calendar/components/Calendars/Calendars.js +41 -0
- package/__inner__/esm/components/Calendar/components/Calendars/index.d.ts +1 -0
- package/__inner__/esm/components/Calendar/components/Calendars/index.js +1 -0
- package/__inner__/esm/components/Calendar/components/index.d.ts +1 -0
- package/__inner__/esm/components/Calendar/components/index.js +1 -0
- package/__inner__/esm/components/Calendar/constants.d.ts +1 -1
- package/__inner__/esm/components/Calendar/constants.js +1 -1
- package/__inner__/esm/components/Calendar/types.d.ts +60 -24
- package/__inner__/esm/components/DataList/DataList.css +1 -1
- package/__inner__/esm/components/DatePicker/DatePicker.css +12 -1
- package/__inner__/esm/components/DatePicker/DatePicker.d.ts +2 -3
- package/__inner__/esm/components/DatePicker/DatePicker.js +13 -147
- package/__inner__/esm/components/DatePicker/components/DateInput/DateInput.js +1 -2
- package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +0 -1
- package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +0 -1
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.d.ts +2 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js +156 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/index.js +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.d.ts +2 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.js +244 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/index.js +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/formatDateForCalendar.d.ts +3 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/formatDateForCalendar.js +6 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/formatDateForCalendar/index.js +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/getOffsetDateInRange.d.ts +6 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/getOffsetDateInRange.js +28 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getOffsetDateInRange/index.js +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/getValueForDoubleProp.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/getValueForDoubleProp.js +3 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/getValueForDoubleProp/index.js +1 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/index.d.ts +3 -0
- package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/utils/index.js +3 -0
- package/__inner__/esm/components/DatePicker/components/index.d.ts +2 -0
- package/__inner__/esm/components/DatePicker/components/index.js +2 -0
- package/__inner__/esm/components/DatePicker/constants.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/constants.js +1 -0
- package/__inner__/esm/components/DatePicker/types.d.ts +84 -16
- package/__inner__/esm/components/DatePicker/types.js +1 -1
- package/__inner__/esm/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +1 -2
- package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.d.ts +3 -0
- package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.js +12 -0
- package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/index.js +1 -0
- package/__inner__/esm/components/DatePicker/utils/getCommonPopoverProps/getCommonPopoverProps.d.ts +4 -0
- package/__inner__/esm/components/DatePicker/utils/getCommonPopoverProps/getCommonPopoverProps.js +9 -0
- package/__inner__/esm/components/DatePicker/utils/getCommonPopoverProps/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/utils/getCommonPopoverProps/index.js +1 -0
- package/__inner__/esm/components/DatePicker/utils/index.d.ts +4 -0
- package/__inner__/esm/components/DatePicker/utils/index.js +4 -0
- package/__inner__/esm/components/DatePicker/utils/isValidDateString/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/utils/isValidDateString/index.js +1 -0
- package/__inner__/esm/components/DatePicker/utils/isValidDateString/isValidDateString.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/utils/isValidDateString/isValidDateString.js +11 -0
- package/__inner__/esm/components/DatePicker/utils/useCalendarKeyboard/index.d.ts +1 -0
- package/__inner__/esm/components/DatePicker/utils/useCalendarKeyboard/index.js +1 -0
- package/__inner__/esm/components/DatePicker/utils/useCalendarKeyboard/useCalendarKeyboard.d.ts +8 -0
- package/__inner__/esm/components/DatePicker/utils/useCalendarKeyboard/useCalendarKeyboard.js +43 -0
- package/__inner__/esm/components/Menu/Menu.css +1 -1
- package/__inner__/esm/components/Popover/Popover.js +2 -2
- package/__inner__/esm/components/Popover/types.d.ts +2 -0
- package/__inner__/esm/components/Skeleton/Skeleton.css +1 -1
- package/__inner__/esm/hooks/useClickOutside/useClickOutside.d.ts +4 -4
- package/__inner__/esm/hooks/useClickOutside/useClickOutside.js +7 -12
- package/__inner__/esm/utils/date/index.d.ts +1 -0
- package/__inner__/esm/utils/date/index.js +1 -0
- package/__inner__/esm/utils/date/isValidDate/index.d.ts +1 -0
- package/__inner__/esm/utils/date/isValidDate/index.js +1 -0
- package/__inner__/esm/utils/date/isValidDate/isValidDate.d.ts +1 -0
- package/__inner__/esm/utils/date/isValidDate/isValidDate.js +3 -0
- package/__inner__/esm/utils/date/monthDiff/monthDiff.d.ts +1 -1
- package/__inner__/esm/utils/date/monthDiff/monthDiff.js +3 -0
- package/package.json +5 -5
- package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/CalendarConsumer.d.ts +0 -2
- package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/CalendarConsumer.js +0 -45
- package/__inner__/cjs/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/index.d.ts +0 -1
- package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/CalendarConsumer.d.ts +0 -2
- package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/CalendarConsumer.js +0 -39
- package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/index.d.ts +0 -1
- package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/CalendarConsumer.d.ts +0 -2
- package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/CalendarConsumer.js +0 -41
- package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/index.d.ts +0 -1
- package/__inner__/esm/components/Calendar/components/CalendarModeRange/components/CalendarConsumer/index.js +0 -1
- package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/CalendarConsumer.d.ts +0 -2
- package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/CalendarConsumer.js +0 -35
- package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/index.d.ts +0 -1
- package/__inner__/esm/components/Calendar/components/CalendarModeSingle/components/CalendarConsumer/index.js +0 -1
|
@@ -4,157 +4,23 @@ exports.DatePicker = exports.cnDatePicker = void 0;
|
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
require("./DatePicker.css");
|
|
6
6
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
-
var useControlled_1 = require("../../hooks/useControlled");
|
|
8
7
|
var useThemeProps_1 = require("../../hooks/useThemeProps");
|
|
9
8
|
var classname_1 = require("../../utils/classname");
|
|
10
|
-
var
|
|
11
|
-
var isKeys_1 = require("../../utils/isKeys");
|
|
12
|
-
var Calendar_1 = require("../Calendar");
|
|
13
|
-
var Paper_1 = require("../Paper");
|
|
14
|
-
var Popover_1 = require("../Popover");
|
|
9
|
+
var getByMap_1 = require("../../utils/getByMap");
|
|
15
10
|
var components_1 = require("./components");
|
|
16
|
-
var utils_1 = require("./components/DateInput/utils");
|
|
17
11
|
var constants_1 = require("./constants");
|
|
18
|
-
var
|
|
12
|
+
var typeMap = {
|
|
13
|
+
date: components_1.DatePickerModeDate,
|
|
14
|
+
'date-range': components_1.DatePickerModeDateRange,
|
|
15
|
+
};
|
|
19
16
|
exports.cnDatePicker = (0, classname_1.cn)('DatePicker');
|
|
17
|
+
// eslint-disable-next-line react/display-name
|
|
20
18
|
exports.DatePicker = (0, react_1.forwardRef)(function (inProps, ref) {
|
|
21
19
|
var props = (0, useThemeProps_1.useThemeProps)({
|
|
22
20
|
props: inProps,
|
|
23
21
|
name: 'DatePicker',
|
|
24
22
|
});
|
|
25
|
-
var _a = props.size, size = _a === void 0 ? constants_1.DATE_PICKER_DEFAULT_SIZE : _a,
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
var _b = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
29
|
-
value: undefined,
|
|
30
|
-
defaultValue: '',
|
|
31
|
-
name: 'DatePicker',
|
|
32
|
-
state: 'inputValue',
|
|
33
|
-
}), 2), inputValue = _b[0], setInputValue = _b[1];
|
|
34
|
-
var _c = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
35
|
-
value: openProp,
|
|
36
|
-
defaultValue: defaultOpen,
|
|
37
|
-
name: 'DatePicker',
|
|
38
|
-
state: 'open',
|
|
39
|
-
}), 2), open = _c[0], setOpen = _c[1];
|
|
40
|
-
var _d = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
41
|
-
value: valueProp,
|
|
42
|
-
defaultValue: defaultValue,
|
|
43
|
-
name: 'DatePicker',
|
|
44
|
-
state: 'value',
|
|
45
|
-
}), 2), value = _d[0], setValue = _d[1];
|
|
46
|
-
/** Соотношение размера календаря к размеру элемента контроля */
|
|
47
|
-
var calendarSize = (0, utils_2.getCalendarSizeToFormElement)(size);
|
|
48
|
-
/** Вычисление border-radius по размеру компонента */
|
|
49
|
-
var radius = (0, getPaperSizeToFormElement_1.getPaperSizeToFormElement)(size);
|
|
50
|
-
var callOnChange = function (value) {
|
|
51
|
-
var formattedDate = (0, utils_2.formatStringToDate)(value);
|
|
52
|
-
setValue(formattedDate);
|
|
53
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(formattedDate);
|
|
54
|
-
lastValidDate.current = value;
|
|
55
|
-
};
|
|
56
|
-
var changeInputValue = function (e, value) {
|
|
57
|
-
setInputValue(value);
|
|
58
|
-
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(e, value);
|
|
59
|
-
if ((0, utils_1.isCompleted)(value) || value === '')
|
|
60
|
-
callOnChange(value);
|
|
61
|
-
};
|
|
62
|
-
/** Эффект — автофокусировка в текстовом поле */
|
|
63
|
-
(0, react_1.useEffect)(function () {
|
|
64
|
-
var _a;
|
|
65
|
-
if (autoFocus)
|
|
66
|
-
(_a = anchorRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
67
|
-
}, [autoFocus]);
|
|
68
|
-
/** Эффект — синхронизируем значение текстового поля со значением в списке */
|
|
69
|
-
(0, react_1.useEffect)(function () {
|
|
70
|
-
var formattedDate = (0, utils_2.formatDateToString)(value);
|
|
71
|
-
if (formattedDate !== inputValue) {
|
|
72
|
-
setInputValue(formattedDate);
|
|
73
|
-
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, formattedDate);
|
|
74
|
-
lastValidDate.current = formattedDate;
|
|
75
|
-
}
|
|
76
|
-
}, [value]);
|
|
77
|
-
/** Эффект для обработки ошибок */
|
|
78
|
-
(0, react_1.useEffect)(function () {
|
|
79
|
-
if ((0, utils_2.isInExclude)({ exclude: exclude, value: value })) {
|
|
80
|
-
onError === null || onError === void 0 ? void 0 : onError({
|
|
81
|
-
type: 'inExclude',
|
|
82
|
-
inputValue: inputValue,
|
|
83
|
-
value: value,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
if ((0, utils_2.isOutOfRange)({ minDate: minDate, maxDate: maxDate, value: value })) {
|
|
87
|
-
onError === null || onError === void 0 ? void 0 : onError({
|
|
88
|
-
type: 'outOfRange',
|
|
89
|
-
inputValue: inputValue,
|
|
90
|
-
value: value,
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
}, [value, inputValue, onError, minDate, maxDate, exclude]);
|
|
94
|
-
/** Закрытие */
|
|
95
|
-
var handleClose = function () {
|
|
96
|
-
setOpen(false);
|
|
97
|
-
onCloseProp === null || onCloseProp === void 0 ? void 0 : onCloseProp();
|
|
98
|
-
};
|
|
99
|
-
/** Открытие */
|
|
100
|
-
var handleOpen = function () {
|
|
101
|
-
setOpen(true);
|
|
102
|
-
onOpenProp === null || onOpenProp === void 0 ? void 0 : onOpenProp();
|
|
103
|
-
};
|
|
104
|
-
/** Переключатель открытия и закрытия */
|
|
105
|
-
var handleToggle = function () {
|
|
106
|
-
if (disabled)
|
|
107
|
-
return;
|
|
108
|
-
if (open)
|
|
109
|
-
handleClose();
|
|
110
|
-
else
|
|
111
|
-
handleOpen();
|
|
112
|
-
};
|
|
113
|
-
/** Открытие списка по клику на текстовом поле */
|
|
114
|
-
var handleClickOnInput = function (e) {
|
|
115
|
-
var _a;
|
|
116
|
-
handleToggle();
|
|
117
|
-
(_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onClick) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
|
|
118
|
-
};
|
|
119
|
-
/** Управление элементом контроля через клавиатуру */
|
|
120
|
-
var handleKeyDown = function (event) {
|
|
121
|
-
if ((0, isKeys_1.isKeys)(event, ['ArrowDown', 'ArrowUp']) && !open) {
|
|
122
|
-
event.preventDefault();
|
|
123
|
-
handleToggle();
|
|
124
|
-
}
|
|
125
|
-
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
|
|
126
|
-
};
|
|
127
|
-
/** Актуализация значения текстового поля после его покидания */
|
|
128
|
-
var handleBlur = function (e) {
|
|
129
|
-
var _a;
|
|
130
|
-
(_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
|
|
131
|
-
if (!inputValue)
|
|
132
|
-
return;
|
|
133
|
-
if (!(0, utils_1.isCompleted)(inputValue))
|
|
134
|
-
changeInputValue(null, lastValidDate.current);
|
|
135
|
-
};
|
|
136
|
-
/** Очистка поля */
|
|
137
|
-
var handleClear = function () {
|
|
138
|
-
changeInputValue(null, '');
|
|
139
|
-
};
|
|
140
|
-
/** Событие ввода значения в текстовом поле */
|
|
141
|
-
var handleChangeInput = function (e) {
|
|
142
|
-
var value = e.target.value;
|
|
143
|
-
changeInputValue(e, value);
|
|
144
|
-
};
|
|
145
|
-
/** Событие выбора значения из календаря */
|
|
146
|
-
var handleChangeCalendar = function (date) {
|
|
147
|
-
var formattedDate = (0, utils_2.formatDateToString)(date);
|
|
148
|
-
changeInputValue(null, formattedDate);
|
|
149
|
-
handleClose();
|
|
150
|
-
};
|
|
151
|
-
/** Предотвращаем переход фокуса с текстового поля на интерактивные элементы календаря */
|
|
152
|
-
var handleMouseDownCalendar = function (e) {
|
|
153
|
-
e.preventDefault();
|
|
154
|
-
};
|
|
155
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
156
|
-
react_1.default.createElement(components_1.DateInput, tslib_1.__assign({ size: size, hint: hint, error: error, label: label, required: required, disabled: disabled, fullWidth: fullWidth, placeholder: placeholder }, other, { renderRight: react_1.default.createElement(components_1.DatePickerRenderRight, { size: size, open: open, onClear: handleClear, clearText: clearText, hasValue: !!value, renderRight: renderRight, disableClearButton: disableClearButton }), value: inputValue, inputProps: tslib_1.__assign(tslib_1.__assign({ autoComplete: 'off' }, inputProps), { onBlur: handleBlur, onClick: handleClickOnInput, onInput: handleChangeInput }), bodyProps: { ref: anchorRef, 'aria-expanded': open }, className: (0, exports.cnDatePicker)({ size: size }, [className]), onKeyDown: handleKeyDown, ref: ref })),
|
|
157
|
-
react_1.default.createElement(Popover_1.Popover, tslib_1.__assign({ as: Paper_1.Paper, open: open, offset: [0, 4], radius: radius, anchorRef: anchorRef, onClose: handleClose, placement: "bottom-start", disableReturnFocus: true, disableEnforceFocus: true }, popoverProps),
|
|
158
|
-
react_1.default.createElement(Calendar_1.Calendar, tslib_1.__assign({ minDate: minDate, maxDate: maxDate, exclude: exclude, size: calendarSize, offsetDate: offsetDate, onMouseDown: handleMouseDownCalendar }, calendarProps, { value: value || null, onChange: handleChangeCalendar })))));
|
|
23
|
+
var _a = props.size, size = _a === void 0 ? constants_1.DATE_PICKER_DEFAULT_SIZE : _a, _b = props.mode, mode = _b === void 0 ? constants_1.DATE_PICKER_DEFAULT_MODE : _b, other = tslib_1.__rest(props, ["size", "mode"]);
|
|
24
|
+
var Component = (0, getByMap_1.getByMap)(typeMap, mode);
|
|
25
|
+
return react_1.default.createElement(Component, tslib_1.__assign({ size: size }, other, { ref: ref }));
|
|
159
26
|
});
|
|
160
|
-
exports.DatePicker.displayName = 'DatePicker';
|
|
@@ -3,12 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DateInput = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
-
var icons_1 = require("@ozen-ui/icons");
|
|
7
6
|
var useMultiRef_1 = require("../../../../hooks/useMultiRef");
|
|
8
7
|
var Input_1 = require("../../../Input");
|
|
9
8
|
var utils_1 = require("./utils");
|
|
10
9
|
exports.DateInput = (0, react_1.forwardRef)(function (_a, ref) {
|
|
11
10
|
var valueProp = _a.value, defaultValue = _a.defaultValue, other = tslib_1.__rest(_a, ["value", "defaultValue"]);
|
|
12
|
-
return (react_1.default.createElement(Input_1.Input, tslib_1.__assign({
|
|
11
|
+
return (react_1.default.createElement(Input_1.Input, tslib_1.__assign({ value: (0, utils_1.dateInputMask)(valueProp), defaultValue: (0, utils_1.dateInputMask)(defaultValue) }, other, { ref: (0, useMultiRef_1.useMultiRef)([ref]) })));
|
|
13
12
|
});
|
|
14
13
|
exports.DateInput.displayName = 'DateInput';
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dateInputMask =
|
|
4
|
-
var isCompleted = function (value) { return value.length === 10; };
|
|
5
|
-
exports.isCompleted = isCompleted;
|
|
3
|
+
exports.dateInputMask = void 0;
|
|
6
4
|
var dateInputMask = function (value) {
|
|
7
5
|
if (!value) {
|
|
8
6
|
return value;
|
package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatePickerModeDate = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
var useControlled_1 = require("../../../../hooks/useControlled");
|
|
7
|
+
var useMultiRef_1 = require("../../../../hooks/useMultiRef");
|
|
8
|
+
var isKeys_1 = require("../../../../utils/isKeys");
|
|
9
|
+
var Calendar_1 = require("../../../Calendar");
|
|
10
|
+
var Popover_1 = require("../../../Popover");
|
|
11
|
+
var index_1 = require("../../index");
|
|
12
|
+
var utils_1 = require("../../utils");
|
|
13
|
+
var index_2 = require("../index");
|
|
14
|
+
// eslint-disable-next-line react/display-name
|
|
15
|
+
exports.DatePickerModeDate = (0, react_1.forwardRef)(function (props, ref) {
|
|
16
|
+
var size = props.size, valueProp = props.value, label = props.label, defaultValue = props.defaultValue, openProp = props.open, onCloseProp = props.onClose, onOpenProp = props.onOpen, onInputChange = props.onInputChange, clearText = props.clearText, defaultOpen = props.defaultOpen, disabled = props.disabled, minDate = props.minDate, maxDate = props.maxDate, exclude = props.exclude, inputProps = props.inputProps, renderRight = props.renderRight, className = props.className, _a = props.calendars, calendars = _a === void 0 ? 1 : _a, disableClearButton = props.disableClearButton, onChange = props.onChange, onKeyDown = props.onKeyDown, autoFocus = props.autoFocus, disableCloseOnSelect = props.disableCloseOnSelect, popoverPropsProp = props.popoverProps, calendarPropsProp = props.calendarProps, onError = props.onError, other = tslib_1.__rest(props, ["size", "value", "label", "defaultValue", "open", "onClose", "onOpen", "onInputChange", "clearText", "defaultOpen", "disabled", "minDate", "maxDate", "exclude", "inputProps", "renderRight", "className", "calendars", "disableClearButton", "onChange", "onKeyDown", "autoFocus", "disableCloseOnSelect", "popoverProps", "calendarProps", "onError"]);
|
|
17
|
+
var anchorRef = (0, react_1.useRef)(null);
|
|
18
|
+
var calendarInnerRef = (0, react_1.useRef)(null);
|
|
19
|
+
var calendarRef = (0, useMultiRef_1.useMultiRef)([calendarInnerRef, calendarPropsProp === null || calendarPropsProp === void 0 ? void 0 : calendarPropsProp.ref]);
|
|
20
|
+
var lastValidDate = (0, react_1.useRef)('');
|
|
21
|
+
var _b = tslib_1.__read((0, react_1.useState)(null), 2), offsetDate = _b[0], setOffsetDate = _b[1];
|
|
22
|
+
var _c = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
23
|
+
value: undefined,
|
|
24
|
+
defaultValue: '',
|
|
25
|
+
name: 'DatePicker',
|
|
26
|
+
state: 'inputValue',
|
|
27
|
+
}), 2), inputValue = _c[0], setInputValue = _c[1];
|
|
28
|
+
var _d = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
29
|
+
value: openProp,
|
|
30
|
+
defaultValue: defaultOpen,
|
|
31
|
+
name: 'DatePicker',
|
|
32
|
+
state: 'open',
|
|
33
|
+
}), 2), open = _d[0], setOpen = _d[1];
|
|
34
|
+
var _e = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
35
|
+
value: valueProp,
|
|
36
|
+
defaultValue: defaultValue,
|
|
37
|
+
name: 'DatePicker',
|
|
38
|
+
state: 'value',
|
|
39
|
+
}), 2), value = _e[0], setValue = _e[1];
|
|
40
|
+
var popoverProps = (0, utils_1.getCommonPopoverProps)(tslib_1.__assign(tslib_1.__assign({}, props), { popoverProps: popoverPropsProp }));
|
|
41
|
+
var calendarProps = (0, utils_1.getCommonCalendarProps)(tslib_1.__assign(tslib_1.__assign({}, props), { calendarProps: calendarPropsProp, ref: calendarRef }));
|
|
42
|
+
var onOffsetDateChange = function (date) {
|
|
43
|
+
setOffsetDate(date);
|
|
44
|
+
};
|
|
45
|
+
var callOnChange = function (value) {
|
|
46
|
+
var formattedDate = (0, utils_1.formatStringToDate)(value);
|
|
47
|
+
setValue(formattedDate);
|
|
48
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(formattedDate);
|
|
49
|
+
lastValidDate.current = value;
|
|
50
|
+
};
|
|
51
|
+
var changeInputValue = function (e, value) {
|
|
52
|
+
setInputValue(value);
|
|
53
|
+
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(e, value);
|
|
54
|
+
if ((0, utils_1.isValidDateString)(value)) {
|
|
55
|
+
callOnChange(value);
|
|
56
|
+
onOffsetDateChange((0, utils_1.formatStringToDate)(value));
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
var handleExited = function () {
|
|
60
|
+
var _a;
|
|
61
|
+
onOffsetDateChange(null);
|
|
62
|
+
(_a = popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.onExited) === null || _a === void 0 ? void 0 : _a.call(popoverProps);
|
|
63
|
+
};
|
|
64
|
+
/** Enables calendar keyboard interaction */
|
|
65
|
+
var enableEnforceFocus = (0, utils_1.useCalendarKeyboard)({
|
|
66
|
+
controlRef: anchorRef,
|
|
67
|
+
calendarRef: calendarInnerRef,
|
|
68
|
+
active: open,
|
|
69
|
+
});
|
|
70
|
+
/** Эффект — автофокусировка в текстовом поле */
|
|
71
|
+
(0, react_1.useEffect)(function () {
|
|
72
|
+
var _a;
|
|
73
|
+
if (autoFocus)
|
|
74
|
+
(_a = anchorRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
75
|
+
}, [autoFocus]);
|
|
76
|
+
/** Эффект — синхронизируем значение текстового поля со значением в списке */
|
|
77
|
+
(0, react_1.useEffect)(function () {
|
|
78
|
+
var formattedDate = (0, utils_1.formatDateToString)(value);
|
|
79
|
+
if (formattedDate !== inputValue) {
|
|
80
|
+
setInputValue(formattedDate);
|
|
81
|
+
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, formattedDate);
|
|
82
|
+
lastValidDate.current = formattedDate;
|
|
83
|
+
}
|
|
84
|
+
}, [value]);
|
|
85
|
+
/** Эффект для обработки ошибок */
|
|
86
|
+
(0, react_1.useEffect)(function () {
|
|
87
|
+
if ((0, utils_1.isInExclude)({ exclude: exclude, value: value })) {
|
|
88
|
+
onError === null || onError === void 0 ? void 0 : onError({
|
|
89
|
+
type: 'inExclude',
|
|
90
|
+
inputValue: inputValue,
|
|
91
|
+
value: value,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if ((0, utils_1.isOutOfRange)({ minDate: minDate, maxDate: maxDate, value: value })) {
|
|
95
|
+
onError === null || onError === void 0 ? void 0 : onError({
|
|
96
|
+
type: 'outOfRange',
|
|
97
|
+
inputValue: inputValue,
|
|
98
|
+
value: value,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}, [value, inputValue, onError, minDate, maxDate, exclude]);
|
|
102
|
+
/** Закрытие */
|
|
103
|
+
var handleClose = function () {
|
|
104
|
+
setOpen(false);
|
|
105
|
+
onCloseProp === null || onCloseProp === void 0 ? void 0 : onCloseProp();
|
|
106
|
+
};
|
|
107
|
+
/** Открытие */
|
|
108
|
+
var handleOpen = function () {
|
|
109
|
+
if (disabled || open)
|
|
110
|
+
return;
|
|
111
|
+
setOpen(true);
|
|
112
|
+
onOpenProp === null || onOpenProp === void 0 ? void 0 : onOpenProp();
|
|
113
|
+
};
|
|
114
|
+
/** Открытие списка по клику на текстовом поле */
|
|
115
|
+
var handleClickOnInput = function (e) {
|
|
116
|
+
var _a;
|
|
117
|
+
handleOpen();
|
|
118
|
+
(_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onClick) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
|
|
119
|
+
};
|
|
120
|
+
/** Управление элементом контроля через клавиатуру */
|
|
121
|
+
var handleKeyDown = function (event) {
|
|
122
|
+
if ((0, isKeys_1.isKeys)(event, ['ArrowDown', 'ArrowUp'])) {
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
handleOpen();
|
|
125
|
+
}
|
|
126
|
+
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
|
|
127
|
+
};
|
|
128
|
+
/** Актуализация значения текстового поля после его покидания */
|
|
129
|
+
var handleBlur = function (e) {
|
|
130
|
+
var _a;
|
|
131
|
+
(_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
|
|
132
|
+
if (!inputValue)
|
|
133
|
+
return;
|
|
134
|
+
if (!(0, utils_1.isValidDateString)(inputValue))
|
|
135
|
+
changeInputValue(null, lastValidDate.current);
|
|
136
|
+
};
|
|
137
|
+
/** Очистка поля */
|
|
138
|
+
var handleClear = function () {
|
|
139
|
+
changeInputValue(null, '');
|
|
140
|
+
};
|
|
141
|
+
/** Событие ввода значения в текстовом поле */
|
|
142
|
+
var handleChangeInput = function (e) {
|
|
143
|
+
var _a;
|
|
144
|
+
var value = e.target.value;
|
|
145
|
+
changeInputValue(e, value);
|
|
146
|
+
(_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onChange) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
|
|
147
|
+
};
|
|
148
|
+
/** Событие выбора значения из календаря */
|
|
149
|
+
var handleChangeCalendar = function (date) {
|
|
150
|
+
var formattedDate = (0, utils_1.formatDateToString)(date);
|
|
151
|
+
changeInputValue(null, formattedDate);
|
|
152
|
+
if (!disableCloseOnSelect)
|
|
153
|
+
handleClose();
|
|
154
|
+
};
|
|
155
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
156
|
+
react_1.default.createElement(index_2.DateInput, tslib_1.__assign({ size: size, disabled: disabled, label: label }, other, { className: (0, index_1.cnDatePicker)({ mode: 'date' }, className), renderRight: react_1.default.createElement(index_2.DatePickerRenderRight, { size: size, open: open, onClear: handleClear, clearText: clearText, hasValue: !!value, renderRight: renderRight, disableClearButton: disableClearButton }), value: inputValue, inputProps: tslib_1.__assign(tslib_1.__assign({ autoComplete: 'off' }, inputProps), { onBlur: handleBlur, onClick: handleClickOnInput, onChange: handleChangeInput }), bodyProps: { ref: anchorRef, 'aria-expanded': open }, onKeyDown: handleKeyDown, ref: ref })),
|
|
157
|
+
react_1.default.createElement(Popover_1.Popover, tslib_1.__assign({ open: open, anchorRef: anchorRef, onClose: handleClose }, popoverProps, { disableEnforceFocus: !enableEnforceFocus, onExited: handleExited }),
|
|
158
|
+
react_1.default.createElement(Calendar_1.Calendar, tslib_1.__assign({ calendars: calendars }, calendarProps, { mode: "single", value: value || null, offsetDate: offsetDate, onOffsetDateChange: onOffsetDateChange, onChange: handleChangeCalendar })))));
|
|
159
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DatePickerModeDate';
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatePickerModeDateRange = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
var logger_1 = require("@ozen-ui/logger");
|
|
7
|
+
var useBoolean_1 = require("../../../../hooks/useBoolean");
|
|
8
|
+
var useControlled_1 = require("../../../../hooks/useControlled");
|
|
9
|
+
var useMultiRef_1 = require("../../../../hooks/useMultiRef");
|
|
10
|
+
var useMutableRef_1 = require("../../../../hooks/useMutableRef");
|
|
11
|
+
var isKeys_1 = require("../../../../utils/isKeys");
|
|
12
|
+
var Calendar_1 = require("../../../Calendar");
|
|
13
|
+
var FieldHint_1 = require("../../../FieldHint");
|
|
14
|
+
var Popover_1 = require("../../../Popover");
|
|
15
|
+
var Stack_1 = require("../../../Stack");
|
|
16
|
+
var index_1 = require("../../index");
|
|
17
|
+
var utils_1 = require("../../utils");
|
|
18
|
+
var index_2 = require("../index");
|
|
19
|
+
var utils_2 = require("./utils");
|
|
20
|
+
exports.DatePickerModeDateRange =
|
|
21
|
+
// eslint-disable-next-line react/display-name
|
|
22
|
+
(0, react_1.forwardRef)(function (props, ref) {
|
|
23
|
+
var size = props.size, error = props.error, openProp = props.open, label = props.label, onKeyDown = props.onKeyDown, onInputChange = props.onInputChange, renderLeft = props.renderLeft, renderRight = props.renderRight, required = props.required, fullWidth = props.fullWidth, placeholder = props.placeholder, hint = props.hint, disableStroke = props.disableStroke, hintProps = props.hintProps, onChange = props.onChange, labelProps = props.labelProps, popoverPropsProp = props.popoverProps, calendarPropsProp = props.calendarProps, defaultOpen = props.defaultOpen, onCloseProp = props.onClose, defaultValue = props.defaultValue, valueProp = props.value, inputProps = props.inputProps, disabled = props.disabled, className = props.className, _a = props.calendars, calendars = _a === void 0 ? 2 : _a, onError = props.onError, clearText = props.clearText, disableCloseOnSelect = props.disableCloseOnSelect, disableClearButton = props.disableClearButton, onOpenProp = props.onOpen, fieldsProps = props.fieldsProps, other = tslib_1.__rest(props, ["size", "error", "open", "label", "onKeyDown", "onInputChange", "renderLeft", "renderRight", "required", "fullWidth", "placeholder", "hint", "disableStroke", "hintProps", "onChange", "labelProps", "popoverProps", "calendarProps", "defaultOpen", "onClose", "defaultValue", "value", "inputProps", "disabled", "className", "calendars", "onError", "clearText", "disableCloseOnSelect", "disableClearButton", "onOpen", "fieldsProps"]);
|
|
24
|
+
var _b = tslib_1.__read((0, utils_2.getValueForDoubleProp)(label), 2), labelFrom = _b[0], labelTo = _b[1];
|
|
25
|
+
var _c = tslib_1.__read((0, utils_2.getValueForDoubleProp)(renderLeft), 2), renderLeftFrom = _c[0], renderLeftTo = _c[1];
|
|
26
|
+
var _d = tslib_1.__read((0, utils_2.getValueForDoubleProp)(renderRight), 2), renderRightFrom = _d[0], renderRightTo = _d[1];
|
|
27
|
+
var _e = tslib_1.__read((0, utils_2.getValueForDoubleProp)(placeholder), 2), placeholderFrom = _e[0], placeholderTo = _e[1];
|
|
28
|
+
var _f = tslib_1.__read((0, utils_2.getValueForDoubleProp)(inputProps), 2), inputPropsFrom = _f[0], inputPropsTo = _f[1];
|
|
29
|
+
var _g = tslib_1.__read((0, utils_2.getValueForDoubleProp)(labelProps), 2), labelPropsFrom = _g[0], labelPropsTo = _g[1];
|
|
30
|
+
var containerRef = (0, react_1.useRef)(null);
|
|
31
|
+
var anchorRef = (0, react_1.useRef)(null);
|
|
32
|
+
var calendarInnerRef = (0, react_1.useRef)(null);
|
|
33
|
+
var dateInputToRef = (0, react_1.useRef)(null);
|
|
34
|
+
var calendarRef = (0, useMultiRef_1.useMultiRef)([calendarInnerRef, calendarPropsProp === null || calendarPropsProp === void 0 ? void 0 : calendarPropsProp.ref]);
|
|
35
|
+
var fieldsRef = (0, useMultiRef_1.useMultiRef)([anchorRef, fieldsProps === null || fieldsProps === void 0 ? void 0 : fieldsProps.ref]);
|
|
36
|
+
var rootRef = (0, useMultiRef_1.useMultiRef)([ref, containerRef]);
|
|
37
|
+
var _h = tslib_1.__read((0, react_1.useState)(null), 2), offsetDate = _h[0], setOffsetDate = _h[1];
|
|
38
|
+
var _j = tslib_1.__read((0, react_1.useState)(null), 2), calendarPeriod = _j[0], setCalendarPeriod = _j[1];
|
|
39
|
+
var savedCalendarPeriod = (0, useMutableRef_1.useMutableRef)(calendarPeriod);
|
|
40
|
+
var lastValidDate = (0, react_1.useRef)(['', '']);
|
|
41
|
+
var _k = tslib_1.__read((0, useBoolean_1.useBoolean)(false), 2), focusInputFrom = _k[0], setFocusInputFrom = _k[1];
|
|
42
|
+
var _l = tslib_1.__read((0, useBoolean_1.useBoolean)(false), 2), focusInputTo = _l[0], setFocusInputTo = _l[1];
|
|
43
|
+
var _m = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
44
|
+
value: valueProp,
|
|
45
|
+
defaultValue: defaultValue,
|
|
46
|
+
name: 'DatePicker',
|
|
47
|
+
state: 'value',
|
|
48
|
+
}), 2), value = _m[0], setValue = _m[1];
|
|
49
|
+
var _o = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
50
|
+
value: undefined,
|
|
51
|
+
defaultValue: [],
|
|
52
|
+
name: 'DatePicker',
|
|
53
|
+
state: 'inputValue',
|
|
54
|
+
}), 2), inputValue = _o[0], setInputValue = _o[1];
|
|
55
|
+
var _p = tslib_1.__read(value || [], 2), valueFrom = _p[0], valueTo = _p[1];
|
|
56
|
+
var _q = tslib_1.__read(inputValue || [], 2), _r = _q[0], inputValueFrom = _r === void 0 ? '' : _r, _s = _q[1], inputValueTo = _s === void 0 ? '' : _s;
|
|
57
|
+
var _t = tslib_1.__read((0, useControlled_1.useControlled)({
|
|
58
|
+
value: openProp,
|
|
59
|
+
defaultValue: defaultOpen,
|
|
60
|
+
name: 'DatePicker',
|
|
61
|
+
state: 'open',
|
|
62
|
+
}), 2), open = _t[0], setOpen = _t[1];
|
|
63
|
+
var popoverProps = (0, utils_1.getCommonPopoverProps)(tslib_1.__assign(tslib_1.__assign({}, props), { popoverProps: popoverPropsProp }));
|
|
64
|
+
var calendarProps = (0, utils_1.getCommonCalendarProps)(tslib_1.__assign(tslib_1.__assign({}, props), { calendarProps: calendarPropsProp, ref: calendarRef }));
|
|
65
|
+
var onOffsetDateChange = function (date) {
|
|
66
|
+
setOffsetDate(date);
|
|
67
|
+
};
|
|
68
|
+
var onCalendarsChange = (0, react_1.useCallback)(function (date) {
|
|
69
|
+
setCalendarPeriod(date);
|
|
70
|
+
}, []);
|
|
71
|
+
/** Enables calendar keyboard interaction */
|
|
72
|
+
var enableEnforceFocusTo = (0, utils_1.useCalendarKeyboard)({
|
|
73
|
+
controlRef: dateInputToRef,
|
|
74
|
+
calendarRef: calendarInnerRef,
|
|
75
|
+
active: open,
|
|
76
|
+
});
|
|
77
|
+
var disableEnforceFocus = !enableEnforceFocusTo;
|
|
78
|
+
/** Эффект — синхронизируем значение текстового поля со значением в списке */
|
|
79
|
+
(0, react_1.useEffect)(function () {
|
|
80
|
+
var formattedDateFrom = (0, utils_1.formatDateToString)(valueFrom);
|
|
81
|
+
var formattedDateTo = (0, utils_1.formatDateToString)(valueTo);
|
|
82
|
+
if (formattedDateFrom !== inputValueFrom ||
|
|
83
|
+
formattedDateTo !== inputValueTo) {
|
|
84
|
+
setInputValue([formattedDateFrom, formattedDateTo]);
|
|
85
|
+
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, [formattedDateFrom, formattedDateTo]);
|
|
86
|
+
lastValidDate.current = [formattedDateFrom, formattedDateTo];
|
|
87
|
+
}
|
|
88
|
+
}, [valueFrom, valueTo]);
|
|
89
|
+
/** Error handling */
|
|
90
|
+
(0, react_1.useEffect)(function () {
|
|
91
|
+
if (onError) {
|
|
92
|
+
logger_1.once.error('Обработка ошибок в режиме date-range на данный момент не поддерживается.');
|
|
93
|
+
}
|
|
94
|
+
}, [onError]);
|
|
95
|
+
/** Calendar offset when interacting with inputs */
|
|
96
|
+
(0, react_1.useEffect)(function () {
|
|
97
|
+
if (!(0, utils_1.isValidDateString)(inputValueFrom) ||
|
|
98
|
+
!(0, utils_1.isValidDateString)(inputValueTo) ||
|
|
99
|
+
!savedCalendarPeriod.current)
|
|
100
|
+
return;
|
|
101
|
+
if ((focusInputFrom || focusInputTo) && open && (calendarPeriod === null || calendarPeriod === void 0 ? void 0 : calendarPeriod.length)) {
|
|
102
|
+
var firstDate = (0, utils_1.formatStringToDate)(inputValueFrom);
|
|
103
|
+
var secondDate = (0, utils_1.formatStringToDate)(inputValueTo);
|
|
104
|
+
var offset = (0, utils_2.getOffsetDateInRange)(tslib_1.__assign(tslib_1.__assign({}, (focusInputTo && { type: 'end' })), { calendarPeriod: savedCalendarPeriod.current, value: [firstDate || undefined, secondDate || undefined] }));
|
|
105
|
+
setOffsetDate(offset);
|
|
106
|
+
}
|
|
107
|
+
}, [
|
|
108
|
+
open,
|
|
109
|
+
focusInputTo,
|
|
110
|
+
inputValueTo,
|
|
111
|
+
inputValueFrom,
|
|
112
|
+
focusInputFrom,
|
|
113
|
+
calendarPeriod === null || calendarPeriod === void 0 ? void 0 : calendarPeriod.length,
|
|
114
|
+
]);
|
|
115
|
+
/** Закрытие */
|
|
116
|
+
var handleClose = function () {
|
|
117
|
+
setOpen(false);
|
|
118
|
+
onCloseProp === null || onCloseProp === void 0 ? void 0 : onCloseProp();
|
|
119
|
+
};
|
|
120
|
+
/** Открытие */
|
|
121
|
+
var handleOpen = function () {
|
|
122
|
+
if (disabled || open)
|
|
123
|
+
return;
|
|
124
|
+
setOpen(true);
|
|
125
|
+
onOpenProp === null || onOpenProp === void 0 ? void 0 : onOpenProp();
|
|
126
|
+
};
|
|
127
|
+
var callOnChange = function (value) {
|
|
128
|
+
var _a = tslib_1.__read(value || [], 2), dateFrom = _a[0], dateTo = _a[1];
|
|
129
|
+
var formattedDateFrom = (0, utils_1.formatStringToDate)(dateFrom) || undefined;
|
|
130
|
+
var formattedDateTo = (0, utils_1.formatStringToDate)(dateTo) || undefined;
|
|
131
|
+
if (formattedDateTo &&
|
|
132
|
+
formattedDateFrom &&
|
|
133
|
+
(formattedDateFrom === null || formattedDateFrom === void 0 ? void 0 : formattedDateFrom.getTime()) > (formattedDateTo === null || formattedDateTo === void 0 ? void 0 : formattedDateTo.getTime())) {
|
|
134
|
+
formattedDateTo = undefined;
|
|
135
|
+
}
|
|
136
|
+
var res = [formattedDateFrom, formattedDateTo];
|
|
137
|
+
setValue(res);
|
|
138
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(res);
|
|
139
|
+
lastValidDate.current = value;
|
|
140
|
+
};
|
|
141
|
+
var changeInputValue = function (e, value) {
|
|
142
|
+
setInputValue(value);
|
|
143
|
+
onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(e, value);
|
|
144
|
+
var _a = tslib_1.__read(value || [], 2), valueFrom = _a[0], valueTo = _a[1];
|
|
145
|
+
if ((0, utils_1.isValidDateString)(valueFrom) && (0, utils_1.isValidDateString)(valueTo))
|
|
146
|
+
callOnChange([valueFrom, valueTo]);
|
|
147
|
+
};
|
|
148
|
+
var handleExited = function () {
|
|
149
|
+
var _a;
|
|
150
|
+
onOffsetDateChange(null);
|
|
151
|
+
setCalendarPeriod(null);
|
|
152
|
+
(_a = popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.onExited) === null || _a === void 0 ? void 0 : _a.call(popoverProps);
|
|
153
|
+
};
|
|
154
|
+
/** Событие ввода значения в текстовом поле */
|
|
155
|
+
var handleChangeInputFrom = function (e) {
|
|
156
|
+
var _a;
|
|
157
|
+
var value = e.target.value;
|
|
158
|
+
(_a = inputPropsFrom === null || inputPropsFrom === void 0 ? void 0 : inputPropsFrom.onChange) === null || _a === void 0 ? void 0 : _a.call(inputPropsFrom, e);
|
|
159
|
+
changeInputValue(e, [value, inputValueTo]);
|
|
160
|
+
};
|
|
161
|
+
/** Очистка поля */
|
|
162
|
+
var handleClear = function (type) { return function () {
|
|
163
|
+
changeInputValue(null, type === 'from' ? ['', inputValueTo] : [inputValueFrom, '']);
|
|
164
|
+
}; };
|
|
165
|
+
var handleFocusInputFrom = function (e) {
|
|
166
|
+
var _a;
|
|
167
|
+
(_a = inputPropsFrom === null || inputPropsFrom === void 0 ? void 0 : inputPropsFrom.onFocus) === null || _a === void 0 ? void 0 : _a.call(inputPropsFrom, e);
|
|
168
|
+
setFocusInputFrom.on();
|
|
169
|
+
};
|
|
170
|
+
var handleFocusInputTo = function (e) {
|
|
171
|
+
var _a;
|
|
172
|
+
(_a = inputPropsTo === null || inputPropsTo === void 0 ? void 0 : inputPropsTo.onFocus) === null || _a === void 0 ? void 0 : _a.call(inputPropsTo, e);
|
|
173
|
+
setFocusInputTo.on();
|
|
174
|
+
};
|
|
175
|
+
var handleBlurInputFrom = function (e) {
|
|
176
|
+
var _a;
|
|
177
|
+
(_a = inputPropsFrom === null || inputPropsFrom === void 0 ? void 0 : inputPropsFrom.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputPropsFrom, e);
|
|
178
|
+
setFocusInputFrom.off();
|
|
179
|
+
if (!inputValue)
|
|
180
|
+
return;
|
|
181
|
+
if (!(0, utils_1.isValidDateString)(inputValueFrom)) {
|
|
182
|
+
changeInputValue(null, lastValidDate.current);
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
var handleBlurInputTo = function (e) {
|
|
186
|
+
var _a;
|
|
187
|
+
(_a = inputPropsTo === null || inputPropsTo === void 0 ? void 0 : inputPropsTo.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputPropsTo, e);
|
|
188
|
+
setFocusInputTo.off();
|
|
189
|
+
if (!inputValue)
|
|
190
|
+
return;
|
|
191
|
+
if (!(0, utils_1.isValidDateString)(inputValueTo))
|
|
192
|
+
changeInputValue(null, lastValidDate.current);
|
|
193
|
+
};
|
|
194
|
+
/** Событие ввода значения в текстовом поле */
|
|
195
|
+
var handleChangeInputTo = function (e) {
|
|
196
|
+
var _a;
|
|
197
|
+
var value = e.target.value;
|
|
198
|
+
(_a = inputPropsTo === null || inputPropsTo === void 0 ? void 0 : inputPropsTo.onChange) === null || _a === void 0 ? void 0 : _a.call(inputPropsTo, e);
|
|
199
|
+
changeInputValue(e, [inputValueFrom, value]);
|
|
200
|
+
};
|
|
201
|
+
/** Открытие списка по клику на текстовом поле */
|
|
202
|
+
var handleClickOnInputFrom = function (e) {
|
|
203
|
+
var _a;
|
|
204
|
+
handleOpen();
|
|
205
|
+
(_a = inputPropsFrom === null || inputPropsFrom === void 0 ? void 0 : inputPropsFrom.onClick) === null || _a === void 0 ? void 0 : _a.call(inputPropsFrom, e);
|
|
206
|
+
};
|
|
207
|
+
/** Открытие списка по клику на текстовом поле */
|
|
208
|
+
var handleClickOnInputTo = function (e) {
|
|
209
|
+
var _a;
|
|
210
|
+
handleOpen();
|
|
211
|
+
(_a = inputPropsTo === null || inputPropsTo === void 0 ? void 0 : inputPropsTo.onClick) === null || _a === void 0 ? void 0 : _a.call(inputPropsTo, e);
|
|
212
|
+
};
|
|
213
|
+
/** Управление элементом контроля через клавиатуру */
|
|
214
|
+
var handleKeyDown = function (event) {
|
|
215
|
+
if ((0, isKeys_1.isKeys)(event, ['ArrowDown', 'ArrowUp'])) {
|
|
216
|
+
event.preventDefault();
|
|
217
|
+
handleOpen();
|
|
218
|
+
}
|
|
219
|
+
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
|
|
220
|
+
};
|
|
221
|
+
/** Событие выбора значения из календаря */
|
|
222
|
+
var handleChangeCalendar = function (date) {
|
|
223
|
+
var _a = tslib_1.__read(date || [], 2), dateFrom = _a[0], dateTo = _a[1];
|
|
224
|
+
var formattedDate = [
|
|
225
|
+
(0, utils_1.formatDateToString)(dateFrom),
|
|
226
|
+
(0, utils_1.formatDateToString)(dateTo),
|
|
227
|
+
];
|
|
228
|
+
changeInputValue(null, formattedDate);
|
|
229
|
+
if (!disableCloseOnSelect && dateFrom && dateTo)
|
|
230
|
+
handleClose();
|
|
231
|
+
};
|
|
232
|
+
return (react_1.default.createElement("div", tslib_1.__assign({ className: (0, index_1.cnDatePicker)({
|
|
233
|
+
mode: 'date-range',
|
|
234
|
+
size: size,
|
|
235
|
+
error: error,
|
|
236
|
+
required: required,
|
|
237
|
+
disabled: disabled,
|
|
238
|
+
fullWidth: fullWidth,
|
|
239
|
+
disableStroke: disableStroke,
|
|
240
|
+
}, [className]) }, other, { ref: rootRef }),
|
|
241
|
+
react_1.default.createElement(Stack_1.Stack, tslib_1.__assign({ gap: "l", className: (0, index_1.cnDatePicker)('Fields', [fieldsProps === null || fieldsProps === void 0 ? void 0 : fieldsProps.className]) }, fieldsProps, { ref: fieldsRef }),
|
|
242
|
+
react_1.default.createElement(index_2.DateInput, { size: size, error: error, label: labelFrom, required: required, disabled: disabled, value: inputValueFrom, onKeyDown: handleKeyDown, renderLeft: renderLeftFrom, labelProps: labelPropsFrom, disableStroke: disableStroke, placeholder: placeholderFrom, renderRight: react_1.default.createElement(index_2.DatePickerRenderRight, { size: size, open: open, hasValue: !!valueFrom, clearText: clearText, renderRight: renderRightFrom, onClear: handleClear('from'), disableClearButton: disableClearButton }), inputProps: tslib_1.__assign(tslib_1.__assign({ autoComplete: 'off' }, inputPropsFrom), { onBlur: handleBlurInputFrom, onFocus: handleFocusInputFrom, onClick: handleClickOnInputFrom, onChange: handleChangeInputFrom }), "data-testid": "date-input-from", bodyProps: { 'aria-expanded': open } }),
|
|
243
|
+
react_1.default.createElement(index_2.DateInput, { size: size, error: error, label: labelTo, required: required, disabled: disabled, value: inputValueTo, onKeyDown: handleKeyDown, renderLeft: renderLeftTo, labelProps: labelPropsTo, placeholder: placeholderTo, disableStroke: disableStroke, renderRight: react_1.default.createElement(index_2.DatePickerRenderRight, { size: size, open: open, hasValue: !!valueTo, clearText: clearText, renderRight: renderRightTo, onClear: handleClear('to'), disableClearButton: disableClearButton }), inputProps: tslib_1.__assign(tslib_1.__assign({ autoComplete: 'off' }, inputPropsTo), { onBlur: handleBlurInputTo, onFocus: handleFocusInputTo, onClick: handleClickOnInputTo, onChange: handleChangeInputTo }), "data-testid": "date-input-to", bodyProps: { ref: dateInputToRef, 'aria-expanded': open } })),
|
|
244
|
+
react_1.default.createElement(FieldHint_1.FieldHint, tslib_1.__assign({ size: size, error: error, disabled: disabled }, hintProps), hint),
|
|
245
|
+
react_1.default.createElement(Popover_1.Popover, tslib_1.__assign({ open: open, anchorRef: anchorRef, onClose: handleClose }, popoverProps, { onExited: handleExited, ignoreClickOutsideRefs: [containerRef], disableEnforceFocus: disableEnforceFocus }),
|
|
246
|
+
react_1.default.createElement(Calendar_1.Calendar, tslib_1.__assign({ calendars: calendars }, calendarProps, { mode: "range", offsetDate: offsetDate, onChange: handleChangeCalendar, value: (0, utils_2.formatDateForCalendar)(value), onCalendarsChange: onCalendarsChange, onOffsetDateChange: onOffsetDateChange })))));
|
|
247
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DatePickerModeDateRange';
|