@ozen-ui/kit 0.74.0 → 0.76.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 (228) hide show
  1. package/StepperVertical/package.json +5 -0
  2. package/__inner__/cjs/components/Autocomplete/helper.d.ts +1 -1
  3. package/__inner__/cjs/components/Autocomplete/types.d.ts +1 -1
  4. package/__inner__/cjs/components/Calendar/Calendar.js +26 -2
  5. package/__inner__/cjs/components/Calendar/CalendarContext.d.ts +8 -1
  6. package/__inner__/cjs/components/Calendar/CalendarContext.js +10 -1
  7. package/__inner__/cjs/components/Calendar/__tests__/utils.d.ts +11 -0
  8. package/__inner__/cjs/components/Calendar/__tests__/utils.js +58 -0
  9. package/__inner__/cjs/components/Calendar/components/CalendarGrid/CalendarGrid.js +4 -3
  10. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendarItem.js +25 -2
  11. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendarItemContext.d.ts +1 -0
  12. package/__inner__/cjs/components/Calendar/components/CalendarItem/CalendarItemContext.js +1 -0
  13. package/__inner__/cjs/components/Calendar/components/CalendarModeRange/CalendarModeRange.js +68 -13
  14. package/__inner__/cjs/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.js +62 -16
  15. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.js +6 -7
  16. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/CalendarSwitcherText.d.ts +3 -0
  17. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/CalendarSwitcherText.js +13 -0
  18. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/index.d.ts +2 -0
  19. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/index.js +5 -0
  20. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/types.d.ts +4 -0
  21. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/types.js +2 -0
  22. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/index.d.ts +1 -0
  23. package/__inner__/cjs/components/Calendar/components/CalendarSwitcher/components/index.js +4 -0
  24. package/__inner__/cjs/components/Calendar/constants.d.ts +2 -0
  25. package/__inner__/cjs/components/Calendar/constants.js +7 -1
  26. package/__inner__/cjs/components/Calendar/index.d.ts +1 -0
  27. package/__inner__/cjs/components/Calendar/index.js +1 -0
  28. package/__inner__/cjs/components/Calendar/types.d.ts +13 -5
  29. package/__inner__/cjs/components/Calendar/utils.d.ts +10 -1
  30. package/__inner__/cjs/components/Calendar/utils.js +12 -1
  31. package/__inner__/cjs/components/DataList/types.d.ts +1 -1
  32. package/__inner__/cjs/components/DatePicker/components/DateInput/DateInput.js +4 -3
  33. package/__inner__/cjs/components/DatePicker/components/DateInput/types.d.ts +6 -2
  34. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +2 -1
  35. package/__inner__/cjs/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +67 -7
  36. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js +32 -20
  37. package/__inner__/cjs/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.js +74 -51
  38. package/__inner__/cjs/components/DatePicker/constants.d.ts +2 -0
  39. package/__inner__/cjs/components/DatePicker/constants.js +4 -1
  40. package/__inner__/cjs/components/DatePicker/types.d.ts +10 -6
  41. package/__inner__/cjs/components/DatePicker/types.js +3 -1
  42. package/__inner__/cjs/components/DatePicker/utils/formatDateToString/formatDateToString.d.ts +2 -1
  43. package/__inner__/cjs/components/DatePicker/utils/formatDateToString/formatDateToString.js +18 -5
  44. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/formatStringToDate.d.ts +2 -1
  45. package/__inner__/cjs/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +6 -5
  46. package/__inner__/cjs/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.js +2 -2
  47. package/__inner__/cjs/components/DatePicker/utils/index.d.ts +2 -0
  48. package/__inner__/cjs/components/DatePicker/utils/index.js +2 -0
  49. package/__inner__/cjs/components/DatePicker/utils/isValidDateString/isValidDateString.d.ts +2 -1
  50. package/__inner__/cjs/components/DatePicker/utils/isValidDateString/isValidDateString.js +9 -8
  51. package/__inner__/cjs/components/DatePicker/utils/maskPastedDate/index.d.ts +1 -0
  52. package/__inner__/cjs/components/DatePicker/utils/maskPastedDate/index.js +4 -0
  53. package/__inner__/cjs/components/DatePicker/utils/maskPastedDate/maskPastedDate.d.ts +6 -0
  54. package/__inner__/cjs/components/DatePicker/utils/maskPastedDate/maskPastedDate.js +43 -0
  55. package/__inner__/cjs/components/DatePicker/utils/parseDateString/index.d.ts +1 -0
  56. package/__inner__/cjs/components/DatePicker/utils/parseDateString/index.js +4 -0
  57. package/__inner__/cjs/components/DatePicker/utils/parseDateString/parseDateString.d.ts +6 -0
  58. package/__inner__/cjs/components/DatePicker/utils/parseDateString/parseDateString.js +66 -0
  59. package/__inner__/cjs/components/ListCardItem/hooks/useListCardItemRatio.js +10 -14
  60. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/b-business-dark/color-b-business-dark.css +1 -1
  61. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/b-business-default/color-b-business-default.css +1 -1
  62. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/ozen-dark/color-ozen-dark.css +1 -1
  63. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/ozen-default/color-ozen-default.css +1 -1
  64. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/vip-dark/color-vip-dark.css +1 -1
  65. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/color/vip-default/color-vip-default.css +1 -1
  66. package/__inner__/cjs/components/OzenProvider/providers/theme/tokens/shadow/ozen-default/shadow-ozen-default.css +1 -1
  67. package/__inner__/cjs/components/Select/Select.css +10 -1
  68. package/__inner__/cjs/components/Select/Select.d.ts +0 -1
  69. package/__inner__/cjs/components/Select/Select.js +40 -10
  70. package/__inner__/cjs/components/Select/SelectContext.d.ts +21 -0
  71. package/__inner__/cjs/components/Select/SelectContext.js +29 -0
  72. package/__inner__/cjs/components/Select/classNames.d.ts +1 -0
  73. package/__inner__/cjs/components/Select/classNames.js +5 -0
  74. package/__inner__/cjs/components/Select/components/SelectInput/SelectInput.js +14 -15
  75. package/__inner__/cjs/components/Select/components/SelectInput/types.d.ts +0 -22
  76. package/__inner__/cjs/components/Select/components/SelectInputContextConsumer/SelectInputContextConsumer.js +3 -3
  77. package/__inner__/cjs/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.d.ts +2 -0
  78. package/__inner__/cjs/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.js +42 -0
  79. package/__inner__/cjs/components/Select/components/SelectInputRenderRight/index.d.ts +1 -0
  80. package/__inner__/cjs/components/Select/components/SelectInputRenderRight/index.js +4 -0
  81. package/__inner__/cjs/components/Select/components/index.d.ts +1 -0
  82. package/__inner__/cjs/components/Select/components/index.js +1 -0
  83. package/__inner__/cjs/components/Select/constants.d.ts +3 -0
  84. package/__inner__/cjs/components/Select/constants.js +8 -1
  85. package/__inner__/cjs/components/Select/entities/index.d.ts +2 -0
  86. package/__inner__/cjs/components/Select/entities/index.js +5 -0
  87. package/__inner__/cjs/components/Select/entities/onClear.d.ts +2 -0
  88. package/__inner__/cjs/components/Select/entities/onClear.js +2 -0
  89. package/__inner__/cjs/components/Select/entities/render.d.ts +6 -0
  90. package/__inner__/cjs/components/Select/entities/render.js +4 -0
  91. package/__inner__/cjs/components/Select/index.d.ts +1 -0
  92. package/__inner__/cjs/components/Select/index.js +1 -0
  93. package/__inner__/cjs/components/Select/types.d.ts +30 -5
  94. package/__inner__/cjs/components/Select/types.js +3 -0
  95. package/__inner__/cjs/components/Stack/Stack.css +3 -0
  96. package/__inner__/cjs/components/Stack/Stack.js +2 -1
  97. package/__inner__/cjs/components/Stack/constants.d.ts +1 -0
  98. package/__inner__/cjs/components/Stack/constants.js +2 -1
  99. package/__inner__/cjs/components/Stack/types.d.ts +4 -0
  100. package/__inner__/cjs/components/Stack/types.js +2 -1
  101. package/__inner__/cjs/hooks/useDevEffect/index.d.ts +1 -0
  102. package/__inner__/cjs/hooks/useDevEffect/index.js +4 -0
  103. package/__inner__/cjs/hooks/useDevEffect/useDevEffect.d.ts +3 -0
  104. package/__inner__/cjs/hooks/useDevEffect/useDevEffect.js +13 -0
  105. package/__inner__/cjs/hooks/useIntersectionObserver/useIntersectionObserver.js +3 -2
  106. package/__inner__/cjs/locale/locale.js +48 -3
  107. package/__inner__/cjs/utils/array/createFilled/createFilledArray.d.ts +1 -1
  108. package/__inner__/cjs/utils/array/createFilled/createFilledArray.js +6 -1
  109. package/__inner__/cjs/utils/array/generatePermutations/generatePermutations.d.ts +1 -0
  110. package/__inner__/cjs/utils/array/generatePermutations/generatePermutations.js +47 -0
  111. package/__inner__/cjs/utils/array/generatePermutations/index.d.ts +1 -0
  112. package/__inner__/cjs/utils/array/generatePermutations/index.js +4 -0
  113. package/__inner__/cjs/utils/array/index.d.ts +1 -0
  114. package/__inner__/cjs/utils/array/index.js +1 -0
  115. package/__inner__/esm/components/Autocomplete/helper.d.ts +1 -1
  116. package/__inner__/esm/components/Autocomplete/types.d.ts +1 -1
  117. package/__inner__/esm/components/Calendar/Calendar.js +27 -3
  118. package/__inner__/esm/components/Calendar/CalendarContext.d.ts +8 -1
  119. package/__inner__/esm/components/Calendar/CalendarContext.js +10 -1
  120. package/__inner__/esm/components/Calendar/__tests__/utils.d.ts +11 -0
  121. package/__inner__/esm/components/Calendar/__tests__/utils.js +45 -0
  122. package/__inner__/esm/components/Calendar/components/CalendarGrid/CalendarGrid.js +4 -3
  123. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendarItem.js +25 -2
  124. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendarItemContext.d.ts +1 -0
  125. package/__inner__/esm/components/Calendar/components/CalendarItem/CalendarItemContext.js +1 -0
  126. package/__inner__/esm/components/Calendar/components/CalendarModeRange/CalendarModeRange.js +70 -15
  127. package/__inner__/esm/components/Calendar/components/CalendarModeSingle/CalendarModeSingle.js +64 -18
  128. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/CalendarSwitcher.js +6 -7
  129. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/CalendarSwitcherText.d.ts +3 -0
  130. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/CalendarSwitcherText.js +9 -0
  131. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/index.d.ts +2 -0
  132. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/index.js +2 -0
  133. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/types.d.ts +4 -0
  134. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/CalendarSwitcherText/types.js +1 -0
  135. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/index.d.ts +1 -0
  136. package/__inner__/esm/components/Calendar/components/CalendarSwitcher/components/index.js +1 -0
  137. package/__inner__/esm/components/Calendar/constants.d.ts +2 -0
  138. package/__inner__/esm/components/Calendar/constants.js +6 -0
  139. package/__inner__/esm/components/Calendar/index.d.ts +1 -0
  140. package/__inner__/esm/components/Calendar/index.js +1 -0
  141. package/__inner__/esm/components/Calendar/types.d.ts +13 -5
  142. package/__inner__/esm/components/Calendar/utils.d.ts +10 -1
  143. package/__inner__/esm/components/Calendar/utils.js +9 -0
  144. package/__inner__/esm/components/DataList/types.d.ts +1 -1
  145. package/__inner__/esm/components/DatePicker/components/DateInput/DateInput.js +3 -2
  146. package/__inner__/esm/components/DatePicker/components/DateInput/types.d.ts +6 -2
  147. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.d.ts +2 -1
  148. package/__inner__/esm/components/DatePicker/components/DateInput/utils/dateInputMask/dateInputMask.js +67 -7
  149. package/__inner__/esm/components/DatePicker/components/DatePickerModeDate/DatePickerModeDate.js +33 -21
  150. package/__inner__/esm/components/DatePicker/components/DatePickerModeDateRange/DatePickerModeDateRange.js +68 -45
  151. package/__inner__/esm/components/DatePicker/constants.d.ts +2 -0
  152. package/__inner__/esm/components/DatePicker/constants.js +3 -0
  153. package/__inner__/esm/components/DatePicker/types.d.ts +10 -6
  154. package/__inner__/esm/components/DatePicker/types.js +2 -0
  155. package/__inner__/esm/components/DatePicker/utils/formatDateToString/formatDateToString.d.ts +2 -1
  156. package/__inner__/esm/components/DatePicker/utils/formatDateToString/formatDateToString.js +18 -5
  157. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/formatStringToDate.d.ts +2 -1
  158. package/__inner__/esm/components/DatePicker/utils/formatStringToDate/formatStringToDate.js +6 -5
  159. package/__inner__/esm/components/DatePicker/utils/getCommonCalendarProps/getCommonCalendarProps.js +2 -2
  160. package/__inner__/esm/components/DatePicker/utils/index.d.ts +2 -0
  161. package/__inner__/esm/components/DatePicker/utils/index.js +2 -0
  162. package/__inner__/esm/components/DatePicker/utils/isValidDateString/isValidDateString.d.ts +2 -1
  163. package/__inner__/esm/components/DatePicker/utils/isValidDateString/isValidDateString.js +8 -7
  164. package/__inner__/esm/components/DatePicker/utils/maskPastedDate/index.d.ts +1 -0
  165. package/__inner__/esm/components/DatePicker/utils/maskPastedDate/index.js +1 -0
  166. package/__inner__/esm/components/DatePicker/utils/maskPastedDate/maskPastedDate.d.ts +6 -0
  167. package/__inner__/esm/components/DatePicker/utils/maskPastedDate/maskPastedDate.js +39 -0
  168. package/__inner__/esm/components/DatePicker/utils/parseDateString/index.d.ts +1 -0
  169. package/__inner__/esm/components/DatePicker/utils/parseDateString/index.js +1 -0
  170. package/__inner__/esm/components/DatePicker/utils/parseDateString/parseDateString.d.ts +6 -0
  171. package/__inner__/esm/components/DatePicker/utils/parseDateString/parseDateString.js +62 -0
  172. package/__inner__/esm/components/ListCardItem/hooks/useListCardItemRatio.js +10 -14
  173. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/b-business-dark/color-b-business-dark.css +1 -1
  174. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/b-business-default/color-b-business-default.css +1 -1
  175. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/ozen-dark/color-ozen-dark.css +1 -1
  176. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/ozen-default/color-ozen-default.css +1 -1
  177. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/vip-dark/color-vip-dark.css +1 -1
  178. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/color/vip-default/color-vip-default.css +1 -1
  179. package/__inner__/esm/components/OzenProvider/providers/theme/tokens/shadow/ozen-default/shadow-ozen-default.css +1 -1
  180. package/__inner__/esm/components/Select/Select.css +10 -1
  181. package/__inner__/esm/components/Select/Select.d.ts +0 -1
  182. package/__inner__/esm/components/Select/Select.js +40 -10
  183. package/__inner__/esm/components/Select/SelectContext.d.ts +21 -0
  184. package/__inner__/esm/components/Select/SelectContext.js +25 -0
  185. package/__inner__/esm/components/Select/classNames.d.ts +1 -0
  186. package/__inner__/esm/components/Select/classNames.js +2 -0
  187. package/__inner__/esm/components/Select/components/SelectInput/SelectInput.js +7 -8
  188. package/__inner__/esm/components/Select/components/SelectInput/types.d.ts +0 -22
  189. package/__inner__/esm/components/Select/components/SelectInputContextConsumer/SelectInputContextConsumer.js +1 -1
  190. package/__inner__/esm/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.d.ts +2 -0
  191. package/__inner__/esm/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.js +38 -0
  192. package/__inner__/esm/components/Select/components/SelectInputRenderRight/index.d.ts +1 -0
  193. package/__inner__/esm/components/Select/components/SelectInputRenderRight/index.js +1 -0
  194. package/__inner__/esm/components/Select/components/index.d.ts +1 -0
  195. package/__inner__/esm/components/Select/components/index.js +1 -0
  196. package/__inner__/esm/components/Select/constants.d.ts +3 -0
  197. package/__inner__/esm/components/Select/constants.js +7 -0
  198. package/__inner__/esm/components/Select/entities/index.d.ts +2 -0
  199. package/__inner__/esm/components/Select/entities/index.js +2 -0
  200. package/__inner__/esm/components/Select/entities/onClear.d.ts +2 -0
  201. package/__inner__/esm/components/Select/entities/onClear.js +1 -0
  202. package/__inner__/esm/components/Select/entities/render.d.ts +6 -0
  203. package/__inner__/esm/components/Select/entities/render.js +1 -0
  204. package/__inner__/esm/components/Select/index.d.ts +1 -0
  205. package/__inner__/esm/components/Select/index.js +1 -0
  206. package/__inner__/esm/components/Select/types.d.ts +30 -5
  207. package/__inner__/esm/components/Select/types.js +2 -1
  208. package/__inner__/esm/components/Stack/Stack.css +3 -0
  209. package/__inner__/esm/components/Stack/Stack.js +3 -2
  210. package/__inner__/esm/components/Stack/constants.d.ts +1 -0
  211. package/__inner__/esm/components/Stack/constants.js +1 -0
  212. package/__inner__/esm/components/Stack/types.d.ts +4 -0
  213. package/__inner__/esm/components/Stack/types.js +1 -0
  214. package/__inner__/esm/hooks/useDevEffect/index.d.ts +1 -0
  215. package/__inner__/esm/hooks/useDevEffect/index.js +1 -0
  216. package/__inner__/esm/hooks/useDevEffect/useDevEffect.d.ts +3 -0
  217. package/__inner__/esm/hooks/useDevEffect/useDevEffect.js +9 -0
  218. package/__inner__/esm/hooks/useIntersectionObserver/useIntersectionObserver.js +3 -2
  219. package/__inner__/esm/locale/locale.js +48 -3
  220. package/__inner__/esm/utils/array/createFilled/createFilledArray.d.ts +1 -1
  221. package/__inner__/esm/utils/array/createFilled/createFilledArray.js +6 -1
  222. package/__inner__/esm/utils/array/generatePermutations/generatePermutations.d.ts +1 -0
  223. package/__inner__/esm/utils/array/generatePermutations/generatePermutations.js +43 -0
  224. package/__inner__/esm/utils/array/generatePermutations/index.d.ts +1 -0
  225. package/__inner__/esm/utils/array/generatePermutations/index.js +1 -0
  226. package/__inner__/esm/utils/array/index.d.ts +1 -0
  227. package/__inner__/esm/utils/array/index.js +1 -0
  228. package/package.json +4 -4
@@ -1,13 +1,14 @@
1
1
  import type { ReactElement, ReactNode, SyntheticEvent } from 'react';
2
- import type { ExtendableComponentPropsWithRef } from '../../types/ExtendableComponentPropsWithRef';
3
- import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
2
+ import type { ExtendableComponentPropsWithRef } from '../../types';
4
3
  import type { WithDisplayName } from '../../types/react';
5
4
  import type { DataListBaseProps, DataListOptionProps, DataListSelected } from '../DataList';
6
5
  import type { SelectInputProps, SelectInputRef } from './components';
7
- export type SelectPropSize = FormElementSizeVariant;
6
+ import type { SelectOnClear, SelectRenderLeft, SelectRenderRight, SelectRenderRightLayout } from './entities';
7
+ export declare const selectSizeVariant: readonly ["2xs", "xs", "s", "m", "l"];
8
+ export type SelectPropSize = (typeof selectSizeVariant)[number];
8
9
  export type SelectLabel<MULTIPLE extends boolean = false> = (MULTIPLE extends true ? DataListOptionProps['label'][] : DataListOptionProps['label']) | undefined;
9
10
  export type SelectPropValue<MULTIPLE extends boolean = false> = DataListSelected<MULTIPLE>;
10
- export type SelectPropOnChange<MULTIPLE extends boolean = false> = (value: SelectPropValue<MULTIPLE>, e: SyntheticEvent | KeyboardEvent) => void;
11
+ export type SelectPropOnChange<MULTIPLE extends boolean = false> = (value: SelectPropValue<MULTIPLE>, e: SyntheticEvent | KeyboardEvent | MouseEvent) => void;
11
12
  export type SelectedOption<MULTIPLE extends boolean = false> = {
12
13
  label?: SelectLabel<MULTIPLE>;
13
14
  value?: SelectPropValue<MULTIPLE>;
@@ -60,6 +61,30 @@ export type SelectProps<MULTIPLE extends boolean = false> = ExtendableComponentP
60
61
  renderValue?: SelectPropRenderValue<MULTIPLE>;
61
62
  /** Содержимое компонента */
62
63
  children?: ReactNode;
64
+ /** Layout правой части инпута.
65
+ * Определяет порядок и наличие элементов */
66
+ renderRightLayout?: SelectRenderRightLayout;
67
+ /** Функция обратного вызова, которая вызывается при очистке значения поля */
68
+ onClear?: SelectOnClear;
69
+ /** Текст для кнопки очистки поля */
70
+ clearText?: string;
71
+ /** Если `true`, то отображает кнопку закрытия */
72
+ showClearButton?: boolean;
73
+ /** Текст или иконка слева */
74
+ renderLeft?: SelectRenderLeft;
75
+ /** Текст или иконка справа */
76
+ renderRight?: SelectRenderRight;
77
+ /** Если `true` растягивает поле на всю ширину */
78
+ fullWidth?: boolean;
79
+ /** Если `true` предотвращает сокращение текста в значении и
80
+ * задает гибкую высоту контейнера компонента */
81
+ multiline?: boolean;
82
+ /** Если `true` делает элемент неактивным */
83
+ disabled?: boolean;
84
+ /** Если `true` делает элемент обязательным к заполнению */
85
+ required?: boolean;
86
+ /** Если `true` переводит поле в состояние ошибки */
87
+ error?: boolean;
63
88
  /** Свойства компонента DataList */
64
89
  dataListProps?: Partial<Omit<DataListBaseProps<MULTIPLE>, 'onClose' | 'open' | 'anchorRef' | 'multiple' | 'selected' | 'onSelect'>>;
65
90
  /** Функция обратного вызова, которая будет вызвана когда компонент запрашивает закрытие */
@@ -70,6 +95,6 @@ export type SelectProps<MULTIPLE extends boolean = false> = ExtendableComponentP
70
95
  multiple?: MULTIPLE;
71
96
  /** Идентификатор компонента для тестов */
72
97
  'data-testid'?: string;
73
- } & Pick<SelectInputProps, 'id' | 'name' | 'label' | 'placeholder' | 'disabled' | 'required' | 'disableStroke' | 'error' | 'hint' | 'fullWidth' | 'renderLeft' | 'renderRight' | 'multiline' | 'inputProps' | 'labelProps' | 'hintProps' | 'bodyProps' | 'inputRef' | 'labelRef' | 'bodyRef'> & SelectPropsDeprecated<MULTIPLE>, 'div'>;
98
+ } & Pick<SelectInputProps, 'id' | 'name' | 'label' | 'placeholder' | 'disableStroke' | 'hint' | 'inputProps' | 'labelProps' | 'hintProps' | 'bodyProps' | 'inputRef' | 'labelRef' | 'bodyRef'> & SelectPropsDeprecated<MULTIPLE>, 'div'>;
74
99
  export type SelectComponent = WithDisplayName<(<MULTIPLE extends boolean = false>(props: SelectProps<MULTIPLE>) => ReactElement | null)>;
75
100
  export {};
@@ -1,2 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectSizeVariant = void 0;
4
+ var types_1 = require("../../types");
5
+ exports.selectSizeVariant = types_1.formElementSizeVariant;
@@ -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,22 @@ 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
+ },
106
+ },
107
+ Select: {
108
+ clearText: 'Очистить',
94
109
  },
95
110
  },
96
111
  };
@@ -182,7 +197,22 @@ exports.kkKZ = {
182
197
  },
183
198
  DatePicker: {
184
199
  clearText: 'Тазалау',
185
- placeholder: 'КК.АА.ЖЖЖЖ',
200
+ placeholder: function (steps) {
201
+ var parts = [];
202
+ if (steps.includes('days')) {
203
+ parts.push('КК');
204
+ }
205
+ if (steps.includes('months')) {
206
+ parts.push('АА');
207
+ }
208
+ if (steps.includes('years')) {
209
+ parts.push('ЖЖЖЖ');
210
+ }
211
+ return parts.join('.');
212
+ },
213
+ },
214
+ Select: {
215
+ clearText: 'Тазалау',
186
216
  },
187
217
  },
188
218
  };
@@ -275,7 +305,22 @@ exports.enUS = {
275
305
  },
276
306
  DatePicker: {
277
307
  clearText: 'Clear',
278
- placeholder: 'DD.MM.YYYY',
308
+ placeholder: function (steps) {
309
+ var parts = [];
310
+ if (steps.includes('days')) {
311
+ parts.push('DD');
312
+ }
313
+ if (steps.includes('months')) {
314
+ parts.push('MM');
315
+ }
316
+ if (steps.includes('years')) {
317
+ parts.push('YYYY');
318
+ }
319
+ return parts.join('.');
320
+ },
321
+ },
322
+ Select: {
323
+ clearText: 'Clear',
279
324
  },
280
325
  },
281
326
  };
@@ -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[];
@@ -1,7 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createFilledArray = void 0;
4
+ var isFunction_1 = require("../../isFunction");
4
5
  var createFilledArray = function (length, value) {
5
- return new Array(length).fill(value);
6
+ var array = [];
7
+ for (var i = 0; i < length; i++) {
8
+ array.push((0, isFunction_1.isFunction)(value) ? value(i) : value);
9
+ }
10
+ return array;
6
11
  };
7
12
  exports.createFilledArray = createFilledArray;
@@ -0,0 +1 @@
1
+ export declare const generatePermutations: <Item>(array: Item[] | Readonly<Item[]>, withSubsetSizes?: boolean) => Item[][];
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePermutations = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var lodash_isequal_1 = tslib_1.__importDefault(require("lodash.isequal"));
6
+ var generatePermutations = function (array, withSubsetSizes) {
7
+ if (withSubsetSizes === void 0) { withSubsetSizes = false; }
8
+ var result = [];
9
+ var permute = function (array, current) {
10
+ if (current === void 0) { current = []; }
11
+ if (array.length === 0) {
12
+ if (!result.some(function (r) { return (0, lodash_isequal_1.default)(r, current); })) {
13
+ result.push(tslib_1.__spreadArray([], tslib_1.__read(current), false));
14
+ }
15
+ }
16
+ else {
17
+ for (var i = 0; i < array.length; i++) {
18
+ var newArray = tslib_1.__spreadArray([], tslib_1.__read(array), false);
19
+ var next = newArray.splice(i, 1);
20
+ permute(newArray, current.concat(next));
21
+ }
22
+ }
23
+ };
24
+ var subsetsOfSize = function (array, k, start, subset) {
25
+ if (start === void 0) { start = 0; }
26
+ if (subset === void 0) { subset = []; }
27
+ if (subset.length === k) {
28
+ permute(subset);
29
+ return;
30
+ }
31
+ for (var i = start; i < array.length; i++) {
32
+ subset.push(array[i]);
33
+ subsetsOfSize(array, k, i + 1, subset);
34
+ subset.pop();
35
+ }
36
+ };
37
+ if (withSubsetSizes) {
38
+ for (var size = array.length; size >= 1; size--) {
39
+ subsetsOfSize(array, size);
40
+ }
41
+ }
42
+ else {
43
+ permute(array);
44
+ }
45
+ return result;
46
+ };
47
+ exports.generatePermutations = generatePermutations;
@@ -0,0 +1 @@
1
+ export * from './generatePermutations';
@@ -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("./generatePermutations"), exports);
@@ -1,3 +1,4 @@
1
1
  export * from './createEmpty';
2
2
  export * from './createFilled';
3
+ export * from './generatePermutations';
3
4
  export * from './isArray';
@@ -3,4 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./createEmpty"), exports);
5
5
  tslib_1.__exportStar(require("./createFilled"), exports);
6
+ tslib_1.__exportStar(require("./generatePermutations"), exports);
6
7
  tslib_1.__exportStar(require("./isArray"), exports);
@@ -9,7 +9,7 @@ export declare function withDefaultGetters<OPTION>(props: AutocompleteProps<OPTI
9
9
  defaultValue?: import("./types").AutocompletePropValue<OPTION>;
10
10
  open?: boolean;
11
11
  defaultOpen?: boolean;
12
- onChange?: ((e: import("react").SyntheticEvent | KeyboardEvent, value: OPTION | null) => void) | undefined;
12
+ onChange?: ((e: import("react").SyntheticEvent | KeyboardEvent | MouseEvent, value: OPTION | null) => void) | undefined;
13
13
  inputValue?: string;
14
14
  onInputChange?: (e: import("react").ChangeEvent<HTMLInputElement> | null, value: string) => void;
15
15
  renderInput?: import("./types").AutocompleteRenderInput;
@@ -35,7 +35,7 @@ export type AutocompleteProps<OPTION = AutocompleteDefaultOption> = {
35
35
  /** Состояние открытие по умолчанию (неконтролируемый компонент) */
36
36
  defaultOpen?: boolean;
37
37
  /** Функция обратного вызова, которая будет вызвана при выборе значения */
38
- onChange?: (e: SyntheticEvent | KeyboardEvent, value: OPTION | null) => void;
38
+ onChange?: (e: SyntheticEvent | KeyboardEvent | MouseEvent, value: OPTION | null) => void;
39
39
  /** Введённое значение в текстовом поле */
40
40
  inputValue?: string;
41
41
  /** Функция обратного вызова, которая будет вызвана при вводе значения с клавиатуры */
@@ -1,10 +1,12 @@
1
1
  import { __assign, __rest } from "tslib";
2
2
  import './Calendar.css';
3
3
  import React, { forwardRef } from 'react';
4
+ import { logger } from '@ozen-ui/logger';
5
+ import { useDevEffect } from '../../hooks/useDevEffect';
4
6
  import { useThemeProps } from '../../hooks/useThemeProps';
5
7
  import { getByMap } from '../../utils/getByMap';
6
8
  import { CalendarModeRange, CalendarModeSingle } from './components';
7
- import { CALENDAR_DEFAULT_CALENDARS, CALENDAR_DEFAULT_MODE, CALENDAR_DEFAULT_SIZE, CALENDAR_DEFAULT_START_DAY, } from './constants';
9
+ import { CALENDAR_DEFAULT_CALENDARS, CALENDAR_DEFAULT_MODE, CALENDAR_DEFAULT_SIZE, CALENDAR_DEFAULT_START_DAY, CALENDAR_DEFAULT_STEPS, CALENDAR_DEFAULT_INITIAL_STEP, } from './constants';
8
10
  import { getPeriodSwitchAriaLabel as createPeriodSwitchAriaLabel } from './utils';
9
11
  var typeMap = {
10
12
  range: CalendarModeRange,
@@ -15,9 +17,31 @@ export var Calendar = forwardRef(function (inProps, ref) {
15
17
  props: inProps,
16
18
  name: 'Calendar',
17
19
  });
18
- var _a = props.size, size = _a === void 0 ? CALENDAR_DEFAULT_SIZE : _a, _b = props.mode, mode = _b === void 0 ? CALENDAR_DEFAULT_MODE : _b, _c = props.startDay, startDay = _c === void 0 ? CALENDAR_DEFAULT_START_DAY : _c, _d = props.calendars, calendars = _d === void 0 ? CALENDAR_DEFAULT_CALENDARS : _d, getPeriodSwitchAriaLabelProp = props.getPeriodSwitchAriaLabel, other = __rest(props, ["size", "mode", "startDay", "calendars", "getPeriodSwitchAriaLabel"]);
20
+ var _a = props.size, size = _a === void 0 ? CALENDAR_DEFAULT_SIZE : _a, _b = props.mode, mode = _b === void 0 ? CALENDAR_DEFAULT_MODE : _b, _c = props.startDay, startDay = _c === void 0 ? CALENDAR_DEFAULT_START_DAY : _c, _d = props.calendars, calendars = _d === void 0 ? CALENDAR_DEFAULT_CALENDARS : _d, getPeriodSwitchAriaLabelProp = props.getPeriodSwitchAriaLabel, stepsProp = props.steps, initialStepProp = props.initialStep, other = __rest(props, ["size", "mode", "startDay", "calendars", "getPeriodSwitchAriaLabel", "steps", "initialStep"]);
21
+ var initialStep = (function () {
22
+ if (initialStepProp) {
23
+ return initialStepProp;
24
+ }
25
+ if (stepsProp !== undefined && initialStepProp === undefined) {
26
+ return stepsProp[0];
27
+ }
28
+ return CALENDAR_DEFAULT_INITIAL_STEP;
29
+ })();
30
+ var steps = stepsProp !== null && stepsProp !== void 0 ? stepsProp : CALENDAR_DEFAULT_STEPS;
19
31
  var getPeriodSwitchAriaLabel = getPeriodSwitchAriaLabelProp || createPeriodSwitchAriaLabel;
20
32
  var Component = getByMap(typeMap, mode);
21
- return (React.createElement(Component, __assign({ size: size, startDay: startDay, calendars: calendars, getPeriodSwitchAriaLabel: getPeriodSwitchAriaLabel }, other, { ref: ref })));
33
+ useDevEffect(function () {
34
+ if (steps.length === 0) {
35
+ logger.error('steps не может быть пустым массивом.');
36
+ return;
37
+ }
38
+ if (!steps.includes(initialStep)) {
39
+ logger.error("initialStep \"".concat(initialStep, "\" \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D \u0432 steps [").concat(steps.map(function (step) { return "\"".concat(step, "\""); }).join(', '), "]."));
40
+ }
41
+ if (steps.length !== new Set(steps).size) {
42
+ logger.error("\u0412 steps [".concat(steps.map(function (step) { return "\"".concat(step, "\""); }).join(', '), "] \u0435\u0441\u0442\u044C \u0434\u0443\u0431\u043B\u0438\u0440\u0443\u044E\u0449\u0438\u0435 \u0448\u0430\u0433\u0438, \u043F\u0435\u0440\u0435\u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435."));
43
+ }
44
+ }, [steps, initialStep]);
45
+ return (React.createElement(Component, __assign({ size: size, startDay: startDay, calendars: calendars, getPeriodSwitchAriaLabel: getPeriodSwitchAriaLabel, steps: steps, initialStep: initialStep }, other, { ref: ref })));
22
46
  });
23
47
  Calendar.displayName = 'Calendar';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { CalendarPropSize, CalendarProps } from './types';
2
+ import type { CalendarPropSize, CalendarProps, CalendarSteps, CalendarStepVariant } from './types';
3
3
  export interface CalendarContextValue {
4
4
  minDate?: Date;
5
5
  maxDate?: Date;
@@ -8,6 +8,13 @@ export interface CalendarContextValue {
8
8
  onYearClick?: CalendarProps['onYearClick'];
9
9
  onMonthClick?: CalendarProps['onMonthClick'];
10
10
  getPeriodSwitchAriaLabel?: CalendarProps['getPeriodSwitchAriaLabel'];
11
+ steps: CalendarSteps;
12
+ initialStep: CalendarStepVariant;
13
+ hasDaysStep: boolean;
14
+ hasMonthsStep: boolean;
15
+ hasYearsStep: boolean;
16
+ lastStep: CalendarStepVariant;
17
+ firstStep: CalendarStepVariant;
11
18
  }
12
19
  export declare const CalendarContext: React.Context<CalendarContextValue>;
13
20
  export declare const useCalendar: () => CalendarContextValue;
@@ -1,3 +1,12 @@
1
1
  import React, { useContext } from 'react';
2
- export var CalendarContext = React.createContext({});
2
+ import { CALENDAR_DEFAULT_STEPS, CALENDAR_DEFAULT_INITIAL_STEP, } from './constants';
3
+ export var CalendarContext = React.createContext({
4
+ steps: CALENDAR_DEFAULT_STEPS,
5
+ initialStep: CALENDAR_DEFAULT_INITIAL_STEP,
6
+ hasDaysStep: true,
7
+ hasMonthsStep: true,
8
+ hasYearsStep: true,
9
+ firstStep: 'years',
10
+ lastStep: 'days',
11
+ });
3
12
  export var useCalendar = function () { return useContext(CalendarContext); };
@@ -0,0 +1,11 @@
1
+ import type { CalendarStepVariant } from '../types';
2
+ export declare const getRoot: () => HTMLDivElement;
3
+ export declare const getFromCalendar: () => HTMLDivElement;
4
+ export declare const getToCalendar: () => HTMLDivElement;
5
+ export declare const getButtonPrevPeriod: () => HTMLDivElement;
6
+ export declare const getButtonNextPeriod: () => HTMLDivElement;
7
+ export declare const getDaysGrid: (root?: HTMLDivElement) => HTMLDivElement;
8
+ export declare const getMonthsGrid: (root?: HTMLDivElement) => HTMLDivElement;
9
+ export declare const getYearsGrid: (root?: HTMLDivElement) => HTMLDivElement;
10
+ export declare const getStep: (root?: HTMLDivElement) => CalendarStepVariant;
11
+ export declare const getGridButton: (text: string | number, root?: HTMLDivElement) => Element;
@@ -0,0 +1,45 @@
1
+ import { screen } from '@testing-library/react';
2
+ import { cnCalendarDays, cnCalendarMoths, cnCalendarYears, } from '../components';
3
+ import { cnCalendar } from '../utils';
4
+ export var getRoot = function () { return screen.getByTestId('calendar'); };
5
+ export var getFromCalendar = function () {
6
+ return getRoot().querySelectorAll(".".concat(cnCalendar('MonthContainer')))[0];
7
+ };
8
+ export var getToCalendar = function () {
9
+ return getRoot().querySelectorAll(".".concat(cnCalendar('MonthContainer')))[1];
10
+ };
11
+ export var getButtonPrevPeriod = function () {
12
+ return screen.getByLabelText('prev');
13
+ };
14
+ export var getButtonNextPeriod = function () {
15
+ return screen.getByLabelText('next');
16
+ };
17
+ export var getDaysGrid = function (root) {
18
+ return (root !== null && root !== void 0 ? root : getRoot()).querySelector(".".concat(cnCalendarDays()));
19
+ };
20
+ export var getMonthsGrid = function (root) {
21
+ return (root !== null && root !== void 0 ? root : getRoot()).querySelector(".".concat(cnCalendarMoths()));
22
+ };
23
+ export var getYearsGrid = function (root) {
24
+ return (root !== null && root !== void 0 ? root : getRoot()).querySelector(".".concat(cnCalendarYears()));
25
+ };
26
+ export var getStep = function (root) {
27
+ if (getDaysGrid(root)) {
28
+ return 'days';
29
+ }
30
+ if (getMonthsGrid(root)) {
31
+ return 'months';
32
+ }
33
+ if (getYearsGrid(root)) {
34
+ return 'years';
35
+ }
36
+ throw new Error('Не удалось определить шаг календаря.');
37
+ };
38
+ export var getGridButton = function (text, root) {
39
+ var rootElement = root !== null && root !== void 0 ? root : getRoot();
40
+ var button = Array.from(rootElement.querySelectorAll('.CalendarGridItem')).find(function (element) { var _a; return ((_a = element.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === String(text).toLowerCase(); });
41
+ if (!button) {
42
+ throw new Error("\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0439\u0442\u0438 \u043A\u043D\u043E\u043F\u043A\u0443 \u0441 \u0442\u0435\u043A\u0441\u0442\u043E\u043C \"".concat(text, "\""));
43
+ }
44
+ return button;
45
+ };
@@ -15,18 +15,19 @@ export var cnCalendarMoths = cn('CalendarMonths');
15
15
  export var cnCalendarYears = cn('CalendarYears');
16
16
  export var CalendarGrid = forwardRef(function () {
17
17
  var _a = useCalendar(), size = _a.size, onYearClick = _a.onYearClick, onDayClick = _a.onDayClick, onMonthClick = _a.onMonthClick;
18
- var _b = useCalendarItem(), step = _b.step, goStep = _b.goStep, calendar = _b.calendar;
18
+ var _b = useCalendarItem(), step = _b.step, toNextStep = _b.toNextStep, calendar = _b.calendar;
19
19
  var _c = useDatePickerContext(), _d = _c.data, weekDays = _d.weekDays, years = _d.years, months = _d.months, _e = _c.propGetters, dayButton = _e.dayButton, monthButton = _e.monthButton, yearButton = _e.yearButton;
20
20
  var _f = calendar || {}, days = _f.days, month = _f.month;
21
21
  var handleClickOnDay = function (e, date) {
22
+ toNextStep();
22
23
  onDayClick === null || onDayClick === void 0 ? void 0 : onDayClick(e, date);
23
24
  };
24
25
  var handleClickOnMonth = function (e, date) {
25
- goStep === null || goStep === void 0 ? void 0 : goStep('days');
26
+ toNextStep();
26
27
  onMonthClick === null || onMonthClick === void 0 ? void 0 : onMonthClick(e, date);
27
28
  };
28
29
  var handleClickOnYear = function (e, date) {
29
- goStep === null || goStep === void 0 ? void 0 : goStep('months');
30
+ toNextStep();
30
31
  onYearClick === null || onYearClick === void 0 ? void 0 : onYearClick(e, date);
31
32
  };
32
33
  return (React.createElement(React.Fragment, null,
@@ -1,17 +1,35 @@
1
1
  import { __assign, __read } from "tslib";
2
2
  import React, { forwardRef, useState } from 'react';
3
3
  import { Divider } from '../../../Divider';
4
+ import { useCalendar } from '../../CalendarContext';
4
5
  import { cnCalendar } from '../../utils';
5
6
  import { CalendarGrid, CalendarSwitcher } from '../index';
6
7
  import { CalendarItemContext } from './CalendarItemContext';
7
8
  import { CalendarItemNextMonth, CalendarItemPreviousMonth } from './components';
8
9
  export var CalendarItem = forwardRef(function (_a, ref) {
9
10
  var calendar = _a.calendar, type = _a.type;
10
- var _b = __read(useState('days'), 2), step = _b[0], setStep = _b[1];
11
+ var _b = useCalendar(), steps = _b.steps, initialStep = _b.initialStep;
12
+ var _c = __read(useState(function () {
13
+ if (!steps.includes(initialStep)) {
14
+ return steps[0];
15
+ }
16
+ return initialStep;
17
+ }), 2), step = _c[0], setStep = _c[1];
11
18
  // Управление представлениями календаря
12
19
  var goStep = function (step) {
13
20
  setStep(step);
14
21
  };
22
+ var toNextStep = function () {
23
+ var currentStepIndex = steps.indexOf(step);
24
+ if (currentStepIndex === -1) {
25
+ return;
26
+ }
27
+ var nextStep = steps[currentStepIndex + 1];
28
+ if (!nextStep) {
29
+ return;
30
+ }
31
+ setStep(nextStep);
32
+ };
15
33
  var getActions = function (type) {
16
34
  if (type === 'single') {
17
35
  return {
@@ -37,7 +55,12 @@ export var CalendarItem = forwardRef(function (_a, ref) {
37
55
  nextButton: React.createElement("div", null),
38
56
  };
39
57
  };
40
- return (React.createElement(CalendarItemContext.Provider, { value: { step: step, goStep: goStep, calendar: calendar } },
58
+ return (React.createElement(CalendarItemContext.Provider, { value: {
59
+ step: step,
60
+ goStep: goStep,
61
+ toNextStep: toNextStep,
62
+ calendar: calendar,
63
+ } },
41
64
  React.createElement("div", { ref: ref, className: cnCalendar('MonthContainer') },
42
65
  React.createElement(CalendarSwitcher, __assign({}, getActions(type))),
43
66
  React.createElement(Divider, { color: "secondary" }),
@@ -4,6 +4,7 @@ import type { CalendarStepVariant } from '../../index';
4
4
  export interface CalendarItemContextValue {
5
5
  step: CalendarStepVariant;
6
6
  goStep?: (step: CalendarStepVariant) => void;
7
+ toNextStep: () => void;
7
8
  calendar?: DPCalendar;
8
9
  }
9
10
  export declare const CalendarItemContext: React.Context<CalendarItemContextValue>;
@@ -1,5 +1,6 @@
1
1
  import React, { useContext } from 'react';
2
2
  export var CalendarItemContext = React.createContext({
3
3
  step: 'days',
4
+ toNextStep: function () { },
4
5
  });
5
6
  export var useCalendarItem = function () { return useContext(CalendarItemContext); };