@vkontakte/vkui 4.34.2 → 4.35.0

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 (453) hide show
  1. package/.browserslistrc +5 -0
  2. package/.cache/.eslintcache +1 -1
  3. package/.cache/.stylelintcache +1 -1
  4. package/.cache/.tsbuildinfo +237 -211
  5. package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  6. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +1 -1
  7. package/.cache/ts/src/components/Dropdown/Dropdown.d.ts +46 -5
  8. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +1 -1
  9. package/.cache/ts/src/components/ModalRoot/ModalRoot.d.ts +1 -1
  10. package/.cache/ts/src/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  11. package/.cache/ts/src/components/Popper/Popper.d.ts +18 -1
  12. package/.cache/ts/src/components/PopperArrow/PopperArrow.d.ts +8 -0
  13. package/.cache/ts/src/components/RichTooltip/RichTooltip.d.ts +7 -2
  14. package/.cache/ts/src/components/Snackbar/Snackbar.d.ts +5 -1
  15. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +1 -0
  16. package/.cache/ts/src/components/Tabbar/Tabbar.d.ts +8 -1
  17. package/.cache/ts/src/components/Tabs/Tabs.d.ts +13 -2
  18. package/.cache/ts/src/components/TabsItem/TabsItem.d.ts +22 -1
  19. package/.cache/ts/src/components/TextTooltip/TextTooltip.d.ts +5 -1
  20. package/.cache/ts/src/components/Tooltip/Tooltip.d.ts +18 -1
  21. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +3 -3
  22. package/.cache/ts/src/components/View/View.d.ts +2 -18
  23. package/.cache/ts/src/components/View/ViewInfinite.d.ts +1 -1
  24. package/.cache/ts/src/components/WriteBar/WriteBar.d.ts +5 -1
  25. package/.cache/ts/src/tokenized/index.d.ts +26 -0
  26. package/.eslintrc.json +14 -4
  27. package/dist/cjs/components/CardScroll/CardScroll.js +3 -1
  28. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  29. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js +7 -1
  30. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  31. package/dist/cjs/components/CustomSelect/CustomSelect.js +477 -554
  32. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  33. package/dist/cjs/components/Dropdown/Dropdown.js +147 -26
  34. package/dist/cjs/components/Dropdown/Dropdown.js.map +1 -1
  35. package/dist/cjs/components/Epic/Epic.js +1 -6
  36. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  37. package/dist/cjs/components/FocusTrap/FocusTrap.js +9 -10
  38. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  39. package/dist/cjs/components/HorizontalCell/HorizontalCell.js +4 -7
  40. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  41. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js +2 -2
  42. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  43. package/dist/cjs/components/Popper/Popper.js +11 -19
  44. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  45. package/dist/cjs/components/PopperArrow/PopperArrow.js +40 -0
  46. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -0
  47. package/dist/cjs/components/RichTooltip/RichTooltip.js +6 -15
  48. package/dist/cjs/components/RichTooltip/RichTooltip.js.map +1 -1
  49. package/dist/cjs/components/SimpleCell/SimpleCell.js +20 -31
  50. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  51. package/dist/cjs/components/Snackbar/Snackbar.js +7 -11
  52. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  53. package/dist/cjs/components/SplitCol/SplitCol.js +7 -1
  54. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  55. package/dist/cjs/components/SplitLayout/SplitLayout.js +5 -8
  56. package/dist/cjs/components/SplitLayout/SplitLayout.js.map +1 -1
  57. package/dist/cjs/components/Tabbar/Tabbar.js +15 -14
  58. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  59. package/dist/cjs/components/TabbarItem/TabbarItem.js +8 -10
  60. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  61. package/dist/cjs/components/Tabs/Tabs.js +23 -5
  62. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  63. package/dist/cjs/components/TabsItem/TabsItem.js +39 -22
  64. package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
  65. package/dist/cjs/components/TextTooltip/TextTooltip.js +6 -9
  66. package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -1
  67. package/dist/cjs/components/Tooltip/Tooltip.js +94 -71
  68. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  69. package/dist/cjs/components/Typography/Headline/Headline.js +11 -2
  70. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  71. package/dist/cjs/components/View/View.js +388 -453
  72. package/dist/cjs/components/View/View.js.map +1 -1
  73. package/dist/cjs/components/WriteBar/WriteBar.js +12 -5
  74. package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
  75. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +3 -8
  76. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  77. package/dist/cjs/hooks/useOrientationChange.js +2 -1
  78. package/dist/cjs/hooks/useOrientationChange.js.map +1 -1
  79. package/dist/cjs/tokenized/index.js +104 -0
  80. package/dist/cjs/tokenized/index.js.map +1 -1
  81. package/dist/components/CardScroll/CardScroll.js +3 -1
  82. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  83. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  84. package/dist/components/ConfigProvider/ConfigProviderContext.js +3 -0
  85. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  86. package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
  87. package/dist/components/CustomSelect/CustomSelect.js +473 -580
  88. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  89. package/dist/components/Dropdown/Dropdown.d.ts +46 -5
  90. package/dist/components/Dropdown/Dropdown.js +137 -27
  91. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  92. package/dist/components/Epic/Epic.js +1 -4
  93. package/dist/components/Epic/Epic.js.map +1 -1
  94. package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
  95. package/dist/components/FocusTrap/FocusTrap.js +9 -9
  96. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  97. package/dist/components/HorizontalCell/HorizontalCell.js +3 -5
  98. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  99. package/dist/components/MiniInfoCell/MiniInfoCell.js +2 -2
  100. package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  101. package/dist/components/ModalRoot/ModalRoot.d.ts +1 -1
  102. package/dist/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  103. package/dist/components/Popper/Popper.d.ts +18 -1
  104. package/dist/components/Popper/Popper.js +10 -19
  105. package/dist/components/Popper/Popper.js.map +1 -1
  106. package/dist/components/PopperArrow/PopperArrow.d.ts +8 -0
  107. package/dist/components/PopperArrow/PopperArrow.js +27 -0
  108. package/dist/components/PopperArrow/PopperArrow.js.map +1 -0
  109. package/dist/components/RichTooltip/RichTooltip.d.ts +7 -2
  110. package/dist/components/RichTooltip/RichTooltip.js +5 -10
  111. package/dist/components/RichTooltip/RichTooltip.js.map +1 -1
  112. package/dist/components/SimpleCell/SimpleCell.js +18 -28
  113. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  114. package/dist/components/Snackbar/Snackbar.d.ts +5 -1
  115. package/dist/components/Snackbar/Snackbar.js +8 -11
  116. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  117. package/dist/components/SplitCol/SplitCol.d.ts +1 -0
  118. package/dist/components/SplitCol/SplitCol.js +3 -0
  119. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  120. package/dist/components/SplitLayout/SplitLayout.js +4 -7
  121. package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
  122. package/dist/components/Tabbar/Tabbar.d.ts +8 -1
  123. package/dist/components/Tabbar/Tabbar.js +15 -14
  124. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  125. package/dist/components/TabbarItem/TabbarItem.js +7 -9
  126. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  127. package/dist/components/Tabs/Tabs.d.ts +13 -2
  128. package/dist/components/Tabs/Tabs.js +23 -5
  129. package/dist/components/Tabs/Tabs.js.map +1 -1
  130. package/dist/components/TabsItem/TabsItem.d.ts +22 -1
  131. package/dist/components/TabsItem/TabsItem.js +40 -21
  132. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  133. package/dist/components/TextTooltip/TextTooltip.d.ts +5 -1
  134. package/dist/components/TextTooltip/TextTooltip.js +5 -7
  135. package/dist/components/TextTooltip/TextTooltip.js.map +1 -1
  136. package/dist/components/Tooltip/Tooltip.d.ts +18 -1
  137. package/dist/components/Tooltip/Tooltip.js +89 -68
  138. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  139. package/dist/components/Typography/Headline/Headline.d.ts +3 -3
  140. package/dist/components/Typography/Headline/Headline.js +10 -2
  141. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  142. package/dist/components/View/View.d.ts +2 -18
  143. package/dist/components/View/View.js +384 -462
  144. package/dist/components/View/View.js.map +1 -1
  145. package/dist/components/View/ViewInfinite.d.ts +1 -1
  146. package/dist/components/WriteBar/WriteBar.d.ts +5 -1
  147. package/dist/components/WriteBar/WriteBar.js +10 -5
  148. package/dist/components/WriteBar/WriteBar.js.map +1 -1
  149. package/dist/components/WriteBarIcon/WriteBarIcon.js +3 -6
  150. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  151. package/dist/components.css +143 -127
  152. package/dist/components.css.map +1 -1
  153. package/dist/cssm/components/ActionSheet/ActionSheet.css +1 -1
  154. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  155. package/dist/cssm/components/Alert/Alert.css +1 -1
  156. package/dist/cssm/components/AppRoot/AppRoot.css +1 -1
  157. package/dist/cssm/components/Avatar/Avatar.css +3 -5
  158. package/dist/cssm/components/Badge/Badge.css +3 -3
  159. package/dist/cssm/components/Banner/Banner.css +5 -5
  160. package/dist/cssm/components/BaseGallery/BaseGallery.css +1 -1
  161. package/dist/cssm/components/Button/Button.css +53 -35
  162. package/dist/cssm/components/Calendar/Calendar.css +1 -1
  163. package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -1
  164. package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -1
  165. package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -1
  166. package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -1
  167. package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -1
  168. package/dist/cssm/components/Card/Card.css +5 -6
  169. package/dist/cssm/components/CardGrid/CardGrid.css +1 -1
  170. package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
  171. package/dist/cssm/components/CardScroll/CardScroll.js +3 -1
  172. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  173. package/dist/cssm/components/Cell/Cell.css +3 -3
  174. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -1
  175. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -1
  176. package/dist/cssm/components/CellButton/CellButton.css +1 -1
  177. package/dist/cssm/components/Checkbox/Checkbox.css +1 -1
  178. package/dist/cssm/components/Chip/Chip.css +1 -1
  179. package/dist/cssm/components/ChipsInput/ChipsInput.css +1 -1
  180. package/dist/cssm/components/ChipsSelect/ChipsSelect.css +1 -1
  181. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  182. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +3 -0
  183. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  184. package/dist/cssm/components/ContentCard/ContentCard.css +1 -1
  185. package/dist/cssm/components/Counter/Counter.css +31 -31
  186. package/dist/cssm/components/CustomScrollView/CustomScrollView.css +1 -1
  187. package/dist/cssm/components/CustomSelect/CustomSelect.css +1 -1
  188. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +1 -1
  189. package/dist/cssm/components/CustomSelect/CustomSelect.js +473 -580
  190. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  191. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +3 -3
  192. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.css +3 -3
  193. package/dist/cssm/components/DateInput/DateInput.css +1 -1
  194. package/dist/cssm/components/DatePicker/DatePicker.css +1 -1
  195. package/dist/cssm/components/DateRangeInput/DateRangeInput.css +1 -1
  196. package/dist/cssm/components/Dropdown/Dropdown.css +1 -1
  197. package/dist/cssm/components/Dropdown/Dropdown.d.ts +46 -5
  198. package/dist/cssm/components/Dropdown/Dropdown.js +137 -27
  199. package/dist/cssm/components/Dropdown/Dropdown.js.map +1 -1
  200. package/dist/cssm/components/Epic/Epic.css +1 -1
  201. package/dist/cssm/components/Epic/Epic.js +1 -4
  202. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  203. package/dist/cssm/components/FixedLayout/FixedLayout.css +1 -1
  204. package/dist/cssm/components/FocusTrap/FocusTrap.d.ts +1 -1
  205. package/dist/cssm/components/FocusTrap/FocusTrap.js +9 -9
  206. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  207. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  208. package/dist/cssm/components/Footer/Footer.css +1 -1
  209. package/dist/cssm/components/FormField/FormField.css +9 -9
  210. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  211. package/dist/cssm/components/FormLayout/FormLayout.css +1 -1
  212. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  213. package/dist/cssm/components/FormStatus/FormStatus.css +1 -1
  214. package/dist/cssm/components/Gradient/Gradient.css +1 -1
  215. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -1
  216. package/dist/cssm/components/Group/Group.css +1 -1
  217. package/dist/cssm/components/Header/Header.css +1 -1
  218. package/dist/cssm/components/HorizontalCell/HorizontalCell.css +1 -1
  219. package/dist/cssm/components/HorizontalCell/HorizontalCell.js +3 -5
  220. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  221. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.css +1 -1
  222. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +3 -3
  223. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  224. package/dist/cssm/components/InfoRow/InfoRow.css +1 -1
  225. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -1
  226. package/dist/cssm/components/Input/Input.css +1 -1
  227. package/dist/cssm/components/InputLike/InputLike.css +1 -1
  228. package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -1
  229. package/dist/cssm/components/Link/Link.css +1 -1
  230. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.css +1 -1
  231. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +2 -2
  232. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  233. package/dist/cssm/components/ModalCard/ModalCard.css +1 -1
  234. package/dist/cssm/components/ModalCardBase/ModalCardBase.css +3 -3
  235. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.css +1 -1
  236. package/dist/cssm/components/ModalPage/ModalPage.css +1 -1
  237. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.css +1 -1
  238. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  239. package/dist/cssm/components/ModalRoot/ModalRoot.d.ts +1 -1
  240. package/dist/cssm/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  241. package/dist/cssm/components/Pagination/Pagination.css +1 -1
  242. package/dist/cssm/components/Panel/Panel.css +1 -1
  243. package/dist/cssm/components/PanelHeader/PanelHeader.css +1 -1
  244. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.css +1 -1
  245. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  246. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.css +1 -1
  247. package/dist/cssm/components/Placeholder/Placeholder.css +3 -3
  248. package/dist/cssm/components/PopoutRoot/PopoutRoot.css +1 -1
  249. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.css +1 -1
  250. package/dist/cssm/components/Popper/Popper.css +1 -1
  251. package/dist/cssm/components/Popper/Popper.d.ts +18 -1
  252. package/dist/cssm/components/Popper/Popper.js +10 -19
  253. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  254. package/dist/cssm/components/PopperArrow/PopperArrow.css +1 -0
  255. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +8 -0
  256. package/dist/cssm/components/PopperArrow/PopperArrow.js +28 -0
  257. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -0
  258. package/dist/cssm/components/Progress/Progress.css +1 -1
  259. package/dist/cssm/components/PromoBanner/PromoBanner.css +1 -1
  260. package/dist/cssm/components/PullToRefresh/PullToRefresh.css +3 -3
  261. package/dist/cssm/components/Radio/Radio.css +1 -1
  262. package/dist/cssm/components/RadioGroup/RadioGroup.css +1 -1
  263. package/dist/cssm/components/Removable/Removable.css +1 -1
  264. package/dist/cssm/components/RichCell/RichCell.css +3 -3
  265. package/dist/cssm/components/RichTooltip/RichTooltip.css +3 -1
  266. package/dist/cssm/components/RichTooltip/RichTooltip.d.ts +7 -2
  267. package/dist/cssm/components/RichTooltip/RichTooltip.js +5 -10
  268. package/dist/cssm/components/RichTooltip/RichTooltip.js.map +1 -1
  269. package/dist/cssm/components/Root/Root.css +1 -1
  270. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.css +1 -1
  271. package/dist/cssm/components/Search/Search.css +1 -1
  272. package/dist/cssm/components/SegmentedControl/SegmentedControl.css +1 -1
  273. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +1 -1
  274. package/dist/cssm/components/Select/Select.css +1 -1
  275. package/dist/cssm/components/Separator/Separator.css +1 -1
  276. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  277. package/dist/cssm/components/SimpleCell/SimpleCell.js +18 -28
  278. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  279. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -1
  280. package/dist/cssm/components/Slider/Slider.css +3 -3
  281. package/dist/cssm/components/SliderSwitch/SliderSwitch.css +1 -1
  282. package/dist/cssm/components/Snackbar/Snackbar.css +1 -1
  283. package/dist/cssm/components/Snackbar/Snackbar.d.ts +5 -1
  284. package/dist/cssm/components/Snackbar/Snackbar.js +8 -11
  285. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  286. package/dist/cssm/components/Spacing/Spacing.css +1 -1
  287. package/dist/cssm/components/Spinner/Spinner.css +1 -1
  288. package/dist/cssm/components/SplitCol/SplitCol.css +1 -1
  289. package/dist/cssm/components/SplitCol/SplitCol.d.ts +1 -0
  290. package/dist/cssm/components/SplitCol/SplitCol.js +3 -0
  291. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  292. package/dist/cssm/components/SplitLayout/SplitLayout.css +1 -1
  293. package/dist/cssm/components/SplitLayout/SplitLayout.js +4 -7
  294. package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
  295. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.css +1 -1
  296. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.css +1 -1
  297. package/dist/cssm/components/Switch/Switch.css +3 -3
  298. package/dist/cssm/components/Tabbar/Tabbar.css +5 -3
  299. package/dist/cssm/components/Tabbar/Tabbar.d.ts +8 -1
  300. package/dist/cssm/components/Tabbar/Tabbar.js +15 -14
  301. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  302. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  303. package/dist/cssm/components/TabbarItem/TabbarItem.js +7 -9
  304. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  305. package/dist/cssm/components/Tabs/Tabs.css +1 -1
  306. package/dist/cssm/components/Tabs/Tabs.d.ts +13 -2
  307. package/dist/cssm/components/Tabs/Tabs.js +23 -5
  308. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  309. package/dist/cssm/components/TabsItem/TabsItem.css +5 -1
  310. package/dist/cssm/components/TabsItem/TabsItem.d.ts +22 -1
  311. package/dist/cssm/components/TabsItem/TabsItem.js +40 -21
  312. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  313. package/dist/cssm/components/Tappable/Tappable.css +5 -5
  314. package/dist/cssm/components/TextTooltip/TextTooltip.css +1 -1
  315. package/dist/cssm/components/TextTooltip/TextTooltip.d.ts +5 -1
  316. package/dist/cssm/components/TextTooltip/TextTooltip.js +5 -7
  317. package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -1
  318. package/dist/cssm/components/Textarea/Textarea.css +1 -1
  319. package/dist/cssm/components/Tooltip/Tooltip.css +1 -1
  320. package/dist/cssm/components/Tooltip/Tooltip.d.ts +18 -1
  321. package/dist/cssm/components/Tooltip/Tooltip.js +89 -68
  322. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  323. package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
  324. package/dist/cssm/components/Typography/Footnote/Footnote.css +1 -1
  325. package/dist/cssm/components/Typography/Headline/Headline.css +1 -1
  326. package/dist/cssm/components/Typography/Headline/Headline.d.ts +3 -3
  327. package/dist/cssm/components/Typography/Headline/Headline.js +10 -2
  328. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  329. package/dist/cssm/components/Typography/Paragraph/Paragraph.css +1 -1
  330. package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
  331. package/dist/cssm/components/Typography/Text/Text.css +1 -1
  332. package/dist/cssm/components/Typography/Title/Title.css +1 -1
  333. package/dist/cssm/components/UsersStack/UsersStack.css +5 -5
  334. package/dist/cssm/components/View/View.css +1 -1
  335. package/dist/cssm/components/View/View.d.ts +2 -18
  336. package/dist/cssm/components/View/View.js +384 -462
  337. package/dist/cssm/components/View/View.js.map +1 -1
  338. package/dist/cssm/components/View/ViewIOS.css +1 -1
  339. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  340. package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.css +1 -1
  341. package/dist/cssm/components/WriteBar/WriteBar.css +3 -1
  342. package/dist/cssm/components/WriteBar/WriteBar.d.ts +5 -1
  343. package/dist/cssm/components/WriteBar/WriteBar.js +10 -5
  344. package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
  345. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.css +1 -1
  346. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +3 -6
  347. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  348. package/dist/cssm/fonts/fonts.css +1 -1
  349. package/dist/cssm/hooks/useOrientationChange.js +2 -1
  350. package/dist/cssm/hooks/useOrientationChange.js.map +1 -1
  351. package/dist/cssm/lib/calendar.d.ts +2 -2
  352. package/dist/cssm/styles/animations.css +1 -1
  353. package/dist/cssm/styles/bright_light.css +1 -1
  354. package/dist/cssm/styles/common.css +1 -1
  355. package/dist/cssm/styles/components.css +143 -127
  356. package/dist/cssm/styles/constants.css +3 -10
  357. package/dist/cssm/styles/space_gray.css +1 -1
  358. package/dist/cssm/styles/themes.css +1 -16
  359. package/dist/cssm/styles/unstable.css +3 -1
  360. package/dist/cssm/styles/vkcom_dark.css +1 -6
  361. package/dist/cssm/styles/vkcom_light.css +1 -11
  362. package/dist/cssm/tokenized/index.d.ts +26 -0
  363. package/dist/cssm/tokenized/index.js +13 -0
  364. package/dist/cssm/tokenized/index.js.map +1 -1
  365. package/dist/default_scheme.css +1 -1
  366. package/dist/default_scheme.css.map +1 -1
  367. package/dist/fonts.css +1 -1
  368. package/dist/fonts.css.map +1 -1
  369. package/dist/hooks/useOrientationChange.js +2 -1
  370. package/dist/hooks/useOrientationChange.js.map +1 -1
  371. package/dist/lib/calendar.d.ts +2 -2
  372. package/dist/tokenized/index.d.ts +26 -0
  373. package/dist/tokenized/index.js +13 -0
  374. package/dist/tokenized/index.js.map +1 -1
  375. package/dist/unstable.css +3 -1
  376. package/dist/unstable.css.map +1 -1
  377. package/dist/vkui.css +144 -143
  378. package/dist/vkui.css.map +1 -1
  379. package/package.json +6 -5
  380. package/src/components/Badge/Badge.css +0 -5
  381. package/src/components/CardScroll/CardScroll.tsx +1 -1
  382. package/src/components/Cell/Cell.css +3 -2
  383. package/src/components/ChipsInput/ChipsInput.css +2 -0
  384. package/src/components/ConfigProvider/ConfigProviderContext.tsx +2 -0
  385. package/src/components/Counter/Counter.css +30 -0
  386. package/src/components/CustomScrollView/CustomScrollView.css +10 -5
  387. package/src/components/CustomSelect/CustomSelect.tsx +543 -574
  388. package/src/components/Dropdown/Dropdown.css +12 -0
  389. package/src/components/Dropdown/Dropdown.tsx +174 -20
  390. package/src/components/Dropdown/Readme.md +1 -0
  391. package/src/components/Epic/Epic.tsx +1 -4
  392. package/src/components/FixedLayout/Readme.md +103 -109
  393. package/src/components/FocusTrap/FocusTrap.tsx +10 -10
  394. package/src/components/Group/Group.css +1 -1
  395. package/src/components/HorizontalCell/HorizontalCell.css +25 -43
  396. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -9
  397. package/src/components/HorizontalScroll/HorizontalScroll.css +23 -0
  398. package/src/components/Input/Input.css +2 -0
  399. package/src/components/MiniInfoCell/MiniInfoCell.css +13 -3
  400. package/src/components/MiniInfoCell/MiniInfoCell.tsx +3 -3
  401. package/src/components/Popper/Popper.css +0 -35
  402. package/src/components/Popper/Popper.tsx +29 -23
  403. package/src/components/PopperArrow/PopperArrow.css +34 -0
  404. package/src/components/PopperArrow/PopperArrow.tsx +40 -0
  405. package/src/components/RichTooltip/RichTooltip.css +44 -4
  406. package/src/components/RichTooltip/RichTooltip.tsx +9 -11
  407. package/src/components/SimpleCell/Readme.md +115 -129
  408. package/src/components/SimpleCell/SimpleCell.css +30 -68
  409. package/src/components/SimpleCell/SimpleCell.tsx +21 -25
  410. package/src/components/Snackbar/Readme.md +95 -123
  411. package/src/components/Snackbar/Snackbar.css +18 -27
  412. package/src/components/Snackbar/Snackbar.tsx +17 -11
  413. package/src/components/SplitCol/SplitCol.tsx +2 -0
  414. package/src/components/SplitLayout/SplitLayout.css +3 -7
  415. package/src/components/SplitLayout/SplitLayout.tsx +9 -6
  416. package/src/components/Tabbar/Tabbar.css +4 -1
  417. package/src/components/Tabbar/Tabbar.tsx +23 -12
  418. package/src/components/TabbarItem/TabbarItem.css +7 -5
  419. package/src/components/TabbarItem/TabbarItem.tsx +13 -7
  420. package/src/components/Tabs/Readme.md +191 -251
  421. package/src/components/Tabs/Tabs.css +27 -80
  422. package/src/components/Tabs/Tabs.tsx +45 -7
  423. package/src/components/TabsItem/Readme.md +1 -0
  424. package/src/components/TabsItem/TabsItem.css +191 -106
  425. package/src/components/TabsItem/TabsItem.tsx +72 -20
  426. package/src/components/TextTooltip/TextTooltip.css +41 -11
  427. package/src/components/TextTooltip/TextTooltip.tsx +9 -13
  428. package/src/components/Textarea/Textarea.css +2 -0
  429. package/src/components/Tooltip/Readme.md +128 -101
  430. package/src/components/Tooltip/Tooltip.css +29 -40
  431. package/src/components/Tooltip/Tooltip.tsx +98 -66
  432. package/src/components/Typography/Headline/Headline.tsx +15 -1
  433. package/src/components/View/Readme.md +2 -0
  434. package/src/components/View/View.tsx +451 -514
  435. package/src/components/WriteBar/WriteBar.css +27 -33
  436. package/src/components/WriteBar/WriteBar.tsx +16 -5
  437. package/src/components/WriteBarIcon/WriteBarIcon.css +6 -19
  438. package/src/components/WriteBarIcon/WriteBarIcon.tsx +6 -6
  439. package/src/hooks/useOrientationChange.ts +1 -0
  440. package/src/styles/components.css +1 -0
  441. package/src/styles/constants.css +8 -0
  442. package/src/tokenized/index.ts +39 -0
  443. package/tsconfig.json +1 -1
  444. package/.cache/ts/src/components/ClickPopper/ClickPopper.d.ts +0 -21
  445. package/dist/cjs/components/ClickPopper/ClickPopper.js +0 -96
  446. package/dist/cjs/components/ClickPopper/ClickPopper.js.map +0 -1
  447. package/dist/components/ClickPopper/ClickPopper.d.ts +0 -21
  448. package/dist/components/ClickPopper/ClickPopper.js +0 -71
  449. package/dist/components/ClickPopper/ClickPopper.js.map +0 -1
  450. package/dist/cssm/components/ClickPopper/ClickPopper.d.ts +0 -21
  451. package/dist/cssm/components/ClickPopper/ClickPopper.js +0 -71
  452. package/dist/cssm/components/ClickPopper/ClickPopper.js.map +0 -1
  453. package/src/components/ClickPopper/ClickPopper.tsx +0 -86
@@ -1,274 +1,214 @@
1
1
  ```jsx
2
- class Example extends React.Component {
3
- constructor(props) {
4
- super(props);
2
+ const Example = ({ sizeX }) => {
3
+ const [mode, setMode] = React.useState("all");
4
+ const [menuOpened, setMenuOpened] = React.useState(false);
5
+ const [selected, setSelected] = React.useState("news");
5
6
 
6
- this.state = {
7
- activePanel: "panel1",
8
- contextOpened: false,
9
- mode: "all",
10
- activeTab1: "recommendations",
11
- activeTab2: "music",
12
- activeTab3: "news",
13
- activeTab4: "all",
14
- activeTab5: "all",
15
- };
7
+ return (
8
+ <View activePanel="panel">
9
+ <Panel id="panel">
10
+ <PanelHeader
11
+ before={
12
+ <PanelHeaderButton>
13
+ <Icon28CameraOutline />
14
+ </PanelHeaderButton>
15
+ }
16
+ after={
17
+ <PanelHeaderButton>
18
+ <Icon28AddOutline />
19
+ </PanelHeaderButton>
20
+ }
21
+ // TODO 5.0.0 Новая адаптивность
22
+ separator={sizeX === SizeType.REGULAR}
23
+ >
24
+ <DefaultInPanel
25
+ menuOpened={menuOpened}
26
+ onMenuClick={(opened) => {
27
+ setMenuOpened((prevState) => (opened ? !prevState : false));
28
+ }}
29
+ />
30
+ </PanelHeader>
16
31
 
17
- this.select = this.select.bind(this);
18
- }
32
+ <Scrollable />
19
33
 
20
- select(e) {
21
- const mode = e.currentTarget.dataset.mode;
22
- this.setState({ mode, contextOpened: false });
23
- }
34
+ <PanelHeaderContext
35
+ opened={menuOpened}
36
+ onClose={() => setMenuOpened(false)}
37
+ >
38
+ <List>
39
+ <Cell
40
+ before={<Icon28UsersOutline />}
41
+ after={mode === "all" && <Icon24Done fill="var(--accent)" />}
42
+ onClick={() => setMode("all")}
43
+ >
44
+ Communities
45
+ </Cell>
46
+ <Cell
47
+ before={<Icon28SettingsOutline />}
48
+ after={mode === "managed" && <Icon24Done fill="var(--accent)" />}
49
+ onClick={() => setMode("managed")}
50
+ >
51
+ Managed Communities
52
+ </Cell>
53
+ </List>
54
+ </PanelHeaderContext>
55
+ </Panel>
56
+ </View>
57
+ );
58
+ };
24
59
 
25
- render() {
26
- return (
27
- <View activePanel={this.state.activePanel}>
28
- <Panel id="panel1">
29
- <PanelHeader
30
- before={
31
- <PanelHeaderButton>
32
- <Icon28CameraOutline />
33
- </PanelHeaderButton>
34
- }
35
- after={
36
- <PanelHeaderButton>
37
- <Icon28AddOutline />
38
- </PanelHeaderButton>
39
- }
40
- separator={this.props.sizeX === SizeType.REGULAR}
41
- >
42
- <Tabs>
43
- <TabsItem
44
- onClick={() => {
45
- if (this.state.activeTab1 === "news") {
46
- this.setState({ contextOpened: !this.state.contextOpened });
47
- }
48
- this.setState({ activeTab1: "news" });
49
- }}
50
- selected={this.state.activeTab1 === "news"}
51
- after={
52
- <Icon16Dropdown
53
- style={{
54
- transform: `rotate(${
55
- this.state.contextOpened ? "180deg" : "0"
56
- }) translateY(1px)`,
57
- }}
58
- />
59
- }
60
- >
61
- Новости
62
- </TabsItem>
63
- <TabsItem
64
- onClick={() => {
65
- this.setState({
66
- activeTab1: "recommendations",
67
- contextOpened: false,
68
- });
69
- }}
70
- selected={this.state.activeTab1 === "recommendations"}
71
- >
72
- Интересное
73
- </TabsItem>
74
- </Tabs>
75
- </PanelHeader>
76
- <PanelHeaderContext
77
- opened={this.state.contextOpened}
78
- onClose={() => {
79
- this.setState({ contextOpened: false });
60
+ const DefaultInPanel = ({ menuOpened, onMenuClick }) => {
61
+ const [selected, setSelected] = React.useState("news");
62
+
63
+ return (
64
+ <Tabs>
65
+ <TabsItem
66
+ after={
67
+ <Icon16Dropdown
68
+ style={{
69
+ transform: `rotate(${menuOpened ? "180deg" : "0"})`,
80
70
  }}
71
+ />
72
+ }
73
+ selected={selected === "news"}
74
+ onClick={() => {
75
+ if (selected === "news") {
76
+ onMenuClick(true);
77
+ }
78
+ setSelected("news");
79
+ }}
80
+ >
81
+ Новости
82
+ </TabsItem>
83
+ <TabsItem
84
+ selected={selected === "recommendations"}
85
+ onClick={() => {
86
+ onMenuClick(false);
87
+ setSelected("recommendations");
88
+ }}
89
+ >
90
+ Интересное
91
+ </TabsItem>
92
+ </Tabs>
93
+ );
94
+ };
95
+
96
+ const Scrollable = () => {
97
+ const [mode, setMode] = React.useState("default");
98
+ const [selected, setSelected] = React.useState("news");
99
+ const [disabled, setDisabled] = React.useState(false);
100
+
101
+ return (
102
+ <Group>
103
+ <Tabs mode={mode}>
104
+ <HorizontalScroll arrowSize="m">
105
+ <TabsItem
106
+ selected={selected === "groups"}
107
+ disabled={disabled}
108
+ onClick={() => setSelected("groups")}
81
109
  >
82
- <List>
83
- <Cell
84
- before={<Icon28UsersOutline />}
85
- after={
86
- this.state.mode === "all" ? (
87
- <Icon24Done fill="var(--accent)" />
88
- ) : null
89
- }
90
- onClick={this.select}
91
- data-mode="all"
92
- >
93
- Communities
94
- </Cell>
95
- <Cell
96
- before={<Icon28SettingsOutline />}
97
- after={
98
- this.state.mode === "managed" ? (
99
- <Icon24Done fill="var(--accent)" />
100
- ) : null
101
- }
102
- onClick={this.select}
103
- data-mode="managed"
104
- >
105
- Managed Communities
106
- </Cell>
107
- </List>
108
- </PanelHeaderContext>
109
- <Group>
110
- <CellButton
111
- onClick={() => this.setState({ activePanel: "panel2" })}
112
- >
113
- Под шапкой
114
- </CellButton>
115
- </Group>
116
- </Panel>
117
- <Panel id="panel2">
118
- <PanelHeader
110
+ Сообщества
111
+ </TabsItem>
112
+ <TabsItem
119
113
  before={
120
- <PanelHeaderBack
121
- onClick={() => this.setState({ activePanel: "panel1" })}
122
- />
114
+ mode === "default" ? (
115
+ <Icon24NewsfeedOutline />
116
+ ) : (
117
+ <Icon20NewsfeedOutline />
118
+ )
123
119
  }
124
- separator={this.props.sizeX === SizeType.REGULAR}
120
+ after={<Icon16Dropdown />}
121
+ selected={selected === "news"}
122
+ disabled={disabled}
123
+ onClick={() => setSelected("news")}
125
124
  >
126
- Музыка
127
- </PanelHeader>
128
- <Group>
129
- <Tabs>
130
- <TabsItem
131
- onClick={() => this.setState({ activeTab2: "music" })}
132
- selected={this.state.activeTab2 === "music"}
133
- >
134
- Моя музыка
135
- </TabsItem>
136
- <TabsItem
137
- onClick={() => this.setState({ activeTab2: "recommendations" })}
138
- selected={this.state.activeTab2 === "recommendations"}
139
- >
140
- Рекомендации
141
- </TabsItem>
142
- </Tabs>
143
- <CellButton
144
- onClick={() => this.setState({ activePanel: "panel3" })}
145
- >
146
- Со скроллом
147
- </CellButton>
148
- </Group>
149
- </Panel>
150
- <Panel id="panel3">
151
- <PanelHeader
125
+ Лента
126
+ </TabsItem>
127
+ <TabsItem
152
128
  before={
153
- <PanelHeaderBack
154
- onClick={() => this.setState({ activePanel: "panel2" })}
155
- />
129
+ mode === "default" ? (
130
+ <Icon24ThumbsUpOutline />
131
+ ) : (
132
+ <Icon20ThumbsUpOutline />
133
+ )
156
134
  }
157
- separator={this.props.sizeX === SizeType.REGULAR}
135
+ status={<Badge mode="prominent" />}
136
+ after={<Icon16Dropdown />}
137
+ selected={selected === "recommendations"}
138
+ disabled={disabled}
139
+ onClick={() => setSelected("recommendations")}
158
140
  >
159
- Новости
160
- </PanelHeader>
161
- <Group>
162
- <Tabs>
163
- <HorizontalScroll>
164
- <TabsItem
165
- onClick={() => this.setState({ activeTab3: "news" })}
166
- selected={this.state.activeTab3 === "news"}
167
- >
168
- Лента
169
- </TabsItem>
170
- <TabsItem
171
- onClick={() =>
172
- this.setState({ activeTab3: "recommendations" })
173
- }
174
- selected={this.state.activeTab3 === "recommendations"}
175
- >
176
- Рекомендации
177
- </TabsItem>
178
- <TabsItem
179
- onClick={() => this.setState({ activeTab3: "friends" })}
180
- selected={this.state.activeTab3 === "friends"}
181
- >
182
- Друзья
183
- </TabsItem>
184
- <TabsItem
185
- onClick={() => this.setState({ activeTab3: "photos" })}
186
- selected={this.state.activeTab3 === "photos"}
187
- >
188
- Фотографии
189
- </TabsItem>
190
- <TabsItem
191
- onClick={() => this.setState({ activeTab3: "groups" })}
192
- selected={this.state.activeTab3 === "groups"}
193
- >
194
- Сообщества
195
- </TabsItem>
196
- </HorizontalScroll>
197
- </Tabs>
198
- <CellButton
199
- onClick={() => this.setState({ activePanel: "panel4" })}
200
- >
201
- Табы-кнопки
202
- </CellButton>
203
- </Group>
204
- </Panel>
205
- <Panel id="panel4">
206
- <PanelHeader
141
+ Рекомендации
142
+ </TabsItem>
143
+ <TabsItem
207
144
  before={
208
- <PanelHeaderBack
209
- onClick={() => this.setState({ activePanel: "panel2" })}
210
- />
145
+ mode === "default" ? (
146
+ <Icon24UsersOutline />
147
+ ) : (
148
+ <Icon20UsersOutline />
149
+ )
150
+ }
151
+ status={
152
+ <Counter mode="prominent" size="s">
153
+ 3
154
+ </Counter>
211
155
  }
156
+ after={<Icon16Dropdown />}
157
+ selected={selected === "friends"}
158
+ disabled={disabled}
159
+ onClick={() => setSelected("friends")}
212
160
  >
213
- Кнопки
214
- </PanelHeader>
215
- <Group>
216
- <Tabs mode="buttons">
217
- <TabsItem
218
- onClick={() => this.setState({ activeTab4: "all" })}
219
- selected={this.state.activeTab4 === "all"}
220
- >
221
- Все записи
222
- </TabsItem>
223
- <TabsItem
224
- onClick={() => this.setState({ activeTab4: "user" })}
225
- selected={this.state.activeTab4 === "user"}
226
- >
227
- Записи Павла
228
- </TabsItem>
229
- </Tabs>
230
- <CellButton
231
- onClick={() => this.setState({ activePanel: "panel5" })}
232
- >
233
- Segmented (iOS only)
234
- </CellButton>
235
- </Group>
236
- </Panel>
237
- <Panel id="panel5">
238
- <PanelHeader
161
+ Друзья
162
+ </TabsItem>
163
+ <TabsItem
239
164
  before={
240
- <PanelHeaderBack
241
- onClick={() => this.setState({ activePanel: "panel4" })}
242
- />
165
+ mode === "default" ? (
166
+ <Icon24PictureOutline />
167
+ ) : (
168
+ <Icon20PictureOutline />
169
+ )
243
170
  }
244
- separator={this.props.sizeX === SizeType.REGULAR}
171
+ status={23}
172
+ after={<Icon16Dropdown />}
173
+ selected={selected === "photos"}
174
+ disabled={disabled}
175
+ onClick={() => setSelected("photos")}
245
176
  >
246
- Лента
247
- </PanelHeader>
248
- <Group>
249
- <Tabs mode="segmented">
250
- <TabsItem
251
- onClick={() => this.setState({ activeTab5: "all" })}
252
- selected={this.state.activeTab5 === "all"}
253
- >
254
- Все записи
255
- </TabsItem>
256
- <TabsItem
257
- onClick={() => this.setState({ activeTab5: "user" })}
258
- selected={this.state.activeTab5 === "user"}
259
- after={<Counter>3</Counter>}
260
- >
261
- Записи Павла
262
- </TabsItem>
263
- </Tabs>
264
- </Group>
265
- </Panel>
266
- </View>
267
- );
268
- }
269
- }
177
+ Фотографии
178
+ </TabsItem>
179
+ </HorizontalScroll>
180
+ </Tabs>
181
+ <FormItem top="mode">
182
+ <CustomSelect
183
+ value={mode}
184
+ options={[
185
+ {
186
+ label: "default",
187
+ value: "default",
188
+ },
189
+ {
190
+ label: "accent",
191
+ value: "accent",
192
+ },
193
+ {
194
+ label: "secondary",
195
+ value: "secondary",
196
+ },
197
+ ]}
198
+ onChange={(event) => setMode(event.target.value)}
199
+ />
200
+ </FormItem>
201
+ <Checkbox onChange={() => setDisabled((prev) => !prev)}>
202
+ disabled
203
+ </Checkbox>
204
+ </Group>
205
+ );
206
+ };
270
207
 
208
+ // TODO 5.0.0 Новая адаптивность
271
209
  const AdaptivityExample = withAdaptivity(Example, { sizeX: true });
272
210
 
273
- <AdaptivityExample />;
211
+ <ConfigProvider webviewType="internal">
212
+ <AdaptivityExample />
213
+ </ConfigProvider>;
274
214
  ```
@@ -1,9 +1,21 @@
1
- .Tabs__in,
2
- .Tabs .HorizontalScroll__in-wrapper {
1
+ .Tabs__in {
3
2
  display: flex;
4
- align-items: center;
3
+ align-items: stretch;
5
4
  }
6
5
 
6
+ .Tabs--withGaps {
7
+ justify-content: flex-start;
8
+ }
9
+
10
+ /* TODO v5.0.0 Удалить mode="segmented" */
11
+ .Tabs--ios.Tabs--segmented {
12
+ padding: 4px 12px 8px;
13
+ }
14
+
15
+ /**
16
+ * CMP:
17
+ * PanelHeader
18
+ */
7
19
  .PanelHeader .Tabs {
8
20
  overflow: hidden;
9
21
  font-family: var(--font-common);
@@ -15,42 +27,22 @@
15
27
  content: "";
16
28
  }
17
29
 
18
- .Tabs .HorizontalScroll {
19
- min-width: 100%;
20
- }
21
-
22
- .Tabs--buttons {
23
- padding-top: 8px;
24
- padding-bottom: 8px;
25
- }
26
-
27
- .Tabs--default,
28
- .Tabs--default .HorizontalScroll__in-wrapper {
29
- justify-content: center;
30
- }
31
-
32
- .Tabs--buttons,
33
- .Tabs--default .HorizontalScroll__in-wrapper {
34
- justify-content: flex-start;
30
+ /**
31
+ * CMP:
32
+ * Group
33
+ */
34
+ .Group--plain .Group__inner > .Tabs--default:first-child {
35
+ margin-top: -8px;
35
36
  }
36
37
 
37
- .Tabs--sizeX-compact.Tabs--buttons .HorizontalScroll__in-wrapper::after,
38
- .Tabs--sizeX-compact.Tabs--buttons .HorizontalScroll__in-wrapper::before {
39
- display: block;
40
- width: 8px;
41
- flex-shrink: 0;
42
- height: 1px;
43
- content: "";
38
+ .Group--card > .Group__inner > .Tabs--default:first-child {
39
+ margin-top: -4px;
44
40
  }
45
41
 
46
- /*
47
- iOS
42
+ /**
43
+ * CMP:
44
+ * FixedLayout
48
45
  */
49
-
50
- .Tabs--ios.Tabs--segmented {
51
- padding: 4px 12px 8px;
52
- }
53
-
54
46
  /* Нужно для закрашивания прозрачной области нижнего инсета на iphone x */
55
47
  .FixedLayout--ios.FixedLayout--bottom .Tabs::after {
56
48
  position: absolute;
@@ -59,7 +51,7 @@
59
51
  width: 100%;
60
52
  height: 100%;
61
53
  content: "";
62
- background: var(--background_content);
54
+ background: var(--background_content, var(--vkui--color_background_content));
63
55
  }
64
56
 
65
57
  .FixedLayout--ios.FixedLayout--bottom .Tabs__in,
@@ -67,48 +59,3 @@
67
59
  position: relative;
68
60
  z-index: 2;
69
61
  }
70
-
71
- /**
72
- * Counter inside TabsItem
73
- */
74
-
75
- .TabsItem .Counter {
76
- margin-left: 8px;
77
- }
78
-
79
- .Tabs .TabsItem .Counter--secondary {
80
- background: var(--panel_tab_inactive_text);
81
- color: var(--white);
82
- }
83
-
84
- .Tabs .TabsItem--selected .Counter--secondary {
85
- background: var(--panel_tab_active_text);
86
- color: var(--panel_tab_active_background);
87
- }
88
-
89
- .Tabs--ios.Tabs--segmented .TabsItem .Counter--secondary {
90
- background: var(--segmented_control_tint);
91
- color: var(--background_content);
92
- }
93
-
94
- .Tabs--ios.Tabs--segmented .TabsItem--selected .Counter--secondary {
95
- background: var(--background_content);
96
- color: var(--segmented_control_tint);
97
- }
98
-
99
- .Tabs--ios.Tabs--segmented .TabsItem .Counter--s-m {
100
- position: relative;
101
- top: 1px;
102
- }
103
-
104
- /*
105
- * CMP:
106
- * Group
107
- */
108
- .Group--plain .Group__inner > .Tabs--default:first-child {
109
- margin-top: -8px;
110
- }
111
-
112
- .Group--card > .Group__inner > .Tabs--default:first-child {
113
- margin-top: -4px;
114
- }
@@ -1,21 +1,37 @@
1
1
  import * as React from "react";
2
- import { getClassName } from "../../helpers/getClassName";
3
2
  import { classNames } from "../../lib/classNames";
4
3
  import { HasRootRef } from "../../types";
5
4
  import { usePlatform } from "../../hooks/usePlatform";
6
- import { IOS } from "../../lib/platform";
5
+ import { IOS, VKCOM } from "../../lib/platform";
7
6
  import { withAdaptivity, AdaptivityProps } from "../../hoc/withAdaptivity";
7
+ import { warnOnce } from "../../lib/warnOnce";
8
8
  import "./Tabs.css";
9
9
 
10
10
  export interface TabsProps
11
11
  extends React.HTMLAttributes<HTMLDivElement>,
12
12
  HasRootRef<HTMLDivElement>,
13
13
  AdaptivityProps {
14
- mode?: "default" | "buttons" | "segmented";
14
+ /**
15
+ * Задаёт вид кнопок.
16
+ *
17
+ * > ⚠️ Значения `"buttons"`, `"segmented"` устарели и будут удалены в 5.0.0. Вместо `"buttons"` используйте `"secondary"`.
18
+ * > Режим `"segmented"` переехал в отдельный компонент [`SegmentedControl`](https://vkcom.github.io/VKUI#/SegmentedControl),
19
+ * > поэтому используйте его вместо `Tabs`.
20
+ */
21
+ mode?: "buttons" | "segmented" | "default" | "accent" | "secondary";
15
22
  }
16
23
 
17
- export const TabsModeContext =
18
- React.createContext<TabsProps["mode"]>("default");
24
+ const warn = warnOnce("Tabs");
25
+
26
+ export interface TabsContextProps {
27
+ mode: TabsProps["mode"];
28
+ withGaps: boolean;
29
+ }
30
+
31
+ export const TabsModeContext = React.createContext<TabsContextProps>({
32
+ mode: "default",
33
+ withGaps: false,
34
+ });
19
35
 
20
36
  const TabsComponent = ({
21
37
  children,
@@ -26,22 +42,44 @@ const TabsComponent = ({
26
42
  }: TabsProps) => {
27
43
  const platform = usePlatform();
28
44
 
45
+ if (
46
+ (mode === "buttons" || mode === "segmented") &&
47
+ process.env.NODE_ENV === "development"
48
+ ) {
49
+ const expectedValueText =
50
+ mode === "buttons"
51
+ ? `значения "secondary"`
52
+ : "компонент SegmentedControl";
53
+ warn(
54
+ `mode="${mode}" устарело и будет удалено в 5.0.0. Используйте ${expectedValueText}`
55
+ );
56
+ }
57
+
29
58
  if (platform !== IOS && mode === "segmented") {
30
59
  mode = "default";
31
60
  }
32
61
 
62
+ if (mode === "buttons") {
63
+ mode = "secondary";
64
+ }
65
+
66
+ const withGaps = mode === "accent" || mode === "secondary";
67
+
33
68
  return (
34
69
  <div
35
70
  {...restProps}
36
71
  ref={getRootRef}
37
72
  vkuiClass={classNames(
38
- getClassName("Tabs", platform),
73
+ "Tabs",
74
+ (platform === IOS || platform === VKCOM) && `Tabs--${platform}`,
39
75
  `Tabs--${mode}`,
76
+ withGaps && "Tabs--withGaps",
77
+ // TODO v5.0.0 новая адаптивность
40
78
  `Tabs--sizeX-${sizeX}`
41
79
  )}
42
80
  >
43
81
  <div vkuiClass="Tabs__in">
44
- <TabsModeContext.Provider value={mode}>
82
+ <TabsModeContext.Provider value={{ mode, withGaps }}>
45
83
  {children}
46
84
  </TabsModeContext.Provider>
47
85
  </div>
@@ -0,0 +1 @@
1
+ Элемент компонента [`Tabs`](https://vkcom.github.io/VKUI/#/Tabs). Наследует `mode` из контекста `Tabs`.