@vkontakte/vkui 7.0.0-dev-efd91c.0 → 7.0.0-dev-efd91c.2

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 (620) hide show
  1. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  2. package/dist/components/Accordion/Accordion.js +9 -5
  3. package/dist/components/Accordion/Accordion.js.map +1 -1
  4. package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  5. package/dist/components/ActionSheet/ActionSheet.js +20 -14
  6. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  7. package/dist/components/Alert/Alert.d.ts +3 -1
  8. package/dist/components/Alert/Alert.d.ts.map +1 -1
  9. package/dist/components/Alert/Alert.js +61 -56
  10. package/dist/components/Alert/Alert.js.map +1 -1
  11. package/dist/components/AppRoot/AppRoot.d.ts +2 -1
  12. package/dist/components/AppRoot/AppRoot.d.ts.map +1 -1
  13. package/dist/components/AppRoot/AppRoot.js +75 -102
  14. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  15. package/dist/components/AppRoot/AppRootContext.d.ts +6 -1
  16. package/dist/components/AppRoot/AppRootContext.d.ts.map +1 -1
  17. package/dist/components/AppRoot/AppRootContext.js +5 -1
  18. package/dist/components/AppRoot/AppRootContext.js.map +1 -1
  19. package/dist/components/AppRoot/AppRootPortal.d.ts +6 -2
  20. package/dist/components/AppRoot/AppRootPortal.d.ts.map +1 -1
  21. package/dist/components/AppRoot/AppRootPortal.js +49 -27
  22. package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
  23. package/dist/components/AppRoot/AppRootStyleContainer.d.ts +16 -0
  24. package/dist/components/AppRoot/AppRootStyleContainer.d.ts.map +1 -0
  25. package/dist/components/AppRoot/AppRootStyleContainer.js +57 -0
  26. package/dist/components/AppRoot/AppRootStyleContainer.js.map +1 -0
  27. package/dist/components/AppRoot/ModalPopoutPortal.d.ts +11 -0
  28. package/dist/components/AppRoot/ModalPopoutPortal.d.ts.map +1 -0
  29. package/dist/components/AppRoot/ModalPopoutPortal.js +28 -0
  30. package/dist/components/AppRoot/ModalPopoutPortal.js.map +1 -0
  31. package/dist/components/AppRoot/helpers.d.ts +2 -12
  32. package/dist/components/AppRoot/helpers.d.ts.map +1 -1
  33. package/dist/components/AppRoot/helpers.js +6 -56
  34. package/dist/components/AppRoot/helpers.js.map +1 -1
  35. package/dist/components/BaseGallery/BaseGallery.js.map +1 -1
  36. package/dist/components/BaseGallery/CarouselBase/CarouselBase.d.ts.map +1 -1
  37. package/dist/components/BaseGallery/CarouselBase/CarouselBase.js +1 -0
  38. package/dist/components/BaseGallery/CarouselBase/CarouselBase.js.map +1 -1
  39. package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  40. package/dist/components/CalendarHeader/CalendarHeader.js +2 -2
  41. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  42. package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  43. package/dist/components/CalendarTime/CalendarTime.js +2 -2
  44. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  45. package/dist/components/ConfigProvider/ConfigProvider.d.ts.map +1 -1
  46. package/dist/components/ConfigProvider/ConfigProvider.js +15 -7
  47. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  48. package/dist/components/Counter/Counter.d.ts +16 -6
  49. package/dist/components/Counter/Counter.d.ts.map +1 -1
  50. package/dist/components/Counter/Counter.js +50 -5
  51. package/dist/components/Counter/Counter.js.map +1 -1
  52. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  53. package/dist/components/CustomSelect/CustomSelect.js +7 -1
  54. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  55. package/dist/components/FormItem/FormItem.d.ts.map +1 -1
  56. package/dist/components/FormItem/FormItem.js +5 -3
  57. package/dist/components/FormItem/FormItem.js.map +1 -1
  58. package/dist/components/Gallery/Gallery.js.map +1 -1
  59. package/dist/components/Group/GroupContainer.d.ts.map +1 -1
  60. package/dist/components/Group/GroupContainer.js +2 -2
  61. package/dist/components/Group/GroupContainer.js.map +1 -1
  62. package/dist/components/Link/Link.d.ts +15 -2
  63. package/dist/components/Link/Link.d.ts.map +1 -1
  64. package/dist/components/Link/Link.js +20 -5
  65. package/dist/components/Link/Link.js.map +1 -1
  66. package/dist/components/ModalCard/ModalCard.d.ts +2 -6
  67. package/dist/components/ModalCard/ModalCard.d.ts.map +1 -1
  68. package/dist/components/ModalCard/ModalCard.js +40 -65
  69. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  70. package/dist/components/ModalCard/ModalCardInternal.d.ts +13 -0
  71. package/dist/components/ModalCard/ModalCardInternal.d.ts.map +1 -0
  72. package/dist/components/ModalCard/ModalCardInternal.js +147 -0
  73. package/dist/components/ModalCard/ModalCardInternal.js.map +1 -0
  74. package/dist/components/ModalCard/types.d.ts +44 -0
  75. package/dist/components/ModalCard/types.d.ts.map +1 -0
  76. package/dist/components/ModalCard/types.js +3 -0
  77. package/dist/components/ModalCard/types.js.map +1 -0
  78. package/dist/components/ModalCardBase/ModalCardBase.d.ts.map +1 -1
  79. package/dist/components/ModalCardBase/ModalCardBase.js +1 -3
  80. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  81. package/dist/components/ModalOutlet/ModalOutlet.d.ts +9 -0
  82. package/dist/components/ModalOutlet/ModalOutlet.d.ts.map +1 -0
  83. package/dist/components/ModalOutlet/ModalOutlet.js +25 -0
  84. package/dist/components/ModalOutlet/ModalOutlet.js.map +1 -0
  85. package/dist/components/ModalOverlay/ModalOverlay.d.ts +12 -0
  86. package/dist/components/ModalOverlay/ModalOverlay.d.ts.map +1 -0
  87. package/dist/components/ModalOverlay/ModalOverlay.js +47 -0
  88. package/dist/components/ModalOverlay/ModalOverlay.js.map +1 -0
  89. package/dist/components/ModalPage/ModalPage.d.ts +2 -60
  90. package/dist/components/ModalPage/ModalPage.d.ts.map +1 -1
  91. package/dist/components/ModalPage/ModalPage.js +39 -111
  92. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  93. package/dist/components/ModalPage/ModalPageInternal.d.ts +13 -0
  94. package/dist/components/ModalPage/ModalPageInternal.d.ts.map +1 -0
  95. package/dist/components/ModalPage/ModalPageInternal.js +181 -0
  96. package/dist/components/ModalPage/ModalPageInternal.js.map +1 -0
  97. package/dist/components/ModalPage/types.d.ts +104 -0
  98. package/dist/components/ModalPage/types.d.ts.map +1 -0
  99. package/dist/components/ModalPage/types.js +3 -0
  100. package/dist/components/ModalPage/types.js.map +1 -0
  101. package/dist/components/ModalPageContent/ModalPageContent.d.ts +4 -0
  102. package/dist/components/ModalPageContent/ModalPageContent.d.ts.map +1 -0
  103. package/dist/components/ModalPageContent/ModalPageContent.js +22 -0
  104. package/dist/components/ModalPageContent/ModalPageContent.js.map +1 -0
  105. package/dist/components/ModalPageFooter/ModalPageFooter.d.ts +7 -0
  106. package/dist/components/ModalPageFooter/ModalPageFooter.d.ts.map +1 -0
  107. package/dist/components/ModalPageFooter/ModalPageFooter.js +30 -0
  108. package/dist/components/ModalPageFooter/ModalPageFooter.js.map +1 -0
  109. package/dist/components/ModalPageHeader/ModalPageHeader.d.ts.map +1 -1
  110. package/dist/components/ModalPageHeader/ModalPageHeader.js +4 -4
  111. package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  112. package/dist/components/ModalRoot/ModalRoot.d.ts +5 -2
  113. package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  114. package/dist/components/ModalRoot/ModalRoot.js +52 -590
  115. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  116. package/dist/components/ModalRoot/ModalRootContext.d.ts +8 -18
  117. package/dist/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
  118. package/dist/components/ModalRoot/ModalRootContext.js +13 -40
  119. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  120. package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.d.ts +13 -0
  121. package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.d.ts.map +1 -0
  122. package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js +33 -0
  123. package/dist/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js.map +1 -0
  124. package/dist/components/ModalRoot/types.d.ts +52 -21
  125. package/dist/components/ModalRoot/types.d.ts.map +1 -1
  126. package/dist/components/ModalRoot/types.js +1 -1
  127. package/dist/components/ModalRoot/types.js.map +1 -1
  128. package/dist/components/ModalRoot/useModalManager.d.ts +27 -38
  129. package/dist/components/ModalRoot/useModalManager.d.ts.map +1 -1
  130. package/dist/components/ModalRoot/useModalManager.js +37 -193
  131. package/dist/components/ModalRoot/useModalManager.js.map +1 -1
  132. package/dist/components/ModalRoot/useModalRootContext.d.ts +2 -2
  133. package/dist/components/ModalRoot/useModalRootContext.d.ts.map +1 -1
  134. package/dist/components/ModalRoot/useModalRootContext.js +18 -2
  135. package/dist/components/ModalRoot/useModalRootContext.js.map +1 -1
  136. package/dist/components/ModalRoot/withModalRootContext.d.ts +6 -1
  137. package/dist/components/ModalRoot/withModalRootContext.d.ts.map +1 -1
  138. package/dist/components/ModalRoot/withModalRootContext.js +7 -4
  139. package/dist/components/ModalRoot/withModalRootContext.js.map +1 -1
  140. package/dist/components/NativeSelect/NativeSelect.d.ts +5 -6
  141. package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
  142. package/dist/components/NativeSelect/NativeSelect.js +7 -1
  143. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  144. package/dist/components/NavTransitionContext/NavTransitionContext.d.ts.map +1 -1
  145. package/dist/components/NavTransitionContext/NavTransitionContext.js +6 -4
  146. package/dist/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
  147. package/dist/components/PanelHeader/PanelHeader.d.ts.map +1 -1
  148. package/dist/components/PanelHeader/PanelHeader.js +2 -2
  149. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  150. package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts +5 -4
  151. package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts.map +1 -1
  152. package/dist/components/PanelHeaderBack/PanelHeaderBack.js +10 -12
  153. package/dist/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
  154. package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  155. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +6 -1
  156. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  157. package/dist/components/PanelHeaderClose/PanelHeaderClose.d.ts +2 -1
  158. package/dist/components/PanelHeaderClose/PanelHeaderClose.d.ts.map +1 -1
  159. package/dist/components/PanelHeaderClose/PanelHeaderClose.js +9 -13
  160. package/dist/components/PanelHeaderClose/PanelHeaderClose.js.map +1 -1
  161. package/dist/components/PanelHeaderEdit/PanelHeaderEdit.d.ts +1 -1
  162. package/dist/components/PanelHeaderEdit/PanelHeaderEdit.d.ts.map +1 -1
  163. package/dist/components/PanelHeaderEdit/PanelHeaderEdit.js +7 -11
  164. package/dist/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
  165. package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.d.ts +2 -1
  166. package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.d.ts.map +1 -1
  167. package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.js +10 -14
  168. package/dist/components/PanelHeaderSubmit/PanelHeaderSubmit.js.map +1 -1
  169. package/dist/components/PopoutWrapper/PopoutWrapper.d.ts +5 -1
  170. package/dist/components/PopoutWrapper/PopoutWrapper.d.ts.map +1 -1
  171. package/dist/components/PopoutWrapper/PopoutWrapper.js +6 -2
  172. package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  173. package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  174. package/dist/components/PullToRefresh/PullToRefresh.js +9 -8
  175. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  176. package/dist/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
  177. package/dist/components/ScreenSpinner/ScreenSpinner.js +23 -18
  178. package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  179. package/dist/components/ScreenSpinner/types.d.ts +2 -0
  180. package/dist/components/ScreenSpinner/types.d.ts.map +1 -1
  181. package/dist/components/ScreenSpinner/types.js.map +1 -1
  182. package/dist/components/Separator/Separator.d.ts +2 -0
  183. package/dist/components/Separator/Separator.d.ts.map +1 -1
  184. package/dist/components/Separator/Separator.js +4 -5
  185. package/dist/components/Separator/Separator.js.map +1 -1
  186. package/dist/components/Skeleton/Skeleton.js +4 -4
  187. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  188. package/dist/components/Spacing/Spacing.d.ts +3 -1
  189. package/dist/components/Spacing/Spacing.d.ts.map +1 -1
  190. package/dist/components/Spacing/Spacing.js +4 -5
  191. package/dist/components/Spacing/Spacing.js.map +1 -1
  192. package/dist/components/SplitCol/SplitCol.d.ts.map +1 -1
  193. package/dist/components/SplitCol/SplitCol.js +7 -5
  194. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  195. package/dist/components/SplitLayout/SplitLayout.d.ts +9 -1
  196. package/dist/components/SplitLayout/SplitLayout.d.ts.map +1 -1
  197. package/dist/components/SplitLayout/SplitLayout.js +17 -12
  198. package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
  199. package/dist/components/Tappable/Tappable.d.ts.map +1 -1
  200. package/dist/components/Tappable/Tappable.js +1 -1
  201. package/dist/components/Tappable/Tappable.js.map +1 -1
  202. package/dist/components/View/useLayoutEffectCall.d.ts +1 -1
  203. package/dist/components/View/useLayoutEffectCall.d.ts.map +1 -1
  204. package/dist/components/View/useLayoutEffectCall.js +8 -33
  205. package/dist/components/View/useLayoutEffectCall.js.map +1 -1
  206. package/dist/components.css +1 -1
  207. package/dist/components.css.map +1 -1
  208. package/dist/context/ModalContext.d.ts +15 -0
  209. package/dist/context/ModalContext.d.ts.map +1 -0
  210. package/dist/context/ModalContext.js +13 -0
  211. package/dist/context/ModalContext.js.map +1 -0
  212. package/dist/cssm/components/Accordion/Accordion.js +9 -5
  213. package/dist/cssm/components/Accordion/Accordion.js.map +1 -1
  214. package/dist/cssm/components/ActionSheet/ActionSheet.js +20 -14
  215. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  216. package/dist/cssm/components/Alert/Alert.js +60 -56
  217. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  218. package/dist/cssm/components/AppRoot/AppRoot.js +73 -100
  219. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  220. package/dist/cssm/components/AppRoot/AppRoot.module.css +2 -40
  221. package/dist/cssm/components/AppRoot/AppRootContext.js +5 -1
  222. package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
  223. package/dist/cssm/components/AppRoot/AppRootPortal.js +49 -27
  224. package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
  225. package/dist/cssm/components/AppRoot/AppRootStyleContainer.js +57 -0
  226. package/dist/cssm/components/AppRoot/AppRootStyleContainer.js.map +1 -0
  227. package/dist/cssm/components/AppRoot/AppRootStyleContainer.module.css +87 -0
  228. package/dist/cssm/components/AppRoot/ModalPopoutPortal.js +27 -0
  229. package/dist/cssm/components/AppRoot/ModalPopoutPortal.js.map +1 -0
  230. package/dist/cssm/components/AppRoot/helpers.js +6 -56
  231. package/dist/cssm/components/AppRoot/helpers.js.map +1 -1
  232. package/dist/cssm/components/BaseGallery/BaseGallery.js.map +1 -1
  233. package/dist/cssm/components/BaseGallery/CarouselBase/CarouselBase.js +1 -0
  234. package/dist/cssm/components/BaseGallery/CarouselBase/CarouselBase.js.map +1 -1
  235. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +2 -2
  236. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  237. package/dist/cssm/components/CalendarTime/CalendarTime.js +2 -2
  238. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  239. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +15 -7
  240. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  241. package/dist/cssm/components/Counter/Counter.js +48 -4
  242. package/dist/cssm/components/Counter/Counter.js.map +1 -1
  243. package/dist/cssm/components/Counter/Counter.module.css +81 -12
  244. package/dist/cssm/components/CustomSelect/CustomSelect.js +7 -1
  245. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  246. package/dist/cssm/components/FormItem/FormItem.js +5 -3
  247. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  248. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  249. package/dist/cssm/components/Group/GroupContainer.js +2 -2
  250. package/dist/cssm/components/Group/GroupContainer.js.map +1 -1
  251. package/dist/cssm/components/Link/Link.js +17 -5
  252. package/dist/cssm/components/Link/Link.js.map +1 -1
  253. package/dist/cssm/components/Link/Link.module.css +13 -4
  254. package/dist/cssm/components/ModalCard/ModalCard.js +30 -51
  255. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  256. package/dist/cssm/components/ModalCard/ModalCard.module.css +62 -44
  257. package/dist/cssm/components/ModalCard/ModalCardInternal.js +122 -0
  258. package/dist/cssm/components/ModalCard/ModalCardInternal.js.map +1 -0
  259. package/dist/cssm/components/ModalCard/types.js +3 -0
  260. package/dist/cssm/components/ModalCard/types.js.map +1 -0
  261. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +1 -3
  262. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  263. package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +0 -2
  264. package/dist/cssm/components/ModalOutlet/ModalOutlet.js +17 -0
  265. package/dist/cssm/components/ModalOutlet/ModalOutlet.js.map +1 -0
  266. package/dist/cssm/components/ModalOutlet/ModalOutlet.module.css +17 -0
  267. package/dist/cssm/components/ModalOverlay/ModalOverlay.js +40 -0
  268. package/dist/cssm/components/ModalOverlay/ModalOverlay.js.map +1 -0
  269. package/dist/cssm/components/ModalOverlay/ModalOverlay.module.css +71 -0
  270. package/dist/cssm/components/ModalPage/ModalPage.js +32 -99
  271. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  272. package/dist/cssm/components/ModalPage/ModalPage.module.css +125 -123
  273. package/dist/cssm/components/ModalPage/ModalPageInternal.js +161 -0
  274. package/dist/cssm/components/ModalPage/ModalPageInternal.js.map +1 -0
  275. package/dist/cssm/components/ModalPage/types.js +3 -0
  276. package/dist/cssm/components/ModalPage/types.js.map +1 -0
  277. package/dist/cssm/components/ModalPageContent/ModalPageContent.js +15 -0
  278. package/dist/cssm/components/ModalPageContent/ModalPageContent.js.map +1 -0
  279. package/dist/cssm/components/ModalPageContent/ModalPageContent.module.css +4 -0
  280. package/dist/cssm/components/ModalPageFooter/ModalPageFooter.js +23 -0
  281. package/dist/cssm/components/ModalPageFooter/ModalPageFooter.js.map +1 -0
  282. package/dist/cssm/components/ModalPageFooter/ModalPageFooter.module.css +35 -0
  283. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +4 -4
  284. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  285. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.module.css +8 -2
  286. package/dist/cssm/components/ModalRoot/ModalRoot.js +52 -571
  287. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  288. package/dist/cssm/components/ModalRoot/ModalRootContext.js +13 -40
  289. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  290. package/dist/cssm/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js +27 -0
  291. package/dist/cssm/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.js.map +1 -0
  292. package/dist/cssm/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.module.css +8 -0
  293. package/dist/cssm/components/ModalRoot/types.js +1 -1
  294. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  295. package/dist/cssm/components/ModalRoot/useModalManager.js +36 -194
  296. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
  297. package/dist/cssm/components/ModalRoot/useModalRootContext.js +18 -2
  298. package/dist/cssm/components/ModalRoot/useModalRootContext.js.map +1 -1
  299. package/dist/cssm/components/ModalRoot/withModalRootContext.js +7 -4
  300. package/dist/cssm/components/ModalRoot/withModalRootContext.js.map +1 -1
  301. package/dist/cssm/components/NativeSelect/NativeSelect.js +7 -1
  302. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  303. package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js +6 -4
  304. package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
  305. package/dist/cssm/components/PanelHeader/PanelHeader.js +2 -2
  306. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  307. package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js +9 -12
  308. package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.js.map +1 -1
  309. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +6 -1
  310. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  311. package/dist/cssm/components/PanelHeaderClose/PanelHeaderClose.js +8 -12
  312. package/dist/cssm/components/PanelHeaderClose/PanelHeaderClose.js.map +1 -1
  313. package/dist/cssm/components/PanelHeaderEdit/PanelHeaderEdit.js +7 -11
  314. package/dist/cssm/components/PanelHeaderEdit/PanelHeaderEdit.js.map +1 -1
  315. package/dist/cssm/components/PanelHeaderSubmit/PanelHeaderSubmit.js +8 -12
  316. package/dist/cssm/components/PanelHeaderSubmit/PanelHeaderSubmit.js.map +1 -1
  317. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +5 -1
  318. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  319. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +9 -8
  320. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  321. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +23 -19
  322. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  323. package/dist/cssm/components/ScreenSpinner/types.js.map +1 -1
  324. package/dist/cssm/components/Search/Search.module.css +2 -2
  325. package/dist/cssm/components/Separator/Separator.js +9 -8
  326. package/dist/cssm/components/Separator/Separator.js.map +1 -1
  327. package/dist/cssm/components/Skeleton/Skeleton.js +4 -4
  328. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  329. package/dist/cssm/components/Spacing/Spacing.js +6 -7
  330. package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
  331. package/dist/cssm/components/SplitCol/SplitCol.js +7 -5
  332. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  333. package/dist/cssm/components/SplitLayout/SplitLayout.js +14 -9
  334. package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
  335. package/dist/cssm/components/Tappable/Tappable.js +1 -1
  336. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  337. package/dist/cssm/components/View/useLayoutEffectCall.js +8 -23
  338. package/dist/cssm/components/View/useLayoutEffectCall.js.map +1 -1
  339. package/dist/cssm/context/ModalContext.js +13 -0
  340. package/dist/cssm/context/ModalContext.js.map +1 -0
  341. package/dist/cssm/helpers/range.js +3 -0
  342. package/dist/cssm/helpers/range.js.map +1 -1
  343. package/dist/cssm/hooks/useObjectMemo.js +6 -2
  344. package/dist/cssm/hooks/useObjectMemo.js.map +1 -1
  345. package/dist/cssm/hooks/usePrevious.js +9 -2
  346. package/dist/cssm/hooks/usePrevious.js.map +1 -1
  347. package/dist/cssm/hooks/useStableCallback.js +1 -1
  348. package/dist/cssm/hooks/useStableCallback.js.map +1 -1
  349. package/dist/cssm/hooks/useStateWithPrev.js +34 -0
  350. package/dist/cssm/hooks/useStateWithPrev.js.map +1 -0
  351. package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js +23 -0
  352. package/dist/cssm/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -0
  353. package/dist/cssm/hooks/useSyncHTMLWithTokens.js +19 -0
  354. package/dist/cssm/hooks/useSyncHTMLWithTokens.js.map +1 -0
  355. package/dist/cssm/hooks/useVirtualKeyboardState.js +134 -0
  356. package/dist/cssm/hooks/useVirtualKeyboardState.js.map +1 -0
  357. package/dist/cssm/index.js +6 -2
  358. package/dist/cssm/index.js.map +1 -1
  359. package/dist/cssm/lib/SSR.js +1 -7
  360. package/dist/cssm/lib/SSR.js.map +1 -1
  361. package/dist/cssm/lib/adaptivity/functions.js +7 -1
  362. package/dist/cssm/lib/adaptivity/functions.js.map +1 -1
  363. package/dist/cssm/lib/animation/useCSSKeyframesAnimationController.js +7 -5
  364. package/dist/cssm/lib/animation/useCSSKeyframesAnimationController.js.map +1 -1
  365. package/dist/cssm/lib/animation/useCSSTransition.js +4 -4
  366. package/dist/cssm/lib/animation/useCSSTransition.js.map +1 -1
  367. package/dist/cssm/lib/dom.js +65 -11
  368. package/dist/cssm/lib/dom.js.map +1 -1
  369. package/dist/cssm/lib/floating/usePlacementChangeCallback.js +6 -3
  370. package/dist/cssm/lib/floating/usePlacementChangeCallback.js.map +1 -1
  371. package/dist/cssm/lib/sheet/constants.js +23 -0
  372. package/dist/cssm/lib/sheet/constants.js.map +1 -0
  373. package/dist/cssm/lib/sheet/controllers/BottomSheetController.js +252 -0
  374. package/dist/cssm/lib/sheet/controllers/BottomSheetController.js.map +1 -0
  375. package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js +50 -0
  376. package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js.map +1 -0
  377. package/dist/cssm/lib/sheet/index.js +4 -0
  378. package/dist/cssm/lib/sheet/index.js.map +1 -0
  379. package/dist/cssm/lib/sheet/useBottomSheet.js +116 -0
  380. package/dist/cssm/lib/sheet/useBottomSheet.js.map +1 -0
  381. package/dist/cssm/lib/spacings/sizes.js +23 -0
  382. package/dist/cssm/lib/spacings/sizes.js.map +1 -1
  383. package/dist/cssm/lib/touch/UIPanGestureRecognizer.js +10 -0
  384. package/dist/cssm/lib/touch/UIPanGestureRecognizer.js.map +1 -1
  385. package/dist/cssm/lib/touch/index.js.map +1 -1
  386. package/dist/cssm/styles/common.css +31 -34
  387. package/dist/cssm/styles/constants.css +5 -0
  388. package/dist/helpers/range.d.ts +1 -0
  389. package/dist/helpers/range.d.ts.map +1 -1
  390. package/dist/helpers/range.js +3 -0
  391. package/dist/helpers/range.js.map +1 -1
  392. package/dist/hooks/useObjectMemo.d.ts +3 -0
  393. package/dist/hooks/useObjectMemo.d.ts.map +1 -1
  394. package/dist/hooks/useObjectMemo.js +6 -2
  395. package/dist/hooks/useObjectMemo.js.map +1 -1
  396. package/dist/hooks/usePrevious.d.ts +3 -0
  397. package/dist/hooks/usePrevious.d.ts.map +1 -1
  398. package/dist/hooks/usePrevious.js +9 -2
  399. package/dist/hooks/usePrevious.js.map +1 -1
  400. package/dist/hooks/useStableCallback.js +1 -1
  401. package/dist/hooks/useStableCallback.js.map +1 -1
  402. package/dist/hooks/useStateWithPrev.d.ts +12 -0
  403. package/dist/hooks/useStateWithPrev.d.ts.map +1 -0
  404. package/dist/hooks/useStateWithPrev.js +34 -0
  405. package/dist/hooks/useStateWithPrev.js.map +1 -0
  406. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts +8 -0
  407. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.d.ts.map +1 -0
  408. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js +24 -0
  409. package/dist/hooks/useSyncHTMLWithBaseVKUIClasses.js.map +1 -0
  410. package/dist/hooks/useSyncHTMLWithTokens.d.ts +5 -0
  411. package/dist/hooks/useSyncHTMLWithTokens.d.ts.map +1 -0
  412. package/dist/hooks/useSyncHTMLWithTokens.js +20 -0
  413. package/dist/hooks/useSyncHTMLWithTokens.js.map +1 -0
  414. package/dist/hooks/useVirtualKeyboardState.d.ts +32 -0
  415. package/dist/hooks/useVirtualKeyboardState.d.ts.map +1 -0
  416. package/dist/hooks/useVirtualKeyboardState.js +134 -0
  417. package/dist/hooks/useVirtualKeyboardState.js.map +1 -0
  418. package/dist/index.d.ts +13 -5
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +6 -2
  421. package/dist/index.js.map +1 -1
  422. package/dist/lib/SSR.d.ts.map +1 -1
  423. package/dist/lib/SSR.js +1 -7
  424. package/dist/lib/SSR.js.map +1 -1
  425. package/dist/lib/adaptivity/functions.d.ts +1 -0
  426. package/dist/lib/adaptivity/functions.d.ts.map +1 -1
  427. package/dist/lib/adaptivity/functions.js +7 -1
  428. package/dist/lib/adaptivity/functions.js.map +1 -1
  429. package/dist/lib/animation/useCSSKeyframesAnimationController.d.ts.map +1 -1
  430. package/dist/lib/animation/useCSSKeyframesAnimationController.js +7 -5
  431. package/dist/lib/animation/useCSSKeyframesAnimationController.js.map +1 -1
  432. package/dist/lib/animation/useCSSTransition.d.ts.map +1 -1
  433. package/dist/lib/animation/useCSSTransition.js +4 -4
  434. package/dist/lib/animation/useCSSTransition.js.map +1 -1
  435. package/dist/lib/dom.d.ts +20 -5
  436. package/dist/lib/dom.d.ts.map +1 -1
  437. package/dist/lib/dom.js +65 -11
  438. package/dist/lib/dom.js.map +1 -1
  439. package/dist/lib/floating/usePlacementChangeCallback.d.ts.map +1 -1
  440. package/dist/lib/floating/usePlacementChangeCallback.js +6 -3
  441. package/dist/lib/floating/usePlacementChangeCallback.js.map +1 -1
  442. package/dist/lib/sheet/constants.d.ts +28 -0
  443. package/dist/lib/sheet/constants.d.ts.map +1 -0
  444. package/dist/lib/sheet/constants.js +23 -0
  445. package/dist/lib/sheet/constants.js.map +1 -0
  446. package/dist/lib/sheet/controllers/BottomSheetController.d.ts +51 -0
  447. package/dist/lib/sheet/controllers/BottomSheetController.d.ts.map +1 -0
  448. package/dist/lib/sheet/controllers/BottomSheetController.js +259 -0
  449. package/dist/lib/sheet/controllers/BottomSheetController.js.map +1 -0
  450. package/dist/lib/sheet/controllers/CSSTransitionController.d.ts +14 -0
  451. package/dist/lib/sheet/controllers/CSSTransitionController.d.ts.map +1 -0
  452. package/dist/lib/sheet/controllers/CSSTransitionController.js +51 -0
  453. package/dist/lib/sheet/controllers/CSSTransitionController.js.map +1 -0
  454. package/dist/lib/sheet/index.d.ts +3 -0
  455. package/dist/lib/sheet/index.d.ts.map +1 -0
  456. package/dist/lib/sheet/index.js +4 -0
  457. package/dist/lib/sheet/index.js.map +1 -0
  458. package/dist/lib/sheet/useBottomSheet.d.ts +56 -0
  459. package/dist/lib/sheet/useBottomSheet.d.ts.map +1 -0
  460. package/dist/lib/sheet/useBottomSheet.js +116 -0
  461. package/dist/lib/sheet/useBottomSheet.js.map +1 -0
  462. package/dist/lib/spacings/sizes.d.ts +3 -2
  463. package/dist/lib/spacings/sizes.d.ts.map +1 -1
  464. package/dist/lib/spacings/sizes.js +23 -0
  465. package/dist/lib/spacings/sizes.js.map +1 -1
  466. package/dist/lib/touch/UIPanGestureRecognizer.d.ts +8 -9
  467. package/dist/lib/touch/UIPanGestureRecognizer.d.ts.map +1 -1
  468. package/dist/lib/touch/UIPanGestureRecognizer.js +10 -0
  469. package/dist/lib/touch/UIPanGestureRecognizer.js.map +1 -1
  470. package/dist/lib/touch/index.d.ts +1 -1
  471. package/dist/lib/touch/index.d.ts.map +1 -1
  472. package/dist/lib/touch/index.js.map +1 -1
  473. package/dist/vkui.css +1 -1
  474. package/dist/vkui.css.map +1 -1
  475. package/package.json +9 -6
  476. package/src/components/Accordion/Accordion.tsx +9 -7
  477. package/src/components/ActionSheet/ActionSheet.tsx +18 -13
  478. package/src/components/Alert/Alert.tsx +65 -59
  479. package/src/components/AppRoot/AppRoot.module.css +2 -30
  480. package/src/components/AppRoot/AppRoot.tsx +90 -122
  481. package/src/components/AppRoot/AppRootContext.ts +11 -2
  482. package/src/components/AppRoot/AppRootPortal.tsx +71 -30
  483. package/src/components/AppRoot/AppRootStyleContainer.module.css +77 -0
  484. package/src/components/AppRoot/AppRootStyleContainer.tsx +72 -0
  485. package/src/components/AppRoot/ModalPopoutPortal.tsx +27 -0
  486. package/src/components/AppRoot/helpers.ts +10 -65
  487. package/src/components/BaseGallery/BaseGallery.tsx +1 -1
  488. package/src/components/BaseGallery/CarouselBase/CarouselBase.tsx +1 -0
  489. package/src/components/CalendarHeader/CalendarHeader.tsx +5 -2
  490. package/src/components/CalendarTime/CalendarTime.tsx +5 -2
  491. package/src/components/ConfigProvider/ConfigProvider.tsx +22 -11
  492. package/src/components/Counter/Counter.module.css +80 -12
  493. package/src/components/Counter/Counter.tsx +64 -7
  494. package/src/components/CustomSelect/CustomSelect.tsx +7 -1
  495. package/src/components/FormItem/FormItem.tsx +1 -2
  496. package/src/components/Gallery/Gallery.tsx +1 -1
  497. package/src/components/Group/GroupContainer.tsx +2 -2
  498. package/src/components/Link/Link.module.css +11 -3
  499. package/src/components/Link/Link.tsx +28 -2
  500. package/src/components/ModalCard/ModalCard.module.css +60 -44
  501. package/src/components/ModalCard/ModalCard.tsx +41 -74
  502. package/src/components/ModalCard/ModalCardInternal.tsx +175 -0
  503. package/src/components/ModalCard/types.ts +51 -0
  504. package/src/components/ModalCardBase/ModalCardBase.module.css +0 -1
  505. package/src/components/ModalCardBase/ModalCardBase.tsx +1 -8
  506. package/src/components/ModalOutlet/ModalOutlet.module.css +16 -0
  507. package/src/components/ModalOutlet/ModalOutlet.tsx +31 -0
  508. package/src/components/ModalOverlay/ModalOverlay.module.css +65 -0
  509. package/src/components/ModalOverlay/ModalOverlay.tsx +66 -0
  510. package/src/components/ModalPage/ModalPage.module.css +124 -123
  511. package/src/components/ModalPage/ModalPage.tsx +42 -164
  512. package/src/components/ModalPage/ModalPageInternal.tsx +229 -0
  513. package/src/components/ModalPage/types.ts +112 -0
  514. package/src/components/ModalPageContent/ModalPageContent.module.css +4 -0
  515. package/src/components/ModalPageContent/ModalPageContent.tsx +25 -0
  516. package/src/components/ModalPageFooter/ModalPageFooter.module.css +33 -0
  517. package/src/components/ModalPageFooter/ModalPageFooter.tsx +31 -0
  518. package/src/components/ModalPageHeader/ModalPageHeader.module.css +8 -2
  519. package/src/components/ModalPageHeader/ModalPageHeader.tsx +5 -5
  520. package/src/components/ModalRoot/ModalRoot.tsx +62 -716
  521. package/src/components/ModalRoot/ModalRootContext.tsx +13 -50
  522. package/src/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.module.css +6 -0
  523. package/src/components/ModalRoot/VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay.tsx +37 -0
  524. package/src/components/ModalRoot/types.ts +60 -20
  525. package/src/components/ModalRoot/useModalManager.tsx +74 -228
  526. package/src/components/ModalRoot/useModalRootContext.ts +21 -0
  527. package/src/components/ModalRoot/withModalRootContext.tsx +8 -3
  528. package/src/components/NativeSelect/NativeSelect.tsx +12 -9
  529. package/src/components/NavTransitionContext/NavTransitionContext.tsx +7 -4
  530. package/src/components/PanelHeader/PanelHeader.tsx +2 -2
  531. package/src/components/PanelHeaderBack/PanelHeaderBack.tsx +14 -12
  532. package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +4 -1
  533. package/src/components/PanelHeaderClose/PanelHeaderClose.tsx +10 -13
  534. package/src/components/PanelHeaderEdit/PanelHeaderEdit.tsx +10 -12
  535. package/src/components/PanelHeaderSubmit/PanelHeaderSubmit.tsx +11 -10
  536. package/src/components/PopoutWrapper/PopoutWrapper.tsx +9 -0
  537. package/src/components/PullToRefresh/PullToRefresh.tsx +11 -7
  538. package/src/components/ScreenSpinner/ScreenSpinner.tsx +10 -6
  539. package/src/components/ScreenSpinner/types.tsx +2 -0
  540. package/src/components/Search/Search.module.css +2 -2
  541. package/src/components/Separator/Separator.tsx +32 -20
  542. package/src/components/Skeleton/Skeleton.tsx +4 -4
  543. package/src/components/Spacing/Spacing.tsx +17 -10
  544. package/src/components/SplitCol/SplitCol.tsx +7 -5
  545. package/src/components/SplitLayout/SplitLayout.tsx +20 -10
  546. package/src/components/Tappable/Tappable.tsx +1 -0
  547. package/src/components/View/useLayoutEffectCall.tsx +7 -29
  548. package/src/context/ModalContext.tsx +18 -0
  549. package/src/helpers/range.ts +4 -0
  550. package/src/hooks/useObjectMemo.ts +6 -0
  551. package/src/hooks/usePrevious.ts +9 -0
  552. package/src/hooks/useStableCallback.ts +1 -1
  553. package/src/hooks/useStateWithPrev.ts +43 -0
  554. package/src/hooks/useSyncHTMLWithBaseVKUIClasses.ts +39 -0
  555. package/src/hooks/useSyncHTMLWithTokens.ts +27 -0
  556. package/src/hooks/useVirtualKeyboardState.ts +152 -0
  557. package/src/index.ts +22 -5
  558. package/src/lib/SSR.tsx +1 -7
  559. package/src/lib/adaptivity/functions.ts +8 -1
  560. package/src/lib/animation/useCSSKeyframesAnimationController.ts +10 -5
  561. package/src/lib/animation/useCSSTransition.ts +4 -10
  562. package/src/lib/dom.tsx +85 -13
  563. package/src/lib/floating/usePlacementChangeCallback.ts +9 -3
  564. package/src/lib/sheet/constants.ts +32 -0
  565. package/src/lib/sheet/controllers/BottomSheetController.ts +382 -0
  566. package/src/lib/sheet/controllers/CSSTransitionController.ts +51 -0
  567. package/src/lib/sheet/index.ts +10 -0
  568. package/src/lib/sheet/useBottomSheet.ts +175 -0
  569. package/src/lib/spacings/sizes.ts +17 -2
  570. package/src/lib/touch/UIPanGestureRecognizer.ts +12 -9
  571. package/src/lib/touch/index.ts +4 -1
  572. package/src/styles/common.css +31 -41
  573. package/src/styles/constants.css +5 -0
  574. package/dist/components/ModalPage/ModalPageContext.d.ts +0 -6
  575. package/dist/components/ModalPage/ModalPageContext.d.ts.map +0 -1
  576. package/dist/components/ModalPage/ModalPageContext.js +0 -4
  577. package/dist/components/ModalPage/ModalPageContext.js.map +0 -1
  578. package/dist/components/ModalRoot/ModalRootAdaptive.d.ts +0 -7
  579. package/dist/components/ModalRoot/ModalRootAdaptive.d.ts.map +0 -1
  580. package/dist/components/ModalRoot/ModalRootAdaptive.js +0 -18
  581. package/dist/components/ModalRoot/ModalRootAdaptive.js.map +0 -1
  582. package/dist/components/ModalRoot/ModalRootDesktop.d.ts +0 -4
  583. package/dist/components/ModalRoot/ModalRootDesktop.d.ts.map +0 -1
  584. package/dist/components/ModalRoot/ModalRootDesktop.js +0 -186
  585. package/dist/components/ModalRoot/ModalRootDesktop.js.map +0 -1
  586. package/dist/components/ModalRoot/constants.d.ts +0 -2
  587. package/dist/components/ModalRoot/constants.d.ts.map +0 -1
  588. package/dist/components/ModalRoot/constants.js +0 -3
  589. package/dist/components/ModalRoot/constants.js.map +0 -1
  590. package/dist/components/PopoutRoot/PopoutRoot.d.ts +0 -19
  591. package/dist/components/PopoutRoot/PopoutRoot.d.ts.map +0 -1
  592. package/dist/components/PopoutRoot/PopoutRoot.js +0 -55
  593. package/dist/components/PopoutRoot/PopoutRoot.js.map +0 -1
  594. package/dist/cssm/components/ModalPage/ModalPageContext.js +0 -4
  595. package/dist/cssm/components/ModalPage/ModalPageContext.js.map +0 -1
  596. package/dist/cssm/components/ModalRoot/ModalRoot.module.css +0 -61
  597. package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js +0 -19
  598. package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js.map +0 -1
  599. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +0 -179
  600. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +0 -1
  601. package/dist/cssm/components/ModalRoot/constants.js +0 -3
  602. package/dist/cssm/components/ModalRoot/constants.js.map +0 -1
  603. package/dist/cssm/components/PopoutRoot/PopoutRoot.js +0 -41
  604. package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +0 -1
  605. package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +0 -28
  606. package/dist/cssm/hooks/useKeyboard.js +0 -40
  607. package/dist/cssm/hooks/useKeyboard.js.map +0 -1
  608. package/dist/hooks/useKeyboard.d.ts +0 -11
  609. package/dist/hooks/useKeyboard.d.ts.map +0 -1
  610. package/dist/hooks/useKeyboard.js +0 -42
  611. package/dist/hooks/useKeyboard.js.map +0 -1
  612. package/src/components/ModalPage/ModalPageContext.tsx +0 -8
  613. package/src/components/ModalRoot/ModalRoot.module.css +0 -59
  614. package/src/components/ModalRoot/ModalRootAdaptive.tsx +0 -21
  615. package/src/components/ModalRoot/ModalRootDesktop.tsx +0 -243
  616. package/src/components/ModalRoot/constants.ts +0 -1
  617. package/src/components/ModalRoot/useModalRootContext.tsx +0 -5
  618. package/src/components/PopoutRoot/PopoutRoot.module.css +0 -28
  619. package/src/components/PopoutRoot/PopoutRoot.tsx +0 -51
  620. package/src/hooks/useKeyboard.ts +0 -56
package/package.json CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
- "version": "7.0.0-dev-efd91c.0",
2
+ "type": "module",
3
+ "version": "7.0.0-dev-efd91c.2",
3
4
  "name": "@vkontakte/vkui",
4
5
  "description": "VKUI library",
5
6
  "module": "./dist/index.js",
@@ -54,7 +55,7 @@
54
55
  "clear": "yarn run -T shx rm -rf dist/* || yarn run -T shx true",
55
56
  "docker:clear-playwright-cache": "../../scripts/generate_env_docker.sh && docker compose --env-file=./.env.docker rm -f && docker volume rm vkui_package_vkui_playwright_cache",
56
57
  "postcss": "yarn run -T cross-env NODE_ENV=production concurrently 'yarn:postcss:*'",
57
- "postcss:bundle": "yarn run -T rspack --config rspack.styles.config.ts",
58
+ "postcss:bundle": "yarn run -T rspack --config rspack.styles.config.mjs",
58
59
  "postcss:modules": "yarn run -T postcss './src/**/*.css' --base ./src --dir ./dist/cssm --config ./cssm",
59
60
  "swc-base": "yarn run -T cross-env NODE_ENV=production swc src/ --config-file package.swcrc --extensions .tsx,.jsx,.ts,.js --strip-leading-paths",
60
61
  "swc:es6": "yarn swc-base -d dist -s",
@@ -64,9 +65,11 @@
64
65
  "test:ci": "yarn test --ci --silent --outputFile ../../test-results.json --json --coverage --coverageReporters='json' --coverageDirectory='../../.nyc_output'",
65
66
  "test:e2e": "../../scripts/generate_env_docker.sh && docker compose --env-file=./.env.docker up --abort-on-container-exit",
66
67
  "test:e2e-update": "../../scripts/generate_env_docker.sh -u && docker compose --env-file=./.env.docker up --abort-on-container-exit",
67
- "test:e2e:ci": "yarn run -T playwright test --config playwright-ct.config.ts",
68
+ "test:e2e:ci": "yarn run -T cross-env NODE_OPTIONS='--no-warnings' playwright test --config playwright-ct.config.mjs",
69
+ "test:e2e:ci:ui": "yarn run -T cross-env NODE_OPTIONS='--no-warnings' playwright test --ui --ui-port=4300 --ui-host=0.0.0.0 --config playwright-ct.config.mjs",
70
+ "test:e2e:ui": "../../scripts/generate_env_docker.sh -r test:e2e:ci:ui && docker compose --env-file=./.env.docker up --abort-on-container-exit",
68
71
  "test:e2e-update:ci": "yarn run test:e2e:ci --update-snapshots",
69
- "lint:generated-files": "yarn run -T tsc scripts/generateCSSCustomMedias.mjs --checkJs --module ESNext --moduleResolution node --resolveJsonModule --allowSyntheticDefaultImports --noEmit && yarn run generate:css-custom-medias && git diff --exit-code src/styles/customMedias.generated.css",
72
+ "lint:generated-files": "yarn run -T tsc scripts/generateCSSCustomMedias.mjs --checkJs --module ESNext --moduleResolution node --resolveJsonModule --allowSyntheticDefaultImports --jsx react-jsx --noEmit && yarn run generate:css-custom-medias && git diff --exit-code src/styles/customMedias.generated.css",
70
73
  "storybook": "bash -c 'source .env && yarn run -T cross-env SANDBOX=\\.storybook storybook dev -p ${STORYBOOK_DEV_PORT:=6006}'",
71
74
  "storybook:build": "yarn run -T cross-env SANDBOX=\\.storybook FROM_STORYBOOK=1 storybook build",
72
75
  "generate:css-custom-medias": "node scripts/generateCSSCustomMedias.mjs"
@@ -78,7 +81,7 @@
78
81
  "dependencies": {
79
82
  "@swc/helpers": "^0.5.15",
80
83
  "@vkontakte/icons": "^2.115.0",
81
- "@vkontakte/vkjs": "^1.3.0",
84
+ "@vkontakte/vkjs": "^2.0.1",
82
85
  "@vkontakte/vkui-floating-ui": "^0.2.3",
83
86
  "date-fns": "^4.1.0"
84
87
  },
@@ -88,7 +91,7 @@
88
91
  "@types/node": "*",
89
92
  "react": "^18.3.1",
90
93
  "react-dom": "^18.3.1",
91
- "storybook": "8.4.2",
94
+ "storybook": "8.4.4",
92
95
  "ts-node": "*"
93
96
  },
94
97
  "size-limit": [
@@ -2,7 +2,6 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { useCustomEnsuredControl } from '../../hooks/useEnsuredControl';
5
- import { useObjectMemo } from '../../hooks/useObjectMemo';
6
5
  import type { HasChildren } from '../../types';
7
6
  import { AccordionContent } from './AccordionContent';
8
7
  import { AccordionContext } from './AccordionContext';
@@ -53,12 +52,15 @@ export const Accordion: React.FC<AccordionProps> & {
53
52
  disabled: restProps.disabled,
54
53
  });
55
54
 
56
- const context = useObjectMemo({
57
- labelId,
58
- contentId,
59
- expanded: expanded || false,
60
- onChange,
61
- });
55
+ const context = React.useMemo(
56
+ () => ({
57
+ labelId,
58
+ contentId,
59
+ expanded: expanded || false,
60
+ onChange,
61
+ }),
62
+ [contentId, expanded, labelId, onChange],
63
+ );
62
64
 
63
65
  return <AccordionContext.Provider value={context}>{children}</AccordionContext.Provider>;
64
66
  };
@@ -3,9 +3,9 @@
3
3
  import * as React from 'react';
4
4
  import { noop } from '@vkontakte/vkjs';
5
5
  import { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';
6
- import { useObjectMemo } from '../../hooks/useObjectMemo';
7
6
  import { usePlatform } from '../../hooks/usePlatform';
8
7
  import { useCSSKeyframesAnimationController } from '../../lib/animation';
8
+ import { ModalPopoutPortal } from '../AppRoot/ModalPopoutPortal';
9
9
  import { useScrollLock } from '../AppRoot/ScrollContext';
10
10
  import { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';
11
11
  import { Footnote } from '../Typography/Footnote/Footnote';
@@ -58,7 +58,7 @@ export const ActionSheet = ({
58
58
  }: ActionSheetProps): React.ReactNode => {
59
59
  const platform = usePlatform();
60
60
  const [closingBy, setClosingBy] = React.useState<undefined | CloseInitiators>(undefined);
61
- const onCloseWithOther = () => setClosingBy('other');
61
+ const onCloseWithOther = React.useCallback(() => setClosingBy('other'), []);
62
62
  const actionCallbackRef = React.useRef(noop);
63
63
 
64
64
  const [animationState, animationHandlers] = useCSSKeyframesAnimationController(
@@ -93,7 +93,10 @@ export const ActionSheet = ({
93
93
  },
94
94
  [],
95
95
  );
96
- const contextValue = useObjectMemo({ onItemClick, mode, onClose: onCloseWithOther });
96
+ const contextValue = React.useMemo(
97
+ () => ({ onItemClick, mode, onClose: onCloseWithOther }),
98
+ [mode, onCloseWithOther, onItemClick],
99
+ );
97
100
 
98
101
  const DropdownComponent = mode === 'menu' ? ActionSheetDropdownMenu : ActionSheetDropdownSheet;
99
102
 
@@ -140,15 +143,17 @@ export const ActionSheet = ({
140
143
  }
141
144
 
142
145
  return (
143
- <PopoutWrapper
144
- closing={Boolean(closingBy)}
145
- alignY="bottom"
146
- className={className}
147
- style={style}
148
- onClick={onCloseWithOther}
149
- fixed
150
- >
151
- {actionSheet}
152
- </PopoutWrapper>
146
+ <ModalPopoutPortal>
147
+ <PopoutWrapper
148
+ closing={Boolean(closingBy)}
149
+ alignY="bottom"
150
+ className={className}
151
+ style={style}
152
+ onClick={onCloseWithOther}
153
+ fixed
154
+ >
155
+ {actionSheet}
156
+ </PopoutWrapper>
157
+ </ModalPopoutPortal>
153
158
  );
154
159
  };
@@ -13,6 +13,8 @@ import type {
13
13
  HasDataAttribute,
14
14
  HasRootRef,
15
15
  } from '../../types';
16
+ import type { AppRootPortalProps } from '../AppRoot/AppRootPortal';
17
+ import { ModalPopoutPortal } from '../AppRoot/ModalPopoutPortal';
16
18
  import { useScrollLock } from '../AppRoot/ScrollContext';
17
19
  import type { ButtonProps } from '../Button/Button';
18
20
  import { FocusTrap } from '../FocusTrap/FocusTrap';
@@ -68,6 +70,7 @@ export interface AlertProps
68
70
  * `data-testid` для кнопки закрытия
69
71
  */
70
72
  dismissButtonTestId?: string;
73
+ usePortal?: AppRootPortalProps['usePortal'];
71
74
  }
72
75
 
73
76
  /**
@@ -88,6 +91,7 @@ export const Alert = ({
88
91
  dismissButtonMode = 'outside',
89
92
  dismissButtonTestId,
90
93
  getRootRef,
94
+ usePortal,
91
95
  ...restProps
92
96
  }: AlertProps): React.ReactNode => {
93
97
  const generatedId = React.useId();
@@ -136,69 +140,71 @@ export const Alert = ({
136
140
  useScrollLock();
137
141
 
138
142
  return (
139
- <PopoutWrapper
140
- className={className}
141
- closing={closing}
142
- style={style}
143
- onClick={close}
144
- getRootRef={getRootRef}
145
- >
146
- <FocusTrap
147
- {...restProps}
148
- {...animationHandlers}
149
- getRootRef={elementRef}
150
- onClick={stopPropagation}
151
- onClose={close}
152
- autoFocus={animationState === 'entered'}
153
- className={classNames(
154
- styles.host,
155
- platform === 'ios' && styles.ios,
156
- platform === 'vkcom' && styles.vkcom,
157
- closing ? styles.closing : styles.opening,
158
- isDesktop && styles.desktop,
159
- )}
160
- role="alertdialog"
161
- aria-modal
162
- aria-labelledby={titleId}
163
- aria-describedby={descriptionId}
143
+ <ModalPopoutPortal usePortal={usePortal}>
144
+ <PopoutWrapper
145
+ className={className}
146
+ closing={closing}
147
+ style={style}
148
+ onClick={close}
149
+ getRootRef={getRootRef}
164
150
  >
165
- <div
151
+ <FocusTrap
152
+ {...restProps}
153
+ {...animationHandlers}
154
+ getRootRef={elementRef}
155
+ onClick={stopPropagation}
156
+ onClose={close}
157
+ autoFocus={animationState === 'entered'}
166
158
  className={classNames(
167
- styles.content,
168
- dismissButtonMode === 'inside' && styles.contentWithButton,
159
+ styles.host,
160
+ platform === 'ios' && styles.ios,
161
+ platform === 'vkcom' && styles.vkcom,
162
+ closing ? styles.closing : styles.opening,
163
+ isDesktop && styles.desktop,
169
164
  )}
165
+ role="alertdialog"
166
+ aria-modal
167
+ aria-labelledby={titleId}
168
+ aria-describedby={descriptionId}
170
169
  >
171
- {hasReactNode(title) && <AlertTitle id={titleId}>{title}</AlertTitle>}
172
- {hasReactNode(description) && (
173
- <AlertDescription id={descriptionId}>{description}</AlertDescription>
170
+ <div
171
+ className={classNames(
172
+ styles.content,
173
+ dismissButtonMode === 'inside' && styles.contentWithButton,
174
+ )}
175
+ >
176
+ {hasReactNode(title) && <AlertTitle id={titleId}>{title}</AlertTitle>}
177
+ {hasReactNode(description) && (
178
+ <AlertDescription id={descriptionId}>{description}</AlertDescription>
179
+ )}
180
+ {children}
181
+ {isDismissButtonVisible && dismissButtonMode === 'inside' && (
182
+ <IconButton
183
+ label={dismissLabel}
184
+ className={classNames(styles.dismiss, 'vkuiInternalAlert__dismiss')}
185
+ onClick={close}
186
+ hoverMode="opacity"
187
+ activeMode="opacity"
188
+ data-testid={dismissButtonTestId}
189
+ >
190
+ <Icon20Cancel />
191
+ </IconButton>
192
+ )}
193
+ </div>
194
+ <AlertActions
195
+ actions={actions}
196
+ actionsAlign={actionsAlign}
197
+ actionsLayout={actionsLayout}
198
+ renderAction={renderAction}
199
+ onItemClick={onItemClick}
200
+ />
201
+ {isDismissButtonVisible && dismissButtonMode === 'outside' && (
202
+ <ModalDismissButton onClick={close} data-testid={dismissButtonTestId}>
203
+ {dismissLabel}
204
+ </ModalDismissButton>
174
205
  )}
175
- {children}
176
- {isDismissButtonVisible && dismissButtonMode === 'inside' && (
177
- <IconButton
178
- label={dismissLabel}
179
- className={classNames(styles.dismiss, 'vkuiInternalAlert__dismiss')}
180
- onClick={close}
181
- hoverMode="opacity"
182
- activeMode="opacity"
183
- data-testid={dismissButtonTestId}
184
- >
185
- <Icon20Cancel />
186
- </IconButton>
187
- )}
188
- </div>
189
- <AlertActions
190
- actions={actions}
191
- actionsAlign={actionsAlign}
192
- actionsLayout={actionsLayout}
193
- renderAction={renderAction}
194
- onItemClick={onItemClick}
195
- />
196
- {isDismissButtonVisible && dismissButtonMode === 'outside' && (
197
- <ModalDismissButton onClick={close} data-testid={dismissButtonTestId}>
198
- {dismissLabel}
199
- </ModalDismissButton>
200
- )}
201
- </FocusTrap>
202
- </PopoutWrapper>
206
+ </FocusTrap>
207
+ </PopoutWrapper>
208
+ </ModalPopoutPortal>
203
209
  );
204
210
  };
@@ -1,31 +1,3 @@
1
- .host {
2
- block-size: 100%;
3
- inline-size: 100%;
4
- }
5
-
6
- .userSelectNone {
7
- user-select: none;
8
- }
9
-
10
- /**
11
- * Хак для webkit-based браузеров, потому что на версиях iOS <= 14.* исчезает возможность
12
- * редактировать contenteditable элементы, если выше по дереву задан user-select: none;
13
- */
14
- .userSelectNone [contenteditable] {
15
- user-select: text;
16
- }
17
-
18
- @media (--pointer-has-not) {
19
- .pointerNone {
20
- user-select: none;
21
- }
22
-
23
- .pointerNone [contenteditable] {
24
- user-select: text;
25
- }
26
- }
27
-
28
- /* stylelint-disable-next-line selector-pseudo-class-disallowed-list */
29
- :global(.vkui__root--embedded) .host {
30
- overflow: auto;
1
+ .transformForPositionFixedElements {
2
+ transform: translate3d(0, 0, 0);
31
3
  }
@@ -1,23 +1,16 @@
1
1
  'use client';
2
2
 
3
3
  import * as React from 'react';
4
- import { classNames } from '@vkontakte/vkjs';
5
- import { useAdaptivity } from '../../hooks/useAdaptivity';
6
4
  import { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';
7
5
  import { useObjectMemo } from '../../hooks/useObjectMemo';
6
+ import { useSyncHTMLWithBaseVKUIClasses } from '../../hooks/useSyncHTMLWithBaseVKUIClasses';
7
+ import { useSyncHTMLWithTokens } from '../../hooks/useSyncHTMLWithTokens';
8
8
  import { getDocumentBody } from '../../lib/dom';
9
- import { useTokensClassName } from '../../lib/tokens';
10
9
  import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
11
- import { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';
12
10
  import { AppRootContext } from './AppRootContext';
11
+ import { AppRootStyleContainer } from './AppRootStyleContainer';
13
12
  import { ElementScrollController, GlobalScrollController } from './ScrollContext';
14
- import {
15
- extractPortalRootByProp,
16
- getClassNamesByMode,
17
- getParentElement,
18
- getUserSelectModeClassName,
19
- setSafeAreaInsets,
20
- } from './helpers';
13
+ import { extractPortalRootByProp } from './helpers';
21
14
  import type {
22
15
  AppRootLayout,
23
16
  AppRootMode,
@@ -73,6 +66,16 @@ export interface AppRootProps extends React.HTMLAttributes<HTMLDivElement> {
73
66
  * @since 6.2.0
74
67
  */
75
68
  userSelectMode?: AppRootUserSelectMode;
69
+ /*
70
+ * По умолчанию в режиме `mode="full"` VKUI в рантайме выставляет:
71
+ * - класс .vkui на html элемент
72
+ * - класс .vkui__root на элемент-контейнер, в который монтируется VKUI
73
+ * С помощью этой опции такое поведение можно отключить.
74
+ *
75
+ * Для корректной работы SSR рекоммендуется выставлять эти классы самостоятельно
76
+ * и отключить это поводение.
77
+ */
78
+ disableSettingVKUIClassesInRuntime?: boolean;
76
79
  }
77
80
 
78
81
  /**
@@ -82,117 +85,55 @@ export const AppRoot = ({
82
85
  children,
83
86
  mode = 'full',
84
87
  scroll = 'global',
85
- portalRoot: portalRootProp = null,
88
+ portalRoot: portalRootProp,
86
89
  disablePortal = false,
87
90
  disableParentTransformForPositionFixedElements,
88
- className,
89
91
  safeAreaInsets: safeAreaInsetsProp,
90
92
  layout,
91
93
  userSelectMode,
94
+ disableSettingVKUIClassesInRuntime,
92
95
  ...props
93
96
  }: AppRootProps): React.ReactNode => {
94
- const { hasPointer, sizeX = 'none', sizeY = 'none' } = useAdaptivity();
95
- const tokensClassName = useTokensClassName();
96
-
97
- const safeAreaInsets = useObjectMemo(safeAreaInsetsProp);
98
- const isKeyboardInputActiveRef = useKeyboardInputTracker();
99
97
  const appRootRef = React.useRef<HTMLDivElement | null>(null);
100
- const portalRootRef = React.useRef<HTMLElement | null>(null);
98
+ const popoutModalContainerRef = React.useRef<HTMLDivElement | null>(null);
99
+ const [portalRoot, setPortalRoot] = React.useState<HTMLElement | null>(
100
+ portalRootProp ? extractPortalRootByProp(portalRootProp) : null,
101
+ );
101
102
 
102
103
  useIsomorphicLayoutEffect(
103
- function setupPortalRoot() {
104
+ function syncPortalRootWithPortalRootProp() {
104
105
  const portalByProp = portalRootProp ? extractPortalRootByProp(portalRootProp) : null;
105
-
106
- if (portalByProp) {
107
- portalRootRef.current = portalByProp;
108
- return function cleanup() {
109
- portalRootRef.current = null;
110
- };
106
+ if (portalRootProp !== undefined) {
107
+ setPortalRoot(portalByProp);
111
108
  }
112
-
113
- const documentBody = getDocumentBody(appRootRef.current);
114
- const portal = documentBody.ownerDocument.createElement('div');
115
- documentBody.appendChild(portal);
116
- portalRootRef.current = portal;
117
- return function cleanup() {
118
- documentBody.removeChild(portal);
119
- portalRootRef.current = null;
120
- };
121
109
  },
122
110
  [portalRootProp],
123
111
  );
124
112
 
125
113
  useIsomorphicLayoutEffect(
126
- function setupContainers() {
127
- if (!appRootRef.current || !portalRootRef.current) {
128
- return;
129
- }
130
-
131
- const parentElement = getParentElement(appRootRef.current);
114
+ function removePortalRootOnUnmount() {
115
+ // Контейнер PortalRoot создаётся при первом вызове модалки или
116
+ // поповера использующего AppRootPortal.
117
+ // Потом он переиспользуется и не удаляется пока
118
+ // приложение не размонтируется.
119
+ // И создаётся только если в приложение не был передан
120
+ // пользовательский контейнер через свойство portalRootProp
121
+ // Сделано для поддержки SSR, чтобы при старте приложения
122
+ // никаких новых нод в DOM не создавалось.
132
123
  const documentBody = getDocumentBody(appRootRef.current);
133
- const documentElement = documentBody.ownerDocument.documentElement;
134
-
135
- const [baseClassNames, stylesClassNames] = getClassNamesByMode({
136
- mode,
137
- layout,
138
- tokensClassName,
139
- sizeX,
140
- sizeY,
141
- });
142
-
143
- /* eslint-disable no-restricted-properties */
144
- switch (mode) {
145
- case 'full': {
146
- if (parentElement) {
147
- parentElement.classList.add(...baseClassNames);
148
- }
149
-
150
- documentElement.classList.add(...stylesClassNames, 'vkui');
151
- const unsetSafeAreaInsets = setSafeAreaInsets(safeAreaInsets, documentElement);
152
-
153
- return function cleanup() {
154
- if (parentElement) {
155
- parentElement.classList.remove(...baseClassNames);
156
- }
157
-
158
- documentElement.classList.remove(...stylesClassNames, 'vkui');
159
- unsetSafeAreaInsets();
160
- };
161
- }
162
- case 'embedded': {
163
- if (parentElement) {
164
- parentElement.classList.add(...baseClassNames, ...stylesClassNames);
165
- if (!disableParentTransformForPositionFixedElements) {
166
- parentElement.style.setProperty('transform', 'translate3d(0, 0, 0)');
167
- }
168
- const unsetSafeAreaInsets = setSafeAreaInsets(safeAreaInsets, parentElement, portalRootRef.current); // prettier-ignore
169
- return function cleanup() {
170
- parentElement.classList.remove(...baseClassNames, ...stylesClassNames);
171
- if (!disableParentTransformForPositionFixedElements) {
172
- parentElement.style.removeProperty('transform');
173
- }
174
- unsetSafeAreaInsets();
175
- };
124
+ return function cleanup() {
125
+ if (portalRoot) {
126
+ const isPortalRootPassedByProps = Boolean(portalRootProp);
127
+ if (!isPortalRootPassedByProps) {
128
+ // удаляем portalRoot из дома только если он
129
+ // был создан в AppRootPortal.
130
+ // Если он был передан через пропы - удалять нельзя
131
+ documentBody.removeChild(portalRoot);
176
132
  }
177
- /* istanbul ignore next: node.parentElement может быть null, но такой кейс в теории невозможен */
178
- return;
179
- }
180
- /* istanbul ignore next: не покрывается за счёт теста на <AppRoot mode="partial" /> */
181
- case 'partial': {
182
- return;
183
133
  }
184
- }
185
- /* eslint-enable no-restricted-properties */
134
+ };
186
135
  },
187
- [
188
- mode,
189
- layout,
190
- disableParentTransformForPositionFixedElements,
191
- tokensClassName,
192
- sizeX,
193
- sizeY,
194
- safeAreaInsets,
195
- ],
136
+ [portalRootProp],
196
137
  );
197
138
 
198
139
  const ScrollController = React.useMemo(
@@ -200,10 +141,15 @@ export const AppRoot = ({
200
141
  [scroll],
201
142
  );
202
143
 
144
+ const isKeyboardInputActiveRef = useKeyboardInputTracker();
145
+ const safeAreaInsets = useObjectMemo(safeAreaInsetsProp);
203
146
  const contextValue = React.useMemo(
204
147
  () => ({
205
148
  appRoot: appRootRef,
206
- portalRoot: portalRootRef,
149
+ portalRoot,
150
+ popoutModalRoot: popoutModalContainerRef,
151
+ setPortalRoot,
152
+ safeAreaInsets,
207
153
  embedded: mode === 'embedded',
208
154
  mode,
209
155
  disablePortal,
@@ -211,32 +157,54 @@ export const AppRoot = ({
211
157
  get keyboardInput() {
212
158
  return isKeyboardInputActiveRef.current;
213
159
  },
160
+ userSelectMode,
214
161
  }),
215
- [disablePortal, isKeyboardInputActiveRef, layout, mode],
216
- );
217
-
218
- const content = (
219
- <AppRootContext.Provider value={contextValue}>
220
- <ScrollController elRef={appRootRef}>{children}</ScrollController>
221
- </AppRootContext.Provider>
162
+ [
163
+ portalRoot,
164
+ disablePortal,
165
+ isKeyboardInputActiveRef,
166
+ layout,
167
+ mode,
168
+ safeAreaInsets,
169
+ userSelectMode,
170
+ ],
222
171
  );
223
172
 
224
- const { isWebView } = useConfigProvider();
225
- const userSelectModeClassName = getUserSelectModeClassName({
226
- userSelectMode,
227
- isWebView,
228
- hasPointer,
173
+ /*
174
+ * Вешаем класс токенов на html в режиме full.
175
+ * Это необходимо, чтобы цвета html элемента и скроллбара соответствовали текущей цветовой схеме:
176
+ * - фон html элемента виден, если пользователь оверскролит. Тогда возникает анимация bounce-эффекта и виден фон html элемента. Без токенов в черной теме будет выглядывать белый фон.
177
+ * - цвет системного сколлбара зависит от color-sheme свойства, значение которого задётся токенами и должно быть выставлено именно на html элементе.
178
+ * В режме SSR пользователи сами могу задать этот класс на html-элементе. главное, чтобы он соответствовал переданным platform и appearence свойствам.
179
+ */
180
+ useSyncHTMLWithTokens({ appRootRef, enable: mode === 'full' });
181
+ /*
182
+ * По умолчанию VKUI будет выставлять .vkui на html и .vkui__root на контейнере в режиме full.
183
+ * В режиме embedded будет выставлять только .vkui__root на контейнере.
184
+ */
185
+ useSyncHTMLWithBaseVKUIClasses({
186
+ appRootRef,
187
+ mode,
188
+ enable: mode !== 'partial' && !disableSettingVKUIClassesInRuntime,
229
189
  });
230
190
 
231
191
  return mode === 'partial' ? (
232
- content
192
+ <AppRootContext.Provider value={contextValue}>
193
+ <ScrollController elRef={appRootRef}>{children}</ScrollController>
194
+ </AppRootContext.Provider>
233
195
  ) : (
234
- <div
235
- ref={appRootRef}
236
- className={classNames(styles.host, userSelectModeClassName, className)}
237
- {...props}
238
- >
239
- {content}
240
- </div>
196
+ <AppRootContext.Provider value={contextValue}>
197
+ <AppRootStyleContainer
198
+ getRootRef={appRootRef}
199
+ className={
200
+ mode === 'embedded' && !disableParentTransformForPositionFixedElements
201
+ ? styles.transformForPositionFixedElements
202
+ : undefined
203
+ }
204
+ {...props}
205
+ >
206
+ <ScrollController elRef={appRootRef}>{children}</ScrollController>
207
+ </AppRootStyleContainer>
208
+ </AppRootContext.Provider>
241
209
  );
242
210
  };
@@ -1,13 +1,19 @@
1
1
  import * as React from 'react';
2
+ import { noop } from '@vkontakte/vkjs';
3
+ import { type AppRootUserSelectMode, type SafeAreaInsets } from './types';
2
4
 
3
5
  export interface AppRootContextInterface {
4
6
  appRoot: React.RefObject<HTMLElement>;
5
- portalRoot: React.RefObject<HTMLElement>;
7
+ portalRoot: HTMLElement | null;
8
+ popoutModalRoot: React.MutableRefObject<HTMLDivElement | null>;
9
+ setPortalRoot: (element: HTMLElement) => void;
10
+ safeAreaInsets?: SafeAreaInsets;
6
11
  embedded: boolean;
7
12
  mode: 'partial' | 'embedded' | 'full';
8
13
  keyboardInput: boolean;
9
14
  disablePortal: boolean;
10
15
  layout?: 'card' | 'plain';
16
+ userSelectMode?: AppRootUserSelectMode;
11
17
  }
12
18
 
13
19
  /**
@@ -18,7 +24,10 @@ export interface AppRootContextInterface {
18
24
  export const DEFAULT_APP_ROOT_CONTEXT_VALUE: AppRootContextInterface = {
19
25
  appRoot: React.createRef(),
20
26
  mode: 'full',
21
- portalRoot: React.createRef(),
27
+ portalRoot: null,
28
+ popoutModalRoot: React.createRef(),
29
+ setPortalRoot: noop,
30
+ safeAreaInsets: undefined,
22
31
  embedded: false,
23
32
  keyboardInput: false,
24
33
  disablePortal: false,