@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
@@ -1,54 +1,17 @@
1
- import * as React from 'react';
2
- import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
3
- import type { ModalElements, ModalsStateEntry, ModalType } from './types';
4
-
5
- export type ModalRegistryEntry = ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>;
6
- type ModalRefs = { [k in keyof ModalElements]: (e: ModalElements[k]) => void };
7
-
8
- export interface ModalRootContextInterface {
9
- updateModalHeight: VoidFunction;
10
- registerModal: (data: ModalRegistryEntry) => void;
11
- onClose?: VoidFunction;
12
- isInsideModal: boolean;
13
- }
14
-
15
- export const ModalRootContext: React.Context<ModalRootContextInterface> =
16
- React.createContext<ModalRootContextInterface>({
17
- updateModalHeight: () => undefined,
18
- registerModal: () => undefined,
19
- isInsideModal: false,
20
- });
1
+ import { createContext, type RefObject } from 'react';
2
+ import { noop } from '@vkontakte/vkjs';
3
+ import type { ModalRootContextInterface } from './types';
21
4
 
22
5
  /**
23
- * All referenced elements must be static
6
+ * Сохраняем `ref` компонента `ModalOverlay` из `ModalRoot` в контекст, чтобы можно было пробросить
7
+ * его до `ModalPage` и `ModalCard`.
8
+ *
9
+ * @private
24
10
  */
25
- export function useModalRegistry(
26
- id: string | undefined,
27
- type: ModalType,
28
- ): {
29
- refs: Required<ModalRefs>;
30
- } {
31
- const modalContext = React.useContext(ModalRootContext);
32
- const elements = React.useRef<ModalElements>({}).current;
33
- useIsomorphicLayoutEffect(() => {
34
- if (id !== undefined) {
35
- modalContext.registerModal({ ...elements, type, id });
36
- // unset refs on unmount to prevent leak
37
- const reset = Object.keys(elements).reduce<ModalRegistryEntry>(
38
- (acc, k) => ({ ...acc, [k]: null }),
39
- { type, id },
40
- );
41
- return () => modalContext.registerModal(reset);
42
- }
43
- return undefined;
44
- }, []);
11
+ export const ModalRootOverlayContext = createContext<RefObject<HTMLDivElement>>({ current: null });
45
12
 
46
- const refs = React.useRef<Required<ModalRefs>>({
47
- modalElement: (e) => (elements.modalElement = e),
48
- innerElement: (e) => (elements.innerElement = e),
49
- headerElement: (e) => (elements.headerElement = e),
50
- contentElement: (e) => (elements.contentElement = e),
51
- bottomInset: (e) => (elements.bottomInset = e),
52
- }).current;
53
- return { refs };
54
- }
13
+ export const ModalRootContext = createContext<ModalRootContextInterface>({
14
+ updateModalHeight: noop,
15
+ registerModal: noop,
16
+ isInsideModal: false,
17
+ });
@@ -0,0 +1,6 @@
1
+ .host {
2
+ position: absolute;
3
+ inset: 0;
4
+ user-select: none;
5
+ -webkit-tap-highlight-color: transparent;
6
+ }
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+
3
+ import { useContext } from 'react';
4
+ import { setRef } from '../../../lib/utils';
5
+ import type { ModalOverlayProps } from '../../ModalOverlay/ModalOverlay';
6
+ import { ModalRootOverlayContext } from '../ModalRootContext';
7
+ import styles from './VisuallyHiddenModalOverlay.module.css';
8
+
9
+ export type VisuallyHiddenModalOverlayProps = ModalOverlayProps;
10
+
11
+ /**
12
+ * `ModalRoot` выставляет общий `ModalOverlay` для всех потомков, и чтобы не нарушить логику
13
+ * в `ModalPage` и `ModalCard`, в них прокидывается данный компонент, который визуально не виден,
14
+ * но при этом на нём сохраняется возможность взаимодействия.
15
+ *
16
+ * В `getRooRef` отдаёт ссылку на DOM общего `ModalOverlay`.
17
+ *
18
+ * @private
19
+ */
20
+ export const VisuallyHiddenModalOverlay = ({
21
+ visible: visibleExcluded,
22
+ position: positionExcluded,
23
+ getRootRef,
24
+ ...restProps
25
+ }: VisuallyHiddenModalOverlayProps) => {
26
+ const ref = useContext(ModalRootOverlayContext);
27
+ return (
28
+ <div
29
+ {...restProps}
30
+ aria-hidden="true"
31
+ className={styles.host}
32
+ ref={function handleCurrentRefForForwardContextRef() {
33
+ setRef(ref.current, getRootRef);
34
+ }}
35
+ />
36
+ );
37
+ };
@@ -1,13 +1,19 @@
1
- import type { DOMContextInterface } from '../../lib/dom';
2
- import type { HasPlatform } from '../../types';
3
- import type { ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';
1
+ /** TODO [>=8] Удалить deprecated типы */
2
+ import type { AppRootPortalProps } from '../AppRoot/AppRootPortal';
4
3
 
4
+ /**
5
+ * @deprecated будет удалён в **VKUI v8**
6
+ */
5
7
  export type ModalType = 'page' | 'card';
6
8
 
9
+ /**
10
+ * @deprecated будет удалён в **VKUI v8**
11
+ */
7
12
  export type TranslateRange = [number, number];
8
13
 
9
- export type ModalsState = { [index: string]: ModalsStateEntry };
10
-
14
+ /**
15
+ * @deprecated будет удалён в **VKUI v8**
16
+ */
11
17
  export interface ModalElements {
12
18
  modalElement?: HTMLElement | null;
13
19
  innerElement?: HTMLElement | null;
@@ -16,6 +22,9 @@ export interface ModalElements {
16
22
  bottomInset?: HTMLElement | null;
17
23
  }
18
24
 
25
+ /**
26
+ * @deprecated будет удалён в **VKUI v8**
27
+ */
19
28
  export interface ModalsStateEntry extends ModalElements {
20
29
  id: string | null;
21
30
  /**
@@ -72,44 +81,75 @@ export interface ModalsStateEntry extends ModalElements {
72
81
  preventClose?: boolean;
73
82
  }
74
83
 
75
- export interface ModalRootProps {
76
- activeModal?: string | null;
77
- children: React.ReactElement | Iterable<React.ReactElement>;
84
+ export type ModalRootActiveModal = string | null;
85
+
86
+ export type ModalRootCallbackFunction = (modalId: string) => void;
87
+
88
+ type ModalRootBaseProps = {
89
+ activeModal?: ModalRootActiveModal;
90
+
91
+ /**
92
+ * `data-testid` для маски
93
+ */
94
+ modalOverlayTestId?: string;
95
+
96
+ /**
97
+ * Отключает фокус на контейнер диалогового окна при открытии.
98
+ */
99
+ noFocusToDialog?: boolean;
100
+
101
+ usePortal?: AppRootPortalProps['usePortal'];
78
102
 
79
103
  /**
80
104
  * Будет вызвано при начале открытия активной модалки с её id
81
105
  */
82
- onOpen?: (modalId: string) => void;
106
+ onOpen?: ModalRootCallbackFunction;
83
107
 
84
108
  /**
85
109
  * Будет вызвано при окончательном открытии активной модалки с её id
86
110
  */
87
- onOpened?: (modalId: string) => void;
111
+ onOpened?: ModalRootCallbackFunction;
88
112
 
89
113
  /**
90
114
  * Будет вызвано при начале закрытия активной модалки с её id
91
115
  */
92
- onClose?: (modalId: string) => void;
116
+ onClose?: ModalRootCallbackFunction;
93
117
 
94
118
  /**
95
119
  * Будет вызвано при окончательном закрытии активной модалки с её id
96
120
  */
97
- onClosed?: (modalId: string) => void;
121
+ onClosed?: ModalRootCallbackFunction;
122
+ };
98
123
 
124
+ export interface ModalRootProps extends ModalRootBaseProps {
125
+ children: React.ReactElement | Iterable<React.ReactElement>;
126
+ }
127
+
128
+ type ModalRootContextBaseInterface = {
99
129
  /**
100
- * `data-testid` для маски
130
+ * Обозначает, в контексте ли модального окна мы сейчас.
101
131
  */
102
- modalOverlayTestId?: string;
132
+ isInsideModal: boolean;
103
133
 
104
134
  /**
105
- * Отключает фокус на контейнер диалогового окна при открытии.
135
+ * С **VKUI v7** задача с обновлением высоты контента при `dynamicContentHeight` решается через CSS.
136
+ *
137
+ * @deprecated будет удалён в **VKUI v8**
106
138
  */
107
- noFocusToDialog?: boolean;
108
- }
139
+ updateModalHeight: VoidFunction;
109
140
 
110
- export interface ModalRootWithDOMProps extends HasPlatform, ModalRootProps, DOMContextInterface {
111
141
  /**
112
- * @ignore
142
+ * С **VKUI v7** регистрация модальных окон больше не требуется.
143
+ *
144
+ * @deprecated будет удалён в **VKUI v8**
113
145
  */
114
- configProvider?: ConfigProviderContextInterface;
146
+ registerModal: (data: ModalElements & Required<Pick<ModalsStateEntry, 'type' | 'id'>>) => void;
147
+ };
148
+
149
+ export interface ModalRootContextInterface
150
+ extends ModalRootContextBaseInterface,
151
+ ModalRootBaseProps {}
152
+
153
+ export interface UseModalRootContext extends ModalRootContextBaseInterface {
154
+ onClose?: VoidFunction;
115
155
  }
@@ -1,244 +1,90 @@
1
- 'use client';
2
-
3
- import * as React from 'react';
4
- import { isFunction, noop } from '@vkontakte/vkjs';
5
- import { getNavId } from '../../lib/getNavId';
1
+ import { useContext, useState } from 'react';
6
2
  import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
7
- import { warnOnce } from '../../lib/warnOnce';
8
- import type { HasChildren } from '../../types';
9
- import type { ModalsState, ModalsStateEntry } from './types';
10
-
11
- interface ModalTransitionState {
12
- activeModal?: string | null;
13
- enteringModal?: string | null;
14
- exitingModal?: string | null;
15
- history?: string[];
16
- isBack?: boolean | null;
3
+ import type { AnyFunction } from '../../types';
4
+ import { ModalOverlay, type ModalOverlayProps } from '../ModalOverlay/ModalOverlay';
5
+ import { ModalRootContext } from './ModalRootContext';
6
+ import { VisuallyHiddenModalOverlay } from './VisuallyHiddenModalOverlay/VisuallyHiddenModalOverlay';
7
+ import type { ModalRootCallbackFunction } from './types';
8
+
9
+ export interface UseModalManager {
10
+ id: string;
11
+ open: boolean;
12
+ keepMounted: boolean;
13
+ modalOverlayTestId?: string;
14
+ noFocusToDialog?: boolean;
15
+ onOpen?: AnyFunction;
16
+ onOpened?: AnyFunction;
17
+ onClose?: AnyFunction;
18
+ onClosed?: AnyFunction;
17
19
  }
18
20
 
19
- export interface ModalTransitionProps extends ModalTransitionState {
20
- onEnter: VoidFunction;
21
- onEntered: (id: string | null) => void;
22
- onExit: VoidFunction;
23
- onExited: (id: string | null) => void;
24
- getModalState: (id: string | undefined | null) => ModalsStateEntry | undefined;
25
- delayEnter: boolean;
21
+ export interface UseModalManagerResolvedProps {
22
+ open: boolean;
23
+ noFocusToDialog?: boolean;
24
+ modalOverlayTestId?: string;
25
+ ModalOverlay: React.ComponentType<ModalOverlayProps>;
26
+ onOpen?: AnyFunction;
27
+ onOpened?: AnyFunction;
28
+ onClose?: AnyFunction;
29
+ onClosed?: AnyFunction;
26
30
  }
27
31
 
28
- function getModals(children: React.ReactNode | React.ReactNode[]) {
29
- return React.Children.toArray(children) as React.ReactElement[];
30
- }
31
-
32
- const warn = warnOnce('ModalRoot');
33
-
34
- export function modalTransitionReducer(
35
- state: ModalTransitionState,
36
- action: {
37
- type: 'setActive' | 'entered' | 'exited' | 'inited';
38
- id: string | null;
39
- },
40
- ): ModalTransitionState {
41
- if (action.type === 'setActive' && action.id !== state.activeModal) {
42
- const nextModal = action.id;
43
- // preserve exiting modal if switching mid-transition
44
- const prevModal = state.exitingModal || state.activeModal;
45
- let history = state.history ? [...state.history] : [];
46
- const isBack = Boolean(nextModal && history.includes(nextModal));
47
-
48
- if (nextModal === null) {
49
- history = [];
50
- } else if (isBack) {
51
- history = history.splice(0, history.indexOf(nextModal) + 1);
52
- } else {
53
- history.push(nextModal);
54
- }
55
-
56
- return {
57
- activeModal: nextModal,
58
- // not entering yet
59
- enteringModal: null,
60
- exitingModal: prevModal,
61
- history,
62
- isBack,
63
- };
64
- }
65
- if (action.type === 'entered' && action.id === state.enteringModal) {
66
- return { ...state, enteringModal: null };
67
- }
68
- if (action.type === 'exited' && action.id === state.exitingModal) {
69
- return { ...state, exitingModal: null };
70
- }
71
- if (action.type === 'inited' && action.id === state.activeModal) {
72
- return { ...state, enteringModal: action.id };
73
- }
74
- return state;
75
- }
76
-
77
- /**
78
- * Реализует переход модалок. При смене activeModal m1 -> m2:
79
- * 1. activeModal: m1, exitingModal: null, enteringModal: null, триггер перехода
80
- * 2. activeModal: m2, exitingModal: m1, enteringModal: null, рендерим m2 чтобы прошел init, начинаем анимацию выхода
81
- * одновременный переход между ModalPage:
82
- * 3a. activeModal: m2, exitingModal: m1, enteringModal: m2
83
- * 4a. exitingModal и enteringModal переходят в null в порядке завершения анимации
84
- * ИЛИ дожидаемся скрытия ModalCard
85
- * 3b. activeModal: m2, exitingModal: null, enteringModal: m2
86
- * 4b. enteringModal переходит в null после завершения анимации
87
- * 5. activeModal: m2, exitingModal: null, enteringModal: null, переход закончен
88
- */
89
- export function useModalManager(
90
- activeModal: string | null | undefined,
91
- children: React.ReactNode | React.ReactNode[],
92
- onOpen: (id: string) => void = noop,
93
- onOpened: (id: string) => void = noop,
94
- onClose: (id: string) => void = noop,
95
- onClosed: (id: string) => void = noop,
96
- initModal: (state: ModalsStateEntry) => void = noop,
97
- ): ModalTransitionProps {
98
- const modalsState = React.useRef<ModalsState>({}).current;
99
- getModals(children).forEach((Modal) => {
100
- const modalProps = Modal.props;
101
- const id = getNavId(modalProps, warn);
102
- const state: ModalsStateEntry = (id !== undefined && modalsState[id]) || {
103
- id: id ?? null,
104
- };
105
-
106
- state.onOpen = Modal.props.onOpen;
107
- state.onOpened = Modal.props.onOpened;
108
- state.onClose = Modal.props.onClose;
109
- state.onClosed = Modal.props.onClosed;
110
- state.preventClose = Modal.props.preventClose;
111
- // ModalPage props
112
- if (typeof modalProps.settlingHeight === 'number') {
113
- state.settlingHeight = modalProps.settlingHeight;
114
- }
115
-
116
- if (state.id !== null) {
117
- modalsState[state.id] = state;
118
- }
119
- });
120
-
121
- const isMissing = activeModal && !modalsState[activeModal];
122
- const safeActiveModal = isMissing ? null : activeModal;
123
- const [transitionState, dispatchTransition] = React.useReducer(modalTransitionReducer, {
124
- activeModal: safeActiveModal,
125
- enteringModal: null,
126
- exitingModal: null,
127
- history: safeActiveModal ? [safeActiveModal] : [],
128
- isBack: false,
129
- });
130
-
131
- // Map props to state, render activeModal for init
132
- useIsomorphicLayoutEffect(() => {
133
- // ignore non-existent activeModal
134
- if (process.env.NODE_ENV === 'development' && isMissing) {
135
- warn(`Переход невозможен - модальное окно (страница) ${activeModal} не существует`, 'error');
136
- }
137
- dispatchTransition({ type: 'setActive', id: safeActiveModal ?? null });
138
- }, [activeModal]);
139
-
140
- // Init activeModal & set enteringModal
141
- useIsomorphicLayoutEffect(() => {
142
- if (transitionState.activeModal) {
143
- initModal(modalsState[transitionState.activeModal]);
144
- dispatchTransition({ type: 'inited', id: transitionState.activeModal });
145
- }
146
- }, [transitionState.activeModal]);
147
-
148
- const isCard = (id: string | null | undefined) => id != null && modalsState[id]?.type === 'card';
149
- const onEntered = React.useCallback(
150
- (id: string | null) => {
151
- if (id) {
152
- const modalState = modalsState[id];
153
-
154
- if (isFunction(modalState.onOpened)) {
155
- modalState.onOpened();
156
- } else if (isFunction(onOpened)) {
157
- onOpened(id);
158
- }
159
- }
160
-
161
- dispatchTransition({ type: 'entered', id });
162
- },
163
- [modalsState, onOpened],
164
- );
165
- const onExited = React.useCallback(
166
- (id: string | null) => {
167
- if (id) {
168
- const modalState = modalsState[id];
169
-
170
- if (isFunction(modalState.onClosed)) {
171
- modalState.onClosed();
172
- } else if (isFunction(onClosed)) {
173
- onClosed(id);
174
- }
32
+ export type UseModalManagerResult =
33
+ | { mounted: false }
34
+ | ({ mounted: true } & UseModalManagerResolvedProps);
35
+
36
+ export const useModalManager = ({
37
+ id,
38
+ open,
39
+ keepMounted,
40
+ modalOverlayTestId,
41
+ noFocusToDialog,
42
+ onOpen,
43
+ onOpened,
44
+ onClose,
45
+ onClosed,
46
+ }: UseModalManager): UseModalManagerResult => {
47
+ const context = useContext(ModalRootContext);
48
+ const opened = context.isInsideModal ? context.activeModal === id : open;
49
+
50
+ const [unmounted, setUnmounted] = useState(keepMounted ? false : !opened);
51
+
52
+ useIsomorphicLayoutEffect(
53
+ function unsetUnmounted() {
54
+ if (!keepMounted && opened) {
55
+ setUnmounted((prev) => (prev ? false : prev));
175
56
  }
176
-
177
- dispatchTransition({ type: 'exited', id });
178
57
  },
179
- [modalsState, onClosed],
180
- );
181
- const delayEnter = Boolean(
182
- transitionState.exitingModal && (isCard(activeModal) || isCard(transitionState.exitingModal)),
183
- );
184
- const getModalState = React.useCallback(
185
- (id: string | undefined | null) => (id ? modalsState[id] : undefined),
186
- [modalsState],
58
+ [opened, keepMounted],
187
59
  );
188
60
 
189
- function onEnter() {
190
- const modalState = transitionState.activeModal && modalsState[transitionState.activeModal];
191
- if (modalState) {
192
- if (isFunction(modalState.onOpen)) {
193
- modalState.onOpen();
194
- } else if (isFunction(onOpen) && modalState.id) {
195
- onOpen(modalState.id);
196
- }
197
- }
198
- }
199
-
200
- function onExit() {
201
- const modalState = transitionState.activeModal && modalsState[transitionState.activeModal];
202
- if (modalState && !modalState.preventClose) {
203
- if (isFunction(modalState.onClose)) {
204
- modalState.onClose();
205
- } else if (isFunction(onClose) && modalState.id) {
206
- onClose(modalState.id);
207
- }
208
- }
61
+ if (unmounted) {
62
+ return { mounted: false };
209
63
  }
210
64
 
211
65
  return {
212
- onEnter,
213
- onEntered,
214
- onExit,
215
- onExited,
216
- ...transitionState,
217
- delayEnter,
218
- getModalState,
219
- };
220
- }
66
+ mounted: true,
67
+ open: opened,
68
+ noFocusToDialog: noFocusToDialog || context.noFocusToDialog,
69
+ modalOverlayTestId: modalOverlayTestId || context.modalOverlayTestId,
70
+ ModalOverlay: context.isInsideModal ? VisuallyHiddenModalOverlay : ModalOverlay,
71
+ onOpen: onOpen || getContextCallback(id, context.onOpen),
72
+ onOpened: onOpened || getContextCallback(id, context.onOpened),
73
+ onClose: onClose || getContextCallback(id, context.onClose),
74
+ onClosed: function handleClosed(...args: any[]) {
75
+ if (!keepMounted) {
76
+ setUnmounted(true);
77
+ }
221
78
 
222
- type WithModalManager<Props extends ModalTransitionProps> = HasChildren &
223
- Omit<Props, keyof ModalTransitionProps> & {
224
- activeModal?: string | null;
79
+ if (onClosed) {
80
+ onClosed(...args);
81
+ } else {
82
+ context.onClosed?.(id);
83
+ }
84
+ },
225
85
  };
86
+ };
226
87
 
227
- export function withModalManager(initModal: (a: ModalsStateEntry) => void = noop) {
228
- return function <Props extends ModalTransitionProps>(
229
- Wrapped: React.ComponentType<Props>,
230
- ): React.ComponentType<WithModalManager<Props>> {
231
- return function WithModalManager(props) {
232
- const transitionManager = useModalManager(
233
- props.activeModal,
234
- props.children,
235
- (props as any).onOpen,
236
- (props as any).onOpened,
237
- (props as any).onClose,
238
- (props as any).onClosed,
239
- initModal,
240
- );
241
- return <Wrapped {...(props as any)} {...transitionManager} />;
242
- };
243
- };
88
+ function getContextCallback(id: string, fn: ModalRootCallbackFunction | undefined) {
89
+ return fn ? () => fn(id) : undefined;
244
90
  }
@@ -0,0 +1,21 @@
1
+ import { useCallback, useContext } from 'react';
2
+ import { ModalRootContext } from './ModalRootContext';
3
+ import type { UseModalRootContext } from './types';
4
+
5
+ export const useModalRootContext = (): UseModalRootContext => {
6
+ const {
7
+ activeModal,
8
+ isInsideModal,
9
+ onClose: onCloseContext,
10
+ updateModalHeight,
11
+ registerModal,
12
+ } = useContext(ModalRootContext);
13
+
14
+ const onClose = useCallback(() => {
15
+ if (onCloseContext && activeModal !== null && activeModal !== undefined) {
16
+ onCloseContext(activeModal);
17
+ }
18
+ }, [activeModal, onCloseContext]);
19
+
20
+ return { isInsideModal, onClose, updateModalHeight, registerModal };
21
+ };
@@ -1,16 +1,21 @@
1
1
  'use client';
2
2
 
3
+ /** TODO [>=8] Удалить HOC */
3
4
  import * as React from 'react';
4
- import type { ModalRootContextInterface } from './ModalRootContext';
5
- import { useModalRootContext } from './useModalRootContext';
5
+ import { ModalRootContext } from './ModalRootContext';
6
+ import type { ModalRootContextInterface } from './types';
6
7
 
7
8
  type PickedProps = Pick<ModalRootContextInterface, 'updateModalHeight'>;
8
9
 
10
+ /**
11
+ * @deprecated HOC не актуален и будет удалён в **VKUI v8**, т.к. вызывать `updateModalHeight()`
12
+ * для модальных окон с `dynamicContentHeight` больше не требуется.
13
+ */
9
14
  export function withModalRootContext<P extends PickedProps>(
10
15
  Component: React.ComponentType<P>,
11
16
  ): React.ComponentType<Omit<P, keyof PickedProps>> {
12
17
  function WithModalRootContext(props: Omit<P, keyof PickedProps>) {
13
- const { updateModalHeight } = useModalRootContext();
18
+ const { updateModalHeight } = React.useContext(ModalRootContext);
14
19
 
15
20
  return <Component {...(props as P)} updateModalHeight={updateModalHeight} />;
16
21
  }
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { type ChangeEventHandler } from 'react';
3
+ import { type ChangeEvent, type ChangeEventHandler } from 'react';
4
4
  import * as React from 'react';
5
5
  import { classNames } from '@vkontakte/vkjs';
6
6
  import { useAdaptivity } from '../../hooks/useAdaptivity';
@@ -61,8 +61,11 @@ export interface NativeSelectProps
61
61
  defaultValue?: SelectValue;
62
62
  /**
63
63
  * Коллбэк срабатывающий при изменении выбранного значения.
64
+ * Вторым параметром прокидывается новое значение
65
+ *
66
+ * > ⚠️ Лучше использовать второй параметр при работе с компонентом
64
67
  */
65
- onChange?: (newValue: SelectValue) => void;
68
+ onChange?: (e: ChangeEvent<HTMLSelectElement>, newValue: SelectValue) => void;
66
69
  placeholder?: string;
67
70
  multiline?: boolean;
68
71
  selectType?: SelectType;
@@ -72,12 +75,6 @@ export interface NativeSelectProps
72
75
  icon?: React.ReactNode;
73
76
  }
74
77
 
75
- export interface SelectState {
76
- value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];
77
- title?: string;
78
- notSelected?: boolean;
79
- }
80
-
81
78
  /**
82
79
  * @see https://vkcom.github.io/VKUI/#/NativeSelect
83
80
  */
@@ -115,7 +112,13 @@ const NativeSelect = ({
115
112
 
116
113
  const _onChange: ChangeEventHandler<HTMLSelectElement> = (e) => {
117
114
  const newValue = remapFromNativeValueToSelectValue(e.target.value);
118
- onChange?.(newValue);
115
+ if (e.target.value === NOT_SELECTED.NATIVE) {
116
+ e.target.value = '';
117
+ }
118
+ if (e.currentTarget.value === NOT_SELECTED.NATIVE) {
119
+ e.currentTarget.value = '';
120
+ }
121
+ onChange?.(e, newValue);
119
122
  };
120
123
  useIsomorphicLayoutEffect(checkSelectedOption, [children]);
121
124