@ozen-ui/kit 0.47.2 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/DatePicker/package.json +5 -0
  2. package/__inner__/cjs/components/Alert/Alert.css +11 -12
  3. package/__inner__/cjs/components/Alert/Alert.d.ts +13 -39
  4. package/__inner__/cjs/components/Alert/Alert.js +14 -14
  5. package/__inner__/cjs/components/Alert/constants.d.ts +1 -1
  6. package/__inner__/cjs/components/Alert/constants.js +2 -2
  7. package/__inner__/cjs/components/Alert/index.d.ts +1 -0
  8. package/__inner__/cjs/components/Alert/index.js +1 -0
  9. package/__inner__/cjs/components/Alert/types.d.ts +46 -0
  10. package/__inner__/cjs/components/Alert/types.js +10 -0
  11. package/__inner__/cjs/components/Autocomplete/Autocomplete.js +57 -63
  12. package/__inner__/cjs/components/Autocomplete/helper.d.ts +6 -0
  13. package/__inner__/cjs/components/Autocomplete/types.d.ts +1 -1
  14. package/__inner__/cjs/components/Calendar/types.d.ts +1 -1
  15. package/__inner__/cjs/components/DatePicker/DatePicker.css +11 -0
  16. package/__inner__/cjs/components/DatePicker/DatePicker.d.ts +39 -0
  17. package/__inner__/cjs/components/DatePicker/DatePicker.js +160 -0
  18. package/__inner__/cjs/components/DatePicker/components/DateInput/DateInput.d.ts +6 -0
  19. package/__inner__/cjs/components/DatePicker/components/DateInput/DateInput.js +14 -0
  20. package/__inner__/cjs/components/DatePicker/components/DateInput/index.d.ts +1 -0
  21. package/__inner__/cjs/components/DatePicker/components/DateInput/index.js +4 -0
  22. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +2 -0
  23. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +20 -0
  24. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/index.d.ts +1 -0
  25. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/index.js +4 -0
  26. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/index.d.ts +1 -0
  27. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/index.js +4 -0
  28. package/__inner__/cjs/components/DatePicker/components/DatePickerRenderRight/DatePickerRenderRight.d.ts +8 -0
  29. package/__inner__/cjs/components/DatePicker/components/DatePickerRenderRight/DatePickerRenderRight.js +26 -0
  30. package/__inner__/cjs/components/DatePicker/components/DatePickerRenderRight/index.d.ts +1 -0
  31. package/__inner__/cjs/components/DatePicker/components/DatePickerRenderRight/index.js +4 -0
  32. package/__inner__/cjs/components/DatePicker/components/index.d.ts +2 -0
  33. package/__inner__/cjs/components/DatePicker/components/index.js +5 -0
  34. package/__inner__/cjs/components/DatePicker/constants.d.ts +1 -0
  35. package/__inner__/cjs/components/DatePicker/constants.js +4 -0
  36. package/__inner__/cjs/components/DatePicker/index.d.ts +2 -0
  37. package/__inner__/cjs/components/DatePicker/index.js +5 -0
  38. package/__inner__/cjs/components/DatePicker/types.d.ts +52 -0
  39. package/__inner__/cjs/components/DatePicker/types.js +2 -0
  40. package/__inner__/cjs/components/DatePicker/utils/formatDateToString/formatDateToString.d.ts +1 -0
  41. package/__inner__/cjs/components/DatePicker/utils/formatDateToString/formatDateToString.js +13 -0
  42. package/__inner__/cjs/components/DatePicker/utils/formatDateToString/index.d.ts +1 -0
  43. package/__inner__/cjs/components/DatePicker/utils/formatDateToString/index.js +4 -0
  44. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/formatStringToDate.d.ts +1 -0
  45. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +13 -0
  46. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/index.d.ts +1 -0
  47. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/index.js +4 -0
  48. package/__inner__/cjs/components/DatePicker/utils/index.d.ts +5 -0
  49. package/__inner__/cjs/components/DatePicker/utils/index.js +8 -0
  50. package/__inner__/cjs/components/DatePicker/utils/isInExclude/index.d.ts +1 -0
  51. package/__inner__/cjs/components/DatePicker/utils/isInExclude/index.js +4 -0
  52. package/__inner__/cjs/components/DatePicker/utils/isInExclude/isInExclude.d.ts +2 -0
  53. package/__inner__/cjs/components/DatePicker/utils/isInExclude/isInExclude.js +14 -0
  54. package/__inner__/cjs/components/DatePicker/utils/isOutOfRange/index.d.ts +1 -0
  55. package/__inner__/cjs/components/DatePicker/utils/isOutOfRange/index.js +4 -0
  56. package/__inner__/cjs/components/DatePicker/utils/isOutOfRange/isOutOfRange.d.ts +2 -0
  57. package/__inner__/cjs/components/DatePicker/utils/isOutOfRange/isOutOfRange.js +11 -0
  58. package/__inner__/cjs/components/DatePicker/utils/matchCalendarSizeToFormElement/index.d.ts +1 -0
  59. package/__inner__/cjs/components/DatePicker/utils/matchCalendarSizeToFormElement/index.js +4 -0
  60. package/__inner__/cjs/components/DatePicker/utils/matchCalendarSizeToFormElement/matchCalendarSizeToFormElement.d.ts +5 -0
  61. package/__inner__/cjs/components/DatePicker/utils/matchCalendarSizeToFormElement/matchCalendarSizeToFormElement.js +10 -0
  62. package/__inner__/cjs/components/Input/Input.css +0 -1
  63. package/__inner__/cjs/components/Input/Input.js +1 -1
  64. package/__inner__/cjs/components/InputNumber/utils.d.ts +1 -1
  65. package/__inner__/cjs/components/List/components/ListItemText/ListItemText.d.ts +5 -5
  66. package/__inner__/cjs/components/Slider/utils/getPositionOnRail.d.ts +1 -1
  67. package/__inner__/cjs/components/Snackbar/components/SnackbarItem/SnackbarItem.js +1 -1
  68. package/__inner__/cjs/components/ThemeProvider/types.d.ts +2 -0
  69. package/__inner__/cjs/components/Tooltip/Tooltip.css +5 -6
  70. package/__inner__/cjs/components/Tooltip/Tooltip.js +6 -2
  71. package/__inner__/cjs/components/Tooltip/constants.d.ts +1 -1
  72. package/__inner__/cjs/components/Tooltip/constants.js +2 -2
  73. package/__inner__/cjs/components/Tooltip/types.d.ts +11 -3
  74. package/__inner__/cjs/locale/locale.js +12 -0
  75. package/__inner__/esm/components/Alert/Alert.css +11 -12
  76. package/__inner__/esm/components/Alert/Alert.d.ts +13 -39
  77. package/__inner__/esm/components/Alert/Alert.js +14 -14
  78. package/__inner__/esm/components/Alert/constants.d.ts +1 -1
  79. package/__inner__/esm/components/Alert/constants.js +1 -1
  80. package/__inner__/esm/components/Alert/index.d.ts +1 -0
  81. package/__inner__/esm/components/Alert/index.js +1 -0
  82. package/__inner__/esm/components/Alert/types.d.ts +46 -0
  83. package/__inner__/esm/components/Alert/types.js +7 -0
  84. package/__inner__/esm/components/Autocomplete/Autocomplete.js +57 -63
  85. package/__inner__/esm/components/Autocomplete/helper.d.ts +6 -0
  86. package/__inner__/esm/components/Autocomplete/types.d.ts +1 -1
  87. package/__inner__/esm/components/Calendar/types.d.ts +1 -1
  88. package/__inner__/esm/components/DatePicker/DatePicker.css +11 -0
  89. package/__inner__/esm/components/DatePicker/DatePicker.d.ts +39 -0
  90. package/__inner__/esm/components/DatePicker/DatePicker.js +157 -0
  91. package/__inner__/esm/components/DatePicker/components/DateInput/DateInput.d.ts +6 -0
  92. package/__inner__/esm/components/DatePicker/components/DateInput/DateInput.js +11 -0
  93. package/__inner__/esm/components/DatePicker/components/DateInput/index.d.ts +1 -0
  94. package/__inner__/esm/components/DatePicker/components/DateInput/index.js +1 -0
  95. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +2 -0
  96. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +15 -0
  97. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/index.d.ts +1 -0
  98. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/index.js +1 -0
  99. package/__inner__/esm/components/DatePicker/components/DateInput/utils/index.d.ts +1 -0
  100. package/__inner__/esm/components/DatePicker/components/DateInput/utils/index.js +1 -0
  101. package/__inner__/esm/components/DatePicker/components/DatePickerRenderRight/DatePickerRenderRight.d.ts +8 -0
  102. package/__inner__/esm/components/DatePicker/components/DatePickerRenderRight/DatePickerRenderRight.js +22 -0
  103. package/__inner__/esm/components/DatePicker/components/DatePickerRenderRight/index.d.ts +1 -0
  104. package/__inner__/esm/components/DatePicker/components/DatePickerRenderRight/index.js +1 -0
  105. package/__inner__/esm/components/DatePicker/components/index.d.ts +2 -0
  106. package/__inner__/esm/components/DatePicker/components/index.js +2 -0
  107. package/__inner__/esm/components/DatePicker/constants.d.ts +1 -0
  108. package/__inner__/esm/components/DatePicker/constants.js +1 -0
  109. package/__inner__/esm/components/DatePicker/index.d.ts +2 -0
  110. package/__inner__/esm/components/DatePicker/index.js +2 -0
  111. package/__inner__/esm/components/DatePicker/types.d.ts +52 -0
  112. package/__inner__/esm/components/DatePicker/types.js +1 -0
  113. package/__inner__/esm/components/DatePicker/utils/formatDateToString/formatDateToString.d.ts +1 -0
  114. package/__inner__/esm/components/DatePicker/utils/formatDateToString/formatDateToString.js +9 -0
  115. package/__inner__/esm/components/DatePicker/utils/formatDateToString/index.d.ts +1 -0
  116. package/__inner__/esm/components/DatePicker/utils/formatDateToString/index.js +1 -0
  117. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/formatStringToDate.d.ts +1 -0
  118. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +9 -0
  119. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/index.d.ts +1 -0
  120. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/index.js +1 -0
  121. package/__inner__/esm/components/DatePicker/utils/index.d.ts +5 -0
  122. package/__inner__/esm/components/DatePicker/utils/index.js +5 -0
  123. package/__inner__/esm/components/DatePicker/utils/isInExclude/index.d.ts +1 -0
  124. package/__inner__/esm/components/DatePicker/utils/isInExclude/index.js +1 -0
  125. package/__inner__/esm/components/DatePicker/utils/isInExclude/isInExclude.d.ts +2 -0
  126. package/__inner__/esm/components/DatePicker/utils/isInExclude/isInExclude.js +10 -0
  127. package/__inner__/esm/components/DatePicker/utils/isOutOfRange/index.d.ts +1 -0
  128. package/__inner__/esm/components/DatePicker/utils/isOutOfRange/index.js +1 -0
  129. package/__inner__/esm/components/DatePicker/utils/isOutOfRange/isOutOfRange.d.ts +2 -0
  130. package/__inner__/esm/components/DatePicker/utils/isOutOfRange/isOutOfRange.js +7 -0
  131. package/__inner__/esm/components/DatePicker/utils/matchCalendarSizeToFormElement/index.d.ts +1 -0
  132. package/__inner__/esm/components/DatePicker/utils/matchCalendarSizeToFormElement/index.js +1 -0
  133. package/__inner__/esm/components/DatePicker/utils/matchCalendarSizeToFormElement/matchCalendarSizeToFormElement.d.ts +5 -0
  134. package/__inner__/esm/components/DatePicker/utils/matchCalendarSizeToFormElement/matchCalendarSizeToFormElement.js +7 -0
  135. package/__inner__/esm/components/Input/Input.css +0 -1
  136. package/__inner__/esm/components/Input/Input.js +1 -1
  137. package/__inner__/esm/components/InputNumber/utils.d.ts +1 -1
  138. package/__inner__/esm/components/List/components/ListItemText/ListItemText.d.ts +5 -5
  139. package/__inner__/esm/components/Slider/utils/getPositionOnRail.d.ts +1 -1
  140. package/__inner__/esm/components/Snackbar/components/SnackbarItem/SnackbarItem.js +1 -1
  141. package/__inner__/esm/components/ThemeProvider/types.d.ts +2 -0
  142. package/__inner__/esm/components/Tooltip/Tooltip.css +5 -6
  143. package/__inner__/esm/components/Tooltip/Tooltip.js +7 -3
  144. package/__inner__/esm/components/Tooltip/constants.d.ts +1 -1
  145. package/__inner__/esm/components/Tooltip/constants.js +1 -1
  146. package/__inner__/esm/components/Tooltip/types.d.ts +11 -3
  147. package/__inner__/esm/locale/locale.js +12 -0
  148. package/package.json +4 -4
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatePicker = exports.cnDatePicker = void 0;
4
+ var tslib_1 = require("tslib");
5
+ require("./DatePicker.css");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var useControlled_1 = require("../../hooks/useControlled");
8
+ var useThemeProps_1 = require("../../hooks/useThemeProps");
9
+ var classname_1 = require("../../utils/classname");
10
+ var getPaperSizeToFormElement_1 = require("../../utils/getPaperSizeToFormElement");
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");
15
+ var components_1 = require("./components");
16
+ var utils_1 = require("./components/DateInput/utils");
17
+ var constants_1 = require("./constants");
18
+ var utils_2 = require("./utils");
19
+ exports.cnDatePicker = (0, classname_1.cn)('DatePicker');
20
+ exports.DatePicker = (0, react_1.forwardRef)(function (inProps, ref) {
21
+ var props = (0, useThemeProps_1.useThemeProps)({
22
+ props: inProps,
23
+ name: 'DatePicker',
24
+ });
25
+ var _a = props.size, size = _a === void 0 ? constants_1.DATE_PICKER_DEFAULT_SIZE : _a, label = props.label, error = props.error, required = props.required, fullWidth = props.fullWidth, placeholder = props.placeholder, hint = props.hint, valueProp = props.value, 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, offsetDate = props.offsetDate, inputProps = props.inputProps, calendarProps = props.calendarProps, popoverProps = props.popoverProps, renderRight = props.renderRight, disableClearButton = props.disableClearButton, onChange = props.onChange, onKeyDown = props.onKeyDown, className = props.className, autoFocus = props.autoFocus, onError = props.onError, other = tslib_1.__rest(props, ["size", "label", "error", "required", "fullWidth", "placeholder", "hint", "value", "defaultValue", "open", "onClose", "onOpen", "onInputChange", "clearText", "defaultOpen", "disabled", "minDate", "maxDate", "exclude", "offsetDate", "inputProps", "calendarProps", "popoverProps", "renderRight", "disableClearButton", "onChange", "onKeyDown", "className", "autoFocus", "onError"]);
26
+ var anchorRef = (0, react_1.useRef)(null);
27
+ var lastValidDate = (0, react_1.useRef)('');
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 = utils_2.matchCalendarSizeToFormElement[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: !!inputValue, renderRight: renderRight, disableClearButton: disableClearButton }), value: inputValue, inputProps: tslib_1.__assign(tslib_1.__assign({}, inputProps), { onBlur: handleBlur, onClick: handleClickOnInput, onInput: handleChangeInput }), bodyProps: { ref: anchorRef, 'aria-expanded': open }, className: (0, exports.cnDatePicker)('', [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 })))));
159
+ });
160
+ exports.DatePicker.displayName = 'DatePicker';
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import type { InputProps } from '../../../Input';
3
+ export declare const DateInput: React.ForwardRefExoticComponent<Omit<Omit<InputProps, "value" | "defaultValue"> & {
4
+ value?: string | undefined;
5
+ defaultValue?: string | undefined;
6
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateInput = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var icons_1 = require("@ozen-ui/icons");
7
+ var useMultiRef_1 = require("../../../../hooks/useMultiRef");
8
+ var Input_1 = require("../../../Input");
9
+ var utils_1 = require("./utils");
10
+ exports.DateInput = (0, react_1.forwardRef)(function (_a, ref) {
11
+ 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({ renderRight: icons_1.CalendarIcon, value: (0, utils_1.dateInputMask)(valueProp), defaultValue: (0, utils_1.dateInputMask)(defaultValue) }, other, { ref: (0, useMultiRef_1.useMultiRef)([ref]) })));
13
+ });
14
+ exports.DateInput.displayName = 'DateInput';
@@ -0,0 +1 @@
1
+ export * from './DateInput';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./DateInput"), exports);
@@ -0,0 +1,2 @@
1
+ export declare const isCompleted: (value: string) => boolean;
2
+ export declare const dateInputMask: (value: string | undefined) => string | undefined;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dateInputMask = exports.isCompleted = void 0;
4
+ var isCompleted = function (value) { return value.length === 10; };
5
+ exports.isCompleted = isCompleted;
6
+ var dateInputMask = function (value) {
7
+ if (!value) {
8
+ return value;
9
+ }
10
+ var newValue = value.replace(/[^0-9.]/g, ''); // Запрещаем ввод, кроме цифр и точек
11
+ newValue = newValue.replace(/\.\.+/g, '..'); // Удаляем лишние точки
12
+ newValue = newValue.replace(/^(\d)\.$/g, '0$1.'); // Добавляем 0 в D.
13
+ newValue = newValue.replace(/^(\d\d)(\d)$/g, '$1.$2'); // Добавляем точку в DD.M
14
+ newValue = newValue.replace(/^(\d\d)\.(\d)\.$/g, '$1.0$2.'); // Добавляем 0 в DD.M.
15
+ newValue = newValue.replace(/^(\d\d\.\d\d)(\d)$/g, '$1.$2'); // Добавляем точку в DD.MM.Y
16
+ if (newValue.length > 10)
17
+ newValue = newValue.slice(0, 10); // Ограничиваем длину
18
+ return newValue;
19
+ };
20
+ exports.dateInputMask = dateInputMask;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./dateInputMask"), exports);
@@ -0,0 +1 @@
1
+ export * from './dateInputMask';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./dateInputMask"), exports);
@@ -0,0 +1,8 @@
1
+ import type { FC, MouseEvent } from 'react';
2
+ import type { DatePickerProps } from '../../index';
3
+ type AutocompleteRenderRightProps = {
4
+ onClear: (e: MouseEvent<HTMLElement>) => void;
5
+ hasValue: boolean;
6
+ } & Pick<DatePickerProps, 'clearText' | 'renderRight' | 'size' | 'open' | 'disableClearButton'>;
7
+ export declare const DatePickerRenderRight: FC<AutocompleteRenderRightProps>;
8
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatePickerRenderRight = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ var icons_1 = require("@ozen-ui/icons");
7
+ var FieldControl_1 = require("../../../FieldControl");
8
+ var FieldIcon_1 = require("../../../FieldIcon");
9
+ var IconButtonNext_1 = require("../../../IconButtonNext");
10
+ var index_1 = require("../../index");
11
+ var DatePickerRenderRight = function (_a) {
12
+ var disableClearButton = _a.disableClearButton, renderRight = _a.renderRight, clearText = _a.clearText, hasValue = _a.hasValue, onClear = _a.onClear, open = _a.open, size = _a.size;
13
+ var _b = tslib_1.__read((0, FieldControl_1.useFieldControl)(), 1), _c = _b[0], focused = _c.focused, hovered = _c.hovered;
14
+ var isVisibleClearButton = !!(hovered || open || focused) && hasValue;
15
+ var handleClear = function (e) {
16
+ e.preventDefault();
17
+ onClear === null || onClear === void 0 ? void 0 : onClear(e);
18
+ };
19
+ return (react_1.default.createElement("div", { className: (0, index_1.cnDatePicker)('RenderRight') },
20
+ !disableClearButton && (react_1.default.createElement(IconButtonNext_1.IconButton, { size: size, type: "button", tabIndex: -1, icon: icons_1.CrossIcon, title: clearText, variant: "function", onClick: handleClear, "aria-label": clearText, className: (0, index_1.cnDatePicker)('ClearButton', {
21
+ visibility: isVisibleClearButton,
22
+ }), compressed: true })),
23
+ react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: renderRight }),
24
+ react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: icons_1.CalendarIcon, size: size })));
25
+ };
26
+ exports.DatePickerRenderRight = DatePickerRenderRight;
@@ -0,0 +1 @@
1
+ export * from './DatePickerRenderRight';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./DatePickerRenderRight"), exports);
@@ -0,0 +1,2 @@
1
+ export * from './DateInput';
2
+ export * from './DatePickerRenderRight';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./DateInput"), exports);
5
+ tslib_1.__exportStar(require("./DatePickerRenderRight"), exports);
@@ -0,0 +1 @@
1
+ export declare const DATE_PICKER_DEFAULT_SIZE = "m";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DATE_PICKER_DEFAULT_SIZE = void 0;
4
+ exports.DATE_PICKER_DEFAULT_SIZE = 'm';
@@ -0,0 +1,2 @@
1
+ export * from './DatePicker';
2
+ export * from './types';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./DatePicker"), exports);
5
+ tslib_1.__exportStar(require("./types"), exports);
@@ -0,0 +1,52 @@
1
+ import type { ComponentPropsWithRef, ChangeEvent } from 'react';
2
+ import type { CalendarBaseProps, CalendarOnChange } from '../Calendar';
3
+ import type { InputProps } from '../Input';
4
+ import type { PopoverBaseProps } from '../Popover';
5
+ export type DatePickerOnChange = CalendarOnChange;
6
+ export type DatePickerOnInputChange = (e: ChangeEvent<HTMLInputElement> | null, value: string) => void;
7
+ export type DatePickerPropOnError = (props: {
8
+ type: 'outOfRange';
9
+ inputValue?: string;
10
+ value?: Date | null;
11
+ } | {
12
+ type: 'inExclude';
13
+ inputValue?: string;
14
+ value?: Date | null;
15
+ }) => void;
16
+ type DatePickerOpenControlledProps = {
17
+ /** Текущее состояние списка. Если `true`, список отображается. */
18
+ open?: boolean;
19
+ /** Состояние открытие по умолчанию (неконтролируемый компонент) */
20
+ defaultOpen?: never;
21
+ };
22
+ type DatePickerOpenUncontrolledProps = {
23
+ /** Текущее состояние списка. Если `true`, список отображается. */
24
+ open?: never;
25
+ /** Состояние открытие по умолчанию (неконтролируемый компонент) */
26
+ defaultOpen?: boolean;
27
+ };
28
+ export type DatePickerProps = {
29
+ /** Выбранная дата */
30
+ value?: Date | null;
31
+ /** Выбранная дата по умолчанию (неконтролируемое состояние) */
32
+ defaultValue?: Date | null;
33
+ /** Функция обратного вызова, которая будет вызвана при выборе значения */
34
+ onChange?: DatePickerOnChange;
35
+ /** Введённое значение в текстовом поле */
36
+ onInputChange?: DatePickerOnInputChange;
37
+ /** Функция обратного вызова, которая будет вызвана когда компонент запрашивает закрытие */
38
+ onClose?: () => void;
39
+ /** Функция обратного вызова, которая будет вызвана когда компонент запрашивает открытие */
40
+ onOpen?: () => void;
41
+ /** Свойства компонента Calendar */
42
+ calendarProps?: CalendarBaseProps;
43
+ /** Свойства компонента Popover */
44
+ popoverProps?: PopoverBaseProps;
45
+ /** Текст для кнопки очистки поля */
46
+ clearText?: string;
47
+ /** Если {true}, то не отображает кнопку закрытия */
48
+ disableClearButton?: boolean;
49
+ /** Функция обратно вызова, которая сработает если пользователь ввёл дату с ошибкой */
50
+ onError?: DatePickerPropOnError;
51
+ } & Omit<ComponentPropsWithRef<'div'>, 'onChange' | 'defaultValue' | 'onError'> & Pick<CalendarBaseProps, 'minDate' | 'maxDate' | 'exclude' | 'offsetDate'> & Pick<InputProps, 'label' | 'hint' | 'onKeyDown' | 'size' | 'error' | 'required' | 'fullWidth' | 'disabled' | 'renderLeft' | 'renderRight' | 'placeholder' | 'inputProps'> & (DatePickerOpenControlledProps | DatePickerOpenUncontrolledProps);
52
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export declare const formatDateToString: (date: Date | undefined | null) => string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatDateToString = void 0;
4
+ var formatDateToString = function (date) {
5
+ if (!date) {
6
+ return '';
7
+ }
8
+ var year = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date);
9
+ var month = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(date);
10
+ var day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);
11
+ return "".concat(day, ".").concat(month, ".").concat(year);
12
+ };
13
+ exports.formatDateToString = formatDateToString;
@@ -0,0 +1 @@
1
+ export * from './formatDateToString';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./formatDateToString"), exports);
@@ -0,0 +1 @@
1
+ export declare const formatStringToDate: (value: string) => Date | null;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatStringToDate = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var utils_1 = require("../../components/DateInput/utils");
6
+ var formatStringToDate = function (value) {
7
+ var _a = tslib_1.__read(value.split('.'), 3), date = _a[0], month = _a[1], year = _a[2];
8
+ if (!(date && month && year) || !(0, utils_1.isCompleted)(value)) {
9
+ return null;
10
+ }
11
+ return new Date(+year, +month - 1, +date);
12
+ };
13
+ exports.formatStringToDate = formatStringToDate;
@@ -0,0 +1 @@
1
+ export * from './formatStringToDate';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./formatStringToDate"), exports);
@@ -0,0 +1,5 @@
1
+ export * from './matchCalendarSizeToFormElement';
2
+ export * from './formatDateToString';
3
+ export * from './formatStringToDate';
4
+ export * from './isOutOfRange';
5
+ export * from './isInExclude';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./matchCalendarSizeToFormElement"), exports);
5
+ tslib_1.__exportStar(require("./formatDateToString"), exports);
6
+ tslib_1.__exportStar(require("./formatStringToDate"), exports);
7
+ tslib_1.__exportStar(require("./isOutOfRange"), exports);
8
+ tslib_1.__exportStar(require("./isInExclude"), exports);
@@ -0,0 +1 @@
1
+ export * from './isInExclude';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./isInExclude"), exports);
@@ -0,0 +1,2 @@
1
+ import type { DatePickerProps } from '../../index';
2
+ export declare const isInExclude: ({ exclude, value, }: Pick<DatePickerProps, 'exclude' | 'value'>) => boolean;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isInExclude = void 0;
4
+ var isInExclude = function (_a) {
5
+ var _b, _c;
6
+ var exclude = _a.exclude, value = _a.value;
7
+ if (!exclude || !value) {
8
+ return false;
9
+ }
10
+ return (!!(exclude.date &&
11
+ !((_b = exclude.date) === null || _b === void 0 ? void 0 : _b.every(function (date) { return date.getTime() !== value.getTime(); }))) ||
12
+ !!(exclude.day && !((_c = exclude.day) === null || _c === void 0 ? void 0 : _c.every(function (date) { return date !== value.getDay(); }))));
13
+ };
14
+ exports.isInExclude = isInExclude;
@@ -0,0 +1 @@
1
+ export * from './isOutOfRange';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./isOutOfRange"), exports);
@@ -0,0 +1,2 @@
1
+ import type { DatePickerProps } from '../../index';
2
+ export declare const isOutOfRange: ({ minDate, maxDate, value, }: Pick<DatePickerProps, 'minDate' | 'maxDate' | 'value'>) => boolean;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isOutOfRange = void 0;
4
+ var isOutOfRange = function (_a) {
5
+ var minDate = _a.minDate, maxDate = _a.maxDate, value = _a.value;
6
+ if (!minDate || !maxDate || !value) {
7
+ return false;
8
+ }
9
+ return (minDate.getTime() > (value === null || value === void 0 ? void 0 : value.getTime()) || maxDate.getTime() < (value === null || value === void 0 ? void 0 : value.getTime()));
10
+ };
11
+ exports.isOutOfRange = isOutOfRange;
@@ -0,0 +1 @@
1
+ export * from './matchCalendarSizeToFormElement';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./matchCalendarSizeToFormElement"), exports);
@@ -0,0 +1,5 @@
1
+ import type { FormElementSizeVariant } from '../../../../types/FormElementSizeVariant';
2
+ import type { CalendarSizeVariant } from '../../../Calendar';
3
+ export declare const matchCalendarSizeToFormElement: {
4
+ [key in FormElementSizeVariant]: CalendarSizeVariant;
5
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.matchCalendarSizeToFormElement = void 0;
4
+ exports.matchCalendarSizeToFormElement = {
5
+ '2xs': 's',
6
+ xs: 's',
7
+ s: 's',
8
+ m: 'm',
9
+ l: 'l',
10
+ };
@@ -25,7 +25,6 @@
25
25
  color: var(--textfield-color);
26
26
  box-sizing: border-box;
27
27
  block-size: var(--textfield-input-height);
28
-
29
28
  font: inherit;
30
29
  }
31
30
  .Input-Field::placeholder {
@@ -41,7 +41,7 @@ exports.Input = (0, react_1.forwardRef)(function (inProps, ref) {
41
41
  },
42
42
  });
43
43
  return (react_1.default.createElement(FieldControl_1.FieldControl, tslib_1.__assign({ size: size, error: error, disabled: disabled, required: required, fullWidth: fullWidth }, other, { ref: ref, className: (0, exports.cnInput)({}, [className]) }),
44
- react_1.default.createElement("label", tslib_1.__assign({}, bodyProps, { className: (0, exports.cnInput)('Body'), ref: (0, useMultiRef_1.useMultiRef)([bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.ref, bodyInnerRef]) }),
44
+ react_1.default.createElement("label", tslib_1.__assign({}, bodyProps, { className: (0, exports.cnInput)('Body', [bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.className]), ref: (0, useMultiRef_1.useMultiRef)([bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.ref, bodyInnerRef]) }),
45
45
  react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: renderLeft }),
46
46
  react_1.default.createElement("div", { className: (0, exports.cnInput)('FieldContainer') },
47
47
  react_1.default.createElement(FieldLabel_1.FieldLabel, tslib_1.__assign({}, labelProps, { ref: labelRef || (labelProps === null || labelProps === void 0 ? void 0 : labelProps.ref), className: labelProps === null || labelProps === void 0 ? void 0 : labelProps.className }), label),
@@ -3,7 +3,7 @@ import type { InputNumberValue, InputNumberCountDirection } from './types';
3
3
  export declare const isValidValue: (value?: InputNumberValue) => boolean;
4
4
  export declare const isInputInvalid: (event: KeyboardEvent<HTMLInputElement>) => boolean;
5
5
  export declare const getValue: ({ value, step, min, max, countDirection, }: {
6
- value?: InputNumberValue | undefined;
6
+ value?: InputNumberValue;
7
7
  countDirection: InputNumberCountDirection;
8
8
  min: number;
9
9
  max: number;
@@ -1,26 +1,26 @@
1
1
  import './ListItemText.css';
2
2
  import React from 'react';
3
3
  import type { HTMLAttributes } from 'react';
4
- import type { TypographyProps } from '../../../Typography';
4
+ import type { TypographyProps, TypographyBaseProps } from '../../../Typography';
5
5
  export type ListItemTextProps = {
6
6
  children?: never;
7
7
  /** Основной текст */
8
- primary: string | number;
8
+ primary: TypographyBaseProps['children'];
9
9
  /** Свойства компонента Typography для текста primary */
10
10
  primaryTypographyProps?: TypographyProps<'span'>;
11
11
  /** Второстепенный текст */
12
- secondary?: string | number;
12
+ secondary?: TypographyBaseProps['children'];
13
13
  /** Свойства компонента Typography для текста secondary */
14
14
  secondaryTypographyProps?: TypographyProps<'span'>;
15
15
  } & HTMLAttributes<HTMLDivElement>;
16
16
  export declare const ListItemText: React.ForwardRefExoticComponent<{
17
17
  children?: undefined;
18
18
  /** Основной текст */
19
- primary: string | number;
19
+ primary: TypographyBaseProps['children'];
20
20
  /** Свойства компонента Typography для текста primary */
21
21
  primaryTypographyProps?: TypographyProps<"span"> | undefined;
22
22
  /** Второстепенный текст */
23
- secondary?: string | number | undefined;
23
+ secondary?: TypographyBaseProps['children'];
24
24
  /** Свойства компонента Typography для текста secondary */
25
25
  secondaryTypographyProps?: TypographyProps<"span"> | undefined;
26
26
  } & React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
@@ -1,5 +1,5 @@
1
1
  export declare const getPositionOnRail: ({ value, min, max, }: {
2
- value?: number | undefined;
2
+ value?: number;
3
3
  min: number;
4
4
  max: number;
5
5
  }) => number;
@@ -89,6 +89,6 @@ exports.SnackbarItem = (0, react_1.forwardRef)(function (_a, ref) {
89
89
  }, className: (0, exports.cnSnackbarItem)({
90
90
  anchorHorizontal: horizontal,
91
91
  anchorVertical: vertical,
92
- }) }, renderContent() || (react_1.default.createElement(Alert_1.Alert, { color: "dark", title: title, status: status, onClose: handleClose }, description))))));
92
+ }) }, renderContent() || (react_1.default.createElement(Alert_1.Alert, { title: title, status: status, onClose: handleClose, inverse: true }, description))))));
93
93
  });
94
94
  exports.SnackbarItem.displayName = 'SnackbarItem';