@vkontakte/vkui 4.15.0 → 4.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +391 -282
  4. package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -0
  5. package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  6. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +2 -2
  7. package/.cache/ts/src/components/FixedLayout/FixedLayout.d.ts +4 -9
  8. package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +1 -2
  9. package/.cache/ts/src/components/Root/Root.d.ts +5 -27
  10. package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  11. package/.cache/ts/src/components/Tappable/Tappable.d.ts +12 -9
  12. package/.cache/ts/src/components/Touch/Touch.d.ts +1 -2
  13. package/.cache/ts/src/components/UsersStack/masks.d.ts +1 -1
  14. package/.cache/ts/src/hooks/useEventListener.d.ts +2 -2
  15. package/.cache/ts/src/hooks/useKeyboard.d.ts +11 -0
  16. package/.cache/ts/src/index.d.ts +1 -1
  17. package/.cache/ts/src/lib/select.d.ts +7 -0
  18. package/.cache/ts/src/lib/touch.d.ts +1 -1
  19. package/.cache/ts/src/lib/utils.d.ts +2 -3
  20. package/.cache/ts/src/types.d.ts +2 -6
  21. package/.cache/ts/src/unstable/index.d.ts +2 -0
  22. package/babel.cjs.config.js +7 -1
  23. package/babel.config.js +7 -1
  24. package/dist/cjs/components/AppRoot/AppRoot.d.ts +1 -0
  25. package/dist/cjs/components/AppRoot/AppRoot.js +29 -1
  26. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  27. package/dist/cjs/components/Banner/Banner.js +1 -1
  28. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  29. package/dist/cjs/components/Cell/Cell.js +3 -3
  30. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  31. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  32. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +5 -6
  33. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  34. package/dist/cjs/components/ChipsSelect/useChipsSelect.js +2 -2
  35. package/dist/cjs/components/ChipsSelect/useChipsSelect.js.map +1 -1
  36. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +2 -2
  37. package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -3
  38. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  39. package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +4 -9
  40. package/dist/cjs/components/FixedLayout/FixedLayout.js +91 -179
  41. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  42. package/dist/cjs/components/Gallery/Gallery.js +2 -2
  43. package/dist/cjs/components/Gallery/Gallery.js.map +1 -1
  44. package/dist/cjs/components/Header/Header.js +1 -1
  45. package/dist/cjs/components/Header/Header.js.map +1 -1
  46. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +6 -1
  47. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  48. package/dist/cjs/components/ModalPage/ModalPage.d.ts +1 -2
  49. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  50. package/dist/cjs/components/ModalRoot/ModalRoot.js +2 -2
  51. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  52. package/dist/cjs/components/Panel/Panel.js +2 -2
  53. package/dist/cjs/components/Panel/Panel.js.map +1 -1
  54. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  55. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  56. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +2 -2
  57. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  58. package/dist/cjs/components/RangeSlider/UniversalSlider.js +2 -2
  59. package/dist/cjs/components/RangeSlider/UniversalSlider.js.map +1 -1
  60. package/dist/cjs/components/Root/Root.d.ts +5 -27
  61. package/dist/cjs/components/Root/Root.js +158 -214
  62. package/dist/cjs/components/Root/Root.js.map +1 -1
  63. package/dist/cjs/components/Search/Search.js +3 -3
  64. package/dist/cjs/components/Search/Search.js.map +1 -1
  65. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  66. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  67. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js +126 -0
  68. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  69. package/dist/cjs/components/Snackbar/Snackbar.js +2 -2
  70. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  71. package/dist/cjs/components/Tappable/Tappable.d.ts +12 -9
  72. package/dist/cjs/components/Tappable/Tappable.js +47 -36
  73. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  74. package/dist/cjs/components/Touch/Touch.d.ts +1 -2
  75. package/dist/cjs/components/Touch/Touch.js +172 -283
  76. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  77. package/dist/cjs/components/UsersStack/UsersStack.js +9 -18
  78. package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
  79. package/dist/cjs/components/UsersStack/masks.d.ts +1 -1
  80. package/dist/cjs/components/UsersStack/masks.js +5 -8
  81. package/dist/cjs/components/UsersStack/masks.js.map +1 -1
  82. package/dist/cjs/components/View/View.js +2 -2
  83. package/dist/cjs/components/View/View.js.map +1 -1
  84. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  85. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  86. package/dist/cjs/hooks/useEventListener.d.ts +2 -2
  87. package/dist/cjs/hooks/useEventListener.js +9 -4
  88. package/dist/cjs/hooks/useEventListener.js.map +1 -1
  89. package/dist/cjs/hooks/useGlobalEventListener.js +2 -4
  90. package/dist/cjs/hooks/useGlobalEventListener.js.map +1 -1
  91. package/dist/cjs/hooks/useInsets.js +3 -10
  92. package/dist/cjs/hooks/useInsets.js.map +1 -1
  93. package/dist/cjs/hooks/useKeyboard.d.ts +11 -0
  94. package/dist/cjs/hooks/useKeyboard.js +78 -0
  95. package/dist/cjs/hooks/useKeyboard.js.map +1 -0
  96. package/dist/cjs/hooks/useKeyboardInputTracker.js +4 -2
  97. package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
  98. package/dist/cjs/index.d.ts +1 -1
  99. package/dist/cjs/index.js +2 -2
  100. package/dist/cjs/index.js.map +1 -1
  101. package/dist/cjs/lib/select.d.ts +7 -0
  102. package/dist/cjs/lib/select.js +73 -0
  103. package/dist/cjs/lib/select.js.map +1 -0
  104. package/dist/cjs/lib/touch.d.ts +1 -1
  105. package/dist/cjs/lib/touch.js +6 -2
  106. package/dist/cjs/lib/touch.js.map +1 -1
  107. package/dist/cjs/lib/utils.d.ts +2 -3
  108. package/dist/cjs/lib/utils.js.map +1 -1
  109. package/dist/cjs/types.d.ts +2 -6
  110. package/dist/cjs/unstable/index.d.ts +2 -0
  111. package/dist/cjs/unstable/index.js +8 -0
  112. package/dist/cjs/unstable/index.js.map +1 -1
  113. package/dist/components/AppRoot/AppRoot.d.ts +1 -0
  114. package/dist/components/AppRoot/AppRoot.js +29 -5
  115. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  116. package/dist/components/Banner/Banner.js +1 -1
  117. package/dist/components/Banner/Banner.js.map +1 -1
  118. package/dist/components/Cell/Cell.js +1 -1
  119. package/dist/components/Cell/Cell.js.map +1 -1
  120. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  121. package/dist/components/ChipsSelect/ChipsSelect.js +4 -6
  122. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  123. package/dist/components/ChipsSelect/useChipsSelect.js +2 -2
  124. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  125. package/dist/components/CustomSelect/CustomSelect.d.ts +2 -2
  126. package/dist/components/CustomSelect/CustomSelect.js +2 -3
  127. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  128. package/dist/components/FixedLayout/FixedLayout.d.ts +4 -9
  129. package/dist/components/FixedLayout/FixedLayout.js +84 -175
  130. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  131. package/dist/components/Gallery/Gallery.js +1 -1
  132. package/dist/components/Gallery/Gallery.js.map +1 -1
  133. package/dist/components/Header/Header.js +1 -1
  134. package/dist/components/Header/Header.js.map +1 -1
  135. package/dist/components/ModalCardBase/ModalCardBase.js +5 -1
  136. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  137. package/dist/components/ModalPage/ModalPage.d.ts +1 -2
  138. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  139. package/dist/components/ModalRoot/ModalRoot.js +1 -1
  140. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  141. package/dist/components/Panel/Panel.js +1 -1
  142. package/dist/components/Panel/Panel.js.map +1 -1
  143. package/dist/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  144. package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  145. package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
  146. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  147. package/dist/components/RangeSlider/UniversalSlider.js +1 -1
  148. package/dist/components/RangeSlider/UniversalSlider.js.map +1 -1
  149. package/dist/components/Root/Root.d.ts +5 -27
  150. package/dist/components/Root/Root.js +152 -207
  151. package/dist/components/Root/Root.js.map +1 -1
  152. package/dist/components/Search/Search.js +1 -1
  153. package/dist/components/Search/Search.js.map +1 -1
  154. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  155. package/dist/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  156. package/dist/components/SimpleCheckbox/SimpleCheckbox.js +97 -0
  157. package/dist/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  158. package/dist/components/Snackbar/Snackbar.js +1 -1
  159. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  160. package/dist/components/Tappable/Tappable.d.ts +12 -9
  161. package/dist/components/Tappable/Tappable.js +45 -37
  162. package/dist/components/Tappable/Tappable.js.map +1 -1
  163. package/dist/components/Touch/Touch.d.ts +1 -2
  164. package/dist/components/Touch/Touch.js +163 -286
  165. package/dist/components/Touch/Touch.js.map +1 -1
  166. package/dist/components/UsersStack/UsersStack.js +7 -16
  167. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  168. package/dist/components/UsersStack/masks.d.ts +1 -1
  169. package/dist/components/UsersStack/masks.js +6 -9
  170. package/dist/components/UsersStack/masks.js.map +1 -1
  171. package/dist/components/View/View.js +1 -1
  172. package/dist/components/View/View.js.map +1 -1
  173. package/dist/components/View/ViewInfinite.js +1 -1
  174. package/dist/components/View/ViewInfinite.js.map +1 -1
  175. package/dist/components.css +1 -1
  176. package/dist/components.css.map +1 -1
  177. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  178. package/dist/cssm/components/AppRoot/AppRoot.css +1 -0
  179. package/dist/cssm/components/AppRoot/AppRoot.js +30 -2
  180. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  181. package/dist/cssm/components/Banner/Banner.css +1 -1
  182. package/dist/cssm/components/Banner/Banner.js +1 -1
  183. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  184. package/dist/cssm/components/Cell/Cell.js +1 -1
  185. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  186. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +4 -6
  187. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  188. package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -2
  189. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  190. package/dist/cssm/components/CustomSelect/CustomSelect.js +2 -3
  191. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  192. package/dist/cssm/components/FixedLayout/FixedLayout.js +84 -175
  193. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  194. package/dist/cssm/components/Gallery/Gallery.js +1 -1
  195. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  196. package/dist/cssm/components/Header/Header.js +1 -1
  197. package/dist/cssm/components/Header/Header.js.map +1 -1
  198. package/dist/cssm/components/ModalCardBase/ModalCardBase.css +1 -1
  199. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -1
  200. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  201. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  202. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  203. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -1
  204. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  205. package/dist/cssm/components/Panel/Panel.js +1 -1
  206. package/dist/cssm/components/Panel/Panel.js.map +1 -1
  207. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  208. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  209. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  210. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
  211. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  212. package/dist/cssm/components/RangeSlider/UniversalSlider.js +1 -1
  213. package/dist/cssm/components/RangeSlider/UniversalSlider.js.map +1 -1
  214. package/dist/cssm/components/Root/Root.js +152 -207
  215. package/dist/cssm/components/Root/Root.js.map +1 -1
  216. package/dist/cssm/components/Search/Search.js +1 -1
  217. package/dist/cssm/components/Search/Search.js.map +1 -1
  218. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  219. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -0
  220. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js +98 -0
  221. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  222. package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
  223. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  224. package/dist/cssm/components/Tappable/Tappable.js +45 -37
  225. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  226. package/dist/cssm/components/Touch/Touch.js +163 -286
  227. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  228. package/dist/cssm/components/UsersStack/UsersStack.css +1 -1
  229. package/dist/cssm/components/UsersStack/UsersStack.js +7 -16
  230. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  231. package/dist/cssm/components/UsersStack/masks.js +6 -9
  232. package/dist/cssm/components/UsersStack/masks.js.map +1 -1
  233. package/dist/cssm/components/View/View.js +1 -1
  234. package/dist/cssm/components/View/View.js.map +1 -1
  235. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  236. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  237. package/dist/cssm/hooks/useEventListener.js +8 -4
  238. package/dist/cssm/hooks/useEventListener.js.map +1 -1
  239. package/dist/cssm/hooks/useGlobalEventListener.js +2 -2
  240. package/dist/cssm/hooks/useGlobalEventListener.js.map +1 -1
  241. package/dist/cssm/hooks/useInsets.js +2 -10
  242. package/dist/cssm/hooks/useInsets.js.map +1 -1
  243. package/dist/cssm/hooks/useKeyboard.js +62 -0
  244. package/dist/cssm/hooks/useKeyboard.js.map +1 -0
  245. package/dist/cssm/hooks/useKeyboardInputTracker.js +4 -2
  246. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  247. package/dist/cssm/index.js +1 -1
  248. package/dist/cssm/index.js.map +1 -1
  249. package/dist/cssm/lib/select.js +62 -0
  250. package/dist/cssm/lib/select.js.map +1 -0
  251. package/dist/cssm/lib/touch.js +5 -2
  252. package/dist/cssm/lib/touch.js.map +1 -1
  253. package/dist/cssm/lib/utils.js.map +1 -1
  254. package/dist/cssm/styles/animations.css +1 -1
  255. package/dist/cssm/styles/common.css +1 -1
  256. package/dist/cssm/styles/components.css +1 -1
  257. package/dist/cssm/styles/constants.css +1 -1
  258. package/dist/cssm/styles/unstable.css +1 -1
  259. package/dist/cssm/unstable/index.js +1 -0
  260. package/dist/cssm/unstable/index.js.map +1 -1
  261. package/dist/hooks/useEventListener.d.ts +2 -2
  262. package/dist/hooks/useEventListener.js +8 -4
  263. package/dist/hooks/useEventListener.js.map +1 -1
  264. package/dist/hooks/useGlobalEventListener.js +2 -2
  265. package/dist/hooks/useGlobalEventListener.js.map +1 -1
  266. package/dist/hooks/useInsets.js +2 -10
  267. package/dist/hooks/useInsets.js.map +1 -1
  268. package/dist/hooks/useKeyboard.d.ts +11 -0
  269. package/dist/hooks/useKeyboard.js +62 -0
  270. package/dist/hooks/useKeyboard.js.map +1 -0
  271. package/dist/hooks/useKeyboardInputTracker.js +4 -2
  272. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  273. package/dist/index.d.ts +1 -1
  274. package/dist/index.js +1 -1
  275. package/dist/index.js.map +1 -1
  276. package/dist/lib/select.d.ts +7 -0
  277. package/dist/lib/select.js +62 -0
  278. package/dist/lib/select.js.map +1 -0
  279. package/dist/lib/touch.d.ts +1 -1
  280. package/dist/lib/touch.js +5 -2
  281. package/dist/lib/touch.js.map +1 -1
  282. package/dist/lib/utils.d.ts +2 -3
  283. package/dist/lib/utils.js.map +1 -1
  284. package/dist/types.d.ts +2 -6
  285. package/dist/unstable/index.d.ts +2 -0
  286. package/dist/unstable/index.js +1 -0
  287. package/dist/unstable/index.js.map +1 -1
  288. package/dist/unstable.css +1 -1
  289. package/dist/unstable.css.map +1 -1
  290. package/dist/vkui.css +1 -1
  291. package/dist/vkui.css.map +1 -1
  292. package/package.json +4 -2
  293. package/postcss.config.js +1 -1
  294. package/src/components/ActionSheetItem/ActionSheetItem.css +4 -8
  295. package/src/components/AppRoot/AppRoot.css +20 -0
  296. package/src/components/AppRoot/AppRoot.tsx +30 -0
  297. package/src/components/Banner/Banner.css +4 -0
  298. package/src/components/Banner/Banner.tsx +1 -1
  299. package/src/components/Cell/Cell.tsx +1 -1
  300. package/src/components/ChipsSelect/ChipsSelect.tsx +4 -7
  301. package/src/components/ChipsSelect/Readme.md +0 -2
  302. package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
  303. package/src/components/CustomSelect/CustomSelect.tsx +3 -2
  304. package/src/components/FixedLayout/FixedLayout.tsx +61 -147
  305. package/src/components/Gallery/Gallery.tsx +1 -1
  306. package/src/components/Header/Header.tsx +1 -1
  307. package/src/components/ModalCardBase/ModalCardBase.css +4 -0
  308. package/src/components/ModalCardBase/ModalCardBase.tsx +5 -1
  309. package/src/components/ModalPage/ModalPage.tsx +1 -2
  310. package/src/components/ModalRoot/ModalRoot.css +10 -0
  311. package/src/components/ModalRoot/ModalRoot.tsx +1 -1
  312. package/src/components/Panel/Panel.tsx +1 -1
  313. package/src/components/PanelHeaderContent/PanelHeaderContent.css +2 -1
  314. package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +2 -2
  315. package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
  316. package/src/components/RangeSlider/UniversalSlider.tsx +1 -1
  317. package/src/components/Root/Readme.md +27 -37
  318. package/src/components/Root/Root.tsx +112 -191
  319. package/src/components/Search/Search.tsx +1 -1
  320. package/src/components/Separator/Readme.md +3 -1
  321. package/src/components/SimpleCell/SimpleCell.tsx +1 -1
  322. package/src/components/SimpleCheckbox/Readme.md +17 -0
  323. package/src/components/SimpleCheckbox/SimpleCheckbox.css +115 -0
  324. package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +105 -0
  325. package/src/components/Snackbar/Snackbar.tsx +1 -1
  326. package/src/components/Tappable/Tappable.tsx +28 -37
  327. package/src/components/Touch/Touch.tsx +100 -238
  328. package/src/components/UsersStack/UsersStack.css +5 -9
  329. package/src/components/UsersStack/UsersStack.tsx +4 -11
  330. package/src/components/UsersStack/masks.tsx +6 -9
  331. package/src/components/View/Readme.md +34 -42
  332. package/src/components/View/View.tsx +1 -1
  333. package/src/components/View/ViewInfinite.tsx +1 -1
  334. package/src/hooks/useEventListener.ts +11 -8
  335. package/src/hooks/useGlobalEventListener.ts +2 -2
  336. package/src/hooks/useInsets.ts +2 -8
  337. package/src/hooks/useKeyboard.ts +67 -0
  338. package/src/hooks/useKeyboardInputTracker.ts +4 -2
  339. package/src/index.ts +1 -1
  340. package/src/lib/select.ts +53 -0
  341. package/src/lib/touch.ts +2 -2
  342. package/src/lib/utils.ts +3 -4
  343. package/src/styles/animations.css +0 -14
  344. package/src/styles/common.css +0 -21
  345. package/src/styles/components.css +2 -0
  346. package/src/styles/constants.css +3 -0
  347. package/src/styles/unstable.css +1 -0
  348. package/src/types.ts +2 -8
  349. package/src/unstable/index.ts +3 -0
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import Touch, { TouchProps, TouchEvent } from '../Touch/Touch';
2
+ import { Touch, TouchProps, TouchEvent } from '../Touch/Touch';
3
3
  import TouchRootContext from '../Touch/TouchContext';
4
4
  import FixedLayout from '../FixedLayout/FixedLayout';
5
5
  import { classNames } from '../../lib/classNames';
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import Touch, { TouchEvent, TouchEventHandler } from '../Touch/Touch';
2
+ import { Touch, TouchEvent, TouchEventHandler } from '../Touch/Touch';
3
3
  import { getClassName } from '../../helpers/getClassName';
4
4
  import { classNames } from '../../lib/classNames';
5
5
  import { HasRootRef } from '../../types';
@@ -5,42 +5,32 @@
5
5
  Как только он заканчивается, вызывается свойство-функция `onTransition`.
6
6
 
7
7
  ```jsx
8
- class Example extends React.Component {
9
- constructor(props) {
10
- super(props);
8
+ const [activeView, setActiveView] = useState('view1');
11
9
 
12
- this.state = {
13
- activeView: 'view1'
14
- }
15
- }
16
-
17
- render() {
18
- return (
19
- <Root activeView={this.state.activeView}>
20
- <View activePanel="panel1.1" id="view1">
21
- <Panel id="panel1.1">
22
- <PanelHeader>View 1</PanelHeader>
23
- <Group>
24
- <CellButton onClick={ () => this.setState({ activeView: 'view2' }) }>
25
- Open View 2
26
- </CellButton>
27
- </Group>
28
- </Panel>
29
- </View>
30
- <View header activePanel="panel2.1" id="view2">
31
- <Panel id="panel2.1">
32
- <PanelHeader>View 2</PanelHeader>
33
- <Group>
34
- <CellButton onClick={ () => this.setState({ activeView: 'view1' }) }>
35
- Back to View 1
36
- </CellButton>
37
- </Group>
38
- </Panel>
39
- </View>
40
- </Root>
41
- )
42
- }
43
- }
44
-
45
- <Example />
10
+ <Root activeView={activeView}>
11
+ <View activePanel="panel1.1" id="view1">
12
+ <Panel id="panel1.1">
13
+ <PanelHeader>View 1</PanelHeader>
14
+ <Group>
15
+ <div style={{ height: 200 }} />
16
+ <CellButton onClick={ () => setActiveView('view2') }>
17
+ Open View 2
18
+ </CellButton>
19
+ <div style={{ height: 600 }} />
20
+ </Group>
21
+ </Panel>
22
+ </View>
23
+ <View header activePanel="panel2.1" id="view2">
24
+ <Panel id="panel2.1">
25
+ <PanelHeader>View 2</PanelHeader>
26
+ <Group>
27
+ <div style={{ height: 200 }} />
28
+ <CellButton onClick={ () => setActiveView('view1') }>
29
+ Back to View 1
30
+ </CellButton>
31
+ <div style={{ height: 600 }} />
32
+ </Group>
33
+ </Panel>
34
+ </View>
35
+ </Root>
46
36
  ```
@@ -1,23 +1,22 @@
1
1
  import * as React from 'react';
2
2
  import { classNames } from '../../lib/classNames';
3
3
  import { getClassName } from '../../helpers/getClassName';
4
- import { animationEvent } from '../../lib/supportEvents';
5
- import { ANDROID, VKCOM } from '../../lib/platform';
6
- import { withPlatform } from '../../hoc/withPlatform';
7
- import { withContext } from '../../hoc/withContext';
8
- import { HasPlatform } from '../../types';
9
- import { ConfigProviderContext, ConfigProviderContextInterface } from '../ConfigProvider/ConfigProviderContext';
10
- import { SplitColContextProps, SplitColContext } from '../SplitCol/SplitCol';
4
+ import { IOS } from '../../lib/platform';
5
+ import { ConfigProviderContext } from '../ConfigProvider/ConfigProviderContext';
6
+ import { SplitColContext } from '../SplitCol/SplitCol';
11
7
  import { AppRootPortal } from '../AppRoot/AppRootPortal';
12
- import { canUseDOM, DOMProps, withDOM } from '../../lib/dom';
13
- import { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';
8
+ import { ScrollContext } from '../AppRoot/ScrollContext';
14
9
  import { getNavId, NavIdProps } from '../../lib/getNavId';
15
10
  import { warnOnce } from '../../lib/warnOnce';
11
+ import { useDOM } from '../../lib/dom';
12
+ import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
13
+ import { useTimeout } from '../../hooks/useTimeout';
14
+ import { usePlatform } from '../../hooks/usePlatform';
16
15
  import './Root.css';
17
16
 
18
17
  const warn = warnOnce('Root');
19
18
 
20
- export interface RootProps extends React.HTMLAttributes<HTMLDivElement>, HasPlatform, NavIdProps {
19
+ export interface RootProps extends React.HTMLAttributes<HTMLDivElement>, NavIdProps {
21
20
  activeView: string;
22
21
  onTransition?(params: { isBack: boolean; from: string; to: string }): void;
23
22
  /**
@@ -32,207 +31,129 @@ export interface RootProps extends React.HTMLAttributes<HTMLDivElement>, HasPlat
32
31
  * Свойство для отрисовки `ModalRoot`.
33
32
  */
34
33
  modal?: React.ReactNode;
35
- /**
36
- * @ignore
37
- */
38
- splitCol?: SplitColContextProps;
39
- /**
40
- * @ignore
41
- */
42
- configProvider?: ConfigProviderContextInterface;
43
- /**
44
- * @ignore
45
- */
46
- scroll?: ScrollContextInterface;
47
34
  }
48
35
 
49
- export type AnimationEndCallback = (e?: AnimationEvent) => void;
50
-
51
36
  export interface RootState {
52
37
  activeView: string;
53
- prevView: string;
54
- nextView: string;
55
- visibleViews: [string] | [string, string];
56
- isBack: boolean;
57
- scrolls: {
58
- [index: string]: number;
59
- };
60
38
  transition: boolean;
39
+ isBack?: boolean;
40
+ prevView?: string;
61
41
  }
62
42
 
63
- class Root extends React.Component<RootProps & DOMProps, RootState> {
64
- constructor(props: RootProps) {
65
- super(props);
66
-
67
- this.state = {
68
- activeView: props.activeView,
69
- prevView: null,
70
- nextView: null,
71
- visibleViews: [props.activeView],
72
- isBack: undefined,
73
- scrolls: {},
74
- transition: false,
75
- };
76
- }
77
-
78
- static defaultProps: Partial<RootProps> = {
79
- popout: null,
80
- };
81
-
82
- private animationFinishTimeout: ReturnType<typeof setTimeout>;
83
- private viewNodes: { [id: string]: HTMLElement } = {};
84
-
85
- get document() {
86
- return this.props.document;
87
- }
88
-
89
- componentDidUpdate(prevProps: RootProps, prevState: RootState) {
90
- if (this.props.popout && !prevProps.popout) {
91
- this.blurActiveElement();
43
+ const Root: React.FC<RootProps> = ({
44
+ popout = null, modal, children,
45
+ activeView: _activeView, onTransition,
46
+ nav,
47
+ ...restProps
48
+ }) => {
49
+ const scroll = React.useContext(ScrollContext);
50
+ const platform = usePlatform();
51
+ const { document } = useDOM();
52
+ const scrolls = React.useRef<Record<string, number>>({}).current;
53
+ const viewNodes = React.useRef<Record<string, HTMLElement>>({}).current;
54
+
55
+ const { transitionMotionEnabled = true } = React.useContext(ConfigProviderContext);
56
+ const { animate } = React.useContext(SplitColContext);
57
+ const disableAnimation = !transitionMotionEnabled || !animate;
58
+
59
+ const views = React.Children.toArray(children) as React.ReactElement[];
60
+
61
+ const [{ prevView, activeView, transition, isBack }, _setState] = React.useState<RootState>({
62
+ activeView: _activeView,
63
+ transition: false,
64
+ });
65
+ const transitionTo = (panel: string) => {
66
+ if (panel !== activeView) {
67
+ const viewIds = views.map((view) => getNavId(view.props, warn));
68
+ const isBack = viewIds.indexOf(panel) < viewIds.indexOf(activeView);
69
+ _setState({ activeView: panel, prevView: activeView, transition: true, isBack });
92
70
  }
93
-
94
- // Нужен переход
95
- if (this.props.activeView !== prevProps.activeView) {
96
- let pageYOffset = this.props.scroll.getScroll().y;
97
- const firstLayerId = [].concat(prevProps.children)
98
- .map((view) => getNavId(view.props, warn))
99
- .find((id) => id === prevProps.activeView || id === this.props.activeView);
100
- const isBack = firstLayerId === this.props.activeView;
101
-
102
- this.blurActiveElement();
103
-
104
- const nextView = this.props.activeView;
105
- const prevView = prevProps.activeView;
106
-
107
- this.setState({
108
- scrolls: {
109
- ...this.state.scrolls,
110
- [prevProps.activeView]: pageYOffset,
111
- },
112
- transition: true,
113
- activeView: null,
114
- nextView,
115
- prevView,
116
- visibleViews: [nextView, prevView],
117
- isBack,
118
- });
71
+ };
72
+ const finishTransition = () => _setState({ activeView, prevView, isBack, transition: false });
73
+
74
+ useIsomorphicLayoutEffect(() => {
75
+ (document.activeElement as HTMLElement)?.blur();
76
+ }, [!!popout, activeView]);
77
+
78
+ // Нужен переход
79
+ useIsomorphicLayoutEffect(() => transitionTo(_activeView), [_activeView]);
80
+ // scroll restoration
81
+ useIsomorphicLayoutEffect(() => {
82
+ if (transition) {
83
+ // save scroll
84
+ scrolls[prevView] = scroll.getScroll().y;
85
+ setPanelScroll(viewNodes[prevView], scrolls[prevView]);
86
+ isBack && setPanelScroll(viewNodes[activeView], scrolls[activeView]);
87
+ } else if (prevView) {
88
+ // Закончился переход
89
+ scroll.scrollTo(0, isBack ? scrolls[activeView] : 0);
119
90
  }
120
-
121
- // Начался переход
122
- if (!prevState.transition && this.state.transition) {
123
- const prevViewElement = this.viewNodes[this.state.prevView];
124
- const nextViewElement = this.viewNodes[this.state.nextView];
125
- const setPanelScroll = (e: HTMLElement, scroll: number) => {
126
- // eslint-disable-next-line no-restricted-properties
127
- const pan: HTMLElement | null = e.querySelector('[data-vkui-active-panel=true]');
128
- pan && (pan.scrollTop = scroll);
129
- };
130
-
131
- setPanelScroll(prevViewElement, this.state.scrolls[this.state.prevView]);
132
-
133
- if (this.state.isBack) {
134
- setPanelScroll(nextViewElement, this.state.scrolls[this.state.nextView]);
135
- }
136
- this.waitAnimationFinish(this.state.isBack ? prevViewElement : nextViewElement, this.onAnimationEnd);
91
+ }, [transition]);
92
+ // onTransition
93
+ useIsomorphicLayoutEffect(() => {
94
+ if (!transition && prevView) {
95
+ onTransition && onTransition({ isBack, from: prevView, to: activeView });
137
96
  }
138
- }
97
+ }, [transition]);
139
98
 
140
- shouldDisableTransitionMotion(): boolean {
141
- return this.props.configProvider.transitionMotionEnabled === false ||
142
- !this.props.splitCol.animate;
143
- }
144
-
145
- waitAnimationFinish(elem: HTMLElement, eventHandler: AnimationEndCallback) {
146
- if (this.shouldDisableTransitionMotion()) {
147
- eventHandler();
99
+ const fallbackTransition = useTimeout(finishTransition, platform === IOS ? 600 : 300);
100
+ React.useEffect(() => {
101
+ if (!transition) {
102
+ fallbackTransition.clear();
148
103
  return;
149
104
  }
105
+ disableAnimation ? finishTransition() : fallbackTransition.set();
106
+ }, [transition]);
150
107
 
151
- if (animationEvent.supported) {
152
- elem.removeEventListener(animationEvent.name, eventHandler);
153
- elem.addEventListener(animationEvent.name, eventHandler);
154
- } else {
155
- clearTimeout(this.animationFinishTimeout);
156
- this.animationFinishTimeout = setTimeout(eventHandler.bind(this), this.props.platform === ANDROID || this.props.platform === VKCOM ? 300 : 600);
157
- }
158
- }
159
-
160
- onAnimationEnd: AnimationEndCallback = (e?: AnimationEvent) => {
161
- if (!e || [
108
+ const onAnimationEnd = (e: React.AnimationEvent) => {
109
+ if ([
162
110
  'vkui-root-android-animation-hide-back',
163
111
  'vkui-root-android-animation-show-forward',
164
112
  'vkui-root-ios-animation-hide-back',
165
113
  'vkui-root-ios-animation-show-forward',
166
114
  ].includes(e.animationName)) {
167
- const isBack = this.state.isBack;
168
- const prevView = this.state.prevView;
169
- const nextView = this.state.nextView;
170
- this.setState({
171
- activeView: nextView,
172
- prevView: null,
173
- nextView: null,
174
- visibleViews: [nextView],
175
- transition: false,
176
- isBack: undefined,
177
- }, () => {
178
- this.props.scroll.scrollTo(0, isBack ? this.state.scrolls[this.state.activeView] : 0);
179
- this.props.onTransition && this.props.onTransition({ isBack, from: prevView, to: nextView });
180
- });
115
+ finishTransition();
181
116
  }
182
117
  };
183
118
 
184
- blurActiveElement() {
185
- if (canUseDOM && this.document.activeElement) {
186
- (this.document.activeElement as HTMLElement).blur();
187
- }
188
- }
189
-
190
- render() {
191
- const {
192
- popout, modal, platform,
193
- splitCol, configProvider, activeView: _1, onTransition,
194
- window, document, scroll, nav,
195
- ...restProps
196
- } = this.props;
197
- const { transition, isBack, prevView, activeView, nextView } = this.state;
198
-
199
- const Views = React.Children.toArray(this.props.children).filter((view: React.ReactElement) => {
200
- return this.state.visibleViews.includes(getNavId(view.props, warn));
201
- });
202
-
203
- const baseClassName = getClassName('Root', platform);
204
- const disableAnimation = this.shouldDisableTransitionMotion();
205
-
206
- return (
207
- <div {...restProps} vkuiClass={classNames(baseClassName, {
208
- 'Root--transition': !disableAnimation && transition,
209
- 'Root--no-motion': disableAnimation,
210
- })}>
211
- {Views.map((view: React.ReactElement) => {
212
- const viewId = getNavId(view.props, warn);
213
- return (
214
- <div key={viewId} ref={(e) => this.viewNodes[viewId] = e} vkuiClass={classNames('Root__view', {
215
- 'Root__view--hide-back': viewId === prevView && isBack,
216
- 'Root__view--hide-forward': viewId === prevView && !isBack,
217
- 'Root__view--show-back': viewId === nextView && isBack,
218
- 'Root__view--show-forward': viewId === nextView && !isBack,
219
- 'Root__view--active': viewId === activeView,
220
- })}>
221
- {view}
222
- </div>
223
- );
224
- })}
225
- <AppRootPortal>
226
- {!!popout && <div vkuiClass="Root__popout">{popout}</div>}
227
- {!!modal && <div vkuiClass="Root__modal">{modal}</div>}
228
- </AppRootPortal>
229
- </div>
230
- );
231
- }
119
+ return (
120
+ <div {...restProps} vkuiClass={classNames(getClassName('Root', platform), {
121
+ 'Root--transition': !disableAnimation && transition,
122
+ 'Root--no-motion': disableAnimation,
123
+ })}>
124
+ {views.map((view) => {
125
+ const viewId = getNavId(view.props, warn);
126
+ if (viewId !== activeView && !(transition && viewId === prevView)) {
127
+ return null;
128
+ }
129
+ const isTransitionTarget = transition && viewId === (isBack ? prevView : activeView);
130
+ return (
131
+ <div
132
+ key={viewId}
133
+ ref={(e) => viewNodes[viewId] = e}
134
+ onAnimationEnd={isTransitionTarget ? onAnimationEnd : null}
135
+ vkuiClass={classNames('Root__view', {
136
+ 'Root__view--hide-back': transition && viewId === prevView && isBack,
137
+ 'Root__view--hide-forward': transition && viewId === prevView && !isBack,
138
+ 'Root__view--show-back': transition && viewId === activeView && isBack,
139
+ 'Root__view--show-forward': transition && viewId === activeView && !isBack,
140
+ 'Root__view--active': !transition && viewId === activeView,
141
+ })}
142
+ >{view}</div>
143
+ );
144
+ })}
145
+ <AppRootPortal>
146
+ {!!popout && <div vkuiClass="Root__popout">{popout}</div>}
147
+ {!!modal && <div vkuiClass="Root__modal">{modal}</div>}
148
+ </AppRootPortal>
149
+ </div>
150
+ );
151
+ };
152
+
153
+ export default Root;
154
+
155
+ function setPanelScroll(e: HTMLElement, scroll: number) {
156
+ // eslint-disable-next-line no-restricted-properties
157
+ const pan: HTMLElement | null = e.querySelector('[data-vkui-active-panel=true]');
158
+ pan && (pan.scrollTop = scroll);
232
159
  }
233
-
234
- export default withContext(withContext(withContext(
235
- withPlatform(withDOM<RootProps>(Root)),
236
- SplitColContext,
237
- 'splitCol',
238
- ), ConfigProviderContext, 'configProvider'), ScrollContext, 'scroll');
@@ -5,7 +5,7 @@ import { getClassName } from '../../helpers/getClassName';
5
5
  import { Icon16SearchOutline, Icon16Clear, Icon24Cancel } from '@vkontakte/icons';
6
6
  import { IOS, VKCOM } from '../../lib/platform';
7
7
  import { HasPlatform, HasRef } from '../../types';
8
- import Touch, { TouchEvent } from '../Touch/Touch';
8
+ import { Touch, TouchEvent } from '../Touch/Touch';
9
9
  import { VKUITouchEvent } from '../../lib/touch';
10
10
  import { noop } from '../../lib/utils';
11
11
  import Text from '../Typography/Text/Text';
@@ -1,4 +1,6 @@
1
- ⚠️ *Предпочтительнее использовать компонент [Spacing](/#!/Spacing)*
1
+ > **Важно**
2
+ >
3
+ >Компонент устарел. Предпочтительнее использовать компонент [Spacing](#!/Spacing)
2
4
 
3
5
  Используется для разделения какого-либо контента. Отступы справа и слева контролируются свойством `wide`.
4
6
 
@@ -71,7 +71,7 @@ const SimpleCell: React.FC<SimpleCellProps> = ({
71
71
  multiline,
72
72
  sizeY,
73
73
  ...restProps
74
- }) => {
74
+ }: SimpleCellProps) => {
75
75
  const platform = usePlatform();
76
76
  const hasAfter = hasReactNode(after) || expandable && platform === IOS;
77
77
 
@@ -0,0 +1,17 @@
1
+ Надстройка над `<input type="checkbox" />`. Компонент принимает все валидные для этого элемента свойства.
2
+
3
+ Компонент является упрощенной версией обычного чекбокса `Checkbox` и предназначен для использования внутри других блоков таких как таблицы
4
+
5
+ >**Важно**
6
+ >
7
+ >Это нестабильный компонент. Его API может меняться в рамках одной мажорной версии. [Подробнее про нестабильный компоненты](#/Unstable).
8
+
9
+ ```jsx { "props": { "layout": false, "iframe": false } }
10
+ <div style={{ display: 'flex', alignItems: 'center', flexDirection: 'row', padding: '24px 16px', background: 'white' }}>
11
+ <SimpleCheckbox defaultChecked style={{ margin: '0 10px' }} />
12
+ <SimpleCheckbox style={{ margin: '0 10px' }} />
13
+ <SimpleCheckbox defaultChecked style={{ margin: '0 10px' }} />
14
+ <SimpleCheckbox indeterminate style={{ margin: '0 10px' }} />
15
+ <SimpleCheckbox defaultIndeterminate style={{ margin: '0 10px' }} />
16
+ </div>
17
+ ```
@@ -0,0 +1,115 @@
1
+ .SimpleCheckbox {
2
+ display: block;
3
+ margin: -10px;
4
+ padding: 10px;
5
+ width: 24px;
6
+ height: 24px;
7
+ border-radius: 50%;
8
+ }
9
+
10
+ .SimpleCheckbox__input {
11
+ position: absolute;
12
+ -webkit-appearance: none;
13
+ -moz-appearance: none;
14
+ appearance: none;
15
+ }
16
+
17
+ .SimpleCheckbox__container {
18
+ display: flex;
19
+ align-items: flex-start;
20
+ justify-content: flex-start;
21
+ }
22
+
23
+ .SimpleCheckbox__icon {
24
+ flex-shrink: 0;
25
+ margin: 0;
26
+ box-sizing: border-box;
27
+ border-radius: 4px;
28
+ display: flex;
29
+ }
30
+
31
+ .SimpleCheckbox__icon--on {
32
+ color: var(--accent);
33
+ display: none;
34
+ }
35
+
36
+ .SimpleCheckbox__icon--indeterminate {
37
+ color: var(--accent);
38
+ display: none;
39
+ }
40
+
41
+ .SimpleCheckbox__icon--off {
42
+ color: var(--icon_tertiary);
43
+ }
44
+
45
+ .SimpleCheckbox__input:checked ~ .SimpleCheckbox__container .SimpleCheckbox__icon--on {
46
+ display: flex;
47
+ }
48
+
49
+ .SimpleCheckbox__input:indeterminate ~ .SimpleCheckbox__container .SimpleCheckbox__icon--indeterminate,
50
+ .SimpleCheckbox__input:checked ~ .SimpleCheckbox__container .SimpleCheckbox__icon--off {
51
+ display: none;
52
+ }
53
+
54
+ .SimpleCheckbox__input:indeterminate ~ .SimpleCheckbox__container .SimpleCheckbox__icon--indeterminate {
55
+ display: flex;
56
+ }
57
+
58
+ .SimpleCheckbox__input:indeterminate ~ .SimpleCheckbox__container .SimpleCheckbox__icon--on,
59
+ .SimpleCheckbox__input:indeterminate ~ .SimpleCheckbox__container .SimpleCheckbox__icon--off {
60
+ display: none;
61
+ }
62
+
63
+ .SimpleCheckbox__input[disabled] ~ .SimpleCheckbox__container {
64
+ opacity: .6;
65
+ }
66
+
67
+ .SimpleCheckbox--ios.SimpleCheckbox--sizeY-compact,
68
+ .SimpleCheckbox--android.SimpleCheckbox--sizeY-compact {
69
+ margin: -8px;
70
+ padding: 8px;
71
+ width: 20px;
72
+ height: 20px;
73
+ }
74
+
75
+ .SimpleCheckbox--vkcom {
76
+ margin: 0;
77
+ padding: 0;
78
+ width: 22px;
79
+ height: 22px;
80
+ border-radius: 4px;
81
+ }
82
+
83
+ .SimpleCheckbox--vkcom .SimpleCheckbox__activeShadow,
84
+ .SimpleCheckbox--vkcom .SimpleCheckbox__hoverShadow {
85
+ margin: 3px;
86
+ width: 16px;
87
+ height: 16px;
88
+ position: absolute;
89
+ top: 0;
90
+ right: 0;
91
+ bottom: 0;
92
+ left: 0;
93
+ pointer-events: none;
94
+ overflow: hidden;
95
+ border-radius: inherit;
96
+ transition: inherit;
97
+ }
98
+
99
+ .SimpleCheckbox--vkcom.SimpleCheckbox--active .SimpleCheckbox__activeShadow {
100
+ background-color: var(--background_highlighted);
101
+ }
102
+
103
+ .SimpleCheckbox--vkcom.SimpleCheckbox--hover .SimpleCheckbox__hoverShadow {
104
+ background-color: var(--background_hover);
105
+ }
106
+
107
+ .SimpleCheckbox--vkcom .SimpleCheckbox__icon {
108
+ border-radius: 3px;
109
+ padding: 1px;
110
+ border-width: 1px;
111
+ }
112
+
113
+ .SimpleCheckbox--vkcom .SimpleCheckbox__input[disabled] ~ .SimpleCheckbox__container {
114
+ opacity: .4;
115
+ }