@vkontakte/vkui 4.15.0 → 4.16.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 (349) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +391 -282
  4. package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -0
  5. package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  6. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +2 -2
  7. package/.cache/ts/src/components/FixedLayout/FixedLayout.d.ts +4 -9
  8. package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +1 -2
  9. package/.cache/ts/src/components/Root/Root.d.ts +5 -27
  10. package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  11. package/.cache/ts/src/components/Tappable/Tappable.d.ts +12 -9
  12. package/.cache/ts/src/components/Touch/Touch.d.ts +1 -2
  13. package/.cache/ts/src/components/UsersStack/masks.d.ts +1 -1
  14. package/.cache/ts/src/hooks/useEventListener.d.ts +2 -2
  15. package/.cache/ts/src/hooks/useKeyboard.d.ts +11 -0
  16. package/.cache/ts/src/index.d.ts +1 -1
  17. package/.cache/ts/src/lib/select.d.ts +7 -0
  18. package/.cache/ts/src/lib/touch.d.ts +1 -1
  19. package/.cache/ts/src/lib/utils.d.ts +2 -3
  20. package/.cache/ts/src/types.d.ts +2 -6
  21. package/.cache/ts/src/unstable/index.d.ts +2 -0
  22. package/babel.cjs.config.js +7 -1
  23. package/babel.config.js +7 -1
  24. package/dist/cjs/components/AppRoot/AppRoot.d.ts +1 -0
  25. package/dist/cjs/components/AppRoot/AppRoot.js +29 -1
  26. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  27. package/dist/cjs/components/Banner/Banner.js +1 -1
  28. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  29. package/dist/cjs/components/Cell/Cell.js +3 -3
  30. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  31. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  32. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +5 -6
  33. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  34. package/dist/cjs/components/ChipsSelect/useChipsSelect.js +2 -2
  35. package/dist/cjs/components/ChipsSelect/useChipsSelect.js.map +1 -1
  36. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +2 -2
  37. package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -3
  38. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  39. package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +4 -9
  40. package/dist/cjs/components/FixedLayout/FixedLayout.js +91 -179
  41. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  42. package/dist/cjs/components/Gallery/Gallery.js +2 -2
  43. package/dist/cjs/components/Gallery/Gallery.js.map +1 -1
  44. package/dist/cjs/components/Header/Header.js +1 -1
  45. package/dist/cjs/components/Header/Header.js.map +1 -1
  46. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +6 -1
  47. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  48. package/dist/cjs/components/ModalPage/ModalPage.d.ts +1 -2
  49. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  50. package/dist/cjs/components/ModalRoot/ModalRoot.js +2 -2
  51. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  52. package/dist/cjs/components/Panel/Panel.js +2 -2
  53. package/dist/cjs/components/Panel/Panel.js.map +1 -1
  54. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  55. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  56. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +2 -2
  57. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  58. package/dist/cjs/components/RangeSlider/UniversalSlider.js +2 -2
  59. package/dist/cjs/components/RangeSlider/UniversalSlider.js.map +1 -1
  60. package/dist/cjs/components/Root/Root.d.ts +5 -27
  61. package/dist/cjs/components/Root/Root.js +158 -214
  62. package/dist/cjs/components/Root/Root.js.map +1 -1
  63. package/dist/cjs/components/Search/Search.js +3 -3
  64. package/dist/cjs/components/Search/Search.js.map +1 -1
  65. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  66. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  67. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js +126 -0
  68. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  69. package/dist/cjs/components/Snackbar/Snackbar.js +2 -2
  70. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  71. package/dist/cjs/components/Tappable/Tappable.d.ts +12 -9
  72. package/dist/cjs/components/Tappable/Tappable.js +47 -36
  73. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  74. package/dist/cjs/components/Touch/Touch.d.ts +1 -2
  75. package/dist/cjs/components/Touch/Touch.js +172 -283
  76. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  77. package/dist/cjs/components/UsersStack/UsersStack.js +9 -18
  78. package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
  79. package/dist/cjs/components/UsersStack/masks.d.ts +1 -1
  80. package/dist/cjs/components/UsersStack/masks.js +5 -8
  81. package/dist/cjs/components/UsersStack/masks.js.map +1 -1
  82. package/dist/cjs/components/View/View.js +2 -2
  83. package/dist/cjs/components/View/View.js.map +1 -1
  84. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  85. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  86. package/dist/cjs/hooks/useEventListener.d.ts +2 -2
  87. package/dist/cjs/hooks/useEventListener.js +9 -4
  88. package/dist/cjs/hooks/useEventListener.js.map +1 -1
  89. package/dist/cjs/hooks/useGlobalEventListener.js +2 -4
  90. package/dist/cjs/hooks/useGlobalEventListener.js.map +1 -1
  91. package/dist/cjs/hooks/useInsets.js +3 -10
  92. package/dist/cjs/hooks/useInsets.js.map +1 -1
  93. package/dist/cjs/hooks/useKeyboard.d.ts +11 -0
  94. package/dist/cjs/hooks/useKeyboard.js +78 -0
  95. package/dist/cjs/hooks/useKeyboard.js.map +1 -0
  96. package/dist/cjs/hooks/useKeyboardInputTracker.js +4 -2
  97. package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
  98. package/dist/cjs/index.d.ts +1 -1
  99. package/dist/cjs/index.js +2 -2
  100. package/dist/cjs/index.js.map +1 -1
  101. package/dist/cjs/lib/select.d.ts +7 -0
  102. package/dist/cjs/lib/select.js +73 -0
  103. package/dist/cjs/lib/select.js.map +1 -0
  104. package/dist/cjs/lib/touch.d.ts +1 -1
  105. package/dist/cjs/lib/touch.js +6 -2
  106. package/dist/cjs/lib/touch.js.map +1 -1
  107. package/dist/cjs/lib/utils.d.ts +2 -3
  108. package/dist/cjs/lib/utils.js.map +1 -1
  109. package/dist/cjs/types.d.ts +2 -6
  110. package/dist/cjs/unstable/index.d.ts +2 -0
  111. package/dist/cjs/unstable/index.js +8 -0
  112. package/dist/cjs/unstable/index.js.map +1 -1
  113. package/dist/components/AppRoot/AppRoot.d.ts +1 -0
  114. package/dist/components/AppRoot/AppRoot.js +29 -5
  115. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  116. package/dist/components/Banner/Banner.js +1 -1
  117. package/dist/components/Banner/Banner.js.map +1 -1
  118. package/dist/components/Cell/Cell.js +1 -1
  119. package/dist/components/Cell/Cell.js.map +1 -1
  120. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  121. package/dist/components/ChipsSelect/ChipsSelect.js +4 -6
  122. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  123. package/dist/components/ChipsSelect/useChipsSelect.js +2 -2
  124. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  125. package/dist/components/CustomSelect/CustomSelect.d.ts +2 -2
  126. package/dist/components/CustomSelect/CustomSelect.js +2 -3
  127. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  128. package/dist/components/FixedLayout/FixedLayout.d.ts +4 -9
  129. package/dist/components/FixedLayout/FixedLayout.js +84 -175
  130. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  131. package/dist/components/Gallery/Gallery.js +1 -1
  132. package/dist/components/Gallery/Gallery.js.map +1 -1
  133. package/dist/components/Header/Header.js +1 -1
  134. package/dist/components/Header/Header.js.map +1 -1
  135. package/dist/components/ModalCardBase/ModalCardBase.js +5 -1
  136. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  137. package/dist/components/ModalPage/ModalPage.d.ts +1 -2
  138. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  139. package/dist/components/ModalRoot/ModalRoot.js +1 -1
  140. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  141. package/dist/components/Panel/Panel.js +1 -1
  142. package/dist/components/Panel/Panel.js.map +1 -1
  143. package/dist/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  144. package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  145. package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
  146. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  147. package/dist/components/RangeSlider/UniversalSlider.js +1 -1
  148. package/dist/components/RangeSlider/UniversalSlider.js.map +1 -1
  149. package/dist/components/Root/Root.d.ts +5 -27
  150. package/dist/components/Root/Root.js +152 -207
  151. package/dist/components/Root/Root.js.map +1 -1
  152. package/dist/components/Search/Search.js +1 -1
  153. package/dist/components/Search/Search.js.map +1 -1
  154. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  155. package/dist/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  156. package/dist/components/SimpleCheckbox/SimpleCheckbox.js +97 -0
  157. package/dist/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  158. package/dist/components/Snackbar/Snackbar.js +1 -1
  159. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  160. package/dist/components/Tappable/Tappable.d.ts +12 -9
  161. package/dist/components/Tappable/Tappable.js +45 -37
  162. package/dist/components/Tappable/Tappable.js.map +1 -1
  163. package/dist/components/Touch/Touch.d.ts +1 -2
  164. package/dist/components/Touch/Touch.js +163 -286
  165. package/dist/components/Touch/Touch.js.map +1 -1
  166. package/dist/components/UsersStack/UsersStack.js +7 -16
  167. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  168. package/dist/components/UsersStack/masks.d.ts +1 -1
  169. package/dist/components/UsersStack/masks.js +6 -9
  170. package/dist/components/UsersStack/masks.js.map +1 -1
  171. package/dist/components/View/View.js +1 -1
  172. package/dist/components/View/View.js.map +1 -1
  173. package/dist/components/View/ViewInfinite.js +1 -1
  174. package/dist/components/View/ViewInfinite.js.map +1 -1
  175. package/dist/components.css +1 -1
  176. package/dist/components.css.map +1 -1
  177. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  178. package/dist/cssm/components/AppRoot/AppRoot.css +1 -0
  179. package/dist/cssm/components/AppRoot/AppRoot.js +30 -2
  180. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  181. package/dist/cssm/components/Banner/Banner.css +1 -1
  182. package/dist/cssm/components/Banner/Banner.js +1 -1
  183. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  184. package/dist/cssm/components/Cell/Cell.js +1 -1
  185. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  186. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +4 -6
  187. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  188. package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -2
  189. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  190. package/dist/cssm/components/CustomSelect/CustomSelect.js +2 -3
  191. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  192. package/dist/cssm/components/FixedLayout/FixedLayout.js +84 -175
  193. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  194. package/dist/cssm/components/Gallery/Gallery.js +1 -1
  195. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  196. package/dist/cssm/components/Header/Header.js +1 -1
  197. package/dist/cssm/components/Header/Header.js.map +1 -1
  198. package/dist/cssm/components/ModalCardBase/ModalCardBase.css +1 -1
  199. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -1
  200. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  201. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  202. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  203. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -1
  204. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  205. package/dist/cssm/components/Panel/Panel.js +1 -1
  206. package/dist/cssm/components/Panel/Panel.js.map +1 -1
  207. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  208. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  209. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  210. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
  211. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  212. package/dist/cssm/components/RangeSlider/UniversalSlider.js +1 -1
  213. package/dist/cssm/components/RangeSlider/UniversalSlider.js.map +1 -1
  214. package/dist/cssm/components/Root/Root.js +152 -207
  215. package/dist/cssm/components/Root/Root.js.map +1 -1
  216. package/dist/cssm/components/Search/Search.js +1 -1
  217. package/dist/cssm/components/Search/Search.js.map +1 -1
  218. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  219. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -0
  220. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js +98 -0
  221. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  222. package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
  223. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  224. package/dist/cssm/components/Tappable/Tappable.js +45 -37
  225. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  226. package/dist/cssm/components/Touch/Touch.js +163 -286
  227. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  228. package/dist/cssm/components/UsersStack/UsersStack.css +1 -1
  229. package/dist/cssm/components/UsersStack/UsersStack.js +7 -16
  230. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  231. package/dist/cssm/components/UsersStack/masks.js +6 -9
  232. package/dist/cssm/components/UsersStack/masks.js.map +1 -1
  233. package/dist/cssm/components/View/View.js +1 -1
  234. package/dist/cssm/components/View/View.js.map +1 -1
  235. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  236. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  237. package/dist/cssm/hooks/useEventListener.js +8 -4
  238. package/dist/cssm/hooks/useEventListener.js.map +1 -1
  239. package/dist/cssm/hooks/useGlobalEventListener.js +2 -2
  240. package/dist/cssm/hooks/useGlobalEventListener.js.map +1 -1
  241. package/dist/cssm/hooks/useInsets.js +2 -10
  242. package/dist/cssm/hooks/useInsets.js.map +1 -1
  243. package/dist/cssm/hooks/useKeyboard.js +62 -0
  244. package/dist/cssm/hooks/useKeyboard.js.map +1 -0
  245. package/dist/cssm/hooks/useKeyboardInputTracker.js +4 -2
  246. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  247. package/dist/cssm/index.js +1 -1
  248. package/dist/cssm/index.js.map +1 -1
  249. package/dist/cssm/lib/select.js +62 -0
  250. package/dist/cssm/lib/select.js.map +1 -0
  251. package/dist/cssm/lib/touch.js +5 -2
  252. package/dist/cssm/lib/touch.js.map +1 -1
  253. package/dist/cssm/lib/utils.js.map +1 -1
  254. package/dist/cssm/styles/animations.css +1 -1
  255. package/dist/cssm/styles/common.css +1 -1
  256. package/dist/cssm/styles/components.css +1 -1
  257. package/dist/cssm/styles/constants.css +1 -1
  258. package/dist/cssm/styles/unstable.css +1 -1
  259. package/dist/cssm/unstable/index.js +1 -0
  260. package/dist/cssm/unstable/index.js.map +1 -1
  261. package/dist/hooks/useEventListener.d.ts +2 -2
  262. package/dist/hooks/useEventListener.js +8 -4
  263. package/dist/hooks/useEventListener.js.map +1 -1
  264. package/dist/hooks/useGlobalEventListener.js +2 -2
  265. package/dist/hooks/useGlobalEventListener.js.map +1 -1
  266. package/dist/hooks/useInsets.js +2 -10
  267. package/dist/hooks/useInsets.js.map +1 -1
  268. package/dist/hooks/useKeyboard.d.ts +11 -0
  269. package/dist/hooks/useKeyboard.js +62 -0
  270. package/dist/hooks/useKeyboard.js.map +1 -0
  271. package/dist/hooks/useKeyboardInputTracker.js +4 -2
  272. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  273. package/dist/index.d.ts +1 -1
  274. package/dist/index.js +1 -1
  275. package/dist/index.js.map +1 -1
  276. package/dist/lib/select.d.ts +7 -0
  277. package/dist/lib/select.js +62 -0
  278. package/dist/lib/select.js.map +1 -0
  279. package/dist/lib/touch.d.ts +1 -1
  280. package/dist/lib/touch.js +5 -2
  281. package/dist/lib/touch.js.map +1 -1
  282. package/dist/lib/utils.d.ts +2 -3
  283. package/dist/lib/utils.js.map +1 -1
  284. package/dist/types.d.ts +2 -6
  285. package/dist/unstable/index.d.ts +2 -0
  286. package/dist/unstable/index.js +1 -0
  287. package/dist/unstable/index.js.map +1 -1
  288. package/dist/unstable.css +1 -1
  289. package/dist/unstable.css.map +1 -1
  290. package/dist/vkui.css +1 -1
  291. package/dist/vkui.css.map +1 -1
  292. package/package.json +4 -2
  293. package/postcss.config.js +1 -1
  294. package/src/components/ActionSheetItem/ActionSheetItem.css +4 -8
  295. package/src/components/AppRoot/AppRoot.css +20 -0
  296. package/src/components/AppRoot/AppRoot.tsx +30 -0
  297. package/src/components/Banner/Banner.css +4 -0
  298. package/src/components/Banner/Banner.tsx +1 -1
  299. package/src/components/Cell/Cell.tsx +1 -1
  300. package/src/components/ChipsSelect/ChipsSelect.tsx +4 -7
  301. package/src/components/ChipsSelect/Readme.md +0 -2
  302. package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
  303. package/src/components/CustomSelect/CustomSelect.tsx +3 -2
  304. package/src/components/FixedLayout/FixedLayout.tsx +61 -147
  305. package/src/components/Gallery/Gallery.tsx +1 -1
  306. package/src/components/Header/Header.tsx +1 -1
  307. package/src/components/ModalCardBase/ModalCardBase.css +4 -0
  308. package/src/components/ModalCardBase/ModalCardBase.tsx +5 -1
  309. package/src/components/ModalPage/ModalPage.tsx +1 -2
  310. package/src/components/ModalRoot/ModalRoot.css +10 -0
  311. package/src/components/ModalRoot/ModalRoot.tsx +1 -1
  312. package/src/components/Panel/Panel.tsx +1 -1
  313. package/src/components/PanelHeaderContent/PanelHeaderContent.css +2 -1
  314. package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +2 -2
  315. package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
  316. package/src/components/RangeSlider/UniversalSlider.tsx +1 -1
  317. package/src/components/Root/Readme.md +27 -37
  318. package/src/components/Root/Root.tsx +112 -191
  319. package/src/components/Search/Search.tsx +1 -1
  320. package/src/components/Separator/Readme.md +3 -1
  321. package/src/components/SimpleCell/SimpleCell.tsx +1 -1
  322. package/src/components/SimpleCheckbox/Readme.md +17 -0
  323. package/src/components/SimpleCheckbox/SimpleCheckbox.css +115 -0
  324. package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +105 -0
  325. package/src/components/Snackbar/Snackbar.tsx +1 -1
  326. package/src/components/Tappable/Tappable.tsx +28 -37
  327. package/src/components/Touch/Touch.tsx +100 -238
  328. package/src/components/UsersStack/UsersStack.css +5 -9
  329. package/src/components/UsersStack/UsersStack.tsx +4 -11
  330. package/src/components/UsersStack/masks.tsx +6 -9
  331. package/src/components/View/Readme.md +34 -42
  332. package/src/components/View/View.tsx +1 -1
  333. package/src/components/View/ViewInfinite.tsx +1 -1
  334. package/src/hooks/useEventListener.ts +11 -8
  335. package/src/hooks/useGlobalEventListener.ts +2 -2
  336. package/src/hooks/useInsets.ts +2 -8
  337. package/src/hooks/useKeyboard.ts +67 -0
  338. package/src/hooks/useKeyboardInputTracker.ts +4 -2
  339. package/src/index.ts +1 -1
  340. package/src/lib/select.ts +53 -0
  341. package/src/lib/touch.ts +2 -2
  342. package/src/lib/utils.ts +3 -4
  343. package/src/styles/animations.css +0 -14
  344. package/src/styles/common.css +0 -21
  345. package/src/styles/components.css +2 -0
  346. package/src/styles/constants.css +3 -0
  347. package/src/styles/unstable.css +1 -0
  348. package/src/types.ts +2 -8
  349. package/src/unstable/index.ts +3 -0
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { AdaptivityProps } from '../../hoc/withAdaptivity';
3
+ import './AppRoot.css';
3
4
  export interface AppRootProps extends React.HTMLAttributes<HTMLDivElement>, Pick<AdaptivityProps, 'sizeX' | 'hasMouse'> {
4
5
  /** @deprecated Use mode="embedded" */
5
6
  embedded?: boolean;
@@ -6,7 +6,7 @@ import './ChipsSelect.css';
6
6
  export interface ChipsSelectProps<Option extends ChipsInputOption> extends ChipsInputProps<Option>, AdaptivityProps {
7
7
  popupDirection?: 'top' | 'bottom';
8
8
  options?: Option[];
9
- filterFn?: (value?: string, option?: Option, getOptionLabel?: Pick<ChipsInputProps<ChipsInputOption>, 'getOptionLabel'>['getOptionLabel']) => boolean;
9
+ filterFn?: false | ((value?: string, option?: Option, getOptionLabel?: Pick<ChipsInputProps<ChipsInputOption>, 'getOptionLabel'>['getOptionLabel']) => boolean);
10
10
  /**
11
11
  * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)
12
12
  */
@@ -38,7 +38,7 @@ export interface CustomSelectProps extends NativeSelectProps, HasPlatform, FormF
38
38
  /**
39
39
  * Функция для кастомной фильтрации. По-умолчанию поиск производится по option.label.
40
40
  */
41
- filterFn?: false | ((value: string, option: CustomSelectOptionInterface) => boolean);
41
+ filterFn?: false | ((value: string, option: CustomSelectOptionInterface, getOptionLabel?: (option: Partial<CustomSelectOptionInterface>) => string) => boolean);
42
42
  popupDirection?: 'top' | 'bottom';
43
43
  /**
44
44
  * Рендер-проп для кастомного рендера опции.
@@ -76,7 +76,7 @@ declare class CustomSelect extends React.Component<CustomSelectProps, CustomSele
76
76
  [index: string]: any;
77
77
  value: string | number | readonly string[];
78
78
  label: string;
79
- }[], inputValue: string, filterFn: false | ((value: string, option: CustomSelectOptionInterface) => boolean)) => {
79
+ }[], inputValue: string, filterFn: false | ((value: string, option: CustomSelectOptionInterface, getOptionLabel?: (option: Partial<CustomSelectOptionInterface>) => string) => boolean)) => {
80
80
  [index: string]: any;
81
81
  value: string | number | readonly string[];
82
82
  label: string;
@@ -1,18 +1,13 @@
1
1
  import * as React from 'react';
2
- import { HasPlatform, HasRef, HasRootRef } from '../../types';
3
- import { SplitColContextProps } from '../SplitCol/SplitCol';
2
+ import { HasRef, HasRootRef } from '../../types';
4
3
  import './FixedLayout.css';
5
- export interface FixedLayoutProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement>, HasRef<HTMLDivElement>, HasPlatform {
4
+ export interface FixedLayoutProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement>, HasRef<HTMLDivElement> {
6
5
  vertical?: 'top' | 'bottom';
7
6
  /**
8
7
  * Это свойство определяет, будет ли фон компонента окрашен в цвет фона контента.
9
8
  * Это часто необходимо для фиксированных кнопок в нижней части экрана.
10
9
  */
11
10
  filled?: boolean;
12
- /**
13
- * @ignore
14
- */
15
- splitCol?: SplitColContextProps;
16
11
  }
17
12
  export interface FixedLayoutState {
18
13
  position: 'absolute' | null;
@@ -20,5 +15,5 @@ export interface FixedLayoutState {
20
15
  bottom: number;
21
16
  width: string;
22
17
  }
23
- declare const _default: React.FC<FixedLayoutProps>;
24
- export default _default;
18
+ declare const FixedLayout: React.FC<FixedLayoutProps>;
19
+ export default FixedLayout;
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { AdaptivityProps } from '../../hoc/withAdaptivity';
3
- import { Ref } from '../../types';
4
3
  import { NavIdProps } from '../../lib/getNavId';
5
4
  import './ModalPage.css';
6
5
  export interface ModalPageProps extends React.HTMLAttributes<HTMLDivElement>, AdaptivityProps, NavIdProps {
@@ -17,7 +16,7 @@ export interface ModalPageProps extends React.HTMLAttributes<HTMLDivElement>, Ad
17
16
  * Если высота контента в модальной странице может поменяться, нужно установить это свойство
18
17
  */
19
18
  dynamicContentHeight?: boolean;
20
- getModalContentRef?: Ref<HTMLDivElement>;
19
+ getModalContentRef?: React.Ref<HTMLDivElement>;
21
20
  }
22
21
  declare const _default: React.FC<ModalPageProps>;
23
22
  export default _default;
@@ -1,11 +1,7 @@
1
1
  import * as React from 'react';
2
- import { HasPlatform } from '../../types';
3
- import { ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';
4
- import { SplitColContextProps } from '../SplitCol/SplitCol';
5
- import { ScrollContextInterface } from '../AppRoot/ScrollContext';
6
2
  import { NavIdProps } from '../../lib/getNavId';
7
3
  import './Root.css';
8
- export interface RootProps extends React.HTMLAttributes<HTMLDivElement>, HasPlatform, NavIdProps {
4
+ export interface RootProps extends React.HTMLAttributes<HTMLDivElement>, NavIdProps {
9
5
  activeView: string;
10
6
  onTransition?(params: {
11
7
  isBack: boolean;
@@ -24,30 +20,12 @@ export interface RootProps extends React.HTMLAttributes<HTMLDivElement>, HasPlat
24
20
  * Свойство для отрисовки `ModalRoot`.
25
21
  */
26
22
  modal?: React.ReactNode;
27
- /**
28
- * @ignore
29
- */
30
- splitCol?: SplitColContextProps;
31
- /**
32
- * @ignore
33
- */
34
- configProvider?: ConfigProviderContextInterface;
35
- /**
36
- * @ignore
37
- */
38
- scroll?: ScrollContextInterface;
39
23
  }
40
- export declare type AnimationEndCallback = (e?: AnimationEvent) => void;
41
24
  export interface RootState {
42
25
  activeView: string;
43
- prevView: string;
44
- nextView: string;
45
- visibleViews: [string] | [string, string];
46
- isBack: boolean;
47
- scrolls: {
48
- [index: string]: number;
49
- };
50
26
  transition: boolean;
27
+ isBack?: boolean;
28
+ prevView?: string;
51
29
  }
52
- declare const _default: React.FC<RootProps>;
53
- export default _default;
30
+ declare const Root: React.FC<RootProps>;
31
+ export default Root;
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import { HasRef, HasRootRef } from '../../types';
3
+ import './SimpleCheckbox.css';
4
+ export interface SimpleCheckboxProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRootRef<HTMLLabelElement>, HasRef<HTMLInputElement> {
5
+ indeterminate?: boolean;
6
+ defaultIndeterminate?: boolean;
7
+ }
8
+ export declare const SimpleCheckbox: React.FC<SimpleCheckboxProps>;
9
+ export default SimpleCheckbox;
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { TouchEventHandler, TouchProps } from '../Touch/Touch';
3
3
  import { VKUITouchEventHander } from '../../lib/touch';
4
- import { HasPlatform, HasRootRef, Ref } from '../../types';
4
+ import { HasPlatform, HasRootRef } from '../../types';
5
5
  import { AdaptivityProps } from '../../hoc/withAdaptivity';
6
6
  import { FocusVisibleMode } from '../FocusVisible/FocusVisible';
7
7
  import './Tappable.css';
@@ -33,13 +33,13 @@ export interface TappableProps extends React.AllHTMLAttributes<HTMLElement>, Has
33
33
  */
34
34
  focusVisibleMode?: FocusVisibleMode;
35
35
  }
36
+ interface Wave {
37
+ x: number;
38
+ y: number;
39
+ id: string;
40
+ }
36
41
  export interface TappableState {
37
- clicks?: {
38
- [index: string]: {
39
- x: number;
40
- y: number;
41
- };
42
- };
42
+ clicks?: Wave[];
43
43
  hovered?: boolean;
44
44
  active?: boolean;
45
45
  ts?: number;
@@ -47,7 +47,7 @@ export interface TappableState {
47
47
  hasActive?: boolean;
48
48
  }
49
49
  export interface RootComponentProps extends TouchProps {
50
- ref?: Ref<HTMLElement>;
50
+ ref?: React.Ref<HTMLElement>;
51
51
  }
52
52
  export interface StorageItem {
53
53
  activeTimeout: ReturnType<typeof setTimeout>;
@@ -67,7 +67,6 @@ declare class Tappable extends React.Component<TappableProps, TappableState> {
67
67
  insideTouchRoot: boolean;
68
68
  container: HTMLElement;
69
69
  timeout: ReturnType<typeof setTimeout>;
70
- wavesTimeout: ReturnType<typeof setTimeout>;
71
70
  static defaultProps: {
72
71
  stopPropagation: boolean;
73
72
  disabled: boolean;
@@ -91,7 +90,11 @@ declare class Tappable extends React.Component<TappableProps, TappableState> {
91
90
  getRef: React.RefCallback<HTMLElement>;
92
91
  componentWillUnmount(): void;
93
92
  componentDidUpdate(prevProps: TappableProps): void;
93
+ removeWave(id: Wave['id']): void;
94
94
  render(): JSX.Element;
95
95
  }
96
96
  declare const _default: typeof Tappable;
97
97
  export default _default;
98
+ declare function Wave({ x, y, onClear }: Wave & {
99
+ onClear: VoidFunction;
100
+ }): JSX.Element;
@@ -38,5 +38,4 @@ export interface TouchEvent extends Gesture {
38
38
  export declare type TouchEventHandler = (e: TouchEvent) => void;
39
39
  export declare type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;
40
40
  export declare type DragHandler = (e: React.DragEvent<HTMLElement>) => void;
41
- declare const _default: React.FC<TouchProps>;
42
- export default _default;
41
+ export declare const Touch: React.FC<TouchProps>;
@@ -1 +1 @@
1
- export declare function createMasks(): void;
1
+ export declare function createMasks(document: Document): void;
@@ -1,6 +1,6 @@
1
1
  interface EventListenerHandle {
2
- add(el: HTMLElement | Document): void;
3
- remove(): void;
2
+ add: (el: HTMLElement | Document) => void;
3
+ remove: () => void;
4
4
  }
5
5
  export declare function useEventListener<K extends keyof GlobalEventHandlersEventMap>(event: K, _cb: (ev: GlobalEventHandlersEventMap[K]) => any, _options?: AddEventListenerOptions): EventListenerHandle;
6
6
  export declare function useEventListener(event: string, _cb: (ev: Event) => any, _options?: AddEventListenerOptions): EventListenerHandle;
@@ -0,0 +1,11 @@
1
+ interface SoftwareKeyboardState {
2
+ isOpened: boolean;
3
+ isPrecise: boolean;
4
+ }
5
+ /**
6
+ Проверяет, закрыла ли клавиатура часть экрана, 24% подошло к большиству устройств
7
+ Работает на iOS и Android, где софт-клавиатура ресайзит viewport в браузерах
8
+ */
9
+ export declare function getPreciseKeyboardState(window: any): boolean;
10
+ export declare function useKeyboard(): SoftwareKeyboardState;
11
+ export {};
@@ -197,7 +197,7 @@ export { default as Div } from './components/Div/Div';
197
197
  export type { DivProps } from './components/Div/Div';
198
198
  export { default as Tappable } from './components/Tappable/Tappable';
199
199
  export type { TappableProps } from './components/Tappable/Tappable';
200
- export { default as Touch } from './components/Touch/Touch';
200
+ export { Touch } from './components/Touch/Touch';
201
201
  export type { TouchProps } from './components/Touch/Touch';
202
202
  export { default as PanelSpinner } from './components/PanelSpinner/PanelSpinner';
203
203
  export type { PanelSpinnerProps } from './components/PanelSpinner/PanelSpinner';
@@ -0,0 +1,7 @@
1
+ declare type Option = {
2
+ label?: string;
3
+ [index: string]: any;
4
+ };
5
+ declare type GetOptionLabel = (option: Option) => string;
6
+ export declare const defaultFilterFn: (query: string, option: Option, getOptionLabel?: GetOptionLabel) => boolean;
7
+ export {};
@@ -3,7 +3,7 @@ export interface VKUITouchEvent extends MouseEvent, TouchEvent {
3
3
  export declare type VKUITouchEventHander = (e: VKUITouchEvent) => void;
4
4
  declare const coordX: (e: VKUITouchEvent) => number;
5
5
  declare const coordY: (e: VKUITouchEvent) => number;
6
- declare const touchEnabled: boolean;
6
+ declare const touchEnabled: () => boolean;
7
7
  declare function getSupportedEvents(): string[];
8
8
  declare function rubber(offset: number, dimension: number, resistanceRate: number, isAndroid: boolean): number;
9
9
  export { getSupportedEvents, coordX, coordY, touchEnabled, rubber };
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import { Ref, RefWithCurrent } from '../types';
3
2
  export declare type ImgOnlyAttributes = {
4
3
  [index in Exclude<keyof React.ImgHTMLAttributes<HTMLImageElement>, keyof React.HTMLAttributes<HTMLImageElement>>]: React.ImgHTMLAttributes<HTMLImageElement>[index];
5
4
  };
@@ -9,8 +8,8 @@ export declare function debounce<A extends any[]>(fn: (...args: A) => void, dela
9
8
  export declare function leadingZero(val: number): string;
10
9
  export declare function hasReactNode(value: React.ReactNode): boolean;
11
10
  export declare function isPrimitiveReactNode(node: React.ReactNode): boolean;
12
- export declare function setRef<T>(element: T, ref: Ref<T>): void;
13
- export declare function multiRef<T>(...refs: Array<Ref<T>>): RefWithCurrent<T>;
11
+ export declare function setRef<T>(element: T, ref: React.Ref<T>): void;
12
+ export declare function multiRef<T>(...refs: Array<React.Ref<T>>): React.RefObject<T>;
14
13
  export declare const noop: () => void;
15
14
  export declare function createCustomEvent(window: any, type: string, eventInitDict?: any): any;
16
15
  export declare function getTitleFromChildren(children: React.ReactNode): string;
@@ -3,15 +3,11 @@ import { PlatformType } from './lib/platform';
3
3
  import { Insets } from '@vkontakte/vk-bridge';
4
4
  export declare type AnyFunction = (...args: any[]) => any;
5
5
  export declare type AlignType = 'left' | 'center' | 'right';
6
- export declare type RefWithCurrent<T> = {
7
- current: T | null;
8
- };
9
- export declare type Ref<T> = React.RefCallback<T> | RefWithCurrent<T>;
10
6
  export interface HasRootRef<T> {
11
- getRootRef?: Ref<T>;
7
+ getRootRef?: React.Ref<T>;
12
8
  }
13
9
  export interface HasRef<T> {
14
- getRef?: Ref<T>;
10
+ getRef?: React.Ref<T>;
15
11
  }
16
12
  export interface HasAlign {
17
13
  align?: AlignType;
@@ -5,3 +5,5 @@ export { default as ChipsSelect } from './../components/ChipsSelect/ChipsSelect'
5
5
  export type { ChipsSelectProps } from './../components/ChipsSelect/ChipsSelect';
6
6
  export { default as ViewInfinite } from './../components/View/ViewInfinite';
7
7
  export type { ViewInfiniteProps } from './../components/View/ViewInfinite';
8
+ export { default as SimpleCheckbox } from './../components/SimpleCheckbox/SimpleCheckbox';
9
+ export type { SimpleCheckboxProps } from './../components/SimpleCheckbox/SimpleCheckbox';
@@ -1,4 +1,10 @@
1
1
  module.exports = {
2
2
  extends: './babel.config.js',
3
- presets: [['@babel/preset-env', { modules: "commonjs" }]],
3
+ presets: [['@babel/preset-env', {
4
+ modules: 'commonjs',
5
+ exclude: [
6
+ '@babel/plugin-proposal-unicode-property-regex',
7
+ '@babel/plugin-transform-unicode-regex'
8
+ ]
9
+ }]],
4
10
  };
package/babel.config.js CHANGED
@@ -14,7 +14,13 @@ const testFiles = [
14
14
 
15
15
  module.exports = {
16
16
  presets: [
17
- ['@babel/preset-env', { modules: useModules ? false : 'commonjs' }],
17
+ ['@babel/preset-env', {
18
+ modules: useModules ? false : 'commonjs',
19
+ exclude: [
20
+ '@babel/plugin-proposal-unicode-property-regex',
21
+ '@babel/plugin-transform-unicode-regex'
22
+ ]
23
+ }],
18
24
  ['@babel/preset-react', {
19
25
  pragma: "createScopedElement",
20
26
  pragmaFrag: "createScopedElement.Fragment",
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { AdaptivityProps } from '../../hoc/withAdaptivity';
3
+ import './AppRoot.css';
3
4
  export interface AppRootProps extends React.HTMLAttributes<HTMLDivElement>, Pick<AdaptivityProps, 'sizeX' | 'hasMouse'> {
4
5
  /** @deprecated Use mode="embedded" */
5
6
  embedded?: boolean;
@@ -43,6 +43,8 @@ var _warnOnce = require("../../lib/warnOnce");
43
43
 
44
44
  var _useKeyboardInputTracker = require("../../hooks/useKeyboardInputTracker");
45
45
 
46
+ var _useInsets = require("../../hooks/useInsets");
47
+
46
48
  var _excluded = ["children", "mode", "embedded", "sizeX", "hasMouse", "noLegacyClasses", "scroll"];
47
49
  var warn = (0, _warnOnce.warnOnce)('AppRoot');
48
50
  var AppRoot = (0, _withAdaptivity.withAdaptivity)(function (_ref) {
@@ -70,6 +72,7 @@ var AppRoot = (0, _withAdaptivity.withAdaptivity)(function (_ref) {
70
72
  window = _useDOM.window,
71
73
  document = _useDOM.document;
72
74
 
75
+ var insets = (0, _useInsets.useInsets)();
73
76
  var initialized = React.useRef(false);
74
77
 
75
78
  if (!initialized.current) {
@@ -127,7 +130,32 @@ var AppRoot = (0, _withAdaptivity.withAdaptivity)(function (_ref) {
127
130
  document.documentElement.classList.remove('vkui');
128
131
  }
129
132
  };
130
- }, []); // adaptivity handler
133
+ }, []); // setup insets
134
+
135
+ (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
136
+ if (mode === 'partial') {
137
+ return _utils.noop;
138
+ }
139
+
140
+ var parent = rootRef.current.parentElement;
141
+
142
+ for (var key in insets) {
143
+ if (insets.hasOwnProperty(key) && typeof insets[key] === 'number') {
144
+ var inset = insets[key];
145
+ parent.style.setProperty("--safe-area-inset-".concat(key), "".concat(inset, "px"));
146
+ portalRoot && portalRoot.style.setProperty("--safe-area-inset-".concat(key), "".concat(inset, "px"));
147
+ }
148
+ }
149
+
150
+ return function () {
151
+ for (var _key in insets) {
152
+ if (insets.hasOwnProperty(_key)) {
153
+ parent.style.removeProperty("--safe-area-inset-".concat(_key));
154
+ portalRoot && portalRoot.style.removeProperty("--safe-area-inset-".concat(_key));
155
+ }
156
+ }
157
+ };
158
+ }, [insets, portalRoot]); // adaptivity handler
131
159
 
132
160
  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
133
161
  if (mode === 'partial' || sizeX !== _withAdaptivity.SizeType.REGULAR) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"names":["warn","AppRoot","children","_mode","mode","_embedded","embedded","sizeX","hasMouse","noLegacyClasses","scroll","props","isKeyboardInputActive","rootRef","React","useRef","useState","portalRoot","setPortalRoot","window","document","initialized","current","documentElement","classList","add","classScopingMode","noConflict","process","env","NODE_ENV","noop","portal","createElement","body","appendChild","parentElement","removeChild","parent","classes","concat","remove","SizeType","REGULAR","container","scrollController","useMemo","content","appRoot"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../../lib/dom';\nimport { classNames } from '../../lib/classNames';\nimport { AppRootContext } from './AppRootContext';\nimport { withAdaptivity, SizeType, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { classScopingMode } from '../../lib/classScopingMode';\nimport { IconSettingsProvider } from '@vkontakte/icons';\nimport { elementScrollController, globalScrollController, ScrollContext, ScrollContextInterface } from './ScrollContext';\nimport { noop } from '../../lib/utils';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\n\n// Используйте classList, но будьте осторожны\n/* eslint-disable no-restricted-properties */\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement>, Pick<AdaptivityProps, 'sizeX' | 'hasMouse'> {\n /** @deprecated Use mode=\"embedded\" */\n embedded?: boolean;\n /** Режим встраивания */\n mode?: 'partial' | 'embedded' | 'full';\n window?: Window;\n /** Убирает классы без префикса (.Button) */\n noLegacyClasses?: boolean;\n scroll?: 'global' | 'contain';\n}\n\nconst warn = warnOnce('AppRoot');\nexport const AppRoot: React.FC<AppRootProps> = withAdaptivity(({\n children, mode: _mode, embedded: _embedded, sizeX, hasMouse, noLegacyClasses = false, scroll = 'global',\n ...props\n}: AppRootProps) => {\n // normalize mode\n const mode = _mode || (_embedded ? 'embedded' : 'full');\n const isKeyboardInputActive = useKeyboardInputTracker();\n const rootRef = React.useRef<HTMLDivElement>();\n const [portalRoot, setPortalRoot] = React.useState<HTMLDivElement>(null);\n const { window, document } = useDOM();\n\n const initialized = React.useRef(false);\n if (!initialized.current) {\n if (window && mode === 'full') {\n document.documentElement.classList.add('vkui');\n }\n classScopingMode.noConflict = noLegacyClasses;\n initialized.current = true;\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (scroll !== 'global' && mode !== 'embedded') {\n warn('Scroll modes only supported in embedded mode');\n }\n if (_mode && _embedded) {\n warn(`mode=\"${mode}\" overrides embedded`);\n }\n }\n\n // setup portal\n useIsomorphicLayoutEffect(() => {\n if (mode === 'full') {\n return noop;\n }\n\n const portal = document.createElement('div');\n portal.classList.add('vkui__portal-root');\n document.body.appendChild(portal);\n setPortalRoot(portal);\n return () => portal.parentElement.removeChild(portal);\n }, []);\n\n // setup root classes\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current.parentElement;\n const classes = ['vkui__root'].concat(mode === 'embedded' ? 'vkui__root--embedded' : []);\n parent.classList.add(...classes);\n\n return () => {\n parent.classList.remove(...classes);\n if (mode === 'full') {\n document.documentElement.classList.remove('vkui');\n }\n };\n }, []);\n\n // adaptivity handler\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial' || sizeX !== SizeType.REGULAR) {\n return noop;\n }\n const container = mode === 'embedded' ? rootRef.current.parentElement : document.body;\n container.classList.add('vkui--sizeX-regular');\n return () => container.classList.remove('vkui--sizeX-regular');\n }, [sizeX]);\n\n const scrollController = React.useMemo<ScrollContextInterface>(\n () => scroll === 'contain' ? elementScrollController(rootRef) : globalScrollController(window, document),\n [scroll]);\n\n const content = (\n <AppRootContext.Provider value={{\n appRoot: rootRef,\n portalRoot: portalRoot,\n embedded: mode === 'embedded',\n }}>\n <ScrollContext.Provider value={scrollController}>\n <IconSettingsProvider classPrefix=\"vkui\" globalClasses={!noLegacyClasses}>\n {children}\n </IconSettingsProvider>\n </ScrollContext.Provider>\n </AppRootContext.Provider>\n );\n\n return mode === 'partial' ? content : (\n <div ref={rootRef} vkuiClass={classNames('AppRoot', {\n 'AppRoot--no-mouse': !hasMouse,\n 'AppRoot--keyboard-input': isKeyboardInputActive,\n })} {...props}>\n {content}\n </div>\n );\n}, {\n sizeX: true,\n hasMouse: true,\n});\n\nexport default AppRoot;\n"],"file":"AppRoot.js"}
1
+ {"version":3,"sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"names":["warn","AppRoot","children","_mode","mode","_embedded","embedded","sizeX","hasMouse","noLegacyClasses","scroll","props","isKeyboardInputActive","rootRef","React","useRef","useState","portalRoot","setPortalRoot","window","document","insets","initialized","current","documentElement","classList","add","classScopingMode","noConflict","process","env","NODE_ENV","noop","portal","createElement","body","appendChild","parentElement","removeChild","parent","classes","concat","remove","key","hasOwnProperty","inset","style","setProperty","removeProperty","SizeType","REGULAR","container","scrollController","useMemo","content","appRoot"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../../lib/dom';\nimport { classNames } from '../../lib/classNames';\nimport { AppRootContext } from './AppRootContext';\nimport { withAdaptivity, SizeType, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { classScopingMode } from '../../lib/classScopingMode';\nimport { IconSettingsProvider } from '@vkontakte/icons';\nimport { elementScrollController, globalScrollController, ScrollContext, ScrollContextInterface } from './ScrollContext';\nimport { noop } from '../../lib/utils';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\nimport { useInsets } from '../../hooks/useInsets';\nimport { Insets } from '@vkontakte/vk-bridge';\nimport './AppRoot.css';\n\n// Используйте classList, но будьте осторожны\n/* eslint-disable no-restricted-properties */\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement>, Pick<AdaptivityProps, 'sizeX' | 'hasMouse'> {\n /** @deprecated Use mode=\"embedded\" */\n embedded?: boolean;\n /** Режим встраивания */\n mode?: 'partial' | 'embedded' | 'full';\n window?: Window;\n /** Убирает классы без префикса (.Button) */\n noLegacyClasses?: boolean;\n scroll?: 'global' | 'contain';\n}\n\nconst warn = warnOnce('AppRoot');\nexport const AppRoot: React.FC<AppRootProps> = withAdaptivity(({\n children, mode: _mode, embedded: _embedded, sizeX, hasMouse, noLegacyClasses = false, scroll = 'global',\n ...props\n}: AppRootProps) => {\n // normalize mode\n const mode = _mode || (_embedded ? 'embedded' : 'full');\n const isKeyboardInputActive = useKeyboardInputTracker();\n const rootRef = React.useRef<HTMLDivElement>();\n const [portalRoot, setPortalRoot] = React.useState<HTMLDivElement>(null);\n const { window, document } = useDOM();\n const insets = useInsets();\n\n const initialized = React.useRef(false);\n if (!initialized.current) {\n if (window && mode === 'full') {\n document.documentElement.classList.add('vkui');\n }\n classScopingMode.noConflict = noLegacyClasses;\n initialized.current = true;\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (scroll !== 'global' && mode !== 'embedded') {\n warn('Scroll modes only supported in embedded mode');\n }\n if (_mode && _embedded) {\n warn(`mode=\"${mode}\" overrides embedded`);\n }\n }\n\n // setup portal\n useIsomorphicLayoutEffect(() => {\n if (mode === 'full') {\n return noop;\n }\n\n const portal = document.createElement('div');\n portal.classList.add('vkui__portal-root');\n document.body.appendChild(portal);\n setPortalRoot(portal);\n return () => portal.parentElement.removeChild(portal);\n }, []);\n\n // setup root classes\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current.parentElement;\n const classes = ['vkui__root'].concat(mode === 'embedded' ? 'vkui__root--embedded' : []);\n parent.classList.add(...classes);\n\n return () => {\n parent.classList.remove(...classes);\n if (mode === 'full') {\n document.documentElement.classList.remove('vkui');\n }\n };\n }, []);\n\n // setup insets\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current.parentElement;\n\n for (const key in insets) {\n if (insets.hasOwnProperty(key) && typeof insets[key as keyof Insets] === 'number') {\n const inset = insets[key as keyof Insets];\n parent.style.setProperty(`--safe-area-inset-${key}`, `${inset}px`);\n portalRoot && portalRoot.style.setProperty(`--safe-area-inset-${key}`, `${inset}px`);\n }\n }\n\n return () => {\n for (const key in insets) {\n if (insets.hasOwnProperty(key)) {\n parent.style.removeProperty(`--safe-area-inset-${key}`);\n portalRoot && portalRoot.style.removeProperty(`--safe-area-inset-${key}`);\n }\n }\n };\n }, [insets, portalRoot]);\n\n // adaptivity handler\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial' || sizeX !== SizeType.REGULAR) {\n return noop;\n }\n const container = mode === 'embedded' ? rootRef.current.parentElement : document.body;\n container.classList.add('vkui--sizeX-regular');\n return () => container.classList.remove('vkui--sizeX-regular');\n }, [sizeX]);\n\n const scrollController = React.useMemo<ScrollContextInterface>(\n () => scroll === 'contain' ? elementScrollController(rootRef) : globalScrollController(window, document),\n [scroll]);\n\n const content = (\n <AppRootContext.Provider value={{\n appRoot: rootRef,\n portalRoot: portalRoot,\n embedded: mode === 'embedded',\n }}>\n <ScrollContext.Provider value={scrollController}>\n <IconSettingsProvider classPrefix=\"vkui\" globalClasses={!noLegacyClasses}>\n {children}\n </IconSettingsProvider>\n </ScrollContext.Provider>\n </AppRootContext.Provider>\n );\n\n return mode === 'partial' ? content : (\n <div ref={rootRef} vkuiClass={classNames('AppRoot', {\n 'AppRoot--no-mouse': !hasMouse,\n 'AppRoot--keyboard-input': isKeyboardInputActive,\n })} {...props}>\n {content}\n </div>\n );\n}, {\n sizeX: true,\n hasMouse: true,\n});\n\nexport default AppRoot;\n"],"file":"AppRoot.js"}
@@ -100,7 +100,7 @@ var Banner = function Banner(props) {
100
100
  vkuiClass: "Banner__content"
101
101
  }, (0, _utils.hasReactNode)(header) && (0, _jsxRuntime.createScopedElement)(BannerHeader, {
102
102
  size: size,
103
- Component: "h2",
103
+ Component: "span",
104
104
  vkuiClass: "Banner__header"
105
105
  }, header), (0, _utils.hasReactNode)(subheader) && (0, _jsxRuntime.createScopedElement)(BannerSubheader, {
106
106
  Component: "span",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Banner/Banner.tsx"],"names":["BannerHeader","size","restProps","BannerSubheader","Banner","props","platform","mode","imageTheme","before","asideMode","header","subheader","text","children","background","actions","onDismiss","dismissLabel","IOS","React","Children","count","ANDROID","VKCOM","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { hasReactNode } from '../../lib/utils';\nimport { Icon24Chevron, Icon24DismissSubstract, Icon24DismissDark, Icon24Cancel } from '@vkontakte/icons';\nimport Tappable from '../Tappable/Tappable';\nimport IconButton from '../IconButton/IconButton';\nimport Headline from '../Typography/Headline/Headline';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport Text from '../Typography/Text/Text';\nimport Title from '../Typography/Title/Title';\nimport './Banner.css';\n\nexport interface BannerProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Тип баннера.\n */\n mode?: 'tint' | 'image';\n size?: 's' | 'm';\n /**\n * Тип действия в правой части баннера.\n *\n * - `dismiss` – отображается иконка крестика, при клике на неё сработает свойство `onDismiss`.\n * - `expand` – отображается иконка шеврона, которая подразумевает, что при клике на баннер можно куда-то перейти.\n */\n asideMode?: 'dismiss' | 'expand';\n /**\n * Срабатывает при клике на иконку крестика при `asideMode=\"dismiss\"`.\n */\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * `aria-label` для кнопки при `asideMode=\"dismiss\". Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n /**\n * Содержимое, отображаемое в левой части баннера.\n */\n before?: React.ReactNode;\n /**\n * Заголовок. <br />\n * При использовании этого свойства рекомендуется не указывать `text`.\n */\n header?: React.ReactNode;\n /**\n * Подзаголовок. <br />\n * При использовании этого свойства рекомендуется не указывать `text`.\n */\n subheader?: React.ReactNode;\n /**\n * Текст баннера. <br />\n * Это свойство следует использовать без указания `header` и `subheader`.\n */\n text?: React.ReactNode;\n /**\n * При использовании `mode=\"image\"`.\n *\n * - `light` – в качестве фона используется светлое изображение, цвет текста в баннере будет тёмным.\n * - `dark` – в качестве фона используется тёмное изображение, цвет текста будет светлым.\n */\n imageTheme?: 'light' | 'dark';\n /**\n * При использовании `mode=\"image\"`.\n *\n * Элемент, который нужно стилизовать цветом и/или фоном. Этот элемент будет растянут на 100% ширины и высоты баннера.\n */\n background?: React.ReactNode;\n /**\n * Кнопки, отображаемые в баннере.\n *\n * - В режиме `tint` или в `image` со светлым фоном рекомендуется использовать только `<Button mode=\"primary\" />` или `<Button mode=\"tertiary\" hasHover={false} />`.\n * - В режиме `image` с тёмным фоном – `<Button mode=\"overlay_primary\" />`.\n */\n actions?: React.ReactNode;\n}\n\ninterface BannerTypographyProps extends Pick<BannerProps, 'size'> {\n Component?: React.ElementType;\n}\n\nconst BannerHeader: React.FC<BannerTypographyProps> = ({ size, ...restProps }: BannerTypographyProps) => {\n return size === 'm'\n ? <Title level=\"2\" weight=\"medium\" {...restProps} />\n : <Headline weight=\"medium\" {...restProps} />;\n};\n\nconst BannerSubheader: React.FC<BannerTypographyProps> = ({ size, ...restProps }: BannerTypographyProps) => {\n return size === 'm'\n ? <Text weight=\"regular\" {...restProps} />\n : <Subhead weight=\"regular\" {...restProps} />;\n};\n\nconst Banner: React.FC<BannerProps> = (props: BannerProps) => {\n const platform = usePlatform();\n const {\n mode, imageTheme, size, before, asideMode, header, subheader, text, children, background, actions,\n onDismiss, dismissLabel,\n ...restProps\n } = props;\n\n return (\n <section\n {...restProps}\n vkuiClass={classNames(\n getClassName('Banner', platform),\n `Banner--md-${mode}`,\n `Banner--sz-${size}`,\n {\n 'Banner--inverted': mode === 'image' && imageTheme === 'dark',\n },\n )}\n >\n <Tappable\n vkuiClass=\"Banner__in\"\n activeMode={platform === IOS ? 'opacity' : 'background'}\n disabled={asideMode !== 'expand'}\n role={asideMode === 'expand' ? 'button' : null}\n >\n {mode === 'image' && background &&\n <div aria-hidden=\"true\" vkuiClass=\"Banner__bg\">\n {background}\n </div>\n }\n\n {before && <div vkuiClass=\"Banner__before\">{before}</div>}\n\n <div vkuiClass=\"Banner__content\">\n {hasReactNode(header) && (\n <BannerHeader size={size} Component=\"h2\" vkuiClass=\"Banner__header\">{header}</BannerHeader>\n )}\n {hasReactNode(subheader) && (\n <BannerSubheader Component=\"span\" size={size} vkuiClass=\"Banner__subheader\">{subheader}</BannerSubheader>\n )}\n {hasReactNode(text) && <Text weight=\"regular\" vkuiClass=\"Banner__text\">{text}</Text>}\n {hasReactNode(actions) && React.Children.count(actions) > 0 && (\n <div vkuiClass=\"Banner__actions\">{actions}</div>\n )}\n </div>\n\n {!!asideMode && (\n <div vkuiClass=\"Banner__aside\">\n {asideMode === 'expand' && <Icon24Chevron />}\n\n {asideMode === 'dismiss' && (\n <IconButton\n aria-label={dismissLabel}\n vkuiClass=\"Banner__dismiss\"\n onClick={onDismiss}\n hoverMode=\"opacity\"\n hasActive={false}\n >\n {(platform === ANDROID || platform === VKCOM) && <Icon24Cancel />}\n {platform === IOS && (mode === 'image' ? <Icon24DismissDark /> : <Icon24DismissSubstract />)}\n </IconButton>\n )}\n </div>\n )}\n </Tappable>\n </section>\n );\n};\n\nBanner.defaultProps = {\n dismissLabel: 'Скрыть',\n mode: 'tint',\n size: 's',\n imageTheme: 'dark',\n};\n\nexport default Banner;\n"],"file":"Banner.js"}
1
+ {"version":3,"sources":["../../../../src/components/Banner/Banner.tsx"],"names":["BannerHeader","size","restProps","BannerSubheader","Banner","props","platform","mode","imageTheme","before","asideMode","header","subheader","text","children","background","actions","onDismiss","dismissLabel","IOS","React","Children","count","ANDROID","VKCOM","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { hasReactNode } from '../../lib/utils';\nimport { Icon24Chevron, Icon24DismissSubstract, Icon24DismissDark, Icon24Cancel } from '@vkontakte/icons';\nimport Tappable from '../Tappable/Tappable';\nimport IconButton from '../IconButton/IconButton';\nimport Headline from '../Typography/Headline/Headline';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport Text from '../Typography/Text/Text';\nimport Title from '../Typography/Title/Title';\nimport './Banner.css';\n\nexport interface BannerProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Тип баннера.\n */\n mode?: 'tint' | 'image';\n size?: 's' | 'm';\n /**\n * Тип действия в правой части баннера.\n *\n * - `dismiss` – отображается иконка крестика, при клике на неё сработает свойство `onDismiss`.\n * - `expand` – отображается иконка шеврона, которая подразумевает, что при клике на баннер можно куда-то перейти.\n */\n asideMode?: 'dismiss' | 'expand';\n /**\n * Срабатывает при клике на иконку крестика при `asideMode=\"dismiss\"`.\n */\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * `aria-label` для кнопки при `asideMode=\"dismiss\". Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n /**\n * Содержимое, отображаемое в левой части баннера.\n */\n before?: React.ReactNode;\n /**\n * Заголовок. <br />\n * При использовании этого свойства рекомендуется не указывать `text`.\n */\n header?: React.ReactNode;\n /**\n * Подзаголовок. <br />\n * При использовании этого свойства рекомендуется не указывать `text`.\n */\n subheader?: React.ReactNode;\n /**\n * Текст баннера. <br />\n * Это свойство следует использовать без указания `header` и `subheader`.\n */\n text?: React.ReactNode;\n /**\n * При использовании `mode=\"image\"`.\n *\n * - `light` – в качестве фона используется светлое изображение, цвет текста в баннере будет тёмным.\n * - `dark` – в качестве фона используется тёмное изображение, цвет текста будет светлым.\n */\n imageTheme?: 'light' | 'dark';\n /**\n * При использовании `mode=\"image\"`.\n *\n * Элемент, который нужно стилизовать цветом и/или фоном. Этот элемент будет растянут на 100% ширины и высоты баннера.\n */\n background?: React.ReactNode;\n /**\n * Кнопки, отображаемые в баннере.\n *\n * - В режиме `tint` или в `image` со светлым фоном рекомендуется использовать только `<Button mode=\"primary\" />` или `<Button mode=\"tertiary\" hasHover={false} />`.\n * - В режиме `image` с тёмным фоном – `<Button mode=\"overlay_primary\" />`.\n */\n actions?: React.ReactNode;\n}\n\ninterface BannerTypographyProps extends Pick<BannerProps, 'size'> {\n Component?: React.ElementType;\n}\n\nconst BannerHeader: React.FC<BannerTypographyProps> = ({ size, ...restProps }: BannerTypographyProps) => {\n return size === 'm'\n ? <Title level=\"2\" weight=\"medium\" {...restProps} />\n : <Headline weight=\"medium\" {...restProps} />;\n};\n\nconst BannerSubheader: React.FC<BannerTypographyProps> = ({ size, ...restProps }: BannerTypographyProps) => {\n return size === 'm'\n ? <Text weight=\"regular\" {...restProps} />\n : <Subhead weight=\"regular\" {...restProps} />;\n};\n\nconst Banner: React.FC<BannerProps> = (props: BannerProps) => {\n const platform = usePlatform();\n const {\n mode, imageTheme, size, before, asideMode, header, subheader, text, children, background, actions,\n onDismiss, dismissLabel,\n ...restProps\n } = props;\n\n return (\n <section\n {...restProps}\n vkuiClass={classNames(\n getClassName('Banner', platform),\n `Banner--md-${mode}`,\n `Banner--sz-${size}`,\n {\n 'Banner--inverted': mode === 'image' && imageTheme === 'dark',\n },\n )}\n >\n <Tappable\n vkuiClass=\"Banner__in\"\n activeMode={platform === IOS ? 'opacity' : 'background'}\n disabled={asideMode !== 'expand'}\n role={asideMode === 'expand' ? 'button' : null}\n >\n {mode === 'image' && background &&\n <div aria-hidden=\"true\" vkuiClass=\"Banner__bg\">\n {background}\n </div>\n }\n\n {before && <div vkuiClass=\"Banner__before\">{before}</div>}\n\n <div vkuiClass=\"Banner__content\">\n {hasReactNode(header) && (\n <BannerHeader size={size} Component=\"span\" vkuiClass=\"Banner__header\">{header}</BannerHeader>\n )}\n {hasReactNode(subheader) && (\n <BannerSubheader Component=\"span\" size={size} vkuiClass=\"Banner__subheader\">{subheader}</BannerSubheader>\n )}\n {hasReactNode(text) && <Text weight=\"regular\" vkuiClass=\"Banner__text\">{text}</Text>}\n {hasReactNode(actions) && React.Children.count(actions) > 0 && (\n <div vkuiClass=\"Banner__actions\">{actions}</div>\n )}\n </div>\n\n {!!asideMode && (\n <div vkuiClass=\"Banner__aside\">\n {asideMode === 'expand' && <Icon24Chevron />}\n\n {asideMode === 'dismiss' && (\n <IconButton\n aria-label={dismissLabel}\n vkuiClass=\"Banner__dismiss\"\n onClick={onDismiss}\n hoverMode=\"opacity\"\n hasActive={false}\n >\n {(platform === ANDROID || platform === VKCOM) && <Icon24Cancel />}\n {platform === IOS && (mode === 'image' ? <Icon24DismissDark /> : <Icon24DismissSubstract />)}\n </IconButton>\n )}\n </div>\n )}\n </Tappable>\n </section>\n );\n};\n\nBanner.defaultProps = {\n dismissLabel: 'Скрыть',\n mode: 'tint',\n size: 's',\n imageTheme: 'dark',\n};\n\nexport default Banner;\n"],"file":"Banner.js"}
@@ -23,7 +23,7 @@ var _classNames = require("../../lib/classNames");
23
23
 
24
24
  var _getClassName = require("../../helpers/getClassName");
25
25
 
26
- var _Touch = _interopRequireDefault(require("../Touch/Touch"));
26
+ var _Touch = require("../Touch/Touch");
27
27
 
28
28
  var _platform = require("../../lib/platform");
29
29
 
@@ -190,7 +190,7 @@ var Cell = function Cell(props) {
190
190
  disabled: draggable || removable || disabled,
191
191
  Component: selectable ? 'label' : Component,
192
192
  htmlFor: selectable ? name : undefined,
193
- before: (0, _jsxRuntime.createScopedElement)(React.Fragment, null, (platform === _platform.ANDROID || platform === _platform.VKCOM) && draggable && (0, _jsxRuntime.createScopedElement)(_Touch.default, {
193
+ before: (0, _jsxRuntime.createScopedElement)(React.Fragment, null, (platform === _platform.ANDROID || platform === _platform.VKCOM) && draggable && (0, _jsxRuntime.createScopedElement)(_Touch.Touch, {
194
194
  vkuiClass: "Cell__dragger",
195
195
  onStart: onDragStart,
196
196
  onMoveY: onDragMove,
@@ -211,7 +211,7 @@ var Cell = function Cell(props) {
211
211
  }), (0, _jsxRuntime.createScopedElement)(IconOn, {
212
212
  vkuiClass: "Cell__marker-in Cell__marker-in--checked"
213
213
  }))), before),
214
- after: (0, _jsxRuntime.createScopedElement)(React.Fragment, null, platform === _platform.IOS && draggable && (0, _jsxRuntime.createScopedElement)(_Touch.default, {
214
+ after: (0, _jsxRuntime.createScopedElement)(React.Fragment, null, platform === _platform.IOS && draggable && (0, _jsxRuntime.createScopedElement)(_Touch.Touch, {
215
215
  vkuiClass: "Cell__dragger",
216
216
  onStart: onDragStart,
217
217
  onMoveY: onDragMove,