@skbkontur/react-ui 0.0.0-95a1dbe516 → 0.0.0-9ab4f802f3

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 (647) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/README.md +41 -13
  3. package/cjs/components/Autocomplete/Autocomplete.js +12 -6
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Autocomplete/Autocomplete.md +76 -3
  6. package/cjs/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
  7. package/cjs/components/Autocomplete/Autocomplete.styles.js +7 -1
  8. package/cjs/components/Autocomplete/Autocomplete.styles.js.map +1 -1
  9. package/cjs/components/Button/Button.js +2 -2
  10. package/cjs/components/Button/Button.js.map +1 -1
  11. package/cjs/components/Button/Button.md +38 -11
  12. package/cjs/components/Calendar/Calendar.d.ts +28 -5
  13. package/cjs/components/Calendar/Calendar.js +80 -36
  14. package/cjs/components/Calendar/Calendar.js.map +1 -1
  15. package/cjs/components/Calendar/Calendar.md +82 -1
  16. package/cjs/components/Calendar/Calendar.styles.js +1 -1
  17. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  18. package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
  19. package/cjs/components/Calendar/CalendarContext.js +16 -0
  20. package/cjs/components/Calendar/CalendarContext.js.map +1 -0
  21. package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
  22. package/cjs/components/Calendar/CalendarDateShape.js +13 -3
  23. package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
  24. package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
  25. package/cjs/components/Calendar/CalendarDay.js +79 -0
  26. package/cjs/components/Calendar/CalendarDay.js.map +1 -0
  27. package/cjs/components/Calendar/CalendarDay.md +70 -0
  28. package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
  29. package/cjs/components/Calendar/CalendarUtils.js +4 -6
  30. package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
  31. package/cjs/components/Calendar/DayCellView.d.ts +4 -12
  32. package/cjs/components/Calendar/DayCellView.js +20 -42
  33. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  34. package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
  35. package/cjs/components/Calendar/DayCellView.styles.js +37 -43
  36. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  37. package/cjs/components/Calendar/Month.d.ts +0 -10
  38. package/cjs/components/Calendar/Month.js +36 -88
  39. package/cjs/components/Calendar/Month.js.map +1 -1
  40. package/cjs/components/Calendar/MonthView.d.ts +3 -2
  41. package/cjs/components/Calendar/MonthView.js +47 -37
  42. package/cjs/components/Calendar/MonthView.js.map +1 -1
  43. package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
  44. package/cjs/components/Calendar/MonthView.styles.js +45 -7
  45. package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
  46. package/cjs/components/Calendar/MonthViewModel.js +24 -6
  47. package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
  48. package/cjs/components/Calendar/config.js +12 -6
  49. package/cjs/components/Calendar/config.js.map +1 -1
  50. package/cjs/components/Calendar/index.d.ts +1 -0
  51. package/cjs/components/Calendar/index.js +2 -1
  52. package/cjs/components/Calendar/index.js.map +1 -1
  53. package/cjs/components/Checkbox/Checkbox.js +1 -1
  54. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  55. package/cjs/components/DateInput/DateFragmentsView.js +1 -1
  56. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  57. package/cjs/components/DateInput/DateInput.js +1 -1
  58. package/cjs/components/DateInput/DateInput.js.map +1 -1
  59. package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
  60. package/cjs/components/DatePicker/DatePicker.js +72 -45
  61. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  62. package/cjs/components/DatePicker/DatePicker.md +29 -1
  63. package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
  64. package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
  65. package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
  66. package/cjs/components/DatePicker/MobilePicker.js +118 -0
  67. package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
  68. package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  69. package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
  70. package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
  71. package/cjs/components/DatePicker/Picker.js +1 -1
  72. package/cjs/components/DatePicker/Picker.js.map +1 -1
  73. package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  74. package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
  75. package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
  76. package/cjs/components/Dropdown/Dropdown.js +1 -1
  77. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  78. package/cjs/components/DropdownMenu/DropdownMenu.js +1 -1
  79. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  80. package/cjs/components/DropdownMenu/DropdownMenu.md +39 -0
  81. package/cjs/components/FileUploader/FileUploader.d.ts +2 -0
  82. package/cjs/components/FileUploader/FileUploader.js +32 -9
  83. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  84. package/cjs/components/FileUploader/FileUploader.md +29 -0
  85. package/cjs/components/FxInput/FxInput.js +1 -1
  86. package/cjs/components/FxInput/FxInput.js.map +1 -1
  87. package/cjs/components/Group/Group.js +1 -1
  88. package/cjs/components/Group/Group.js.map +1 -1
  89. package/cjs/components/Hint/Hint.d.ts +4 -3
  90. package/cjs/components/Hint/Hint.js +9 -8
  91. package/cjs/components/Hint/Hint.js.map +1 -1
  92. package/cjs/components/Input/Input.js +1 -1
  93. package/cjs/components/Input/Input.js.map +1 -1
  94. package/cjs/components/Input/Input.styles.d.ts +1 -1
  95. package/cjs/components/Input/Input.styles.js +3 -2
  96. package/cjs/components/Input/Input.styles.js.map +1 -1
  97. package/cjs/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  98. package/cjs/components/Input/InputLayout/InputLayout.styles.js +3 -2
  99. package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  100. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -1
  101. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  102. package/cjs/components/Kebab/Kebab.js +6 -1
  103. package/cjs/components/Kebab/Kebab.js.map +1 -1
  104. package/cjs/components/Link/Link.js +3 -2
  105. package/cjs/components/Link/Link.js.map +1 -1
  106. package/cjs/components/Loader/Loader.js +1 -1
  107. package/cjs/components/Loader/Loader.js.map +1 -1
  108. package/cjs/components/MenuItem/MenuItem.js +2 -2
  109. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  110. package/cjs/components/MiniModal/MiniModal.js +1 -1
  111. package/cjs/components/MiniModal/MiniModal.js.map +1 -1
  112. package/cjs/components/Modal/Modal.js +1 -1
  113. package/cjs/components/Modal/Modal.js.map +1 -1
  114. package/cjs/components/Modal/ModalBody.js +1 -1
  115. package/cjs/components/Modal/ModalBody.js.map +1 -1
  116. package/cjs/components/Paging/Paging.js +8 -3
  117. package/cjs/components/Paging/Paging.js.map +1 -1
  118. package/cjs/components/PasswordInput/PasswordInput.js +1 -1
  119. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  120. package/cjs/components/Radio/Radio.js +1 -1
  121. package/cjs/components/Radio/Radio.js.map +1 -1
  122. package/cjs/components/RadioGroup/RadioGroup.js +10 -1
  123. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  124. package/cjs/components/ScrollContainer/ScrollBar.js +1 -1
  125. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  126. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  127. package/cjs/components/ScrollContainer/ScrollContainer.js +6 -0
  128. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  129. package/cjs/components/Select/Select.js +6 -3
  130. package/cjs/components/Select/Select.js.map +1 -1
  131. package/cjs/components/SidePage/SidePage.js +1 -1
  132. package/cjs/components/SidePage/SidePage.js.map +1 -1
  133. package/cjs/components/SidePage/SidePageBody.js +1 -1
  134. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  135. package/cjs/components/SidePage/SidePageContainer.js +1 -1
  136. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  137. package/cjs/components/SidePage/SidePageFooter.js +1 -1
  138. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  139. package/cjs/components/SidePage/SidePageHeader.js +1 -1
  140. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  141. package/cjs/components/Spinner/Spinner.js +1 -1
  142. package/cjs/components/Spinner/Spinner.js.map +1 -1
  143. package/cjs/components/Switcher/Switcher.js +1 -1
  144. package/cjs/components/Switcher/Switcher.js.map +1 -1
  145. package/cjs/components/Tabs/Indicator.js +1 -1
  146. package/cjs/components/Tabs/Indicator.js.map +1 -1
  147. package/cjs/components/Tabs/Tab.js +2 -2
  148. package/cjs/components/Tabs/Tab.js.map +1 -1
  149. package/cjs/components/Tabs/Tabs.js +1 -1
  150. package/cjs/components/Tabs/Tabs.js.map +1 -1
  151. package/cjs/components/Textarea/Textarea.js +1 -1
  152. package/cjs/components/Textarea/Textarea.js.map +1 -1
  153. package/cjs/components/Toast/Toast.js +1 -1
  154. package/cjs/components/Toast/Toast.js.map +1 -1
  155. package/cjs/components/Toast/ToastView.js +1 -1
  156. package/cjs/components/Toast/ToastView.js.map +1 -1
  157. package/cjs/components/Toggle/Toggle.js +1 -1
  158. package/cjs/components/Toggle/Toggle.js.map +1 -1
  159. package/cjs/components/Token/Token.js +2 -1
  160. package/cjs/components/Token/Token.js.map +1 -1
  161. package/cjs/components/TokenInput/TokenInput.js +1 -1
  162. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  163. package/cjs/components/TokenInput/TokenInputMenu.js +2 -2
  164. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  165. package/cjs/components/Tooltip/Tooltip.d.ts +10 -5
  166. package/cjs/components/Tooltip/Tooltip.js +59 -20
  167. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  168. package/cjs/components/TooltipMenu/TooltipMenu.js +4 -4
  169. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  170. package/cjs/hooks/useDrop.d.ts +1 -1
  171. package/cjs/hooks/useDrop.js.map +1 -1
  172. package/cjs/index.d.ts +2 -0
  173. package/cjs/index.js +2 -0
  174. package/cjs/index.js.map +1 -1
  175. package/cjs/internal/CommonWrapper/CommonWrapper.js +2 -2
  176. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  177. package/cjs/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
  178. package/cjs/internal/CommonWrapper/utils/extractCommonProps.js.map +1 -0
  179. package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.js → utils/getCommonVisualStateDataAttributes.js} +3 -4
  180. package/cjs/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes.js.map +1 -0
  181. package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
  182. package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.js → utils/getVisualStateDataAttributes.js} +3 -3
  183. package/cjs/internal/CommonWrapper/utils/getVisualStateDataAttributes.js.map +1 -0
  184. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
  185. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js +1 -0
  186. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js.map +1 -0
  187. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
  188. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  189. package/cjs/internal/CustomComboBox/ComboBoxView.js +3 -1
  190. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  191. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
  192. package/cjs/internal/DateSelect/DateSelect.js +51 -4
  193. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  194. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  195. package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
  196. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  197. package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
  198. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
  199. package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
  200. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
  201. package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
  202. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  203. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +16 -3
  204. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  205. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  206. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -2
  207. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  208. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  209. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +3 -2
  210. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  211. package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
  212. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  213. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +1 -1
  214. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  215. package/cjs/internal/InternalMenu/InternalMenu.js +2 -2
  216. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  217. package/cjs/internal/Menu/Menu.js +2 -2
  218. package/cjs/internal/Menu/Menu.js.map +1 -1
  219. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  220. package/cjs/internal/MobilePopup/MobilePopup.js +7 -1
  221. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  222. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  223. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
  224. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  225. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  226. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
  227. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
  228. package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  229. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
  230. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
  231. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +1 -1
  232. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  233. package/cjs/internal/NativeDateInput/utils.js +3 -2
  234. package/cjs/internal/NativeDateInput/utils.js.map +1 -1
  235. package/cjs/internal/Popup/Popup.d.ts +15 -4
  236. package/cjs/internal/Popup/Popup.js +67 -4
  237. package/cjs/internal/Popup/Popup.js.map +1 -1
  238. package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
  239. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  240. package/cjs/internal/RenderContainer/RenderContainer.d.ts +3 -0
  241. package/cjs/internal/RenderContainer/RenderContainer.js +34 -24
  242. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  243. package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -4
  244. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  245. package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
  246. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  247. package/cjs/internal/ThemePlayground/Playground.js +1 -1
  248. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  249. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +9 -6
  250. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  251. package/cjs/internal/ThemePlayground/constants.js +2 -1
  252. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  253. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +1 -1
  254. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  255. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  256. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
  257. package/cjs/internal/ZIndex/ZIndex.js +41 -3
  258. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  259. package/cjs/internal/themes/DarkTheme.d.ts +2 -0
  260. package/cjs/internal/themes/DarkTheme.js +6 -1
  261. package/cjs/internal/themes/DarkTheme.js.map +1 -1
  262. package/cjs/internal/themes/DefaultTheme.d.ts +18 -0
  263. package/cjs/internal/themes/DefaultTheme.js +32 -4
  264. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  265. package/cjs/lib/date/InternalDate.d.ts +2 -0
  266. package/cjs/lib/date/InternalDate.js +8 -1
  267. package/cjs/lib/date/InternalDate.js.map +1 -1
  268. package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
  269. package/cjs/lib/date/InternalDateTransformer.js +23 -0
  270. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  271. package/cjs/lib/date/InternalDateValidator.js +2 -1
  272. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  273. package/cjs/lib/date/comparison.d.ts +6 -0
  274. package/cjs/lib/date/comparison.js +44 -0
  275. package/cjs/lib/date/comparison.js.map +1 -0
  276. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  277. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  278. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  279. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  280. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  281. package/cjs/lib/listenFocusOutside.js +4 -2
  282. package/cjs/lib/listenFocusOutside.js.map +1 -1
  283. package/cjs/lib/locale/constants.d.ts +3 -0
  284. package/cjs/lib/locale/constants.js +6 -2
  285. package/cjs/lib/locale/constants.js.map +1 -1
  286. package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
  287. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  288. package/cjs/lib/theming/Emotion.d.ts +7 -1
  289. package/cjs/lib/theming/Emotion.js +6 -3
  290. package/cjs/lib/theming/Emotion.js.map +1 -1
  291. package/cjs/lib/theming/ThemeContext.d.ts +0 -2
  292. package/cjs/lib/theming/ThemeContext.js +1 -3
  293. package/cjs/lib/theming/ThemeContext.js.map +1 -1
  294. package/cjs/lib/theming/ThemeContext.md +3 -1
  295. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  296. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js +50 -0
  297. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js.map +1 -0
  298. package/cjs/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  299. package/cjs/lib/theming/themes/Theme2022Update2024.js +75 -0
  300. package/cjs/lib/theming/themes/Theme2022Update2024.js.map +1 -0
  301. package/cjs/lib/widgets/StylesContainer.d.ts +13 -0
  302. package/cjs/lib/widgets/StylesContainer.js +70 -0
  303. package/cjs/lib/widgets/StylesContainer.js.map +1 -0
  304. package/cjs/lib/widgets/index.d.ts +1 -0
  305. package/cjs/lib/widgets/index.js +1 -0
  306. package/cjs/lib/widgets/index.js.map +1 -0
  307. package/components/Autocomplete/Autocomplete/Autocomplete.js +11 -5
  308. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  309. package/components/Autocomplete/Autocomplete.md +76 -3
  310. package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js +4 -1
  311. package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js.map +1 -1
  312. package/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
  313. package/components/Button/Button/Button.js +3 -3
  314. package/components/Button/Button/Button.js.map +1 -1
  315. package/components/Button/Button.md +38 -11
  316. package/components/Calendar/Calendar/Calendar.js +83 -66
  317. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  318. package/components/Calendar/Calendar.d.ts +28 -5
  319. package/components/Calendar/Calendar.md +82 -1
  320. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  321. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  322. package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
  323. package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
  324. package/components/Calendar/CalendarContext/package.json +6 -0
  325. package/components/Calendar/CalendarContext.d.ts +12 -0
  326. package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
  327. package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
  328. package/components/Calendar/CalendarDateShape.d.ts +4 -2
  329. package/components/Calendar/CalendarDay/CalendarDay.js +64 -0
  330. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
  331. package/components/Calendar/CalendarDay/package.json +6 -0
  332. package/components/Calendar/CalendarDay.d.ts +12 -0
  333. package/components/Calendar/CalendarDay.md +70 -0
  334. package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
  335. package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
  336. package/components/Calendar/CalendarUtils.d.ts +2 -1
  337. package/components/Calendar/DayCellView/DayCellView.js +33 -46
  338. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  339. package/components/Calendar/DayCellView.d.ts +4 -12
  340. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -14
  341. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  342. package/components/Calendar/DayCellView.styles.d.ts +2 -5
  343. package/components/Calendar/Month/Month.js +50 -84
  344. package/components/Calendar/Month/Month.js.map +1 -1
  345. package/components/Calendar/Month.d.ts +0 -10
  346. package/components/Calendar/MonthView/MonthView.js +50 -45
  347. package/components/Calendar/MonthView/MonthView.js.map +1 -1
  348. package/components/Calendar/MonthView.d.ts +3 -2
  349. package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
  350. package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
  351. package/components/Calendar/MonthView.styles.d.ts +3 -0
  352. package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
  353. package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  354. package/components/Calendar/config/config.js +6 -4
  355. package/components/Calendar/config/config.js.map +1 -1
  356. package/components/Calendar/index/index.js +2 -1
  357. package/components/Calendar/index/index.js.map +1 -1
  358. package/components/Calendar/index.d.ts +1 -0
  359. package/components/Checkbox/Checkbox/Checkbox.js +2 -2
  360. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  361. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +2 -2
  362. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  363. package/components/DateInput/DateInput/DateInput.js +2 -2
  364. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  365. package/components/DatePicker/DatePicker/DatePicker.js +62 -41
  366. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  367. package/components/DatePicker/DatePicker.d.ts +4 -1
  368. package/components/DatePicker/DatePicker.md +29 -1
  369. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
  370. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
  371. package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
  372. package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
  373. package/components/DatePicker/MobilePicker/package.json +6 -0
  374. package/components/DatePicker/MobilePicker.d.ts +10 -0
  375. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
  376. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
  377. package/components/DatePicker/MobilePicker.styles/package.json +6 -0
  378. package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  379. package/components/DatePicker/Picker/Picker.js +3 -3
  380. package/components/DatePicker/Picker/Picker.js.map +1 -1
  381. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
  382. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
  383. package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
  384. package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  385. package/components/Dropdown/Dropdown/Dropdown.js +3 -3
  386. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  387. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -3
  388. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  389. package/components/DropdownMenu/DropdownMenu.md +39 -0
  390. package/components/FileUploader/FileUploader/FileUploader.js +30 -8
  391. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  392. package/components/FileUploader/FileUploader.d.ts +2 -0
  393. package/components/FileUploader/FileUploader.md +29 -0
  394. package/components/FxInput/FxInput/FxInput.js +2 -2
  395. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  396. package/components/Group/Group/Group.js +2 -2
  397. package/components/Group/Group/Group.js.map +1 -1
  398. package/components/Hint/Hint/Hint.js +53 -48
  399. package/components/Hint/Hint/Hint.js.map +1 -1
  400. package/components/Hint/Hint.d.ts +4 -3
  401. package/components/Input/Input/Input.js +3 -3
  402. package/components/Input/Input/Input.js.map +1 -1
  403. package/components/Input/Input.styles/Input.styles.js +2 -2
  404. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  405. package/components/Input/Input.styles.d.ts +1 -1
  406. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -2
  407. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
  408. package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  409. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +1 -1
  410. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
  411. package/components/Kebab/Kebab/Kebab.js +7 -4
  412. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  413. package/components/Link/Link/Link.js +6 -3
  414. package/components/Link/Link/Link.js.map +1 -1
  415. package/components/Loader/Loader/Loader.js +2 -2
  416. package/components/Loader/Loader/Loader.js.map +1 -1
  417. package/components/MenuItem/MenuItem/MenuItem.js +3 -3
  418. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  419. package/components/MiniModal/MiniModal/MiniModal.js +2 -2
  420. package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
  421. package/components/Modal/Modal/Modal.js +3 -3
  422. package/components/Modal/Modal/Modal.js.map +1 -1
  423. package/components/Modal/ModalBody/ModalBody.js +3 -3
  424. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  425. package/components/Paging/Paging/Paging.js +10 -6
  426. package/components/Paging/Paging/Paging.js.map +1 -1
  427. package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -2
  428. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  429. package/components/Radio/Radio/Radio.js +2 -2
  430. package/components/Radio/Radio/Radio.js.map +1 -1
  431. package/components/RadioGroup/RadioGroup/RadioGroup.js +8 -4
  432. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  433. package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -2
  434. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  435. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +5 -0
  436. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  437. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  438. package/components/Select/Select/Select.js +6 -5
  439. package/components/Select/Select/Select.js.map +1 -1
  440. package/components/SidePage/SidePage/SidePage.js +2 -2
  441. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  442. package/components/SidePage/SidePageBody/SidePageBody.js +2 -2
  443. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  444. package/components/SidePage/SidePageContainer/SidePageContainer.js +2 -2
  445. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  446. package/components/SidePage/SidePageFooter/SidePageFooter.js +2 -2
  447. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  448. package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -2
  449. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  450. package/components/Spinner/Spinner/Spinner.js +2 -2
  451. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  452. package/components/Switcher/Switcher/Switcher.js +3 -3
  453. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  454. package/components/Tabs/Indicator/Indicator.js +2 -2
  455. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  456. package/components/Tabs/Tab/Tab.js +3 -3
  457. package/components/Tabs/Tab/Tab.js.map +1 -1
  458. package/components/Tabs/Tabs/Tabs.js +2 -2
  459. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  460. package/components/Textarea/Textarea/Textarea.js +2 -2
  461. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  462. package/components/Toast/Toast/Toast.js +3 -3
  463. package/components/Toast/Toast/Toast.js.map +1 -1
  464. package/components/Toast/ToastView/ToastView.js +2 -2
  465. package/components/Toast/ToastView/ToastView.js.map +1 -1
  466. package/components/Toggle/Toggle/Toggle.js +2 -2
  467. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  468. package/components/Token/Token/Token.js +6 -3
  469. package/components/Token/Token/Token.js.map +1 -1
  470. package/components/TokenInput/TokenInput/TokenInput.js +2 -2
  471. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  472. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +3 -3
  473. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  474. package/components/Tooltip/Tooltip/Tooltip.js +67 -46
  475. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  476. package/components/Tooltip/Tooltip.d.ts +10 -5
  477. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +3 -3
  478. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  479. package/hooks/useDrop/useDrop.js.map +1 -1
  480. package/hooks/useDrop.d.ts +1 -1
  481. package/index.d.ts +2 -0
  482. package/index.js +2 -0
  483. package/index.js.map +1 -1
  484. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +2 -2
  485. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  486. package/internal/CommonWrapper/utils/extractCommonProps/extractCommonProps.js.map +1 -0
  487. package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/package.json +1 -1
  488. package/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
  489. package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/getCommonVisualStateDataAttributes.js +1 -5
  490. package/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
  491. package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/package.json +1 -1
  492. package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/getVisualStateDataAttributes.js +3 -3
  493. package/internal/CommonWrapper/utils/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
  494. package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/package.json +1 -1
  495. package/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
  496. package/internal/CommonWrapper/utils/tryGetBoolean/package.json +6 -0
  497. package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js +3 -0
  498. package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js.map +1 -0
  499. package/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
  500. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +3 -3
  501. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  502. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +5 -3
  503. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  504. package/internal/DateSelect/DateSelect/DateSelect.js +59 -6
  505. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  506. package/internal/DateSelect/DateSelect.d.ts +2 -0
  507. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
  508. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  509. package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  510. package/internal/DateSelect/locale/locales/en/en.js +2 -1
  511. package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
  512. package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
  513. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
  514. package/internal/DateSelect/locale/types.d.ts +1 -0
  515. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +12 -3
  516. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  517. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  518. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +4 -2
  519. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  520. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  521. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -2
  522. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  523. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  524. package/internal/InputLikeText/InputLikeText/InputLikeText.js +3 -3
  525. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  526. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -2
  527. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  528. package/internal/InternalMenu/InternalMenu/InternalMenu.js +3 -3
  529. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  530. package/internal/Menu/Menu/Menu.js +3 -3
  531. package/internal/Menu/Menu/Menu.js.map +1 -1
  532. package/internal/MobilePopup/MobilePopup/MobilePopup.js +4 -3
  533. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  534. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  535. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
  536. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  537. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
  538. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  539. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
  540. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
  541. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
  542. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  543. package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
  544. package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
  545. package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
  546. package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  547. package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
  548. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -2
  549. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  550. package/internal/NativeDateInput/utils/utils.js +2 -1
  551. package/internal/NativeDateInput/utils/utils.js.map +1 -1
  552. package/internal/Popup/Popup/Popup.js +53 -10
  553. package/internal/Popup/Popup/Popup.js.map +1 -1
  554. package/internal/Popup/Popup.d.ts +15 -4
  555. package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
  556. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  557. package/internal/RenderContainer/RenderContainer/RenderContainer.js +19 -12
  558. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  559. package/internal/RenderContainer/RenderContainer.d.ts +3 -0
  560. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +11 -5
  561. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  562. package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
  563. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  564. package/internal/ThemePlayground/Playground/Playground.js +2 -2
  565. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  566. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +10 -7
  567. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  568. package/internal/ThemePlayground/constants/constants.js +3 -0
  569. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  570. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
  571. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  572. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  573. package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
  574. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  575. package/internal/ZIndex/ZIndex.d.ts +7 -3
  576. package/internal/themes/DarkTheme/DarkTheme.js +2 -0
  577. package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
  578. package/internal/themes/DarkTheme.d.ts +2 -0
  579. package/internal/themes/DefaultTheme/DefaultTheme.js +32 -1
  580. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  581. package/internal/themes/DefaultTheme.d.ts +18 -0
  582. package/lib/date/InternalDate/InternalDate.js +7 -1
  583. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  584. package/lib/date/InternalDate.d.ts +2 -0
  585. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
  586. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  587. package/lib/date/InternalDateTransformer.d.ts +3 -0
  588. package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
  589. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  590. package/lib/date/comparison/comparison.js +45 -0
  591. package/lib/date/comparison/comparison.js.map +1 -0
  592. package/lib/date/comparison/package.json +6 -0
  593. package/lib/date/comparison.d.ts +6 -0
  594. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  595. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  596. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
  597. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  598. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  599. package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
  600. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  601. package/lib/locale/constants/constants.js +4 -1
  602. package/lib/locale/constants/constants.js.map +1 -1
  603. package/lib/locale/constants.d.ts +3 -0
  604. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
  605. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  606. package/lib/theming/Emotion/Emotion.js +12 -3
  607. package/lib/theming/Emotion/Emotion.js.map +1 -1
  608. package/lib/theming/Emotion.d.ts +7 -1
  609. package/lib/theming/ThemeContext/ThemeContext.js +0 -2
  610. package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
  611. package/lib/theming/ThemeContext.d.ts +0 -2
  612. package/lib/theming/ThemeContext.md +3 -1
  613. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js +33 -0
  614. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js.map +1 -0
  615. package/lib/theming/themes/Theme2022DarkUpdate2024/package.json +6 -0
  616. package/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  617. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js +50 -0
  618. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js.map +1 -0
  619. package/lib/theming/themes/Theme2022Update2024/package.json +6 -0
  620. package/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  621. package/lib/widgets/StylesContainer/StylesContainer.js +65 -0
  622. package/lib/widgets/StylesContainer/StylesContainer.js.map +1 -0
  623. package/lib/widgets/StylesContainer/package.json +6 -0
  624. package/lib/widgets/StylesContainer.d.ts +13 -0
  625. package/lib/widgets/index/index.js +1 -0
  626. package/lib/widgets/index/index.js.map +1 -0
  627. package/lib/widgets/index/package.json +6 -0
  628. package/lib/widgets/index.d.ts +1 -0
  629. package/lib/widgets/package.json +6 -0
  630. package/package.json +3 -2
  631. package/cjs/internal/CommonWrapper/extractCommonProps.js.map +0 -1
  632. package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +0 -1
  633. package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +0 -1
  634. package/cjs/lib/theming/StyleContainer.d.ts +0 -4
  635. package/cjs/lib/theming/StyleContainer.js +0 -21
  636. package/cjs/lib/theming/StyleContainer.js.map +0 -1
  637. package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +0 -1
  638. package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +0 -1
  639. package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +0 -1
  640. package/lib/theming/StyleContainer/StyleContainer.js +0 -21
  641. package/lib/theming/StyleContainer/StyleContainer.js.map +0 -1
  642. package/lib/theming/StyleContainer/package.json +0 -6
  643. package/lib/theming/StyleContainer.d.ts +0 -4
  644. /package/cjs/internal/CommonWrapper/{extractCommonProps.js → utils/extractCommonProps.js} +0 -0
  645. /package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
  646. /package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/extractCommonProps.js +0 -0
  647. /package/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
@@ -13,7 +13,6 @@ import shallowEqual from 'shallowequal';
13
13
  import { globalObject } from '@skbkontur/global-object';
14
14
  import { isInstanceOf } from "../../../lib/isInstanceOf";
15
15
  import { InternalDate } from "../../../lib/date/InternalDate";
16
- import { InternalDateTransformer } from "../../../lib/date/InternalDateTransformer";
17
16
  import { rootNode } from "../../../lib/rootNode";
18
17
  import { EmotionConsumer } from "../../../lib/theming/Emotion";
19
18
  import { CommonWrapper } from "../../../internal/CommonWrapper";
@@ -21,20 +20,25 @@ import { MAX_DATE, MAX_MONTH, MAX_YEAR, MIN_DATE, MIN_MONTH, MIN_YEAR } from "..
21
20
  import { animation } from "../../../lib/animation";
22
21
  import { isMobile } from "../../../lib/client";
23
22
  import { createPropsGetter } from "../../../lib/createPropsGetter";
24
- import { ThemeConsumer } from "../../../lib/theming/ThemeContext";
23
+ import { InternalDateTransformer } from "../../../lib/date/InternalDateTransformer";
24
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
25
25
  import { themeConfig } from "../config";
26
26
  import { MonthViewModel } from "../MonthViewModel";
27
27
  import * as CalendarScrollEvents from "../CalendarScrollEvents";
28
28
  import { Month } from "../Month";
29
29
  import { create, isGreater, isLess } from "../CalendarDateShape";
30
30
  import * as CalendarUtils from "../CalendarUtils";
31
+ import { CalendarContext } from "../CalendarContext";
31
32
  import { getStyles } from "../Calendar.styles";
33
+ import { CalendarDay } from "../CalendarDay";
32
34
  export var CalendarDataTids = {
33
35
  root: 'Calendar__root',
34
36
  month: 'MonthView__month',
35
37
  dayCell: 'DayCellView__root',
36
38
  headerMonth: 'MonthView__headerMonth',
37
- headerYear: 'MonthView__headerYear'
39
+ monthSelectMobile: 'MonthView__monthSelectMobile',
40
+ headerYear: 'MonthView__headerYear',
41
+ yearSelectMobile: 'MonthView__yearSelectMobile'
38
42
  };
39
43
  export
40
44
  /**
@@ -54,7 +58,7 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
54
58
  };
55
59
 
56
60
  function Calendar(_props) {
57
- var _CalendarUtils$getMon, _this$props$initialYe;
61
+ var _this$props$initialYe;
58
62
 
59
63
  var _this;
60
64
 
@@ -215,8 +219,21 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
215
219
  };
216
220
  }();
217
221
 
222
+ _this.handleMonthChange = function (visibleMonths) {
223
+ var currentMonth = visibleMonths[0];
224
+ var changeInfo = {
225
+ month: CalendarUtils.getMonthInHumanFormat(currentMonth.month),
226
+ year: currentMonth.year
227
+ };
228
+ _this.props.onMonthChange == null ? void 0 : _this.props.onMonthChange(changeInfo);
229
+ };
230
+
231
+ _this.getViewModel = function (item) {
232
+ return item[1];
233
+ };
234
+
218
235
  _this.renderMain = function () {
219
- var positions = _this.getMonthPositions();
236
+ var monthsForRender = _this.getVisibleMonths(_this.state);
220
237
 
221
238
  var wrapperStyle = {
222
239
  height: themeConfig(_this.theme).WRAPPER_HEIGHT
@@ -225,6 +242,15 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
225
242
  var props = _this.getProps();
226
243
 
227
244
  var styles = getStyles(_this.emotion);
245
+ var context = {
246
+ value: _this.getDateInNativeFormat(props.value),
247
+ minDate: _this.getDateInNativeFormat(props.minDate),
248
+ maxDate: _this.getDateInNativeFormat(props.maxDate),
249
+ isHoliday: props.isHoliday,
250
+ renderDay: props.renderDay,
251
+ today: CalendarUtils.getTodayDate(),
252
+ onDateClick: _this.handleDateClick
253
+ };
228
254
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
229
255
  rootNodeRef: _this.setRootNode
230
256
  }, props), /*#__PURE__*/React.createElement("div", {
@@ -234,13 +260,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
234
260
  }, /*#__PURE__*/React.createElement("div", {
235
261
  style: wrapperStyle,
236
262
  className: styles.wrapper()
237
- }, _this.state.months.map(function (x, i) {
238
- return [positions[i], x];
239
- }).filter(function (_ref2) {
240
- var top = _ref2[0],
241
- month = _ref2[1];
242
- return CalendarUtils.isMonthVisible(top, month, _this.theme);
243
- }).map(_this.renderMonth, _assertThisInitialized(_this))), /*#__PURE__*/React.createElement("div", {
263
+ }, /*#__PURE__*/React.createElement(CalendarContext.Provider, {
264
+ value: context
265
+ }, monthsForRender.map(_this.renderMonth, _assertThisInitialized(_this)))), /*#__PURE__*/React.createElement("div", {
244
266
  className: styles.separator(_this.theme)
245
267
  })));
246
268
  };
@@ -270,29 +292,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
270
292
  _this.root = element;
271
293
  };
272
294
 
273
- _this.isHoliday = function (_ref3) {
274
- var date = _ref3.date,
275
- month = _ref3.month,
276
- year = _ref3.year,
277
- isWeekend = _ref3.isWeekend;
278
- var dateString = InternalDateTransformer.dateToInternalString({
279
- date: date,
280
- month: month + 1,
281
- year: year
282
- });
283
- return _this.getProps().isHoliday(dateString, isWeekend);
284
- };
285
-
286
- _this.handleDateChange = function (dateShape) {
287
- var value = InternalDateTransformer.dateToInternalString({
288
- date: dateShape.date,
289
- month: dateShape.month + 1,
290
- year: dateShape.year
291
- });
292
-
293
- if (_this.props.onValueChange) {
294
- _this.props.onValueChange(value);
295
- }
295
+ _this.handleDateClick = function (dateShape) {
296
+ var value = InternalDateTransformer.dateToHumanString(dateShape);
297
+ _this.props.onValueChange == null ? void 0 : _this.props.onValueChange(value);
296
298
  };
297
299
 
298
300
  _this.handleMonthYearChange = function (month, year) {
@@ -300,9 +302,9 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
300
302
  };
301
303
 
302
304
  _this.executeAnimations = function (pixelY) {
303
- _this.setState(function (_ref4) {
304
- var months = _ref4.months,
305
- scrollPosition = _ref4.scrollPosition;
305
+ _this.setState(function (_ref2) {
306
+ var months = _ref2.months,
307
+ scrollPosition = _ref2.scrollPosition;
306
308
  var targetPosition = CalendarUtils.calculateScrollPosition(months, scrollPosition, pixelY, _this.theme).scrollPosition;
307
309
  return {
308
310
  scrollTarget: targetPosition
@@ -365,13 +367,13 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
365
367
  var _this$state = _this.state,
366
368
  scrollTarget = _this$state.scrollTarget,
367
369
  scrollDirection = _this$state.scrollDirection;
368
- var trasholdHeight = themeConfig(_this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(_this.theme).DAY_SIZE;
370
+ var thresholdHeight = themeConfig(_this.theme).MONTH_TITLE_OFFSET_HEIGHT + themeConfig(_this.theme).DAY_HEIGHT;
369
371
 
370
- if (scrollTarget < trasholdHeight) {
372
+ if (scrollTarget < thresholdHeight) {
371
373
  var targetPosition = 0;
372
374
 
373
375
  if (scrollDirection < 0) {
374
- targetPosition = trasholdHeight;
376
+ targetPosition = thresholdHeight;
375
377
  }
376
378
 
377
379
  _this.setState({
@@ -394,8 +396,8 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
394
396
 
395
397
  _this.scrollAmount = function (scrollAmmount, onEnd) {
396
398
  return _this.animation.animate(scrollAmmount, function (deltaY) {
397
- _this.setState(function (_ref5) {
398
- var scrollPosition = _ref5.scrollPosition;
399
+ _this.setState(function (_ref3) {
400
+ var scrollPosition = _ref3.scrollPosition;
399
401
  return {
400
402
  scrollPosition: scrollPosition + deltaY
401
403
  };
@@ -421,12 +423,11 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
421
423
  minDate: minDateShape,
422
424
  maxDate: maxDateShape
423
425
  });
424
- var initialMonth = (_CalendarUtils$getMon = CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth)) != null ? _CalendarUtils$getMon : initialDate.month;
426
+ var initialMonth = _this.props.initialMonth ? CalendarUtils.getMonthInNativeFormat(_this.props.initialMonth) : initialDate.month;
425
427
  var initialYear = (_this$props$initialYe = _this.props.initialYear) != null ? _this$props$initialYe : initialDate.year;
426
428
  _this.state = {
427
429
  scrollPosition: 0,
428
430
  months: CalendarUtils.getMonths(initialMonth, initialYear),
429
- today: today,
430
431
  scrollDirection: 1,
431
432
  scrollTarget: 0
432
433
  };
@@ -435,14 +436,27 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
435
436
 
436
437
  var _proto = Calendar.prototype;
437
438
 
438
- _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
439
- var value = this.props.value;
439
+ _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
440
+ var _this$props = this.props,
441
+ value = _this$props.value,
442
+ onMonthChange = _this$props.onMonthChange;
440
443
 
441
444
  if (value && !shallowEqual(value, prevProps.value)) {
442
445
  var _date = new InternalDate().parseValue(value).getComponentsLikeNumber();
443
446
 
444
447
  this.scrollToMonth(_date.month - 1, _date.year);
445
448
  }
449
+
450
+ if (onMonthChange) {
451
+ var visibleMonthsModels = this.getVisibleMonths(this.state).map(this.getViewModel);
452
+ var prevFirstVisibleMonthModels = this.getVisibleMonths(prevState).map(this.getViewModel);
453
+ var currentMonth = visibleMonthsModels[0].month;
454
+ var prevCurrentMonth = prevFirstVisibleMonthModels[0].month;
455
+
456
+ if (currentMonth !== prevCurrentMonth) {
457
+ this.handleMonthChange(visibleMonthsModels);
458
+ }
459
+ }
446
460
  };
447
461
 
448
462
  _proto.componentWillUnmount = function componentWillUnmount() {
@@ -456,7 +470,7 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
456
470
 
457
471
  return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
458
472
  _this2.emotion = emotion;
459
- return /*#__PURE__*/React.createElement(ThemeConsumer, null, function (theme) {
473
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
460
474
  _this2.theme = theme;
461
475
  return _this2.renderMain();
462
476
  });
@@ -468,23 +482,14 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
468
482
  */
469
483
  ;
470
484
 
471
- _proto.renderMonth = function renderMonth(_ref6) {
472
- var top = _ref6[0],
473
- month = _ref6[1];
474
- var date = this.getDateInNativeFormat(this.props.value);
475
- var minDate = this.getDateInNativeFormat(this.props.minDate);
476
- var maxDate = this.getDateInNativeFormat(this.props.maxDate);
485
+ _proto.renderMonth = function renderMonth(_ref4) {
486
+ var top = _ref4[0],
487
+ month = _ref4[1];
477
488
  return /*#__PURE__*/React.createElement(Month, {
478
489
  key: month.month + '-' + month.year,
479
490
  top: top,
480
491
  month: month,
481
- maxDate: maxDate,
482
- minDate: minDate,
483
- today: this.state.today,
484
- value: date,
485
- onDateClick: this.handleDateChange,
486
- onMonthYearChange: this.handleMonthYearChange,
487
- isHoliday: this.isHoliday
492
+ onMonthYearChange: this.handleMonthYearChange
488
493
  });
489
494
  };
490
495
 
@@ -492,10 +497,7 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
492
497
  return new InternalDate().parseValue(date).toNativeFormat();
493
498
  };
494
499
 
495
- _proto.getMonthPositions = function getMonthPositions() {
496
- var _this$state2 = this.state,
497
- scrollPosition = _this$state2.scrollPosition,
498
- months = _this$state2.months;
500
+ _proto.getMonthPositions = function getMonthPositions(months, scrollPosition) {
499
501
  var positions = [scrollPosition - months[0].getHeight(this.theme)];
500
502
 
501
503
  for (var i = 1; i < months.length; i++) {
@@ -506,8 +508,23 @@ var Calendar = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Reac
506
508
  return positions;
507
509
  };
508
510
 
511
+ _proto.getVisibleMonths = function getVisibleMonths(state) {
512
+ var _this3 = this;
513
+
514
+ var months = state.months,
515
+ scrollPosition = state.scrollPosition;
516
+ var positions = this.getMonthPositions(months, scrollPosition);
517
+ return months.map(function (x, i) {
518
+ return [positions[i], x];
519
+ }).filter(function (_ref5) {
520
+ var top = _ref5[0],
521
+ month = _ref5[1];
522
+ return CalendarUtils.isMonthVisible(top, month, _this3.theme);
523
+ });
524
+ };
525
+
509
526
  return Calendar;
510
- }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Calendar', _class2.displayName = 'Calendar', _class2.defaultProps = {
527
+ }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Calendar', _class2.displayName = 'Calendar', _class2.Day = CalendarDay, _class2.defaultProps = {
511
528
  minDate: _class2.formatDate(MIN_DATE, MIN_MONTH, MIN_YEAR),
512
529
  maxDate: _class2.formatDate(MAX_DATE, MAX_MONTH, MAX_YEAR),
513
530
  isHoliday: function isHoliday(_day, isWeekend) {
@@ -1 +1 @@
1
- {"version":3,"sources":["Calendar.tsx"],"names":["React","normalizeWheel","throttle","shallowEqual","globalObject","isInstanceOf","InternalDate","InternalDateTransformer","rootNode","EmotionConsumer","CommonWrapper","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","animation","isMobile","createPropsGetter","ThemeConsumer","themeConfig","MonthViewModel","CalendarScrollEvents","Month","create","isGreater","isLess","CalendarUtils","getStyles","CalendarDataTids","root","month","dayCell","headerMonth","headerYear","Calendar","formatDate","date","year","setComponents","toString","withPad","props","getProps","defaultProps","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","renderMain","positions","getMonthPositions","wrapperStyle","height","WRAPPER_HEIGHT","styles","emotion","setRootNode","refRoot","cx","wrapper","map","x","i","filter","top","isMonthVisible","renderMonth","separator","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","isHoliday","isWeekend","dateString","dateToInternalString","handleDateChange","dateShape","value","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","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","Component","__KONTUR_REACT_UI__","displayName","_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';\nimport type { Emotion } from '@emotion/css/create-instance';\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 { EmotionConsumer } 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 { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\nimport { getStyles } from './Calendar.styles';\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 emotion!: Emotion;\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 <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\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 const styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...props}>\n <div ref={this.refRoot} data-tid={CalendarDataTids.root} className={this.emotion.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":["React","normalizeWheel","throttle","shallowEqual","globalObject","isInstanceOf","InternalDate","rootNode","EmotionConsumer","CommonWrapper","MAX_DATE","MAX_MONTH","MAX_YEAR","MIN_DATE","MIN_MONTH","MIN_YEAR","animation","isMobile","createPropsGetter","InternalDateTransformer","ThemeContext","themeConfig","MonthViewModel","CalendarScrollEvents","Month","create","isGreater","isLess","CalendarUtils","CalendarContext","getStyles","CalendarDay","CalendarDataTids","root","month","dayCell","headerMonth","monthSelectMobile","headerYear","yearSelectMobile","Calendar","formatDate","date","year","setComponents","toString","withPad","props","getProps","defaultProps","touchStartY","scrollToMonth","inProgress","finish","Promise","r","setTimeout","minDate","getDateInNativeFormat","maxDate","currentMonth","state","months","diffInMonths","scrollTo","maxMonthsToAdd","theme","MAX_MONTHS_TO_APPEND_ON_SCROLL","onEnd","setState","getMonths","scrollPosition","isYearChanges","Math","abs","monthsToPrependCount","min","monthsToPrepend","Array","from","length","_","index","yearChanges","isFirstInYear","isLastInYear","concat","getMonthsHeight","targetPosition","getHeight","monthsToAppendCount","monthsToAppend","slice","handleMonthChange","visibleMonths","changeInfo","getMonthInHumanFormat","onMonthChange","getViewModel","item","renderMain","monthsForRender","getVisibleMonths","wrapperStyle","height","WRAPPER_HEIGHT","styles","emotion","context","value","isHoliday","renderDay","today","getTodayDate","onDateClick","handleDateClick","setRootNode","refRoot","cx","wrapper","map","renderMonth","separator","element","addEventListener","handleTouchStart","throttledHandleTouchMove","handleWheel","passive","removeEventListener","dateShape","dateToHumanString","onValueChange","handleMonthYearChange","executeAnimations","pixelY","calculateScrollPosition","scrollTarget","handleWheelEnd","animate","deltaY","applyDelta","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","Component","__KONTUR_REACT_UI__","displayName","Day","_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';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { EmotionConsumer } 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 { animation } from '../../lib/animation';\nimport { isMobile } from '../../lib/client';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { themeConfig } from './config';\nimport { MonthViewModel } from './MonthViewModel';\nimport * as CalendarScrollEvents from './CalendarScrollEvents';\nimport { Month } from './Month';\nimport { CalendarDateShape, create, isGreater, isLess } from './CalendarDateShape';\nimport * as CalendarUtils from './CalendarUtils';\nimport { CalendarContext, CalendarContextProps } from './CalendarContext';\nimport { getStyles } from './Calendar.styles';\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 * @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 emotion!: Emotion;\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 <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\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 const styles = getStyles(this.emotion);\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={this.emotion.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"]}
@@ -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`
@@ -45,20 +45,40 @@ export interface CalendarProps extends CommonProps {
45
45
  * Позволяет задать начальный год
46
46
  */
47
47
  initialYear?: number;
48
+ /**
49
+ * Метод отрисовки дат в календаре
50
+ * @default (props: CalendarDayProps) => <CalendarDay {...props} />
51
+ * @param {CalendarDayProps} props
52
+ *
53
+ * @returns {ReactElement} Элемент, который отрисовывает контент числа месяца.
54
+ */
55
+ renderDay?: (props: CalendarDayProps) => React.ReactElement;
56
+ /**
57
+ * Вызывается при каждом изменении месяца
58
+ * @param {CalendarMonthChangeInfo} changeInfo - информация о изменении отображаемого месяца, где
59
+ * `month: number` - номер текущего отображаемого месяца от 1 до 12,
60
+ * `year: number` - отображаемый год,
61
+ */
62
+ onMonthChange?: (changeInfo: CalendarMonthChangeInfo) => void;
48
63
  }
49
64
  export interface CalendarState {
50
65
  scrollPosition: number;
51
66
  months: MonthViewModel[];
52
- today: CalendarDateShape;
53
67
  scrollDirection: number;
54
68
  scrollTarget: number;
55
69
  }
70
+ export interface CalendarMonthChangeInfo {
71
+ month: number;
72
+ year: number;
73
+ }
56
74
  export declare const CalendarDataTids: {
57
75
  readonly root: "Calendar__root";
58
76
  readonly month: "MonthView__month";
59
77
  readonly dayCell: "DayCellView__root";
60
78
  readonly headerMonth: "MonthView__headerMonth";
79
+ readonly monthSelectMobile: "MonthView__monthSelectMobile";
61
80
  readonly headerYear: "MonthView__headerYear";
81
+ readonly yearSelectMobile: "MonthView__yearSelectMobile";
62
82
  };
63
83
  declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' | 'isHoliday'>>;
64
84
  /**
@@ -67,6 +87,7 @@ declare type DefaultProps = Required<Pick<CalendarProps, 'minDate' | 'maxDate' |
67
87
  export declare class Calendar extends React.Component<CalendarProps, CalendarState> {
68
88
  static __KONTUR_REACT_UI__: string;
69
89
  static displayName: string;
90
+ static Day: React.MemoExoticComponent<import("../../lib/forwardRefAndName").ReactUIComponentWithRef<HTMLButtonElement, CalendarDayProps> & Record<string, unknown>>;
70
91
  private static formatDate;
71
92
  static defaultProps: DefaultProps;
72
93
  private getProps;
@@ -78,7 +99,7 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
78
99
  private touchStartY;
79
100
  private setRootNode;
80
101
  constructor(props: CalendarProps);
81
- componentDidUpdate(prevProps: Readonly<CalendarProps>): void;
102
+ componentDidUpdate(prevProps: Readonly<CalendarProps>, prevState: Readonly<CalendarState>): void;
82
103
  componentWillUnmount(): void;
83
104
  render(): JSX.Element;
84
105
  /**
@@ -86,13 +107,15 @@ export declare class Calendar extends React.Component<CalendarProps, CalendarSta
86
107
  * @public
87
108
  */
88
109
  scrollToMonth: (month: number, year: number) => Promise<void>;
110
+ private handleMonthChange;
111
+ private getViewModel;
89
112
  private renderMain;
90
113
  private refRoot;
91
114
  private renderMonth;
92
- private isHoliday;
93
- private handleDateChange;
115
+ private handleDateClick;
94
116
  private getDateInNativeFormat;
95
117
  private getMonthPositions;
118
+ private getVisibleMonths;
96
119
  private handleMonthYearChange;
97
120
  private executeAnimations;
98
121
  private handleTouchStart;
@@ -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,86 @@ const theme = React.useContext(ThemeContext);
103
104
  </ThemeContext.Provider>
104
105
  ```
105
106
 
107
+ ### Кастомный рендер дня
108
+
109
+ Для кастомнизации дней в календаре используется метод `renderDay` и компонент [Calendar.Day](#/Components/Calendar/Calendar.Day)
110
+
111
+ ```jsx harmony
112
+ import { Tooltip, Hint, CalendarDay } from '@skbkontur/react-ui';
113
+
114
+ const initialValue = "02.09.2023";
115
+
116
+ const [value, setValue] = React.useState(initialValue);
117
+
118
+ const renderDay = (props) => {
119
+ const [date, month, year] = props.date.split('.').map(Number);
120
+
121
+ if (month == 9 && date > 12 && date < 16) {
122
+ return (
123
+ <Tooltip render={() => "Кастомный день"}>
124
+ <CalendarDay {...props} style={{ background: 'darkgray' }} />
125
+ </Tooltip>
126
+ );
127
+ }
128
+
129
+ if (month == 8 && date == 20) {
130
+ return (
131
+ <Hint text={date} pos="right middle">
132
+ <CalendarDay {...props}>
133
+ <b style={{color: 'orange'}}>#</b>
134
+ </CalendarDay>
135
+ </Hint>
136
+ );
137
+ }
138
+
139
+ return <CalendarDay {...props} />
140
+ };
141
+
142
+ <Calendar
143
+ value={value}
144
+ onValueChange={setValue}
145
+ renderDay={renderDay}
146
+ />;
147
+ ```
148
+
149
+ ### Календарь с ценами
150
+
151
+ Пример с кастомизацией темы и кастомным рендером дня
152
+
153
+ ```jsx harmony
154
+ import { ThemeContext, ThemeFactory, CalendarDay } from '@skbkontur/react-ui';
155
+
156
+ const theme = React.useContext(ThemeContext);
157
+
158
+ function renderDay(props) {
159
+ const [date, month] = props.date.split('.').map(Number);
160
+ const randomDay = date % 6 === 0 || date % 7 === 0 || date % 8 === 0;
161
+ const randomPrice = Math.round((date / month) * 1000);
162
+
163
+ return (
164
+ <CalendarDay {...props}>
165
+ <div style={{ fontSize: theme.calendarCellFontSize }}>{date}</div>
166
+ <div style={{ fontSize: '11px', fontFeatureSettings: 'tnum', fontVariantNumeric: 'tabular-nums' }}>
167
+ {randomDay ? <>{randomPrice}&thinsp;₽</> : <span style={{ color: theme.tokenTextColorDisabled }}>—</span>}
168
+ </div>
169
+ </CalendarDay>
170
+ );
171
+ }
172
+
173
+ const [value, setValue] = React.useState(null);
174
+
175
+ <ThemeContext.Provider
176
+ value={ThemeFactory.create({
177
+ calendarCellSize: '56px',
178
+ calendarCellLineHeight: '1.5',
179
+ calendarWrapperHeight: '600px',
180
+ calendarCellBorderRadius: '8px'
181
+ }, theme)}
182
+ >
183
+ <Calendar value={value} renderDay={renderDay} onValueChange={setValue} />
184
+ </ThemeContext.Provider>
185
+ ```
186
+
106
187
  #### Локали по умолчанию
107
188
 
108
189
  ```typescript static