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