@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
@@ -1,32 +1,16 @@
1
1
  'use client';
2
2
 
3
3
  import * as React from 'react';
4
- import { classNames } from '@vkontakte/vkjs';
5
4
  import { usePatchChildren } from '../../hooks/usePatchChildren';
6
- import { injectAriaExpandedPropByRole } from '../../lib/accessibility';
7
- import { animationFadeClassNames, transformOriginClassNames } from '../../lib/animation';
8
5
  import {
9
6
  type FloatingComponentProps,
10
7
  type FloatingContentRenderProp,
11
8
  type OnShownChange,
12
- useFloatingMiddlewaresBootstrap,
13
- useFloatingWithInteractions,
14
- usePlacementChangeCallback,
15
9
  } from '../../lib/floating';
16
10
  import type { HTMLAttributesWithRootRef } from '../../types';
17
- import { AppRootPortal } from '../AppRoot/AppRootPortal';
18
- import {
19
- DEFAULT_ARROW_HEIGHT,
20
- DEFAULT_ARROW_PADDING,
21
- DefaultIcon,
22
- } from '../FloatingArrow/DefaultIcon';
23
- import {
24
- FloatingArrow,
25
- type FloatingArrowProps as FloatingArrowPropsPrivate,
26
- } from '../FloatingArrow/FloatingArrow';
27
- import { FocusTrap } from '../FocusTrap/FocusTrap';
11
+ import { type FloatingArrowProps as FloatingArrowPropsPrivate } from '../FloatingArrow/FloatingArrow';
28
12
  import type { FocusTrapProps } from '../FocusTrap/FocusTrap';
29
- import styles from './Popover.module.css';
13
+ import { usePopover } from './usePopover';
30
14
 
31
15
  /**
32
16
  * @alias
@@ -79,6 +63,7 @@ type AllowedFloatingComponentProps = Pick<
79
63
  | 'zIndex'
80
64
  | 'disableFlipMiddleware'
81
65
  | 'customMiddlewares'
66
+ | 'strategy'
82
67
  >;
83
68
 
84
69
  /**
@@ -130,155 +115,10 @@ export interface PopoverProps
130
115
  /**
131
116
  * @see https://vkcom.github.io/VKUI/#/Popover
132
117
  */
133
- export const Popover = ({
134
- // UsePopoverProps
135
- arrow: withArrow,
136
- arrowHeight = DEFAULT_ARROW_HEIGHT,
137
- arrowPadding = DEFAULT_ARROW_PADDING,
138
- placement: expectedPlacement = 'bottom-start',
139
- onPlacementChange,
140
- disableFlipMiddleware = false,
141
- trigger = 'click',
142
- content,
143
- hoverDelay = 150,
144
- closeAfterClick,
145
- offsetByMainAxis = 8,
146
- offsetByCrossAxis = 0,
147
- sameWidth,
148
- hideWhenReferenceHidden,
149
- disabled,
150
- disableInteractive,
151
- disableCloseOnClickOutside,
152
- disableCloseOnEscKey,
153
- keepMounted = false,
154
- customMiddlewares,
155
- // uncontrolled
156
- defaultShown = false,
157
- // controlled
158
- shown: shownProp,
159
- onShownChange,
160
- onShownChanged,
161
-
162
- // Для AppRootPortal
163
- usePortal = true,
164
-
165
- // Для FloatingArrow
166
- arrowProps,
167
- ArrowIcon = DefaultIcon,
168
-
169
- // FocusTrapProps
170
- autoFocus = true,
171
- restoreFocus = true,
172
- className,
173
- children,
174
- noStyling = false,
175
- zIndex = 'var(--vkui--z_index_popout)',
176
- // a11y
177
- role = 'dialog',
178
- ...restPopoverProps
179
- }: PopoverProps): React.ReactNode => {
180
- const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);
181
- const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({
182
- arrow: withArrow,
183
- arrowRef,
184
- arrowHeight,
185
- arrowPadding,
186
- placement: expectedPlacement,
187
- offsetByMainAxis,
188
- offsetByCrossAxis,
189
- sameWidth,
190
- hideWhenReferenceHidden,
191
- disableFlipMiddleware,
192
- customMiddlewares,
193
- });
194
- const {
195
- placement: resolvedPlacement,
196
- shown,
197
- willBeHide,
198
- refs,
199
- referenceProps,
200
- floatingProps,
201
- middlewareData,
202
- onClose,
203
- onRestoreFocus,
204
- onEscapeKeyDown,
205
- } = useFloatingWithInteractions({
206
- middlewares,
207
- placement: strictPlacement,
208
- trigger,
209
- hoverDelay,
210
- closeAfterClick,
211
- disabled,
212
- disableInteractive,
213
- disableCloseOnClickOutside,
214
- disableCloseOnEscKey,
215
- defaultShown,
216
- shown: shownProp,
217
- onShownChange,
218
- onShownChanged,
219
- });
220
-
221
- usePlacementChangeCallback(expectedPlacement, resolvedPlacement, onPlacementChange);
222
-
223
- const [, child] = usePatchChildren<HTMLDivElement>(
224
- children,
225
- injectAriaExpandedPropByRole(referenceProps, shown, role),
226
- refs.setReference,
227
- );
228
-
229
- let popover: React.ReactNode = null;
230
- if (shown || keepMounted) {
231
- const hidden = keepMounted && !shown;
232
-
233
- let arrow: React.ReactElement | null = null;
234
- if (withArrow) {
235
- const { arrow: arrowCoords } = middlewareData;
236
- arrow = (
237
- <FloatingArrow
238
- iconClassName={noStyling ? undefined : styles.arrow}
239
- {...arrowProps}
240
- coords={arrowCoords}
241
- placement={resolvedPlacement}
242
- getRootRef={setArrowRef}
243
- Icon={ArrowIcon}
244
- />
245
- );
246
- }
118
+ export const Popover = ({ children, ...restProps }: PopoverProps): React.ReactNode => {
119
+ const { anchorRef, anchorProps: referenceProps, popover } = usePopover<HTMLDivElement>(restProps);
247
120
 
248
- popover = (
249
- <AppRootPortal usePortal={usePortal}>
250
- <div
251
- ref={refs.setFloating}
252
- className={classNames(styles.host, hidden && styles.hidden)}
253
- {...floatingProps}
254
- style={{
255
- zIndex: !hidden ? zIndex : undefined,
256
- ...floatingProps.style,
257
- }}
258
- >
259
- <FocusTrap
260
- {...restPopoverProps}
261
- role={role}
262
- className={classNames(
263
- styles.in,
264
- noStyling ? undefined : styles.inWithStyling,
265
- willBeHide ? animationFadeClassNames.out : animationFadeClassNames.in,
266
- transformOriginClassNames[resolvedPlacement],
267
- className,
268
- )}
269
- mount={!hidden}
270
- disabled={hidden}
271
- autoFocus={disableInteractive ? false : autoFocus}
272
- restoreFocus={restoreFocus ? () => onRestoreFocus(restoreFocus) : false}
273
- onClose={onEscapeKeyDown}
274
- >
275
- {arrow}
276
- {typeof content === 'function' ? content({ onClose }) : content}
277
- </FocusTrap>
278
- </div>
279
- </AppRootPortal>
280
- );
281
- }
121
+ const [, child] = usePatchChildren<HTMLDivElement>(children, referenceProps, anchorRef);
282
122
 
283
123
  return (
284
124
  <React.Fragment>
@@ -0,0 +1,183 @@
1
+ import { type Ref } from 'react';
2
+ import * as React from 'react';
3
+ import { classNames } from '@vkontakte/vkjs';
4
+ import { injectAriaExpandedPropByRole } from '../../lib/accessibility';
5
+ import { animationFadeClassNames, transformOriginClassNames } from '../../lib/animation';
6
+ import {
7
+ useFloatingMiddlewaresBootstrap,
8
+ useFloatingWithInteractions,
9
+ usePlacementChangeCallback,
10
+ } from '../../lib/floating';
11
+ import { type ReferenceProps } from '../../lib/floating/useFloatingWithInteractions/types';
12
+ import { AppRootPortal } from '../AppRoot/AppRootPortal';
13
+ import {
14
+ DEFAULT_ARROW_HEIGHT,
15
+ DEFAULT_ARROW_PADDING,
16
+ DefaultIcon,
17
+ } from '../FloatingArrow/DefaultIcon';
18
+ import { FloatingArrow } from '../FloatingArrow/FloatingArrow';
19
+ import { FocusTrap } from '../FocusTrap/FocusTrap';
20
+ import { type PopoverProps } from './Popover';
21
+ import styles from './Popover.module.css';
22
+
23
+ export type UsePopoverProps = Omit<PopoverProps, 'children'> & {
24
+ [key: `data-${string}`]: string | number | boolean;
25
+ };
26
+
27
+ export type UsePopoverResult<ElementType extends HTMLElement = HTMLElement> = {
28
+ anchorRef: Ref<ElementType>;
29
+ anchorProps: ReferenceProps<ElementType>;
30
+ popover: React.ReactNode | null;
31
+ };
32
+
33
+ export const usePopover = <ElementType extends HTMLElement = HTMLElement>({
34
+ // UsePopoverProps
35
+ arrow: withArrow,
36
+ arrowHeight = DEFAULT_ARROW_HEIGHT,
37
+ arrowPadding = DEFAULT_ARROW_PADDING,
38
+ placement: expectedPlacement = 'bottom-start',
39
+ onPlacementChange,
40
+ disableFlipMiddleware = false,
41
+ trigger = 'click',
42
+ strategy,
43
+ content,
44
+ hoverDelay = 150,
45
+ closeAfterClick,
46
+ offsetByMainAxis = 8,
47
+ offsetByCrossAxis = 0,
48
+ sameWidth,
49
+ hideWhenReferenceHidden,
50
+ disabled,
51
+ disableInteractive,
52
+ disableCloseOnClickOutside,
53
+ disableCloseOnEscKey,
54
+ keepMounted = false,
55
+ customMiddlewares,
56
+ // uncontrolled
57
+ defaultShown = false,
58
+ // controlled
59
+ shown: shownProp,
60
+ onShownChange,
61
+ onShownChanged,
62
+
63
+ // Для AppRootPortal
64
+ usePortal = true,
65
+
66
+ // Для FloatingArrow
67
+ arrowProps,
68
+ ArrowIcon = DefaultIcon,
69
+
70
+ // FocusTrapProps
71
+ autoFocus = true,
72
+ restoreFocus = true,
73
+ className,
74
+ noStyling = false,
75
+ zIndex = 'var(--vkui--z_index_popout)',
76
+ // a11y
77
+ role = 'dialog',
78
+ ...restPopoverProps
79
+ }: UsePopoverProps): UsePopoverResult<ElementType> => {
80
+ const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);
81
+ const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({
82
+ arrow: withArrow,
83
+ arrowRef,
84
+ arrowHeight,
85
+ arrowPadding,
86
+ placement: expectedPlacement,
87
+ offsetByMainAxis,
88
+ offsetByCrossAxis,
89
+ sameWidth,
90
+ hideWhenReferenceHidden,
91
+ disableFlipMiddleware,
92
+ customMiddlewares,
93
+ });
94
+ const {
95
+ placement: resolvedPlacement,
96
+ shown,
97
+ willBeHide,
98
+ refs,
99
+ referenceProps,
100
+ floatingProps,
101
+ middlewareData,
102
+ onClose,
103
+ onRestoreFocus,
104
+ onEscapeKeyDown,
105
+ } = useFloatingWithInteractions({
106
+ middlewares,
107
+ placement: strictPlacement,
108
+ trigger,
109
+ strategy,
110
+ hoverDelay,
111
+ closeAfterClick,
112
+ disabled,
113
+ disableInteractive,
114
+ disableCloseOnClickOutside,
115
+ disableCloseOnEscKey,
116
+ defaultShown,
117
+ shown: shownProp,
118
+ onShownChange,
119
+ onShownChanged,
120
+ });
121
+
122
+ usePlacementChangeCallback(expectedPlacement, resolvedPlacement, onPlacementChange);
123
+
124
+ let popover: React.ReactNode = null;
125
+ if (shown || keepMounted) {
126
+ const hidden = keepMounted && !shown;
127
+
128
+ let arrow: React.ReactElement | null = null;
129
+ if (withArrow) {
130
+ const { arrow: arrowCoords } = middlewareData;
131
+ arrow = (
132
+ <FloatingArrow
133
+ iconClassName={noStyling ? undefined : styles.arrow}
134
+ {...arrowProps}
135
+ coords={arrowCoords}
136
+ placement={resolvedPlacement}
137
+ getRootRef={setArrowRef}
138
+ Icon={ArrowIcon}
139
+ />
140
+ );
141
+ }
142
+
143
+ popover = (
144
+ <AppRootPortal usePortal={usePortal}>
145
+ <div
146
+ ref={refs.setFloating}
147
+ className={classNames(styles.host, hidden && styles.hidden)}
148
+ {...floatingProps}
149
+ style={{
150
+ zIndex: !hidden ? zIndex : undefined,
151
+ ...floatingProps.style,
152
+ }}
153
+ >
154
+ <FocusTrap
155
+ {...restPopoverProps}
156
+ role={role}
157
+ className={classNames(
158
+ styles.in,
159
+ noStyling ? undefined : styles.inWithStyling,
160
+ willBeHide ? animationFadeClassNames.out : animationFadeClassNames.in,
161
+ transformOriginClassNames[resolvedPlacement],
162
+ className,
163
+ )}
164
+ mount={!hidden}
165
+ disabled={hidden}
166
+ autoFocus={disableInteractive ? false : autoFocus}
167
+ restoreFocus={restoreFocus ? () => onRestoreFocus(restoreFocus) : false}
168
+ onClose={onEscapeKeyDown}
169
+ >
170
+ {arrow}
171
+ {typeof content === 'function' ? content({ onClose }) : content}
172
+ </FocusTrap>
173
+ </div>
174
+ </AppRootPortal>
175
+ );
176
+ }
177
+
178
+ return {
179
+ anchorRef: refs.setReference,
180
+ anchorProps: injectAriaExpandedPropByRole(referenceProps, shown, role),
181
+ popover,
182
+ };
183
+ };
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import * as React from 'react';
4
+ import { mergeStyle } from '../../helpers/mergeStyle';
4
5
  import { useExternRef } from '../../hooks/useExternRef';
5
6
  import {
6
7
  autoUpdateFloatingElement,
@@ -81,7 +82,7 @@ export interface PopperCommonProps
81
82
  }
82
83
 
83
84
  export interface PopperProps extends PopperCommonProps {
84
- targetRef: React.RefObject<HTMLElement> | VirtualElement;
85
+ targetRef: React.RefObject<HTMLElement | null> | VirtualElement;
85
86
  }
86
87
 
87
88
  /**
@@ -113,6 +114,8 @@ export const Popper = ({
113
114
  children,
114
115
  usePortal = true,
115
116
  onPlacementChange,
117
+ zIndex,
118
+ style,
116
119
  ...restProps
117
120
  }: PopperProps): React.ReactNode => {
118
121
  const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);
@@ -159,9 +162,17 @@ export const Popper = ({
159
162
  refs.setReference('current' in targetRef ? targetRef.current : targetRef);
160
163
  }, [refs.setReference, targetRef]);
161
164
 
165
+ const dropdownStyle =
166
+ typeof zIndex !== 'undefined'
167
+ ? {
168
+ zIndex,
169
+ }
170
+ : undefined;
171
+
162
172
  const dropdown = (
163
173
  <RootComponent
164
174
  {...restProps}
175
+ style={mergeStyle(dropdownStyle, style)}
165
176
  baseClassName={styles.host}
166
177
  getRootRef={handleRootRef}
167
178
  baseStyle={convertFloatingDataToReactCSSProperties(
@@ -99,7 +99,7 @@ export const PullToRefresh = ({
99
99
  }
100
100
  }, [touchDown, resetRefreshingState]);
101
101
 
102
- const waitFetchingTimeoutId = React.useRef<NodeJS.Timeout>();
102
+ const waitFetchingTimeoutId = React.useRef<ReturnType<typeof setTimeout>>(undefined);
103
103
 
104
104
  useIsomorphicLayoutEffect(() => {
105
105
  const prevIsFetching = prevIsFetchingRef.current;
@@ -24,11 +24,11 @@ export interface RemovableProps {
24
24
  */
25
25
  onRemove?: (e: React.MouseEvent, rootEl?: HTMLElement | null) => void;
26
26
  /**
27
- * (test) iOS only. testId кнопки, которая активирует кнопку удаления
27
+ * Передает атрибут `data-testid` для кнопки, которая активирует кнопку удаления (iOS only)
28
28
  */
29
29
  toggleButtonTestId?: string;
30
30
  /**
31
- * (test) testId кнопки удаления
31
+ * Передает атрибут `data-testid` для кнопки удаления
32
32
  */
33
33
  removeButtonTestId?: string;
34
34
  /**
@@ -46,9 +46,23 @@
46
46
  }
47
47
 
48
48
  .contentBefore {
49
+ display: flex;
50
+ flex-direction: column;
49
51
  min-inline-size: 0;
50
52
  }
51
53
 
54
+ .contentAlignStart {
55
+ justify-content: flex-start;
56
+ }
57
+
58
+ .contentAlignCenter {
59
+ justify-content: center;
60
+ }
61
+
62
+ .contentAlignEnd {
63
+ justify-content: flex-end;
64
+ }
65
+
52
66
  .contentAfter {
53
67
  display: flex;
54
68
  flex-direction: column;
@@ -61,15 +75,15 @@
61
75
  flex-basis: 100px;
62
76
  }
63
77
 
64
- .contentAfterAlignStart {
78
+ .alignSelfStart {
65
79
  align-self: flex-start;
66
80
  }
67
81
 
68
- .contentAfterAlignCenter {
82
+ .alignSelfCenter {
69
83
  align-self: center;
70
84
  }
71
85
 
72
- .contentAfterAlignEnd {
86
+ .alignSelfEnd {
73
87
  align-self: flex-end;
74
88
  }
75
89
 
@@ -13,12 +13,20 @@ const sizeYClassNames = {
13
13
  compact: styles.sizeYCompact,
14
14
  };
15
15
 
16
- const alignAfterClassNames = {
17
- start: styles.contentAfterAlignStart,
18
- center: styles.contentAfterAlignCenter,
19
- end: styles.contentAfterAlignEnd,
16
+ const alignSelfClassNames = {
17
+ start: styles.alignSelfStart,
18
+ center: styles.alignSelfCenter,
19
+ end: styles.alignSelfEnd,
20
20
  };
21
21
 
22
+ const alignContentClassNames = {
23
+ start: styles.contentAlignStart,
24
+ center: styles.contentAlignCenter,
25
+ end: styles.contentAlignEnd,
26
+ };
27
+
28
+ type Align = 'start' | 'center' | 'end';
29
+
22
30
  export interface RichCellProps extends TappableProps {
23
31
  /**
24
32
  * Контейнер для текста над `children`.
@@ -59,10 +67,18 @@ export interface RichCellProps extends TappableProps {
59
67
  * Текст под `after`.
60
68
  */
61
69
  afterCaption?: React.ReactNode;
70
+ /**
71
+ * Выравнивание before компонента по вертикали
72
+ */
73
+ beforeAlign?: Align;
74
+ /**
75
+ * Выравнивание центрального контента по вертикали
76
+ */
77
+ contentAlign?: Align;
62
78
  /**
63
79
  * Выравнивание after компонента по вертикали
64
80
  */
65
- afterAlign?: 'start' | 'center' | 'end';
81
+ afterAlign?: Align;
66
82
  /**
67
83
  * Убирает анимацию нажатия.
68
84
  */
@@ -89,6 +105,8 @@ export const RichCell: React.FC<RichCellProps> & {
89
105
  bottom,
90
106
  actions,
91
107
  multiline,
108
+ beforeAlign = 'start',
109
+ contentAlign = 'start',
92
110
  afterAlign = 'start',
93
111
  ...restProps
94
112
  }: RichCellProps) => {
@@ -99,7 +117,7 @@ export const RichCell: React.FC<RichCellProps> & {
99
117
  return;
100
118
  }
101
119
  return (
102
- <div className={classNames(styles.contentAfter, alignAfterClassNames[afterAlign])}>
120
+ <div className={classNames(styles.contentAfter, alignSelfClassNames[afterAlign])}>
103
121
  {after && <div className={styles.afterChildren}>{after}</div>}
104
122
  {afterCaption && <div className={styles.afterCaption}>{afterCaption}</div>}
105
123
  </div>
@@ -115,11 +133,13 @@ export const RichCell: React.FC<RichCellProps> & {
115
133
  sizeY !== 'regular' && sizeYClassNames[sizeY],
116
134
  )}
117
135
  >
118
- {before && <div className={styles.before}>{before}</div>}
136
+ {before && (
137
+ <div className={classNames(styles.before, alignSelfClassNames[beforeAlign])}>{before}</div>
138
+ )}
119
139
  <div className={styles.inWrapper}>
120
140
  <div className={styles.in}>
121
141
  <div className={styles.content}>
122
- <div className={styles.contentBefore}>
142
+ <div className={classNames(styles.contentBefore, alignContentClassNames[contentAlign])}>
123
143
  {overTitle && (
124
144
  <Subhead Component="div" className={styles.overTitle}>
125
145
  {overTitle}
@@ -51,7 +51,7 @@ export const Root = ({
51
51
  const { animate } = React.useContext(SplitColContext);
52
52
  const disableAnimation = !transitionMotionEnabled || !animate;
53
53
 
54
- const views = React.Children.toArray(children) as React.ReactElement[];
54
+ const views = React.Children.toArray(children) as Array<React.ReactElement<NavIdProps>>;
55
55
 
56
56
  const [{ prevView, activeView, transition, isBack }, _setState] = React.useState<RootState>({
57
57
  activeView: _activeView,
@@ -127,7 +127,9 @@ export const Root = ({
127
127
  return (
128
128
  <div
129
129
  key={viewId}
130
- ref={(e) => viewId && (viewNodes[viewId] = e)}
130
+ ref={(e) => {
131
+ viewId && (viewNodes[viewId] = e);
132
+ }}
131
133
  onAnimationEnd={isTransitionTarget ? onAnimationEnd : undefined}
132
134
  className={classNames(
133
135
  styles.view,
@@ -4,11 +4,15 @@ import * as React from 'react';
4
4
  import { classNames } from '@vkontakte/vkjs';
5
5
  import { useAdaptivity } from '../../hooks/useAdaptivity';
6
6
  import { useCustomEnsuredControl } from '../../hooks/useEnsuredControl';
7
+ import { useTabsNavigation } from '../../hooks/useTabsNavigation';
7
8
  import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
8
9
  import { warnOnce } from '../../lib/warnOnce';
9
10
  import type { HTMLAttributesWithRootRef } from '../../types';
10
11
  import { RootComponent } from '../RootComponent/RootComponent';
11
- import { SegmentedControlOption } from './SegmentedControlOption/SegmentedControlOption';
12
+ import {
13
+ SegmentedControlOption,
14
+ type SegmentedControlOptionProps,
15
+ } from './SegmentedControlOption/SegmentedControlOption';
12
16
  import styles from './SegmentedControl.module.css';
13
17
 
14
18
  const sizeYClassNames = {
@@ -25,7 +29,7 @@ export interface SegmentedControlOptionInterface
25
29
  * Рекомендуется использовать только иконки с размером 20
26
30
  */
27
31
  before?: React.ReactNode;
28
- label: React.ReactChild;
32
+ label: React.ReactNode;
29
33
  value: SegmentedControlValue;
30
34
  }
31
35
 
@@ -52,6 +56,7 @@ export const SegmentedControl = ({
52
56
  children,
53
57
  onChange: onChangeProp,
54
58
  value: valueProp,
59
+ role = 'radiogroup',
55
60
  ...restProps
56
61
  }: SegmentedControlProps): React.ReactNode => {
57
62
  const id = React.useId();
@@ -64,6 +69,8 @@ export const SegmentedControl = ({
64
69
 
65
70
  const { sizeY = 'none' } = useAdaptivity();
66
71
 
72
+ const { tabsRef } = useTabsNavigation(role === 'tablist');
73
+
67
74
  const actualIndex = options.findIndex((option) => option.value === value);
68
75
 
69
76
  useIsomorphicLayoutEffect(() => {
@@ -83,7 +90,7 @@ export const SegmentedControl = ({
83
90
  size === 'l' && styles.sizeL,
84
91
  )}
85
92
  >
86
- <div role="radiogroup" className={styles.in}>
93
+ <div role={role} ref={tabsRef} className={styles.in}>
87
94
  {actualIndex > -1 && (
88
95
  <div
89
96
  aria-hidden
@@ -94,17 +101,42 @@ export const SegmentedControl = ({
94
101
  }}
95
102
  />
96
103
  )}
97
- {options.map(({ label, ...optionProps }) => (
98
- <SegmentedControlOption
99
- key={`${optionProps.value}`}
100
- {...optionProps}
101
- name={name ?? id}
102
- checked={value === optionProps.value}
103
- onChange={() => onChange(optionProps.value)}
104
- >
105
- {label}
106
- </SegmentedControlOption>
107
- ))}
104
+ {options.map(({ label, before, ...optionProps }) => {
105
+ const selected = value === optionProps.value;
106
+ const onSelect = () => onChange(optionProps.value);
107
+ const optionRootProps: SegmentedControlOptionProps['rootProps'] =
108
+ role === 'tablist'
109
+ ? {
110
+ 'role': 'tab',
111
+ 'aria-selected': selected,
112
+ 'onClick': onSelect,
113
+ 'tabIndex': optionProps.tabIndex ?? (selected ? 0 : -1),
114
+ ...optionProps,
115
+ }
116
+ : undefined;
117
+
118
+ const optionInputProps: SegmentedControlOptionProps['inputProps'] =
119
+ role !== 'tablist'
120
+ ? {
121
+ role: optionProps.role || (role === 'radiogroup' ? 'radio' : undefined),
122
+ checked: selected,
123
+ onChange: onSelect,
124
+ name: name ?? id,
125
+ ...optionProps,
126
+ }
127
+ : undefined;
128
+
129
+ return (
130
+ <SegmentedControlOption
131
+ key={`${optionProps.value}`}
132
+ before={before}
133
+ rootProps={optionRootProps}
134
+ inputProps={optionInputProps}
135
+ >
136
+ {label}
137
+ </SegmentedControlOption>
138
+ );
139
+ })}
108
140
  </div>
109
141
  </RootComponent>
110
142
  );