@vkontakte/vkui 7.0.1 → 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 (649) hide show
  1. package/dist/components/ActionSheet/types.d.ts +1 -1
  2. package/dist/components/ActionSheet/types.d.ts.map +1 -1
  3. package/dist/components/ActionSheet/types.js.map +1 -1
  4. package/dist/components/Alert/Alert.d.ts +1 -1
  5. package/dist/components/Alert/Alert.js.map +1 -1
  6. package/dist/components/AppRoot/AppRoot.d.ts +1 -1
  7. package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
  8. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  9. package/dist/components/AppRoot/AppRootContext.d.ts +2 -2
  10. package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
  11. package/dist/components/AppRoot/AppRootContext.js.map +1 -1
  12. package/dist/components/AppRoot/AppRootPortal.d.ts +1 -1
  13. package/dist/components/AppRoot/AppRootPortal.d.ts.map +1 -1
  14. package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
  15. package/dist/components/AppRoot/ScrollContext.d.ts +1 -1
  16. package/dist/components/AppRoot/ScrollContext.d.ts.map +1 -1
  17. package/dist/components/AppRoot/ScrollContext.js.map +1 -1
  18. package/dist/components/AspectRatio/AspectRatio.d.ts +7 -3
  19. package/dist/components/AspectRatio/AspectRatio.d.ts.map +1 -1
  20. package/dist/components/AspectRatio/AspectRatio.js +1 -1
  21. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  22. package/dist/components/Calendar/Calendar.d.ts +3 -4
  23. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  24. package/dist/components/Calendar/Calendar.js +81 -64
  25. package/dist/components/Calendar/Calendar.js.map +1 -1
  26. package/dist/components/CalendarDay/CalendarDay.d.ts +3 -0
  27. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  28. package/dist/components/CalendarDay/CalendarDay.js +3 -1
  29. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  30. package/dist/components/CalendarDays/CalendarDays.d.ts +3 -0
  31. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  32. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  33. package/dist/components/CalendarHeader/CalendarHeader.d.ts +12 -0
  34. package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  35. package/dist/components/CalendarHeader/CalendarHeader.js +4 -2
  36. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  37. package/dist/components/CalendarRange/CalendarRange.d.ts +7 -1
  38. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  39. package/dist/components/CalendarRange/CalendarRange.js +108 -93
  40. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  41. package/dist/components/CalendarTime/CalendarTime.d.ts +20 -4
  42. package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  43. package/dist/components/CalendarTime/CalendarTime.js +68 -9
  44. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  45. package/dist/components/CardScroll/CardScroll.d.ts +2 -3
  46. package/dist/components/CardScroll/CardScroll.d.ts.map +1 -1
  47. package/dist/components/CardScroll/CardScroll.js +6 -2
  48. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  49. package/dist/components/CarouselBase/Bullets.d.ts +16 -0
  50. package/dist/components/CarouselBase/Bullets.d.ts.map +1 -0
  51. package/dist/components/CarouselBase/Bullets.js +21 -0
  52. package/dist/components/CarouselBase/Bullets.js.map +1 -0
  53. package/dist/components/CarouselBase/CarouselBase.d.ts +4 -0
  54. package/dist/components/CarouselBase/CarouselBase.d.ts.map +1 -0
  55. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/CarouselBase.js +175 -98
  56. package/dist/components/CarouselBase/CarouselBase.js.map +1 -0
  57. package/dist/components/CarouselBase/CarouselViewPort.d.ts +14 -0
  58. package/dist/components/CarouselBase/CarouselViewPort.d.ts.map +1 -0
  59. package/dist/components/CarouselBase/CarouselViewPort.js +29 -0
  60. package/dist/components/CarouselBase/CarouselViewPort.js.map +1 -0
  61. package/dist/components/CarouselBase/ScrollArrows.d.ts +23 -0
  62. package/dist/components/CarouselBase/ScrollArrows.d.ts.map +1 -0
  63. package/dist/components/CarouselBase/ScrollArrows.js +34 -0
  64. package/dist/components/CarouselBase/ScrollArrows.js.map +1 -0
  65. package/dist/components/CarouselBase/constants.d.ts.map +1 -0
  66. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/constants.js +5 -1
  67. package/dist/components/CarouselBase/constants.js.map +1 -0
  68. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/helpers.d.ts +13 -4
  69. package/dist/components/CarouselBase/helpers.d.ts.map +1 -0
  70. package/dist/{cssm/components/BaseGallery → components}/CarouselBase/helpers.js +41 -5
  71. package/dist/components/CarouselBase/helpers.js.map +1 -0
  72. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.d.ts +1 -1
  73. package/dist/components/CarouselBase/hooks.d.ts.map +1 -0
  74. package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.js +2 -2
  75. package/dist/components/CarouselBase/hooks.js.map +1 -0
  76. package/dist/components/CarouselBase/types.d.ts +125 -0
  77. package/dist/components/CarouselBase/types.d.ts.map +1 -0
  78. package/dist/components/CarouselBase/types.js.map +1 -0
  79. package/dist/components/ChipsInput/ChipsInput.d.ts +1 -1
  80. package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
  81. package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
  82. package/dist/components/ChipsInput/useChipsInput.d.ts +1 -1
  83. package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
  84. package/dist/components/ChipsInput/useChipsInput.js.map +1 -1
  85. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  86. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  87. package/dist/components/ChipsSelect/useChipsSelect.d.ts +1 -1
  88. package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
  89. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  90. package/dist/components/Clickable/useState.js.map +1 -1
  91. package/dist/components/Clickable/useStateWithDelay.js +1 -1
  92. package/dist/components/Clickable/useStateWithDelay.js.map +1 -1
  93. package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  94. package/dist/components/ConfigProvider/ConfigProvider.js +8 -23
  95. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  96. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  97. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts.map +1 -1
  98. package/dist/components/ConfigProvider/ConfigProviderContext.js +22 -0
  99. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  100. package/dist/components/ConfigProvider/ConfigProviderOverride.d.ts.map +1 -1
  101. package/dist/components/ConfigProvider/ConfigProviderOverride.js +2 -3
  102. package/dist/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
  103. package/dist/components/CustomScrollView/CustomScrollView.d.ts +5 -1
  104. package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  105. package/dist/components/CustomScrollView/CustomScrollView.js +9 -4
  106. package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
  107. package/dist/components/CustomSelect/CustomSelect.d.ts +6 -2
  108. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  109. package/dist/components/CustomSelect/CustomSelect.js +8 -4
  110. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  111. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  112. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  113. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  114. package/dist/components/DateInput/DateInput.d.ts +24 -2
  115. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  116. package/dist/components/DateInput/DateInput.js +41 -6
  117. package/dist/components/DateInput/DateInput.js.map +1 -1
  118. package/dist/components/DateRangeInput/DateRangeInput.d.ts +19 -1
  119. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  120. package/dist/components/DateRangeInput/DateRangeInput.js +6 -4
  121. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  122. package/dist/components/Epic/Epic.d.ts.map +1 -1
  123. package/dist/components/Epic/Epic.js.map +1 -1
  124. package/dist/components/FixedLayout/FixedLayout.d.ts.map +1 -1
  125. package/dist/components/FixedLayout/FixedLayout.js +1 -2
  126. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  127. package/dist/components/Gallery/Gallery.d.ts +2 -3
  128. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  129. package/dist/components/Gallery/Gallery.js +3 -6
  130. package/dist/components/Gallery/Gallery.js.map +1 -1
  131. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +9 -1
  132. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  133. package/dist/components/HorizontalScroll/HorizontalScroll.js +6 -4
  134. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  135. package/dist/components/Image/Image.d.ts +1 -0
  136. package/dist/components/Image/Image.d.ts.map +1 -1
  137. package/dist/components/Image/Image.js +2 -0
  138. package/dist/components/Image/Image.js.map +1 -1
  139. package/dist/components/ImageBase/ImageBase.d.ts +8 -1
  140. package/dist/components/ImageBase/ImageBase.d.ts.map +1 -1
  141. package/dist/components/ImageBase/ImageBase.js +39 -11
  142. package/dist/components/ImageBase/ImageBase.js.map +1 -1
  143. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.d.ts +29 -0
  144. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.d.ts.map +1 -0
  145. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +96 -0
  146. package/dist/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -0
  147. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.d.ts +4 -0
  148. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.d.ts.map +1 -0
  149. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.js +35 -0
  150. package/dist/components/ImageBase/ImageBaseFloatElement/helpers.js.map +1 -0
  151. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts +1 -1
  152. package/dist/components/ImageBase/ImageBaseOverlay/hooks.d.ts.map +1 -1
  153. package/dist/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -1
  154. package/dist/components/ImageBase/context.d.ts.map +1 -1
  155. package/dist/components/ImageBase/context.js +3 -1
  156. package/dist/components/ImageBase/context.js.map +1 -1
  157. package/dist/components/ImageBase/types.d.ts +2 -0
  158. package/dist/components/ImageBase/types.d.ts.map +1 -1
  159. package/dist/components/ImageBase/types.js.map +1 -1
  160. package/dist/components/ImageBase/validators.d.ts +2 -1
  161. package/dist/components/ImageBase/validators.d.ts.map +1 -1
  162. package/dist/components/ImageBase/validators.js.map +1 -1
  163. package/dist/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  164. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  165. package/dist/components/ModalRoot/ModalRootContext.d.ts +1 -1
  166. package/dist/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
  167. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  168. package/dist/components/Pagination/Pagination.d.ts +14 -1
  169. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  170. package/dist/components/Pagination/Pagination.js +13 -4
  171. package/dist/components/Pagination/Pagination.js.map +1 -1
  172. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts +2 -0
  173. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.d.ts.map +1 -1
  174. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js +2 -1
  175. package/dist/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js.map +1 -1
  176. package/dist/components/Popover/Popover.d.ts +2 -2
  177. package/dist/components/Popover/Popover.d.ts.map +1 -1
  178. package/dist/components/Popover/Popover.js +6 -126
  179. package/dist/components/Popover/Popover.js.map +1 -1
  180. package/dist/components/Popover/usePopover.d.ts +14 -0
  181. package/dist/components/Popover/usePopover.d.ts.map +1 -0
  182. package/dist/components/Popover/usePopover.js +138 -0
  183. package/dist/components/Popover/usePopover.js.map +1 -0
  184. package/dist/components/Popper/Popper.d.ts +1 -1
  185. package/dist/components/Popper/Popper.d.ts.map +1 -1
  186. package/dist/components/Popper/Popper.js.map +1 -1
  187. package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
  188. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  189. package/dist/components/Removable/Removable.d.ts +2 -2
  190. package/dist/components/Removable/Removable.js.map +1 -1
  191. package/dist/components/RichCell/RichCell.d.ts +11 -1
  192. package/dist/components/RichCell/RichCell.d.ts.map +1 -1
  193. package/dist/components/RichCell/RichCell.js +15 -8
  194. package/dist/components/RichCell/RichCell.js.map +1 -1
  195. package/dist/components/Root/Root.d.ts.map +1 -1
  196. package/dist/components/Root/Root.js +3 -1
  197. package/dist/components/Root/Root.js.map +1 -1
  198. package/dist/components/SegmentedControl/SegmentedControl.d.ts +2 -2
  199. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  200. package/dist/components/SegmentedControl/SegmentedControl.js +30 -10
  201. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  202. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts +5 -3
  203. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
  204. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +6 -17
  205. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  206. package/dist/components/Select/Select.d.ts.map +1 -1
  207. package/dist/components/Select/Select.js +3 -2
  208. package/dist/components/Select/Select.js.map +1 -1
  209. package/dist/components/Skeleton/Skeleton.js +2 -2
  210. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  211. package/dist/components/Slider/Slider.d.ts +9 -1
  212. package/dist/components/Slider/Slider.d.ts.map +1 -1
  213. package/dist/components/Slider/Slider.js +5 -1
  214. package/dist/components/Slider/Slider.js.map +1 -1
  215. package/dist/components/Snackbar/Snackbar.js +1 -1
  216. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  217. package/dist/components/SplitCol/SplitColContext.d.ts +1 -1
  218. package/dist/components/SplitCol/SplitColContext.d.ts.map +1 -1
  219. package/dist/components/SplitCol/SplitColContext.js.map +1 -1
  220. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  221. package/dist/components/Tabs/Tabs.js +2 -82
  222. package/dist/components/Tabs/Tabs.js.map +1 -1
  223. package/dist/components/Textarea/Textarea.js +2 -2
  224. package/dist/components/Textarea/Textarea.js.map +1 -1
  225. package/dist/components/Textarea/useResizeTextarea.d.ts +1 -1
  226. package/dist/components/Textarea/useResizeTextarea.d.ts.map +1 -1
  227. package/dist/components/Textarea/useResizeTextarea.js +1 -1
  228. package/dist/components/Textarea/useResizeTextarea.js.map +1 -1
  229. package/dist/components/Tooltip/Tooltip.d.ts +2 -2
  230. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  231. package/dist/components/Tooltip/Tooltip.js +4 -2
  232. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  233. package/dist/components/UsersStack/UsersStack.d.ts +1 -1
  234. package/dist/components/UsersStack/UsersStack.d.ts.map +1 -1
  235. package/dist/components/UsersStack/UsersStack.js +16 -5
  236. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  237. package/dist/components/View/View.d.ts.map +1 -1
  238. package/dist/components/View/View.js +3 -1
  239. package/dist/components/View/View.js.map +1 -1
  240. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  241. package/dist/components/View/ViewInfinite.js +3 -1
  242. package/dist/components/View/ViewInfinite.js.map +1 -1
  243. package/dist/components.css +1 -1
  244. package/dist/components.css.map +1 -1
  245. package/dist/context/CalendarDirectionContext.d.ts +7 -0
  246. package/dist/context/CalendarDirectionContext.d.ts.map +1 -0
  247. package/dist/context/CalendarDirectionContext.js +7 -0
  248. package/dist/context/CalendarDirectionContext.js.map +1 -0
  249. package/dist/cssm/components/ActionSheet/types.js.map +1 -1
  250. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  251. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  252. package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
  253. package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
  254. package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
  255. package/dist/cssm/components/AspectRatio/AspectRatio.js +1 -1
  256. package/dist/cssm/components/AspectRatio/AspectRatio.js.map +1 -1
  257. package/dist/cssm/components/Calendar/Calendar.js +79 -64
  258. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  259. package/dist/cssm/components/CalendarDay/CalendarDay.js +3 -1
  260. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  261. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +4 -0
  262. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  263. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +4 -2
  264. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  265. package/dist/cssm/components/CalendarRange/CalendarRange.js +108 -94
  266. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  267. package/dist/cssm/components/CalendarTime/CalendarTime.js +67 -9
  268. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  269. package/dist/cssm/components/CardScroll/CardScroll.js +3 -1
  270. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  271. package/dist/cssm/components/CarouselBase/Bullets.js +22 -0
  272. package/dist/cssm/components/CarouselBase/Bullets.js.map +1 -0
  273. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/CarouselBase.js +164 -97
  274. package/dist/cssm/components/CarouselBase/CarouselBase.js.map +1 -0
  275. package/dist/cssm/components/{BaseGallery/BaseGallery.module.css → CarouselBase/CarouselBase.module.css} +21 -1
  276. package/dist/cssm/components/CarouselBase/CarouselViewPort.js +30 -0
  277. package/dist/cssm/components/CarouselBase/CarouselViewPort.js.map +1 -0
  278. package/dist/cssm/components/CarouselBase/ScrollArrows.js +35 -0
  279. package/dist/cssm/components/CarouselBase/ScrollArrows.js.map +1 -0
  280. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/constants.js +5 -1
  281. package/dist/cssm/components/CarouselBase/constants.js.map +1 -0
  282. package/dist/{components/BaseGallery → cssm/components}/CarouselBase/helpers.js +39 -5
  283. package/dist/cssm/components/CarouselBase/helpers.js.map +1 -0
  284. package/dist/cssm/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.js +2 -2
  285. package/dist/cssm/components/CarouselBase/hooks.js.map +1 -0
  286. package/dist/cssm/components/CarouselBase/types.js.map +1 -0
  287. package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
  288. package/dist/cssm/components/ChipsInput/useChipsInput.js.map +1 -1
  289. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  290. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  291. package/dist/cssm/components/Clickable/useState.js.map +1 -1
  292. package/dist/cssm/components/Clickable/useStateWithDelay.js +1 -1
  293. package/dist/cssm/components/Clickable/useStateWithDelay.js.map +1 -1
  294. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +8 -23
  295. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  296. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +22 -0
  297. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  298. package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js +2 -3
  299. package/dist/cssm/components/ConfigProvider/ConfigProviderOverride.js.map +1 -1
  300. package/dist/cssm/components/CustomScrollView/CustomScrollView.js +8 -4
  301. package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
  302. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +6 -2
  303. package/dist/cssm/components/CustomSelect/CustomSelect.js +6 -3
  304. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  305. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  306. package/dist/cssm/components/DateInput/DateInput.js +37 -5
  307. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  308. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
  309. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  310. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  311. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -2
  312. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  313. package/dist/cssm/components/FormField/FormField.module.css +11 -11
  314. package/dist/cssm/components/Gallery/Gallery.js +3 -5
  315. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  316. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +3 -3
  317. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  318. package/dist/cssm/components/Image/Image.js +2 -0
  319. package/dist/cssm/components/Image/Image.js.map +1 -1
  320. package/dist/cssm/components/ImageBase/ImageBase.js +35 -9
  321. package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
  322. package/dist/cssm/components/ImageBase/ImageBase.module.css +9 -0
  323. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js +91 -0
  324. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.js.map +1 -0
  325. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.module.css +134 -0
  326. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/helpers.js +35 -0
  327. package/dist/cssm/components/ImageBase/ImageBaseFloatElement/helpers.js.map +1 -0
  328. package/dist/cssm/components/ImageBase/ImageBaseOverlay/hooks.js.map +1 -1
  329. package/dist/cssm/components/ImageBase/context.js +3 -1
  330. package/dist/cssm/components/ImageBase/context.js.map +1 -1
  331. package/dist/cssm/components/ImageBase/types.js.map +1 -1
  332. package/dist/cssm/components/ImageBase/validators.js.map +1 -1
  333. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  334. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  335. package/dist/cssm/components/Pagination/Pagination.js +10 -4
  336. package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
  337. package/dist/cssm/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js +2 -1
  338. package/dist/cssm/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.js.map +1 -1
  339. package/dist/cssm/components/Popover/Popover.js +5 -93
  340. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  341. package/dist/cssm/components/Popover/usePopover.js +102 -0
  342. package/dist/cssm/components/Popover/usePopover.js.map +1 -0
  343. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  344. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
  345. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  346. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  347. package/dist/cssm/components/RichCell/RichCell.js +13 -8
  348. package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
  349. package/dist/cssm/components/RichCell/RichCell.module.css +17 -3
  350. package/dist/cssm/components/Root/Root.js +3 -1
  351. package/dist/cssm/components/Root/Root.js.map +1 -1
  352. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +27 -7
  353. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
  354. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +5 -5
  355. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  356. package/dist/cssm/components/Select/Select.js +1 -1
  357. package/dist/cssm/components/Select/Select.js.map +1 -1
  358. package/dist/cssm/components/Skeleton/Skeleton.js +2 -2
  359. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  360. package/dist/cssm/components/Slider/Slider.js +3 -1
  361. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  362. package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
  363. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  364. package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.module.css +12 -6
  365. package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -1
  366. package/dist/cssm/components/Tabs/Tabs.js +2 -82
  367. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  368. package/dist/cssm/components/Textarea/Textarea.js +2 -2
  369. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  370. package/dist/cssm/components/Textarea/useResizeTextarea.js +1 -1
  371. package/dist/cssm/components/Textarea/useResizeTextarea.js.map +1 -1
  372. package/dist/cssm/components/Tooltip/Tooltip.js +3 -2
  373. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  374. package/dist/cssm/components/UsersStack/UsersStack.js +15 -4
  375. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  376. package/dist/cssm/components/UsersStack/UsersStack.module.css +27 -17
  377. package/dist/cssm/components/View/View.js +3 -1
  378. package/dist/cssm/components/View/View.js.map +1 -1
  379. package/dist/cssm/components/View/ViewInfinite.js +3 -1
  380. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  381. package/dist/cssm/context/CalendarDirectionContext.js +7 -0
  382. package/dist/cssm/context/CalendarDirectionContext.js.map +1 -0
  383. package/dist/cssm/helpers/getMergedSameEventsByProps.js.map +1 -1
  384. package/dist/cssm/hooks/useDateInput.js.map +1 -1
  385. package/dist/cssm/hooks/useDirection.js.map +1 -1
  386. package/dist/cssm/hooks/useDraggableWithDomApi/types.js.map +1 -1
  387. package/dist/cssm/hooks/useEnsuredControl.js +1 -1
  388. package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
  389. package/dist/cssm/hooks/useExternRef.js.map +1 -1
  390. package/dist/cssm/hooks/useFocusTrap.js.map +1 -1
  391. package/dist/cssm/hooks/useGlobalOnClickOutside.js.map +1 -1
  392. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  393. package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
  394. package/dist/cssm/hooks/useNativeFormResetListener.js.map +1 -1
  395. package/dist/cssm/hooks/usePatchChildren.js.map +1 -1
  396. package/dist/cssm/hooks/usePrevious.js +1 -1
  397. package/dist/cssm/hooks/usePrevious.js.map +1 -1
  398. package/dist/cssm/hooks/useResizeObserver.js +20 -4
  399. package/dist/cssm/hooks/useResizeObserver.js.map +1 -1
  400. package/dist/cssm/hooks/useStateWithPrev.js.map +1 -1
  401. package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
  402. package/dist/cssm/hooks/useSyncHTMLWithTokens.js.map +1 -1
  403. package/dist/cssm/hooks/useTabsNavigation.js +90 -0
  404. package/dist/cssm/hooks/useTabsNavigation.js.map +1 -0
  405. package/dist/cssm/index.js +4 -0
  406. package/dist/cssm/index.js.map +1 -1
  407. package/dist/cssm/lib/animation/useCSSTransition.js.map +1 -1
  408. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js +4 -4
  409. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  410. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  411. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +10 -3
  412. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  413. package/dist/cssm/lib/utils.js.map +1 -1
  414. package/dist/cssm/styles/constants.css +1 -0
  415. package/dist/helpers/getMergedSameEventsByProps.d.ts +1 -1
  416. package/dist/helpers/getMergedSameEventsByProps.d.ts.map +1 -1
  417. package/dist/helpers/getMergedSameEventsByProps.js.map +1 -1
  418. package/dist/hooks/useDateInput.d.ts +3 -3
  419. package/dist/hooks/useDateInput.d.ts.map +1 -1
  420. package/dist/hooks/useDateInput.js.map +1 -1
  421. package/dist/hooks/useDirection.d.ts +2 -2
  422. package/dist/hooks/useDirection.d.ts.map +1 -1
  423. package/dist/hooks/useDirection.js.map +1 -1
  424. package/dist/hooks/useDraggableWithDomApi/types.d.ts +1 -1
  425. package/dist/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
  426. package/dist/hooks/useDraggableWithDomApi/types.js.map +1 -1
  427. package/dist/hooks/useEnsuredControl.js +1 -1
  428. package/dist/hooks/useEnsuredControl.js.map +1 -1
  429. package/dist/hooks/useExternRef.d.ts +1 -1
  430. package/dist/hooks/useExternRef.d.ts.map +1 -1
  431. package/dist/hooks/useExternRef.js.map +1 -1
  432. package/dist/hooks/useFocusTrap.d.ts +1 -1
  433. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  434. package/dist/hooks/useFocusTrap.js.map +1 -1
  435. package/dist/hooks/useGlobalOnClickOutside.d.ts +1 -1
  436. package/dist/hooks/useGlobalOnClickOutside.d.ts.map +1 -1
  437. package/dist/hooks/useGlobalOnClickOutside.js.map +1 -1
  438. package/dist/hooks/useKeyboardInputTracker.d.ts +1 -1
  439. package/dist/hooks/useKeyboardInputTracker.d.ts.map +1 -1
  440. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  441. package/dist/hooks/useMutationObserver.d.ts +1 -1
  442. package/dist/hooks/useMutationObserver.d.ts.map +1 -1
  443. package/dist/hooks/useMutationObserver.js.map +1 -1
  444. package/dist/hooks/useNativeFormResetListener.d.ts +1 -1
  445. package/dist/hooks/useNativeFormResetListener.d.ts.map +1 -1
  446. package/dist/hooks/useNativeFormResetListener.js.map +1 -1
  447. package/dist/hooks/usePatchChildren.d.ts +2 -2
  448. package/dist/hooks/usePatchChildren.d.ts.map +1 -1
  449. package/dist/hooks/usePatchChildren.js.map +1 -1
  450. package/dist/hooks/usePrevious.js +1 -1
  451. package/dist/hooks/usePrevious.js.map +1 -1
  452. package/dist/hooks/useResizeObserver.d.ts +1 -1
  453. package/dist/hooks/useResizeObserver.d.ts.map +1 -1
  454. package/dist/hooks/useResizeObserver.js +20 -4
  455. package/dist/hooks/useResizeObserver.js.map +1 -1
  456. package/dist/hooks/useStateWithPrev.d.ts.map +1 -1
  457. package/dist/hooks/useStateWithPrev.js.map +1 -1
  458. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts +1 -1
  459. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts.map +1 -1
  460. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -1
  461. package/dist/hooks/useSyncHTMLWithTokens.d.ts +1 -1
  462. package/dist/hooks/useSyncHTMLWithTokens.d.ts.map +1 -1
  463. package/dist/hooks/useSyncHTMLWithTokens.js.map +1 -1
  464. package/dist/hooks/useTabsNavigation.d.ts +5 -0
  465. package/dist/hooks/useTabsNavigation.d.ts.map +1 -0
  466. package/dist/hooks/useTabsNavigation.js +90 -0
  467. package/dist/hooks/useTabsNavigation.js.map +1 -0
  468. package/dist/index.d.ts +5 -1
  469. package/dist/index.d.ts.map +1 -1
  470. package/dist/index.js +4 -0
  471. package/dist/index.js.map +1 -1
  472. package/dist/lib/animation/useCSSTransition.d.ts +1 -1
  473. package/dist/lib/animation/useCSSTransition.d.ts.map +1 -1
  474. package/dist/lib/animation/useCSSTransition.js.map +1 -1
  475. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts +1 -1
  476. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts.map +1 -1
  477. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js +4 -4
  478. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  479. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +10 -1
  480. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  481. package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  482. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts +1 -1
  483. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  484. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +10 -3
  485. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  486. package/dist/lib/utils.d.ts +1 -1
  487. package/dist/lib/utils.d.ts.map +1 -1
  488. package/dist/lib/utils.js.map +1 -1
  489. package/dist/vkui.css +1 -1
  490. package/dist/vkui.css.map +1 -1
  491. package/package.json +6 -6
  492. package/src/components/ActionSheet/types.ts +1 -1
  493. package/src/components/Alert/Alert.tsx +1 -1
  494. package/src/components/AppRoot/AppRoot.tsx +1 -1
  495. package/src/components/AppRoot/AppRootContext.ts +2 -2
  496. package/src/components/AppRoot/AppRootPortal.tsx +1 -1
  497. package/src/components/AppRoot/ScrollContext.tsx +1 -1
  498. package/src/components/AspectRatio/AspectRatio.tsx +11 -4
  499. package/src/components/Calendar/Calendar.tsx +90 -72
  500. package/src/components/CalendarDay/CalendarDay.module.css +4 -0
  501. package/src/components/CalendarDay/CalendarDay.tsx +10 -1
  502. package/src/components/CalendarDays/CalendarDays.tsx +3 -0
  503. package/src/components/CalendarHeader/CalendarHeader.tsx +17 -2
  504. package/src/components/CalendarRange/CalendarRange.tsx +110 -84
  505. package/src/components/CalendarTime/CalendarTime.tsx +104 -16
  506. package/src/components/CardScroll/CardScroll.tsx +8 -2
  507. package/src/components/CarouselBase/Bullets.tsx +36 -0
  508. package/src/components/{BaseGallery/BaseGallery.module.css → CarouselBase/CarouselBase.module.css} +19 -1
  509. package/src/components/CarouselBase/CarouselBase.tsx +502 -0
  510. package/src/components/CarouselBase/CarouselViewPort.tsx +54 -0
  511. package/src/components/CarouselBase/ScrollArrows.tsx +80 -0
  512. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/constants.ts +4 -0
  513. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/helpers.ts +67 -7
  514. package/src/components/{BaseGallery/CarouselBase → CarouselBase}/hooks.ts +2 -2
  515. package/src/components/CarouselBase/types.ts +135 -0
  516. package/src/components/ChipsInput/ChipsInput.tsx +1 -1
  517. package/src/components/ChipsInput/useChipsInput.ts +2 -2
  518. package/src/components/ChipsSelect/ChipsSelect.tsx +1 -1
  519. package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
  520. package/src/components/Clickable/useState.tsx +2 -2
  521. package/src/components/Clickable/useStateWithDelay.tsx +1 -1
  522. package/src/components/ConfigProvider/ConfigProvider.tsx +8 -35
  523. package/src/components/ConfigProvider/ConfigProviderContext.tsx +36 -0
  524. package/src/components/ConfigProvider/ConfigProviderOverride.tsx +2 -5
  525. package/src/components/CustomScrollView/CustomScrollView.module.css +6 -2
  526. package/src/components/CustomScrollView/CustomScrollView.tsx +13 -2
  527. package/src/components/CustomSelect/CustomSelect.tsx +12 -4
  528. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -1
  529. package/src/components/DateInput/DateInput.tsx +62 -5
  530. package/src/components/DateRangeInput/DateRangeInput.tsx +22 -2
  531. package/src/components/Epic/Epic.tsx +5 -3
  532. package/src/components/FixedLayout/FixedLayout.tsx +1 -2
  533. package/src/components/FormField/FormField.module.css +11 -11
  534. package/src/components/Gallery/Gallery.tsx +4 -10
  535. package/src/components/HorizontalScroll/HorizontalScroll.tsx +12 -2
  536. package/src/components/Image/Image.tsx +4 -0
  537. package/src/components/ImageBase/ImageBase.module.css +9 -0
  538. package/src/components/ImageBase/ImageBase.tsx +69 -10
  539. package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.module.css +134 -0
  540. package/src/components/ImageBase/ImageBaseFloatElement/ImageBaseFloatElement.tsx +168 -0
  541. package/src/components/ImageBase/ImageBaseFloatElement/helpers.ts +44 -0
  542. package/src/components/ImageBase/ImageBaseOverlay/hooks.ts +1 -1
  543. package/src/components/ImageBase/context.ts +2 -0
  544. package/src/components/ImageBase/types.ts +2 -0
  545. package/src/components/ImageBase/validators.ts +5 -4
  546. package/src/components/ModalCardBase/ModalCardBase.tsx +1 -1
  547. package/src/components/ModalRoot/ModalRootContext.tsx +3 -1
  548. package/src/components/Pagination/Pagination.tsx +23 -4
  549. package/src/components/Pagination/PaginationNavigationButton/PaginationNavigationButton.tsx +4 -2
  550. package/src/components/Popover/Popover.tsx +6 -166
  551. package/src/components/Popover/usePopover.tsx +183 -0
  552. package/src/components/Popper/Popper.tsx +1 -1
  553. package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
  554. package/src/components/Removable/Removable.tsx +2 -2
  555. package/src/components/RichCell/RichCell.module.css +17 -3
  556. package/src/components/RichCell/RichCell.tsx +28 -8
  557. package/src/components/Root/Root.tsx +4 -2
  558. package/src/components/SegmentedControl/SegmentedControl.tsx +46 -14
  559. package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +14 -10
  560. package/src/components/Select/Select.tsx +1 -0
  561. package/src/components/Skeleton/Skeleton.tsx +3 -3
  562. package/src/components/Slider/Slider.tsx +12 -0
  563. package/src/components/Snackbar/Snackbar.tsx +1 -1
  564. package/src/components/Snackbar/subcomponents/Basic/Basic.module.css +12 -6
  565. package/src/components/SplitCol/SplitColContext.tsx +1 -1
  566. package/src/components/Tabs/Tabs.tsx +2 -99
  567. package/src/components/Textarea/Textarea.tsx +2 -2
  568. package/src/components/Textarea/useResizeTextarea.ts +3 -3
  569. package/src/components/Tooltip/Tooltip.tsx +3 -0
  570. package/src/components/UsersStack/UsersStack.module.css +27 -17
  571. package/src/components/UsersStack/UsersStack.tsx +24 -3
  572. package/src/components/View/View.tsx +9 -5
  573. package/src/components/View/ViewInfinite.tsx +5 -3
  574. package/src/context/CalendarDirectionContext.ts +12 -0
  575. package/src/helpers/getMergedSameEventsByProps.ts +1 -1
  576. package/src/hooks/useDateInput.ts +5 -5
  577. package/src/hooks/useDirection.ts +3 -3
  578. package/src/hooks/useDraggableWithDomApi/types.ts +1 -1
  579. package/src/hooks/useEnsuredControl.ts +1 -1
  580. package/src/hooks/useExternRef.ts +2 -2
  581. package/src/hooks/useFocusTrap.ts +1 -1
  582. package/src/hooks/useGlobalOnClickOutside.ts +1 -1
  583. package/src/hooks/useKeyboardInputTracker.ts +1 -1
  584. package/src/hooks/useMutationObserver.ts +1 -1
  585. package/src/hooks/useNativeFormResetListener.ts +1 -1
  586. package/src/hooks/usePatchChildren.ts +2 -9
  587. package/src/hooks/usePrevious.ts +1 -1
  588. package/src/hooks/useResizeObserver.ts +30 -6
  589. package/src/hooks/useStateWithPrev.ts +1 -5
  590. package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +1 -1
  591. package/src/hooks/useSyncHTMLWithTokens.ts +1 -1
  592. package/src/hooks/useTabsNavigation.ts +104 -0
  593. package/src/index.ts +7 -0
  594. package/src/lib/animation/useCSSTransition.ts +1 -1
  595. package/src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts +9 -9
  596. package/src/lib/floating/useFloatingWithInteractions/types.ts +15 -5
  597. package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +7 -2
  598. package/src/lib/utils.ts +2 -2
  599. package/src/styles/constants.css +1 -0
  600. package/dist/components/BaseGallery/BaseGallery.d.ts +0 -4
  601. package/dist/components/BaseGallery/BaseGallery.d.ts.map +0 -1
  602. package/dist/components/BaseGallery/BaseGallery.js +0 -321
  603. package/dist/components/BaseGallery/BaseGallery.js.map +0 -1
  604. package/dist/components/BaseGallery/CarouselBase/CarouselBase.d.ts +0 -4
  605. package/dist/components/BaseGallery/CarouselBase/CarouselBase.d.ts.map +0 -1
  606. package/dist/components/BaseGallery/CarouselBase/CarouselBase.js.map +0 -1
  607. package/dist/components/BaseGallery/CarouselBase/constants.d.ts.map +0 -1
  608. package/dist/components/BaseGallery/CarouselBase/constants.js.map +0 -1
  609. package/dist/components/BaseGallery/CarouselBase/helpers.d.ts.map +0 -1
  610. package/dist/components/BaseGallery/CarouselBase/helpers.js.map +0 -1
  611. package/dist/components/BaseGallery/CarouselBase/hooks.d.ts.map +0 -1
  612. package/dist/components/BaseGallery/CarouselBase/hooks.js.map +0 -1
  613. package/dist/components/BaseGallery/CarouselBase/types.d.ts +0 -54
  614. package/dist/components/BaseGallery/CarouselBase/types.d.ts.map +0 -1
  615. package/dist/components/BaseGallery/CarouselBase/types.js.map +0 -1
  616. package/dist/components/BaseGallery/helpers.d.ts +0 -13
  617. package/dist/components/BaseGallery/helpers.d.ts.map +0 -1
  618. package/dist/components/BaseGallery/helpers.js +0 -24
  619. package/dist/components/BaseGallery/helpers.js.map +0 -1
  620. package/dist/components/BaseGallery/types.d.ts +0 -55
  621. package/dist/components/BaseGallery/types.d.ts.map +0 -1
  622. package/dist/components/BaseGallery/types.js.map +0 -1
  623. package/dist/cssm/components/BaseGallery/BaseGallery.js +0 -293
  624. package/dist/cssm/components/BaseGallery/BaseGallery.js.map +0 -1
  625. package/dist/cssm/components/BaseGallery/CarouselBase/CarouselBase.js.map +0 -1
  626. package/dist/cssm/components/BaseGallery/CarouselBase/constants.js.map +0 -1
  627. package/dist/cssm/components/BaseGallery/CarouselBase/helpers.js.map +0 -1
  628. package/dist/cssm/components/BaseGallery/CarouselBase/hooks.js.map +0 -1
  629. package/dist/cssm/components/BaseGallery/CarouselBase/types.js +0 -3
  630. package/dist/cssm/components/BaseGallery/CarouselBase/types.js.map +0 -1
  631. package/dist/cssm/components/BaseGallery/helpers.js +0 -24
  632. package/dist/cssm/components/BaseGallery/helpers.js.map +0 -1
  633. package/dist/cssm/components/BaseGallery/types.js +0 -3
  634. package/dist/cssm/components/BaseGallery/types.js.map +0 -1
  635. package/dist/cssm/hooks/useObjectMemo.js +0 -15
  636. package/dist/cssm/hooks/useObjectMemo.js.map +0 -1
  637. package/dist/hooks/useObjectMemo.d.ts +0 -5
  638. package/dist/hooks/useObjectMemo.d.ts.map +0 -1
  639. package/dist/hooks/useObjectMemo.js +0 -15
  640. package/dist/hooks/useObjectMemo.js.map +0 -1
  641. package/src/components/BaseGallery/BaseGallery.tsx +0 -380
  642. package/src/components/BaseGallery/CarouselBase/CarouselBase.tsx +0 -399
  643. package/src/components/BaseGallery/CarouselBase/types.ts +0 -56
  644. package/src/components/BaseGallery/helpers.ts +0 -46
  645. package/src/components/BaseGallery/types.ts +0 -61
  646. package/src/hooks/useObjectMemo.ts +0 -16
  647. /package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/constants.d.ts +0 -0
  648. /package/dist/components/{BaseGallery/CarouselBase → CarouselBase}/types.js +0 -0
  649. /package/dist/{components/BaseGallery → cssm/components/CarouselBase}/types.js +0 -0
@@ -10,6 +10,7 @@ import { useExternRef } from '../../hooks/useExternRef';
10
10
  import { callMultiple } from '../../lib/callMultiple';
11
11
  import { format, isMatch, parse } from '../../lib/date';
12
12
  import type { PlacementWithAuto } from '../../lib/floating';
13
+ import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
13
14
  import type { HasRootRef } from '../../types';
14
15
  import { Calendar, type CalendarProps, type CalendarTestsProps } from '../Calendar/Calendar';
15
16
  import { FormField, type FormFieldProps } from '../FormField/FormField';
@@ -18,6 +19,7 @@ import { InputLike } from '../InputLike/InputLike';
18
19
  import { InputLikeDivider } from '../InputLike/InputLikeDivider';
19
20
  import { Popper } from '../Popper/Popper';
20
21
  import { Text } from '../Typography/Text/Text';
22
+ import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';
21
23
  import '../InputLike/InputLike.module.css'; // Reorder css
22
24
  import styles from './DateInput.module.css';
23
25
 
@@ -27,10 +29,25 @@ const sizeYClassNames = {
27
29
  };
28
30
 
29
31
  export type DateInputPropsTestsProps = {
32
+ /**
33
+ * Передает атрибут `data-testid` для поля ввода дня
34
+ */
30
35
  dayFieldTestId?: string;
36
+ /**
37
+ * Передает атрибут `data-testid` для поля ввода месяца
38
+ */
31
39
  monthFieldTestId?: string;
40
+ /**
41
+ * Передает атрибут `data-testid` для поля ввода года
42
+ */
32
43
  yearFieldTestId?: string;
44
+ /**
45
+ * Передает атрибут `data-testid` для поля ввода часа
46
+ */
33
47
  hourFieldTestId?: string;
48
+ /**
49
+ * Передает атрибут `data-testid` для поля ввода минут
50
+ */
34
51
  minuteFieldTestId?: string;
35
52
  };
36
53
 
@@ -45,6 +62,7 @@ export interface DateInputProps
45
62
  | 'onChange'
46
63
  | 'value'
47
64
  | 'doneButtonText'
65
+ | 'DoneButton'
48
66
  | 'weekStartsOn'
49
67
  | 'disablePickers'
50
68
  | 'changeHoursLabel'
@@ -69,6 +87,9 @@ export interface DateInputProps
69
87
  HasRootRef<HTMLDivElement>,
70
88
  Omit<FormFieldProps, 'maxHeight'>,
71
89
  DateInputPropsTestsProps {
90
+ /**
91
+ * Передает атрибуты `data-testid` для интерактивных элементов в календаре
92
+ */
72
93
  calendarTestsProps?: CalendarTestsProps;
73
94
  calendarPlacement?: PlacementWithAuto;
74
95
  closeOnChange?: boolean;
@@ -76,6 +97,10 @@ export interface DateInputProps
76
97
  showCalendarLabel?: string;
77
98
  disableCalendar?: boolean;
78
99
  onCalendarOpenChanged?: (opened: boolean) => void;
100
+ /**
101
+ * Колбэк срабатывающий при нажатии на кнопку "Done". Используется совместно с флагом `enableTime`.
102
+ */
103
+ onApply?: (value?: Date) => void;
79
104
  }
80
105
 
81
106
  const elementsConfig = (index: number) => {
@@ -128,12 +153,13 @@ export const DateInput = ({
128
153
  disablePast,
129
154
  minDateTime,
130
155
  maxDateTime,
131
- value,
156
+ value: valueProp,
132
157
  onChange,
133
158
  calendarPlacement = 'bottom-start',
134
159
  style,
135
160
  className,
136
161
  doneButtonText,
162
+ DoneButton,
137
163
  closeOnChange = true,
138
164
  disablePickers,
139
165
  getRootRef,
@@ -168,6 +194,8 @@ export const DateInput = ({
168
194
  yearFieldTestId,
169
195
  hourFieldTestId,
170
196
  minuteFieldTestId,
197
+ id,
198
+ onApply,
171
199
  ...props
172
200
  }: DateInputProps): React.ReactNode => {
173
201
  const daysRef = React.useRef<HTMLSpanElement>(null);
@@ -175,9 +203,17 @@ export const DateInput = ({
175
203
  const yearsRef = React.useRef<HTMLSpanElement>(null);
176
204
  const hoursRef = React.useRef<HTMLSpanElement>(null);
177
205
  const minutesRef = React.useRef<HTMLSpanElement>(null);
206
+ const [value, setValue] = React.useState<Date | undefined>(valueProp);
178
207
 
179
208
  const maxElement = enableTime ? 4 : 2;
180
209
 
210
+ useIsomorphicLayoutEffect(
211
+ function updateLocalValue() {
212
+ setValue(valueProp);
213
+ },
214
+ [valueProp],
215
+ );
216
+
181
217
  const onInternalValueChange = React.useCallback(
182
218
  (internalValue: string[]) => {
183
219
  for (let i = 0; i <= maxElement; i += 1) {
@@ -236,16 +272,35 @@ export const DateInput = ({
236
272
 
237
273
  const handleRootRef = useExternRef(rootRef, getRootRef);
238
274
 
275
+ useIsomorphicLayoutEffect(
276
+ function resetValueOnCloseCalendar() {
277
+ if (!open) {
278
+ setValue(valueProp);
279
+ }
280
+ },
281
+ [open, valueProp],
282
+ );
283
+
239
284
  const onCalendarChange = React.useCallback(
240
285
  (value?: Date | undefined) => {
286
+ if (enableTime) {
287
+ setValue(value);
288
+ return;
289
+ }
241
290
  onChange?.(value);
242
- if (closeOnChange && !enableTime) {
291
+ if (closeOnChange) {
243
292
  removeFocusFromField();
244
293
  }
245
294
  },
246
295
  [onChange, removeFocusFromField, closeOnChange, enableTime],
247
296
  );
248
297
 
298
+ const onDoneButtonClick = React.useCallback(() => {
299
+ onApply?.(value);
300
+ onChange?.(value);
301
+ removeFocusFromField();
302
+ }, [onApply, onChange, removeFocusFromField, value]);
303
+
249
304
  return (
250
305
  <FormField
251
306
  style={style}
@@ -267,8 +322,9 @@ export const DateInput = ({
267
322
  onFocus={callMultiple(handleFieldEnter, onFocus)}
268
323
  {...props}
269
324
  >
270
- <input
271
- type="hidden"
325
+ <VisuallyHidden
326
+ id={id}
327
+ Component="input"
272
328
  name={name}
273
329
  value={value ? format(value, enableTime ? "dd.MM.yyyy'T'HH:mm" : 'dd.MM.yyyy') : ''}
274
330
  />
@@ -348,9 +404,10 @@ export const DateInput = ({
348
404
  disablePast={disablePast}
349
405
  disableFuture={disableFuture}
350
406
  shouldDisableDate={shouldDisableDate}
351
- onDoneButtonClick={removeFocusFromField}
407
+ onDoneButtonClick={onDoneButtonClick}
352
408
  getRootRef={calendarRef}
353
409
  doneButtonText={doneButtonText}
410
+ DoneButton={DoneButton}
354
411
  disablePickers={disablePickers}
355
412
  changeHoursLabel={changeHoursLabel}
356
413
  changeMinutesLabel={changeMinutesLabel}
@@ -33,13 +33,28 @@ const sizeYClassNames = {
33
33
  };
34
34
 
35
35
  type DateTestsProps = {
36
+ /**
37
+ * Передает атрибут `data-testid` для поля ввода дня
38
+ */
36
39
  day?: string;
40
+ /**
41
+ * Передает атрибут `data-testid` для поля ввода месяца
42
+ */
37
43
  month?: string;
44
+ /**
45
+ * Передает атрибут `data-testid` для поля ввода года
46
+ */
38
47
  year?: string;
39
48
  };
40
49
 
41
50
  export type DateRangeInputTestsProps = {
51
+ /**
52
+ * Передает атрибуты `data-testid` для полей ввода начальной даты
53
+ */
42
54
  startDateTestsProps?: DateTestsProps;
55
+ /**
56
+ * Передает атрибуты `data-testid` для полей ввода конечной даты
57
+ */
43
58
  endDateTestsProps?: DateTestsProps;
44
59
  };
45
60
 
@@ -66,6 +81,9 @@ export interface DateRangeInputProps
66
81
  HasRootRef<HTMLDivElement>,
67
82
  Omit<FormFieldProps, 'maxHeight'>,
68
83
  DateRangeInputTestsProps {
84
+ /**
85
+ * Передает атрибуты `data-testid` для интерактивных элементов в календаре
86
+ */
69
87
  calendarTestsProps?: CalendarRangeTestsProps;
70
88
  calendarPlacement?: PlacementWithAuto;
71
89
  closeOnChange?: boolean;
@@ -162,6 +180,7 @@ export const DateRangeInput = ({
162
180
  calendarTestsProps,
163
181
  startDateTestsProps,
164
182
  endDateTestsProps,
183
+ id,
165
184
  ...props
166
185
  }: DateRangeInputProps): React.ReactNode => {
167
186
  const daysStartRef = React.useRef<HTMLSpanElement>(null);
@@ -282,8 +301,9 @@ export const DateRangeInput = ({
282
301
  onFocus={callMultiple(handleFieldEnter, onFocus)}
283
302
  {...props}
284
303
  >
285
- <input
286
- type="hidden"
304
+ <VisuallyHidden
305
+ id={id}
306
+ Component="input"
287
307
  name={name}
288
308
  value={
289
309
  value
@@ -2,7 +2,7 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { classNames } from '@vkontakte/vkjs';
5
- import { getNavId } from '../../lib/getNavId';
5
+ import { getNavId, type NavIdProps } from '../../lib/getNavId';
6
6
  import { warnOnce } from '../../lib/warnOnce';
7
7
  import type { HTMLAttributesWithRootRef } from '../../types';
8
8
  import { RootComponent } from '../RootComponent/RootComponent';
@@ -30,8 +30,10 @@ export const Epic = ({
30
30
 
31
31
  const story =
32
32
  (React.Children.toArray(children).find(
33
- (story) => React.isValidElement(story) && getNavId(story.props, warn) === activeStory,
34
- ) as React.ReactElement | undefined) ?? null;
33
+ (story) =>
34
+ React.isValidElement(story) &&
35
+ getNavId((story as React.ReactElement<NavIdProps>).props, warn) === activeStory,
36
+ ) as Array<React.ReactElement<NavIdProps>> | undefined) ?? null;
35
37
 
36
38
  return (
37
39
  <RootComponent
@@ -3,7 +3,6 @@
3
3
  import { useCallback } from 'react';
4
4
  import * as React from 'react';
5
5
  import { classNames } from '@vkontakte/vkjs';
6
- import { useGlobalEventListener } from '../../hooks/useGlobalEventListener';
7
6
  import { usePlatform } from '../../hooks/usePlatform';
8
7
  import { useResizeObserver } from '../../hooks/useResizeObserver';
9
8
  import { useDOM } from '../../lib/dom';
@@ -92,7 +91,7 @@ export const FixedLayout = ({
92
91
  };
93
92
  React.useEffect(doResize, [colRef, platform, ref, useParentWidth]);
94
93
 
95
- useGlobalEventListener(window, 'resize', doResize);
94
+ useResizeObserver(window, doResize);
96
95
  useResizeObserver(useParentWidth ? parentRef : colRef, doResize);
97
96
 
98
97
  return (
@@ -103,7 +103,7 @@
103
103
  border-radius: inherit;
104
104
  }
105
105
 
106
- .modeDefault .border {
106
+ .modeDefault > .border {
107
107
  border-color: var(--vkui--color_field_border_alpha);
108
108
  }
109
109
 
@@ -115,7 +115,7 @@
115
115
  background-color: var(--vkui--color_field_background);
116
116
  }
117
117
 
118
- .modeDefault.hover .border {
118
+ .modeDefault.hover > .border {
119
119
  border-color: var(--vkui--color_field_border_alpha--hover);
120
120
  z-index: var(--vkui_internal--z_index_form_field_border_hover);
121
121
  }
@@ -124,7 +124,7 @@
124
124
  * useFocusVisibleClassName()
125
125
  */
126
126
  /* increase specificity for selects */
127
- .focusVisible.focusVisible .border {
127
+ .focusVisible.focusVisible > .border {
128
128
  border-color: var(--vkui--color_stroke_accent);
129
129
  }
130
130
 
@@ -134,11 +134,11 @@
134
134
  * [start]
135
135
  */
136
136
  /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */
137
- :global(.vkuiInternalFormItem--status-error) .modeDefault .border,
137
+ :global(.vkuiInternalFormItem--status-error) .modeDefault > .border,
138
138
  /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */
139
- :global(.vkuiInternalFormItem--status-error) .focusVisible .border,
140
- .statusError.modeDefault .border,
141
- .statusError.focusVisible .border {
139
+ :global(.vkuiInternalFormItem--status-error) .focusVisible > .border,
140
+ .statusError.modeDefault > .border,
141
+ .statusError.focusVisible > .border {
142
142
  border-color: var(--vkui--color_stroke_negative);
143
143
  z-index: var(--vkui_internal--z_index_form_field_status);
144
144
  }
@@ -151,11 +151,11 @@
151
151
 
152
152
  /* increase specificity to cover --mode-default case */
153
153
  /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */
154
- :global(.vkuiInternalFormItem--status-valid) .modeDefault .border,
154
+ :global(.vkuiInternalFormItem--status-valid) .modeDefault > .border,
155
155
  /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */
156
- :global(.vkuiInternalFormItem--status-valid) .focusVisible .border,
157
- .statusValid.modeDefault .border,
158
- .statusValid.focusVisible .border {
156
+ :global(.vkuiInternalFormItem--status-valid) .focusVisible > .border,
157
+ .statusValid.modeDefault > .border,
158
+ .statusValid.focusVisible > .border {
159
159
  border-color: var(--vkui--color_stroke_positive);
160
160
  z-index: var(--vkui_internal--z_index_form_field_status);
161
161
  }
@@ -4,16 +4,13 @@ import * as React from 'react';
4
4
  import { clamp } from '../../helpers/math';
5
5
  import { useIsClient } from '../../hooks/useIsClient';
6
6
  import { callMultiple } from '../../lib/callMultiple';
7
- import { BaseGallery } from '../BaseGallery/BaseGallery';
8
- import { CarouselBase } from '../BaseGallery/CarouselBase/CarouselBase';
9
- import type { BaseGalleryProps } from '../BaseGallery/types';
7
+ import { CarouselBase } from '../CarouselBase/CarouselBase';
8
+ import type { BaseGalleryProps } from '../CarouselBase/types';
10
9
  import { useAutoPlay } from './hooks';
11
10
 
12
11
  export interface GalleryProps extends BaseGalleryProps {
13
12
  initialSlideIndex?: number;
14
13
  timeout?: number;
15
- // Отвечает за зацикливание слайдов
16
- looped?: boolean;
17
14
  }
18
15
 
19
16
  /**
@@ -25,7 +22,6 @@ export const Gallery = ({
25
22
  timeout = 0,
26
23
  onChange,
27
24
  bullets,
28
- looped,
29
25
  onDragStart,
30
26
  onDragEnd,
31
27
  ...props
@@ -72,10 +68,8 @@ export const Gallery = ({
72
68
  return null;
73
69
  }
74
70
 
75
- const Component = looped ? CarouselBase : BaseGallery;
76
-
77
71
  return (
78
- <Component
72
+ <CarouselBase
79
73
  dragDisabled={isControlled && !onChange}
80
74
  {...props}
81
75
  onDragStart={callMultiple(onDragStart, autoPlayControls.pause)}
@@ -85,6 +79,6 @@ export const Gallery = ({
85
79
  onChange={handleChange}
86
80
  >
87
81
  {slides}
88
- </Component>
82
+ </CarouselBase>
89
83
  );
90
84
  };
@@ -52,6 +52,14 @@ export interface HorizontalScrollProps
52
52
  * По умолчанию прокручивается как любой горизонтальный контент через shift.
53
53
  */
54
54
  scrollOnAnyWheel?: boolean;
55
+ /**
56
+ * Передает атрибут `data-testid` для кнопки прокрутки горизонтального скролла в направлении предыдущего элемента
57
+ */
58
+ prevButtonTestId?: string;
59
+ /**
60
+ * Передает атрибут `data-testid` для кнопки прокрутки горизонтального скролла в направлении следующего элемента
61
+ */
62
+ nextButtonTestId?: string;
55
63
  }
56
64
 
57
65
  /**
@@ -167,6 +175,8 @@ export const HorizontalScroll = ({
167
175
  scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,
168
176
  getRef,
169
177
  scrollOnAnyWheel = false,
178
+ prevButtonTestId,
179
+ nextButtonTestId,
170
180
  ...restProps
171
181
  }: HorizontalScrollProps): React.ReactNode => {
172
182
  const [canScrollLeft, setCanScrollLeft] = React.useState(false);
@@ -273,7 +283,7 @@ export const HorizontalScroll = ({
273
283
  >
274
284
  {showArrows && (hasPointer || hasPointer === undefined) && canScrollLeft && (
275
285
  <ScrollArrow
276
- data-testid={process.env.NODE_ENV === 'test' ? 'ScrollArrowLeft' : undefined}
286
+ data-testid={prevButtonTestId}
277
287
  size={arrowSize}
278
288
  offsetY={arrowOffsetY}
279
289
  direction="left"
@@ -286,7 +296,7 @@ export const HorizontalScroll = ({
286
296
  )}
287
297
  {showArrows && (hasPointer || hasPointer === undefined) && canScrollRight && (
288
298
  <ScrollArrow
289
- data-testid={process.env.NODE_ENV === 'test' ? 'ScrollArrowRight' : undefined}
299
+ data-testid={nextButtonTestId}
290
300
  size={arrowSize}
291
301
  offsetY={arrowOffsetY}
292
302
  direction="right"
@@ -108,6 +108,7 @@ const getBorderRadiusBySizeInPx = (
108
108
  export const Image: React.FC<ImageProps> & {
109
109
  Badge: typeof ImageBadge;
110
110
  Overlay: typeof ImageBase.Overlay;
111
+ FloatElement: typeof ImageBase.FloatElement;
111
112
  } = ({
112
113
  size = IMAGE_DEFAULT_SIZE,
113
114
  borderRadius = 'm',
@@ -175,3 +176,6 @@ Image.Badge.displayName = 'Image.Badge';
175
176
 
176
177
  Image.Overlay = ImageBase.Overlay;
177
178
  Image.Overlay.displayName = 'Image.Overlay';
179
+
180
+ Image.FloatElement = ImageBase.FloatElement;
181
+ Image.FloatElement.displayName = 'Image.FloatElement';
@@ -71,6 +71,15 @@
71
71
  object-fit: scale-down;
72
72
  }
73
73
 
74
+ .withObjectPosition {
75
+ --vkui_internal--ImageBase_object_position_default: 50% 50%;
76
+
77
+ object-position: var(
78
+ --vkui_internal--ImageBase_object_position,
79
+ var(--vkui_internal--ImageBase_object_position_default)
80
+ );
81
+ }
82
+
74
83
  .loaded .img {
75
84
  visibility: visible;
76
85
  }
@@ -1,13 +1,27 @@
1
1
  'use client';
2
2
 
3
+ import { useRef } from 'react';
3
4
  import * as React from 'react';
4
5
  import { classNames } from '@vkontakte/vkjs';
6
+ import { mergeStyle } from '../../helpers/mergeStyle';
5
7
  import { useExternRef } from '../../hooks/useExternRef';
6
8
  import { minOr } from '../../lib/comparing';
7
9
  import { getFetchPriorityProp } from '../../lib/utils';
8
- import type { AnchorHTMLAttributesOnly, HasRef, HasRootRef, LiteralUnion } from '../../types';
10
+ import type {
11
+ AnchorHTMLAttributesOnly,
12
+ CSSCustomProperties,
13
+ HasRef,
14
+ HasRootRef,
15
+ LiteralUnion,
16
+ } from '../../types';
9
17
  import { Clickable } from '../Clickable/Clickable';
10
18
  import { ImageBaseBadge, type ImageBaseBadgeProps } from './ImageBaseBadge/ImageBaseBadge';
19
+ import {
20
+ type FloatElementIndentation,
21
+ type FloatElementPlacement,
22
+ ImageBaseFloatElement,
23
+ type ImageBaseFloatElementProps,
24
+ } from './ImageBaseFloatElement/ImageBaseFloatElement';
11
25
  import { ImageBaseOverlay, type ImageBaseOverlayProps } from './ImageBaseOverlay/ImageBaseOverlay';
12
26
  import { ImageBaseContext } from './context';
13
27
  import type { ImageBaseContextProps, ImageBaseExpectedIconProps, ImageBaseSize } from './types';
@@ -20,6 +34,9 @@ export type {
20
34
  ImageBaseBadgeProps,
21
35
  ImageBaseOverlayProps,
22
36
  ImageBaseContextProps,
37
+ ImageBaseFloatElementProps,
38
+ FloatElementPlacement,
39
+ FloatElementIndentation,
23
40
  };
24
41
 
25
42
  export {
@@ -84,6 +101,11 @@ export interface ImageBaseProps
84
101
  * Подробнее можно почитать в [документации](https://developer.mozilla.org/ru/docs/Web/CSS/object-fit)
85
102
  */
86
103
  objectFit?: React.CSSProperties['objectFit'];
104
+ /**
105
+ * Пользовательское значения стиля object-position
106
+ * Подробнее можно почитать в [документации](https://developer.mozilla.org/ru/docs/Web/CSS/object-position)
107
+ */
108
+ objectPosition?: React.CSSProperties['objectPosition'];
87
109
  /**
88
110
  * Флаг для сохранения пропорций картинки.
89
111
  * Для корректной работы необходимо задать размеры хотя бы одной стороны картинки
@@ -125,6 +147,7 @@ const sizeToNumber = (size: number | string | undefined): number | undefined =>
125
147
  export const ImageBase: React.FC<ImageBaseProps> & {
126
148
  Badge: typeof ImageBaseBadge;
127
149
  Overlay: typeof ImageBaseOverlay;
150
+ FloatElement: typeof ImageBaseFloatElement;
128
151
  } = ({
129
152
  alt,
130
153
  crossOrigin,
@@ -149,10 +172,13 @@ export const ImageBase: React.FC<ImageBaseProps> & {
149
172
  onError,
150
173
  withTransparentBackground,
151
174
  objectFit = 'cover',
175
+ objectPosition,
152
176
  keepAspectRatio = false,
177
+ getRootRef,
153
178
  ...restProps
154
179
  }: ImageBaseProps) => {
155
180
  const size = sizeProp ?? minOr([sizeToNumber(widthSize), sizeToNumber(heightSize)], defaultSize);
181
+ const wrapperRef = useExternRef(getRootRef);
156
182
 
157
183
  const width = widthSize ?? (keepAspectRatio ? undefined : size);
158
184
  const height = heightSize ?? (keepAspectRatio ? undefined : size);
@@ -160,6 +186,9 @@ export const ImageBase: React.FC<ImageBaseProps> & {
160
186
  const [loaded, setLoaded] = React.useState(false);
161
187
  const [failed, setFailed] = React.useState(false);
162
188
 
189
+ const mouseOverHandlersRef = useRef<VoidFunction[]>([]);
190
+ const mouseOutHandlersRef = useRef<VoidFunction[]>([]);
191
+
163
192
  const hasSrc = src || srcSet;
164
193
  const needShowFallbackIcon = (failed || !hasSrc) && React.isValidElement(fallbackIconProp);
165
194
 
@@ -205,8 +234,38 @@ export const ImageBase: React.FC<ImageBaseProps> & {
205
234
  [imgRef, loaded],
206
235
  );
207
236
 
237
+ const onMouseOver = () => {
238
+ mouseOverHandlersRef.current.forEach((fn) => fn());
239
+ };
240
+
241
+ const onMouseOut = () => {
242
+ mouseOutHandlersRef.current.forEach((fn) => fn());
243
+ };
244
+
245
+ const contextValue = React.useMemo(
246
+ () => ({
247
+ size,
248
+ onMouseOverHandlers: mouseOverHandlersRef.current,
249
+ onMouseOutHandlers: mouseOutHandlersRef.current,
250
+ }),
251
+ [size],
252
+ );
253
+
254
+ const imgStyles: CSSCustomProperties<string | number> | undefined = objectPosition
255
+ ? {
256
+ '--vkui_internal--ImageBase_object_position': objectPosition,
257
+ }
258
+ : undefined;
259
+
260
+ const keepAspectRationStyles = keepAspectRatio
261
+ ? {
262
+ width: widthImg || width,
263
+ height: heightImg || height,
264
+ }
265
+ : undefined;
266
+
208
267
  return (
209
- <ImageBaseContext.Provider value={{ size }}>
268
+ <ImageBaseContext.Provider value={contextValue}>
210
269
  <Clickable
211
270
  baseStyle={{ width, height }}
212
271
  baseClassName={classNames(
@@ -214,6 +273,9 @@ export const ImageBase: React.FC<ImageBaseProps> & {
214
273
  loaded && styles.loaded,
215
274
  withTransparentBackground && styles.transparentBackground,
216
275
  )}
276
+ getRootRef={wrapperRef}
277
+ onMouseOver={onMouseOver}
278
+ onMouseOut={onMouseOut}
217
279
  {...restProps}
218
280
  >
219
281
  {hasSrc && (
@@ -223,20 +285,14 @@ export const ImageBase: React.FC<ImageBaseProps> & {
223
285
  className={classNames(
224
286
  styles.img,
225
287
  getObjectFitClassName(objectFit),
288
+ objectPosition && styles.withObjectPosition,
226
289
  keepAspectRatio && styles.imgKeepRatio,
227
290
  )}
228
291
  crossOrigin={crossOrigin}
229
292
  decoding={decoding}
230
293
  loading={loading}
231
294
  referrerPolicy={referrerPolicy}
232
- style={
233
- keepAspectRatio
234
- ? {
235
- width: widthImg || width,
236
- height: heightImg || height,
237
- }
238
- : undefined
239
- }
295
+ style={mergeStyle(keepAspectRationStyles, imgStyles)}
240
296
  sizes={sizes}
241
297
  src={src}
242
298
  srcSet={srcSet}
@@ -263,3 +319,6 @@ ImageBase.Badge.displayName = 'ImageBase.Badge';
263
319
 
264
320
  ImageBase.Overlay = ImageBaseOverlay;
265
321
  ImageBase.Overlay.displayName = 'ImageBase.Overlay';
322
+
323
+ ImageBase.FloatElement = ImageBaseFloatElement;
324
+ ImageBase.FloatElement.displayName = 'ImageBase.FloatElement';