@vkontakte/vkui 7.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (683) hide show
  1. package/dist/components/ActionSheet/ActionSheet.d.ts +2 -1
  2. package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  3. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  4. package/dist/components/ActionSheet/types.d.ts +1 -1
  5. package/dist/components/ActionSheet/types.d.ts.map +1 -1
  6. package/dist/components/ActionSheet/types.js.map +1 -1
  7. package/dist/components/Alert/Alert.d.ts +1 -1
  8. package/dist/components/Alert/Alert.js.map +1 -1
  9. package/dist/components/AppRoot/AppRoot.d.ts +1 -1
  10. package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
  11. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  12. package/dist/components/AppRoot/AppRootContext.d.ts +2 -2
  13. package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
  14. package/dist/components/AppRoot/AppRootContext.js.map +1 -1
  15. package/dist/components/AppRoot/AppRootPortal.d.ts +1 -1
  16. package/dist/components/AppRoot/AppRootPortal.d.ts.map +1 -1
  17. package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
  18. package/dist/components/AppRoot/ScrollContext.d.ts +1 -1
  19. package/dist/components/AppRoot/ScrollContext.d.ts.map +1 -1
  20. package/dist/components/AppRoot/ScrollContext.js.map +1 -1
  21. package/dist/components/AspectRatio/AspectRatio.d.ts +7 -3
  22. package/dist/components/AspectRatio/AspectRatio.d.ts.map +1 -1
  23. package/dist/components/AspectRatio/AspectRatio.js +1 -1
  24. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  25. package/dist/components/Calendar/Calendar.d.ts +3 -4
  26. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  27. package/dist/components/Calendar/Calendar.js +81 -64
  28. package/dist/components/Calendar/Calendar.js.map +1 -1
  29. package/dist/components/CalendarDay/CalendarDay.d.ts +3 -0
  30. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  31. package/dist/components/CalendarDay/CalendarDay.js +3 -1
  32. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  33. package/dist/components/CalendarDays/CalendarDays.d.ts +3 -0
  34. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  35. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  36. package/dist/components/CalendarHeader/CalendarHeader.d.ts +12 -0
  37. package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  38. package/dist/components/CalendarHeader/CalendarHeader.js +4 -2
  39. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  40. package/dist/components/CalendarRange/CalendarRange.d.ts +7 -1
  41. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  42. package/dist/components/CalendarRange/CalendarRange.js +108 -93
  43. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  44. package/dist/components/CalendarTime/CalendarTime.d.ts +20 -4
  45. package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  46. package/dist/components/CalendarTime/CalendarTime.js +68 -9
  47. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  48. package/dist/components/CardScroll/CardScroll.d.ts +2 -3
  49. package/dist/components/CardScroll/CardScroll.d.ts.map +1 -1
  50. package/dist/components/CardScroll/CardScroll.js +6 -2
  51. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  52. package/dist/components/CarouselBase/Bullets.d.ts +16 -0
  53. package/dist/components/CarouselBase/Bullets.d.ts.map +1 -0
  54. package/dist/components/CarouselBase/Bullets.js +21 -0
  55. package/dist/components/CarouselBase/Bullets.js.map +1 -0
  56. package/dist/components/CarouselBase/CarouselBase.d.ts +4 -0
  57. package/dist/components/CarouselBase/CarouselBase.d.ts.map +1 -0
  58. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/CarouselBase.js +175 -98
  59. package/dist/components/CarouselBase/CarouselBase.js.map +1 -0
  60. package/dist/components/CarouselBase/CarouselViewPort.d.ts +14 -0
  61. package/dist/components/CarouselBase/CarouselViewPort.d.ts.map +1 -0
  62. package/dist/components/CarouselBase/CarouselViewPort.js +29 -0
  63. package/dist/components/CarouselBase/CarouselViewPort.js.map +1 -0
  64. package/dist/components/CarouselBase/ScrollArrows.d.ts +23 -0
  65. package/dist/components/CarouselBase/ScrollArrows.d.ts.map +1 -0
  66. package/dist/components/CarouselBase/ScrollArrows.js +34 -0
  67. package/dist/components/CarouselBase/ScrollArrows.js.map +1 -0
  68. package/dist/components/CarouselBase/constants.d.ts.map +1 -0
  69. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/constants.js +5 -1
  70. package/dist/components/CarouselBase/constants.js.map +1 -0
  71. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/helpers.d.ts +13 -4
  72. package/dist/components/CarouselBase/helpers.d.ts.map +1 -0
  73. package/dist/{cssm/components/BaseGallery → components}/CarouselBase/helpers.js +41 -5
  74. package/dist/components/CarouselBase/helpers.js.map +1 -0
  75. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.d.ts +1 -1
  76. package/dist/components/CarouselBase/hooks.d.ts.map +1 -0
  77. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.js +2 -2
  78. package/dist/components/CarouselBase/hooks.js.map +1 -0
  79. package/dist/components/CarouselBase/types.d.ts +125 -0
  80. package/dist/components/CarouselBase/types.d.ts.map +1 -0
  81. package/dist/components/CarouselBase/types.js.map +1 -0
  82. package/dist/components/ChipsInput/ChipsInput.d.ts +1 -1
  83. package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
  84. package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
  85. package/dist/components/ChipsInput/useChipsInput.d.ts +1 -1
  86. package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
  87. package/dist/components/ChipsInput/useChipsInput.js.map +1 -1
  88. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  89. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  90. package/dist/components/ChipsSelect/useChipsSelect.d.ts +1 -1
  91. package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
  92. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  93. package/dist/components/Clickable/useState.js.map +1 -1
  94. package/dist/components/Clickable/useStateWithDelay.js +1 -1
  95. package/dist/components/Clickable/useStateWithDelay.js.map +1 -1
  96. package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  97. package/dist/components/ConfigProvider/ConfigProvider.js +8 -23
  98. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  99. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  100. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts.map +1 -1
  101. package/dist/components/ConfigProvider/ConfigProviderContext.js +22 -0
  102. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  103. package/dist/components/ConfigProvider/ConfigProviderOverride.d.ts.map +1 -1
  104. package/dist/components/ConfigProvider/ConfigProviderOverride.js +2 -3
  105. package/dist/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
  106. package/dist/components/CustomScrollView/CustomScrollView.d.ts +5 -1
  107. package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  108. package/dist/components/CustomScrollView/CustomScrollView.js +9 -4
  109. package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
  110. package/dist/components/CustomSelect/CustomSelect.d.ts +6 -2
  111. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  112. package/dist/components/CustomSelect/CustomSelect.js +8 -4
  113. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  114. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  115. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  116. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  117. package/dist/components/DateInput/DateInput.d.ts +24 -2
  118. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  119. package/dist/components/DateInput/DateInput.js +41 -6
  120. package/dist/components/DateInput/DateInput.js.map +1 -1
  121. package/dist/components/DateRangeInput/DateRangeInput.d.ts +19 -1
  122. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  123. package/dist/components/DateRangeInput/DateRangeInput.js +6 -4
  124. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  125. package/dist/components/Epic/Epic.d.ts.map +1 -1
  126. package/dist/components/Epic/Epic.js.map +1 -1
  127. package/dist/components/FixedLayout/FixedLayout.d.ts.map +1 -1
  128. package/dist/components/FixedLayout/FixedLayout.js +1 -2
  129. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  130. package/dist/components/Gallery/Gallery.d.ts +2 -3
  131. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  132. package/dist/components/Gallery/Gallery.js +3 -6
  133. package/dist/components/Gallery/Gallery.js.map +1 -1
  134. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +9 -1
  135. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  136. package/dist/components/HorizontalScroll/HorizontalScroll.js +6 -4
  137. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  138. package/dist/components/Image/Image.d.ts +1 -0
  139. package/dist/components/Image/Image.d.ts.map +1 -1
  140. package/dist/components/Image/Image.js +2 -0
  141. package/dist/components/Image/Image.js.map +1 -1
  142. package/dist/components/ImageBase/ImageBase.d.ts +8 -1
  143. package/dist/components/ImageBase/ImageBase.d.ts.map +1 -1
  144. package/dist/components/ImageBase/ImageBase.js +39 -11
  145. package/dist/components/ImageBase/ImageBase.js.map +1 -1
  146. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.d.ts +29 -0
  147. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.d.ts.map +1 -0
  148. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +96 -0
  149. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -0
  150. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.d.ts +4 -0
  151. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.d.ts.map +1 -0
  152. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.js +35 -0
  153. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.js.map +1 -0
  154. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts +1 -1
  155. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -1
  156. package/dist/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -1
  157. package/dist/components/ImageBase/context.d.ts.map +1 -1
  158. package/dist/components/ImageBase/context.js +3 -1
  159. package/dist/components/ImageBase/context.js.map +1 -1
  160. package/dist/components/ImageBase/types.d.ts +2 -0
  161. package/dist/components/ImageBase/types.d.ts.map +1 -1
  162. package/dist/components/ImageBase/types.js.map +1 -1
  163. package/dist/components/ImageBase/validators.d.ts +2 -1
  164. package/dist/components/ImageBase/validators.d.ts.map +1 -1
  165. package/dist/components/ImageBase/validators.js.map +1 -1
  166. package/dist/components/ModalCard/ModalCard.d.ts.map +1 -1
  167. package/dist/components/ModalCard/ModalCard.js +3 -2
  168. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  169. package/dist/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  170. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  171. package/dist/components/ModalRoot/ModalRootContext.d.ts +1 -1
  172. package/dist/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
  173. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  174. package/dist/components/NativeSelect/NativeSelect.d.ts +4 -2
  175. package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
  176. package/dist/components/NativeSelect/NativeSelect.js +4 -3
  177. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  178. package/dist/components/Pagination/Pagination.d.ts +14 -1
  179. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  180. package/dist/components/Pagination/Pagination.js +13 -4
  181. package/dist/components/Pagination/Pagination.js.map +1 -1
  182. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts +2 -0
  183. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts.map +1 -1
  184. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js +2 -1
  185. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js.map +1 -1
  186. package/dist/components/Popover/Popover.d.ts +2 -2
  187. package/dist/components/Popover/Popover.d.ts.map +1 -1
  188. package/dist/components/Popover/Popover.js +6 -126
  189. package/dist/components/Popover/Popover.js.map +1 -1
  190. package/dist/components/Popover/usePopover.d.ts +14 -0
  191. package/dist/components/Popover/usePopover.d.ts.map +1 -0
  192. package/dist/components/Popover/usePopover.js +138 -0
  193. package/dist/components/Popover/usePopover.js.map +1 -0
  194. package/dist/components/Popper/Popper.d.ts +2 -2
  195. package/dist/components/Popper/Popper.d.ts.map +1 -1
  196. package/dist/components/Popper/Popper.js +9 -2
  197. package/dist/components/Popper/Popper.js.map +1 -1
  198. package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
  199. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  200. package/dist/components/Removable/Removable.d.ts +2 -2
  201. package/dist/components/Removable/Removable.js.map +1 -1
  202. package/dist/components/RichCell/RichCell.d.ts +11 -1
  203. package/dist/components/RichCell/RichCell.d.ts.map +1 -1
  204. package/dist/components/RichCell/RichCell.js +15 -8
  205. package/dist/components/RichCell/RichCell.js.map +1 -1
  206. package/dist/components/Root/Root.d.ts.map +1 -1
  207. package/dist/components/Root/Root.js +3 -1
  208. package/dist/components/Root/Root.js.map +1 -1
  209. package/dist/components/SegmentedControl/SegmentedControl.d.ts +2 -2
  210. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  211. package/dist/components/SegmentedControl/SegmentedControl.js +30 -10
  212. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  213. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts +5 -3
  214. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
  215. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +6 -17
  216. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  217. package/dist/components/Select/Select.d.ts.map +1 -1
  218. package/dist/components/Select/Select.js +3 -2
  219. package/dist/components/Select/Select.js.map +1 -1
  220. package/dist/components/Skeleton/Skeleton.js +2 -2
  221. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  222. package/dist/components/Slider/Slider.d.ts +9 -1
  223. package/dist/components/Slider/Slider.d.ts.map +1 -1
  224. package/dist/components/Slider/Slider.js +5 -1
  225. package/dist/components/Slider/Slider.js.map +1 -1
  226. package/dist/components/Snackbar/Snackbar.js +1 -1
  227. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  228. package/dist/components/SplitCol/SplitColContext.d.ts +1 -1
  229. package/dist/components/SplitCol/SplitColContext.d.ts.map +1 -1
  230. package/dist/components/SplitCol/SplitColContext.js.map +1 -1
  231. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  232. package/dist/components/Tabs/Tabs.js +2 -82
  233. package/dist/components/Tabs/Tabs.js.map +1 -1
  234. package/dist/components/Textarea/Textarea.js +2 -2
  235. package/dist/components/Textarea/Textarea.js.map +1 -1
  236. package/dist/components/Textarea/useResizeTextarea.d.ts +1 -1
  237. package/dist/components/Textarea/useResizeTextarea.d.ts.map +1 -1
  238. package/dist/components/Textarea/useResizeTextarea.js +1 -1
  239. package/dist/components/Textarea/useResizeTextarea.js.map +1 -1
  240. package/dist/components/Tooltip/Tooltip.d.ts +3 -3
  241. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  242. package/dist/components/Tooltip/Tooltip.js +4 -2
  243. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  244. package/dist/components/TooltipBase/TooltipBase.d.ts.map +1 -1
  245. package/dist/components/TooltipBase/TooltipBase.js +2 -0
  246. package/dist/components/TooltipBase/TooltipBase.js.map +1 -1
  247. package/dist/components/UsersStack/UsersStack.d.ts +1 -1
  248. package/dist/components/UsersStack/UsersStack.d.ts.map +1 -1
  249. package/dist/components/UsersStack/UsersStack.js +16 -5
  250. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  251. package/dist/components/View/View.d.ts.map +1 -1
  252. package/dist/components/View/View.js +3 -1
  253. package/dist/components/View/View.js.map +1 -1
  254. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  255. package/dist/components/View/ViewInfinite.js +3 -1
  256. package/dist/components/View/ViewInfinite.js.map +1 -1
  257. package/dist/components.css +1 -1
  258. package/dist/components.css.map +1 -1
  259. package/dist/context/CalendarDirectionContext.d.ts +7 -0
  260. package/dist/context/CalendarDirectionContext.d.ts.map +1 -0
  261. package/dist/context/CalendarDirectionContext.js +7 -0
  262. package/dist/context/CalendarDirectionContext.js.map +1 -0
  263. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  264. package/dist/cssm/components/ActionSheet/types.js.map +1 -1
  265. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  266. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  267. package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
  268. package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
  269. package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
  270. package/dist/cssm/components/AspectRatio/AspectRatio.js +1 -1
  271. package/dist/cssm/components/AspectRatio/AspectRatio.js.map +1 -1
  272. package/dist/cssm/components/Calendar/Calendar.js +79 -64
  273. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  274. package/dist/cssm/components/CalendarDay/CalendarDay.js +3 -1
  275. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  276. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +4 -0
  277. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  278. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +4 -2
  279. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  280. package/dist/cssm/components/CalendarRange/CalendarRange.js +108 -94
  281. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  282. package/dist/cssm/components/CalendarTime/CalendarTime.js +67 -9
  283. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  284. package/dist/cssm/components/CardScroll/CardScroll.js +3 -1
  285. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  286. package/dist/cssm/components/CarouselBase/Bullets.js +22 -0
  287. package/dist/cssm/components/CarouselBase/Bullets.js.map +1 -0
  288. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/CarouselBase.js +164 -97
  289. package/dist/cssm/components/CarouselBase/CarouselBase.js.map +1 -0
  290. package/dist/cssm/components/{BaseGallery/BaseGallery.module.css → CarouselBase/CarouselBase.module.css} +21 -1
  291. package/dist/cssm/components/CarouselBase/CarouselViewPort.js +30 -0
  292. package/dist/cssm/components/CarouselBase/CarouselViewPort.js.map +1 -0
  293. package/dist/cssm/components/CarouselBase/ScrollArrows.js +35 -0
  294. package/dist/cssm/components/CarouselBase/ScrollArrows.js.map +1 -0
  295. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/constants.js +5 -1
  296. package/dist/cssm/components/CarouselBase/constants.js.map +1 -0
  297. package/dist/{components/BaseGallery → cssm/components}/CarouselBase/helpers.js +39 -5
  298. package/dist/cssm/components/CarouselBase/helpers.js.map +1 -0
  299. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.js +2 -2
  300. package/dist/cssm/components/CarouselBase/hooks.js.map +1 -0
  301. package/dist/cssm/components/CarouselBase/types.js.map +1 -0
  302. package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
  303. package/dist/cssm/components/ChipsInput/useChipsInput.js.map +1 -1
  304. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  305. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  306. package/dist/cssm/components/Clickable/useState.js.map +1 -1
  307. package/dist/cssm/components/Clickable/useStateWithDelay.js +1 -1
  308. package/dist/cssm/components/Clickable/useStateWithDelay.js.map +1 -1
  309. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +8 -23
  310. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  311. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +22 -0
  312. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  313. package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js +2 -3
  314. package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
  315. package/dist/cssm/components/ContentCard/ContentCard.module.css +1 -0
  316. package/dist/cssm/components/CustomScrollView/CustomScrollView.js +8 -4
  317. package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
  318. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +6 -2
  319. package/dist/cssm/components/CustomSelect/CustomSelect.js +6 -3
  320. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  321. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  322. package/dist/cssm/components/DateInput/DateInput.js +37 -5
  323. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  324. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
  325. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  326. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  327. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -2
  328. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  329. package/dist/cssm/components/FormField/FormField.module.css +11 -11
  330. package/dist/cssm/components/Gallery/Gallery.js +3 -5
  331. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  332. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +3 -3
  333. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  334. package/dist/cssm/components/Image/Image.js +2 -0
  335. package/dist/cssm/components/Image/Image.js.map +1 -1
  336. package/dist/cssm/components/ImageBase/ImageBase.js +35 -9
  337. package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
  338. package/dist/cssm/components/ImageBase/ImageBase.module.css +11 -2
  339. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +91 -0
  340. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -0
  341. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.module.css +134 -0
  342. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/helpers.js +35 -0
  343. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/helpers.js.map +1 -0
  344. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -1
  345. package/dist/cssm/components/ImageBase/context.js +3 -1
  346. package/dist/cssm/components/ImageBase/context.js.map +1 -1
  347. package/dist/cssm/components/ImageBase/types.js.map +1 -1
  348. package/dist/cssm/components/ImageBase/validators.js.map +1 -1
  349. package/dist/cssm/components/ModalCard/ModalCard.js +1 -1
  350. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  351. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  352. package/dist/cssm/components/ModalPage/ModalPage.module.css +5 -4
  353. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  354. package/dist/cssm/components/NativeSelect/NativeSelect.js +4 -3
  355. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  356. package/dist/cssm/components/Pagination/Pagination.js +10 -4
  357. package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
  358. package/dist/cssm/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js +2 -1
  359. package/dist/cssm/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js.map +1 -1
  360. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +5 -4
  361. package/dist/cssm/components/Popover/Popover.js +5 -93
  362. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  363. package/dist/cssm/components/Popover/usePopover.js +102 -0
  364. package/dist/cssm/components/Popover/usePopover.js.map +1 -0
  365. package/dist/cssm/components/Popper/Popper.js +6 -1
  366. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  367. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
  368. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  369. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  370. package/dist/cssm/components/RichCell/RichCell.js +13 -8
  371. package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
  372. package/dist/cssm/components/RichCell/RichCell.module.css +17 -3
  373. package/dist/cssm/components/Root/Root.js +3 -1
  374. package/dist/cssm/components/Root/Root.js.map +1 -1
  375. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +27 -7
  376. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
  377. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +5 -5
  378. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  379. package/dist/cssm/components/Select/Select.js +1 -1
  380. package/dist/cssm/components/Select/Select.js.map +1 -1
  381. package/dist/cssm/components/Skeleton/Skeleton.js +2 -2
  382. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  383. package/dist/cssm/components/Slider/Slider.js +3 -1
  384. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  385. package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
  386. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  387. package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.module.css +12 -6
  388. package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -1
  389. package/dist/cssm/components/Tabs/Tabs.js +2 -82
  390. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  391. package/dist/cssm/components/Textarea/Textarea.js +2 -2
  392. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  393. package/dist/cssm/components/Textarea/useResizeTextarea.js +1 -1
  394. package/dist/cssm/components/Textarea/useResizeTextarea.js.map +1 -1
  395. package/dist/cssm/components/Tooltip/Tooltip.js +3 -2
  396. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  397. package/dist/cssm/components/TooltipBase/TooltipBase.js +2 -0
  398. package/dist/cssm/components/TooltipBase/TooltipBase.js.map +1 -1
  399. package/dist/cssm/components/TooltipBase/TooltipBase.module.css +5 -0
  400. package/dist/cssm/components/UsersStack/UsersStack.js +15 -4
  401. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  402. package/dist/cssm/components/UsersStack/UsersStack.module.css +27 -17
  403. package/dist/cssm/components/View/View.js +3 -1
  404. package/dist/cssm/components/View/View.js.map +1 -1
  405. package/dist/cssm/components/View/ViewInfinite.js +3 -1
  406. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  407. package/dist/cssm/context/CalendarDirectionContext.js +7 -0
  408. package/dist/cssm/context/CalendarDirectionContext.js.map +1 -0
  409. package/dist/cssm/helpers/getMergedSameEventsByProps.js.map +1 -1
  410. package/dist/cssm/hooks/useDateInput.js.map +1 -1
  411. package/dist/cssm/hooks/useDirection.js.map +1 -1
  412. package/dist/cssm/hooks/useDraggableWithDomApi/types.js.map +1 -1
  413. package/dist/cssm/hooks/useEnsuredControl.js +1 -1
  414. package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
  415. package/dist/cssm/hooks/useExternRef.js.map +1 -1
  416. package/dist/cssm/hooks/useFocusTrap.js.map +1 -1
  417. package/dist/cssm/hooks/useGlobalOnClickOutside.js.map +1 -1
  418. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  419. package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
  420. package/dist/cssm/hooks/useNativeFormResetListener.js.map +1 -1
  421. package/dist/cssm/hooks/usePatchChildren.js.map +1 -1
  422. package/dist/cssm/hooks/usePrevious.js +1 -1
  423. package/dist/cssm/hooks/usePrevious.js.map +1 -1
  424. package/dist/cssm/hooks/useResizeObserver.js +20 -4
  425. package/dist/cssm/hooks/useResizeObserver.js.map +1 -1
  426. package/dist/cssm/hooks/useStateWithPrev.js.map +1 -1
  427. package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
  428. package/dist/cssm/hooks/useSyncHTMLWithTokens.js.map +1 -1
  429. package/dist/cssm/hooks/useTabsNavigation.js +90 -0
  430. package/dist/cssm/hooks/useTabsNavigation.js.map +1 -0
  431. package/dist/cssm/index.js +4 -0
  432. package/dist/cssm/index.js.map +1 -1
  433. package/dist/cssm/lib/animation/useCSSTransition.js.map +1 -1
  434. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js +4 -4
  435. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  436. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  437. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +10 -3
  438. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  439. package/dist/cssm/lib/utils.js.map +1 -1
  440. package/dist/cssm/styles/constants.css +1 -0
  441. package/dist/helpers/getMergedSameEventsByProps.d.ts +1 -1
  442. package/dist/helpers/getMergedSameEventsByProps.d.ts.map +1 -1
  443. package/dist/helpers/getMergedSameEventsByProps.js.map +1 -1
  444. package/dist/hooks/useDateInput.d.ts +3 -3
  445. package/dist/hooks/useDateInput.d.ts.map +1 -1
  446. package/dist/hooks/useDateInput.js.map +1 -1
  447. package/dist/hooks/useDirection.d.ts +2 -2
  448. package/dist/hooks/useDirection.d.ts.map +1 -1
  449. package/dist/hooks/useDirection.js.map +1 -1
  450. package/dist/hooks/useDraggableWithDomApi/types.d.ts +1 -1
  451. package/dist/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
  452. package/dist/hooks/useDraggableWithDomApi/types.js.map +1 -1
  453. package/dist/hooks/useEnsuredControl.js +1 -1
  454. package/dist/hooks/useEnsuredControl.js.map +1 -1
  455. package/dist/hooks/useExternRef.d.ts +1 -1
  456. package/dist/hooks/useExternRef.d.ts.map +1 -1
  457. package/dist/hooks/useExternRef.js.map +1 -1
  458. package/dist/hooks/useFocusTrap.d.ts +1 -1
  459. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  460. package/dist/hooks/useFocusTrap.js.map +1 -1
  461. package/dist/hooks/useGlobalOnClickOutside.d.ts +1 -1
  462. package/dist/hooks/useGlobalOnClickOutside.d.ts.map +1 -1
  463. package/dist/hooks/useGlobalOnClickOutside.js.map +1 -1
  464. package/dist/hooks/useKeyboardInputTracker.d.ts +1 -1
  465. package/dist/hooks/useKeyboardInputTracker.d.ts.map +1 -1
  466. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  467. package/dist/hooks/useMutationObserver.d.ts +1 -1
  468. package/dist/hooks/useMutationObserver.d.ts.map +1 -1
  469. package/dist/hooks/useMutationObserver.js.map +1 -1
  470. package/dist/hooks/useNativeFormResetListener.d.ts +1 -1
  471. package/dist/hooks/useNativeFormResetListener.d.ts.map +1 -1
  472. package/dist/hooks/useNativeFormResetListener.js.map +1 -1
  473. package/dist/hooks/usePatchChildren.d.ts +2 -2
  474. package/dist/hooks/usePatchChildren.d.ts.map +1 -1
  475. package/dist/hooks/usePatchChildren.js.map +1 -1
  476. package/dist/hooks/usePrevious.js +1 -1
  477. package/dist/hooks/usePrevious.js.map +1 -1
  478. package/dist/hooks/useResizeObserver.d.ts +1 -1
  479. package/dist/hooks/useResizeObserver.d.ts.map +1 -1
  480. package/dist/hooks/useResizeObserver.js +20 -4
  481. package/dist/hooks/useResizeObserver.js.map +1 -1
  482. package/dist/hooks/useStateWithPrev.d.ts.map +1 -1
  483. package/dist/hooks/useStateWithPrev.js.map +1 -1
  484. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts +1 -1
  485. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts.map +1 -1
  486. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
  487. package/dist/hooks/useSyncHTMLWithTokens.d.ts +1 -1
  488. package/dist/hooks/useSyncHTMLWithTokens.d.ts.map +1 -1
  489. package/dist/hooks/useSyncHTMLWithTokens.js.map +1 -1
  490. package/dist/hooks/useTabsNavigation.d.ts +5 -0
  491. package/dist/hooks/useTabsNavigation.d.ts.map +1 -0
  492. package/dist/hooks/useTabsNavigation.js +90 -0
  493. package/dist/hooks/useTabsNavigation.js.map +1 -0
  494. package/dist/index.d.ts +5 -1
  495. package/dist/index.d.ts.map +1 -1
  496. package/dist/index.js +4 -0
  497. package/dist/index.js.map +1 -1
  498. package/dist/lib/animation/useCSSTransition.d.ts +1 -1
  499. package/dist/lib/animation/useCSSTransition.d.ts.map +1 -1
  500. package/dist/lib/animation/useCSSTransition.js.map +1 -1
  501. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts +1 -1
  502. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts.map +1 -1
  503. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js +4 -4
  504. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  505. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +10 -1
  506. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  507. package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  508. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts +1 -1
  509. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  510. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +10 -3
  511. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  512. package/dist/lib/utils.d.ts +1 -1
  513. package/dist/lib/utils.d.ts.map +1 -1
  514. package/dist/lib/utils.js.map +1 -1
  515. package/dist/vkui.css +1 -1
  516. package/dist/vkui.css.map +1 -1
  517. package/package.json +6 -6
  518. package/src/components/ActionSheet/ActionSheet.tsx +3 -4
  519. package/src/components/ActionSheet/types.ts +1 -1
  520. package/src/components/Alert/Alert.tsx +1 -1
  521. package/src/components/AppRoot/AppRoot.tsx +1 -1
  522. package/src/components/AppRoot/AppRootContext.ts +2 -2
  523. package/src/components/AppRoot/AppRootPortal.tsx +1 -1
  524. package/src/components/AppRoot/ScrollContext.tsx +1 -1
  525. package/src/components/AspectRatio/AspectRatio.tsx +11 -4
  526. package/src/components/Calendar/Calendar.tsx +90 -72
  527. package/src/components/CalendarDay/CalendarDay.module.css +4 -0
  528. package/src/components/CalendarDay/CalendarDay.tsx +10 -1
  529. package/src/components/CalendarDays/CalendarDays.tsx +3 -0
  530. package/src/components/CalendarHeader/CalendarHeader.tsx +17 -2
  531. package/src/components/CalendarRange/CalendarRange.tsx +110 -84
  532. package/src/components/CalendarTime/CalendarTime.tsx +104 -16
  533. package/src/components/CardScroll/CardScroll.tsx +8 -2
  534. package/src/components/CarouselBase/Bullets.tsx +36 -0
  535. package/src/components/{BaseGallery/BaseGallery.module.css → CarouselBase/CarouselBase.module.css} +19 -1
  536. package/src/components/CarouselBase/CarouselBase.tsx +502 -0
  537. package/src/components/CarouselBase/CarouselViewPort.tsx +54 -0
  538. package/src/components/CarouselBase/ScrollArrows.tsx +80 -0
  539. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/constants.ts +4 -0
  540. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/helpers.ts +67 -7
  541. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.ts +2 -2
  542. package/src/components/CarouselBase/types.ts +135 -0
  543. package/src/components/ChipsInput/ChipsInput.tsx +1 -1
  544. package/src/components/ChipsInput/useChipsInput.ts +2 -2
  545. package/src/components/ChipsSelect/ChipsSelect.tsx +1 -1
  546. package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
  547. package/src/components/Clickable/useState.tsx +2 -2
  548. package/src/components/Clickable/useStateWithDelay.tsx +1 -1
  549. package/src/components/ConfigProvider/ConfigProvider.tsx +8 -35
  550. package/src/components/ConfigProvider/ConfigProviderContext.tsx +36 -0
  551. package/src/components/ConfigProvider/ConfigProviderOverride.tsx +2 -5
  552. package/src/components/ContentCard/ContentCard.module.css +1 -0
  553. package/src/components/CustomScrollView/CustomScrollView.module.css +6 -2
  554. package/src/components/CustomScrollView/CustomScrollView.tsx +13 -2
  555. package/src/components/CustomSelect/CustomSelect.tsx +12 -4
  556. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -1
  557. package/src/components/DateInput/DateInput.tsx +62 -5
  558. package/src/components/DateRangeInput/DateRangeInput.tsx +22 -2
  559. package/src/components/Epic/Epic.tsx +5 -3
  560. package/src/components/FixedLayout/FixedLayout.tsx +1 -2
  561. package/src/components/FormField/FormField.module.css +11 -11
  562. package/src/components/Gallery/Gallery.tsx +4 -10
  563. package/src/components/HorizontalScroll/HorizontalScroll.tsx +12 -2
  564. package/src/components/Image/Image.tsx +4 -0
  565. package/src/components/ImageBase/ImageBase.module.css +11 -2
  566. package/src/components/ImageBase/ImageBase.tsx +69 -10
  567. package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.module.css +134 -0
  568. package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.tsx +168 -0
  569. package/src/components/ImageBase/ImageBaseFloatElement/helpers.ts +44 -0
  570. package/src/components/ImageBase/ImageBaseOverlay/hooks.ts +1 -1
  571. package/src/components/ImageBase/context.ts +2 -0
  572. package/src/components/ImageBase/types.ts +2 -0
  573. package/src/components/ImageBase/validators.ts +5 -4
  574. package/src/components/ModalCard/ModalCard.tsx +5 -1
  575. package/src/components/ModalCardBase/ModalCardBase.tsx +1 -1
  576. package/src/components/ModalPage/ModalPage.module.css +5 -4
  577. package/src/components/ModalRoot/ModalRootContext.tsx +3 -1
  578. package/src/components/NativeSelect/NativeSelect.tsx +4 -3
  579. package/src/components/Pagination/Pagination.tsx +23 -4
  580. package/src/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.tsx +4 -2
  581. package/src/components/PanelHeader/PanelHeader.module.css +5 -4
  582. package/src/components/Popover/Popover.tsx +6 -166
  583. package/src/components/Popover/usePopover.tsx +183 -0
  584. package/src/components/Popper/Popper.tsx +12 -1
  585. package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
  586. package/src/components/Removable/Removable.tsx +2 -2
  587. package/src/components/RichCell/RichCell.module.css +17 -3
  588. package/src/components/RichCell/RichCell.tsx +28 -8
  589. package/src/components/Root/Root.tsx +4 -2
  590. package/src/components/SegmentedControl/SegmentedControl.tsx +46 -14
  591. package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +14 -10
  592. package/src/components/Select/Select.tsx +1 -0
  593. package/src/components/Skeleton/Skeleton.tsx +3 -3
  594. package/src/components/Slider/Slider.tsx +12 -0
  595. package/src/components/Snackbar/Snackbar.tsx +1 -1
  596. package/src/components/Snackbar/subcomponents/Basic/Basic.module.css +12 -6
  597. package/src/components/SplitCol/SplitColContext.tsx +1 -1
  598. package/src/components/Tabs/Tabs.tsx +2 -99
  599. package/src/components/Textarea/Textarea.tsx +2 -2
  600. package/src/components/Textarea/useResizeTextarea.ts +3 -3
  601. package/src/components/Tooltip/Tooltip.tsx +4 -1
  602. package/src/components/TooltipBase/TooltipBase.module.css +5 -0
  603. package/src/components/TooltipBase/TooltipBase.tsx +8 -2
  604. package/src/components/UsersStack/UsersStack.module.css +27 -17
  605. package/src/components/UsersStack/UsersStack.tsx +24 -3
  606. package/src/components/View/View.tsx +9 -5
  607. package/src/components/View/ViewInfinite.tsx +5 -3
  608. package/src/context/CalendarDirectionContext.ts +12 -0
  609. package/src/helpers/getMergedSameEventsByProps.ts +1 -1
  610. package/src/hooks/useDateInput.ts +5 -5
  611. package/src/hooks/useDirection.ts +3 -3
  612. package/src/hooks/useDraggableWithDomApi/types.ts +1 -1
  613. package/src/hooks/useEnsuredControl.ts +1 -1
  614. package/src/hooks/useExternRef.ts +2 -2
  615. package/src/hooks/useFocusTrap.ts +1 -1
  616. package/src/hooks/useGlobalOnClickOutside.ts +1 -1
  617. package/src/hooks/useKeyboardInputTracker.ts +1 -1
  618. package/src/hooks/useMutationObserver.ts +1 -1
  619. package/src/hooks/useNativeFormResetListener.ts +1 -1
  620. package/src/hooks/usePatchChildren.ts +2 -9
  621. package/src/hooks/usePrevious.ts +1 -1
  622. package/src/hooks/useResizeObserver.ts +30 -6
  623. package/src/hooks/useStateWithPrev.ts +1 -5
  624. package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +1 -1
  625. package/src/hooks/useSyncHTMLWithTokens.ts +1 -1
  626. package/src/hooks/useTabsNavigation.ts +104 -0
  627. package/src/index.ts +7 -0
  628. package/src/lib/animation/useCSSTransition.ts +1 -1
  629. package/src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts +9 -9
  630. package/src/lib/floating/useFloatingWithInteractions/types.ts +15 -5
  631. package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +7 -2
  632. package/src/lib/utils.ts +2 -2
  633. package/src/styles/constants.css +1 -0
  634. package/dist/components/BaseGallery/BaseGallery.d.ts +0 -4
  635. package/dist/components/BaseGallery/BaseGallery.d.ts.map +0 -1
  636. package/dist/components/BaseGallery/BaseGallery.js +0 -321
  637. package/dist/components/BaseGallery/BaseGallery.js.map +0 -1
  638. package/dist/components/BaseGallery/CarouselBase/CarouselBase.d.ts +0 -4
  639. package/dist/components/BaseGallery/CarouselBase/CarouselBase.d.ts.map +0 -1
  640. package/dist/components/BaseGallery/CarouselBase/CarouselBase.js.map +0 -1
  641. package/dist/components/BaseGallery/CarouselBase/constants.d.ts.map +0 -1
  642. package/dist/components/BaseGallery/CarouselBase/constants.js.map +0 -1
  643. package/dist/components/BaseGallery/CarouselBase/helpers.d.ts.map +0 -1
  644. package/dist/components/BaseGallery/CarouselBase/helpers.js.map +0 -1
  645. package/dist/components/BaseGallery/CarouselBase/hooks.d.ts.map +0 -1
  646. package/dist/components/BaseGallery/CarouselBase/hooks.js.map +0 -1
  647. package/dist/components/BaseGallery/CarouselBase/types.d.ts +0 -54
  648. package/dist/components/BaseGallery/CarouselBase/types.d.ts.map +0 -1
  649. package/dist/components/BaseGallery/CarouselBase/types.js.map +0 -1
  650. package/dist/components/BaseGallery/helpers.d.ts +0 -13
  651. package/dist/components/BaseGallery/helpers.d.ts.map +0 -1
  652. package/dist/components/BaseGallery/helpers.js +0 -24
  653. package/dist/components/BaseGallery/helpers.js.map +0 -1
  654. package/dist/components/BaseGallery/types.d.ts +0 -55
  655. package/dist/components/BaseGallery/types.d.ts.map +0 -1
  656. package/dist/components/BaseGallery/types.js.map +0 -1
  657. package/dist/cssm/components/BaseGallery/BaseGallery.js +0 -293
  658. package/dist/cssm/components/BaseGallery/BaseGallery.js.map +0 -1
  659. package/dist/cssm/components/BaseGallery/CarouselBase/CarouselBase.js.map +0 -1
  660. package/dist/cssm/components/BaseGallery/CarouselBase/constants.js.map +0 -1
  661. package/dist/cssm/components/BaseGallery/CarouselBase/helpers.js.map +0 -1
  662. package/dist/cssm/components/BaseGallery/CarouselBase/hooks.js.map +0 -1
  663. package/dist/cssm/components/BaseGallery/CarouselBase/types.js +0 -3
  664. package/dist/cssm/components/BaseGallery/CarouselBase/types.js.map +0 -1
  665. package/dist/cssm/components/BaseGallery/helpers.js +0 -24
  666. package/dist/cssm/components/BaseGallery/helpers.js.map +0 -1
  667. package/dist/cssm/components/BaseGallery/types.js +0 -3
  668. package/dist/cssm/components/BaseGallery/types.js.map +0 -1
  669. package/dist/cssm/hooks/useObjectMemo.js +0 -15
  670. package/dist/cssm/hooks/useObjectMemo.js.map +0 -1
  671. package/dist/hooks/useObjectMemo.d.ts +0 -5
  672. package/dist/hooks/useObjectMemo.d.ts.map +0 -1
  673. package/dist/hooks/useObjectMemo.js +0 -15
  674. package/dist/hooks/useObjectMemo.js.map +0 -1
  675. package/src/components/BaseGallery/BaseGallery.tsx +0 -380
  676. package/src/components/BaseGallery/CarouselBase/CarouselBase.tsx +0 -399
  677. package/src/components/BaseGallery/CarouselBase/types.ts +0 -56
  678. package/src/components/BaseGallery/helpers.ts +0 -46
  679. package/src/components/BaseGallery/types.ts +0 -61
  680. package/src/hooks/useObjectMemo.ts +0 -16
  681. /package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/constants.d.ts +0 -0
  682. /package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/types.js +0 -0
  683. /package/dist/{components/BaseGallery → cssm/components/CarouselBase}/types.js +0 -0
@@ -6,7 +6,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  import * as React from "react";
7
7
  import { classNames } from "@vkontakte/vkjs";
8
8
  import { isSameDay, isSameMonth } from "date-fns";
9
+ import { CalendarDirectionContext } from "../../context/CalendarDirectionContext.js";
9
10
  import { useCalendar } from "../../hooks/useCalendar.js";
11
+ import { useDirection } from "../../hooks/useDirection.js";
12
+ import { useExternRef } from "../../hooks/useExternRef.js";
10
13
  import { clamp, isFirstDay, isLastDay, navigateDate, setTimeEqual } from "../../lib/calendar.js";
11
14
  import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect.js";
12
15
  import { warnOnce } from "../../lib/warnOnce.js";
@@ -18,7 +21,8 @@ const warn = warnOnce('Calendar');
18
21
  /**
19
22
  * @see https://vkcom.github.io/VKUI/#/Calendar
20
23
  */ export const Calendar = (_param)=>{
21
- var { value, onChange, disablePast, disableFuture, shouldDisableDate, onDoneButtonClick, enableTime = false, doneButtonText, doneButtonDisabled, doneButtonShow, weekStartsOn = 1, disablePickers, changeHoursLabel = 'Изменить час', changeMinutesLabel = 'Изменить минуту', prevMonthLabel = 'Предыдущий месяц', nextMonthLabel = 'Следующий месяц', changeMonthLabel = 'Изменить месяц', changeYearLabel = 'Изменить год', showNeighboringMonth, changeDayLabel = 'Изменить день', size = 'm', viewDate: externalViewDate, onHeaderChange, onNextMonth, onPrevMonth, prevMonthIcon, nextMonthIcon, prevMonthProps, nextMonthProps, dayProps, listenDayChangesForUpdate, renderDayContent, minDateTime, maxDateTime, minutesTestId, hoursTestId, doneButtonTestId, prevMonthButtonTestId, nextMonthButtonTestId, monthDropdownTestId, yearDropdownTestId, dayTestId } = _param, props = _object_without_properties(_param, [
24
+ var { getRootRef, value, onChange, disablePast, disableFuture, shouldDisableDate, onDoneButtonClick, enableTime = false, doneButtonText, doneButtonDisabled, doneButtonShow, DoneButton, weekStartsOn = 1, disablePickers, changeHoursLabel = 'Изменить час', changeMinutesLabel = 'Изменить минуту', prevMonthLabel = 'Предыдущий месяц', nextMonthLabel = 'Следующий месяц', changeMonthLabel = 'Изменить месяц', changeYearLabel = 'Изменить год', showNeighboringMonth, changeDayLabel = 'Изменить день', size = 'm', viewDate: externalViewDate, onHeaderChange, onNextMonth, onPrevMonth, prevMonthIcon, nextMonthIcon, prevMonthProps, nextMonthProps, dayProps, listenDayChangesForUpdate, renderDayContent, minDateTime, maxDateTime, minutesTestId, hoursTestId, doneButtonTestId, prevMonthButtonTestId, nextMonthButtonTestId, monthDropdownTestId, yearDropdownTestId, dayTestId } = _param, props = _object_without_properties(_param, [
25
+ "getRootRef",
22
26
  "value",
23
27
  "onChange",
24
28
  "disablePast",
@@ -29,6 +33,7 @@ const warn = warnOnce('Calendar');
29
33
  "doneButtonText",
30
34
  "doneButtonDisabled",
31
35
  "doneButtonShow",
36
+ "DoneButton",
32
37
  "weekStartsOn",
33
38
  "disablePickers",
34
39
  "changeHoursLabel",
@@ -73,6 +78,8 @@ const warn = warnOnce('Calendar');
73
78
  minDateTime,
74
79
  maxDateTime
75
80
  });
81
+ const [directionRef, textDirection = 'ltr'] = useDirection();
82
+ const rootRef = useExternRef(directionRef, getRootRef);
76
83
  useIsomorphicLayoutEffect(()=>{
77
84
  if (value) {
78
85
  setViewDate(value);
@@ -125,71 +132,81 @@ const warn = warnOnce('Calendar');
125
132
  const isDayActive = React.useCallback((day)=>Boolean(value && isSameDay(day, value)), [
126
133
  value
127
134
  ]);
128
- return /*#__PURE__*/ _jsxs(RootComponent, _object_spread_props(_object_spread({}, props), {
129
- baseClassName: classNames("vkuiCalendar__host", size === 's' && "vkuiCalendar__sizeS"),
130
- children: [
131
- /*#__PURE__*/ _jsx(CalendarHeader, {
132
- viewDate: externalViewDate || viewDate,
133
- onChange: setViewDate,
134
- onNextMonth: setNextMonth,
135
- onPrevMonth: setPrevMonth,
136
- disablePickers: disablePickers || size === 's',
137
- className: "vkuiCalendar__header",
138
- prevMonthLabel: prevMonthLabel,
139
- nextMonthLabel: nextMonthLabel,
140
- changeMonthLabel: changeMonthLabel,
141
- changeYearLabel: changeYearLabel,
142
- prevMonthIcon: prevMonthIcon,
143
- nextMonthIcon: nextMonthIcon,
144
- prevMonthProps: prevMonthProps,
145
- nextMonthProps: nextMonthProps,
146
- isMonthDisabled: isMonthDisabled,
147
- isYearDisabled: isYearDisabled,
148
- nextMonthButtonTestId: nextMonthButtonTestId,
149
- prevMonthButtonTestId: prevMonthButtonTestId,
150
- monthDropdownTestId: monthDropdownTestId,
151
- yearDropdownTestId: yearDropdownTestId
152
- }),
153
- /*#__PURE__*/ _jsx(CalendarDays, {
154
- viewDate: externalViewDate || viewDate,
155
- value: value,
156
- weekStartsOn: weekStartsOn,
157
- isDayFocused: isDayFocused,
158
- tabIndex: 0,
159
- "aria-label": changeDayLabel,
160
- onKeyDown: handleKeyDown,
161
- onDayChange: onDayChange,
162
- isDayActive: isDayActive,
163
- isDaySelectionStart: isFirstDay,
164
- isDaySelectionEnd: isLastDay,
165
- isDayDisabled: isDayDisabled,
166
- onBlur: resetSelectedDay,
167
- showNeighboringMonth: showNeighboringMonth,
168
- size: size,
169
- dayProps: dayProps,
170
- listenDayChangesForUpdate: listenDayChangesForUpdate,
171
- renderDayContent: renderDayContent,
172
- dayTestId: dayTestId
173
- }),
174
- enableTime && value && size !== 's' && /*#__PURE__*/ _jsx("div", {
175
- className: "vkuiCalendar__time",
176
- children: /*#__PURE__*/ _jsx(CalendarTime, {
135
+ const directionContextValue = React.useMemo(()=>({
136
+ direction: textDirection
137
+ }), [
138
+ textDirection
139
+ ]);
140
+ return /*#__PURE__*/ _jsx(CalendarDirectionContext.Provider, {
141
+ value: directionContextValue,
142
+ children: /*#__PURE__*/ _jsxs(RootComponent, _object_spread_props(_object_spread({}, props), {
143
+ baseClassName: classNames("vkuiCalendar__host", size === 's' && "vkuiCalendar__sizeS"),
144
+ getRootRef: rootRef,
145
+ children: [
146
+ /*#__PURE__*/ _jsx(CalendarHeader, {
147
+ viewDate: externalViewDate || viewDate,
148
+ onChange: setViewDate,
149
+ onNextMonth: setNextMonth,
150
+ onPrevMonth: setPrevMonth,
151
+ disablePickers: disablePickers || size === 's',
152
+ className: "vkuiCalendar__header",
153
+ prevMonthLabel: prevMonthLabel,
154
+ nextMonthLabel: nextMonthLabel,
155
+ changeMonthLabel: changeMonthLabel,
156
+ changeYearLabel: changeYearLabel,
157
+ prevMonthIcon: prevMonthIcon,
158
+ nextMonthIcon: nextMonthIcon,
159
+ prevMonthProps: prevMonthProps,
160
+ nextMonthProps: nextMonthProps,
161
+ isMonthDisabled: isMonthDisabled,
162
+ isYearDisabled: isYearDisabled,
163
+ nextMonthButtonTestId: nextMonthButtonTestId,
164
+ prevMonthButtonTestId: prevMonthButtonTestId,
165
+ monthDropdownTestId: monthDropdownTestId,
166
+ yearDropdownTestId: yearDropdownTestId
167
+ }),
168
+ /*#__PURE__*/ _jsx(CalendarDays, {
169
+ viewDate: externalViewDate || viewDate,
177
170
  value: value,
178
- onChange: onChange,
179
- onDoneButtonClick: onDoneButtonClick,
180
- doneButtonText: doneButtonText,
181
- doneButtonDisabled: doneButtonDisabled,
182
- doneButtonShow: doneButtonShow,
183
- changeHoursLabel: changeHoursLabel,
184
- changeMinutesLabel: changeMinutesLabel,
185
- isDayDisabled: minDateTime || maxDateTime ? isDayDisabled : undefined,
186
- minutesTestId: minutesTestId,
187
- hoursTestId: hoursTestId,
188
- doneButtonTestId: doneButtonTestId
171
+ weekStartsOn: weekStartsOn,
172
+ isDayFocused: isDayFocused,
173
+ tabIndex: 0,
174
+ "aria-label": changeDayLabel,
175
+ onKeyDown: handleKeyDown,
176
+ onDayChange: onDayChange,
177
+ isDayActive: isDayActive,
178
+ isDaySelectionStart: isFirstDay,
179
+ isDaySelectionEnd: isLastDay,
180
+ isDayDisabled: isDayDisabled,
181
+ onBlur: resetSelectedDay,
182
+ showNeighboringMonth: showNeighboringMonth,
183
+ size: size,
184
+ dayProps: dayProps,
185
+ listenDayChangesForUpdate: listenDayChangesForUpdate,
186
+ renderDayContent: renderDayContent,
187
+ dayTestId: dayTestId
188
+ }),
189
+ enableTime && value && size !== 's' && /*#__PURE__*/ _jsx("div", {
190
+ className: "vkuiCalendar__time",
191
+ children: /*#__PURE__*/ _jsx(CalendarTime, {
192
+ value: value,
193
+ onChange: onChange,
194
+ onDoneButtonClick: onDoneButtonClick,
195
+ doneButtonText: doneButtonText,
196
+ doneButtonDisabled: doneButtonDisabled,
197
+ doneButtonShow: doneButtonShow,
198
+ DoneButton: DoneButton,
199
+ changeHoursLabel: changeHoursLabel,
200
+ changeMinutesLabel: changeMinutesLabel,
201
+ isDayDisabled: minDateTime || maxDateTime ? isDayDisabled : undefined,
202
+ minutesTestId: minutesTestId,
203
+ hoursTestId: hoursTestId,
204
+ doneButtonTestId: doneButtonTestId
205
+ })
189
206
  })
190
- })
191
- ]
192
- }));
207
+ ]
208
+ }))
209
+ });
193
210
  };
194
211
 
195
212
  //# sourceMappingURL=Calendar.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isSameDay, isSameMonth } from 'date-fns';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { clamp, isFirstDay, isLastDay, navigateDate, setTimeEqual } from '../../lib/calendar';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDays,\n type CalendarDaysProps,\n type CalendarDaysTestsProps,\n} from '../CalendarDays/CalendarDays';\nimport {\n CalendarHeader,\n type CalendarHeaderProps,\n type CalendarHeaderTestsProps,\n} from '../CalendarHeader/CalendarHeader';\nimport {\n CalendarTime,\n type CalendarTimeProps,\n type CalendarTimeTestsProps,\n} from '../CalendarTime/CalendarTime';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './Calendar.module.css';\n\nexport type CalendarTestsProps = CalendarDaysTestsProps &\n CalendarHeaderTestsProps &\n CalendarTimeTestsProps;\n\nexport interface CalendarProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<\n CalendarTimeProps,\n | 'changeHoursLabel'\n | 'changeMinutesLabel'\n | 'doneButtonText'\n | 'doneButtonDisabled'\n | 'doneButtonShow'\n >,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n | 'prevMonthProps'\n | 'nextMonthProps'\n >,\n Pick<CalendarDaysProps, 'dayProps' | 'listenDayChangesForUpdate' | 'renderDayContent'>,\n CalendarTestsProps {\n value?: Date;\n /**\n * Запрещает выбор даты в прошлом.\n * Применяется, если не заданы `shouldDisableDate` и `disableFuture`.\n */\n disablePast?: boolean;\n /**\n * Запрещает выбор даты в будущем.\n * Применяется, если не задано `shouldDisableDate`.\n */\n disableFuture?: boolean;\n enableTime?: boolean;\n disablePickers?: boolean;\n changeDayLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n showNeighboringMonth?: boolean;\n size?: 's' | 'm';\n onChange?: (value?: Date) => void;\n /**\n * Позволяет запретить выбор даты.\n */\n shouldDisableDate?: (value: Date) => boolean;\n onDoneButtonClick?: () => void;\n /**\n * Дата отображаемого месяца.\n * При использовании обновление даты должно происходить вне компонента.\n */\n viewDate?: Date;\n /**\n * Изменение даты в шапке календаря.\n */\n onHeaderChange?: (value: Date) => void;\n /**\n * Минимальные дата и время, которые можно выбрать\n * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.\n */\n minDateTime?: Date;\n /**\n * Максимальные дата и время, которые можно выбрать.\n * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.\n */\n maxDateTime?: Date;\n}\n\nconst warn = warnOnce('Calendar');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Calendar\n */\nexport const Calendar = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onDoneButtonClick,\n enableTime = false,\n doneButtonText,\n doneButtonDisabled,\n doneButtonShow,\n weekStartsOn = 1,\n disablePickers,\n changeHoursLabel = 'Изменить час',\n changeMinutesLabel = 'Изменить минуту',\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n showNeighboringMonth,\n changeDayLabel = 'Изменить день',\n size = 'm',\n viewDate: externalViewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n prevMonthProps,\n nextMonthProps,\n dayProps,\n listenDayChangesForUpdate,\n renderDayContent,\n minDateTime,\n maxDateTime,\n minutesTestId,\n hoursTestId,\n doneButtonTestId,\n prevMonthButtonTestId,\n nextMonthButtonTestId,\n monthDropdownTestId,\n yearDropdownTestId,\n dayTestId,\n ...props\n}: CalendarProps): React.ReactNode => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n isMonthDisabled,\n isYearDisabled,\n } = useCalendar({\n value,\n disableFuture,\n disablePast,\n shouldDisableDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n minDateTime,\n maxDateTime,\n });\n\n useIsomorphicLayoutEffect(() => {\n if (value) {\n setViewDate(value);\n }\n }, [value]);\n\n if (process.env.NODE_ENV === 'development' && !disablePickers && size === 's') {\n warn(\"Нельзя включить селекты выбора месяца/года, если размер календаря 's'\", 'error');\n }\n\n if (process.env.NODE_ENV === 'development' && enableTime && size === 's') {\n warn(\"Нельзя включить выбор времени, если размер календаря 's'\", 'error');\n }\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value, event.key);\n\n if (newFocusedDay && !isSameMonth(newFocusedDay, viewDate)) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n let actualDate = setTimeEqual(date, value);\n if (minDateTime || maxDateTime) {\n actualDate = clamp(actualDate, { min: minDateTime, max: maxDateTime });\n }\n onChange?.(actualDate);\n },\n [value, onChange, maxDateTime, minDateTime],\n );\n\n const isDayActive = React.useCallback(\n (day: Date) => Boolean(value && isSameDay(day, value)),\n [value],\n );\n\n return (\n <RootComponent {...props} baseClassName={classNames(styles.host, size === 's' && styles.sizeS)}>\n <CalendarHeader\n viewDate={externalViewDate || viewDate}\n onChange={setViewDate}\n onNextMonth={setNextMonth}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers || size === 's'}\n className={styles.header}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n prevMonthProps={prevMonthProps}\n nextMonthProps={nextMonthProps}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n nextMonthButtonTestId={nextMonthButtonTestId}\n prevMonthButtonTestId={prevMonthButtonTestId}\n monthDropdownTestId={monthDropdownTestId}\n yearDropdownTestId={yearDropdownTestId}\n />\n <CalendarDays\n viewDate={externalViewDate || viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n isDayFocused={isDayFocused}\n tabIndex={0}\n aria-label={changeDayLabel}\n onKeyDown={handleKeyDown}\n onDayChange={onDayChange}\n isDayActive={isDayActive}\n isDaySelectionStart={isFirstDay}\n isDaySelectionEnd={isLastDay}\n isDayDisabled={isDayDisabled}\n onBlur={resetSelectedDay}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n dayProps={dayProps}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n dayTestId={dayTestId}\n />\n {enableTime && value && size !== 's' && (\n <div className={styles.time}>\n <CalendarTime\n value={value}\n onChange={onChange}\n onDoneButtonClick={onDoneButtonClick}\n doneButtonText={doneButtonText}\n doneButtonDisabled={doneButtonDisabled}\n doneButtonShow={doneButtonShow}\n changeHoursLabel={changeHoursLabel}\n changeMinutesLabel={changeMinutesLabel}\n isDayDisabled={minDateTime || maxDateTime ? isDayDisabled : undefined}\n minutesTestId={minutesTestId}\n hoursTestId={hoursTestId}\n doneButtonTestId={doneButtonTestId}\n />\n </div>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","classNames","isSameDay","isSameMonth","useCalendar","clamp","isFirstDay","isLastDay","navigateDate","setTimeEqual","useIsomorphicLayoutEffect","warnOnce","CalendarDays","CalendarHeader","CalendarTime","RootComponent","warn","Calendar","value","onChange","disablePast","disableFuture","shouldDisableDate","onDoneButtonClick","enableTime","doneButtonText","doneButtonDisabled","doneButtonShow","weekStartsOn","disablePickers","changeHoursLabel","changeMinutesLabel","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","showNeighboringMonth","changeDayLabel","size","viewDate","externalViewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","prevMonthProps","nextMonthProps","dayProps","listenDayChangesForUpdate","renderDayContent","minDateTime","maxDateTime","minutesTestId","hoursTestId","doneButtonTestId","prevMonthButtonTestId","nextMonthButtonTestId","monthDropdownTestId","yearDropdownTestId","dayTestId","props","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","isMonthDisabled","isYearDisabled","process","env","NODE_ENV","handleKeyDown","useCallback","event","includes","key","preventDefault","newFocusedDay","onDayChange","date","actualDate","min","max","isDayActive","day","Boolean","baseClassName","className","tabIndex","aria-label","onKeyDown","isDaySelectionStart","isDaySelectionEnd","onBlur","div","undefined"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isSameDay, isSameMonth } from 'date-fns';\nimport {\n CalendarDirectionContext,\n type CalendarDirectionContextProps,\n} from '../../context/CalendarDirectionContext';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { useDirection } from '../../hooks/useDirection';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { clamp, isFirstDay, isLastDay, navigateDate, setTimeEqual } from '../../lib/calendar';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDays,\n type CalendarDaysProps,\n type CalendarDaysTestsProps,\n} from '../CalendarDays/CalendarDays';\nimport {\n CalendarHeader,\n type CalendarHeaderProps,\n type CalendarHeaderTestsProps,\n} from '../CalendarHeader/CalendarHeader';\nimport {\n type CalendarDoneButtonProps,\n CalendarTime,\n type CalendarTimeProps,\n type CalendarTimeTestsProps,\n} from '../CalendarTime/CalendarTime';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './Calendar.module.css';\n\nexport type CalendarTestsProps = CalendarDaysTestsProps &\n CalendarHeaderTestsProps &\n CalendarTimeTestsProps;\n\nexport interface CalendarProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<CalendarTimeProps, 'changeHoursLabel' | 'changeMinutesLabel'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n | 'prevMonthProps'\n | 'nextMonthProps'\n >,\n Pick<CalendarDaysProps, 'dayProps' | 'listenDayChangesForUpdate' | 'renderDayContent'>,\n CalendarDoneButtonProps,\n CalendarTestsProps {\n value?: Date;\n /**\n * Запрещает выбор даты в прошлом.\n * Применяется, если не заданы `shouldDisableDate` и `disableFuture`.\n */\n disablePast?: boolean;\n /**\n * Запрещает выбор даты в будущем.\n * Применяется, если не задано `shouldDisableDate`.\n */\n disableFuture?: boolean;\n enableTime?: boolean;\n disablePickers?: boolean;\n changeDayLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n showNeighboringMonth?: boolean;\n size?: 's' | 'm';\n onChange?: (value?: Date) => void;\n /**\n * Позволяет запретить выбор даты.\n */\n shouldDisableDate?: (value: Date) => boolean;\n /**\n * Дата отображаемого месяца.\n * При использовании обновление даты должно происходить вне компонента.\n */\n viewDate?: Date;\n /**\n * Изменение даты в шапке календаря.\n */\n onHeaderChange?: (value: Date) => void;\n /**\n * Минимальные дата и время, которые можно выбрать\n * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.\n */\n minDateTime?: Date;\n /**\n * Максимальные дата и время, которые можно выбрать.\n * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.\n */\n maxDateTime?: Date;\n}\n\nconst warn = warnOnce('Calendar');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Calendar\n */\nexport const Calendar = ({\n getRootRef,\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onDoneButtonClick,\n enableTime = false,\n doneButtonText,\n doneButtonDisabled,\n doneButtonShow,\n DoneButton,\n weekStartsOn = 1,\n disablePickers,\n changeHoursLabel = 'Изменить час',\n changeMinutesLabel = 'Изменить минуту',\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n showNeighboringMonth,\n changeDayLabel = 'Изменить день',\n size = 'm',\n viewDate: externalViewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n prevMonthProps,\n nextMonthProps,\n dayProps,\n listenDayChangesForUpdate,\n renderDayContent,\n minDateTime,\n maxDateTime,\n minutesTestId,\n hoursTestId,\n doneButtonTestId,\n prevMonthButtonTestId,\n nextMonthButtonTestId,\n monthDropdownTestId,\n yearDropdownTestId,\n dayTestId,\n ...props\n}: CalendarProps): React.ReactNode => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n isMonthDisabled,\n isYearDisabled,\n } = useCalendar({\n value,\n disableFuture,\n disablePast,\n shouldDisableDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n minDateTime,\n maxDateTime,\n });\n const [directionRef, textDirection = 'ltr'] = useDirection();\n const rootRef = useExternRef(directionRef, getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n if (value) {\n setViewDate(value);\n }\n }, [value]);\n\n if (process.env.NODE_ENV === 'development' && !disablePickers && size === 's') {\n warn(\"Нельзя включить селекты выбора месяца/года, если размер календаря 's'\", 'error');\n }\n\n if (process.env.NODE_ENV === 'development' && enableTime && size === 's') {\n warn(\"Нельзя включить выбор времени, если размер календаря 's'\", 'error');\n }\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value, event.key);\n\n if (newFocusedDay && !isSameMonth(newFocusedDay, viewDate)) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n let actualDate = setTimeEqual(date, value);\n if (minDateTime || maxDateTime) {\n actualDate = clamp(actualDate, { min: minDateTime, max: maxDateTime });\n }\n onChange?.(actualDate);\n },\n [value, onChange, maxDateTime, minDateTime],\n );\n\n const isDayActive = React.useCallback(\n (day: Date) => Boolean(value && isSameDay(day, value)),\n [value],\n );\n\n const directionContextValue = React.useMemo<CalendarDirectionContextProps>(\n () => ({\n direction: textDirection,\n }),\n [textDirection],\n );\n\n return (\n <CalendarDirectionContext.Provider value={directionContextValue}>\n <RootComponent\n {...props}\n baseClassName={classNames(styles.host, size === 's' && styles.sizeS)}\n getRootRef={rootRef}\n >\n <CalendarHeader\n viewDate={externalViewDate || viewDate}\n onChange={setViewDate}\n onNextMonth={setNextMonth}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers || size === 's'}\n className={styles.header}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n prevMonthProps={prevMonthProps}\n nextMonthProps={nextMonthProps}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n nextMonthButtonTestId={nextMonthButtonTestId}\n prevMonthButtonTestId={prevMonthButtonTestId}\n monthDropdownTestId={monthDropdownTestId}\n yearDropdownTestId={yearDropdownTestId}\n />\n <CalendarDays\n viewDate={externalViewDate || viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n isDayFocused={isDayFocused}\n tabIndex={0}\n aria-label={changeDayLabel}\n onKeyDown={handleKeyDown}\n onDayChange={onDayChange}\n isDayActive={isDayActive}\n isDaySelectionStart={isFirstDay}\n isDaySelectionEnd={isLastDay}\n isDayDisabled={isDayDisabled}\n onBlur={resetSelectedDay}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n dayProps={dayProps}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n dayTestId={dayTestId}\n />\n {enableTime && value && size !== 's' && (\n <div className={styles.time}>\n <CalendarTime\n value={value}\n onChange={onChange}\n onDoneButtonClick={onDoneButtonClick}\n doneButtonText={doneButtonText}\n doneButtonDisabled={doneButtonDisabled}\n doneButtonShow={doneButtonShow}\n DoneButton={DoneButton}\n changeHoursLabel={changeHoursLabel}\n changeMinutesLabel={changeMinutesLabel}\n isDayDisabled={minDateTime || maxDateTime ? isDayDisabled : undefined}\n minutesTestId={minutesTestId}\n hoursTestId={hoursTestId}\n doneButtonTestId={doneButtonTestId}\n />\n </div>\n )}\n </RootComponent>\n </CalendarDirectionContext.Provider>\n );\n};\n"],"names":["React","classNames","isSameDay","isSameMonth","CalendarDirectionContext","useCalendar","useDirection","useExternRef","clamp","isFirstDay","isLastDay","navigateDate","setTimeEqual","useIsomorphicLayoutEffect","warnOnce","CalendarDays","CalendarHeader","CalendarTime","RootComponent","warn","Calendar","getRootRef","value","onChange","disablePast","disableFuture","shouldDisableDate","onDoneButtonClick","enableTime","doneButtonText","doneButtonDisabled","doneButtonShow","DoneButton","weekStartsOn","disablePickers","changeHoursLabel","changeMinutesLabel","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","showNeighboringMonth","changeDayLabel","size","viewDate","externalViewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","prevMonthProps","nextMonthProps","dayProps","listenDayChangesForUpdate","renderDayContent","minDateTime","maxDateTime","minutesTestId","hoursTestId","doneButtonTestId","prevMonthButtonTestId","nextMonthButtonTestId","monthDropdownTestId","yearDropdownTestId","dayTestId","props","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","isMonthDisabled","isYearDisabled","directionRef","textDirection","rootRef","process","env","NODE_ENV","handleKeyDown","useCallback","event","includes","key","preventDefault","newFocusedDay","onDayChange","date","actualDate","min","max","isDayActive","day","Boolean","directionContextValue","useMemo","direction","Provider","baseClassName","className","tabIndex","aria-label","onKeyDown","isDaySelectionStart","isDaySelectionEnd","onBlur","div","undefined"],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import * as React from 'react';
2
2
  export type CalendarDayElementProps = Omit<React.AllHTMLAttributes<HTMLElement>, 'onChange' | 'size' | 'disabled' | 'selected'>;
3
3
  export type CalendarDayTestsProps = {
4
+ /**
5
+ * Передает атрибут `data-testid` для дня в календаре
6
+ */
4
7
  testId?: string | ((day: Date) => string);
5
8
  };
6
9
  export interface CalendarDayProps extends CalendarDayElementProps, CalendarDayTestsProps {
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarDay.d.ts","sourceRoot":"","sources":["../../../src/components/CalendarDay/CalendarDay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EACpC,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAC9C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB,EAAE,qBAAqB;IACtF,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAEhC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;CACnD;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAwGlD,CAAC"}
1
+ {"version":3,"file":"CalendarDay.d.ts","sourceRoot":"","sources":["../../../src/components/CalendarDay/CalendarDay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EACpC,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAC9C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB,EAAE,qBAAqB;IACtF,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IAEhC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;CACnD;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA6GlD,CAAC"}
@@ -5,6 +5,7 @@ import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_
5
5
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  import * as React from "react";
7
7
  import { classNames } from "@vkontakte/vkjs";
8
+ import { useCalendarDirectionContext } from "../../context/CalendarDirectionContext.js";
8
9
  import { ENABLE_KEYBOARD_INPUT_EVENT_NAME } from "../../hooks/useKeyboardInputTracker.js";
9
10
  import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext.js";
10
11
  import { Tappable } from "../Tappable/Tappable.js";
@@ -34,6 +35,7 @@ export const CalendarDay = /*#__PURE__*/ React.memo((_param)=>{
34
35
  ]);
35
36
  const { locale } = useConfigProvider();
36
37
  const ref = React.useRef(null);
38
+ const { direction } = useCalendarDirectionContext();
37
39
  const onClick = React.useCallback(()=>onChange(day), [
38
40
  day,
39
41
  onChange
@@ -90,7 +92,7 @@ export const CalendarDay = /*#__PURE__*/ React.memo((_param)=>{
90
92
  });
91
93
  }
92
94
  return /*#__PURE__*/ _jsx(Tappable, _object_spread_props(_object_spread({
93
- baseClassName: classNames("vkuiCalendarDay__host", size === 's' && "vkuiCalendarDay__sizeS"),
95
+ baseClassName: classNames("vkuiCalendarDay__host", size === 's' && "vkuiCalendarDay__sizeS", direction === 'rtl' && "vkuiCalendarDay__rtl"),
94
96
  hoverMode: "vkuiCalendarDay__hostHovered",
95
97
  activeMode: "vkuiCalendarDay__hostActivated",
96
98
  hasActive: false,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/CalendarDay/CalendarDay.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { ENABLE_KEYBOARD_INPUT_EVENT_NAME } from '../../hooks/useKeyboardInputTracker';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { Tappable } from '../Tappable/Tappable';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CalendarDay.module.css';\n\nexport type CalendarDayElementProps = Omit<\n React.AllHTMLAttributes<HTMLElement>,\n 'onChange' | 'size' | 'disabled' | 'selected'\n>;\n\nexport type CalendarDayTestsProps = {\n testId?: string | ((day: Date) => string);\n};\n\nexport interface CalendarDayProps extends CalendarDayElementProps, CalendarDayTestsProps {\n day: Date;\n today?: boolean;\n selected?: boolean;\n selectionStart?: boolean;\n selectionEnd?: boolean;\n hintedSelectionStart?: boolean;\n hintedSelectionEnd?: boolean;\n active?: boolean;\n hidden?: boolean;\n disabled?: boolean;\n focused?: boolean;\n hinted?: boolean;\n sameMonth?: boolean;\n size?: 's' | 'm';\n onChange: (value: Date) => void;\n onEnter?: (value: Date) => void;\n onLeave?: (value: Date) => void;\n // Функция отрисовки контента в ячейке дня\n renderDayContent?: (day: Date) => React.ReactNode;\n}\n\nexport const CalendarDay: React.FC<CalendarDayProps> = React.memo(\n ({\n day,\n today,\n selected,\n onChange,\n hidden,\n disabled,\n active,\n selectionStart,\n selectionEnd,\n focused,\n onEnter,\n onLeave,\n hinted,\n hintedSelectionStart,\n hintedSelectionEnd,\n sameMonth,\n size,\n children,\n renderDayContent,\n testId,\n ...restProps\n }: CalendarDayProps) => {\n const { locale } = useConfigProvider();\n const ref = React.useRef<HTMLElement>(null);\n const onClick = React.useCallback(() => onChange(day), [day, onChange]);\n const handleEnter = React.useCallback(() => onEnter?.(day), [day, onEnter]);\n const handleLeave = React.useCallback(() => onLeave?.(day), [day, onLeave]);\n\n const label = new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(day);\n\n React.useEffect(() => {\n if (focused && ref.current) {\n ref.current.dispatchEvent(new Event(ENABLE_KEYBOARD_INPUT_EVENT_NAME, { bubbles: true }));\n ref.current.focus();\n }\n }, [focused]);\n\n const content = React.useMemo(() => {\n if (renderDayContent) {\n return renderDayContent(day);\n }\n return (\n <div className={styles.dayNumber}>\n <VisuallyHidden>{children ?? label}</VisuallyHidden>\n <span aria-hidden>{day.getDate()}</span>\n </div>\n );\n }, [renderDayContent, day, children, label]);\n\n if (hidden) {\n return <div className={classNames(styles.hidden, size === 's' && styles.sizeS)} />;\n }\n\n return (\n <Tappable\n baseClassName={classNames(styles.host, size === 's' && styles.sizeS)}\n hoverMode={styles.hostHovered}\n activeMode={styles.hostActivated}\n hasActive={false}\n onClick={onClick}\n disabled={disabled}\n tabIndex={-1}\n getRootRef={ref}\n focusVisibleMode={active ? 'outside' : 'inside'}\n onPointerEnter={handleEnter}\n onPointerLeave={handleLeave}\n data-testid={typeof testId === 'string' ? testId : testId?.(day)}\n {...restProps}\n >\n <div\n className={classNames(\n styles.content,\n size === 's' && styles.sizeS,\n today && styles.today,\n selected && !disabled && styles.selected,\n selectionStart && styles.selectionStart,\n selectionEnd && styles.selectionEnd,\n disabled && styles.disabled,\n !sameMonth && styles.notSameMonth,\n )}\n >\n <div\n className={classNames(\n styles.hinted,\n hinted && styles.hintedActive,\n hintedSelectionStart && styles.hintedSelectionStart,\n hintedSelectionEnd && styles.hintedSelectionEnd,\n )}\n >\n <div className={classNames(styles.inner, active && !disabled && styles.innerActive)}>\n {content}\n </div>\n </div>\n </div>\n </Tappable>\n );\n },\n);\n\nCalendarDay.displayName = 'CalendarDay';\n"],"names":["React","classNames","ENABLE_KEYBOARD_INPUT_EVENT_NAME","useConfigProvider","Tappable","VisuallyHidden","CalendarDay","memo","day","today","selected","onChange","hidden","disabled","active","selectionStart","selectionEnd","focused","onEnter","onLeave","hinted","hintedSelectionStart","hintedSelectionEnd","sameMonth","size","children","renderDayContent","testId","restProps","locale","ref","useRef","onClick","useCallback","handleEnter","handleLeave","label","Intl","DateTimeFormat","weekday","year","month","format","useEffect","current","dispatchEvent","Event","bubbles","focus","content","useMemo","div","className","span","aria-hidden","getDate","baseClassName","hoverMode","activeMode","hasActive","tabIndex","getRootRef","focusVisibleMode","onPointerEnter","onPointerLeave","data-testid","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/CalendarDay/CalendarDay.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useCalendarDirectionContext } from '../../context/CalendarDirectionContext';\nimport { ENABLE_KEYBOARD_INPUT_EVENT_NAME } from '../../hooks/useKeyboardInputTracker';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { Tappable } from '../Tappable/Tappable';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CalendarDay.module.css';\n\nexport type CalendarDayElementProps = Omit<\n React.AllHTMLAttributes<HTMLElement>,\n 'onChange' | 'size' | 'disabled' | 'selected'\n>;\n\nexport type CalendarDayTestsProps = {\n /**\n * Передает атрибут `data-testid` для дня в календаре\n */\n testId?: string | ((day: Date) => string);\n};\n\nexport interface CalendarDayProps extends CalendarDayElementProps, CalendarDayTestsProps {\n day: Date;\n today?: boolean;\n selected?: boolean;\n selectionStart?: boolean;\n selectionEnd?: boolean;\n hintedSelectionStart?: boolean;\n hintedSelectionEnd?: boolean;\n active?: boolean;\n hidden?: boolean;\n disabled?: boolean;\n focused?: boolean;\n hinted?: boolean;\n sameMonth?: boolean;\n size?: 's' | 'm';\n onChange: (value: Date) => void;\n onEnter?: (value: Date) => void;\n onLeave?: (value: Date) => void;\n // Функция отрисовки контента в ячейке дня\n renderDayContent?: (day: Date) => React.ReactNode;\n}\n\nexport const CalendarDay: React.FC<CalendarDayProps> = React.memo(\n ({\n day,\n today,\n selected,\n onChange,\n hidden,\n disabled,\n active,\n selectionStart,\n selectionEnd,\n focused,\n onEnter,\n onLeave,\n hinted,\n hintedSelectionStart,\n hintedSelectionEnd,\n sameMonth,\n size,\n children,\n renderDayContent,\n testId,\n ...restProps\n }: CalendarDayProps) => {\n const { locale } = useConfigProvider();\n const ref = React.useRef<HTMLElement>(null);\n const { direction } = useCalendarDirectionContext();\n const onClick = React.useCallback(() => onChange(day), [day, onChange]);\n const handleEnter = React.useCallback(() => onEnter?.(day), [day, onEnter]);\n const handleLeave = React.useCallback(() => onLeave?.(day), [day, onLeave]);\n\n const label = new Intl.DateTimeFormat(locale, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }).format(day);\n\n React.useEffect(() => {\n if (focused && ref.current) {\n ref.current.dispatchEvent(new Event(ENABLE_KEYBOARD_INPUT_EVENT_NAME, { bubbles: true }));\n ref.current.focus();\n }\n }, [focused]);\n\n const content = React.useMemo(() => {\n if (renderDayContent) {\n return renderDayContent(day);\n }\n return (\n <div className={styles.dayNumber}>\n <VisuallyHidden>{children ?? label}</VisuallyHidden>\n <span aria-hidden>{day.getDate()}</span>\n </div>\n );\n }, [renderDayContent, day, children, label]);\n\n if (hidden) {\n return <div className={classNames(styles.hidden, size === 's' && styles.sizeS)} />;\n }\n\n return (\n <Tappable\n baseClassName={classNames(\n styles.host,\n size === 's' && styles.sizeS,\n direction === 'rtl' && styles.rtl,\n )}\n hoverMode={styles.hostHovered}\n activeMode={styles.hostActivated}\n hasActive={false}\n onClick={onClick}\n disabled={disabled}\n tabIndex={-1}\n getRootRef={ref}\n focusVisibleMode={active ? 'outside' : 'inside'}\n onPointerEnter={handleEnter}\n onPointerLeave={handleLeave}\n data-testid={typeof testId === 'string' ? testId : testId?.(day)}\n {...restProps}\n >\n <div\n className={classNames(\n styles.content,\n size === 's' && styles.sizeS,\n today && styles.today,\n selected && !disabled && styles.selected,\n selectionStart && styles.selectionStart,\n selectionEnd && styles.selectionEnd,\n disabled && styles.disabled,\n !sameMonth && styles.notSameMonth,\n )}\n >\n <div\n className={classNames(\n styles.hinted,\n hinted && styles.hintedActive,\n hintedSelectionStart && styles.hintedSelectionStart,\n hintedSelectionEnd && styles.hintedSelectionEnd,\n )}\n >\n <div className={classNames(styles.inner, active && !disabled && styles.innerActive)}>\n {content}\n </div>\n </div>\n </div>\n </Tappable>\n );\n },\n);\n\nCalendarDay.displayName = 'CalendarDay';\n"],"names":["React","classNames","useCalendarDirectionContext","ENABLE_KEYBOARD_INPUT_EVENT_NAME","useConfigProvider","Tappable","VisuallyHidden","CalendarDay","memo","day","today","selected","onChange","hidden","disabled","active","selectionStart","selectionEnd","focused","onEnter","onLeave","hinted","hintedSelectionStart","hintedSelectionEnd","sameMonth","size","children","renderDayContent","testId","restProps","locale","ref","useRef","direction","onClick","useCallback","handleEnter","handleLeave","label","Intl","DateTimeFormat","weekday","year","month","format","useEffect","current","dispatchEvent","Event","bubbles","focus","content","useMemo","div","className","span","aria-hidden","getDate","baseClassName","hoverMode","activeMode","hasActive","tabIndex","getRootRef","focusVisibleMode","onPointerEnter","onPointerLeave","data-testid","displayName"],"mappings":"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"}
@@ -2,6 +2,9 @@ import * as React from 'react';
2
2
  import type { HTMLAttributesWithRootRef } from '../../types';
3
3
  import { type CalendarDayElementProps, type CalendarDayProps, type CalendarDayTestsProps } from '../CalendarDay/CalendarDay';
4
4
  export type CalendarDaysTestsProps = {
5
+ /**
6
+ * Передает атрибут `data-testid` для дня в календаре
7
+ */
5
8
  dayTestId?: CalendarDayTestsProps['testId'];
6
9
  };
7
10
  export interface CalendarDaysProps extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>, Pick<CalendarDayProps, 'renderDayContent'>, CalendarDaysTestsProps {
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarDays.d.ts","sourceRoot":"","sources":["../../../src/components/CalendarDays/CalendarDays.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EACjE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAC1C,sBAAsB;IACxB,KAAK,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAClC,QAAQ,EAAE,IAAI,CAAC;IACf,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACxC,mBAAmB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACjE,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/D,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACxE,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACtE,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACtC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACzC,YAAY,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;CACpC;AAED,eAAO,MAAM,YAAY,iWAwBtB,iBAAiB,KAAG,KAAK,CAAC,SAkE5B,CAAC"}
1
+ {"version":3,"file":"CalendarDays.d.ts","sourceRoot":"","sources":["../../../src/components/CalendarDays/CalendarDays.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC,MAAM,MAAM,sBAAsB,GAAG;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EACjE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAC1C,sBAAsB;IACxB,KAAK,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAClC,QAAQ,EAAE,IAAI,CAAC;IACf,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACxC,mBAAmB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACjE,iBAAiB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/D,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACxE,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACtE,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACtC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACzC,YAAY,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;CACpC;AAED,eAAO,MAAM,YAAY,iWAwBtB,iBAAiB,KAAG,KAAK,CAAC,SAkE5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/CalendarDays/CalendarDays.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isSameDay, isSameMonth } from 'date-fns';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useTodayDate } from '../../hooks/useTodayDate';\nimport { getDaysNames, getWeeks } from '../../lib/calendar';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDay,\n type CalendarDayElementProps,\n type CalendarDayProps,\n type CalendarDayTestsProps,\n} from '../CalendarDay/CalendarDay';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport styles from './CalendarDays.module.css';\n\nexport type CalendarDaysTestsProps = {\n dayTestId?: CalendarDayTestsProps['testId'];\n};\n\nexport interface CalendarDaysProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<CalendarDayProps, 'renderDayContent'>,\n CalendarDaysTestsProps {\n value?: Date | Array<Date | null>;\n viewDate: Date;\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n showNeighboringMonth?: boolean;\n size?: 's' | 'm';\n dayProps?: CalendarDayElementProps;\n listenDayChangesForUpdate?: boolean;\n onDayChange: (value: Date) => void;\n isDayDisabled: (value: Date) => boolean;\n isDaySelectionStart: (value: Date, dayOfWeek: number) => boolean;\n isDaySelectionEnd: (value: Date, dayOfWeek: number) => boolean;\n isHintedDaySelectionStart?: (value: Date, dayOfWeek: number) => boolean;\n isHintedDaySelectionEnd?: (value: Date, dayOfWeek: number) => boolean;\n isDayActive: (value: Date) => boolean;\n isDayHinted?: (value: Date) => boolean;\n isDaySelected?: (value: Date) => boolean;\n isDayFocused: (value: Date) => boolean;\n onDayEnter?: (value: Date) => void;\n onDayLeave?: (value: Date) => void;\n}\n\nexport const CalendarDays = ({\n viewDate,\n value,\n weekStartsOn,\n onDayChange,\n isDaySelected,\n isDayActive,\n isDaySelectionEnd,\n isDaySelectionStart,\n onDayEnter,\n onDayLeave,\n isDayHinted,\n isHintedDaySelectionStart,\n isHintedDaySelectionEnd,\n isDayFocused,\n isDayDisabled,\n size,\n showNeighboringMonth = false,\n dayProps,\n listenDayChangesForUpdate = false,\n getRootRef,\n renderDayContent,\n dayTestId,\n ...props\n}: CalendarDaysProps): React.ReactNode => {\n const { locale } = useConfigProvider();\n const ref = useExternRef(getRootRef);\n const now = useTodayDate(listenDayChangesForUpdate);\n\n const weeks = React.useMemo(() => getWeeks(viewDate, weekStartsOn), [weekStartsOn, viewDate]);\n\n const daysNames = React.useMemo(\n () => getDaysNames(now, weekStartsOn, locale),\n [locale, now, weekStartsOn],\n );\n\n const handleDayChange = React.useCallback(\n (date: Date) => {\n onDayChange(date);\n\n ref.current?.focus();\n },\n [onDayChange, ref],\n );\n\n return (\n <RootComponent {...props} baseClassName={styles.host} getRootRef={ref}>\n <div className={classNames(styles.row, size === 's' && styles.rowSizeS)}>\n {daysNames.map((dayName) => (\n <Footnote key={dayName} className={styles.weekday}>\n {dayName}\n </Footnote>\n ))}\n </div>\n\n {weeks.map((week, i) => (\n <div className={classNames(styles.row, size === 's' && styles.rowSizeS)} key={i}>\n {week.map((day, i) => {\n const sameMonth = isSameMonth(day, viewDate);\n return (\n <CalendarDay\n key={day.toISOString()}\n day={day}\n today={isSameDay(day, now)}\n active={isDayActive(day)}\n onChange={handleDayChange}\n hidden={!showNeighboringMonth && !sameMonth}\n disabled={isDayDisabled(day)}\n selectionStart={isDaySelectionStart(day, i)}\n selectionEnd={isDaySelectionEnd(day, i)}\n hintedSelectionStart={isHintedDaySelectionStart?.(day, i)}\n hintedSelectionEnd={isHintedDaySelectionEnd?.(day, i)}\n selected={isDaySelected?.(day)}\n focused={isDayFocused(day)}\n onEnter={onDayEnter}\n onLeave={onDayLeave}\n hinted={isDayHinted?.(day)}\n sameMonth={sameMonth}\n size={size}\n renderDayContent={renderDayContent}\n testId={dayTestId}\n {...dayProps}\n className={classNames(dayProps?.className, styles.rowDay)}\n />\n );\n })}\n </div>\n ))}\n </RootComponent>\n );\n};\n"],"names":["React","classNames","isSameDay","isSameMonth","useExternRef","useTodayDate","getDaysNames","getWeeks","CalendarDay","useConfigProvider","RootComponent","Footnote","CalendarDays","viewDate","value","weekStartsOn","onDayChange","isDaySelected","isDayActive","isDaySelectionEnd","isDaySelectionStart","onDayEnter","onDayLeave","isDayHinted","isHintedDaySelectionStart","isHintedDaySelectionEnd","isDayFocused","isDayDisabled","size","showNeighboringMonth","dayProps","listenDayChangesForUpdate","getRootRef","renderDayContent","dayTestId","props","locale","ref","now","weeks","useMemo","daysNames","handleDayChange","useCallback","date","current","focus","baseClassName","div","className","map","dayName","week","i","day","sameMonth","today","active","onChange","hidden","disabled","selectionStart","selectionEnd","hintedSelectionStart","hintedSelectionEnd","selected","focused","onEnter","onLeave","hinted","testId","toISOString"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/CalendarDays/CalendarDays.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { isSameDay, isSameMonth } from 'date-fns';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useTodayDate } from '../../hooks/useTodayDate';\nimport { getDaysNames, getWeeks } from '../../lib/calendar';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport {\n CalendarDay,\n type CalendarDayElementProps,\n type CalendarDayProps,\n type CalendarDayTestsProps,\n} from '../CalendarDay/CalendarDay';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport styles from './CalendarDays.module.css';\n\nexport type CalendarDaysTestsProps = {\n /**\n * Передает атрибут `data-testid` для дня в календаре\n */\n dayTestId?: CalendarDayTestsProps['testId'];\n};\n\nexport interface CalendarDaysProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<CalendarDayProps, 'renderDayContent'>,\n CalendarDaysTestsProps {\n value?: Date | Array<Date | null>;\n viewDate: Date;\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n showNeighboringMonth?: boolean;\n size?: 's' | 'm';\n dayProps?: CalendarDayElementProps;\n listenDayChangesForUpdate?: boolean;\n onDayChange: (value: Date) => void;\n isDayDisabled: (value: Date) => boolean;\n isDaySelectionStart: (value: Date, dayOfWeek: number) => boolean;\n isDaySelectionEnd: (value: Date, dayOfWeek: number) => boolean;\n isHintedDaySelectionStart?: (value: Date, dayOfWeek: number) => boolean;\n isHintedDaySelectionEnd?: (value: Date, dayOfWeek: number) => boolean;\n isDayActive: (value: Date) => boolean;\n isDayHinted?: (value: Date) => boolean;\n isDaySelected?: (value: Date) => boolean;\n isDayFocused: (value: Date) => boolean;\n onDayEnter?: (value: Date) => void;\n onDayLeave?: (value: Date) => void;\n}\n\nexport const CalendarDays = ({\n viewDate,\n value,\n weekStartsOn,\n onDayChange,\n isDaySelected,\n isDayActive,\n isDaySelectionEnd,\n isDaySelectionStart,\n onDayEnter,\n onDayLeave,\n isDayHinted,\n isHintedDaySelectionStart,\n isHintedDaySelectionEnd,\n isDayFocused,\n isDayDisabled,\n size,\n showNeighboringMonth = false,\n dayProps,\n listenDayChangesForUpdate = false,\n getRootRef,\n renderDayContent,\n dayTestId,\n ...props\n}: CalendarDaysProps): React.ReactNode => {\n const { locale } = useConfigProvider();\n const ref = useExternRef(getRootRef);\n const now = useTodayDate(listenDayChangesForUpdate);\n\n const weeks = React.useMemo(() => getWeeks(viewDate, weekStartsOn), [weekStartsOn, viewDate]);\n\n const daysNames = React.useMemo(\n () => getDaysNames(now, weekStartsOn, locale),\n [locale, now, weekStartsOn],\n );\n\n const handleDayChange = React.useCallback(\n (date: Date) => {\n onDayChange(date);\n\n ref.current?.focus();\n },\n [onDayChange, ref],\n );\n\n return (\n <RootComponent {...props} baseClassName={styles.host} getRootRef={ref}>\n <div className={classNames(styles.row, size === 's' && styles.rowSizeS)}>\n {daysNames.map((dayName) => (\n <Footnote key={dayName} className={styles.weekday}>\n {dayName}\n </Footnote>\n ))}\n </div>\n\n {weeks.map((week, i) => (\n <div className={classNames(styles.row, size === 's' && styles.rowSizeS)} key={i}>\n {week.map((day, i) => {\n const sameMonth = isSameMonth(day, viewDate);\n return (\n <CalendarDay\n key={day.toISOString()}\n day={day}\n today={isSameDay(day, now)}\n active={isDayActive(day)}\n onChange={handleDayChange}\n hidden={!showNeighboringMonth && !sameMonth}\n disabled={isDayDisabled(day)}\n selectionStart={isDaySelectionStart(day, i)}\n selectionEnd={isDaySelectionEnd(day, i)}\n hintedSelectionStart={isHintedDaySelectionStart?.(day, i)}\n hintedSelectionEnd={isHintedDaySelectionEnd?.(day, i)}\n selected={isDaySelected?.(day)}\n focused={isDayFocused(day)}\n onEnter={onDayEnter}\n onLeave={onDayLeave}\n hinted={isDayHinted?.(day)}\n sameMonth={sameMonth}\n size={size}\n renderDayContent={renderDayContent}\n testId={dayTestId}\n {...dayProps}\n className={classNames(dayProps?.className, styles.rowDay)}\n />\n );\n })}\n </div>\n ))}\n </RootComponent>\n );\n};\n"],"names":["React","classNames","isSameDay","isSameMonth","useExternRef","useTodayDate","getDaysNames","getWeeks","CalendarDay","useConfigProvider","RootComponent","Footnote","CalendarDays","viewDate","value","weekStartsOn","onDayChange","isDaySelected","isDayActive","isDaySelectionEnd","isDaySelectionStart","onDayEnter","onDayLeave","isDayHinted","isHintedDaySelectionStart","isHintedDaySelectionEnd","isDayFocused","isDayDisabled","size","showNeighboringMonth","dayProps","listenDayChangesForUpdate","getRootRef","renderDayContent","dayTestId","props","locale","ref","now","weeks","useMemo","daysNames","handleDayChange","useCallback","date","current","focus","baseClassName","div","className","map","dayName","week","i","day","sameMonth","today","active","onChange","hidden","disabled","selectionStart","selectionEnd","hintedSelectionStart","hintedSelectionEnd","selected","focused","onEnter","onLeave","hinted","testId","toISOString"],"mappings":"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"}
@@ -2,9 +2,21 @@ import * as React from 'react';
2
2
  import type { HTMLAttributesWithRootRef } from '../../types';
3
3
  type ArrowMonthProps = Omit<React.AllHTMLAttributes<HTMLElement>, 'onClick' | 'aria-label'>;
4
4
  export type CalendarHeaderTestsProps = {
5
+ /**
6
+ * Передает атрибут `data-testid` для дропдауна выбора месяца в заголовке календаря
7
+ */
5
8
  monthDropdownTestId?: string | ((monthIndex: number) => string);
9
+ /**
10
+ * Передает атрибут `data-testid` для дропдауна выбора года в заголовке календаря
11
+ */
6
12
  yearDropdownTestId?: string | ((year: number) => string);
13
+ /**
14
+ * Передает атрибут `data-testid` для кнопки перехода к следующему месяцу в заголовке календаря
15
+ */
7
16
  nextMonthButtonTestId?: string;
17
+ /**
18
+ * Передает атрибут `data-testid` для кнопки перехода к предыдущему месяцу в заголовке календаря
19
+ */
8
20
  prevMonthButtonTestId?: string;
9
21
  };
10
22
  export interface CalendarHeaderProps extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>, CalendarHeaderTestsProps {
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarHeader.d.ts","sourceRoot":"","sources":["../../../src/components/CalendarHeader/CalendarHeader.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAU7D,KAAK,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;AAE5F,MAAM,MAAM,wBAAwB,GAAG;IACrC,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAChE,kBAAkB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EACjE,wBAAwB;IAC1B,QAAQ,EAAE,IAAI,CAAC;IACf;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,wZA2BxB,mBAAmB,KAAG,KAAK,CAAC,SAkJ9B,CAAC"}
1
+ {"version":3,"file":"CalendarHeader.d.ts","sourceRoot":"","sources":["../../../src/components/CalendarHeader/CalendarHeader.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAU7D,KAAK,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;AAE5F,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAChE;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACzD;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EACjE,wBAAwB;IAC1B,QAAQ,EAAE,IAAI,CAAC;IACf;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAClE,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,wZA2BxB,mBAAmB,KAAG,KAAK,CAAC,SAoJ9B,CAAC"}
@@ -7,6 +7,7 @@ import * as React from "react";
7
7
  import { Icon12Dropdown, Icon20ChevronLeftOutline, Icon20ChevronRightOutline } from "@vkontakte/icons";
8
8
  import { classNames } from "@vkontakte/vkjs";
9
9
  import { addMonths, setMonth, setYear, subMonths } from "date-fns";
10
+ import { useCalendarDirectionContext } from "../../context/CalendarDirectionContext.js";
10
11
  import { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, getMonths, getYears } from "../../lib/calendar.js";
11
12
  import { AdaptivityProvider } from "../AdaptivityProvider/AdaptivityProvider.js";
12
13
  import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext.js";
@@ -48,6 +49,7 @@ export const CalendarHeader = (_param)=>{
48
49
  "nextMonthButtonTestId"
49
50
  ]);
50
51
  const { locale } = useConfigProvider();
52
+ const { direction } = useCalendarDirectionContext();
51
53
  const onMonthsChange = React.useCallback((_, newValue)=>onChange(setMonth(viewDate, Number(newValue))), [
52
54
  onChange,
53
55
  viewDate
@@ -112,7 +114,7 @@ export const CalendarHeader = (_param)=>{
112
114
  formatter.format(subMonths(viewDate, 1))
113
115
  ]
114
116
  }),
115
- prevMonthIcon
117
+ direction === 'ltr' ? prevMonthIcon : nextMonthIcon
116
118
  ]
117
119
  }))
118
120
  }),
@@ -180,7 +182,7 @@ export const CalendarHeader = (_param)=>{
180
182
  formatter.format(addMonths(viewDate, 1))
181
183
  ]
182
184
  }),
183
- nextMonthIcon
185
+ direction === 'ltr' ? nextMonthIcon : prevMonthIcon
184
186
  ]
185
187
  }))
186
188
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["'use client';\n\nimport { type ChangeEvent } from 'react';\nimport * as React from 'react';\nimport {\n Icon12Dropdown,\n Icon20ChevronLeftOutline,\n Icon20ChevronRightOutline,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { addMonths, setMonth, setYear, subMonths } from 'date-fns';\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, getMonths, getYears } from '../../lib/calendar';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Paragraph } from '../Typography/Paragraph/Paragraph';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CalendarHeader.module.css';\n\ntype ArrowMonthProps = Omit<React.AllHTMLAttributes<HTMLElement>, 'onClick' | 'aria-label'>;\n\nexport type CalendarHeaderTestsProps = {\n monthDropdownTestId?: string | ((monthIndex: number) => string);\n yearDropdownTestId?: string | ((year: number) => string);\n nextMonthButtonTestId?: string;\n prevMonthButtonTestId?: string;\n};\n\nexport interface CalendarHeaderProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n CalendarHeaderTestsProps {\n viewDate: Date;\n /**\n * Скрывает иконку для переключения на предыдущий месяц\n */\n prevMonthHidden?: boolean;\n /**\n * Скрывает иконку для переключения на следующий месяц\n */\n nextMonthHidden?: boolean;\n disablePickers?: boolean;\n prevMonthLabel?: string;\n nextMonthLabel?: string;\n changeMonthLabel?: string;\n changeYearLabel?: string;\n prevMonthIcon?: React.ReactNode;\n nextMonthIcon?: React.ReactNode;\n prevMonthProps?: ArrowMonthProps;\n nextMonthProps?: ArrowMonthProps;\n isMonthDisabled?: (monthNumber: number, year?: number) => boolean;\n isYearDisabled?: (yearNumber: number) => boolean;\n onChange: (viewDate: Date) => void;\n /**\n * Нажатие на кнопку переключения на следующий месяц.\n */\n onNextMonth?: () => void;\n /**\n * Нажатие на кнопку переключения на предыдущий месяц.\n */\n onPrevMonth?: () => void;\n}\n\nexport const CalendarHeader = ({\n viewDate,\n onChange,\n prevMonthHidden: prevMonthHiddenProp = false,\n nextMonthHidden: nextMonthHiddenProp = false,\n disablePickers = false,\n onNextMonth,\n onPrevMonth,\n prevMonthProps = {},\n nextMonthProps = {},\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n prevMonthIcon = (\n <Icon20ChevronLeftOutline className={styles.navIconAccent} width={30} height={30} />\n ),\n nextMonthIcon = (\n <Icon20ChevronRightOutline className={styles.navIconAccent} width={30} height={30} />\n ),\n isMonthDisabled,\n isYearDisabled,\n monthDropdownTestId,\n yearDropdownTestId,\n prevMonthButtonTestId,\n nextMonthButtonTestId,\n ...restProps\n}: CalendarHeaderProps): React.ReactNode => {\n const { locale } = useConfigProvider();\n const onMonthsChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange(setMonth(viewDate, Number(newValue))),\n [onChange, viewDate],\n );\n const onYearChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange(setYear(viewDate, Number(newValue))),\n [onChange, viewDate],\n );\n\n const currentYear = viewDate.getFullYear();\n const currentMonth = viewDate.getMonth();\n\n const months = React.useMemo(\n () =>\n getMonths(locale).map(({ value, label }) => ({\n value,\n label: <span className={styles.month}>{label}</span>,\n disabled: isMonthDisabled && isMonthDisabled(value),\n })),\n [locale, isMonthDisabled],\n );\n\n const years = React.useMemo(\n () =>\n getYears(currentYear, 100).map((year) => ({\n ...year,\n disabled: isYearDisabled && isYearDisabled(year.value),\n })),\n [currentYear, isYearDisabled],\n );\n\n const formatter = new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n });\n\n const { className: prevMonthClassName, ...restPrevMonthProps } = prevMonthProps;\n const { className: nextMonthClassName, ...restNextMonthProps } = nextMonthProps;\n\n let nextMonthHidden =\n nextMonthHiddenProp || (currentMonth === 11 && currentYear === DEFAULT_MAX_YEAR);\n if (isMonthDisabled && !nextMonthHidden) {\n nextMonthHidden = isMonthDisabled(\n currentMonth === 11 ? 0 : currentMonth + 1,\n currentMonth === 11 ? Math.min(currentYear + 1, DEFAULT_MAX_YEAR) : currentYear,\n );\n }\n\n let prevMonthHidden =\n prevMonthHiddenProp || (currentMonth === 0 && currentYear === DEFAULT_MIN_YEAR);\n if (isMonthDisabled && !prevMonthHidden) {\n prevMonthHidden = isMonthDisabled(\n currentMonth === 0 ? 11 : currentMonth - 1,\n currentMonth === 0 ? Math.max(currentYear - 1, DEFAULT_MIN_YEAR) : currentYear,\n );\n }\n\n return (\n <RootComponent baseClassName={styles.host} {...restProps}>\n {!prevMonthHidden && (\n <AdaptivityProvider sizeX=\"regular\">\n <Tappable\n baseClassName={classNames(styles.navIcon, styles.navIconPrev, prevMonthClassName)}\n onClick={onPrevMonth}\n data-testid={prevMonthButtonTestId}\n {...restPrevMonthProps}\n >\n <VisuallyHidden>\n {prevMonthLabel}, {formatter.format(subMonths(viewDate, 1))}\n </VisuallyHidden>\n {prevMonthIcon}\n </Tappable>\n </AdaptivityProvider>\n )}\n {disablePickers ? (\n <Paragraph\n className={classNames(styles.pickers, 'vkuiInternalCalendarHeader__pickers')}\n weight=\"2\"\n >\n <span className={styles.month}>\n {new Intl.DateTimeFormat(locale, {\n month: 'long',\n }).format(viewDate)}\n </span>\n &nbsp;\n {new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n }).format(viewDate)}\n </Paragraph>\n ) : (\n <AdaptivityProvider sizeY=\"compact\">\n <div className={classNames(styles.pickers, 'vkuiInternalCalendarHeader__pickers')}>\n <CustomSelect\n className={classNames(styles.picker, 'vkuiInternalCalendarHeader__picker')}\n value={currentMonth}\n options={months}\n dropdownOffsetDistance={4}\n dropdownAutoWidth\n icon={<Icon12Dropdown />}\n onChange={onMonthsChange}\n forceDropdownPortal={false}\n selectType=\"accent\"\n aria-label={changeMonthLabel}\n data-testid={\n typeof monthDropdownTestId === 'string'\n ? monthDropdownTestId\n : monthDropdownTestId?.(currentMonth)\n }\n />\n <CustomSelect\n className={classNames(styles.picker, 'vkuiInternalCalendarHeader__picker')}\n value={currentYear}\n options={years}\n dropdownOffsetDistance={4}\n dropdownAutoWidth\n icon={<Icon12Dropdown />}\n onChange={onYearChange}\n forceDropdownPortal={false}\n selectType=\"accent\"\n aria-label={changeYearLabel}\n data-testid={yearDropdownTestId}\n />\n </div>\n </AdaptivityProvider>\n )}\n {!nextMonthHidden && (\n <AdaptivityProvider sizeX=\"regular\">\n <Tappable\n baseClassName={classNames(styles.navIcon, styles.navIconNext, nextMonthClassName)}\n onClick={onNextMonth}\n data-testid={nextMonthButtonTestId}\n {...restNextMonthProps}\n >\n <VisuallyHidden>\n {nextMonthLabel}, {formatter.format(addMonths(viewDate, 1))}\n </VisuallyHidden>\n {nextMonthIcon}\n </Tappable>\n </AdaptivityProvider>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","Icon12Dropdown","Icon20ChevronLeftOutline","Icon20ChevronRightOutline","classNames","addMonths","setMonth","setYear","subMonths","DEFAULT_MAX_YEAR","DEFAULT_MIN_YEAR","getMonths","getYears","AdaptivityProvider","useConfigProvider","CustomSelect","RootComponent","Tappable","Paragraph","VisuallyHidden","CalendarHeader","viewDate","onChange","prevMonthHidden","prevMonthHiddenProp","nextMonthHidden","nextMonthHiddenProp","disablePickers","onNextMonth","onPrevMonth","prevMonthProps","nextMonthProps","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","prevMonthIcon","className","width","height","nextMonthIcon","isMonthDisabled","isYearDisabled","monthDropdownTestId","yearDropdownTestId","prevMonthButtonTestId","nextMonthButtonTestId","restProps","locale","onMonthsChange","useCallback","_","newValue","Number","onYearChange","currentYear","getFullYear","currentMonth","getMonth","months","useMemo","map","value","label","span","disabled","years","year","formatter","Intl","DateTimeFormat","month","prevMonthClassName","restPrevMonthProps","nextMonthClassName","restNextMonthProps","Math","min","max","baseClassName","sizeX","onClick","data-testid","format","weight","sizeY","div","options","dropdownOffsetDistance","dropdownAutoWidth","icon","forceDropdownPortal","selectType","aria-label"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["'use client';\n\nimport { type ChangeEvent } from 'react';\nimport * as React from 'react';\nimport {\n Icon12Dropdown,\n Icon20ChevronLeftOutline,\n Icon20ChevronRightOutline,\n} from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { addMonths, setMonth, setYear, subMonths } from 'date-fns';\nimport { useCalendarDirectionContext } from '../../context/CalendarDirectionContext';\nimport { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, getMonths, getYears } from '../../lib/calendar';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { AdaptivityProvider } from '../AdaptivityProvider/AdaptivityProvider';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { CustomSelect, type SelectProps } from '../CustomSelect/CustomSelect';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Paragraph } from '../Typography/Paragraph/Paragraph';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CalendarHeader.module.css';\n\ntype ArrowMonthProps = Omit<React.AllHTMLAttributes<HTMLElement>, 'onClick' | 'aria-label'>;\n\nexport type CalendarHeaderTestsProps = {\n /**\n * Передает атрибут `data-testid` для дропдауна выбора месяца в заголовке календаря\n */\n monthDropdownTestId?: string | ((monthIndex: number) => string);\n /**\n * Передает атрибут `data-testid` для дропдауна выбора года в заголовке календаря\n */\n yearDropdownTestId?: string | ((year: number) => string);\n /**\n * Передает атрибут `data-testid` для кнопки перехода к следующему месяцу в заголовке календаря\n */\n nextMonthButtonTestId?: string;\n /**\n * Передает атрибут `data-testid` для кнопки перехода к предыдущему месяцу в заголовке календаря\n */\n prevMonthButtonTestId?: string;\n};\n\nexport interface CalendarHeaderProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n CalendarHeaderTestsProps {\n viewDate: Date;\n /**\n * Скрывает иконку для переключения на предыдущий месяц\n */\n prevMonthHidden?: boolean;\n /**\n * Скрывает иконку для переключения на следующий месяц\n */\n nextMonthHidden?: boolean;\n disablePickers?: boolean;\n prevMonthLabel?: string;\n nextMonthLabel?: string;\n changeMonthLabel?: string;\n changeYearLabel?: string;\n prevMonthIcon?: React.ReactNode;\n nextMonthIcon?: React.ReactNode;\n prevMonthProps?: ArrowMonthProps;\n nextMonthProps?: ArrowMonthProps;\n isMonthDisabled?: (monthNumber: number, year?: number) => boolean;\n isYearDisabled?: (yearNumber: number) => boolean;\n onChange: (viewDate: Date) => void;\n /**\n * Нажатие на кнопку переключения на следующий месяц.\n */\n onNextMonth?: () => void;\n /**\n * Нажатие на кнопку переключения на предыдущий месяц.\n */\n onPrevMonth?: () => void;\n}\n\nexport const CalendarHeader = ({\n viewDate,\n onChange,\n prevMonthHidden: prevMonthHiddenProp = false,\n nextMonthHidden: nextMonthHiddenProp = false,\n disablePickers = false,\n onNextMonth,\n onPrevMonth,\n prevMonthProps = {},\n nextMonthProps = {},\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n prevMonthIcon = (\n <Icon20ChevronLeftOutline className={styles.navIconAccent} width={30} height={30} />\n ),\n nextMonthIcon = (\n <Icon20ChevronRightOutline className={styles.navIconAccent} width={30} height={30} />\n ),\n isMonthDisabled,\n isYearDisabled,\n monthDropdownTestId,\n yearDropdownTestId,\n prevMonthButtonTestId,\n nextMonthButtonTestId,\n ...restProps\n}: CalendarHeaderProps): React.ReactNode => {\n const { locale } = useConfigProvider();\n const { direction } = useCalendarDirectionContext();\n\n const onMonthsChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange(setMonth(viewDate, Number(newValue))),\n [onChange, viewDate],\n );\n const onYearChange = React.useCallback(\n (_: ChangeEvent<HTMLSelectElement>, newValue: SelectProps['value']) =>\n onChange(setYear(viewDate, Number(newValue))),\n [onChange, viewDate],\n );\n\n const currentYear = viewDate.getFullYear();\n const currentMonth = viewDate.getMonth();\n\n const months = React.useMemo(\n () =>\n getMonths(locale).map(({ value, label }) => ({\n value,\n label: <span className={styles.month}>{label}</span>,\n disabled: isMonthDisabled && isMonthDisabled(value),\n })),\n [locale, isMonthDisabled],\n );\n\n const years = React.useMemo(\n () =>\n getYears(currentYear, 100).map((year) => ({\n ...year,\n disabled: isYearDisabled && isYearDisabled(year.value),\n })),\n [currentYear, isYearDisabled],\n );\n\n const formatter = new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n });\n\n const { className: prevMonthClassName, ...restPrevMonthProps } = prevMonthProps;\n const { className: nextMonthClassName, ...restNextMonthProps } = nextMonthProps;\n\n let nextMonthHidden =\n nextMonthHiddenProp || (currentMonth === 11 && currentYear === DEFAULT_MAX_YEAR);\n if (isMonthDisabled && !nextMonthHidden) {\n nextMonthHidden = isMonthDisabled(\n currentMonth === 11 ? 0 : currentMonth + 1,\n currentMonth === 11 ? Math.min(currentYear + 1, DEFAULT_MAX_YEAR) : currentYear,\n );\n }\n\n let prevMonthHidden =\n prevMonthHiddenProp || (currentMonth === 0 && currentYear === DEFAULT_MIN_YEAR);\n if (isMonthDisabled && !prevMonthHidden) {\n prevMonthHidden = isMonthDisabled(\n currentMonth === 0 ? 11 : currentMonth - 1,\n currentMonth === 0 ? Math.max(currentYear - 1, DEFAULT_MIN_YEAR) : currentYear,\n );\n }\n\n return (\n <RootComponent baseClassName={styles.host} {...restProps}>\n {!prevMonthHidden && (\n <AdaptivityProvider sizeX=\"regular\">\n <Tappable\n baseClassName={classNames(styles.navIcon, styles.navIconPrev, prevMonthClassName)}\n onClick={onPrevMonth}\n data-testid={prevMonthButtonTestId}\n {...restPrevMonthProps}\n >\n <VisuallyHidden>\n {prevMonthLabel}, {formatter.format(subMonths(viewDate, 1))}\n </VisuallyHidden>\n {direction === 'ltr' ? prevMonthIcon : nextMonthIcon}\n </Tappable>\n </AdaptivityProvider>\n )}\n {disablePickers ? (\n <Paragraph\n className={classNames(styles.pickers, 'vkuiInternalCalendarHeader__pickers')}\n weight=\"2\"\n >\n <span className={styles.month}>\n {new Intl.DateTimeFormat(locale, {\n month: 'long',\n }).format(viewDate)}\n </span>\n &nbsp;\n {new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n }).format(viewDate)}\n </Paragraph>\n ) : (\n <AdaptivityProvider sizeY=\"compact\">\n <div className={classNames(styles.pickers, 'vkuiInternalCalendarHeader__pickers')}>\n <CustomSelect\n className={classNames(styles.picker, 'vkuiInternalCalendarHeader__picker')}\n value={currentMonth}\n options={months}\n dropdownOffsetDistance={4}\n dropdownAutoWidth\n icon={<Icon12Dropdown />}\n onChange={onMonthsChange}\n forceDropdownPortal={false}\n selectType=\"accent\"\n aria-label={changeMonthLabel}\n data-testid={\n typeof monthDropdownTestId === 'string'\n ? monthDropdownTestId\n : monthDropdownTestId?.(currentMonth)\n }\n />\n <CustomSelect\n className={classNames(styles.picker, 'vkuiInternalCalendarHeader__picker')}\n value={currentYear}\n options={years}\n dropdownOffsetDistance={4}\n dropdownAutoWidth\n icon={<Icon12Dropdown />}\n onChange={onYearChange}\n forceDropdownPortal={false}\n selectType=\"accent\"\n aria-label={changeYearLabel}\n data-testid={yearDropdownTestId}\n />\n </div>\n </AdaptivityProvider>\n )}\n {!nextMonthHidden && (\n <AdaptivityProvider sizeX=\"regular\">\n <Tappable\n baseClassName={classNames(styles.navIcon, styles.navIconNext, nextMonthClassName)}\n onClick={onNextMonth}\n data-testid={nextMonthButtonTestId}\n {...restNextMonthProps}\n >\n <VisuallyHidden>\n {nextMonthLabel}, {formatter.format(addMonths(viewDate, 1))}\n </VisuallyHidden>\n {direction === 'ltr' ? nextMonthIcon : prevMonthIcon}\n </Tappable>\n </AdaptivityProvider>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","Icon12Dropdown","Icon20ChevronLeftOutline","Icon20ChevronRightOutline","classNames","addMonths","setMonth","setYear","subMonths","useCalendarDirectionContext","DEFAULT_MAX_YEAR","DEFAULT_MIN_YEAR","getMonths","getYears","AdaptivityProvider","useConfigProvider","CustomSelect","RootComponent","Tappable","Paragraph","VisuallyHidden","CalendarHeader","viewDate","onChange","prevMonthHidden","prevMonthHiddenProp","nextMonthHidden","nextMonthHiddenProp","disablePickers","onNextMonth","onPrevMonth","prevMonthProps","nextMonthProps","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","prevMonthIcon","className","width","height","nextMonthIcon","isMonthDisabled","isYearDisabled","monthDropdownTestId","yearDropdownTestId","prevMonthButtonTestId","nextMonthButtonTestId","restProps","locale","direction","onMonthsChange","useCallback","_","newValue","Number","onYearChange","currentYear","getFullYear","currentMonth","getMonth","months","useMemo","map","value","label","span","disabled","years","year","formatter","Intl","DateTimeFormat","month","prevMonthClassName","restPrevMonthProps","nextMonthClassName","restNextMonthProps","Math","min","max","baseClassName","sizeX","onClick","data-testid","format","weight","sizeY","div","options","dropdownOffsetDistance","dropdownAutoWidth","icon","forceDropdownPortal","selectType","aria-label"],"mappings":"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"}
@@ -4,7 +4,13 @@ import { type CalendarDaysProps, type CalendarDaysTestsProps } from '../Calendar
4
4
  import { type CalendarHeaderProps, type CalendarHeaderTestsProps } from '../CalendarHeader/CalendarHeader';
5
5
  export type DateRangeType = [Date | null, Date | null];
6
6
  export type CalendarRangeTestsProps = CalendarDaysTestsProps & {
7
+ /**
8
+ * Передает атрибуты `data-testid` для интерактивных элементов в заголовке календаря в левой части
9
+ */
7
10
  leftPartHeaderTestsData?: CalendarHeaderTestsProps;
11
+ /**
12
+ * Передает атрибуты `data-testid` для интерактивных элементов в заголовке календаря в правой части
13
+ */
8
14
  rightPartHeaderTestsData?: CalendarHeaderTestsProps;
9
15
  };
10
16
  export interface CalendarRangeProps extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>, Pick<CalendarHeaderProps, 'prevMonthLabel' | 'nextMonthLabel' | 'changeMonthLabel' | 'changeYearLabel' | 'prevMonthIcon' | 'nextMonthIcon'>, Pick<CalendarDaysProps, 'listenDayChangesForUpdate' | 'renderDayContent'>, CalendarRangeTestsProps {
@@ -21,5 +27,5 @@ export interface CalendarRangeProps extends Omit<HTMLAttributesWithRootRef<HTMLD
21
27
  /**
22
28
  * @see https://vkcom.github.io/VKUI/#/CalendarRange
23
29
  */
24
- export declare const CalendarRange: ({ value, onChange, disablePast, disableFuture, shouldDisableDate, onClose, weekStartsOn, disablePickers, prevMonthLabel, nextMonthLabel, changeMonthLabel, changeYearLabel, changeDayLabel, prevMonthIcon, nextMonthIcon, listenDayChangesForUpdate, renderDayContent, dayTestId, leftPartHeaderTestsData, rightPartHeaderTestsData, ...props }: CalendarRangeProps) => React.ReactNode;
30
+ export declare const CalendarRange: ({ value, onChange, disablePast, disableFuture, shouldDisableDate, onClose, weekStartsOn, disablePickers, prevMonthLabel, nextMonthLabel, changeMonthLabel, changeYearLabel, changeDayLabel, prevMonthIcon, nextMonthIcon, listenDayChangesForUpdate, renderDayContent, dayTestId, leftPartHeaderTestsData, rightPartHeaderTestsData, getRootRef, ...props }: CalendarRangeProps) => React.ReactNode;
25
31
  //# sourceMappingURL=CalendarRange.d.ts.map