@skbkontur/react-ui 4.22.6 → 4.24.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 (238) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/cjs/components/Calendar/Calendar.d.ts +40 -5
  3. package/cjs/components/Calendar/Calendar.js +92 -36
  4. package/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/cjs/components/Calendar/Calendar.md +42 -1
  6. package/cjs/components/Calendar/Calendar.styles.js +1 -1
  7. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  8. package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
  9. package/cjs/components/Calendar/CalendarContext.js +16 -0
  10. package/cjs/components/Calendar/CalendarContext.js.map +1 -0
  11. package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
  12. package/cjs/components/Calendar/CalendarDateShape.js +13 -3
  13. package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
  14. package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
  15. package/cjs/components/Calendar/CalendarDay.js +77 -0
  16. package/cjs/components/Calendar/CalendarDay.js.map +1 -0
  17. package/cjs/components/Calendar/CalendarDay.md +70 -0
  18. package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
  19. package/cjs/components/Calendar/CalendarUtils.js +4 -6
  20. package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
  21. package/cjs/components/Calendar/DayCellView.d.ts +4 -12
  22. package/cjs/components/Calendar/DayCellView.js +20 -43
  23. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  24. package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
  25. package/cjs/components/Calendar/DayCellView.styles.js +17 -24
  26. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  27. package/cjs/components/Calendar/Month.d.ts +0 -10
  28. package/cjs/components/Calendar/Month.js +33 -86
  29. package/cjs/components/Calendar/Month.js.map +1 -1
  30. package/cjs/components/Calendar/MonthView.d.ts +3 -2
  31. package/cjs/components/Calendar/MonthView.js +47 -37
  32. package/cjs/components/Calendar/MonthView.js.map +1 -1
  33. package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
  34. package/cjs/components/Calendar/MonthView.styles.js +45 -7
  35. package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
  36. package/cjs/components/Calendar/MonthViewModel.js +24 -6
  37. package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
  38. package/cjs/components/Calendar/config.js +12 -6
  39. package/cjs/components/Calendar/config.js.map +1 -1
  40. package/cjs/components/Calendar/index.d.ts +1 -0
  41. package/cjs/components/Calendar/index.js +2 -1
  42. package/cjs/components/Calendar/index.js.map +1 -1
  43. package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
  44. package/cjs/components/DatePicker/DatePicker.js +71 -44
  45. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  46. package/cjs/components/DatePicker/DatePicker.md +36 -1
  47. package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
  48. package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
  49. package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
  50. package/cjs/components/DatePicker/MobilePicker.js +118 -0
  51. package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
  52. package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  53. package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
  54. package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
  55. package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  56. package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
  57. package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
  58. package/cjs/components/Hint/Hint.d.ts +4 -3
  59. package/cjs/components/Hint/Hint.js +9 -8
  60. package/cjs/components/Hint/Hint.js.map +1 -1
  61. package/cjs/components/Tooltip/Tooltip.d.ts +10 -5
  62. package/cjs/components/Tooltip/Tooltip.js +59 -20
  63. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  64. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
  65. package/cjs/internal/DateSelect/DateSelect.js +50 -4
  66. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  67. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  68. package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
  69. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  70. package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
  71. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
  72. package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
  73. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
  74. package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
  75. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  76. package/cjs/internal/MobilePopup/MobilePopup.js +8 -2
  77. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  78. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  79. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
  80. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  81. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  82. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
  83. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
  84. package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  85. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
  86. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
  87. package/cjs/internal/NativeDateInput/utils.js +3 -2
  88. package/cjs/internal/NativeDateInput/utils.js.map +1 -1
  89. package/cjs/internal/Popup/Popup.d.ts +15 -4
  90. package/cjs/internal/Popup/Popup.js +67 -4
  91. package/cjs/internal/Popup/Popup.js.map +1 -1
  92. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  93. package/cjs/internal/themes/DefaultTheme.d.ts +15 -0
  94. package/cjs/internal/themes/DefaultTheme.js +23 -3
  95. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  96. package/cjs/lib/date/InternalDate.d.ts +2 -0
  97. package/cjs/lib/date/InternalDate.js +8 -1
  98. package/cjs/lib/date/InternalDate.js.map +1 -1
  99. package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
  100. package/cjs/lib/date/InternalDateTransformer.js +23 -0
  101. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  102. package/cjs/lib/date/InternalDateValidator.js +2 -1
  103. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  104. package/cjs/lib/date/comparison.d.ts +6 -0
  105. package/cjs/lib/date/comparison.js +44 -0
  106. package/cjs/lib/date/comparison.js.map +1 -0
  107. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  108. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  109. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  110. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  111. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  112. package/cjs/lib/locale/constants.d.ts +3 -0
  113. package/cjs/lib/locale/constants.js +6 -2
  114. package/cjs/lib/locale/constants.js.map +1 -1
  115. package/components/Calendar/Calendar/Calendar.js +81 -64
  116. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  117. package/components/Calendar/Calendar.d.ts +40 -5
  118. package/components/Calendar/Calendar.md +42 -1
  119. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  120. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  121. package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
  122. package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
  123. package/components/Calendar/CalendarContext/package.json +6 -0
  124. package/components/Calendar/CalendarContext.d.ts +12 -0
  125. package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
  126. package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
  127. package/components/Calendar/CalendarDateShape.d.ts +4 -2
  128. package/components/Calendar/CalendarDay/CalendarDay.js +62 -0
  129. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
  130. package/components/Calendar/CalendarDay/package.json +6 -0
  131. package/components/Calendar/CalendarDay.d.ts +12 -0
  132. package/components/Calendar/CalendarDay.md +70 -0
  133. package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
  134. package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
  135. package/components/Calendar/CalendarUtils.d.ts +2 -1
  136. package/components/Calendar/DayCellView/DayCellView.js +32 -46
  137. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  138. package/components/Calendar/DayCellView.d.ts +4 -12
  139. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -13
  140. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  141. package/components/Calendar/DayCellView.styles.d.ts +2 -5
  142. package/components/Calendar/Month/Month.js +45 -80
  143. package/components/Calendar/Month/Month.js.map +1 -1
  144. package/components/Calendar/Month.d.ts +0 -10
  145. package/components/Calendar/MonthView/MonthView.js +49 -44
  146. package/components/Calendar/MonthView/MonthView.js.map +1 -1
  147. package/components/Calendar/MonthView.d.ts +3 -2
  148. package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
  149. package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
  150. package/components/Calendar/MonthView.styles.d.ts +3 -0
  151. package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
  152. package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  153. package/components/Calendar/config/config.js +6 -4
  154. package/components/Calendar/config/config.js.map +1 -1
  155. package/components/Calendar/index/index.js +2 -1
  156. package/components/Calendar/index/index.js.map +1 -1
  157. package/components/Calendar/index.d.ts +1 -0
  158. package/components/DatePicker/DatePicker/DatePicker.js +60 -38
  159. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  160. package/components/DatePicker/DatePicker.d.ts +4 -1
  161. package/components/DatePicker/DatePicker.md +36 -1
  162. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
  163. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
  164. package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
  165. package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
  166. package/components/DatePicker/MobilePicker/package.json +6 -0
  167. package/components/DatePicker/MobilePicker.d.ts +10 -0
  168. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
  169. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
  170. package/components/DatePicker/MobilePicker.styles/package.json +6 -0
  171. package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  172. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
  173. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
  174. package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
  175. package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  176. package/components/Hint/Hint/Hint.js +50 -45
  177. package/components/Hint/Hint/Hint.js.map +1 -1
  178. package/components/Hint/Hint.d.ts +4 -3
  179. package/components/Tooltip/Tooltip/Tooltip.js +64 -43
  180. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  181. package/components/Tooltip/Tooltip.d.ts +10 -5
  182. package/internal/DateSelect/DateSelect/DateSelect.js +56 -4
  183. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  184. package/internal/DateSelect/DateSelect.d.ts +2 -0
  185. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
  186. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  187. package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  188. package/internal/DateSelect/locale/locales/en/en.js +2 -1
  189. package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
  190. package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
  191. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
  192. package/internal/DateSelect/locale/types.d.ts +1 -0
  193. package/internal/MobilePopup/MobilePopup/MobilePopup.js +2 -1
  194. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  195. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  196. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
  197. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  198. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
  199. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  200. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
  201. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
  202. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
  203. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  204. package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
  205. package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
  206. package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
  207. package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  208. package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
  209. package/internal/NativeDateInput/utils/utils.js +2 -1
  210. package/internal/NativeDateInput/utils/utils.js.map +1 -1
  211. package/internal/Popup/Popup/Popup.js +50 -7
  212. package/internal/Popup/Popup/Popup.js.map +1 -1
  213. package/internal/Popup/Popup.d.ts +15 -4
  214. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  215. package/internal/themes/DefaultTheme/DefaultTheme.js +25 -1
  216. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  217. package/internal/themes/DefaultTheme.d.ts +15 -0
  218. package/lib/date/InternalDate/InternalDate.js +7 -1
  219. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  220. package/lib/date/InternalDate.d.ts +2 -0
  221. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
  222. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  223. package/lib/date/InternalDateTransformer.d.ts +3 -0
  224. package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
  225. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  226. package/lib/date/comparison/comparison.js +45 -0
  227. package/lib/date/comparison/comparison.js.map +1 -0
  228. package/lib/date/comparison/package.json +6 -0
  229. package/lib/date/comparison.d.ts +6 -0
  230. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  231. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  232. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
  233. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  234. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  235. package/lib/locale/constants/constants.js +4 -1
  236. package/lib/locale/constants/constants.js.map +1 -1
  237. package/lib/locale/constants.d.ts +3 -0
  238. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,31 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [4.24.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.23.0...@skbkontur/react-ui@4.24.0) (2024-06-05)
7
+
8
+
9
+ ### Features
10
+
11
+ * **Calendar:** add public component Calendar.Day ([#3415](https://github.com/skbkontur/retail-ui/issues/3415)) ([f32c251](https://github.com/skbkontur/retail-ui/commit/f32c251426b057fbb5a704af23ce60fc0ce0b967))
12
+ * **Calendar:** added period ([#3258](https://github.com/skbkontur/retail-ui/issues/3258)) ([0fce964](https://github.com/skbkontur/retail-ui/commit/0fce96495b36d8e06f985f02d25cdef0c38e2608))
13
+ * **Calendar, DatePicker:** add renderDay and onMonthChange props ([#3257](https://github.com/skbkontur/retail-ui/issues/3257)) ([228a6f4](https://github.com/skbkontur/retail-ui/commit/228a6f44621115037013cf27235b4dda2ad3896d))
14
+ * **DatePicker:** mobile version ([#3323](https://github.com/skbkontur/retail-ui/issues/3323)) ([2785f2b](https://github.com/skbkontur/retail-ui/commit/2785f2b7c05958e76acb0dc749d275b7b2263d79))
15
+
16
+
17
+
18
+
19
+
20
+ # [4.23.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.22.6...@skbkontur/react-ui@4.23.0) (2024-05-28)
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * **Hint,Tooltip:** unify positioning ([#3416](https://github.com/skbkontur/retail-ui/issues/3416)) ([be0c447](https://github.com/skbkontur/retail-ui/commit/be0c447d228b861e4967737b95bbdecde4e2281d))
26
+
27
+
28
+
29
+
30
+
6
31
  ## [4.22.6](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.22.5...@skbkontur/react-ui@4.22.6) (2024-05-28)
7
32
 
8
33
 
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { CommonProps } from '../../internal/CommonWrapper';
3
3
  import { Nullable, Range } from '../../typings/utility-types';
4
4
  import { MonthViewModel } from './MonthViewModel';
5
- import { CalendarDateShape } from './CalendarDateShape';
5
+ import { CalendarDayProps } from './CalendarDay';
6
6
  export interface CalendarProps extends CommonProps {
7
7
  /**
8
8
  * Вызывается при изменении `value`
@@ -28,6 +28,18 @@ export interface CalendarProps extends CommonProps {
28
28
  * Дата задаётся в формате `dd.mm.yyyy`
29
29
  */
30
30
  minDate?: string;
31
+ /**
32
+ * Задаёт начальную дату периода
33
+ *
34
+ * Дата задаётся в формате `dd.mm.yyyy`
35
+ */
36
+ periodStartDate?: string;
37
+ /**
38
+ * Задаёт конечную дату периода
39
+ *
40
+ * Дата задаётся в формате `dd.mm.yyyy`
41
+ */
42
+ periodEndDate?: string;
31
43
  /**
32
44
  * Функция для определения праздничных дней
33
45
  * @default (_day, isWeekend) => isWeekend
@@ -45,20 +57,40 @@ export interface CalendarProps extends CommonProps {
45
57
  * Позволяет задать начальный год
46
58
  */
47
59
  initialYear?: number;
60
+ /**
61
+ * Метод отрисовки дат в календаре
62
+ * @default (props: CalendarDayProps) => <CalendarDay {...props} />
63
+ * @param {CalendarDayProps} props
64
+ *
65
+ * @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.
66
+ */
67
+ renderDay?: (props: CalendarDayProps) => React.ReactElement;
68
+ /**
69
+ * Вызывается при каждом изменении месяца
70
+ * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где
71
+ * `month: number` - номер текущего отображаемого месяца от 1 до 12,
72
+ * `year: number` - отображаемый год,
73
+ */
74
+ onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;
48
75
  }
49
76
  export interface CalendarState {
50
77
  scrollPosition: number;
51
78
  months: MonthViewModel[];
52
- today: CalendarDateShape;
53
79
  scrollDirection: number;
54
80
  scrollTarget: number;
55
81
  }
82
+ export interface CalendarMonthChangeInfo {
83
+ month: number;
84
+ year: number;
85
+ }
56
86
  export declare const CalendarDataTids: {
57
87
  readonly root: "Calendar__root";
58
88
  readonly month: "MonthView__month";
59
89
  readonly dayCell: "DayCellView__root";
60
90
  readonly headerMonth: "MonthView__headerMonth";
91
+ readonly monthSelectMobile: "MonthView__monthSelectMobile";
61
92
  readonly headerYear: "MonthView__headerYear";
93
+ readonly yearSelectMobile: "MonthView__yearSelectMobile";
62
94
  };
63
95
  declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;
64
96
  /**
@@ -67,6 +99,7 @@ declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' |
67
99
  export declare class Calendar extends React.Component<CalendarProps, CalendarState> {
68
100
  static __KONTUR_REACT_UI__: string;
69
101
  static displayName: string;
102
+ static Day: React.MemoExoticComponent<import("../../lib/forwardRefAndName").ReactUIComponentWithRef<HTMLButtonElement, CalendarDayProps> & Record<string, unknown>>;
70
103
  private static formatDate;
71
104
  static defaultProps: DefaultProps;
72
105
  private getProps;
@@ -77,7 +110,7 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
77
110
  private touchStartY;
78
111
  private setRootNode;
79
112
  constructor(props: CalendarProps);
80
- componentDidUpdate(prevProps: Readonly<CalendarProps>): void;
113
+ componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void;
81
114
  componentWillUnmount(): void;
82
115
  render(): JSX.Element;
83
116
  /**
@@ -85,13 +118,15 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
85
118
  * @public
86
119
  */
87
120
  scrollToMonth: (month: number, year: number) => Promise<void>;
121
+ private handleMonthChange;
122
+ private getViewModel;
88
123
  private renderMain;
89
124
  private refRoot;
90
125
  private renderMonth;
91
- private isHoliday;
92
- private handleDateChange;
126
+ private handleDateClick;
93
127
  private getDateInNativeFormat;
94
128
  private getMonthPositions;
129
+ private getVisibleMonths;
95
130
  private handleMonthYearChange;
96
131
  private executeAnimations;
97
132
  private handleTouchStart;
@@ -6,7 +6,6 @@ var _globalObject = require("@skbkontur/global-object");
6
6
 
7
7
  var _isInstanceOf = require("../../lib/isInstanceOf");
8
8
  var _InternalDate = require("../../lib/date/InternalDate");
9
- var _InternalDateTransformer = require("../../lib/date/InternalDateTransformer");
10
9
  var _rootNode = require("../../lib/rootNode");
11
10
  var _Emotion = require("../../lib/theming/Emotion");
12
11
  var _CommonWrapper = require("../../internal/CommonWrapper");
@@ -17,6 +16,7 @@ var _ThemeContext = require("../../lib/theming/ThemeContext");
17
16
  var _animation = require("../../lib/animation");
18
17
  var _client = require("../../lib/client");
19
18
  var _createPropsGetter = require("../../lib/createPropsGetter");
19
+ var _InternalDateTransformer = require("../../lib/date/InternalDateTransformer");
20
20
 
21
21
  var _config = require("./config");
22
22
  var _MonthViewModel = require("./MonthViewModel");
@@ -24,7 +24,41 @@ var CalendarScrollEvents = _interopRequireWildcard(require("./CalendarScrollEven
24
24
  var _Month = require("./Month");
25
25
  var _Calendar = require("./Calendar.styles");
26
26
  var _CalendarDateShape = require("./CalendarDateShape");
27
- var CalendarUtils = _interopRequireWildcard(require("./CalendarUtils"));var _class, _class2, _temp;
27
+ var CalendarUtils = _interopRequireWildcard(require("./CalendarUtils"));
28
+ var _CalendarContext = require("./CalendarContext");
29
+ var _CalendarDay = require("./CalendarDay");var _class, _class2, _temp;
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
28
62
 
29
63
 
30
64
 
@@ -83,7 +117,9 @@ var CalendarDataTids = {
83
117
  month: 'MonthView__month',
84
118
  dayCell: 'DayCellView__root',
85
119
  headerMonth: 'MonthView__headerMonth',
86
- headerYear: 'MonthView__headerYear' };exports.CalendarDataTids = CalendarDataTids;
120
+ monthSelectMobile: 'MonthView__monthSelectMobile',
121
+ headerYear: 'MonthView__headerYear',
122
+ yearSelectMobile: 'MonthView__yearSelectMobile' };exports.CalendarDataTids = CalendarDataTids;
87
123
 
88
124
 
89
125
 
@@ -96,6 +132,8 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
96
132
 
97
133
 
98
134
 
135
+
136
+
99
137
  formatDate = function formatDate(date, month, year) {
100
138
  return new _InternalDate.InternalDate().setComponents({ date: date, month: month, year: year }).toString({ withPad: true });
101
139
  };
@@ -115,7 +153,7 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
115
153
 
116
154
 
117
155
 
118
- function Calendar(_props) {var _CalendarUtils$getMon, _this$props$initialYe;var _this;
156
+ function Calendar(_props) {var _this$props$initialYe;var _this;
119
157
  _this = _React$Component.call(this, _props) || this;_this.getProps = (0, _createPropsGetter.createPropsGetter)(Calendar.defaultProps);_this.animation = (0, _animation.animation)();_this.touchStartY = null;_this.
120
158
 
121
159
 
@@ -160,6 +198,18 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
160
198
 
161
199
 
162
200
 
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+
163
213
 
164
214
 
165
215
 
@@ -279,20 +329,41 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
279
329
  }case 22:case "end":return _context.stop();}}}, _callee);}));return function (_x, _x2) {return _ref.apply(this, arguments);};}();_this.
280
330
 
281
331
 
332
+ handleMonthChange = function (visibleMonths) {
333
+ var currentMonth = visibleMonths[0];
334
+ var changeInfo = {
335
+ month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),
336
+ year: currentMonth.year };
337
+
338
+
339
+ _this.props.onMonthChange == null ? void 0 : _this.props.onMonthChange(changeInfo);
340
+ };_this.
341
+
342
+ getViewModel = function (item) {return item[1];};_this.
343
+
282
344
  renderMain = function () {
283
- var positions = _this.getMonthPositions();
345
+ var monthsForRender = _this.getVisibleMonths(_this.state);
284
346
  var wrapperStyle = { height: (0, _config.themeConfig)(_this.theme).WRAPPER_HEIGHT };
285
347
 
286
348
  var props = _this.getProps();
287
349
 
350
+ var context = {
351
+ value: _this.getDateInNativeFormat(props.value),
352
+ minDate: _this.getDateInNativeFormat(props.minDate),
353
+ maxDate: _this.getDateInNativeFormat(props.maxDate),
354
+ isHoliday: props.isHoliday,
355
+ renderDay: props.renderDay,
356
+ today: CalendarUtils.getTodayDate(),
357
+ onDateClick: _this.handleDateClick };
358
+
359
+
288
360
  return /*#__PURE__*/(
289
361
  _react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this.setRootNode }, props), /*#__PURE__*/
290
362
  _react.default.createElement("div", { ref: _this.refRoot, "data-tid": CalendarDataTids.root, className: (0, _Emotion.cx)(_Calendar.styles.root(_this.theme)) }, /*#__PURE__*/
291
- _react.default.createElement("div", { style: wrapperStyle, className: _Calendar.styles.wrapper() },
292
- _this.state.months.
293
- map(function (x, i) {return [positions[i], x];}).
294
- filter(function (_ref2) {var top = _ref2[0],month = _ref2[1];return CalendarUtils.isMonthVisible(top, month, _this.theme);}).
295
- map(_this.renderMonth, (0, _assertThisInitialized2.default)(_this))), /*#__PURE__*/
363
+ _react.default.createElement("div", { style: wrapperStyle, className: _Calendar.styles.wrapper() }, /*#__PURE__*/
364
+ _react.default.createElement(_CalendarContext.CalendarContext.Provider, { value: context },
365
+ monthsForRender.map(_this.renderMonth, (0, _assertThisInitialized2.default)(_this)))), /*#__PURE__*/
366
+
296
367
 
297
368
  _react.default.createElement("div", { className: _Calendar.styles.separator(_this.theme) }))));
298
369
 
@@ -331,7 +402,11 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
331
402
 
332
403
 
333
404
 
405
+ handleDateClick = function (dateShape) {
406
+ var value = _InternalDateTransformer.InternalDateTransformer.dateToHumanString(dateShape);
334
407
 
408
+ _this.props.onValueChange == null ? void 0 : _this.props.onValueChange(value);
409
+ };_this.
335
410
 
336
411
 
337
412
 
@@ -339,25 +414,6 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
339
414
 
340
415
 
341
416
 
342
-
343
-
344
- isHoliday = function (_ref3) {var date = _ref3.date,month = _ref3.month,year = _ref3.year,isWeekend = _ref3.isWeekend;
345
- var dateString = _InternalDateTransformer.InternalDateTransformer.dateToInternalString({ date: date, month: month + 1, year: year });
346
-
347
- return _this.getProps().isHoliday(dateString, isWeekend);
348
- };_this.
349
-
350
- handleDateChange = function (dateShape) {
351
- var value = _InternalDateTransformer.InternalDateTransformer.dateToInternalString({
352
- date: dateShape.date,
353
- month: dateShape.month + 1,
354
- year: dateShape.year });
355
-
356
-
357
- if (_this.props.onValueChange) {
358
- _this.props.onValueChange(value);
359
- }
360
- };_this.
361
417
 
362
418
 
363
419
 
@@ -379,7 +435,7 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
379
435
  };_this.
380
436
 
381
437
  executeAnimations = function (pixelY) {
382
- _this.setState(function (_ref4) {var months = _ref4.months,scrollPosition = _ref4.scrollPosition;
438
+ _this.setState(function (_ref2) {var months = _ref2.months,scrollPosition = _ref2.scrollPosition;
383
439
  var targetPosition = CalendarUtils.calculateScrollPosition(
384
440
  months,
385
441
  scrollPosition,
@@ -440,12 +496,12 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
440
496
  scrollToNearestWeek = function () {
441
497
  var _this$state = _this.state,scrollTarget = _this$state.scrollTarget,scrollDirection = _this$state.scrollDirection;
442
498
 
443
- var trasholdHeight = (0, _config.themeConfig)(_this.theme).MONTH_TITLE_OFFSET_HEIGHT + (0, _config.themeConfig)(_this.theme).DAY_SIZE;
499
+ var thresholdHeight = (0, _config.themeConfig)(_this.theme).MONTH_TITLE_OFFSET_HEIGHT + (0, _config.themeConfig)(_this.theme).DAY_HEIGHT;
444
500
 
445
- if (scrollTarget < trasholdHeight) {
501
+ if (scrollTarget < thresholdHeight) {
446
502
  var targetPosition = 0;
447
503
  if (scrollDirection < 0) {
448
- targetPosition = trasholdHeight;
504
+ targetPosition = thresholdHeight;
449
505
  }
450
506
 
451
507
  _this.setState({ scrollTarget: targetPosition }, function () {
@@ -467,13 +523,13 @@ Calendar = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/func
467
523
  return _this.animation.animate(
468
524
  scrollAmmount,
469
525
  function (deltaY) {
470
- _this.setState(function (_ref5) {var scrollPosition = _ref5.scrollPosition;return {
526
+ _this.setState(function (_ref3) {var scrollPosition = _ref3.scrollPosition;return {
471
527
  scrollPosition: scrollPosition + deltaY };});
472
528
 
473
529
  },
474
530
  onEnd);
475
531
 
476
- };var _this$getProps = _this.getProps(),_minDate = _this$getProps.minDate,_maxDate = _this$getProps.maxDate,_value = _this$getProps.value;var minDateShape = _this.getDateInNativeFormat(_minDate);var maxDateShape = _this.getDateInNativeFormat(_maxDate);var _dateShape = _this.getDateInNativeFormat(_value);var today = CalendarUtils.getTodayDate();var initialDate = CalendarUtils.getInitialDate({ today: today, date: _dateShape, minDate: minDateShape, maxDate: maxDateShape });var initialMonth = (_CalendarUtils$getMon = CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth)) != null ? _CalendarUtils$getMon : initialDate.month;var initialYear = (_this$props$initialYe = _this.props.initialYear) != null ? _this$props$initialYe : initialDate.year;_this.state = { scrollPosition: 0, months: CalendarUtils.getMonths(initialMonth, initialYear), today: today, scrollDirection: 1, scrollTarget: 0 };return _this;}var _proto = Calendar.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var value = this.props.value;if (value && !(0, _shallowequal.default)(value, prevProps.value)) {var _date = new _InternalDate.InternalDate().parseValue(value).getComponentsLikeNumber();this.scrollToMonth(_date.month - 1, _date.year);}};_proto.componentWillUnmount = function componentWillUnmount() {if (this.animation.inProgress()) {this.animation.cancel();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});} /**
532
+ };var _this$getProps = _this.getProps(),_minDate = _this$getProps.minDate,_maxDate = _this$getProps.maxDate,_value = _this$getProps.value;var minDateShape = _this.getDateInNativeFormat(_minDate);var maxDateShape = _this.getDateInNativeFormat(_maxDate);var _dateShape = _this.getDateInNativeFormat(_value);var today = CalendarUtils.getTodayDate();var initialDate = CalendarUtils.getInitialDate({ today: today, date: _dateShape, minDate: minDateShape, maxDate: maxDateShape });var initialMonth = _this.props.initialMonth ? CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth) : initialDate.month;var initialYear = (_this$props$initialYe = _this.props.initialYear) != null ? _this$props$initialYe : initialDate.year;_this.state = { scrollPosition: 0, months: CalendarUtils.getMonths(initialMonth, initialYear), scrollDirection: 1, scrollTarget: 0 };return _this;}var _proto = Calendar.prototype;_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var _this$props = this.props,value = _this$props.value,onMonthChange = _this$props.onMonthChange;if (value && !(0, _shallowequal.default)(value, prevProps.value)) {var _date = new _InternalDate.InternalDate().parseValue(value).getComponentsLikeNumber();this.scrollToMonth(_date.month - 1, _date.year);}if (onMonthChange) {var visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);var prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);var currentMonth = visibleMonthsModels[0].month;var prevCurrentMonth = prevFirstVisibleMonthModels[0].month;if (currentMonth !== prevCurrentMonth) {this.handleMonthChange(visibleMonthsModels);}}};_proto.componentWillUnmount = function componentWillUnmount() {if (this.animation.inProgress()) {this.animation.cancel();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});} /**
477
533
  * Прокручивает календарь до переданной даты
478
534
  * @public
479
- */;_proto.renderMonth = function renderMonth(_ref6) {var top = _ref6[0],month = _ref6[1];var date = this.getDateInNativeFormat(this.props.value);var minDate = this.getDateInNativeFormat(this.props.minDate);var maxDate = this.getDateInNativeFormat(this.props.maxDate);return /*#__PURE__*/_react.default.createElement(_Month.Month, { key: month.month + '-' + month.year, top: top, month: month, maxDate: maxDate, minDate: minDate, today: this.state.today, value: date, onDateClick: this.handleDateChange, onMonthYearChange: this.handleMonthYearChange, isHoliday: this.isHoliday });};_proto.getDateInNativeFormat = function getDateInNativeFormat(date) {return new _InternalDate.InternalDate().parseValue(date).toNativeFormat();};_proto.getMonthPositions = function getMonthPositions() {var _this$state2 = this.state,scrollPosition = _this$state2.scrollPosition,months = _this$state2.months;var positions = [scrollPosition - months[0].getHeight(this.theme)];for (var i = 1; i < months.length; i++) {var position = positions[i - 1] + months[i - 1].getHeight(this.theme);positions.push(position);}return positions;};return Calendar;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Calendar', _class2.displayName = 'Calendar', _class2.defaultProps = { minDate: _class2.formatDate(_constants.MIN_DATE, _constants.MIN_MONTH, _constants.MIN_YEAR), maxDate: _class2.formatDate(_constants.MAX_DATE, _constants.MAX_MONTH, _constants.MAX_YEAR), isHoliday: function isHoliday(_day, isWeekend) {return isWeekend;} }, _temp)) || _class;exports.Calendar = Calendar;
535
+ */;_proto.renderMonth = function renderMonth(_ref4) {var top = _ref4[0],month = _ref4[1];return /*#__PURE__*/_react.default.createElement(_Month.Month, { key: month.month + '-' + month.year, top: top, month: month, onMonthYearChange: this.handleMonthYearChange });};_proto.getDateInNativeFormat = function getDateInNativeFormat(date) {return new _InternalDate.InternalDate().parseValue(date).toNativeFormat();};_proto.getMonthPositions = function getMonthPositions(months, scrollPosition) {var positions = [scrollPosition - months[0].getHeight(this.theme)];for (var i = 1; i < months.length; i++) {var position = positions[i - 1] + months[i - 1].getHeight(this.theme);positions.push(position);}return positions;};_proto.getVisibleMonths = function getVisibleMonths(state) {var _this3 = this;var months = state.months,scrollPosition = state.scrollPosition;var positions = this.getMonthPositions(months, scrollPosition);return months.map(function (x, i) {return [positions[i], x];}).filter(function (_ref5) {var top = _ref5[0],month = _ref5[1];return CalendarUtils.isMonthVisible(top, month, _this3.theme);});};return Calendar;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Calendar', _class2.displayName = 'Calendar', _class2.Day = _CalendarDay.CalendarDay, _class2.defaultProps = { minDate: _class2.formatDate(_constants.MIN_DATE, _constants.MIN_MONTH, _constants.MIN_YEAR), maxDate: _class2.formatDate(_constants.MAX_DATE, _constants.MAX_MONTH, _constants.MAX_YEAR), isHoliday: function isHoliday(_day, isWeekend) {return isWeekend;} }, _temp)) || _class;exports.Calendar = Calendar;
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"names":["CalendarDataTids","root","month","dayCell","headerMonth","headerYear","Calendar","rootNode","formatDate","date","year","InternalDate","setComponents","toString","withPad","props","getProps","defaultProps","animation","touchStartY","scrollToMonth","inProgress","finish","Promise","r","globalObject","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","CalendarUtils","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","MonthViewModel","create","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","setRootNode","refRoot","styles","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","isHoliday","isWeekend","dateString","InternalDateTransformer","dateToInternalString","handleDateChange","dateShape","value","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","scrollToNearestWeek","scrollDirection","trasholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_SIZE","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","today","getTodayDate","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","parseValue","getComponentsLikeNumber","componentWillUnmount","cancel","render","toNativeFormat","position","push","React","Component","__KONTUR_REACT_UI__","displayName","MIN_DATE","MIN_MONTH","MIN_YEAR","MAX_DATE","MAX_MONTH","MAX_YEAR","_day"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { cx } from '../../lib/theming/Emotion';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable, Range } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\n\nexport interface CalendarProps extends CommonProps {\n /**\n * Вызывается при изменении `value`\n *\n * В аргументе хранится дата в формате `dd.mm.yyyy`\n */\n onValueChange?: (date: string) => void;\n /**\n * Задаёт текущую дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n value: Nullable<string>;\n /**\n * Задаёт максимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n maxDate?: string;\n /**\n * Задаёт минимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n minDate?: string;\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {string} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n /**\n * Позволяет задать начальный месяц\n */\n initialMonth?: Range<1, 13>;\n /**\n * Позволяет задать начальный год\n */\n initialYear?: number;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n today: CalendarDateShape;\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n headerYear: 'MonthView__headerYear',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря из [DatePicker](https://tech.skbkontur.ru/react-ui/#/Components/DatePicker)'а\n */\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n public static displayName = 'Calendar';\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private wheelEndTimeout: SafeTimer;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = CalendarUtils.getMonthInNativeFormat(this.props.initialMonth) ?? initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n today,\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>): void {\n const { value } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month - 1, date.year);\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => globalObject.setTimeout(r, 0));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(month + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(month + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private renderMain = () => {\n const positions = this.getMonthPositions();\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={cx(styles.root(this.theme))}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n {this.state.months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme))\n .map(this.renderMonth, this)}\n </div>\n <div className={styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n const date = this.getDateInNativeFormat(this.props.value);\n const minDate = this.getDateInNativeFormat(this.props.minDate);\n const maxDate = this.getDateInNativeFormat(this.props.maxDate);\n\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n maxDate={maxDate}\n minDate={minDate}\n today={this.state.today}\n value={date}\n onDateClick={this.handleDateChange}\n onMonthYearChange={this.handleMonthYearChange}\n isHoliday={this.isHoliday}\n />\n );\n }\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n\n return this.getProps().isHoliday(dateString, isWeekend);\n };\n\n private handleDateChange = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({\n date: dateShape.date,\n month: dateShape.month + 1,\n year: dateShape.year,\n });\n\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions() {\n const { scrollPosition, months } = this.state;\n\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n globalObject.clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = globalObject.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const trasholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_SIZE;\n\n if (scrollTarget < trasholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = trasholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["Calendar.tsx"],"names":["CalendarDataTids","root","month","dayCell","headerMonth","monthSelectMobile","headerYear","yearSelectMobile","Calendar","rootNode","formatDate","date","year","InternalDate","setComponents","toString","withPad","props","getProps","defaultProps","animation","touchStartY","scrollToMonth","inProgress","finish","Promise","r","globalObject","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","CalendarUtils","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","MonthViewModel","create","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","handleMonthChange","visibleMonths","changeInfo","getMonthInHumanFormat","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","setRootNode","refRoot","styles","wrapper","map","renderMonth","separator","element","isMobile","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","InternalDateTransformer","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","CalendarScrollEvents","emit","event","TouchEvent","clientY","targetTouches","handleTouchMove","changedTouches","WheelEvent","preventDefault","wheelEndTimeout","clearTimeout","scrollToNearestWeek","scrollDirection","thresholdHeight","MONTH_TITLE_OFFSET_HEIGHT","DAY_HEIGHT","amount","pos","scrollAmmount","scrollAmount","minDateShape","maxDateShape","initialDate","getInitialDate","initialMonth","getMonthInNativeFormat","initialYear","componentDidUpdate","prevProps","prevState","parseValue","getComponentsLikeNumber","visibleMonthsModels","prevFirstVisibleMonthModels","prevCurrentMonth","componentWillUnmount","cancel","render","top","toNativeFormat","getMonthPositions","positions","i","position","push","x","filter","isMonthVisible","React","Component","__KONTUR_REACT_UI__","displayName","Day","CalendarDay","MIN_DATE","MIN_MONTH","MIN_YEAR","MAX_DATE","MAX_MONTH","MAX_YEAR","_day","isWeekend"],"mappings":"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","sourcesContent":["import React from 'react';\nimport normalizeWheel from 'normalize-wheel';\nimport throttle from 'lodash.throttle';\nimport shallowEqual from 'shallowequal';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { cx } from '../../lib/theming/Emotion';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from '../../lib/date/constants';\nimport { Nullable, Range } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { styles } from './Calendar.styles';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\nimport { CalendarContext, CalendarContextProps } from './CalendarContext';\nimport { CalendarDay, CalendarDayProps } from './CalendarDay';\n\nexport interface CalendarProps extends CommonProps {\n /**\n * Вызывается при изменении `value`\n *\n * В аргументе хранится дата в формате `dd.mm.yyyy`\n */\n onValueChange?: (date: string) => void;\n /**\n * Задаёт текущую дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n value: Nullable<string>;\n /**\n * Задаёт максимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n maxDate?: string;\n /**\n * Задаёт минимальную возможную дату\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n minDate?: string;\n /**\n * Задаёт начальную дату периода\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n periodStartDate?: string;\n /**\n * Задаёт конечную дату периода\n *\n * Дата задаётся в формате `dd.mm.yyyy`\n */\n periodEndDate?: string;\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {string} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday?: (day: string, isWeekend: boolean) => boolean;\n /**\n * Позволяет задать начальный месяц\n */\n initialMonth?: Range<1, 13>;\n /**\n * Позволяет задать начальный год\n */\n initialYear?: number;\n /**\n * Метод отрисовки дат в календаре\n * @default (props: CalendarDayProps) => <CalendarDay {...props} />\n * @param {CalendarDayProps} props\n *\n * @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.\n */\n renderDay?: (props: CalendarDayProps) => React.ReactElement;\n\n /**\n * Вызывается при каждом изменении месяца\n * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где\n * `month: number` - номер текущего отображаемого месяца от 1 до 12,\n * `year: number` - отображаемый год,\n */\n onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;\n}\n\nexport interface CalendarState {\n scrollPosition: number;\n months: MonthViewModel[];\n scrollDirection: number;\n scrollTarget: number;\n}\n\nexport interface CalendarMonthChangeInfo {\n month: number;\n year: number;\n}\n\nexport const CalendarDataTids = {\n root: 'Calendar__root',\n month: 'MonthView__month',\n dayCell: 'DayCellView__root',\n headerMonth: 'MonthView__headerMonth',\n monthSelectMobile: 'MonthView__monthSelectMobile',\n headerYear: 'MonthView__headerYear',\n yearSelectMobile: 'MonthView__yearSelectMobile',\n} as const;\n\ntype DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;\n\n/**\n * Компонент календаря из [DatePicker](https://tech.skbkontur.ru/react-ui/#/Components/DatePicker)'а\n */\n@rootNode\nexport class Calendar extends React.Component<CalendarProps, CalendarState> {\n public static __KONTUR_REACT_UI__ = 'Calendar';\n public static displayName = 'Calendar';\n\n public static Day = CalendarDay;\n\n private static formatDate(date: number, month: number, year: number) {\n return new InternalDate().setComponents({ date, month, year }).toString({ withPad: true });\n }\n\n public static defaultProps: DefaultProps = {\n minDate: Calendar.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),\n maxDate: Calendar.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),\n isHoliday: (_day: string, isWeekend: boolean) => isWeekend,\n };\n\n private getProps = createPropsGetter(Calendar.defaultProps);\n\n private theme!: Theme;\n private wheelEndTimeout: SafeTimer;\n private root: Nullable<HTMLElement>;\n private animation = animation();\n private touchStartY: Nullable<number> = null;\n private setRootNode!: TSetRootNode;\n\n constructor(props: CalendarProps) {\n super(props);\n\n const { minDate, maxDate, value } = this.getProps();\n\n const minDateShape = this.getDateInNativeFormat(minDate);\n const maxDateShape = this.getDateInNativeFormat(maxDate);\n const dateShape = this.getDateInNativeFormat(value);\n\n const today = CalendarUtils.getTodayDate();\n const initialDate = CalendarUtils.getInitialDate({\n today,\n date: dateShape,\n minDate: minDateShape,\n maxDate: maxDateShape,\n });\n\n const initialMonth = this.props.initialMonth\n ? CalendarUtils.getMonthInNativeFormat(this.props.initialMonth)\n : initialDate.month;\n const initialYear = this.props.initialYear ?? initialDate.year;\n\n this.state = {\n scrollPosition: 0,\n months: CalendarUtils.getMonths(initialMonth, initialYear),\n scrollDirection: 1,\n scrollTarget: 0,\n };\n }\n\n public componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void {\n const { value, onMonthChange } = this.props;\n if (value && !shallowEqual(value, prevProps.value)) {\n const date = new InternalDate().parseValue(value).getComponentsLikeNumber();\n this.scrollToMonth(date.month - 1, date.year);\n }\n\n if (onMonthChange) {\n const visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);\n const prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);\n const currentMonth = visibleMonthsModels[0].month;\n const prevCurrentMonth = prevFirstVisibleMonthModels[0].month;\n\n if (currentMonth !== prevCurrentMonth) {\n this.handleMonthChange(visibleMonthsModels);\n }\n }\n }\n\n public componentWillUnmount() {\n if (this.animation.inProgress()) {\n this.animation.cancel();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * Прокручивает календарь до переданной даты\n * @public\n */\n public scrollToMonth = async (month: number, year: number) => {\n if (this.animation.inProgress()) {\n this.animation.finish();\n // FIXME: Dirty hack to await batched updates\n await new Promise((r) => globalObject.setTimeout(r, 0));\n }\n\n const minDate = this.getDateInNativeFormat(this.getProps().minDate);\n const maxDate = this.getDateInNativeFormat(this.getProps().maxDate);\n\n if (minDate && isGreater(minDate, create(32, month, year))) {\n this.scrollToMonth(minDate.month, minDate.year);\n return;\n }\n\n if (maxDate && isLess(maxDate, create(0, month, year))) {\n this.scrollToMonth(maxDate.month, maxDate.year);\n return;\n }\n\n const currentMonth = this.state.months[1];\n const diffInMonths = currentMonth.month + currentMonth.year * 12 - month - year * 12;\n\n if (diffInMonths === 0) {\n this.scrollTo(0);\n return;\n }\n\n const maxMonthsToAdd = themeConfig(this.theme).MAX_MONTHS_TO_APPEND_ON_SCROLL;\n\n const onEnd = () => {\n this.setState({\n months: CalendarUtils.getMonths(month, year),\n scrollPosition: 0,\n });\n };\n\n const isYearChanges = (state: CalendarState) => {\n return (\n state.months[1].year !== year &&\n // if diff in months is 2 or less,\n // either year is not changing either months already\n // have right isFirstInYear/isLastInYear flags\n Math.abs(diffInMonths) > 2\n );\n };\n\n // If scrolling upwards, prepend maximum maxMonthsToAdd months\n // and scroll to the first month\n if (diffInMonths > 0) {\n const monthsToPrependCount = Math.min(Math.abs(diffInMonths) - 1, maxMonthsToAdd);\n const monthsToPrepend = Array.from({ length: monthsToPrependCount }, (_, index) => {\n return MonthViewModel.create(month + index, year);\n });\n this.setState(\n (state) => {\n const yearChanges = isYearChanges(state);\n if (yearChanges) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[0].isFirstInYear = true;\n if (monthsToPrepend.length) {\n // Mutating item here is safe as it was just created\n monthsToPrepend[monthsToPrepend.length - 1].isLastInYear = true;\n }\n }\n return {\n months: monthsToPrepend.concat(state.months),\n scrollPosition: -CalendarUtils.getMonthsHeight(monthsToPrepend, this.theme),\n };\n },\n () => {\n const targetPosition = this.state.months[0].getHeight(this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n\n // If scrolling downwards, append maximum maxMonthsToAdd months\n // and scroll to the last but one month\n if (diffInMonths < 0) {\n const monthsToAppendCount = Math.min(Math.abs(diffInMonths), maxMonthsToAdd);\n const monthsToAppend = Array.from({ length: monthsToAppendCount }, (_, index) => {\n return MonthViewModel.create(month + index - monthsToAppendCount + 2, year);\n });\n this.setState(\n (state) => {\n if (isYearChanges(state)) {\n // Mutating here can lead to some unexpected bugs\n // but we couldn't find any yet\n state.months[state.months.length - 1].isLastInYear = true;\n // Mutating item here is safe as it was just created\n if (monthsToAppend[0]) {\n monthsToAppend[0].isFirstInYear = true;\n }\n }\n return { months: state.months.concat(monthsToAppend) };\n },\n () => {\n const targetPosition = -1 * CalendarUtils.getMonthsHeight(this.state.months.slice(1, -2), this.theme);\n this.scrollTo(targetPosition, onEnd);\n },\n );\n }\n };\n\n private handleMonthChange = (visibleMonths: MonthViewModel[]): void => {\n const currentMonth = visibleMonths[0];\n const changeInfo = {\n month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),\n year: currentMonth.year,\n };\n\n this.props.onMonthChange?.(changeInfo);\n };\n\n private getViewModel = (item: [number, MonthViewModel]): MonthViewModel => item[1];\n\n private renderMain = () => {\n const monthsForRender = this.getVisibleMonths(this.state);\n const wrapperStyle = { height: themeConfig(this.theme).WRAPPER_HEIGHT };\n\n const props = this.getProps();\n\n const context: CalendarContextProps = {\n value: this.getDateInNativeFormat(props.value),\n minDate: this.getDateInNativeFormat(props.minDate),\n maxDate: this.getDateInNativeFormat(props.maxDate),\n isHoliday: props.isHoliday,\n renderDay: props.renderDay,\n today: CalendarUtils.getTodayDate(),\n onDateClick: this.handleDateClick,\n };\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={cx(styles.root(this.theme))}>\n <div style={wrapperStyle} className={styles.wrapper()}>\n <CalendarContext.Provider value={context}>\n {monthsForRender.map(this.renderMonth, this)}\n </CalendarContext.Provider>\n </div>\n <div className={styles.separator(this.theme)} />\n </div>\n </CommonWrapper>\n );\n };\n\n private refRoot = (element: HTMLElement | null) => {\n if (!this.root && element) {\n if (isMobile) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n }\n if (this.root && !element) {\n if (isMobile) {\n this.root.removeEventListener('touchstart', this.handleTouchStart);\n this.root.removeEventListener('touchmove', this.throttledHandleTouchMove);\n } else {\n this.root.removeEventListener('wheel', this.handleWheel);\n }\n }\n this.root = element;\n };\n\n private renderMonth([top, month]: [number, MonthViewModel]) {\n return (\n <Month\n key={month.month + '-' + month.year}\n top={top}\n month={month}\n onMonthYearChange={this.handleMonthYearChange}\n />\n );\n }\n\n private handleDateClick = (dateShape: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToHumanString(dateShape);\n\n this.props.onValueChange?.(value);\n };\n\n private getDateInNativeFormat(date: Nullable<string>) {\n return new InternalDate().parseValue(date).toNativeFormat();\n }\n\n private getMonthPositions(months: MonthViewModel[], scrollPosition: number) {\n const positions = [scrollPosition - months[0].getHeight(this.theme)];\n for (let i = 1; i < months.length; i++) {\n const position = positions[i - 1] + months[i - 1].getHeight(this.theme);\n positions.push(position);\n }\n return positions;\n }\n\n private getVisibleMonths(state: Readonly<CalendarState>): Array<[number, MonthViewModel]> {\n const { months, scrollPosition } = state;\n const positions = this.getMonthPositions(months, scrollPosition);\n\n return months\n .map<[number, MonthViewModel]>((x, i) => [positions[i], x])\n .filter(([top, month]) => CalendarUtils.isMonthVisible(top, month, this.theme));\n }\n\n private handleMonthYearChange = (month: number, year: number) => {\n this.scrollToMonth(month, year);\n };\n\n private executeAnimations = (pixelY: number) => {\n this.setState(({ months, scrollPosition }) => {\n const targetPosition = CalendarUtils.calculateScrollPosition(\n months,\n scrollPosition,\n pixelY,\n this.theme,\n ).scrollPosition;\n return { scrollTarget: targetPosition };\n }, this.handleWheelEnd);\n\n this.animation.animate(pixelY, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n\n CalendarScrollEvents.emit();\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const clientY = event.targetTouches[0].clientY;\n this.touchStartY = clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n\n const deltaY = (this.touchStartY || 0) - clientY;\n this.touchStartY = clientY;\n\n this.executeAnimations(deltaY);\n };\n\n private throttledHandleTouchMove = throttle(this.handleTouchMove, 10);\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n const { pixelY } = normalizeWheel(event);\n\n this.executeAnimations(pixelY);\n };\n\n private handleWheelEnd = () => {\n if (this.wheelEndTimeout) {\n globalObject.clearTimeout(this.wheelEndTimeout);\n }\n this.wheelEndTimeout = globalObject.setTimeout(this.scrollToNearestWeek, 300);\n };\n private scrollToNearestWeek = () => {\n const { scrollTarget, scrollDirection } = this.state;\n\n const thresholdHeight = themeConfig(this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(this.theme).DAY_HEIGHT;\n\n if (scrollTarget < thresholdHeight) {\n let targetPosition = 0;\n if (scrollDirection < 0) {\n targetPosition = thresholdHeight;\n }\n\n this.setState({ scrollTarget: targetPosition }, () => {\n const amount = scrollTarget - targetPosition;\n this.animation.animate(amount, (deltaY) => {\n // FIXME: Typescript not resolving setState cb type\n this.setState(CalendarUtils.applyDelta(deltaY, this.theme) as any);\n });\n });\n }\n };\n\n private scrollTo = (pos: number, onEnd?: () => void) => {\n const scrollAmmount = pos - this.state.scrollPosition;\n return this.scrollAmount(scrollAmmount, onEnd);\n };\n\n private scrollAmount = (scrollAmmount: number, onEnd?: () => void) => {\n return this.animation.animate(\n scrollAmmount,\n (deltaY) => {\n this.setState(({ scrollPosition }) => ({\n scrollPosition: scrollPosition + deltaY,\n }));\n },\n onEnd,\n );\n };\n}\n"]}
@@ -82,10 +82,11 @@ const isHoliday = (day, isWeekend) => {
82
82
  <Calendar isHoliday={isHoliday} value={date} onValueChange={setDate} />;
83
83
  ```
84
84
 
85
-
86
85
  Календарю можно задать кастомную высоту с помощью переменной темы `calendarWrapperHeight`
86
+
87
87
  - Базовая высота календаря - `330px`
88
88
  - Максимальная высота календаря - `450px`
89
+
89
90
  ```jsx harmony
90
91
  import { ThemeContext } from '@skbkontur/react-ui/lib/theming/ThemeContext';
91
92
  import { ThemeFactory } from '@skbkontur/react-ui/lib/theming/ThemeFactory';
@@ -103,6 +104,46 @@ const theme = React.useContext(ThemeContext);
103
104
  </ThemeContext.Provider>
104
105
  ```
105
106
 
107
+ ### Кастомный рендер дня
108
+
109
+ ```jsx harmony
110
+ import { Tooltip, Hint, CalendarDay } from '@skbkontur/react-ui';
111
+
112
+ const initialValue = "02.09.2023";
113
+
114
+ const [value, setValue] = React.useState(initialValue);
115
+
116
+ const renderDay = (props) => {
117
+ const [date, month, year] = props.date.split('.').map(Number);
118
+
119
+ if (month == 9 && date > 12 && date < 16) {
120
+ return (
121
+ <Tooltip render={() => "Кастомный день"}>
122
+ <CalendarDay {...props} style={{ background: 'darkgray' }} />
123
+ </Tooltip>
124
+ );
125
+ }
126
+
127
+ if (month == 8 && date == 20) {
128
+ return (
129
+ <Hint text={date} pos="right middle">
130
+ <CalendarDay {...props}>
131
+ <b style={{color: 'orange'}}>#</b>
132
+ </CalendarDay>
133
+ </Hint>
134
+ );
135
+ }
136
+
137
+ return <CalendarDay {...props} />
138
+ };
139
+
140
+ <Calendar
141
+ value={value}
142
+ onValueChange={setValue}
143
+ renderDay={renderDay}
144
+ />;
145
+ ```
146
+
106
147
  #### Локали по умолчанию
107
148
 
108
149
  ```typescript static
@@ -3,7 +3,7 @@
3
3
 
4
4
  var styles = (0, _Emotion.memoizeStyle)({
5
5
  root: function root(t) {
6
- var width = parseInt(t.calendarCellSize) * 7;
6
+ var width = parseInt(t.calendarCellWidth) * 7;
7
7
  return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n background: ", ";\n box-sizing: content-box;\n border-radius: ", ";\n color: ", ";\n display: block;\n padding: 0 ", ";\n width: ", "px;\n touch-action: none;\n "])),
8
8
  t.calendarBg,
9
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.styles.ts"],"names":["styles","root","t","width","parseInt","calendarCellSize","css","calendarBg","pickerBorderRadius","textColorDefault","calendarPaddingX","wrapper","separator","calendarBottomSeparatorBorder","calendarMonthTitleMarginX"],"mappings":"oRAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,QAAMC,KAAK,GAAGC,QAAQ,CAACF,CAAC,CAACG,gBAAH,CAAR,GAA+B,CAA7C;AACA,eAAOC,YAAP;AACgBJ,IAAAA,CAAC,CAACK,UADlB;;AAGmBL,IAAAA,CAAC,CAACM,kBAHrB;AAIWN,IAAAA,CAAC,CAACO,gBAJb;;AAMeP,IAAAA,CAAC,CAACQ,gBANjB;AAOWP,IAAAA,KAPX;;;AAUD,GAbgC;;AAejCQ,EAAAA,OAfiC,qBAevB;AACR,eAAOL,YAAP;;;;;AAKD,GArBgC;;AAuBjCM,EAAAA,SAvBiC,qBAuBvBV,CAvBuB,EAuBb;AAClB,eAAOI,YAAP;AACmBJ,IAAAA,CAAC,CAACW,6BADrB;AAEcX,IAAAA,CAAC,CAACY,yBAFhB;;AAID,GA5BgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const width = parseInt(t.calendarCellSize) * 7;\n return css`\n background: ${t.calendarBg};\n box-sizing: content-box;\n border-radius: ${t.pickerBorderRadius};\n color: ${t.textColorDefault};\n display: block;\n padding: 0 ${t.calendarPaddingX};\n width: ${width}px;\n touch-action: none;\n `;\n },\n\n wrapper() {\n return css`\n font-size: 14px;\n position: relative;\n overflow: hidden;\n `;\n },\n\n separator(t: Theme) {\n return css`\n border-bottom: ${t.calendarBottomSeparatorBorder};\n margin: 0 ${t.calendarMonthTitleMarginX};\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["Calendar.styles.ts"],"names":["styles","root","t","width","parseInt","calendarCellWidth","css","calendarBg","pickerBorderRadius","textColorDefault","calendarPaddingX","wrapper","separator","calendarBottomSeparatorBorder","calendarMonthTitleMarginX"],"mappings":"oRAAA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,QAAMC,KAAK,GAAGC,QAAQ,CAACF,CAAC,CAACG,iBAAH,CAAR,GAAgC,CAA9C;AACA,eAAOC,YAAP;AACgBJ,IAAAA,CAAC,CAACK,UADlB;;AAGmBL,IAAAA,CAAC,CAACM,kBAHrB;AAIWN,IAAAA,CAAC,CAACO,gBAJb;;AAMeP,IAAAA,CAAC,CAACQ,gBANjB;AAOWP,IAAAA,KAPX;;;AAUD,GAbgC;;AAejCQ,EAAAA,OAfiC,qBAevB;AACR,eAAOL,YAAP;;;;;AAKD,GArBgC;;AAuBjCM,EAAAA,SAvBiC,qBAuBvBV,CAvBuB,EAuBb;AAClB,eAAOI,YAAP;AACmBJ,IAAAA,CAAC,CAACW,6BADrB;AAEcX,IAAAA,CAAC,CAACY,yBAFhB;;AAID,GA5BgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n const width = parseInt(t.calendarCellWidth) * 7;\n return css`\n background: ${t.calendarBg};\n box-sizing: content-box;\n border-radius: ${t.pickerBorderRadius};\n color: ${t.textColorDefault};\n display: block;\n padding: 0 ${t.calendarPaddingX};\n width: ${width}px;\n touch-action: none;\n `;\n },\n\n wrapper() {\n return css`\n font-size: 14px;\n position: relative;\n overflow: hidden;\n `;\n },\n\n separator(t: Theme) {\n return css`\n border-bottom: ${t.calendarBottomSeparatorBorder};\n margin: 0 ${t.calendarMonthTitleMarginX};\n `;\n },\n});\n"]}
@@ -0,0 +1,12 @@
1
+ import { CalendarDateShape } from './CalendarDateShape';
2
+ import { CalendarProps } from './Calendar';
3
+ export interface CalendarContextProps {
4
+ renderDay?: CalendarProps['renderDay'];
5
+ value?: CalendarDateShape;
6
+ minDate?: CalendarDateShape;
7
+ maxDate?: CalendarDateShape;
8
+ isHoliday?: CalendarProps['isHoliday'];
9
+ today?: CalendarDateShape;
10
+ onDateClick?: (date: CalendarDateShape) => void;
11
+ }
12
+ export declare const CalendarContext: import("react").Context<CalendarContextProps>;