@ozen-ui/kit 0.74.0 → 0.75.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 (153) hide show
  1. package/__inner__/cjs/components/Calendar/Calendar.js +26 -2
  2. package/__inner__/cjs/components/Calendar/CalendarContext.d.ts +8 -1
  3. package/__inner__/cjs/components/Calendar/CalendarContext.js +10 -1
  4. package/__inner__/cjs/components/Calendar/__tests__/utils.d.ts +11 -0
  5. package/__inner__/cjs/components/Calendar/__tests__/utils.js +58 -0
  6. package/__inner__/cjs/components/Calendar/components/CalendarGrid/CalendarGrid.js +4 -3
  7. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendarItem.js +25 -2
  8. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendarItemContext.d.ts +1 -0
  9. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendarItemContext.js +1 -0
  10. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/CalendarModeRange.js +68 -13
  11. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.js +62 -16
  12. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.js +6 -7
  13. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/CalendarSwitcherText.d.ts +3 -0
  14. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/CalendarSwitcherText.js +13 -0
  15. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/index.d.ts +2 -0
  16. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/index.js +5 -0
  17. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/types.d.ts +4 -0
  18. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/types.js +2 -0
  19. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/index.d.ts +1 -0
  20. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/index.js +4 -0
  21. package/__inner__/cjs/components/Calendar/constants.d.ts +2 -0
  22. package/__inner__/cjs/components/Calendar/constants.js +7 -1
  23. package/__inner__/cjs/components/Calendar/index.d.ts +1 -0
  24. package/__inner__/cjs/components/Calendar/index.js +1 -0
  25. package/__inner__/cjs/components/Calendar/types.d.ts +13 -5
  26. package/__inner__/cjs/components/Calendar/utils.d.ts +10 -1
  27. package/__inner__/cjs/components/Calendar/utils.js +12 -1
  28. package/__inner__/cjs/components/DatePicker/components/DateInput/DateInput.js +4 -3
  29. package/__inner__/cjs/components/DatePicker/components/DateInput/types.d.ts +6 -2
  30. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +2 -1
  31. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +67 -7
  32. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js +32 -20
  33. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.js +74 -51
  34. package/__inner__/cjs/components/DatePicker/constants.d.ts +2 -0
  35. package/__inner__/cjs/components/DatePicker/constants.js +4 -1
  36. package/__inner__/cjs/components/DatePicker/types.d.ts +10 -6
  37. package/__inner__/cjs/components/DatePicker/types.js +3 -1
  38. package/__inner__/cjs/components/DatePicker/utils/formatDateToString/formatDateToString.d.ts +2 -1
  39. package/__inner__/cjs/components/DatePicker/utils/formatDateToString/formatDateToString.js +18 -5
  40. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/formatStringToDate.d.ts +2 -1
  41. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +6 -5
  42. package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.js +2 -2
  43. package/__inner__/cjs/components/DatePicker/utils/index.d.ts +2 -0
  44. package/__inner__/cjs/components/DatePicker/utils/index.js +2 -0
  45. package/__inner__/cjs/components/DatePicker/utils/isValidDateString/isValidDateString.d.ts +2 -1
  46. package/__inner__/cjs/components/DatePicker/utils/isValidDateString/isValidDateString.js +9 -8
  47. package/__inner__/cjs/components/DatePicker/utils/maskPastedDate/index.d.ts +1 -0
  48. package/__inner__/cjs/components/DatePicker/utils/maskPastedDate/index.js +4 -0
  49. package/__inner__/cjs/components/DatePicker/utils/maskPastedDate/maskPastedDate.d.ts +6 -0
  50. package/__inner__/cjs/components/DatePicker/utils/maskPastedDate/maskPastedDate.js +43 -0
  51. package/__inner__/cjs/components/DatePicker/utils/parseDateString/index.d.ts +1 -0
  52. package/__inner__/cjs/components/DatePicker/utils/parseDateString/index.js +4 -0
  53. package/__inner__/cjs/components/DatePicker/utils/parseDateString/parseDateString.d.ts +6 -0
  54. package/__inner__/cjs/components/DatePicker/utils/parseDateString/parseDateString.js +66 -0
  55. package/__inner__/cjs/components/ListCardItem/hooks/useListCardItemRatio.js +10 -14
  56. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/b-business-dark/color-b-business-dark.css +1 -1
  57. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/b-business-default/color-b-business-default.css +1 -1
  58. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/ozen-dark/color-ozen-dark.css +1 -1
  59. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/ozen-default/color-ozen-default.css +1 -1
  60. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/vip-dark/color-vip-dark.css +1 -1
  61. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/vip-default/color-vip-default.css +1 -1
  62. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/shadow/ozen-default/shadow-ozen-default.css +1 -1
  63. package/__inner__/cjs/components/Stack/Stack.css +3 -0
  64. package/__inner__/cjs/components/Stack/Stack.js +2 -1
  65. package/__inner__/cjs/components/Stack/constants.d.ts +1 -0
  66. package/__inner__/cjs/components/Stack/constants.js +2 -1
  67. package/__inner__/cjs/components/Stack/types.d.ts +4 -0
  68. package/__inner__/cjs/components/Stack/types.js +2 -1
  69. package/__inner__/cjs/hooks/useDevEffect/index.d.ts +1 -0
  70. package/__inner__/cjs/hooks/useDevEffect/index.js +4 -0
  71. package/__inner__/cjs/hooks/useDevEffect/useDevEffect.d.ts +3 -0
  72. package/__inner__/cjs/hooks/useDevEffect/useDevEffect.js +13 -0
  73. package/__inner__/cjs/hooks/useIntersectionObserver/useIntersectionObserver.js +3 -2
  74. package/__inner__/cjs/locale/locale.js +39 -3
  75. package/__inner__/cjs/utils/array/createFilled/createFilledArray.d.ts +1 -1
  76. package/__inner__/cjs/utils/array/createFilled/createFilledArray.js +6 -1
  77. package/__inner__/esm/components/Calendar/Calendar.js +27 -3
  78. package/__inner__/esm/components/Calendar/CalendarContext.d.ts +8 -1
  79. package/__inner__/esm/components/Calendar/CalendarContext.js +10 -1
  80. package/__inner__/esm/components/Calendar/__tests__/utils.d.ts +11 -0
  81. package/__inner__/esm/components/Calendar/__tests__/utils.js +45 -0
  82. package/__inner__/esm/components/Calendar/components/CalendarGrid/CalendarGrid.js +4 -3
  83. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendarItem.js +25 -2
  84. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendarItemContext.d.ts +1 -0
  85. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendarItemContext.js +1 -0
  86. package/__inner__/esm/components/Calendar/components/CalendarModeRange/CalendarModeRange.js +70 -15
  87. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.js +64 -18
  88. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.js +6 -7
  89. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/CalendarSwitcherText.d.ts +3 -0
  90. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/CalendarSwitcherText.js +9 -0
  91. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/index.d.ts +2 -0
  92. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/index.js +2 -0
  93. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/types.d.ts +4 -0
  94. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/types.js +1 -0
  95. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/index.d.ts +1 -0
  96. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/index.js +1 -0
  97. package/__inner__/esm/components/Calendar/constants.d.ts +2 -0
  98. package/__inner__/esm/components/Calendar/constants.js +6 -0
  99. package/__inner__/esm/components/Calendar/index.d.ts +1 -0
  100. package/__inner__/esm/components/Calendar/index.js +1 -0
  101. package/__inner__/esm/components/Calendar/types.d.ts +13 -5
  102. package/__inner__/esm/components/Calendar/utils.d.ts +10 -1
  103. package/__inner__/esm/components/Calendar/utils.js +9 -0
  104. package/__inner__/esm/components/DatePicker/components/DateInput/DateInput.js +3 -2
  105. package/__inner__/esm/components/DatePicker/components/DateInput/types.d.ts +6 -2
  106. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +2 -1
  107. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +67 -7
  108. package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js +33 -21
  109. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.js +68 -45
  110. package/__inner__/esm/components/DatePicker/constants.d.ts +2 -0
  111. package/__inner__/esm/components/DatePicker/constants.js +3 -0
  112. package/__inner__/esm/components/DatePicker/types.d.ts +10 -6
  113. package/__inner__/esm/components/DatePicker/types.js +2 -0
  114. package/__inner__/esm/components/DatePicker/utils/formatDateToString/formatDateToString.d.ts +2 -1
  115. package/__inner__/esm/components/DatePicker/utils/formatDateToString/formatDateToString.js +18 -5
  116. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/formatStringToDate.d.ts +2 -1
  117. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +6 -5
  118. package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.js +2 -2
  119. package/__inner__/esm/components/DatePicker/utils/index.d.ts +2 -0
  120. package/__inner__/esm/components/DatePicker/utils/index.js +2 -0
  121. package/__inner__/esm/components/DatePicker/utils/isValidDateString/isValidDateString.d.ts +2 -1
  122. package/__inner__/esm/components/DatePicker/utils/isValidDateString/isValidDateString.js +8 -7
  123. package/__inner__/esm/components/DatePicker/utils/maskPastedDate/index.d.ts +1 -0
  124. package/__inner__/esm/components/DatePicker/utils/maskPastedDate/index.js +1 -0
  125. package/__inner__/esm/components/DatePicker/utils/maskPastedDate/maskPastedDate.d.ts +6 -0
  126. package/__inner__/esm/components/DatePicker/utils/maskPastedDate/maskPastedDate.js +39 -0
  127. package/__inner__/esm/components/DatePicker/utils/parseDateString/index.d.ts +1 -0
  128. package/__inner__/esm/components/DatePicker/utils/parseDateString/index.js +1 -0
  129. package/__inner__/esm/components/DatePicker/utils/parseDateString/parseDateString.d.ts +6 -0
  130. package/__inner__/esm/components/DatePicker/utils/parseDateString/parseDateString.js +62 -0
  131. package/__inner__/esm/components/ListCardItem/hooks/useListCardItemRatio.js +10 -14
  132. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/b-business-dark/color-b-business-dark.css +1 -1
  133. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/b-business-default/color-b-business-default.css +1 -1
  134. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/ozen-dark/color-ozen-dark.css +1 -1
  135. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/ozen-default/color-ozen-default.css +1 -1
  136. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/vip-dark/color-vip-dark.css +1 -1
  137. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/vip-default/color-vip-default.css +1 -1
  138. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/shadow/ozen-default/shadow-ozen-default.css +1 -1
  139. package/__inner__/esm/components/Stack/Stack.css +3 -0
  140. package/__inner__/esm/components/Stack/Stack.js +3 -2
  141. package/__inner__/esm/components/Stack/constants.d.ts +1 -0
  142. package/__inner__/esm/components/Stack/constants.js +1 -0
  143. package/__inner__/esm/components/Stack/types.d.ts +4 -0
  144. package/__inner__/esm/components/Stack/types.js +1 -0
  145. package/__inner__/esm/hooks/useDevEffect/index.d.ts +1 -0
  146. package/__inner__/esm/hooks/useDevEffect/index.js +1 -0
  147. package/__inner__/esm/hooks/useDevEffect/useDevEffect.d.ts +3 -0
  148. package/__inner__/esm/hooks/useDevEffect/useDevEffect.js +9 -0
  149. package/__inner__/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +3 -2
  150. package/__inner__/esm/locale/locale.js +39 -3
  151. package/__inner__/esm/utils/array/createFilled/createFilledArray.d.ts +1 -1
  152. package/__inner__/esm/utils/array/createFilled/createFilledArray.js +6 -1
  153. package/package.json +4 -4
@@ -1,5 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DATE_PICKER_DEFAULT_MODE = exports.DATE_PICKER_DEFAULT_SIZE = void 0;
3
+ exports.DATE_PICKER_DEFAULT_INITIAL_STEP = exports.DATE_PICKER_DEFAULT_STEPS = exports.DATE_PICKER_DEFAULT_MODE = exports.DATE_PICKER_DEFAULT_SIZE = void 0;
4
+ var Calendar_1 = require("../Calendar");
4
5
  exports.DATE_PICKER_DEFAULT_SIZE = 'm';
5
6
  exports.DATE_PICKER_DEFAULT_MODE = 'date';
7
+ exports.DATE_PICKER_DEFAULT_STEPS = Calendar_1.CALENDAR_DEFAULT_STEPS;
8
+ exports.DATE_PICKER_DEFAULT_INITIAL_STEP = Calendar_1.CALENDAR_DEFAULT_INITIAL_STEP;
@@ -1,11 +1,11 @@
1
1
  import type { ChangeEvent, ComponentRef, ReactNode } from 'react';
2
2
  import type { ExtendableComponentPropsWithRef } from '../../types/ExtendableComponentPropsWithRef';
3
3
  import type { WithDisplayName } from '../../types/react';
4
- import type { CalendarProps } from '../Calendar';
4
+ import type { CalendarPropCalendars, CalendarProps, CalendarSteps } from '../Calendar';
5
5
  import type { FieldHintProps } from '../FieldHint';
6
6
  import type { FieldInputProps } from '../FieldInput';
7
7
  import type { FieldLabelProps } from '../FieldLabel';
8
- import type { InputProps, InputSizeVariant } from '../Input';
8
+ import type { InputProps } from '../Input';
9
9
  import type { PopoverBaseProps } from '../Popover';
10
10
  import type { StackProps } from '../Stack';
11
11
  import type { DATE_PICKER_DEFAULT_MODE } from './constants';
@@ -19,7 +19,11 @@ export type DatePickerPropOnChange<MODE extends DatePickerModeVariant> = (date:
19
19
  type InputPropLabel = InputProps['label'];
20
20
  type InputPropRenderLeft = InputProps['renderLeft'];
21
21
  type InputPropRenderRight = InputProps['renderRight'];
22
- type InputPropPlaceholder = InputProps['placeholder'];
22
+ type InputPropPlaceholderString = InputProps['placeholder'];
23
+ type InputPropPlaceholderFunction = (steps: CalendarSteps) => InputPropPlaceholderString;
24
+ export type InputPropPlaceholder = InputPropPlaceholderString | InputPropPlaceholderFunction;
25
+ export declare const datePickerSizeVariant: readonly ["2xs", "xs", "s", "m", "l"];
26
+ export type DatePickerSizeVariant = (typeof datePickerSizeVariant)[number];
23
27
  export type DatePickerPropLabel<MODE> = MODE extends Range ? [InputPropLabel?, InputPropLabel?] | InputPropLabel : InputPropLabel;
24
28
  export type DatePickerPropRenderLeft<MODE> = MODE extends Range ? [InputPropRenderLeft?, InputPropRenderLeft?] | InputPropRenderLeft : InputPropRenderLeft;
25
29
  export type DatePickerPropRenderRight<MODE> = MODE extends Range ? [InputPropRenderRight?, InputPropRenderRight?] | InputPropRenderRight : InputPropRenderRight;
@@ -96,7 +100,7 @@ export type DatePickerProps<MODE extends DatePickerModeVariant = typeof DATE_PIC
96
100
  /** Cвойства FieldHint */
97
101
  hintProps?: Omit<FieldHintProps, 'children'>;
98
102
  /** Размер компонента */
99
- size?: InputSizeVariant;
103
+ size?: DatePickerSizeVariant;
100
104
  /** Если `true` растягивает поле на всю ширину */
101
105
  fullWidth?: boolean;
102
106
  /** Если `true` делает элемент обязательным к заполнению */
@@ -108,8 +112,8 @@ export type DatePickerProps<MODE extends DatePickerModeVariant = typeof DATE_PIC
108
112
  /** Свойства обертки для текстовых полей. Принимает свойства компонента [Stack](https://ozen-ui.bereke.tech/?path=/docs/components-stack--docs) */
109
113
  fieldsProps?: DatePickerPropFieldsProps<MODE>;
110
114
  /** Количество отображаемых календарей в компоненте: один или два */
111
- calendars?: 1 | 2;
112
- } & Pick<CalendarProps, 'minDate' | 'maxDate' | 'exclude'> & Pick<InputProps, 'onKeyDown'>, 'div'>;
115
+ calendars?: CalendarPropCalendars;
116
+ } & Pick<CalendarProps, 'minDate' | 'maxDate' | 'exclude' | 'steps' | 'initialStep'> & Pick<InputProps, 'onKeyDown'>, 'div'>;
113
117
  export type DatePickerComponent = WithDisplayName<(<MODE extends DatePickerModeVariant = typeof DATE_PICKER_DEFAULT_MODE>(props: DatePickerProps<MODE>) => ReactNode)>;
114
118
  export type DatePickerModeComponent<MODE extends DatePickerModeVariant> = WithDisplayName<(props: Omit<DatePickerProps<MODE>, 'mode'>) => ReactNode>;
115
119
  export {};
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.datePickerModeVariant = void 0;
3
+ exports.datePickerSizeVariant = exports.datePickerModeVariant = void 0;
4
+ var types_1 = require("../../types");
4
5
  exports.datePickerModeVariant = ['date', 'date-range'];
6
+ exports.datePickerSizeVariant = types_1.formElementSizeVariant;
@@ -1 +1,2 @@
1
- export declare const formatDateToString: (date: Date | undefined | null) => string;
1
+ import type { CalendarSteps } from '../../../Calendar';
2
+ export declare const formatDateToString: (date: Date | undefined | null, steps: CalendarSteps) => string;
@@ -1,13 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatDateToString = void 0;
4
- var formatDateToString = function (date) {
4
+ var formatDateToString = function (date, steps) {
5
5
  if (!date) {
6
6
  return '';
7
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);
8
+ var hasYearsStep = steps.includes('years');
9
+ var hasMonthsStep = steps.includes('months');
10
+ var hasDaysStep = steps.includes('days');
11
+ var parts = [];
12
+ if (hasDaysStep) {
13
+ var day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date);
14
+ parts.push(day);
15
+ }
16
+ if (hasMonthsStep) {
17
+ var month = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(date);
18
+ parts.push(month);
19
+ }
20
+ if (hasYearsStep) {
21
+ var year = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date);
22
+ parts.push(year);
23
+ }
24
+ return parts.join('.');
12
25
  };
13
26
  exports.formatDateToString = formatDateToString;
@@ -1 +1,2 @@
1
- export declare const formatStringToDate: (value: string) => Date | null;
1
+ import type { CalendarSteps } from '../../../Calendar';
2
+ export declare const formatStringToDate: (value: string, steps: CalendarSteps) => Date | null;
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatStringToDate = void 0;
4
- var tslib_1 = require("tslib");
5
- var formatStringToDate = function (value) {
6
- var _a = tslib_1.__read(value.split('.'), 3), date = _a[0], month = _a[1], year = _a[2];
7
- if (!(date && month && year)) {
4
+ var parseDateString_1 = require("../parseDateString");
5
+ var formatStringToDate = function (value, steps) {
6
+ var parsedDate = (0, parseDateString_1.parseDateString)(value, steps);
7
+ if (!parsedDate) {
8
8
  return null;
9
9
  }
10
- return new Date(+year, +month - 1, +date);
10
+ var day = parsedDate.day, month = parsedDate.month, year = parsedDate.year;
11
+ return new Date(+year, +month - 1, +day);
11
12
  };
12
13
  exports.formatStringToDate = formatStringToDate;
@@ -4,13 +4,13 @@ exports.getCommonCalendarProps = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var getCalendarSizeToFormElement_1 = require("../getCalendarSizeToFormElement");
6
6
  var getCommonCalendarProps = function (props) {
7
- var minDate = props.minDate, maxDate = props.maxDate, exclude = props.exclude, _a = props.size, size = _a === void 0 ? 'm' : _a, ref = props.ref, calendarProps = props.calendarProps;
7
+ var minDate = props.minDate, maxDate = props.maxDate, exclude = props.exclude, _a = props.size, size = _a === void 0 ? 'm' : _a, ref = props.ref, calendarProps = props.calendarProps, steps = props.steps, initialStep = props.initialStep;
8
8
  /** Соотношение размера календаря к размеру элемента контроля */
9
9
  var calendarSize = (0, getCalendarSizeToFormElement_1.getCalendarSizeToFormElement)(size);
10
10
  /** Предотвращаем переход фокуса с текстового поля на интерактивные элементы календаря */
11
11
  var handleMouseDownCalendar = function (e) {
12
12
  e.preventDefault();
13
13
  };
14
- return tslib_1.__assign(tslib_1.__assign({ minDate: minDate, maxDate: maxDate, exclude: exclude, size: calendarSize }, calendarProps), { ref: ref, onMouseDown: handleMouseDownCalendar });
14
+ return tslib_1.__assign(tslib_1.__assign({ minDate: minDate, maxDate: maxDate, exclude: exclude, size: calendarSize }, calendarProps), { ref: ref, onMouseDown: handleMouseDownCalendar, steps: steps, initialStep: initialStep });
15
15
  };
16
16
  exports.getCommonCalendarProps = getCommonCalendarProps;
@@ -6,4 +6,6 @@ export * from './isInExclude';
6
6
  export * from './getCommonPopoverProps';
7
7
  export * from './getCommonCalendarProps';
8
8
  export * from './isValidDateString';
9
+ export * from './maskPastedDate';
10
+ export * from './parseDateString';
9
11
  export * from './useCalendarKeyboard';
@@ -9,4 +9,6 @@ tslib_1.__exportStar(require("./isInExclude"), exports);
9
9
  tslib_1.__exportStar(require("./getCommonPopoverProps"), exports);
10
10
  tslib_1.__exportStar(require("./getCommonCalendarProps"), exports);
11
11
  tslib_1.__exportStar(require("./isValidDateString"), exports);
12
+ tslib_1.__exportStar(require("./maskPastedDate"), exports);
13
+ tslib_1.__exportStar(require("./parseDateString"), exports);
12
14
  tslib_1.__exportStar(require("./useCalendarKeyboard"), exports);
@@ -1 +1,2 @@
1
- export declare const isValidDateString: (value: string | null | undefined) => boolean;
1
+ import type { CalendarSteps } from '../../../Calendar';
2
+ export declare const isValidDateString: (value: string | null | undefined, steps: CalendarSteps) => boolean;
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isValidDateString = void 0;
4
- var tslib_1 = require("tslib");
5
- var date_1 = require("../../../../utils/date");
6
- var isNotNil_1 = require("../../../../utils/isNotNil");
7
- var isValidDateString = function (value) {
8
- if (!(0, isNotNil_1.isNotNil)(value)) {
4
+ var utils_1 = require("../../../../utils");
5
+ var parseDateString_1 = require("../parseDateString");
6
+ var isValidDateString = function (value, steps) {
7
+ if (!(0, utils_1.isNotNil)(value)) {
9
8
  return false;
10
9
  }
11
- var _a = tslib_1.__read(value.split('.'), 3), date = _a[0], month = _a[1], year = _a[2];
12
- return (value === '' ||
13
- (value.length === 10 && (0, date_1.isValidDate)("".concat(year, "-").concat(month, "-").concat(date))));
10
+ if (value === '') {
11
+ return true;
12
+ }
13
+ var parsedDate = (0, parseDateString_1.parseDateString)(value, steps);
14
+ return !!parsedDate;
14
15
  };
15
16
  exports.isValidDateString = isValidDateString;
@@ -0,0 +1 @@
1
+ export * from './maskPastedDate';
@@ -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("./maskPastedDate"), exports);
@@ -0,0 +1,6 @@
1
+ import type { CalendarSteps } from '../../../Calendar';
2
+ /**
3
+ * Функция для обработки вставленного значения.
4
+ * Умеет обрабатывать форматы DD.MM.YYYY/DDMMYYYY, либо сочетания вида DDMM/DD.MM.
5
+ */
6
+ export declare const maskPastedDate: (value: string, steps: CalendarSteps) => string;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maskPastedDate = void 0;
4
+ /**
5
+ * Функция для обработки вставленного значения.
6
+ * Умеет обрабатывать форматы DD.MM.YYYY/DDMMYYYY, либо сочетания вида DDMM/DD.MM.
7
+ */
8
+ var maskPastedDate = function (value, steps) {
9
+ var digits = value.replace(/\D/g, '').slice(0, 8); // максимум 8 цифр
10
+ var hasYearsStep = steps.includes('years');
11
+ var hasMonthsStep = steps.includes('months');
12
+ var hasDaysStep = steps.includes('days');
13
+ // DD
14
+ if (hasDaysStep && !hasMonthsStep && !hasYearsStep) {
15
+ return digits.slice(0, 2);
16
+ }
17
+ // MM
18
+ if (!hasDaysStep && hasMonthsStep && !hasYearsStep) {
19
+ return digits.slice(0, 2);
20
+ }
21
+ // YYYY
22
+ if (!hasDaysStep && !hasMonthsStep && hasYearsStep) {
23
+ return digits.slice(0, 4);
24
+ }
25
+ // DD.MM.YYYY
26
+ if (hasDaysStep && hasMonthsStep && hasYearsStep) {
27
+ return "".concat(digits.slice(0, 2), ".").concat(digits.slice(2, 4), ".").concat(digits.slice(4, 8));
28
+ }
29
+ // DD.MM
30
+ if (hasDaysStep && hasMonthsStep && !hasYearsStep) {
31
+ return "".concat(digits.slice(0, 2), ".").concat(digits.slice(2, 4));
32
+ }
33
+ // DD.YYYY
34
+ if (hasDaysStep && !hasMonthsStep && hasYearsStep) {
35
+ return "".concat(digits.slice(0, 2), ".").concat(digits.slice(2, 6));
36
+ }
37
+ // MM.YYYY
38
+ if (!hasDaysStep && hasMonthsStep && hasYearsStep) {
39
+ return "".concat(digits.slice(0, 2), ".").concat(digits.slice(2, 6));
40
+ }
41
+ throw new Error('Не удалось сделать маску для значения');
42
+ };
43
+ exports.maskPastedDate = maskPastedDate;
@@ -0,0 +1 @@
1
+ export * from './parseDateString';
@@ -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("./parseDateString"), exports);
@@ -0,0 +1,6 @@
1
+ import type { CalendarSteps } from '../../../Calendar';
2
+ export declare const parseDateString: (value: string | null | undefined, steps: CalendarSteps) => {
3
+ year: string;
4
+ month: string;
5
+ day: string;
6
+ } | null;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDateString = void 0;
4
+ var utils_1 = require("../../../../utils");
5
+ var parseDateString = function (value, steps) {
6
+ if (!(0, utils_1.isNotNil)(value)) {
7
+ return null;
8
+ }
9
+ if (value === '') {
10
+ return null;
11
+ }
12
+ var hasYearsSteps = steps.includes('years');
13
+ var hasMonthsSteps = steps.includes('months');
14
+ var hasDaysSteps = steps.includes('days');
15
+ var splitted = value.split('.');
16
+ var day;
17
+ var month;
18
+ var year;
19
+ var offset = 0;
20
+ if (hasDaysSteps) {
21
+ day = splitted[offset];
22
+ offset += 1;
23
+ }
24
+ if (hasMonthsSteps) {
25
+ month = splitted[offset];
26
+ offset += 1;
27
+ }
28
+ if (hasYearsSteps) {
29
+ year = splitted[offset];
30
+ }
31
+ var parts = [];
32
+ if (hasYearsSteps) {
33
+ parts.push(year);
34
+ }
35
+ else {
36
+ var now = new Date();
37
+ parts.push(now.getFullYear().toString());
38
+ }
39
+ if (hasMonthsSteps) {
40
+ parts.push(month);
41
+ }
42
+ else {
43
+ // 3 месяц для кейса, где пользователь вводит 31 день месяца
44
+ parts.push('03');
45
+ }
46
+ if (hasDaysSteps) {
47
+ parts.push(day);
48
+ }
49
+ else {
50
+ parts.push('01');
51
+ }
52
+ var filteredParts = parts.filter(function (part) { return part !== undefined; });
53
+ if (filteredParts.length !== 3) {
54
+ return null;
55
+ }
56
+ var stringDate = filteredParts.join('-');
57
+ if (stringDate.length !== 10 || !(0, utils_1.isValidDate)(stringDate)) {
58
+ return null;
59
+ }
60
+ return {
61
+ year: parts[0],
62
+ month: parts[1],
63
+ day: parts[2],
64
+ };
65
+ };
66
+ exports.parseDateString = parseDateString;
@@ -1,22 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useListCardItemRatio = void 0;
4
- var react_1 = require("react");
5
4
  var logger_1 = require("@ozen-ui/logger");
6
- var environment_1 = require("../../../constants/environment");
5
+ var useDevEffect_1 = require("../../../hooks/useDevEffect");
7
6
  var useListCardItemRatio = function (contentTrailingRatio) {
8
- if (environment_1.isDev) {
9
- // eslint-disable-next-line react-hooks/rules-of-hooks
10
- (0, react_1.useEffect)(function () {
11
- if (contentTrailingRatio < 0) {
12
- logger_1.logger.error('Свойство «contentTrailingRatio» у компонента ListCardItem не может быть меньше 0');
13
- return;
14
- }
15
- if (contentTrailingRatio > 1) {
16
- logger_1.logger.error('Свойство «contentTrailingRatio» у компонента ListCardItem не может быть больше 1');
17
- }
18
- }, [contentTrailingRatio]);
19
- }
7
+ (0, useDevEffect_1.useDevEffect)(function () {
8
+ if (contentTrailingRatio < 0) {
9
+ logger_1.logger.error('Свойство «contentTrailingRatio» у компонента ListCardItem не может быть меньше 0');
10
+ return;
11
+ }
12
+ if (contentTrailingRatio > 1) {
13
+ logger_1.logger.error('Свойство «contentTrailingRatio» у компонента ListCardItem не может быть больше 1');
14
+ }
15
+ }, [contentTrailingRatio]);
20
16
  var contentRatio = contentTrailingRatio * 100;
21
17
  var trailingRatio = 100 - contentRatio;
22
18
  return { content: contentRatio, trailing: trailingRatio };
@@ -169,4 +169,4 @@
169
169
  --color-additional-h1: #9f891a;
170
170
  --color-additional-h2: #ffda1f;
171
171
  --color-additional-h3: #fff0a5;
172
- }
172
+ }
@@ -169,4 +169,4 @@
169
169
  --color-additional-h1: #9f891a;
170
170
  --color-additional-h2: #ffda1f;
171
171
  --color-additional-h3: #fff0a5;
172
- }
172
+ }
@@ -169,4 +169,4 @@
169
169
  --color-additional-h1: #9f891a;
170
170
  --color-additional-h2: #ffda1f;
171
171
  --color-additional-h3: #fff0a5;
172
- }
172
+ }
@@ -169,4 +169,4 @@
169
169
  --color-additional-h1: #9f891a;
170
170
  --color-additional-h2: #ffda1f;
171
171
  --color-additional-h3: #fff0a5;
172
- }
172
+ }
@@ -169,4 +169,4 @@
169
169
  --color-additional-h1: #9f891a;
170
170
  --color-additional-h2: #ffda1f;
171
171
  --color-additional-h3: #fff0a5;
172
- }
172
+ }
@@ -169,4 +169,4 @@
169
169
  --color-additional-h1: #9f891a;
170
170
  --color-additional-h2: #ffda1f;
171
171
  --color-additional-h3: #fff0a5;
172
- }
172
+ }
@@ -2,4 +2,4 @@
2
2
  --shadow-l: 0px 8px 32px rgb(0 0 0 / 8%);
3
3
  --shadow-m: 0px 4px 20px rgb(0 0 0 / 6%);
4
4
  --shadow-s: 0px 4px 8px rgb(0 0 0 / 3%);
5
- }
5
+ }
@@ -9,6 +9,9 @@
9
9
  .Stack-Item {
10
10
  display: inline-block;
11
11
  }
12
+ .Stack_display_block {
13
+ display: flex;
14
+ }
12
15
  .Stack_direction_row {
13
16
  flex-direction: row;
14
17
  }
@@ -16,7 +16,7 @@ exports.Stack = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(f
16
16
  props: inProps,
17
17
  name: 'Stack',
18
18
  });
19
- var _a = props.as, Tag = _a === void 0 ? constants_1.STACK_DEFAULT_TAG : _a, _b = props.direction, direction = _b === void 0 ? 'row' : _b, divider = props.divider, _c = props.shouldWrapChildren, shouldWrapChildren = _c === void 0 ? false : _c, fullWidth = props.fullWidth, children = props.children, align = props.align, justify = props.justify, gap = props.gap, wrap = props.wrap, className = props.className, other = tslib_1.__rest(props, ["as", "direction", "divider", "shouldWrapChildren", "fullWidth", "children", "align", "justify", "gap", "wrap", "className"]);
19
+ var _a = props.as, Tag = _a === void 0 ? constants_1.STACK_DEFAULT_TAG : _a, _b = props.direction, direction = _b === void 0 ? 'row' : _b, divider = props.divider, _c = props.shouldWrapChildren, shouldWrapChildren = _c === void 0 ? false : _c, _d = props.display, display = _d === void 0 ? constants_1.STACK_DEFAULT_DISPLAY : _d, fullWidth = props.fullWidth, children = props.children, align = props.align, justify = props.justify, gap = props.gap, wrap = props.wrap, className = props.className, other = tslib_1.__rest(props, ["as", "direction", "divider", "shouldWrapChildren", "display", "fullWidth", "children", "align", "justify", "gap", "wrap", "className"]);
20
20
  var childNodes = react_1.Children.toArray(children);
21
21
  if (!childNodes.length) {
22
22
  return null;
@@ -38,6 +38,7 @@ exports.Stack = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(f
38
38
  justify: justify,
39
39
  fullWidth: fullWidth,
40
40
  wrap: wrap,
41
+ display: display === 'inline' ? undefined : display,
41
42
  }), (0, utils_1.generateDirectionCn)(exports.cnStack, direction), (0, utils_1.generateGapCn)(exports.cnStack, gap), className), ref: ref }), resolveChildren()));
42
43
  });
43
44
  exports.Stack.displayName = 'Stack';
@@ -1 +1,2 @@
1
1
  export declare const STACK_DEFAULT_TAG = "div";
2
+ export declare const STACK_DEFAULT_DISPLAY = "inline";
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STACK_DEFAULT_TAG = void 0;
3
+ exports.STACK_DEFAULT_DISPLAY = exports.STACK_DEFAULT_TAG = void 0;
4
4
  exports.STACK_DEFAULT_TAG = 'div';
5
+ exports.STACK_DEFAULT_DISPLAY = 'inline';
@@ -3,6 +3,7 @@ import type { ResponsiveValue } from '../../types/ResponsiveValue';
3
3
  import type { PolymorphicComponentPropsWithRef } from '../../utils/polymorphicComponentWithRef';
4
4
  import type { STACK_DEFAULT_TAG } from './constants';
5
5
  export declare const stackGapVariant: readonly ["0", "xs", "s", "m", "l", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "7xl", "8xl"];
6
+ export declare const stackDisplayVariant: readonly ["inline", "block"];
6
7
  export declare const stackDirectionVariant: readonly ["row", "column", "rowReverse", "columnReverse"];
7
8
  export declare const stackAlignVariant: readonly ["center", "start", "end", "baseline"];
8
9
  export declare const stackJustifyVariant: readonly ["start", "center", "end", "spaceBetween", "spaceAround"];
@@ -10,9 +11,12 @@ export type StackGapVariant = (typeof stackGapVariant)[number];
10
11
  export type StackDirectionVariant = (typeof stackDirectionVariant)[number];
11
12
  export type StackAlignVariant = (typeof stackAlignVariant)[number];
12
13
  export type StackJustifyVariant = (typeof stackJustifyVariant)[number];
14
+ export type StackDisplayVariant = (typeof stackDisplayVariant)[number];
13
15
  export type StackBaseProps = {
14
16
  /** Направление */
15
17
  direction?: ResponsiveValue<StackDirectionVariant>;
18
+ /** Display */
19
+ display?: StackDisplayVariant;
16
20
  /** Выравнивание */
17
21
  align?: StackAlignVariant;
18
22
  /** Пространство между элементами */
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stackJustifyVariant = exports.stackAlignVariant = exports.stackDirectionVariant = exports.stackGapVariant = void 0;
3
+ exports.stackJustifyVariant = exports.stackAlignVariant = exports.stackDirectionVariant = exports.stackDisplayVariant = exports.stackGapVariant = void 0;
4
4
  exports.stackGapVariant = [
5
5
  '0',
6
6
  'xs',
@@ -16,6 +16,7 @@ exports.stackGapVariant = [
16
16
  '7xl',
17
17
  '8xl',
18
18
  ];
19
+ exports.stackDisplayVariant = ['inline', 'block'];
19
20
  exports.stackDirectionVariant = [
20
21
  'row',
21
22
  'column',
@@ -0,0 +1 @@
1
+ export * from './useDevEffect';
@@ -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("./useDevEffect"), exports);
@@ -0,0 +1,3 @@
1
+ import type { EffectCallback, DependencyList } from 'react';
2
+ /** Эффект, отрабатывающий только в dev-режиме */
3
+ export declare const useDevEffect: (effect: EffectCallback, deps: DependencyList) => void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useDevEffect = void 0;
4
+ var react_1 = require("react");
5
+ var environment_1 = require("../../constants/environment");
6
+ /** Эффект, отрабатывающий только в dev-режиме */
7
+ var useDevEffect = function (effect, deps) {
8
+ if (environment_1.isDev) {
9
+ // eslint-disable-next-line react-hooks/rules-of-hooks
10
+ (0, react_1.useEffect)(effect, deps);
11
+ }
12
+ };
13
+ exports.useDevEffect = useDevEffect;
@@ -19,7 +19,7 @@ options) {
19
19
  var savedOnHidden = (0, useMutableRef_1.useMutableRef)(options === null || options === void 0 ? void 0 : options.onHidden);
20
20
  var entry = (0, useStoredValue_1.useStoredValue)(undefined);
21
21
  var inView = (0, useStoredValue_1.useStoredValue)(false);
22
- var observer = (0, useStoredValue_1.useStoredValue)(function () { return new IntersectionObserver(function () { }); });
22
+ var observer = (0, useStoredValue_1.useStoredValue)(null);
23
23
  var connect = (0, react_1.useCallback)(function () {
24
24
  if (!isEnabled) {
25
25
  return;
@@ -63,7 +63,8 @@ options) {
63
63
  isEnabled,
64
64
  ]);
65
65
  var disconnect = (0, react_1.useCallback)(function () {
66
- observer.current.disconnect();
66
+ var _a;
67
+ (_a = observer.current) === null || _a === void 0 ? void 0 : _a.disconnect();
67
68
  }, [observer]);
68
69
  var reconnect = (0, react_1.useCallback)(function () {
69
70
  disconnect();
@@ -90,7 +90,19 @@ exports.ruRU = {
90
90
  },
91
91
  DatePicker: {
92
92
  clearText: 'Очистить',
93
- placeholder: 'ДД.ММ.ГГГГ',
93
+ placeholder: function (steps) {
94
+ var parts = [];
95
+ if (steps.includes('days')) {
96
+ parts.push('ДД');
97
+ }
98
+ if (steps.includes('months')) {
99
+ parts.push('ММ');
100
+ }
101
+ if (steps.includes('years')) {
102
+ parts.push('ГГГГ');
103
+ }
104
+ return parts.join('.');
105
+ },
94
106
  },
95
107
  },
96
108
  };
@@ -182,7 +194,19 @@ exports.kkKZ = {
182
194
  },
183
195
  DatePicker: {
184
196
  clearText: 'Тазалау',
185
- placeholder: 'КК.АА.ЖЖЖЖ',
197
+ placeholder: function (steps) {
198
+ var parts = [];
199
+ if (steps.includes('days')) {
200
+ parts.push('КК');
201
+ }
202
+ if (steps.includes('months')) {
203
+ parts.push('АА');
204
+ }
205
+ if (steps.includes('years')) {
206
+ parts.push('ЖЖЖЖ');
207
+ }
208
+ return parts.join('.');
209
+ },
186
210
  },
187
211
  },
188
212
  };
@@ -275,7 +299,19 @@ exports.enUS = {
275
299
  },
276
300
  DatePicker: {
277
301
  clearText: 'Clear',
278
- placeholder: 'DD.MM.YYYY',
302
+ placeholder: function (steps) {
303
+ var parts = [];
304
+ if (steps.includes('days')) {
305
+ parts.push('DD');
306
+ }
307
+ if (steps.includes('months')) {
308
+ parts.push('MM');
309
+ }
310
+ if (steps.includes('years')) {
311
+ parts.push('YYYY');
312
+ }
313
+ return parts.join('.');
314
+ },
279
315
  },
280
316
  },
281
317
  };
@@ -1 +1 @@
1
- export declare const createFilledArray: <Value>(length: number, value: Value) => Value[];
1
+ export declare const createFilledArray: <Value>(length: number, value: Value | ((index: number) => Value)) => Value[];