@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
@@ -40,31 +40,27 @@
40
40
  }
41
41
 
42
42
  .UsersStack__photo + .UsersStack__photo {
43
- margin-left: 4px;
44
- }
45
-
46
- .UsersStack:not(.UsersStack--simple) .UsersStack__photo + .UsersStack__photo {
47
43
  margin-left: -2px;
48
44
  }
49
45
 
50
- .UsersStack--size-xs:not(.UsersStack--simple) .UsersStack__photo + .UsersStack__photo {
46
+ .UsersStack--size-xs .UsersStack__photo + .UsersStack__photo {
51
47
  margin-left: -1px;
52
48
  clip-path: url(#users_stack_mask_16_left);
53
49
  }
54
50
 
55
- .UsersStack--size-s:not(.UsersStack--simple) .UsersStack__photo + .UsersStack__photo {
51
+ .UsersStack--size-s .UsersStack__photo + .UsersStack__photo {
56
52
  clip-path: url(#users_stack_mask_24_left);
57
53
  }
58
54
 
59
- .UsersStack--size-m:not(.UsersStack--simple) .UsersStack__photo + .UsersStack__photo {
55
+ .UsersStack--size-m .UsersStack__photo + .UsersStack__photo {
60
56
  clip-path: url(#users_stack_mask_32_left);
61
57
  }
62
58
 
63
- .UsersStack--size-m.UsersStack--others:not(.UsersStack--simple) .UsersStack__photo {
59
+ .UsersStack--size-m.UsersStack--others .UsersStack__photo {
64
60
  clip-path: url(#users_stack_mask_32_right);
65
61
  }
66
62
 
67
- .UsersStack--size-m.UsersStack--others:not(.UsersStack--simple) .UsersStack__photo:last-child {
63
+ .UsersStack--size-m.UsersStack--others .UsersStack__photo:last-child {
68
64
  clip-path: none;
69
65
  }
70
66
 
@@ -1,14 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { getClassName } from '../../helpers/getClassName';
3
- import { useBrowserInfo } from '../../hooks/useBrowserInfo';
4
3
  import { usePlatform } from '../../hooks/usePlatform';
5
4
  import { hasReactNode } from '../../lib/utils';
6
5
  import { classNames } from '../../lib/classNames';
7
- import { System } from '../../lib/browser';
8
6
  import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
9
7
  import Caption from '../Typography/Caption/Caption';
10
8
  import Subhead from '../Typography/Subhead/Subhead';
11
9
  import { createMasks } from './masks';
10
+ import { useDOM } from '../../lib/dom';
12
11
  import './UsersStack.css';
13
12
 
14
13
  export interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -32,24 +31,19 @@ export interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {
32
31
  }
33
32
 
34
33
  const UsersStack: React.FC<UsersStackProps> = (props: UsersStackProps) => {
35
- const { system, systemVersion } = useBrowserInfo();
36
34
  const platform = usePlatform();
37
35
  const { photos, visibleCount, size, layout, children, ...restProps } = props;
36
+ const { document } = useDOM();
38
37
 
39
38
  useIsomorphicLayoutEffect(() => {
40
- createMasks();
41
- }, []);
39
+ createMasks(document);
40
+ }, [document]);
42
41
 
43
42
  const othersCount = Math.max(0, photos.length - visibleCount);
44
43
  const canShowOthers = othersCount > 0 && size === 'm';
45
44
 
46
45
  const photosShown = photos.slice(0, visibleCount);
47
46
 
48
- let canUseClipPath = true;
49
- if (system === System.IOS) {
50
- canUseClipPath = systemVersion && systemVersion.major >= 12;
51
- }
52
-
53
47
  return (
54
48
  <div
55
49
  {...restProps}
@@ -60,7 +54,6 @@ const UsersStack: React.FC<UsersStackProps> = (props: UsersStackProps) => {
60
54
  `UsersStack--l-${layout}`,
61
55
  {
62
56
  'UsersStack--others': canShowOthers,
63
- 'UsersStack--simple': !canUseClipPath,
64
57
  },
65
58
  )
66
59
  }
@@ -1,9 +1,9 @@
1
- import { canUseDOM, onDOMLoaded } from '../../lib/dom';
1
+ import { canUseDOM } from '../../lib/dom';
2
2
 
3
- let masksCreated = false;
3
+ const masksCreated: Document[] = [];
4
4
 
5
- export function createMasks(): void {
6
- if (!canUseDOM || masksCreated) {
5
+ export function createMasks(document: Document): void {
6
+ if (!canUseDOM || masksCreated.includes(document)) {
7
7
  return;
8
8
  }
9
9
 
@@ -38,9 +38,6 @@ export function createMasks(): void {
38
38
  </clipPath>
39
39
  </defs>`;
40
40
 
41
- onDOMLoaded(() => {
42
- // eslint-disable-next-line no-restricted-globals
43
- document.body.appendChild(svgElement);
44
- });
45
- masksCreated = true;
41
+ document.body.appendChild(svgElement);
42
+ masksCreated.push(document);
46
43
  }
@@ -5,48 +5,40 @@
5
5
  Как только он заканчивается, вызывается свойство-функция `onTransition`.
6
6
 
7
7
  ```jsx
8
- class Example extends React.Component {
9
- constructor(props) {
10
- super(props);
11
-
12
- this.state = {
13
- activePanel: 'panel1'
14
- }
15
- }
16
-
17
- render() {
18
- return (
19
- <View activePanel={this.state.activePanel}>
20
- <Panel id="panel1">
21
- <PanelHeader>Panel 1</PanelHeader>
22
- <Group>
23
- <CellButton onClick={ () => this.setState({ activePanel: 'panel2' }) }>
24
- Go to panel 2
25
- </CellButton>
26
- </Group>
27
- </Panel>
28
- <Panel id="panel2">
29
- <PanelHeader>Panel 2</PanelHeader>
30
- <Group>
31
- <CellButton onClick={ () => this.setState({ activePanel: 'panel3' }) }>
32
- Go to panel 3
33
- </CellButton>
34
- </Group>
35
- </Panel>
36
- <Panel id="panel3">
37
- <PanelHeader>Panel 3</PanelHeader>
38
- <Group>
39
- <CellButton onClick={ () => this.setState({ activePanel: 'panel1' }) }>
40
- Back to panel 1
41
- </CellButton>
42
- </Group>
43
- </Panel>
44
- </View>
45
- )
46
- }
47
- }
48
-
49
- <Example />
8
+ const [activePanel, setActivePanel] = useState('panel1');
9
+
10
+ <View activePanel={activePanel}>
11
+ <Panel id="panel1">
12
+ <PanelHeader>Panel 1</PanelHeader>
13
+ <Group>
14
+ <div style={{ height: 200 }} />
15
+ <CellButton onClick={ () => setActivePanel('panel2') }>
16
+ Go to panel 2
17
+ </CellButton>
18
+ <div style={{ height: 600 }} />
19
+ </Group>
20
+ </Panel>
21
+ <Panel id="panel2">
22
+ <PanelHeader>Panel 2</PanelHeader>
23
+ <Group>
24
+ <div style={{ height: 200 }} />
25
+ <CellButton onClick={ () => setActivePanel('panel3') }>
26
+ Go to panel 3
27
+ </CellButton>
28
+ <div style={{ height: 600 }} />
29
+ </Group>
30
+ </Panel>
31
+ <Panel id="panel3">
32
+ <PanelHeader>Panel 3</PanelHeader>
33
+ <Group>
34
+ <div style={{ height: 200 }} />
35
+ <CellButton onClick={ () => setActivePanel('panel1') }>
36
+ Back to panel 1
37
+ </CellButton>
38
+ <div style={{ height: 600 }} />
39
+ </Group>
40
+ </Panel>
41
+ </View>
50
42
  ```
51
43
 
52
44
  ### <a id="/View?id=iosswipeback"></a>[iOS Swipe Back](#/View?id=iosswipeback)
@@ -3,7 +3,7 @@ import { classNames } from '../../lib/classNames';
3
3
  import { transitionEvent, animationEvent } from '../../lib/supportEvents';
4
4
  import { getClassName } from '../../helpers/getClassName';
5
5
  import { IOS, ANDROID, VKCOM } from '../../lib/platform';
6
- import Touch, { TouchEvent } from '../Touch/Touch';
6
+ import { Touch, TouchEvent } from '../Touch/Touch';
7
7
  import { removeObjectKeys } from '../../lib/removeObjectKeys';
8
8
  import { HasPlatform } from '../../types';
9
9
  import { withPlatform } from '../../hoc/withPlatform';
@@ -3,7 +3,7 @@ import { classNames } from '../../lib/classNames';
3
3
  import { transitionEvent, animationEvent } from '../../lib/supportEvents';
4
4
  import { getClassName } from '../../helpers/getClassName';
5
5
  import { IOS, ANDROID, VKCOM } from '../../lib/platform';
6
- import Touch, { TouchEvent } from '../Touch/Touch';
6
+ import { Touch, TouchEvent } from '../Touch/Touch';
7
7
  import { HasPlatform } from '../../types';
8
8
  import { withPlatform } from '../../hoc/withPlatform';
9
9
  import { withContext } from '../../hoc/withContext';
@@ -4,8 +4,8 @@ import { canUseDOM } from '../lib/dom';
4
4
  import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
5
5
 
6
6
  interface EventListenerHandle {
7
- add(el: HTMLElement | Document): void;
8
- remove(): void;
7
+ add: (el: HTMLElement | Document) => void;
8
+ remove: () => void;
9
9
  }
10
10
 
11
11
  export function useEventListener<K extends keyof GlobalEventHandlersEventMap>(
@@ -19,21 +19,24 @@ export function useEventListener(event: string, _cb: (ev: Event) => any, _option
19
19
  useIsomorphicLayoutEffect(() => {
20
20
  cbRef.current = _cb;
21
21
  }, [_cb]);
22
- const cb = React.useCallback<typeof _cb>((e) => cbRef.current(e), []);
22
+ const cb = React.useCallback<typeof _cb>((e) => cbRef.current && cbRef.current(e), []);
23
23
 
24
24
  const detach = React.useRef(noop);
25
- const remove = React.useCallback(() => detach.current(), []);
25
+ const remove = React.useCallback(() => {
26
+ detach.current();
27
+ detach.current = noop;
28
+ }, []);
26
29
  const add = React.useCallback((el: HTMLElement | Document) => {
27
30
  if (!canUseDOM) {
28
31
  return;
29
32
  }
30
33
  remove();
34
+ if (!el) {
35
+ return;
36
+ }
31
37
  const options = { ..._options };
32
38
  el.addEventListener(event, cb, options);
33
- detach.current = () => {
34
- el.removeEventListener(event, cb, options);
35
- detach.current = noop;
36
- };
39
+ detach.current = () => el.removeEventListener(event, cb, options);
37
40
  }, []);
38
41
  React.useEffect(() => remove, []);
39
42
 
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
2
2
  import { useEventListener } from './useEventListener';
3
3
 
4
4
  export function useGlobalEventListener<K extends keyof GlobalEventHandlersEventMap>(
@@ -15,5 +15,5 @@ export function useGlobalEventListener(
15
15
  ): void;
16
16
  export function useGlobalEventListener(element: any, event: string, cb: (ev: Event) => any, options?: AddEventListenerOptions) {
17
17
  const listener = useEventListener(event, cb, options);
18
- React.useEffect(() => cb ? listener.add(element) : listener.remove(), [Boolean(cb)]);
18
+ useIsomorphicLayoutEffect(() => cb ? listener.add(element) : listener.remove(), [Boolean(cb)]);
19
19
  }
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import vkBridge, { Insets } from '@vkontakte/vk-bridge';
3
+ import { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';
3
4
 
4
5
  let initialState: Insets = {
5
6
  bottom: null,
@@ -36,13 +37,6 @@ function resolveInsets(e: BridgeEvent): Insets | null {
36
37
  vkBridge.subscribe((e: BridgeEvent) => {
37
38
  const insets = resolveInsets(e);
38
39
  if (insets) {
39
- // eslint-disable-next-line no-restricted-globals
40
- const htmlElement = document.documentElement;
41
- for (let key in insets) {
42
- if (insets.hasOwnProperty(key) && (insets[key as keyof Insets] > 0 || key === 'bottom')) {
43
- htmlElement.style.setProperty(`--safe-area-inset-${key}`, `${insets[key as keyof Insets]}px`);
44
- }
45
- }
46
40
  initialState = insets;
47
41
  }
48
42
  });
@@ -50,7 +44,7 @@ vkBridge.subscribe((e: BridgeEvent) => {
50
44
  export function useInsets(): Insets {
51
45
  const [insets, setInsets] = React.useState<Insets>(initialState);
52
46
 
53
- React.useEffect(() => {
47
+ useIsomorphicLayoutEffect(() => {
54
48
  function connectListener(e: BridgeEvent) {
55
49
  const insets = resolveInsets(e);
56
50
  if (insets) {
@@ -0,0 +1,67 @@
1
+ import * as React from 'react';
2
+ import { useDOM } from '../lib/dom';
3
+ import { useGlobalEventListener } from './useGlobalEventListener';
4
+
5
+ interface SoftwareKeyboardState {
6
+ isOpened: boolean;
7
+ isPrecise: boolean;
8
+ }
9
+
10
+ /**
11
+ Проверяет, закрыла ли клавиатура часть экрана, 24% подошло к большиству устройств
12
+ Работает на iOS и Android, где софт-клавиатура ресайзит viewport в браузерах
13
+ */
14
+ export function getPreciseKeyboardState(window: any): boolean {
15
+ const { availHeight } = window.screen;
16
+ const { innerHeight } = window;
17
+
18
+ const coveredViewportPercentage = Math.round((1 - innerHeight / availHeight) * 100);
19
+ return coveredViewportPercentage > 24;
20
+ }
21
+
22
+ export function useKeyboard(): SoftwareKeyboardState {
23
+ const { window, document } = useDOM();
24
+
25
+ const [keyboardState, setKeyboardState] = React.useState<SoftwareKeyboardState>({
26
+ isOpened: false,
27
+ isPrecise: false,
28
+ });
29
+
30
+ const transitionalTimeout = React.useRef<ReturnType<typeof setTimeout> | null>(null);
31
+
32
+ const eventOptions = {
33
+ passive: true,
34
+ capture: false,
35
+ };
36
+
37
+ /**
38
+ У полей с autoFocus не отлавливаются события focus, для этого вызываем вручную,
39
+ чтобы иметь хоть какое-то понимание происходящего.
40
+ */
41
+ React.useEffect(() => {
42
+ onFocus(true);
43
+ }, [onFocus]);
44
+
45
+ function onFocus(event: FocusEvent | true) {
46
+ clearTimeout(transitionalTimeout.current);
47
+
48
+ let returnObject = {
49
+ isOpened: (event === true || event.type === 'focusin') && (
50
+ document.activeElement?.tagName === 'INPUT' ||
51
+ document.activeElement?.tagName === 'TEXTAREA'
52
+ ),
53
+ isPrecise: false,
54
+ };
55
+
56
+ // Ожидаем прохождение анимации раскрытия клавиатуры
57
+ transitionalTimeout.current = setTimeout(() => {
58
+ returnObject.isPrecise = getPreciseKeyboardState(window);
59
+ setKeyboardState(returnObject);
60
+ }, 300);
61
+ }
62
+
63
+ useGlobalEventListener(document, 'focusout', onFocus, eventOptions);
64
+ useGlobalEventListener(document, 'focusin', onFocus, eventOptions);
65
+
66
+ return keyboardState;
67
+ }
@@ -6,10 +6,12 @@ import { useGlobalEventListener } from './useGlobalEventListener';
6
6
  export function useKeyboardInputTracker(): boolean {
7
7
  const { document } = useDOM();
8
8
 
9
- const [isKeyboardInputActive, toggleKeyboardInput] = React.useState<boolean>(true);
9
+ const [isKeyboardInputActive, toggleKeyboardInput] = React.useState<boolean>(false);
10
10
 
11
11
  const enableKeyboardInput = React.useCallback((e: KeyboardEvent) => {
12
- toggleKeyboardInput(pressedKey(e) === Keys.TAB);
12
+ if (pressedKey(e) === Keys.TAB) {
13
+ toggleKeyboardInput(true);
14
+ }
13
15
  }, []);
14
16
 
15
17
  const disableKeyboardInput = React.useCallback(() => {
package/src/index.ts CHANGED
@@ -204,7 +204,7 @@ export { default as Div } from './components/Div/Div';
204
204
  export type { DivProps } from './components/Div/Div';
205
205
  export { default as Tappable } from './components/Tappable/Tappable';
206
206
  export type { TappableProps } from './components/Tappable/Tappable';
207
- export { default as Touch } from './components/Touch/Touch';
207
+ export { Touch } from './components/Touch/Touch';
208
208
  export type { TouchProps } from './components/Touch/Touch';
209
209
  export { default as PanelSpinner } from './components/PanelSpinner/PanelSpinner';
210
210
  export type { PanelSpinnerProps } from './components/PanelSpinner/PanelSpinner';
@@ -0,0 +1,53 @@
1
+ type Option = {
2
+ label?: string;
3
+ [index: string]: any;
4
+ };
5
+
6
+ type GetOptionLabel = (option: Option) => string;
7
+
8
+ const findAllIncludes = (target = '', search = '') => {
9
+ const includes = [];
10
+
11
+ let i = target.indexOf(search);
12
+ while (i !== -1) {
13
+ includes.push(i);
14
+ i = target.indexOf(search, i + 1);
15
+ }
16
+
17
+ return includes;
18
+ };
19
+
20
+ let letterRegexp: RegExp;
21
+
22
+ // На момент написания флаг u не поддерживался рядом браузеров, поэтому добавили фоллбэк.
23
+ try {
24
+ letterRegexp = new RegExp('\\p{L}', 'u');
25
+ } catch (e) {}
26
+
27
+ export const defaultFilterFn = (
28
+ query = '',
29
+ option: Option,
30
+ getOptionLabel: GetOptionLabel = (option) => option.label,
31
+ ) => {
32
+ query = query.toLocaleLowerCase();
33
+ let label = getOptionLabel(option).toLocaleLowerCase();
34
+
35
+ if (label.startsWith(query)) {
36
+ return true;
37
+ }
38
+
39
+ const includes = findAllIncludes(label, query);
40
+
41
+ // Ищем вхождение перед началом которого не буква
42
+ if (letterRegexp) {
43
+ for (const index of includes) {
44
+ if (!letterRegexp.test(label[index - 1])) {
45
+ return true;
46
+ }
47
+ }
48
+ } else { // если regexp не поддерживается, то ищем любое вхождение
49
+ return includes.length > 0;
50
+ }
51
+
52
+ return false;
53
+ };
package/src/lib/touch.ts CHANGED
@@ -24,7 +24,7 @@ const coordY = (e: VKUITouchEvent): number => {
24
24
  };
25
25
 
26
26
  // eslint-disable-next-line no-restricted-globals
27
- const touchEnabled: boolean = canUseDOM && 'ontouchstart' in window;
27
+ const touchEnabled = () => canUseDOM && 'ontouchstart' in window;
28
28
 
29
29
  /*
30
30
  * Возвращает массив поддерживаемых событий
@@ -32,7 +32,7 @@ const touchEnabled: boolean = canUseDOM && 'ontouchstart' in window;
32
32
  * Если нет, используем события мыши
33
33
  */
34
34
  function getSupportedEvents(): string[] {
35
- if (touchEnabled) {
35
+ if (touchEnabled()) {
36
36
  return ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
37
37
  }
38
38
 
package/src/lib/utils.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import { Ref, RefWithCurrent } from '../types';
3
2
 
4
3
  export type ImgOnlyAttributes = {
5
4
  [index in Exclude<keyof React.ImgHTMLAttributes<HTMLImageElement>, keyof React.HTMLAttributes<HTMLImageElement>>]: React.ImgHTMLAttributes<HTMLImageElement>[index];
@@ -42,17 +41,17 @@ export function isPrimitiveReactNode(node: React.ReactNode): boolean {
42
41
  return typeof node === 'string' || typeof node === 'number';
43
42
  }
44
43
 
45
- export function setRef<T>(element: T, ref: Ref<T>): void {
44
+ export function setRef<T>(element: T, ref: React.Ref<T>): void {
46
45
  if (ref) {
47
46
  if (typeof ref === 'function') {
48
47
  ref(element);
49
48
  } else {
50
- ref.current = element;
49
+ (ref as React.MutableRefObject<T>).current = element;
51
50
  }
52
51
  }
53
52
  }
54
53
 
55
- export function multiRef<T>(...refs: Array<Ref<T>>): RefWithCurrent<T> {
54
+ export function multiRef<T>(...refs: Array<React.Ref<T>>): React.RefObject<T> {
56
55
  let current: T | null = null;
57
56
  return {
58
57
  get current() {
@@ -1,17 +1,3 @@
1
- :root {
2
- --duration: .7s;
3
- }
4
-
5
- @keyframes vkui-animation-fadeIn {
6
- from {
7
- opacity: 0;
8
- }
9
-
10
- to {
11
- opacity: 1;
12
- }
13
- }
14
-
15
1
  @keyframes vkui-rotator {
16
2
  0% {
17
3
  transform: rotate(0deg);
@@ -22,27 +22,6 @@
22
22
  color: var(--text_primary);
23
23
  }
24
24
 
25
- .vkui__root--embedded {
26
- transform: translate3d(0, 0, 0);
27
- overflow-x: hidden;
28
- }
29
-
30
- .AppRoot {
31
- height: 100%;
32
- }
33
-
34
- .vkui__root--embedded .AppRoot {
35
- overflow: auto;
36
- }
37
-
38
- .vkui--sizeX-regular {
39
- background: var(--background_page);
40
- }
41
-
42
- .AppRoot--no-mouse {
43
- user-select: none;
44
- }
45
-
46
25
  .vkui__root input,
47
26
  .vkui__root textarea,
48
27
  .vkui__root select,
@@ -5,6 +5,8 @@
5
5
  * чтобы в каждом файле были доступны CSS переменные без их дублирования.
6
6
  */
7
7
 
8
+ @import '../components/AppRoot/AppRoot.css';
9
+
8
10
  /* Typography */
9
11
  @import '../components/Typography/Title/Title.css';
10
12
  @import '../components/Typography/Headline/Headline.css';
@@ -29,6 +29,9 @@
29
29
  --safe-area-inset-right: 0px;
30
30
  --safe-area-inset-bottom: 0px;
31
31
  --safe-area-inset-left: 0px;
32
+
33
+ /* animations */
34
+ --duration: .7s;
32
35
  }
33
36
 
34
37
  @media (min-resolution: 2dppx) {
@@ -1,2 +1,3 @@
1
1
  /* Forms */
2
2
  @import '../components/ChipsSelect/ChipsSelect.css';
3
+ @import '../components/SimpleCheckbox/SimpleCheckbox.css';
package/src/types.ts CHANGED
@@ -6,18 +6,12 @@ export type AnyFunction = (...args: any[]) => any;
6
6
 
7
7
  export type AlignType = 'left' | 'center' | 'right';
8
8
 
9
- export type RefWithCurrent<T> = {
10
- current: T | null;
11
- };
12
-
13
- export type Ref<T> = React.RefCallback<T> | RefWithCurrent<T>;
14
-
15
9
  export interface HasRootRef<T> {
16
- getRootRef?: Ref<T>;
10
+ getRootRef?: React.Ref<T>;
17
11
  }
18
12
 
19
13
  export interface HasRef<T> {
20
- getRef?: Ref<T>;
14
+ getRef?: React.Ref<T>;
21
15
  }
22
16
 
23
17
  export interface HasAlign {
@@ -6,3 +6,6 @@ export type { ChipsSelectProps } from './../components/ChipsSelect/ChipsSelect';
6
6
 
7
7
  export { default as ViewInfinite } from './../components/View/ViewInfinite';
8
8
  export type { ViewInfiniteProps } from './../components/View/ViewInfinite';
9
+
10
+ export { default as SimpleCheckbox } from './../components/SimpleCheckbox/SimpleCheckbox';
11
+ export type { SimpleCheckboxProps } from './../components/SimpleCheckbox/SimpleCheckbox';