@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 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Search/Search.tsx"],"names":["Search","before","className","defaultValue","placeholder","after","getRef","platform","icon","onIconClick","noop","style","inputProps","inputRef","React","useState","isFocused","setFocused","value","onChange","onFocus","e","onBlur","onCancel","nativeInputValueSetter","Object","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","call","current","ev2","Event","bubbles","dispatchEvent","onIconClickStart","useCallback","originalEvent","onIconCancelClickStart","preventDefault","focus","IOS","VKCOM","defaultProps","autoComplete"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { Icon16SearchOutline, Icon16Clear, Icon24Cancel } from '@vkontakte/icons';\nimport { IOS, VKCOM } from '../../lib/platform';\nimport { HasPlatform, HasRef } from '../../types';\nimport Touch, { TouchEvent } from '../Touch/Touch';\nimport { VKUITouchEvent } from '../../lib/touch';\nimport { noop } from '../../lib/utils';\nimport Text from '../Typography/Text/Text';\nimport Title from '../Typography/Title/Title';\nimport Separator from '../Separator/Separator';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport './Search.css';\n\nexport type InputRef = (element: HTMLInputElement) => void;\n\nexport interface SearchProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRef<HTMLInputElement>, HasPlatform {\n /**\n * iOS only. Текст кнопки \"отмена\", которая чистит текстовое поле и убирает фокус.\n */\n after?: React.ReactNode;\n before?: React.ReactNode;\n icon?: React.ReactNode;\n onIconClick?: (e: VKUITouchEvent) => void;\n defaultValue?: string;\n}\n\nconst Search: React.FC<SearchProps> = ({\n before,\n className,\n defaultValue,\n placeholder,\n after,\n getRef,\n platform,\n icon,\n onIconClick = noop,\n style,\n ...inputProps\n}) => {\n const inputRef = useExternRef(getRef);\n const [isFocused, setFocused] = React.useState(false);\n const [value, onChange] = useEnsuredControl(inputProps, { defaultValue });\n\n const onFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n inputProps.onFocus && inputProps.onFocus(e);\n };\n\n const onBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n inputProps.onBlur && inputProps.onBlur(e);\n };\n\n const onCancel = () => {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value').set;\n nativeInputValueSetter.call(inputRef.current, '');\n\n const ev2 = new Event('input', { bubbles: true });\n inputRef.current.dispatchEvent(ev2);\n };\n\n const onIconClickStart = React.useCallback((e: TouchEvent) => onIconClick(e.originalEvent), [onIconClick]);\n\n const onIconCancelClickStart = React.useCallback((e: TouchEvent) => {\n e.originalEvent.preventDefault();\n inputRef.current.focus();\n onCancel();\n }, [onCancel]);\n\n return (\n <div\n vkuiClass={classNames(getClassName('Search', platform), {\n 'Search--focused': isFocused,\n 'Search--has-value': !!value,\n 'Search--has-after': !!after,\n 'Search--has-icon': !!icon,\n })}\n className={className}\n style={style}\n >\n <div vkuiClass=\"Search__in\">\n <div vkuiClass=\"Search__width\" />\n <label vkuiClass=\"Search__control\">\n <input\n type=\"search\"\n {...inputProps}\n ref={inputRef}\n vkuiClass=\"Search__input\"\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={onChange}\n value={value}\n />\n {platform === IOS && after && <div vkuiClass=\"Search__after-width\">{after}</div>}\n <div vkuiClass=\"Search__placeholder\">\n <div vkuiClass=\"Search__placeholder-in\">\n {before}\n {platform === VKCOM\n ? <Text vkuiClass=\"Search__placeholder-text\" weight=\"regular\">{placeholder}</Text>\n : <Title vkuiClass=\"Search__placeholder-text\" level=\"3\" weight=\"regular\">{placeholder}</Title>\n }\n </div>\n {isFocused && platform === IOS && after && <div vkuiClass=\"Search__after-width\">{after}</div>}\n </div>\n </label>\n <div vkuiClass=\"Search__after\" onClick={onCancel}>\n <div vkuiClass=\"Search__icons\">\n {icon &&\n <Touch onStart={onIconClickStart} vkuiClass=\"Search__icon\">\n {icon}\n </Touch>\n }\n {!!value &&\n <Touch onStart={onIconCancelClickStart} vkuiClass=\"Search__icon\">\n {platform === VKCOM\n ? <Icon24Cancel />\n : <Icon16Clear />\n }\n </Touch>\n }\n </div>\n {platform === IOS && after &&\n <div vkuiClass=\"Search__after-in\">{after}</div>\n }\n </div>\n </div>\n {platform === VKCOM && <Separator vkuiClass=\"Search__separator\" wide />}\n </div>\n );\n};\n\nSearch.defaultProps = {\n autoComplete: 'off',\n defaultValue: '',\n placeholder: 'Поиск',\n after: 'Отмена',\n before: <Icon16SearchOutline />,\n};\n\nexport default withPlatform(Search);\n"],"file":"Search.js"}
1
+ {"version":3,"sources":["../../../../src/components/Search/Search.tsx"],"names":["Search","before","className","defaultValue","placeholder","after","getRef","platform","icon","onIconClick","noop","style","inputProps","inputRef","React","useState","isFocused","setFocused","value","onChange","onFocus","e","onBlur","onCancel","nativeInputValueSetter","Object","getOwnPropertyDescriptor","HTMLInputElement","prototype","set","call","current","ev2","Event","bubbles","dispatchEvent","onIconClickStart","useCallback","originalEvent","onIconCancelClickStart","preventDefault","focus","IOS","VKCOM","defaultProps","autoComplete"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { Icon16SearchOutline, Icon16Clear, Icon24Cancel } from '@vkontakte/icons';\nimport { IOS, VKCOM } from '../../lib/platform';\nimport { HasPlatform, HasRef } from '../../types';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { VKUITouchEvent } from '../../lib/touch';\nimport { noop } from '../../lib/utils';\nimport Text from '../Typography/Text/Text';\nimport Title from '../Typography/Title/Title';\nimport Separator from '../Separator/Separator';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport './Search.css';\n\nexport type InputRef = (element: HTMLInputElement) => void;\n\nexport interface SearchProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRef<HTMLInputElement>, HasPlatform {\n /**\n * iOS only. Текст кнопки \"отмена\", которая чистит текстовое поле и убирает фокус.\n */\n after?: React.ReactNode;\n before?: React.ReactNode;\n icon?: React.ReactNode;\n onIconClick?: (e: VKUITouchEvent) => void;\n defaultValue?: string;\n}\n\nconst Search: React.FC<SearchProps> = ({\n before,\n className,\n defaultValue,\n placeholder,\n after,\n getRef,\n platform,\n icon,\n onIconClick = noop,\n style,\n ...inputProps\n}) => {\n const inputRef = useExternRef(getRef);\n const [isFocused, setFocused] = React.useState(false);\n const [value, onChange] = useEnsuredControl(inputProps, { defaultValue });\n\n const onFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n inputProps.onFocus && inputProps.onFocus(e);\n };\n\n const onBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n inputProps.onBlur && inputProps.onBlur(e);\n };\n\n const onCancel = () => {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value').set;\n nativeInputValueSetter.call(inputRef.current, '');\n\n const ev2 = new Event('input', { bubbles: true });\n inputRef.current.dispatchEvent(ev2);\n };\n\n const onIconClickStart = React.useCallback((e: TouchEvent) => onIconClick(e.originalEvent), [onIconClick]);\n\n const onIconCancelClickStart = React.useCallback((e: TouchEvent) => {\n e.originalEvent.preventDefault();\n inputRef.current.focus();\n onCancel();\n }, [onCancel]);\n\n return (\n <div\n vkuiClass={classNames(getClassName('Search', platform), {\n 'Search--focused': isFocused,\n 'Search--has-value': !!value,\n 'Search--has-after': !!after,\n 'Search--has-icon': !!icon,\n })}\n className={className}\n style={style}\n >\n <div vkuiClass=\"Search__in\">\n <div vkuiClass=\"Search__width\" />\n <label vkuiClass=\"Search__control\">\n <input\n type=\"search\"\n {...inputProps}\n ref={inputRef}\n vkuiClass=\"Search__input\"\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={onChange}\n value={value}\n />\n {platform === IOS && after && <div vkuiClass=\"Search__after-width\">{after}</div>}\n <div vkuiClass=\"Search__placeholder\">\n <div vkuiClass=\"Search__placeholder-in\">\n {before}\n {platform === VKCOM\n ? <Text vkuiClass=\"Search__placeholder-text\" weight=\"regular\">{placeholder}</Text>\n : <Title vkuiClass=\"Search__placeholder-text\" level=\"3\" weight=\"regular\">{placeholder}</Title>\n }\n </div>\n {isFocused && platform === IOS && after && <div vkuiClass=\"Search__after-width\">{after}</div>}\n </div>\n </label>\n <div vkuiClass=\"Search__after\" onClick={onCancel}>\n <div vkuiClass=\"Search__icons\">\n {icon &&\n <Touch onStart={onIconClickStart} vkuiClass=\"Search__icon\">\n {icon}\n </Touch>\n }\n {!!value &&\n <Touch onStart={onIconCancelClickStart} vkuiClass=\"Search__icon\">\n {platform === VKCOM\n ? <Icon24Cancel />\n : <Icon16Clear />\n }\n </Touch>\n }\n </div>\n {platform === IOS && after &&\n <div vkuiClass=\"Search__after-in\">{after}</div>\n }\n </div>\n </div>\n {platform === VKCOM && <Separator vkuiClass=\"Search__separator\" wide />}\n </div>\n );\n};\n\nSearch.defaultProps = {\n autoComplete: 'off',\n defaultValue: '',\n placeholder: 'Поиск',\n after: 'Отмена',\n before: <Icon16SearchOutline />,\n};\n\nexport default withPlatform(Search);\n"],"file":"Search.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SimpleCell/SimpleCell.tsx"],"names":["SimpleCellTypography","props","sizeY","SizeType","COMPACT","SimpleCell","badge","before","indicator","children","after","description","expandable","multiline","restProps","platform","hasAfter","IOS"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AA0CA,IAAMA,oBAAyD,GAAG,SAA5DA,oBAA4D,CAACC,KAAD,EAAsC;AACtG,uBAAkB,oCAAlB;AAAA,MAAQC,KAAR,kBAAQA,KAAR;;AAEA,SAAOA,KAAK,KAAKC,yBAASC,OAAnB,GACH,qCAAC,aAAD;AAAM,IAAA,MAAM,EAAC;AAAb,KAA2BH,KAA3B,EADG,GAEH,qCAAC,cAAD;AAAO,IAAA,KAAK,EAAC,GAAb;AAAiB,IAAA,MAAM,EAAC;AAAxB,KAAsCA,KAAtC,EAFJ;AAGD,CAND;;AAQA,IAAMI,UAAqC,GAAG,SAAxCA,UAAwC,OAWxC;AAAA,MAVJC,KAUI,QAVJA,KAUI;AAAA,MATJC,MASI,QATJA,MASI;AAAA,MARJC,SAQI,QARJA,SAQI;AAAA,MAPJC,QAOI,QAPJA,QAOI;AAAA,MANJC,KAMI,QANJA,KAMI;AAAA,MALJC,WAKI,QALJA,WAKI;AAAA,MAJJC,UAII,QAJJA,UAII;AAAA,MAHJC,SAGI,QAHJA,SAGI;AAAA,MAFJX,KAEI,QAFJA,KAEI;AAAA,MADDY,SACC;AACJ,MAAMC,QAAQ,GAAG,+BAAjB;;AACA,MAAMC,QAAQ,GAAG,yBAAaN,KAAb,KAAuBE,UAAU,IAAIG,QAAQ,KAAKE,aAAnE;;AAEA,SACE,qCAAC,iBAAD,6BACMH,SADN;AAEE,IAAA,SAAS,EACP,4BACE,gCAAa,YAAb,EAA2BC,QAA3B,CADF,EAEE;AACE,yBAAmBH,UADrB;AAEE,0BAAoBC;AAFtB,KAFF,8BAMuBX,KANvB;AAHJ,MAaGK,MAbH,EAcE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,qCAAC,oBAAD;AAAsB,IAAA,SAAS,EAAC;AAAhC,KAAwDE,QAAxD,CADF,EAEG,yBAAaH,KAAb,KACC;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGA,KADH,CAHJ,CADF,EASGK,WAAW,IAAI,qCAAC,gBAAD;AAAS,IAAA,SAAS,EAAC,MAAnB;AAA0B,IAAA,MAAM,EAAC,SAAjC;AAA2C,IAAA,SAAS,EAAC;AAArD,KAAgFA,WAAhF,CATlB,CAdF,EAyBG,yBAAaH,SAAb,KACC,qCAAC,oBAAD;AAAsB,IAAA,SAAS,EAAC,MAAhC;AAAuC,IAAA,SAAS,EAAC;AAAjD,KAA0EA,SAA1E,CA1BJ,EA4BGQ,QAAQ,IACP;AAAK,IAAA,SAAS,EAAC;AAAf,KACGN,KADH,EAEGE,UAAU,IAAIG,QAAQ,KAAKE,aAA3B,IAAkC,qCAAC,oBAAD,OAFrC,CA7BJ,CADF;AAqCD,CApDD;;eAsDe,oCAAeZ,UAAf,EAA2B;AAAEH,EAAAA,KAAK,EAAE;AAAT,CAA3B,C","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport Tappable, { TappableProps } from '../Tappable/Tappable';\nimport { Icon24Chevron } from '@vkontakte/icons';\nimport { IOS } from '../../lib/platform';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { withAdaptivity, SizeType } from '../../hoc/withAdaptivity';\nimport Title from '../Typography/Title/Title';\nimport Text from '../Typography/Text/Text';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport './SimpleCell.css';\n\nexport interface SimpleCellOwnProps {\n /**\n * Иконка 28 или `<Avatar size={28|32|40|48|72} />`\n */\n before?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится справа от текста `children`.\n */\n badge?: React.ReactNode;\n /**\n * Контейнер для текста справа от `children`.\n */\n indicator?: React.ReactNode;\n /**\n * Иконка 24|28 или `<Switch />`. Располагается справа от `indicator`.\n */\n after?: React.ReactNode;\n /**\n * Контейнер для текста под `children`.\n */\n description?: React.ReactNode;\n /**\n * Убирает анимацию нажатия\n */\n disabled?: boolean;\n /**\n * В iOS добавляет chevron справа. Передавать `true`, если предполагается переход при клике по ячейке.\n */\n expandable?: boolean;\n multiline?: boolean;\n Component?: React.ElementType;\n}\n\nexport interface SimpleCellProps extends SimpleCellOwnProps, TappableProps {}\n\ninterface SimpleCellTypographyProps extends React.HTMLAttributes<HTMLDivElement> {\n Component?: React.ElementType;\n}\n\nconst SimpleCellTypography: React.FC<SimpleCellTypographyProps> = (props: SimpleCellTypographyProps) => {\n const { sizeY } = useAdaptivity();\n\n return sizeY === SizeType.COMPACT\n ? <Text weight=\"regular\" {...props} />\n : <Title level=\"3\" weight=\"regular\" {...props} />;\n};\n\nconst SimpleCell: React.FC<SimpleCellProps> = ({\n badge,\n before,\n indicator,\n children,\n after,\n description,\n expandable,\n multiline,\n sizeY,\n ...restProps\n}) => {\n const platform = usePlatform();\n const hasAfter = hasReactNode(after) || expandable && platform === IOS;\n\n return (\n <Tappable\n {...restProps}\n vkuiClass={\n classNames(\n getClassName('SimpleCell', platform),\n {\n 'SimpleCell--exp': expandable,\n 'SimpleCell--mult': multiline,\n },\n `SimpleCell--sizeY-${sizeY}`,\n )\n }\n >\n {before}\n <div vkuiClass=\"SimpleCell__main\">\n <div vkuiClass=\"SimpleCell__content\">\n <SimpleCellTypography vkuiClass=\"SimpleCell__children\">{children}</SimpleCellTypography>\n {hasReactNode(badge) &&\n <span vkuiClass=\"SimpleCell__badge\">\n {badge}\n </span>\n }\n </div>\n {description && <Subhead Component=\"span\" weight=\"regular\" vkuiClass=\"SimpleCell__description\">{description}</Subhead>}\n </div>\n {hasReactNode(indicator) &&\n <SimpleCellTypography Component=\"span\" vkuiClass=\"SimpleCell__indicator\">{indicator}</SimpleCellTypography>\n }\n {hasAfter &&\n <div vkuiClass=\"SimpleCell__after\">\n {after}\n {expandable && platform === IOS && <Icon24Chevron />}\n </div>\n }\n </Tappable>\n );\n};\n\nexport default withAdaptivity(SimpleCell, { sizeY: true });\n"],"file":"SimpleCell.js"}
1
+ {"version":3,"sources":["../../../../src/components/SimpleCell/SimpleCell.tsx"],"names":["SimpleCellTypography","props","sizeY","SizeType","COMPACT","SimpleCell","badge","before","indicator","children","after","description","expandable","multiline","restProps","platform","hasAfter","IOS"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AA0CA,IAAMA,oBAAyD,GAAG,SAA5DA,oBAA4D,CAACC,KAAD,EAAsC;AACtG,uBAAkB,oCAAlB;AAAA,MAAQC,KAAR,kBAAQA,KAAR;;AAEA,SAAOA,KAAK,KAAKC,yBAASC,OAAnB,GACH,qCAAC,aAAD;AAAM,IAAA,MAAM,EAAC;AAAb,KAA2BH,KAA3B,EADG,GAEH,qCAAC,cAAD;AAAO,IAAA,KAAK,EAAC,GAAb;AAAiB,IAAA,MAAM,EAAC;AAAxB,KAAsCA,KAAtC,EAFJ;AAGD,CAND;;AAQA,IAAMI,UAAqC,GAAG,SAAxCA,UAAwC,OAWvB;AAAA,MAVrBC,KAUqB,QAVrBA,KAUqB;AAAA,MATrBC,MASqB,QATrBA,MASqB;AAAA,MARrBC,SAQqB,QARrBA,SAQqB;AAAA,MAPrBC,QAOqB,QAPrBA,QAOqB;AAAA,MANrBC,KAMqB,QANrBA,KAMqB;AAAA,MALrBC,WAKqB,QALrBA,WAKqB;AAAA,MAJrBC,UAIqB,QAJrBA,UAIqB;AAAA,MAHrBC,SAGqB,QAHrBA,SAGqB;AAAA,MAFrBX,KAEqB,QAFrBA,KAEqB;AAAA,MADlBY,SACkB;AACrB,MAAMC,QAAQ,GAAG,+BAAjB;;AACA,MAAMC,QAAQ,GAAG,yBAAaN,KAAb,KAAuBE,UAAU,IAAIG,QAAQ,KAAKE,aAAnE;;AAEA,SACE,qCAAC,iBAAD,6BACMH,SADN;AAEE,IAAA,SAAS,EACP,4BACE,gCAAa,YAAb,EAA2BC,QAA3B,CADF,EAEE;AACE,yBAAmBH,UADrB;AAEE,0BAAoBC;AAFtB,KAFF,8BAMuBX,KANvB;AAHJ,MAaGK,MAbH,EAcE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,qCAAC,oBAAD;AAAsB,IAAA,SAAS,EAAC;AAAhC,KAAwDE,QAAxD,CADF,EAEG,yBAAaH,KAAb,KACC;AAAM,IAAA,SAAS,EAAC;AAAhB,KACGA,KADH,CAHJ,CADF,EASGK,WAAW,IAAI,qCAAC,gBAAD;AAAS,IAAA,SAAS,EAAC,MAAnB;AAA0B,IAAA,MAAM,EAAC,SAAjC;AAA2C,IAAA,SAAS,EAAC;AAArD,KAAgFA,WAAhF,CATlB,CAdF,EAyBG,yBAAaH,SAAb,KACC,qCAAC,oBAAD;AAAsB,IAAA,SAAS,EAAC,MAAhC;AAAuC,IAAA,SAAS,EAAC;AAAjD,KAA0EA,SAA1E,CA1BJ,EA4BGQ,QAAQ,IACP;AAAK,IAAA,SAAS,EAAC;AAAf,KACGN,KADH,EAEGE,UAAU,IAAIG,QAAQ,KAAKE,aAA3B,IAAkC,qCAAC,oBAAD,OAFrC,CA7BJ,CADF;AAqCD,CApDD;;eAsDe,oCAAeZ,UAAf,EAA2B;AAAEH,EAAAA,KAAK,EAAE;AAAT,CAA3B,C","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport Tappable, { TappableProps } from '../Tappable/Tappable';\nimport { Icon24Chevron } from '@vkontakte/icons';\nimport { IOS } from '../../lib/platform';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { withAdaptivity, SizeType } from '../../hoc/withAdaptivity';\nimport Title from '../Typography/Title/Title';\nimport Text from '../Typography/Text/Text';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport './SimpleCell.css';\n\nexport interface SimpleCellOwnProps {\n /**\n * Иконка 28 или `<Avatar size={28|32|40|48|72} />`\n */\n before?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится справа от текста `children`.\n */\n badge?: React.ReactNode;\n /**\n * Контейнер для текста справа от `children`.\n */\n indicator?: React.ReactNode;\n /**\n * Иконка 24|28 или `<Switch />`. Располагается справа от `indicator`.\n */\n after?: React.ReactNode;\n /**\n * Контейнер для текста под `children`.\n */\n description?: React.ReactNode;\n /**\n * Убирает анимацию нажатия\n */\n disabled?: boolean;\n /**\n * В iOS добавляет chevron справа. Передавать `true`, если предполагается переход при клике по ячейке.\n */\n expandable?: boolean;\n multiline?: boolean;\n Component?: React.ElementType;\n}\n\nexport interface SimpleCellProps extends SimpleCellOwnProps, TappableProps {}\n\ninterface SimpleCellTypographyProps extends React.HTMLAttributes<HTMLDivElement> {\n Component?: React.ElementType;\n}\n\nconst SimpleCellTypography: React.FC<SimpleCellTypographyProps> = (props: SimpleCellTypographyProps) => {\n const { sizeY } = useAdaptivity();\n\n return sizeY === SizeType.COMPACT\n ? <Text weight=\"regular\" {...props} />\n : <Title level=\"3\" weight=\"regular\" {...props} />;\n};\n\nconst SimpleCell: React.FC<SimpleCellProps> = ({\n badge,\n before,\n indicator,\n children,\n after,\n description,\n expandable,\n multiline,\n sizeY,\n ...restProps\n}: SimpleCellProps) => {\n const platform = usePlatform();\n const hasAfter = hasReactNode(after) || expandable && platform === IOS;\n\n return (\n <Tappable\n {...restProps}\n vkuiClass={\n classNames(\n getClassName('SimpleCell', platform),\n {\n 'SimpleCell--exp': expandable,\n 'SimpleCell--mult': multiline,\n },\n `SimpleCell--sizeY-${sizeY}`,\n )\n }\n >\n {before}\n <div vkuiClass=\"SimpleCell__main\">\n <div vkuiClass=\"SimpleCell__content\">\n <SimpleCellTypography vkuiClass=\"SimpleCell__children\">{children}</SimpleCellTypography>\n {hasReactNode(badge) &&\n <span vkuiClass=\"SimpleCell__badge\">\n {badge}\n </span>\n }\n </div>\n {description && <Subhead Component=\"span\" weight=\"regular\" vkuiClass=\"SimpleCell__description\">{description}</Subhead>}\n </div>\n {hasReactNode(indicator) &&\n <SimpleCellTypography Component=\"span\" vkuiClass=\"SimpleCell__indicator\">{indicator}</SimpleCellTypography>\n }\n {hasAfter &&\n <div vkuiClass=\"SimpleCell__after\">\n {after}\n {expandable && platform === IOS && <Icon24Chevron />}\n </div>\n }\n </Tappable>\n );\n};\n\nexport default withAdaptivity(SimpleCell, { sizeY: true });\n"],"file":"SimpleCell.js"}
@@ -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;
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = exports.SimpleCheckbox = void 0;
11
+
12
+ var _jsxRuntime = require("../../lib/jsxRuntime");
13
+
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
+
16
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
+
18
+ var React = _interopRequireWildcard(require("react"));
19
+
20
+ var _Tappable = _interopRequireWildcard(require("../Tappable/Tappable"));
21
+
22
+ var _getClassName = require("../../helpers/getClassName");
23
+
24
+ var _classNames = require("../../lib/classNames");
25
+
26
+ var _platform = require("../../lib/platform");
27
+
28
+ var _icons = require("@vkontakte/icons");
29
+
30
+ var _usePlatform = require("../../hooks/usePlatform");
31
+
32
+ var _useAdaptivity2 = require("../../hooks/useAdaptivity");
33
+
34
+ var _useExternRef = require("../../hooks/useExternRef");
35
+
36
+ var _withAdaptivity = require("../../hoc/withAdaptivity");
37
+
38
+ var _warnOnce = require("../../lib/warnOnce");
39
+
40
+ var _excluded = ["className", "style", "getRootRef", "getRef", "indeterminate", "defaultIndeterminate", "onChange"];
41
+ var warn = (0, _warnOnce.warnOnce)('SimpleCheckbox');
42
+ var IS_DEV = process.env.NODE_ENV === 'development';
43
+
44
+ var SimpleCheckbox = function SimpleCheckbox(props) {
45
+ var className = props.className,
46
+ style = props.style,
47
+ getRootRef = props.getRootRef,
48
+ getRef = props.getRef,
49
+ indeterminate = props.indeterminate,
50
+ defaultIndeterminate = props.defaultIndeterminate,
51
+ onChange = props.onChange,
52
+ restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
53
+
54
+ var _useAdaptivity = (0, _useAdaptivity2.useAdaptivity)(),
55
+ sizeY = _useAdaptivity.sizeY;
56
+
57
+ var platform = (0, _usePlatform.usePlatform)();
58
+ var inputRef = (0, _useExternRef.useExternRef)(getRef);
59
+ React.useEffect(function () {
60
+ var indeterminateValue = indeterminate === undefined ? defaultIndeterminate : indeterminate;
61
+
62
+ if (inputRef.current) {
63
+ inputRef.current.indeterminate = indeterminateValue;
64
+ }
65
+ }, [indeterminate]);
66
+ var handleChange = React.useCallback(function (event) {
67
+ if (defaultIndeterminate !== undefined && indeterminate === undefined && restProps.checked === undefined) {
68
+ inputRef.current.indeterminate = false;
69
+ }
70
+
71
+ if (indeterminate !== undefined) {
72
+ inputRef.current.indeterminate = indeterminate;
73
+ }
74
+
75
+ onChange && onChange(event);
76
+ }, [onChange, indeterminate, restProps.checked]);
77
+
78
+ if (IS_DEV) {
79
+ if (defaultIndeterminate && restProps.defaultChecked) {
80
+ warn('defaultIndeterminate and defaultChecked cannot be true at the same time');
81
+ }
82
+
83
+ if (indeterminate && restProps.checked) {
84
+ warn('indeterminate and checked cannot be true at the same time');
85
+ }
86
+ }
87
+
88
+ return (0, _jsxRuntime.createScopedElement)(_Tappable.default, {
89
+ Component: "label",
90
+ vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('SimpleCheckbox', platform), "SimpleCheckbox--sizeY-".concat(sizeY)),
91
+ className: className,
92
+ style: style,
93
+ disabled: restProps.disabled,
94
+ activeMode: platform === _platform.VKCOM ? 'SimpleCheckbox--active' : 'background',
95
+ hoverMode: platform === _platform.VKCOM ? 'SimpleCheckbox--hover' : 'background',
96
+ activeEffectDelay: platform === _platform.IOS ? 100 : _Tappable.ACTIVE_EFFECT_DELAY,
97
+ getRootRef: getRootRef
98
+ }, (0, _jsxRuntime.createScopedElement)("input", (0, _extends2.default)({}, restProps, {
99
+ onChange: handleChange,
100
+ type: "checkbox",
101
+ vkuiClass: "SimpleCheckbox__input",
102
+ ref: inputRef
103
+ })), (0, _jsxRuntime.createScopedElement)("div", {
104
+ vkuiClass: "SimpleCheckbox__container"
105
+ }, (0, _jsxRuntime.createScopedElement)("div", {
106
+ vkuiClass: "SimpleCheckbox__icon SimpleCheckbox__icon--on"
107
+ }, sizeY === _withAdaptivity.SizeType.COMPACT || platform === _platform.VKCOM ? (0, _jsxRuntime.createScopedElement)(_icons.Icon20CheckBoxOn, null) : (0, _jsxRuntime.createScopedElement)(_icons.Icon24CheckBoxOn, null)), (0, _jsxRuntime.createScopedElement)("div", {
108
+ vkuiClass: "SimpleCheckbox__icon SimpleCheckbox__icon--off"
109
+ }, sizeY === _withAdaptivity.SizeType.COMPACT || platform === _platform.VKCOM ? (0, _jsxRuntime.createScopedElement)(_icons.Icon20CheckBoxOff, null) : (0, _jsxRuntime.createScopedElement)(_icons.Icon24CheckBoxOff, null)), (0, _jsxRuntime.createScopedElement)("div", {
110
+ vkuiClass: "SimpleCheckbox__icon SimpleCheckbox__icon--indeterminate"
111
+ }, (0, _jsxRuntime.createScopedElement)(_icons.Icon20CheckBoxIndetermanate, {
112
+ width: sizeY === _withAdaptivity.SizeType.COMPACT || platform === _platform.VKCOM ? 20 : 24,
113
+ height: sizeY === _withAdaptivity.SizeType.COMPACT || platform === _platform.VKCOM ? 20 : 24
114
+ }))), platform === _platform.VKCOM && (0, _jsxRuntime.createScopedElement)("div", {
115
+ "aria-hidden": true,
116
+ vkuiClass: "SimpleCheckbox__activeShadow"
117
+ }), platform === _platform.VKCOM && (0, _jsxRuntime.createScopedElement)("div", {
118
+ "aria-hidden": true,
119
+ vkuiClass: "SimpleCheckbox__hoverShadow"
120
+ }));
121
+ };
122
+
123
+ exports.SimpleCheckbox = SimpleCheckbox;
124
+ var _default = SimpleCheckbox;
125
+ exports.default = _default;
126
+ //# sourceMappingURL=SimpleCheckbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/SimpleCheckbox/SimpleCheckbox.tsx"],"names":["warn","IS_DEV","process","env","NODE_ENV","SimpleCheckbox","props","className","style","getRootRef","getRef","indeterminate","defaultIndeterminate","onChange","restProps","sizeY","platform","inputRef","React","useEffect","indeterminateValue","undefined","current","handleChange","useCallback","event","checked","defaultChecked","disabled","VKCOM","IOS","ACTIVE_EFFECT_DELAY","SizeType","COMPACT"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport Tappable, { ACTIVE_EFFECT_DELAY } from '../Tappable/Tappable';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { IOS, VKCOM } from '../../lib/platform';\n\nimport { Icon20CheckBoxOn, Icon20CheckBoxOff, Icon24CheckBoxOn, Icon24CheckBoxOff, Icon20CheckBoxIndetermanate } from '@vkontakte/icons';\n\nimport { HasRef, HasRootRef } from '../../types';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { SizeType } from '../../hoc/withAdaptivity';\nimport { warnOnce } from '../../lib/warnOnce';\n\nimport './SimpleCheckbox.css';\n\nconst warn = warnOnce('SimpleCheckbox');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nexport interface SimpleCheckboxProps extends\n React.InputHTMLAttributes<HTMLInputElement>,\n HasRootRef<HTMLLabelElement>,\n HasRef<HTMLInputElement> {\n indeterminate?: boolean;\n defaultIndeterminate?: boolean;\n}\n\nexport const SimpleCheckbox: React.FC<SimpleCheckboxProps> = (props: SimpleCheckboxProps) => {\n const { className, style, getRootRef, getRef, indeterminate, defaultIndeterminate, onChange, ...restProps } = props;\n const { sizeY } = useAdaptivity();\n const platform = usePlatform();\n const inputRef = useExternRef(getRef);\n\n React.useEffect(() => {\n const indeterminateValue = indeterminate === undefined ? defaultIndeterminate : indeterminate;\n\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminateValue;\n }\n }, [indeterminate]);\n\n const handleChange: SimpleCheckboxProps['onChange'] = React.useCallback((event) => {\n if (defaultIndeterminate !== undefined && indeterminate === undefined && restProps.checked === undefined) {\n inputRef.current.indeterminate = false;\n }\n if (indeterminate !== undefined) {\n inputRef.current.indeterminate = indeterminate;\n }\n onChange && onChange(event);\n }, [onChange, indeterminate, restProps.checked]);\n\n if (IS_DEV) {\n if (defaultIndeterminate && restProps.defaultChecked) {\n warn('defaultIndeterminate and defaultChecked cannot be true at the same time');\n }\n\n if (indeterminate && restProps.checked) {\n warn('indeterminate and checked cannot be true at the same time');\n }\n }\n\n return (\n <Tappable\n Component=\"label\"\n vkuiClass={classNames(\n getClassName('SimpleCheckbox', platform),\n `SimpleCheckbox--sizeY-${sizeY}`,\n )}\n className={className}\n style={style}\n disabled={restProps.disabled}\n activeMode={platform === VKCOM ? 'SimpleCheckbox--active' : 'background'}\n hoverMode={platform === VKCOM ? 'SimpleCheckbox--hover' : 'background'}\n activeEffectDelay={platform === IOS ? 100 : ACTIVE_EFFECT_DELAY}\n getRootRef={getRootRef}\n >\n <input {...restProps} onChange={handleChange} type=\"checkbox\" vkuiClass=\"SimpleCheckbox__input\" ref={inputRef} />\n <div vkuiClass=\"SimpleCheckbox__container\">\n <div vkuiClass=\"SimpleCheckbox__icon SimpleCheckbox__icon--on\">\n {sizeY === SizeType.COMPACT || platform === VKCOM\n ? <Icon20CheckBoxOn />\n : <Icon24CheckBoxOn />\n }\n </div>\n <div vkuiClass=\"SimpleCheckbox__icon SimpleCheckbox__icon--off\">\n {sizeY === SizeType.COMPACT || platform === VKCOM\n ? <Icon20CheckBoxOff />\n : <Icon24CheckBoxOff />\n }\n </div>\n <div vkuiClass=\"SimpleCheckbox__icon SimpleCheckbox__icon--indeterminate\">\n <Icon20CheckBoxIndetermanate\n width={sizeY === SizeType.COMPACT || platform === VKCOM ? 20 : 24}\n height={sizeY === SizeType.COMPACT || platform === VKCOM ? 20 : 24}\n />\n </div>\n </div>\n {platform === VKCOM && <div aria-hidden={true} vkuiClass=\"SimpleCheckbox__activeShadow\" />}\n {platform === VKCOM && <div aria-hidden={true} vkuiClass=\"SimpleCheckbox__hoverShadow\" />}\n </Tappable>\n );\n};\n\nexport default SimpleCheckbox;\n"],"file":"SimpleCheckbox.js"}
@@ -19,7 +19,7 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
19
19
 
20
20
  var React = _interopRequireWildcard(require("react"));
21
21
 
22
- var _Touch = _interopRequireDefault(require("../Touch/Touch"));
22
+ var _Touch = require("../Touch/Touch");
23
23
 
24
24
  var _classNames = require("../../lib/classNames");
25
25
 
@@ -166,7 +166,7 @@ var SnackbarComponent = function SnackbarComponent(props) {
166
166
  'Snackbar--touched': touched,
167
167
  'Snackbar--desktop': isDesktop
168
168
  })
169
- }), (0, _jsxRuntime.createScopedElement)(_Touch.default, {
169
+ }), (0, _jsxRuntime.createScopedElement)(_Touch.Touch, {
170
170
  vkuiClass: "Snackbar__in",
171
171
  getRootRef: innerElRef,
172
172
  onStart: onTouchStart,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Snackbar/Snackbar.tsx"],"names":["SnackbarComponent","props","children","layout","action","before","after","viewWidth","duration","onActionClick","onClose","restProps","platform","waitTransitionFinish","React","useState","closing","setClosing","touched","setTouched","shiftXPercentRef","useRef","shiftXCurrentRef","touchStartTimeRef","bodyElRef","innerElRef","animationFrameRef","isDesktop","ViewWidth","SMALL_TABLET","transitionFinishDurationFallback","ANDROID","VKCOM","close","current","handleActionClick","e","closeTimeout","setBodyTransform","percent","cancelAnimationFrame","requestAnimationFrame","style","transform","onTouchStart","clear","onTouchMoveX","event","shiftX","startT","originalEvent","preventDefault","offsetWidth","onTouchEnd","callback","shiftXCurrent","expectTranslateY","Date","now","getTime","set","useEffect","resolvedLayout","displayName","defaultProps","Snackbar"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAoCA,IAAMA,iBAA0C,GAAG,SAA7CA,iBAA6C,CAACC,KAAD,EAA0B;AAC3E,MACEC,QADF,GAWID,KAXJ,CACEC,QADF;AAAA,MAEEC,MAFF,GAWIF,KAXJ,CAEEE,MAFF;AAAA,MAGEC,MAHF,GAWIH,KAXJ,CAGEG,MAHF;AAAA,MAIEC,MAJF,GAWIJ,KAXJ,CAIEI,MAJF;AAAA,MAKEC,KALF,GAWIL,KAXJ,CAKEK,KALF;AAAA,MAMEC,SANF,GAWIN,KAXJ,CAMEM,SANF;AAAA,MAOEC,QAPF,GAWIP,KAXJ,CAOEO,QAPF;AAAA,MAQEC,aARF,GAWIR,KAXJ,CAQEQ,aARF;AAAA,MASEC,OATF,GAWIT,KAXJ,CASES,OATF;AAAA,MAUKC,SAVL,0CAWIV,KAXJ;AAaA,MAAMW,QAAQ,GAAG,+BAAjB;;AAEA,8BAAiC,uDAAjC;AAAA,MAAQC,oBAAR,yBAAQA,oBAAR;;AAEA,wBAA8BC,KAAK,CAACC,QAAN,CAAe,KAAf,CAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,yBAA8BH,KAAK,CAACC,QAAN,CAAe,KAAf,CAA9B;AAAA;AAAA,MAAOG,OAAP;AAAA,MAAgBC,UAAhB;;AAEA,MAAMC,gBAAgB,GAAGN,KAAK,CAACO,MAAN,CAAqB,CAArB,CAAzB;AACA,MAAMC,gBAAgB,GAAGR,KAAK,CAACO,MAAN,CAAqB,CAArB,CAAzB;AACA,MAAME,iBAAiB,GAAGT,KAAK,CAACO,MAAN,CAA0B,IAA1B,CAA1B;AAEA,MAAMG,SAAS,GAAGV,KAAK,CAACO,MAAN,CAAoC,IAApC,CAAlB;AACA,MAAMI,UAAU,GAAGX,KAAK,CAACO,MAAN,CAAoC,IAApC,CAAnB;AAEA,MAAMK,iBAAiB,GAAGZ,KAAK,CAACO,MAAN,CAA8D,IAA9D,CAA1B;AAEA,MAAMM,SAAS,GAAGpB,SAAS,IAAIqB,0BAAUC,YAAzC;AACA,MAAMC,gCAAgC,GAAGlB,QAAQ,KAAKmB,iBAAb,IAAwBnB,QAAQ,KAAKoB,eAArC,GAA6C,GAA7C,GAAmD,GAA5F;;AAEA,MAAMC,KAAK,GAAG,SAARA,KAAQ,GAAM;AAClBhB,IAAAA,UAAU,CAAC,IAAD,CAAV;AACAJ,IAAAA,oBAAoB,CAACY,UAAU,CAACS,OAAZ,EAAqB,YAAM;AAC7CxB,MAAAA,OAAO;AACR,KAFmB,EAEjBoB,gCAFiB,CAApB;AAGD,GALD;;AAOA,MAAMK,iBAAuD,GAAG,SAA1DA,iBAA0D,CAACC,CAAD,EAAO;AACrEH,IAAAA,KAAK;;AAEL,QAAI7B,MAAM,IAAI,OAAOK,aAAP,KAAyB,UAAvC,EAAmD;AACjDA,MAAAA,aAAa,CAAC2B,CAAD,CAAb;AACD;AACF,GAND;;AAQA,MAAMC,YAAY,GAAG,4BAAWJ,KAAX,EAAkBzB,QAAlB,CAArB;;AAEA,MAAM8B,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,OAAD,EAAqB;AAC5CC,IAAAA,oBAAoB,CAACd,iBAAiB,CAACQ,OAAnB,CAApB;AACAR,IAAAA,iBAAiB,CAACQ,OAAlB,GAA4BO,qBAAqB,CAAC,YAAM;AACtD,UAAIjB,SAAS,CAACU,OAAd,EAAuB;AACrBV,QAAAA,SAAS,CAACU,OAAV,CAAkBQ,KAAlB,CAAwBC,SAAxB,yBAAmDJ,OAAnD;AACD;AACF,KAJgD,CAAjD;AAKD,GAPD;;AASA,MAAMK,YAAY,GAAGP,YAAY,CAACQ,KAAlC;;AAEA,MAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAAuB;AAC1C,QAAQC,MAAR,GAA0CD,KAA1C,CAAQC,MAAR;AAAA,QAAgBC,MAAhB,GAA0CF,KAA1C,CAAgBE,MAAhB;AAAA,QAAwBC,aAAxB,GAA0CH,KAA1C,CAAwBG,aAAxB;AACAA,IAAAA,aAAa,CAACC,cAAd;;AAEA,QAAI,CAACjC,OAAL,EAAc;AACZC,MAAAA,UAAU,CAAC,IAAD,CAAV;AACD;;AAEDC,IAAAA,gBAAgB,CAACc,OAAjB,GAA2Bc,MAAM,GAAGxB,SAAS,CAACU,OAAV,CAAkBkB,WAA3B,GAAyC,GAApE;AACA9B,IAAAA,gBAAgB,CAACY,OAAjB,GAA2B,mBAAOd,gBAAgB,CAACc,OAAxB,EAAiC,EAAjC,EAAqC,GAArC,EAA0CtB,QAAQ,KAAKmB,iBAAb,IAAwBnB,QAAQ,KAAKoB,eAA/E,CAA3B;AACAT,IAAAA,iBAAiB,CAACW,OAAlB,GAA4Be,MAA5B;AAEAX,IAAAA,gBAAgB,CAAChB,gBAAgB,CAACY,OAAlB,CAAhB;AACD,GAbD;;AAeA,MAAMmB,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvB,QAAIC,QAAJ;;AAEA,QAAIpC,OAAJ,EAAa;AACX,UAAIqC,aAAa,GAAGjC,gBAAgB,CAACY,OAArC;AACA,UAAMsB,gBAAgB,GAAGD,aAAa,IAAIE,IAAI,CAACC,GAAL,KAAanC,iBAAiB,CAACW,OAAlB,CAA0ByB,OAA1B,EAAjB,CAAb,GAAqE,GAArE,GAA2E,GAApG;AACAJ,MAAAA,aAAa,GAAGA,aAAa,GAAGC,gBAAhC;;AAEA,UAAI7B,SAAS,IAAI4B,aAAa,IAAI,CAAC,EAAnC,EAAuC;AACrClB,QAAAA,YAAY,CAACQ,KAAb;AACAhC,QAAAA,oBAAoB,CAACW,SAAS,CAACU,OAAX,EAAoB,YAAM;AAC5CxB,UAAAA,OAAO;AACR,SAFmB,EAEjBoB,gCAFiB,CAApB;AAGAQ,QAAAA,gBAAgB,CAAC,CAAC,GAAF,CAAhB;AACD,OAND,MAMO,IAAI,CAACX,SAAD,IAAc4B,aAAa,IAAI,EAAnC,EAAuC;AAC5ClB,QAAAA,YAAY,CAACQ,KAAb;AACAhC,QAAAA,oBAAoB,CAACW,SAAS,CAACU,OAAX,EAAoB,YAAM;AAC5CxB,UAAAA,OAAO;AACR,SAFmB,EAEjBoB,gCAFiB,CAApB;AAGAQ,QAAAA,gBAAgB,CAAC,GAAD,CAAhB;AACD,OANM,MAMA;AACLgB,QAAAA,QAAQ,GAAG,oBAAM;AACfjB,UAAAA,YAAY,CAACuB,GAAb;AACAtB,UAAAA,gBAAgB,CAAC,CAAD,CAAhB;AACD,SAHD;AAID;AACF,KAvBD,MAuBO;AACLD,MAAAA,YAAY,CAACuB,GAAb;AACD;;AAEDzC,IAAAA,UAAU,CAAC,KAAD,CAAV;AACAmC,IAAAA,QAAQ,IAAIb,qBAAqB,CAACa,QAAD,CAAjC;AACD,GAhCD;;AAkCAxC,EAAAA,KAAK,CAAC+C,SAAN,CAAgBxB,YAAY,CAACuB,GAA7B,EAAkC,EAAlC;AAEA,MAAME,cAAc,GAAGxD,KAAK,IAAIqB,SAAT,GAAqB,UAArB,GAAkCxB,MAAzD;AAEA,SACE,qCAAC,4BAAD,QACE,uEACMQ,SADN;AAEE,IAAA,SAAS,EAAE,4BAAW,gCAAa,UAAb,EAAyBC,QAAzB,CAAX,wBAA8DkD,cAA9D,GAAgF;AACzF,2BAAqB9C,OADoE;AAEzF,2BAAqBE,OAFoE;AAGzF,2BAAqBS;AAHoE,KAAhF;AAFb,MAQE,qCAAC,cAAD;AACE,IAAA,SAAS,EAAC,cADZ;AAEE,IAAA,UAAU,EAAEF,UAFd;AAGE,IAAA,OAAO,EAAEmB,YAHX;AAIE,IAAA,OAAO,EAAEE,YAJX;AAKE,IAAA,KAAK,EAAEO;AALT,KAOE;AAAK,IAAA,SAAS,EAAC,gBAAf;AAAgC,IAAA,GAAG,EAAE7B;AAArC,KACGnB,MAAM,IACP;AAAK,IAAA,SAAS,EAAC;AAAf,KACGA,MADH,CAFF,EAME;AAAK,IAAA,SAAS,EAAC;AAAf,KACE,qCAAC,aAAD;AAAM,IAAA,MAAM,EAAC,SAAb;AAAuB,IAAA,SAAS,EAAC;AAAjC,KAA2DH,QAA3D,CADF,EAGGE,MAAM,IACP,qCAAC,eAAD;AAAQ,IAAA,KAAK,EAAC,MAAd;AAAqB,IAAA,QAAQ,EAAE,KAA/B;AAAsC,IAAA,IAAI,EAAC,UAA3C;AAAsD,IAAA,IAAI,EAAC,GAA3D;AAA+D,IAAA,SAAS,EAAC,kBAAzE;AAA4F,IAAA,OAAO,EAAE+B;AAArG,KACG/B,MADH,CAJF,CANF,EAeGE,KAAK,IACN;AAAK,IAAA,SAAS,EAAC;AAAf,KACGA,KADH,CAhBF,CAPF,CARF,CADF,CADF;AAyCD,CA3JD;;AA6JAN,iBAAiB,CAAC+D,WAAlB,GAAgC,UAAhC;AAEA/D,iBAAiB,CAACgE,YAAlB,GAAiC;AAC/BxD,EAAAA,QAAQ,EAAE,IADqB;AAE/BL,EAAAA,MAAM,EAAE;AAFuB,CAAjC;AAKO,IAAM8D,QAAQ,GAAG,oCAAejE,iBAAf,EAAkC;AACxDO,EAAAA,SAAS,EAAE;AAD6C,CAAlC,CAAjB","sourcesContent":["import * as React from 'react';\nimport Touch, { TouchEvent } from '../Touch/Touch';\nimport { classNames } from '../../lib/classNames';\nimport { HasPlatform } from '../../types';\nimport { getClassName } from '../../helpers/getClassName';\nimport { ANDROID, VKCOM } from '../../lib/platform';\nimport { rubber } from '../../lib/touch';\nimport { withAdaptivity, AdaptivityProps, ViewWidth } from '../../hoc/withAdaptivity';\nimport Text from '../Typography/Text/Text';\nimport Button from '../Button/Button';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport './Snackbar.css';\n\nexport interface SnackbarProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, AdaptivityProps {\n /**\n * Название кнопки действия в уведомлении\n */\n action?: string | React.ComponentType;\n\n /**\n * Будет вызвано при клике на кнопку действия\n */\n onActionClick?: (e: React.MouseEvent) => void;\n\n /**\n * Цветная иконка 24x24 пикселя\n */\n before?: React.ReactNode;\n /**\n * Контент в правой части, может быть `<Avatar size={32} />`\n */\n after?: React.ReactNode;\n /**\n * Варианты расположения кнопки\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Время в миллисекундах, через которое плашка скроется\n */\n duration?: number;\n /**\n * Обработчик закрытия уведомления\n */\n onClose: () => void;\n}\n\nconst SnackbarComponent: React.FC<SnackbarProps> = (props: SnackbarProps) => {\n const {\n children,\n layout,\n action,\n before,\n after,\n viewWidth,\n duration,\n onActionClick,\n onClose,\n ...restProps\n } = props;\n\n const platform = usePlatform();\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n\n const [closing, setClosing] = React.useState(false);\n const [touched, setTouched] = React.useState(false);\n\n const shiftXPercentRef = React.useRef<number>(0);\n const shiftXCurrentRef = React.useRef<number>(0);\n const touchStartTimeRef = React.useRef<Date | null>(null);\n\n const bodyElRef = React.useRef<HTMLDivElement | null>(null);\n const innerElRef = React.useRef<HTMLDivElement | null>(null);\n\n const animationFrameRef = React.useRef<ReturnType<typeof requestAnimationFrame> | null>(null);\n\n const isDesktop = viewWidth >= ViewWidth.SMALL_TABLET;\n const transitionFinishDurationFallback = platform === ANDROID || platform === VKCOM ? 400 : 320;\n\n const close = () => {\n setClosing(true);\n waitTransitionFinish(innerElRef.current, () => {\n onClose();\n }, transitionFinishDurationFallback);\n };\n\n const handleActionClick: React.MouseEventHandler<HTMLElement> = (e) => {\n close();\n\n if (action && typeof onActionClick === 'function') {\n onActionClick(e);\n }\n };\n\n const closeTimeout = useTimeout(close, duration);\n\n const setBodyTransform = (percent: number) => {\n cancelAnimationFrame(animationFrameRef.current);\n animationFrameRef.current = requestAnimationFrame(() => {\n if (bodyElRef.current) {\n bodyElRef.current.style.transform = `translate3d(${percent}%, 0, 0)`;\n }\n });\n };\n\n const onTouchStart = closeTimeout.clear;\n\n const onTouchMoveX = (event: TouchEvent) => {\n const { shiftX, startT, originalEvent } = event;\n originalEvent.preventDefault();\n\n if (!touched) {\n setTouched(true);\n }\n\n shiftXPercentRef.current = shiftX / bodyElRef.current.offsetWidth * 100;\n shiftXCurrentRef.current = rubber(shiftXPercentRef.current, 72, 1.2, platform === ANDROID || platform === VKCOM);\n touchStartTimeRef.current = startT;\n\n setBodyTransform(shiftXCurrentRef.current);\n };\n\n const onTouchEnd = () => {\n let callback: VoidFunction | undefined;\n\n if (touched) {\n let shiftXCurrent = shiftXCurrentRef.current;\n const expectTranslateY = shiftXCurrent / (Date.now() - touchStartTimeRef.current.getTime()) * 240 * 0.6;\n shiftXCurrent = shiftXCurrent + expectTranslateY;\n\n if (isDesktop && shiftXCurrent <= -50) {\n closeTimeout.clear();\n waitTransitionFinish(bodyElRef.current, () => {\n onClose();\n }, transitionFinishDurationFallback);\n setBodyTransform(-120);\n } else if (!isDesktop && shiftXCurrent >= 50) {\n closeTimeout.clear();\n waitTransitionFinish(bodyElRef.current, () => {\n onClose();\n }, transitionFinishDurationFallback);\n setBodyTransform(120);\n } else {\n callback = () => {\n closeTimeout.set();\n setBodyTransform(0);\n };\n }\n } else {\n closeTimeout.set();\n }\n\n setTouched(false);\n callback && requestAnimationFrame(callback);\n };\n\n React.useEffect(closeTimeout.set, []);\n\n const resolvedLayout = after || isDesktop ? 'vertical' : layout;\n\n return (\n <AppRootPortal>\n <div\n {...restProps}\n vkuiClass={classNames(getClassName('Snackbar', platform), `Snackbar--l-${resolvedLayout}`, {\n 'Snackbar--closing': closing,\n 'Snackbar--touched': touched,\n 'Snackbar--desktop': isDesktop,\n })}\n >\n <Touch\n vkuiClass=\"Snackbar__in\"\n getRootRef={innerElRef}\n onStart={onTouchStart}\n onMoveX={onTouchMoveX}\n onEnd={onTouchEnd}\n >\n <div vkuiClass=\"Snackbar__body\" ref={bodyElRef}>\n {before &&\n <div vkuiClass=\"Snackbar__before\">\n {before}\n </div>}\n\n <div vkuiClass=\"Snackbar__content\">\n <Text weight=\"regular\" vkuiClass=\"Snackbar__content-text\">{children}</Text>\n\n {action &&\n <Button align=\"left\" hasHover={false} mode=\"tertiary\" size=\"s\" vkuiClass=\"Snackbar__action\" onClick={handleActionClick}>\n {action}\n </Button>}\n </div>\n\n {after &&\n <div vkuiClass=\"Snackbar__after\">\n {after}\n </div>}\n </div>\n </Touch>\n </div>\n </AppRootPortal>\n );\n};\n\nSnackbarComponent.displayName = 'Snackbar';\n\nSnackbarComponent.defaultProps = {\n duration: 4000,\n layout: 'horizontal',\n};\n\nexport const Snackbar = withAdaptivity(SnackbarComponent, {\n viewWidth: true,\n});\n"],"file":"Snackbar.js"}
1
+ {"version":3,"sources":["../../../../src/components/Snackbar/Snackbar.tsx"],"names":["SnackbarComponent","props","children","layout","action","before","after","viewWidth","duration","onActionClick","onClose","restProps","platform","waitTransitionFinish","React","useState","closing","setClosing","touched","setTouched","shiftXPercentRef","useRef","shiftXCurrentRef","touchStartTimeRef","bodyElRef","innerElRef","animationFrameRef","isDesktop","ViewWidth","SMALL_TABLET","transitionFinishDurationFallback","ANDROID","VKCOM","close","current","handleActionClick","e","closeTimeout","setBodyTransform","percent","cancelAnimationFrame","requestAnimationFrame","style","transform","onTouchStart","clear","onTouchMoveX","event","shiftX","startT","originalEvent","preventDefault","offsetWidth","onTouchEnd","callback","shiftXCurrent","expectTranslateY","Date","now","getTime","set","useEffect","resolvedLayout","displayName","defaultProps","Snackbar"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { classNames } from '../../lib/classNames';\nimport { HasPlatform } from '../../types';\nimport { getClassName } from '../../helpers/getClassName';\nimport { ANDROID, VKCOM } from '../../lib/platform';\nimport { rubber } from '../../lib/touch';\nimport { withAdaptivity, AdaptivityProps, ViewWidth } from '../../hoc/withAdaptivity';\nimport Text from '../Typography/Text/Text';\nimport Button from '../Button/Button';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport './Snackbar.css';\n\nexport interface SnackbarProps extends React.HTMLAttributes<HTMLElement>, HasPlatform, AdaptivityProps {\n /**\n * Название кнопки действия в уведомлении\n */\n action?: string | React.ComponentType;\n\n /**\n * Будет вызвано при клике на кнопку действия\n */\n onActionClick?: (e: React.MouseEvent) => void;\n\n /**\n * Цветная иконка 24x24 пикселя\n */\n before?: React.ReactNode;\n /**\n * Контент в правой части, может быть `<Avatar size={32} />`\n */\n after?: React.ReactNode;\n /**\n * Варианты расположения кнопки\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Время в миллисекундах, через которое плашка скроется\n */\n duration?: number;\n /**\n * Обработчик закрытия уведомления\n */\n onClose: () => void;\n}\n\nconst SnackbarComponent: React.FC<SnackbarProps> = (props: SnackbarProps) => {\n const {\n children,\n layout,\n action,\n before,\n after,\n viewWidth,\n duration,\n onActionClick,\n onClose,\n ...restProps\n } = props;\n\n const platform = usePlatform();\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n\n const [closing, setClosing] = React.useState(false);\n const [touched, setTouched] = React.useState(false);\n\n const shiftXPercentRef = React.useRef<number>(0);\n const shiftXCurrentRef = React.useRef<number>(0);\n const touchStartTimeRef = React.useRef<Date | null>(null);\n\n const bodyElRef = React.useRef<HTMLDivElement | null>(null);\n const innerElRef = React.useRef<HTMLDivElement | null>(null);\n\n const animationFrameRef = React.useRef<ReturnType<typeof requestAnimationFrame> | null>(null);\n\n const isDesktop = viewWidth >= ViewWidth.SMALL_TABLET;\n const transitionFinishDurationFallback = platform === ANDROID || platform === VKCOM ? 400 : 320;\n\n const close = () => {\n setClosing(true);\n waitTransitionFinish(innerElRef.current, () => {\n onClose();\n }, transitionFinishDurationFallback);\n };\n\n const handleActionClick: React.MouseEventHandler<HTMLElement> = (e) => {\n close();\n\n if (action && typeof onActionClick === 'function') {\n onActionClick(e);\n }\n };\n\n const closeTimeout = useTimeout(close, duration);\n\n const setBodyTransform = (percent: number) => {\n cancelAnimationFrame(animationFrameRef.current);\n animationFrameRef.current = requestAnimationFrame(() => {\n if (bodyElRef.current) {\n bodyElRef.current.style.transform = `translate3d(${percent}%, 0, 0)`;\n }\n });\n };\n\n const onTouchStart = closeTimeout.clear;\n\n const onTouchMoveX = (event: TouchEvent) => {\n const { shiftX, startT, originalEvent } = event;\n originalEvent.preventDefault();\n\n if (!touched) {\n setTouched(true);\n }\n\n shiftXPercentRef.current = shiftX / bodyElRef.current.offsetWidth * 100;\n shiftXCurrentRef.current = rubber(shiftXPercentRef.current, 72, 1.2, platform === ANDROID || platform === VKCOM);\n touchStartTimeRef.current = startT;\n\n setBodyTransform(shiftXCurrentRef.current);\n };\n\n const onTouchEnd = () => {\n let callback: VoidFunction | undefined;\n\n if (touched) {\n let shiftXCurrent = shiftXCurrentRef.current;\n const expectTranslateY = shiftXCurrent / (Date.now() - touchStartTimeRef.current.getTime()) * 240 * 0.6;\n shiftXCurrent = shiftXCurrent + expectTranslateY;\n\n if (isDesktop && shiftXCurrent <= -50) {\n closeTimeout.clear();\n waitTransitionFinish(bodyElRef.current, () => {\n onClose();\n }, transitionFinishDurationFallback);\n setBodyTransform(-120);\n } else if (!isDesktop && shiftXCurrent >= 50) {\n closeTimeout.clear();\n waitTransitionFinish(bodyElRef.current, () => {\n onClose();\n }, transitionFinishDurationFallback);\n setBodyTransform(120);\n } else {\n callback = () => {\n closeTimeout.set();\n setBodyTransform(0);\n };\n }\n } else {\n closeTimeout.set();\n }\n\n setTouched(false);\n callback && requestAnimationFrame(callback);\n };\n\n React.useEffect(closeTimeout.set, []);\n\n const resolvedLayout = after || isDesktop ? 'vertical' : layout;\n\n return (\n <AppRootPortal>\n <div\n {...restProps}\n vkuiClass={classNames(getClassName('Snackbar', platform), `Snackbar--l-${resolvedLayout}`, {\n 'Snackbar--closing': closing,\n 'Snackbar--touched': touched,\n 'Snackbar--desktop': isDesktop,\n })}\n >\n <Touch\n vkuiClass=\"Snackbar__in\"\n getRootRef={innerElRef}\n onStart={onTouchStart}\n onMoveX={onTouchMoveX}\n onEnd={onTouchEnd}\n >\n <div vkuiClass=\"Snackbar__body\" ref={bodyElRef}>\n {before &&\n <div vkuiClass=\"Snackbar__before\">\n {before}\n </div>}\n\n <div vkuiClass=\"Snackbar__content\">\n <Text weight=\"regular\" vkuiClass=\"Snackbar__content-text\">{children}</Text>\n\n {action &&\n <Button align=\"left\" hasHover={false} mode=\"tertiary\" size=\"s\" vkuiClass=\"Snackbar__action\" onClick={handleActionClick}>\n {action}\n </Button>}\n </div>\n\n {after &&\n <div vkuiClass=\"Snackbar__after\">\n {after}\n </div>}\n </div>\n </Touch>\n </div>\n </AppRootPortal>\n );\n};\n\nSnackbarComponent.displayName = 'Snackbar';\n\nSnackbarComponent.defaultProps = {\n duration: 4000,\n layout: 'horizontal',\n};\n\nexport const Snackbar = withAdaptivity(SnackbarComponent, {\n viewWidth: true,\n});\n"],"file":"Snackbar.js"}
@@ -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;
@@ -15,7 +15,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
15
15
 
16
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
17
 
18
- var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
18
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
19
 
20
20
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
21
21
 
@@ -31,7 +31,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
31
31
 
32
32
  var React = _interopRequireWildcard(require("react"));
33
33
 
34
- var _Touch = _interopRequireDefault(require("../Touch/Touch"));
34
+ var _Touch = require("../Touch/Touch");
35
35
 
36
36
  var _TouchContext = _interopRequireDefault(require("../Touch/TouchContext"));
37
37
 
@@ -57,6 +57,8 @@ var _accessibility = require("../../lib/accessibility");
57
57
 
58
58
  var _FocusVisible = require("../FocusVisible/FocusVisible");
59
59
 
60
+ var _useTimeout = require("../../hooks/useTimeout");
61
+
60
62
  var _excluded = ["children", "Component", "onClick", "onKeyDown", "activeEffectDelay", "stopPropagation", "getRootRef", "platform", "sizeX", "hasMouse", "hasHover", "hoverMode", "hasActive", "activeMode", "focusVisibleMode"];
61
63
 
62
64
  var ts = function ts() {
@@ -102,7 +104,6 @@ var Tappable = /*#__PURE__*/function (_React$Component) {
102
104
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "insideTouchRoot", void 0);
103
105
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "container", void 0);
104
106
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "timeout", void 0);
105
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "wavesTimeout", void 0);
106
107
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onKeyDown", function (e) {
107
108
  var onKeyDown = _this.props.onKeyDown;
108
109
 
@@ -201,26 +202,14 @@ var Tappable = /*#__PURE__*/function (_React$Component) {
201
202
 
202
203
  var x = (0, _touch.coordX)(e) - left;
203
204
  var y = (0, _touch.coordY)(e) - top;
204
- var key = 'wave' + Date.now().toString();
205
-
206
- _this.setState(function (state) {
207
- return {
208
- clicks: (0, _objectSpread3.default)((0, _objectSpread3.default)({}, state.clicks), {}, (0, _defineProperty2.default)({}, key, {
209
- x: x,
210
- y: y
211
- }))
212
- };
213
- });
214
205
 
215
- _this.wavesTimeout = setTimeout(function () {
216
- _this.setState(function (state) {
217
- var clicks = (0, _objectSpread3.default)({}, state.clicks);
218
- delete clicks[key];
219
- return {
220
- clicks: clicks
221
- };
222
- });
223
- }, 225);
206
+ _this.setState({
207
+ clicks: [].concat((0, _toConsumableArray2.default)(_this.state.clicks), [{
208
+ x: x,
209
+ y: y,
210
+ id: Date.now().toString()
211
+ }])
212
+ });
224
213
  }
225
214
  });
226
215
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onEnter", function () {
@@ -265,7 +254,7 @@ var Tappable = /*#__PURE__*/function (_React$Component) {
265
254
  });
266
255
  _this.id = Math.round(Math.random() * 1e8).toString(16);
267
256
  _this.state = {
268
- clicks: {},
257
+ clicks: [],
269
258
  active: false,
270
259
  ts: null,
271
260
  hasHover: props.hasHover,
@@ -283,8 +272,6 @@ var Tappable = /*#__PURE__*/function (_React$Component) {
283
272
  clearTimeout(storage[this.id].activeTimeout);
284
273
  delete storage[this.id];
285
274
  }
286
-
287
- clearTimeout(this.wavesTimeout);
288
275
  }
289
276
  }, {
290
277
  key: "componentDidUpdate",
@@ -302,6 +289,15 @@ var Tappable = /*#__PURE__*/function (_React$Component) {
302
289
  });
303
290
  }
304
291
  }
292
+ }, {
293
+ key: "removeWave",
294
+ value: function removeWave(id) {
295
+ this.setState({
296
+ clicks: this.state.clicks.filter(function (c) {
297
+ return c.id !== id;
298
+ })
299
+ });
300
+ }
305
301
  }, {
306
302
  key: "render",
307
303
  value: function render() {
@@ -341,7 +337,7 @@ var Tappable = /*#__PURE__*/function (_React$Component) {
341
337
  'Tappable--inactive': !active,
342
338
  'Tappable--mouse': hasMouse
343
339
  }, (0, _defineProperty2.default)(_classNames, "Tappable--hover-".concat(hoverMode), hasHover && hovered && isPresetHoverMode), (0, _defineProperty2.default)(_classNames, "Tappable--active-".concat(activeMode), hasActive && active && isPresetActiveMode), (0, _defineProperty2.default)(_classNames, hoverMode, hasHover && hovered && !isPresetHoverMode), (0, _defineProperty2.default)(_classNames, activeMode, hasActive && active && !isPresetActiveMode), _classNames));
344
- var RootComponent = restProps.disabled ? Component : _Touch.default;
340
+ var RootComponent = restProps.disabled ? Component : _Touch.Touch;
345
341
  var props = {};
346
342
 
347
343
  if (!restProps.disabled) {
@@ -406,16 +402,14 @@ var Tappable = /*#__PURE__*/function (_React$Component) {
406
402
  }, children), platform === _platform.ANDROID && !hasMouse && hasActive && activeMode === 'background' && (0, _jsxRuntime.createScopedElement)("span", {
407
403
  "aria-hidden": "true",
408
404
  vkuiClass: "Tappable__waves"
409
- }, Object.keys(clicks).map(function (k) {
410
- return (0, _jsxRuntime.createScopedElement)("span", {
411
- vkuiClass: "Tappable__wave",
412
- style: {
413
- top: clicks[k].y,
414
- left: clicks[k].x
415
- },
416
- key: k
417
- });
418
- })), hasHover && (0, _jsxRuntime.createScopedElement)("span", {
405
+ }, clicks.map(function (wave) {
406
+ return (0, _jsxRuntime.createScopedElement)(Wave, (0, _extends2.default)({}, wave, {
407
+ key: wave.id,
408
+ onClear: function onClear() {
409
+ return _this2.removeWave(wave.id);
410
+ }
411
+ }));
412
+ })), hasHover && hoverMode === 'background' && (0, _jsxRuntime.createScopedElement)("span", {
419
413
  "aria-hidden": "true",
420
414
  vkuiClass: "Tappable__hoverShadow"
421
415
  }), !restProps.disabled && (0, _jsxRuntime.createScopedElement)(_FocusVisible.FocusVisible, {
@@ -445,4 +439,21 @@ var _default = (0, _withAdaptivity.withAdaptivity)((0, _withPlatform.withPlatfor
445
439
  });
446
440
 
447
441
  exports.default = _default;
442
+
443
+ function Wave(_ref5) {
444
+ var x = _ref5.x,
445
+ y = _ref5.y,
446
+ onClear = _ref5.onClear;
447
+ var timeout = (0, _useTimeout.useTimeout)(onClear, 225);
448
+ React.useEffect(function () {
449
+ return timeout.set();
450
+ }, []);
451
+ return (0, _jsxRuntime.createScopedElement)("span", {
452
+ vkuiClass: "Tappable__wave",
453
+ style: {
454
+ top: y,
455
+ left: x
456
+ }
457
+ });
458
+ }
448
459
  //# sourceMappingURL=Tappable.js.map