@vkontakte/vkui 4.34.0 → 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 (690) hide show
  1. package/.browserslistrc +5 -0
  2. package/.cache/.eslintcache +1 -1
  3. package/.cache/.stylelintcache +1 -1
  4. package/.cache/.tsbuildinfo +291 -268
  5. package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +1 -1
  6. package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -1
  7. package/.cache/ts/src/components/Button/Button.d.ts +1 -1
  8. package/.cache/ts/src/components/CardGrid/CardGrid.d.ts +1 -1
  9. package/.cache/ts/src/components/Checkbox/Checkbox.d.ts +1 -1
  10. package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  11. package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  12. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +1 -1
  13. package/.cache/ts/src/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -1
  14. package/.cache/ts/src/components/DatePicker/DatePicker.d.ts +1 -1
  15. package/.cache/ts/src/components/Dropdown/Dropdown.d.ts +46 -5
  16. package/.cache/ts/src/components/Epic/Epic.d.ts +1 -1
  17. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +1 -1
  18. package/.cache/ts/src/components/Group/Group.d.ts +1 -1
  19. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  20. package/.cache/ts/src/components/IconButton/IconButton.d.ts +1 -1
  21. package/.cache/ts/src/components/Input/Input.d.ts +1 -1
  22. package/.cache/ts/src/components/ModalCard/ModalCard.d.ts +1 -1
  23. package/.cache/ts/src/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  24. package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +1 -1
  25. package/.cache/ts/src/components/ModalRoot/ModalRoot.d.ts +1 -1
  26. package/.cache/ts/src/components/ModalRoot/ModalRootAdaptive.d.ts +1 -1
  27. package/.cache/ts/src/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  28. package/.cache/ts/src/components/NativeSelect/NativeSelect.d.ts +1 -1
  29. package/.cache/ts/src/components/Panel/Panel.d.ts +1 -1
  30. package/.cache/ts/src/components/PanelHeader/PanelHeader.d.ts +1 -1
  31. package/.cache/ts/src/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  32. package/.cache/ts/src/components/PopoutRoot/PopoutRoot.d.ts +1 -1
  33. package/.cache/ts/src/components/Popper/Popper.d.ts +18 -1
  34. package/.cache/ts/src/components/PopperArrow/PopperArrow.d.ts +8 -0
  35. package/.cache/ts/src/components/Radio/Radio.d.ts +1 -1
  36. package/.cache/ts/src/components/RangeSlider/UniversalSlider.d.ts +1 -1
  37. package/.cache/ts/src/components/RichCell/RichCell.d.ts +1 -1
  38. package/.cache/ts/src/components/RichTooltip/RichTooltip.d.ts +7 -2
  39. package/.cache/ts/src/components/Search/Search.d.ts +1 -1
  40. package/.cache/ts/src/components/Select/Select.d.ts +1 -1
  41. package/.cache/ts/src/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  42. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +1 -1
  43. package/.cache/ts/src/components/Snackbar/Snackbar.d.ts +5 -1
  44. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +1 -0
  45. package/.cache/ts/src/components/Tabbar/Tabbar.d.ts +8 -1
  46. package/.cache/ts/src/components/Tabs/Tabs.d.ts +14 -3
  47. package/.cache/ts/src/components/TabsItem/TabsItem.d.ts +22 -1
  48. package/.cache/ts/src/components/Tappable/Tappable.d.ts +1 -1
  49. package/.cache/ts/src/components/TextTooltip/TextTooltip.d.ts +5 -1
  50. package/.cache/ts/src/components/Textarea/Textarea.d.ts +4 -1
  51. package/.cache/ts/src/components/Tooltip/Tooltip.d.ts +18 -1
  52. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +3 -3
  53. package/.cache/ts/src/components/View/View.d.ts +2 -18
  54. package/.cache/ts/src/components/View/ViewInfinite.d.ts +1 -1
  55. package/.cache/ts/src/components/WriteBar/WriteBar.d.ts +5 -1
  56. package/.cache/ts/src/hoc/withAdaptivity.d.ts +1 -1
  57. package/.cache/ts/src/hoc/withContext.d.ts +1 -1
  58. package/.cache/ts/src/hoc/withPlatform.d.ts +1 -1
  59. package/.cache/ts/src/tokenized/index.d.ts +26 -0
  60. package/.eslintrc.json +14 -4
  61. package/dist/cjs/components/AppRoot/AppRoot.js +13 -15
  62. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  63. package/dist/cjs/components/Button/Button.js +6 -4
  64. package/dist/cjs/components/Button/Button.js.map +1 -1
  65. package/dist/cjs/components/CardScroll/CardScroll.js +3 -1
  66. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  67. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +5 -0
  68. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  69. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js +7 -1
  70. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  71. package/dist/cjs/components/CustomSelect/CustomSelect.js +477 -553
  72. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  73. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +73 -35
  74. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  75. package/dist/cjs/components/Dropdown/Dropdown.js +147 -26
  76. package/dist/cjs/components/Dropdown/Dropdown.js.map +1 -1
  77. package/dist/cjs/components/Epic/Epic.js +1 -6
  78. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  79. package/dist/cjs/components/FocusTrap/FocusTrap.js +9 -10
  80. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  81. package/dist/cjs/components/FormField/FormField.js +4 -10
  82. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  83. package/dist/cjs/components/HorizontalCell/HorizontalCell.js +4 -7
  84. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  85. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +1 -0
  86. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  87. package/dist/cjs/components/Input/Input.js +3 -6
  88. package/dist/cjs/components/Input/Input.js.map +1 -1
  89. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js +2 -2
  90. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  91. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +1 -0
  92. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  93. package/dist/cjs/components/NativeSelect/NativeSelect.js +1 -0
  94. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  95. package/dist/cjs/components/Panel/Panel.js +1 -0
  96. package/dist/cjs/components/Panel/Panel.js.map +1 -1
  97. package/dist/cjs/components/PanelHeader/PanelHeader.js +1 -0
  98. package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
  99. package/dist/cjs/components/Popper/Popper.js +16 -22
  100. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  101. package/dist/cjs/components/PopperArrow/PopperArrow.js +40 -0
  102. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -0
  103. package/dist/cjs/components/Radio/Radio.js +1 -0
  104. package/dist/cjs/components/Radio/Radio.js.map +1 -1
  105. package/dist/cjs/components/RangeSlider/UniversalSlider.js +1 -0
  106. package/dist/cjs/components/RangeSlider/UniversalSlider.js.map +1 -1
  107. package/dist/cjs/components/RichTooltip/RichTooltip.js +6 -15
  108. package/dist/cjs/components/RichTooltip/RichTooltip.js.map +1 -1
  109. package/dist/cjs/components/Select/Select.js +1 -0
  110. package/dist/cjs/components/Select/Select.js.map +1 -1
  111. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +4 -1
  112. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  113. package/dist/cjs/components/SimpleCell/SimpleCell.js +21 -31
  114. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  115. package/dist/cjs/components/Snackbar/Snackbar.js +7 -11
  116. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  117. package/dist/cjs/components/SplitCol/SplitCol.js +7 -1
  118. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  119. package/dist/cjs/components/SplitLayout/SplitLayout.js +5 -8
  120. package/dist/cjs/components/SplitLayout/SplitLayout.js.map +1 -1
  121. package/dist/cjs/components/Tabbar/Tabbar.js +15 -14
  122. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  123. package/dist/cjs/components/TabbarItem/TabbarItem.js +8 -10
  124. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  125. package/dist/cjs/components/Tabs/Tabs.js +23 -5
  126. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  127. package/dist/cjs/components/TabsItem/TabsItem.js +39 -22
  128. package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
  129. package/dist/cjs/components/TextTooltip/TextTooltip.js +6 -9
  130. package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -1
  131. package/dist/cjs/components/Textarea/Textarea.js +5 -4
  132. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  133. package/dist/cjs/components/Tooltip/Tooltip.js +94 -71
  134. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  135. package/dist/cjs/components/Typography/Headline/Headline.js +11 -2
  136. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  137. package/dist/cjs/components/View/View.js +388 -453
  138. package/dist/cjs/components/View/View.js.map +1 -1
  139. package/dist/cjs/components/WriteBar/WriteBar.js +12 -5
  140. package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
  141. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +3 -8
  142. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  143. package/dist/cjs/hoc/withAdaptivity.js.map +1 -1
  144. package/dist/cjs/hoc/withContext.js.map +1 -1
  145. package/dist/cjs/hoc/withPlatform.js.map +1 -1
  146. package/dist/cjs/hooks/useOrientationChange.js +2 -1
  147. package/dist/cjs/hooks/useOrientationChange.js.map +1 -1
  148. package/dist/cjs/tokenized/index.js +104 -0
  149. package/dist/cjs/tokenized/index.js.map +1 -1
  150. package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +1 -1
  151. package/dist/components/AppRoot/AppRoot.d.ts +1 -1
  152. package/dist/components/AppRoot/AppRoot.js +13 -15
  153. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  154. package/dist/components/Button/Button.d.ts +1 -1
  155. package/dist/components/Button/Button.js +6 -4
  156. package/dist/components/Button/Button.js.map +1 -1
  157. package/dist/components/CardGrid/CardGrid.d.ts +1 -1
  158. package/dist/components/CardScroll/CardScroll.js +3 -1
  159. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  160. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  161. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  162. package/dist/components/ChipsSelect/ChipsSelect.js +5 -0
  163. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  164. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  165. package/dist/components/ConfigProvider/ConfigProviderContext.js +3 -0
  166. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  167. package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
  168. package/dist/components/CustomSelect/CustomSelect.js +473 -579
  169. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  170. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -1
  171. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +71 -35
  172. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  173. package/dist/components/DatePicker/DatePicker.d.ts +1 -1
  174. package/dist/components/Dropdown/Dropdown.d.ts +46 -5
  175. package/dist/components/Dropdown/Dropdown.js +137 -27
  176. package/dist/components/Dropdown/Dropdown.js.map +1 -1
  177. package/dist/components/Epic/Epic.d.ts +1 -1
  178. package/dist/components/Epic/Epic.js +1 -4
  179. package/dist/components/Epic/Epic.js.map +1 -1
  180. package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
  181. package/dist/components/FocusTrap/FocusTrap.js +9 -9
  182. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  183. package/dist/components/FormField/FormField.js +4 -8
  184. package/dist/components/FormField/FormField.js.map +1 -1
  185. package/dist/components/Group/Group.d.ts +1 -1
  186. package/dist/components/HorizontalCell/HorizontalCell.js +3 -5
  187. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  188. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  189. package/dist/components/HorizontalScroll/HorizontalScroll.js +1 -0
  190. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  191. package/dist/components/IconButton/IconButton.d.ts +1 -1
  192. package/dist/components/Input/Input.d.ts +1 -1
  193. package/dist/components/Input/Input.js +3 -4
  194. package/dist/components/Input/Input.js.map +1 -1
  195. package/dist/components/MiniInfoCell/MiniInfoCell.js +2 -2
  196. package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  197. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  198. package/dist/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  199. package/dist/components/ModalCardBase/ModalCardBase.js +1 -0
  200. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  201. package/dist/components/ModalPage/ModalPage.d.ts +1 -1
  202. package/dist/components/ModalRoot/ModalRoot.d.ts +1 -1
  203. package/dist/components/ModalRoot/ModalRootAdaptive.d.ts +1 -1
  204. package/dist/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  205. package/dist/components/NativeSelect/NativeSelect.d.ts +1 -1
  206. package/dist/components/NativeSelect/NativeSelect.js +1 -0
  207. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  208. package/dist/components/Panel/Panel.d.ts +1 -1
  209. package/dist/components/Panel/Panel.js +1 -0
  210. package/dist/components/Panel/Panel.js.map +1 -1
  211. package/dist/components/PanelHeader/PanelHeader.d.ts +1 -1
  212. package/dist/components/PanelHeader/PanelHeader.js +1 -0
  213. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  214. package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  215. package/dist/components/PopoutRoot/PopoutRoot.d.ts +1 -1
  216. package/dist/components/Popper/Popper.d.ts +18 -1
  217. package/dist/components/Popper/Popper.js +15 -22
  218. package/dist/components/Popper/Popper.js.map +1 -1
  219. package/dist/components/PopperArrow/PopperArrow.d.ts +8 -0
  220. package/dist/components/PopperArrow/PopperArrow.js +27 -0
  221. package/dist/components/PopperArrow/PopperArrow.js.map +1 -0
  222. package/dist/components/Radio/Radio.d.ts +1 -1
  223. package/dist/components/Radio/Radio.js +1 -0
  224. package/dist/components/Radio/Radio.js.map +1 -1
  225. package/dist/components/RangeSlider/UniversalSlider.d.ts +1 -1
  226. package/dist/components/RangeSlider/UniversalSlider.js +1 -0
  227. package/dist/components/RangeSlider/UniversalSlider.js.map +1 -1
  228. package/dist/components/RichCell/RichCell.d.ts +1 -1
  229. package/dist/components/RichTooltip/RichTooltip.d.ts +7 -2
  230. package/dist/components/RichTooltip/RichTooltip.js +5 -10
  231. package/dist/components/RichTooltip/RichTooltip.js.map +1 -1
  232. package/dist/components/Search/Search.d.ts +1 -1
  233. package/dist/components/Select/Select.d.ts +1 -1
  234. package/dist/components/Select/Select.js +1 -0
  235. package/dist/components/Select/Select.js.map +1 -1
  236. package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  237. package/dist/components/SelectMimicry/SelectMimicry.js +4 -1
  238. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  239. package/dist/components/SimpleCell/SimpleCell.d.ts +1 -1
  240. package/dist/components/SimpleCell/SimpleCell.js +19 -28
  241. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  242. package/dist/components/Snackbar/Snackbar.d.ts +5 -1
  243. package/dist/components/Snackbar/Snackbar.js +8 -11
  244. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  245. package/dist/components/SplitCol/SplitCol.d.ts +1 -0
  246. package/dist/components/SplitCol/SplitCol.js +3 -0
  247. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  248. package/dist/components/SplitLayout/SplitLayout.js +4 -7
  249. package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
  250. package/dist/components/Tabbar/Tabbar.d.ts +8 -1
  251. package/dist/components/Tabbar/Tabbar.js +15 -14
  252. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  253. package/dist/components/TabbarItem/TabbarItem.js +7 -9
  254. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  255. package/dist/components/Tabs/Tabs.d.ts +14 -3
  256. package/dist/components/Tabs/Tabs.js +23 -5
  257. package/dist/components/Tabs/Tabs.js.map +1 -1
  258. package/dist/components/TabsItem/TabsItem.d.ts +22 -1
  259. package/dist/components/TabsItem/TabsItem.js +40 -21
  260. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  261. package/dist/components/Tappable/Tappable.d.ts +1 -1
  262. package/dist/components/TextTooltip/TextTooltip.d.ts +5 -1
  263. package/dist/components/TextTooltip/TextTooltip.js +5 -7
  264. package/dist/components/TextTooltip/TextTooltip.js.map +1 -1
  265. package/dist/components/Textarea/Textarea.d.ts +4 -1
  266. package/dist/components/Textarea/Textarea.js +5 -4
  267. package/dist/components/Textarea/Textarea.js.map +1 -1
  268. package/dist/components/Tooltip/Tooltip.d.ts +18 -1
  269. package/dist/components/Tooltip/Tooltip.js +89 -68
  270. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  271. package/dist/components/Typography/Headline/Headline.d.ts +3 -3
  272. package/dist/components/Typography/Headline/Headline.js +10 -2
  273. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  274. package/dist/components/View/View.d.ts +2 -18
  275. package/dist/components/View/View.js +384 -462
  276. package/dist/components/View/View.js.map +1 -1
  277. package/dist/components/View/ViewInfinite.d.ts +1 -1
  278. package/dist/components/WriteBar/WriteBar.d.ts +5 -1
  279. package/dist/components/WriteBar/WriteBar.js +10 -5
  280. package/dist/components/WriteBar/WriteBar.js.map +1 -1
  281. package/dist/components/WriteBarIcon/WriteBarIcon.js +3 -6
  282. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  283. package/dist/components.css +143 -127
  284. package/dist/components.css.map +1 -1
  285. package/dist/cssm/components/ActionSheet/ActionSheet.css +1 -1
  286. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  287. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.d.ts +1 -1
  288. package/dist/cssm/components/Alert/Alert.css +1 -1
  289. package/dist/cssm/components/AppRoot/AppRoot.css +1 -1
  290. package/dist/cssm/components/AppRoot/AppRoot.d.ts +1 -1
  291. package/dist/cssm/components/AppRoot/AppRoot.js +13 -15
  292. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  293. package/dist/cssm/components/Avatar/Avatar.css +3 -5
  294. package/dist/cssm/components/Badge/Badge.css +3 -3
  295. package/dist/cssm/components/Banner/Banner.css +5 -5
  296. package/dist/cssm/components/BaseGallery/BaseGallery.css +1 -1
  297. package/dist/cssm/components/Button/Button.css +53 -35
  298. package/dist/cssm/components/Button/Button.d.ts +1 -1
  299. package/dist/cssm/components/Button/Button.js +6 -4
  300. package/dist/cssm/components/Button/Button.js.map +1 -1
  301. package/dist/cssm/components/Calendar/Calendar.css +1 -1
  302. package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -1
  303. package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -1
  304. package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -1
  305. package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -1
  306. package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -1
  307. package/dist/cssm/components/Card/Card.css +5 -6
  308. package/dist/cssm/components/CardGrid/CardGrid.css +1 -1
  309. package/dist/cssm/components/CardGrid/CardGrid.d.ts +1 -1
  310. package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
  311. package/dist/cssm/components/CardScroll/CardScroll.js +3 -1
  312. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  313. package/dist/cssm/components/Cell/Cell.css +3 -3
  314. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -1
  315. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -1
  316. package/dist/cssm/components/CellButton/CellButton.css +1 -1
  317. package/dist/cssm/components/Checkbox/Checkbox.css +1 -1
  318. package/dist/cssm/components/Checkbox/Checkbox.d.ts +1 -1
  319. package/dist/cssm/components/Chip/Chip.css +1 -1
  320. package/dist/cssm/components/ChipsInput/ChipsInput.css +1 -1
  321. package/dist/cssm/components/ChipsSelect/ChipsSelect.css +1 -1
  322. package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  323. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +5 -0
  324. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  325. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.d.ts +1 -0
  326. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +3 -0
  327. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  328. package/dist/cssm/components/ContentCard/ContentCard.css +1 -1
  329. package/dist/cssm/components/Counter/Counter.css +31 -31
  330. package/dist/cssm/components/CustomScrollView/CustomScrollView.css +1 -1
  331. package/dist/cssm/components/CustomSelect/CustomSelect.css +1 -1
  332. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +1 -1
  333. package/dist/cssm/components/CustomSelect/CustomSelect.js +473 -579
  334. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  335. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +3 -3
  336. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -1
  337. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +71 -35
  338. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  339. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.css +3 -3
  340. package/dist/cssm/components/DateInput/DateInput.css +1 -1
  341. package/dist/cssm/components/DatePicker/DatePicker.css +1 -1
  342. package/dist/cssm/components/DatePicker/DatePicker.d.ts +1 -1
  343. package/dist/cssm/components/DateRangeInput/DateRangeInput.css +1 -1
  344. package/dist/cssm/components/Dropdown/Dropdown.css +1 -1
  345. package/dist/cssm/components/Dropdown/Dropdown.d.ts +46 -5
  346. package/dist/cssm/components/Dropdown/Dropdown.js +137 -27
  347. package/dist/cssm/components/Dropdown/Dropdown.js.map +1 -1
  348. package/dist/cssm/components/Epic/Epic.css +1 -1
  349. package/dist/cssm/components/Epic/Epic.d.ts +1 -1
  350. package/dist/cssm/components/Epic/Epic.js +1 -4
  351. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  352. package/dist/cssm/components/FixedLayout/FixedLayout.css +1 -1
  353. package/dist/cssm/components/FocusTrap/FocusTrap.d.ts +1 -1
  354. package/dist/cssm/components/FocusTrap/FocusTrap.js +9 -9
  355. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  356. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  357. package/dist/cssm/components/Footer/Footer.css +1 -1
  358. package/dist/cssm/components/FormField/FormField.css +9 -9
  359. package/dist/cssm/components/FormField/FormField.js +4 -8
  360. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  361. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  362. package/dist/cssm/components/FormLayout/FormLayout.css +1 -1
  363. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  364. package/dist/cssm/components/FormStatus/FormStatus.css +1 -1
  365. package/dist/cssm/components/Gradient/Gradient.css +1 -1
  366. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -1
  367. package/dist/cssm/components/Group/Group.css +1 -1
  368. package/dist/cssm/components/Group/Group.d.ts +1 -1
  369. package/dist/cssm/components/Header/Header.css +1 -1
  370. package/dist/cssm/components/HorizontalCell/HorizontalCell.css +1 -1
  371. package/dist/cssm/components/HorizontalCell/HorizontalCell.js +3 -5
  372. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  373. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.css +1 -1
  374. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  375. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +1 -0
  376. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  377. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +3 -3
  378. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  379. package/dist/cssm/components/IconButton/IconButton.d.ts +1 -1
  380. package/dist/cssm/components/InfoRow/InfoRow.css +1 -1
  381. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -1
  382. package/dist/cssm/components/Input/Input.css +1 -1
  383. package/dist/cssm/components/Input/Input.d.ts +1 -1
  384. package/dist/cssm/components/Input/Input.js +3 -4
  385. package/dist/cssm/components/Input/Input.js.map +1 -1
  386. package/dist/cssm/components/InputLike/InputLike.css +1 -1
  387. package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -1
  388. package/dist/cssm/components/Link/Link.css +1 -1
  389. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.css +1 -1
  390. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +2 -2
  391. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  392. package/dist/cssm/components/ModalCard/ModalCard.css +1 -1
  393. package/dist/cssm/components/ModalCard/ModalCard.d.ts +1 -1
  394. package/dist/cssm/components/ModalCardBase/ModalCardBase.css +3 -3
  395. package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  396. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +1 -0
  397. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  398. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.css +1 -1
  399. package/dist/cssm/components/ModalPage/ModalPage.css +1 -1
  400. package/dist/cssm/components/ModalPage/ModalPage.d.ts +1 -1
  401. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.css +1 -1
  402. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  403. package/dist/cssm/components/ModalRoot/ModalRoot.d.ts +1 -1
  404. package/dist/cssm/components/ModalRoot/ModalRootAdaptive.d.ts +1 -1
  405. package/dist/cssm/components/ModalRoot/ModalRootDesktop.d.ts +1 -1
  406. package/dist/cssm/components/NativeSelect/NativeSelect.d.ts +1 -1
  407. package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -0
  408. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  409. package/dist/cssm/components/Pagination/Pagination.css +1 -1
  410. package/dist/cssm/components/Panel/Panel.css +1 -1
  411. package/dist/cssm/components/Panel/Panel.d.ts +1 -1
  412. package/dist/cssm/components/Panel/Panel.js +1 -0
  413. package/dist/cssm/components/Panel/Panel.js.map +1 -1
  414. package/dist/cssm/components/PanelHeader/PanelHeader.css +1 -1
  415. package/dist/cssm/components/PanelHeader/PanelHeader.d.ts +1 -1
  416. package/dist/cssm/components/PanelHeader/PanelHeader.js +1 -0
  417. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  418. package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  419. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.css +1 -1
  420. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  421. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.css +1 -1
  422. package/dist/cssm/components/Placeholder/Placeholder.css +3 -3
  423. package/dist/cssm/components/PopoutRoot/PopoutRoot.css +1 -1
  424. package/dist/cssm/components/PopoutRoot/PopoutRoot.d.ts +1 -1
  425. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.css +1 -1
  426. package/dist/cssm/components/Popper/Popper.css +1 -1
  427. package/dist/cssm/components/Popper/Popper.d.ts +18 -1
  428. package/dist/cssm/components/Popper/Popper.js +15 -22
  429. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  430. package/dist/cssm/components/PopperArrow/PopperArrow.css +1 -0
  431. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +8 -0
  432. package/dist/cssm/components/PopperArrow/PopperArrow.js +28 -0
  433. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -0
  434. package/dist/cssm/components/Progress/Progress.css +1 -1
  435. package/dist/cssm/components/PromoBanner/PromoBanner.css +1 -1
  436. package/dist/cssm/components/PullToRefresh/PullToRefresh.css +3 -3
  437. package/dist/cssm/components/Radio/Radio.css +1 -1
  438. package/dist/cssm/components/Radio/Radio.d.ts +1 -1
  439. package/dist/cssm/components/Radio/Radio.js +1 -0
  440. package/dist/cssm/components/Radio/Radio.js.map +1 -1
  441. package/dist/cssm/components/RadioGroup/RadioGroup.css +1 -1
  442. package/dist/cssm/components/RangeSlider/UniversalSlider.d.ts +1 -1
  443. package/dist/cssm/components/RangeSlider/UniversalSlider.js +1 -0
  444. package/dist/cssm/components/RangeSlider/UniversalSlider.js.map +1 -1
  445. package/dist/cssm/components/Removable/Removable.css +1 -1
  446. package/dist/cssm/components/RichCell/RichCell.css +3 -3
  447. package/dist/cssm/components/RichCell/RichCell.d.ts +1 -1
  448. package/dist/cssm/components/RichTooltip/RichTooltip.css +3 -1
  449. package/dist/cssm/components/RichTooltip/RichTooltip.d.ts +7 -2
  450. package/dist/cssm/components/RichTooltip/RichTooltip.js +5 -10
  451. package/dist/cssm/components/RichTooltip/RichTooltip.js.map +1 -1
  452. package/dist/cssm/components/Root/Root.css +1 -1
  453. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.css +1 -1
  454. package/dist/cssm/components/Search/Search.css +1 -1
  455. package/dist/cssm/components/Search/Search.d.ts +1 -1
  456. package/dist/cssm/components/SegmentedControl/SegmentedControl.css +1 -1
  457. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +1 -1
  458. package/dist/cssm/components/Select/Select.css +1 -1
  459. package/dist/cssm/components/Select/Select.d.ts +1 -1
  460. package/dist/cssm/components/Select/Select.js +1 -0
  461. package/dist/cssm/components/Select/Select.js.map +1 -1
  462. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  463. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +4 -1
  464. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  465. package/dist/cssm/components/Separator/Separator.css +1 -1
  466. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  467. package/dist/cssm/components/SimpleCell/SimpleCell.d.ts +1 -1
  468. package/dist/cssm/components/SimpleCell/SimpleCell.js +19 -28
  469. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  470. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -1
  471. package/dist/cssm/components/Slider/Slider.css +3 -3
  472. package/dist/cssm/components/SliderSwitch/SliderSwitch.css +1 -1
  473. package/dist/cssm/components/Snackbar/Snackbar.css +1 -1
  474. package/dist/cssm/components/Snackbar/Snackbar.d.ts +5 -1
  475. package/dist/cssm/components/Snackbar/Snackbar.js +8 -11
  476. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  477. package/dist/cssm/components/Spacing/Spacing.css +1 -1
  478. package/dist/cssm/components/Spinner/Spinner.css +1 -1
  479. package/dist/cssm/components/SplitCol/SplitCol.css +1 -1
  480. package/dist/cssm/components/SplitCol/SplitCol.d.ts +1 -0
  481. package/dist/cssm/components/SplitCol/SplitCol.js +3 -0
  482. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  483. package/dist/cssm/components/SplitLayout/SplitLayout.css +1 -1
  484. package/dist/cssm/components/SplitLayout/SplitLayout.js +4 -7
  485. package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
  486. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.css +1 -1
  487. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.css +1 -1
  488. package/dist/cssm/components/Switch/Switch.css +3 -3
  489. package/dist/cssm/components/Tabbar/Tabbar.css +5 -3
  490. package/dist/cssm/components/Tabbar/Tabbar.d.ts +8 -1
  491. package/dist/cssm/components/Tabbar/Tabbar.js +15 -14
  492. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  493. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  494. package/dist/cssm/components/TabbarItem/TabbarItem.js +7 -9
  495. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  496. package/dist/cssm/components/Tabs/Tabs.css +1 -1
  497. package/dist/cssm/components/Tabs/Tabs.d.ts +14 -3
  498. package/dist/cssm/components/Tabs/Tabs.js +23 -5
  499. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  500. package/dist/cssm/components/TabsItem/TabsItem.css +5 -1
  501. package/dist/cssm/components/TabsItem/TabsItem.d.ts +22 -1
  502. package/dist/cssm/components/TabsItem/TabsItem.js +40 -21
  503. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  504. package/dist/cssm/components/Tappable/Tappable.css +5 -5
  505. package/dist/cssm/components/Tappable/Tappable.d.ts +1 -1
  506. package/dist/cssm/components/TextTooltip/TextTooltip.css +1 -1
  507. package/dist/cssm/components/TextTooltip/TextTooltip.d.ts +5 -1
  508. package/dist/cssm/components/TextTooltip/TextTooltip.js +5 -7
  509. package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -1
  510. package/dist/cssm/components/Textarea/Textarea.css +1 -1
  511. package/dist/cssm/components/Textarea/Textarea.d.ts +4 -1
  512. package/dist/cssm/components/Textarea/Textarea.js +5 -4
  513. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  514. package/dist/cssm/components/Tooltip/Tooltip.css +1 -1
  515. package/dist/cssm/components/Tooltip/Tooltip.d.ts +18 -1
  516. package/dist/cssm/components/Tooltip/Tooltip.js +89 -68
  517. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  518. package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
  519. package/dist/cssm/components/Typography/Footnote/Footnote.css +1 -1
  520. package/dist/cssm/components/Typography/Headline/Headline.css +1 -1
  521. package/dist/cssm/components/Typography/Headline/Headline.d.ts +3 -3
  522. package/dist/cssm/components/Typography/Headline/Headline.js +10 -2
  523. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  524. package/dist/cssm/components/Typography/Paragraph/Paragraph.css +1 -1
  525. package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
  526. package/dist/cssm/components/Typography/Text/Text.css +1 -1
  527. package/dist/cssm/components/Typography/Title/Title.css +1 -1
  528. package/dist/cssm/components/UsersStack/UsersStack.css +5 -5
  529. package/dist/cssm/components/View/View.css +1 -1
  530. package/dist/cssm/components/View/View.d.ts +2 -18
  531. package/dist/cssm/components/View/View.js +384 -462
  532. package/dist/cssm/components/View/View.js.map +1 -1
  533. package/dist/cssm/components/View/ViewIOS.css +1 -1
  534. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  535. package/dist/cssm/components/VisuallyHiddenInput/VisuallyHiddenInput.css +1 -1
  536. package/dist/cssm/components/WriteBar/WriteBar.css +3 -1
  537. package/dist/cssm/components/WriteBar/WriteBar.d.ts +5 -1
  538. package/dist/cssm/components/WriteBar/WriteBar.js +10 -5
  539. package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
  540. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.css +1 -1
  541. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +3 -6
  542. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  543. package/dist/cssm/fonts/fonts.css +1 -1
  544. package/dist/cssm/hoc/withAdaptivity.d.ts +1 -1
  545. package/dist/cssm/hoc/withAdaptivity.js.map +1 -1
  546. package/dist/cssm/hoc/withContext.d.ts +1 -1
  547. package/dist/cssm/hoc/withContext.js.map +1 -1
  548. package/dist/cssm/hoc/withPlatform.d.ts +1 -1
  549. package/dist/cssm/hoc/withPlatform.js.map +1 -1
  550. package/dist/cssm/hooks/useOrientationChange.js +2 -1
  551. package/dist/cssm/hooks/useOrientationChange.js.map +1 -1
  552. package/dist/cssm/lib/calendar.d.ts +2 -2
  553. package/dist/cssm/styles/animations.css +1 -1
  554. package/dist/cssm/styles/bright_light.css +1 -1
  555. package/dist/cssm/styles/common.css +1 -1
  556. package/dist/cssm/styles/components.css +143 -127
  557. package/dist/cssm/styles/constants.css +3 -10
  558. package/dist/cssm/styles/space_gray.css +1 -1
  559. package/dist/cssm/styles/themes.css +1 -16
  560. package/dist/cssm/styles/unstable.css +3 -1
  561. package/dist/cssm/styles/vkcom_dark.css +1 -6
  562. package/dist/cssm/styles/vkcom_light.css +1 -11
  563. package/dist/cssm/tokenized/index.d.ts +26 -0
  564. package/dist/cssm/tokenized/index.js +13 -0
  565. package/dist/cssm/tokenized/index.js.map +1 -1
  566. package/dist/default_scheme.css +1 -1
  567. package/dist/default_scheme.css.map +1 -1
  568. package/dist/fonts.css +1 -1
  569. package/dist/fonts.css.map +1 -1
  570. package/dist/hoc/withAdaptivity.d.ts +1 -1
  571. package/dist/hoc/withAdaptivity.js.map +1 -1
  572. package/dist/hoc/withContext.d.ts +1 -1
  573. package/dist/hoc/withContext.js.map +1 -1
  574. package/dist/hoc/withPlatform.d.ts +1 -1
  575. package/dist/hoc/withPlatform.js.map +1 -1
  576. package/dist/hooks/useOrientationChange.js +2 -1
  577. package/dist/hooks/useOrientationChange.js.map +1 -1
  578. package/dist/lib/calendar.d.ts +2 -2
  579. package/dist/tokenized/index.d.ts +26 -0
  580. package/dist/tokenized/index.js +13 -0
  581. package/dist/tokenized/index.js.map +1 -1
  582. package/dist/unstable.css +3 -1
  583. package/dist/unstable.css.map +1 -1
  584. package/dist/vkui.css +144 -143
  585. package/dist/vkui.css.map +1 -1
  586. package/package.json +6 -5
  587. package/src/components/AppRoot/AppRoot.tsx +15 -11
  588. package/src/components/Badge/Badge.css +0 -5
  589. package/src/components/Button/Button.css +0 -4
  590. package/src/components/Button/Button.tsx +4 -2
  591. package/src/components/Button/Readme.md +30 -59
  592. package/src/components/CardScroll/CardScroll.tsx +1 -1
  593. package/src/components/Cell/Cell.css +3 -2
  594. package/src/components/ChipsInput/ChipsInput.css +2 -0
  595. package/src/components/ChipsSelect/ChipsSelect.tsx +8 -0
  596. package/src/components/ConfigProvider/ConfigProviderContext.tsx +2 -0
  597. package/src/components/Counter/Counter.css +30 -0
  598. package/src/components/CustomScrollView/CustomScrollView.css +10 -5
  599. package/src/components/CustomSelect/CustomSelect.tsx +543 -573
  600. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +45 -22
  601. package/src/components/Dropdown/Dropdown.css +12 -0
  602. package/src/components/Dropdown/Dropdown.tsx +174 -20
  603. package/src/components/Dropdown/Readme.md +1 -0
  604. package/src/components/Epic/Epic.tsx +1 -4
  605. package/src/components/FixedLayout/Readme.md +103 -109
  606. package/src/components/FocusTrap/FocusTrap.tsx +10 -10
  607. package/src/components/FormField/FormField.css +31 -22
  608. package/src/components/FormField/FormField.tsx +4 -8
  609. package/src/components/FormField/Readme.md +9 -82
  610. package/src/components/Group/Group.css +1 -1
  611. package/src/components/Group/Readme.md +1 -1
  612. package/src/components/HorizontalCell/HorizontalCell.css +25 -43
  613. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -9
  614. package/src/components/HorizontalScroll/HorizontalScroll.css +23 -0
  615. package/src/components/HorizontalScroll/HorizontalScroll.tsx +2 -0
  616. package/src/components/IconButton/IconButton.css +46 -25
  617. package/src/components/Input/Input.css +20 -9
  618. package/src/components/Input/Input.tsx +6 -5
  619. package/src/components/Input/Readme.md +128 -24
  620. package/src/components/MiniInfoCell/MiniInfoCell.css +13 -3
  621. package/src/components/MiniInfoCell/MiniInfoCell.tsx +3 -3
  622. package/src/components/ModalCardBase/ModalCardBase.tsx +2 -0
  623. package/src/components/NativeSelect/NativeSelect.tsx +2 -0
  624. package/src/components/Panel/Panel.tsx +2 -0
  625. package/src/components/PanelHeader/PanelHeader.tsx +2 -0
  626. package/src/components/Popper/Popper.css +0 -35
  627. package/src/components/Popper/Popper.tsx +33 -25
  628. package/src/components/PopperArrow/PopperArrow.css +34 -0
  629. package/src/components/PopperArrow/PopperArrow.tsx +40 -0
  630. package/src/components/Radio/Radio.tsx +2 -0
  631. package/src/components/RangeSlider/UniversalSlider.tsx +2 -0
  632. package/src/components/RichTooltip/RichTooltip.css +44 -4
  633. package/src/components/RichTooltip/RichTooltip.tsx +9 -11
  634. package/src/components/ScreenSpinner/ScreenSpinner.css +1 -1
  635. package/src/components/Select/Select.css +23 -9
  636. package/src/components/Select/Select.tsx +2 -0
  637. package/src/components/SelectMimicry/SelectMimicry.tsx +6 -2
  638. package/src/components/SimpleCell/Readme.md +115 -129
  639. package/src/components/SimpleCell/SimpleCell.css +30 -68
  640. package/src/components/SimpleCell/SimpleCell.tsx +23 -25
  641. package/src/components/Snackbar/Readme.md +95 -123
  642. package/src/components/Snackbar/Snackbar.css +18 -27
  643. package/src/components/Snackbar/Snackbar.tsx +17 -11
  644. package/src/components/SplitCol/SplitCol.css +1 -1
  645. package/src/components/SplitCol/SplitCol.tsx +2 -0
  646. package/src/components/SplitLayout/SplitLayout.css +3 -7
  647. package/src/components/SplitLayout/SplitLayout.tsx +9 -6
  648. package/src/components/Switch/Switch.css +6 -2
  649. package/src/components/Tabbar/Tabbar.css +4 -1
  650. package/src/components/Tabbar/Tabbar.tsx +23 -12
  651. package/src/components/TabbarItem/TabbarItem.css +7 -5
  652. package/src/components/TabbarItem/TabbarItem.tsx +13 -7
  653. package/src/components/Tabs/Readme.md +191 -251
  654. package/src/components/Tabs/Tabs.css +27 -80
  655. package/src/components/Tabs/Tabs.tsx +45 -7
  656. package/src/components/TabsItem/Readme.md +1 -0
  657. package/src/components/TabsItem/TabsItem.css +191 -106
  658. package/src/components/TabsItem/TabsItem.tsx +72 -20
  659. package/src/components/TextTooltip/TextTooltip.css +41 -11
  660. package/src/components/TextTooltip/TextTooltip.tsx +9 -13
  661. package/src/components/Textarea/Textarea.css +7 -3
  662. package/src/components/Textarea/Textarea.tsx +5 -4
  663. package/src/components/Tooltip/Readme.md +128 -101
  664. package/src/components/Tooltip/Tooltip.css +29 -40
  665. package/src/components/Tooltip/Tooltip.tsx +98 -66
  666. package/src/components/Typography/Headline/Headline.tsx +15 -1
  667. package/src/components/View/Readme.md +2 -0
  668. package/src/components/View/View.tsx +451 -514
  669. package/src/components/WriteBar/WriteBar.css +27 -33
  670. package/src/components/WriteBar/WriteBar.tsx +16 -5
  671. package/src/components/WriteBarIcon/WriteBarIcon.css +6 -19
  672. package/src/components/WriteBarIcon/WriteBarIcon.tsx +6 -6
  673. package/src/hoc/withAdaptivity.tsx +4 -4
  674. package/src/hoc/withContext.tsx +1 -1
  675. package/src/hoc/withPlatform.tsx +1 -1
  676. package/src/hooks/useOrientationChange.ts +1 -0
  677. package/src/styles/components.css +1 -0
  678. package/src/styles/constants.css +8 -0
  679. package/src/tokenized/index.ts +39 -0
  680. package/tsconfig.json +1 -1
  681. package/.cache/ts/src/components/ClickPopper/ClickPopper.d.ts +0 -21
  682. package/dist/cjs/components/ClickPopper/ClickPopper.js +0 -96
  683. package/dist/cjs/components/ClickPopper/ClickPopper.js.map +0 -1
  684. package/dist/components/ClickPopper/ClickPopper.d.ts +0 -21
  685. package/dist/components/ClickPopper/ClickPopper.js +0 -71
  686. package/dist/components/ClickPopper/ClickPopper.js.map +0 -1
  687. package/dist/cssm/components/ClickPopper/ClickPopper.d.ts +0 -21
  688. package/dist/cssm/components/ClickPopper/ClickPopper.js +0 -71
  689. package/dist/cssm/components/ClickPopper/ClickPopper.js.map +0 -1
  690. package/src/components/ClickPopper/ClickPopper.tsx +0 -86
@@ -31,109 +31,100 @@ import { Tooltip, Button } from "@vkontakte/vkui";
31
31
  О возможностях тултипа можно прочитать в описании свойств и методов.
32
32
 
33
33
  ```jsx
34
- class Example extends React.Component {
35
- constructor() {
36
- this.state = {
37
- tooltip: true,
38
- tooltip2: true,
39
- tooltip3: false,
40
- activePanel: "tooltip",
41
- };
42
- }
43
-
44
- render() {
45
- return (
46
- <View activePanel={this.state.activePanel}>
47
- <Panel id="tooltip">
48
- <PanelHeader>Tooltip</PanelHeader>
49
- <Group>
50
- <List>
51
- <SimpleCell>Музыка</SimpleCell>
52
- <SimpleCell>Видео</SimpleCell>
53
- <SimpleCell>Игры</SimpleCell>
54
- <SimpleCell>Закладки</SimpleCell>
55
- <SimpleCell>Документы</SimpleCell>
56
- <SimpleCell>Денежные переводы</SimpleCell>
57
- </List>
58
- </Group>
59
- <Group>
34
+ const Example = () => {
35
+ const [tooltip, setTooltip] = React.useState(true);
36
+ const [tooltip2, setTooltip2] = React.useState(true);
37
+ const [tooltip3, setTooltip3] = React.useState(false);
38
+ const [activePanel, setActivePanel] = React.useState("tooltip");
39
+
40
+ return (
41
+ <View activePanel={activePanel}>
42
+ <Panel id="tooltip">
43
+ <PanelHeader>Tooltip</PanelHeader>
44
+ <Group>
45
+ <List>
46
+ <SimpleCell>Музыка</SimpleCell>
47
+ <SimpleCell>Видео</SimpleCell>
48
+ <SimpleCell>Игры</SimpleCell>
49
+ <SimpleCell>Закладки</SimpleCell>
50
+ <SimpleCell>Документы</SimpleCell>
51
+ <SimpleCell>Денежные переводы</SimpleCell>
52
+ </List>
53
+ </Group>
54
+ <Group>
55
+ <Tooltip
56
+ mode="light"
57
+ text="У нас тут brand new функционал подвезли. Зацените!"
58
+ isShown={tooltip}
59
+ onClose={() => setTooltip(false)}
60
+ offsetX={10}
61
+ >
62
+ <SimpleCell onClick={() => setActivePanel("tooltip2")}>
63
+ VK Pay
64
+ </SimpleCell>
65
+ </Tooltip>
66
+ </Group>
67
+ </Panel>
68
+
69
+ <Panel id="tooltip2">
70
+ <PanelHeader
71
+ before={
60
72
  <Tooltip
61
- mode="light"
62
- text= нас тут brand new функционал подвезли. Зацените!"
63
- isShown={this.state.tooltip}
64
- onClose={() => this.setState({ tooltip: false })}
65
- offsetX={10}
73
+ isShown={tooltip2}
74
+ onClose={() => {
75
+ setTooltip2(false);
76
+ setTooltip3(true);
77
+ }}
78
+ text="Нажмите на кнопку, если хотите вернуться"
79
+ header="Назад"
66
80
  >
67
- <SimpleCell
68
- onClick={() => this.setState({ activePanel: "tooltip2" })}
69
- >
70
- VK Pay
71
- </SimpleCell>
81
+ <PanelHeaderBack onClick={() => setActivePanel("tooltip")} />
72
82
  </Tooltip>
73
- </Group>
74
- </Panel>
75
-
76
- <Panel id="tooltip2">
77
- <PanelHeader
78
- before={
79
- <Tooltip
80
- isShown={this.state.tooltip2}
81
- onClose={() =>
82
- this.setState({ tooltip2: false, tooltip3: true })
83
- }
84
- text="Нажмите на кнопку, если хотите вернуться"
85
- header="Назад"
86
- >
87
- <PanelHeaderBack
88
- onClick={() => this.setState({ activePanel: "tooltip" })}
89
- />
90
- </Tooltip>
91
- }
92
- >
93
- Tooltip
94
- </PanelHeader>
95
- <Group>
96
- <List>
97
- <SimpleCell
98
- before={
99
- <Tooltip
100
- text="Теперь у нас появились аватарки в списках. Правда круто?"
101
- isShown={this.state.tooltip3}
102
- onClose={() => this.setState({ tooltip3: false })}
103
- cornerOffset={-6}
104
- >
105
- <Avatar />
106
- </Tooltip>
107
- }
108
- description="Веб-сайт"
109
- >
110
- Команда ВКонтакте
111
- </SimpleCell>
112
- <SimpleCell before={<Avatar />} description="Музыкант">
113
- Robbie Williams
114
- </SimpleCell>
115
- <SimpleCell before={<Avatar />} description="Издательский дом">
116
- ПостНаука
117
- </SimpleCell>
118
- <SimpleCell before={<Avatar />} description="Издательский дом">
119
- ПостНаука
120
- </SimpleCell>
121
- <SimpleCell before={<Avatar />} description="Издательский дом">
122
- ПостНаука
123
- </SimpleCell>
124
- <SimpleCell before={<Avatar />} description="Издательский дом">
125
- ПостНаука
126
- </SimpleCell>
127
- <SimpleCell before={<Avatar />} description="Издательский дом">
128
- ПостНаука
129
- </SimpleCell>
130
- </List>
131
- </Group>
132
- </Panel>
133
- </View>
134
- );
135
- }
136
- }
83
+ }
84
+ >
85
+ Tooltip
86
+ </PanelHeader>
87
+ <Group>
88
+ <List>
89
+ <SimpleCell
90
+ before={
91
+ <Tooltip
92
+ text="Теперь у нас появились аватарки в списках. Правда круто?"
93
+ isShown={tooltip3}
94
+ onClose={() => setTooltip3(false)}
95
+ cornerOffset={-6}
96
+ >
97
+ <Avatar />
98
+ </Tooltip>
99
+ }
100
+ description="Веб-сайт"
101
+ >
102
+ Команда ВКонтакте
103
+ </SimpleCell>
104
+ <SimpleCell before={<Avatar />} description="Музыкант">
105
+ Robbie Williams
106
+ </SimpleCell>
107
+ <SimpleCell before={<Avatar />} description="Издательский дом">
108
+ ПостНаука
109
+ </SimpleCell>
110
+ <SimpleCell before={<Avatar />} description="Издательский дом">
111
+ ПостНаука
112
+ </SimpleCell>
113
+ <SimpleCell before={<Avatar />} description="Издательский дом">
114
+ ПостНаука
115
+ </SimpleCell>
116
+ <SimpleCell before={<Avatar />} description="Издательский дом">
117
+ ПостНаука
118
+ </SimpleCell>
119
+ <SimpleCell before={<Avatar />} description="Издательский дом">
120
+ ПостНаука
121
+ </SimpleCell>
122
+ </List>
123
+ </Group>
124
+ </Panel>
125
+ </View>
126
+ );
127
+ };
137
128
 
138
129
  const ExampleWithPlatform = withPlatform(Example);
139
130
 
@@ -147,7 +138,7 @@ const ExampleWithPlatform = withPlatform(Example);
147
138
  - в скроллящемся контейнере — замените какой-нибудь элемент, внутри которого нет скролла, на `<TooltipContainer>` и добавьте ему `position: relative` (или другую не-static).
148
139
  - внутри `position: fixed` — `<TooltipContainer fixed>`
149
140
 
150
- ```jsx { "props": { "layout": false, "frame": true } }
141
+ ```jsx { "props": { "layout": false } }
151
142
  <>
152
143
  <TooltipContainer style={{ minHeight: "120vh" }}>
153
144
  <Tooltip text="Я скроллюсь">
@@ -249,3 +240,39 @@ const ExampleWithPlatform = withPlatform(Example);
249
240
  </TooltipContainer>
250
241
  </>
251
242
  ```
243
+
244
+ ## Цветовые варианты
245
+
246
+ ```jsx { "props": { "layout": false } }
247
+ <TooltipContainer>
248
+ <Tooltip placement="right" text={`appearance="accent"`} appearance="accent">
249
+ <div style={{ width: 50, margin: 10 }}>
250
+ <Avatar />
251
+ </div>
252
+ </Tooltip>
253
+ <Tooltip placement="right" text={`appearance="neutral"`} appearance="neutral">
254
+ <div style={{ width: 50, margin: 10 }}>
255
+ <Avatar />
256
+ </div>
257
+ </Tooltip>
258
+ <Tooltip placement="right" text={`appearance="white`} appearance="white">
259
+ <div style={{ width: 50, margin: 10 }}>
260
+ <Avatar />
261
+ </div>
262
+ </Tooltip>
263
+ <Tooltip placement="right" text={`appearance="black"`} appearance="black">
264
+ <div style={{ width: 50, margin: 10 }}>
265
+ <Avatar />
266
+ </div>
267
+ </Tooltip>
268
+ <Tooltip
269
+ placement="right"
270
+ text={`appearance="inversion"`}
271
+ appearance="inversion"
272
+ >
273
+ <div style={{ width: 50, margin: 10 }}>
274
+ <Avatar />
275
+ </div>
276
+ </Tooltip>
277
+ </TooltipContainer>
278
+ ```
@@ -12,62 +12,51 @@
12
12
  position: absolute;
13
13
  }
14
14
 
15
- .Tooltip__container[data-popper-placement^="bottom"] .Tooltip__corner {
16
- top: -8px;
17
- }
18
-
19
- .Tooltip__container[data-popper-placement^="top"] .Tooltip__corner {
20
- bottom: -8px;
21
- }
22
-
23
- .Tooltip__container[data-popper-placement^="top"] .Tooltip__corner::before {
24
- transform: rotate(180deg);
15
+ .Tooltip__content {
16
+ background-color: var(--vkui--color_background_modal);
17
+ box-shadow: var(--vkui--elevation3);
18
+ padding: 9px 12px 10px;
19
+ border-radius: var(--vkui--size_border_radius--regular);
20
+ color: var(--vkui--color_text_primary);
21
+ max-width: 220px;
25
22
  }
26
23
 
27
- .Tooltip__container[data-popper-placement^="left"] .Tooltip__corner {
28
- right: -14px;
24
+ .Tooltip__arrow {
25
+ color: var(--vkui--color_background_modal);
29
26
  }
30
27
 
31
- .Tooltip__container[data-popper-placement^="left"] .Tooltip__corner::before {
32
- transform: rotate(90deg);
28
+ .Tooltip--accent .Tooltip__content {
29
+ background-color: var(--vkui--color_background_accent_tint);
30
+ color: var(--vkui--color_text_contrast);
33
31
  }
34
32
 
35
- .Tooltip__container[data-popper-placement^="right"] .Tooltip__corner {
36
- left: -14px;
33
+ .Tooltip--accent .Tooltip__arrow {
34
+ color: var(--vkui--color_background_accent_tint);
37
35
  }
38
36
 
39
- .Tooltip__container[data-popper-placement^="right"] .Tooltip__corner::before {
40
- transform: rotate(-90deg);
37
+ .Tooltip--white .Tooltip__content {
38
+ background-color: var(--vkui--color_background_contrast);
39
+ color: var(--vkui--color_text_primary_invariably);
41
40
  }
42
41
 
43
- .Tooltip__corner {
44
- width: 20px;
45
- height: 8px;
46
- position: absolute;
42
+ .Tooltip--white .Tooltip__arrow {
43
+ color: var(--vkui--color_background_contrast);
47
44
  }
48
45
 
49
- .Tooltip__corner::before {
50
- content: "";
51
- display: block;
52
- background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDIwIDgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+dG9vbHRpcF90aXA8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4gICAgPGRlZnM+PC9kZWZzPiAgICA8ZyBpZD0iTWFzdGVyLUtpdCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+ICAgICAgICA8cGF0aCBkPSJNMTAsMCBDMTMuNSwwIDE1LjUsOCAyMCw4IEwwLDggQzQuNSw4IDYuNSwwIDEwLDAgWiIgaWQ9InRvb2x0aXBfdGlwIiBmaWxsPSIjNDdhM2ZmIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4gICAgPC9nPjwvc3ZnPg==");
53
- width: 20px;
54
- height: 8px;
46
+ .Tooltip--black .Tooltip__content {
47
+ background-color: var(--vkui--color_background_contrast_inverse);
48
+ color: var(--vkui--color_text_contrast);
55
49
  }
56
50
 
57
- .Tooltip--light .Tooltip__corner::before {
58
- background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIyMHB4IiBoZWlnaHQ9IjhweCIgdmlld0JveD0iMCAwIDIwIDgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+dG9vbHRpcF90aXA8L3RpdGxlPiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4gICAgPGRlZnM+PC9kZWZzPiAgICA8ZyBpZD0iTWFzdGVyLUtpdCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+ICAgICAgICA8cGF0aCBkPSJNMTAsMCBDMTMuNSwwIDE1LjUsOCAyMCw4IEwwLDggQzQuNSw4IDYuNSwwIDEwLDAgWiIgaWQ9InRvb2x0aXBfdGlwIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4gICAgPC9nPjwvc3ZnPg==");
51
+ .Tooltip--black .Tooltip__arrow {
52
+ color: var(--vkui--color_background_contrast_inverse);
59
53
  }
60
54
 
61
- .Tooltip__content {
62
- background-color: #47a3ff;
63
- box-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.16), 0 0 4px 0 rgba(0, 0, 0, 0.04);
64
- padding: 8px 12px 10px;
65
- border-radius: 10px;
66
- color: #fff;
67
- max-width: 220px;
55
+ .Tooltip--inversion .Tooltip__content {
56
+ background-color: var(--vkui--color_background_modal_inverse);
57
+ color: var(--vkui--color_text_contrast_themed);
68
58
  }
69
59
 
70
- .Tooltip--light .Tooltip__content {
71
- background: #fff;
72
- color: #2c2d2e;
60
+ .Tooltip--inversion .Tooltip__arrow {
61
+ color: var(--vkui--color_background_modal_inverse);
73
62
  }
@@ -4,6 +4,7 @@ import { classNames } from "../../lib/classNames";
4
4
  import { getClassName } from "../../helpers/getClassName";
5
5
  import { Subhead } from "../Typography/Subhead/Subhead";
6
6
  import { useNavTransition } from "../NavTransitionContext/NavTransitionContext";
7
+ import { PopperArrow } from "../PopperArrow/PopperArrow";
7
8
  import { Modifier, usePopper } from "react-popper";
8
9
  import { Placement } from "@popperjs/core";
9
10
  import { tooltipContainerAttr } from "./TooltipContainer";
@@ -11,13 +12,13 @@ import { useExternRef } from "../../hooks/useExternRef";
11
12
  import { useDOM } from "../../lib/dom";
12
13
  import { warnOnce } from "../../lib/warnOnce";
13
14
  import { hasReactNode } from "../../lib/utils";
15
+ import { prefixClass } from "../../lib/prefixClass";
14
16
  import { useGlobalEventListener } from "../../hooks/useGlobalEventListener";
15
17
  import { HasRootRef } from "../../types";
16
18
  import "./Tooltip.css";
17
19
 
18
20
  interface SimpleTooltipProps extends Partial<TooltipProps> {
19
21
  target?: HTMLDivElement;
20
- arrowRef?: React.Ref<HTMLDivElement>;
21
22
  style?: {
22
23
  arrow: React.CSSProperties;
23
24
  container: React.CSSProperties;
@@ -40,26 +41,27 @@ const IS_DEV = process.env.NODE_ENV === "development";
40
41
 
41
42
  const SimpleTooltip = React.forwardRef<HTMLDivElement, SimpleTooltipProps>(
42
43
  function SimpleTooltip(
43
- { mode = "accent", header, text, arrowRef, style = {}, attributes },
44
+ { appearance = "accent", header, text, arrow, style = {}, attributes },
44
45
  ref
45
46
  ) {
46
47
  return (
47
- <div vkuiClass={classNames(baseClassName, `Tooltip--${mode}`)}>
48
+ <div vkuiClass={classNames(baseClassName, `Tooltip--${appearance}`)}>
48
49
  <div
49
50
  vkuiClass="Tooltip__container"
50
51
  ref={ref}
51
52
  style={style.container}
52
53
  {...attributes?.container}
53
54
  >
54
- <div
55
- vkuiClass="Tooltip__corner"
56
- style={style.arrow}
57
- {...attributes?.arrow}
58
- ref={arrowRef}
59
- />
55
+ {arrow && (
56
+ <PopperArrow
57
+ style={style.arrow}
58
+ attributes={attributes?.arrow}
59
+ arrowClassName={prefixClass("Tooltip__arrow")}
60
+ />
61
+ )}
60
62
  <div vkuiClass="Tooltip__content">
61
63
  {header && (
62
- <Subhead weight="1" vkuiClass="Tooltip__title">
64
+ <Subhead weight="2" vkuiClass="Tooltip__title">
63
65
  {header}
64
66
  </Subhead>
65
67
  )}
@@ -80,7 +82,15 @@ export interface TooltipProps {
80
82
  children:
81
83
  | React.ReactElement<HasRootRef<any>>
82
84
  | React.ReactElement<React.PropsWithRef<any>>;
85
+ /**
86
+ * @deprecated будет удалено в 5.0.0, устанавливать стиль следует через appearance
87
+ * Стиль отображения подсказки
88
+ */
83
89
  mode?: "accent" | "light";
90
+ /**
91
+ * Стиль отображения подсказки
92
+ */
93
+ appearance?: "accent" | "neutral" | "white" | "black" | "inversion";
84
94
  /**
85
95
  * Если передан `false`, то рисуется просто `children`.
86
96
  */
@@ -111,6 +121,10 @@ export interface TooltipProps {
111
121
  * Сдвиг по вертикали (относительно портала, в котором рисуется тултип).
112
122
  */
113
123
  offsetY?: number;
124
+ /**
125
+ * Отображать ли стрелку, указывающую на якорный элемент
126
+ */
127
+ arrow?: boolean;
114
128
  /**
115
129
  * Сдвиг стрелочки относительно центра дочернего элемента.
116
130
  */
@@ -123,16 +137,12 @@ export interface TooltipProps {
123
137
  * Callback, который вызывается при клике по любому месту в пределах экрана.
124
138
  */
125
139
  onClose?: () => void;
140
+ /**
141
+ * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства
142
+ */
143
+ placement?: Placement;
126
144
  }
127
145
 
128
- declare type ArrowOffsetModifierOptions = {
129
- offset: number;
130
- };
131
- declare type ArrowOffsetModifier = Modifier<
132
- "arrowOffset",
133
- ArrowOffsetModifierOptions
134
- >;
135
-
136
146
  function mapAlignX(x: TooltipProps["alignX"]) {
137
147
  switch (x) {
138
148
  case "left":
@@ -155,6 +165,21 @@ function isVerticalPlacement(placement: Placement) {
155
165
  return placement.startsWith("top") || placement.startsWith("bottom");
156
166
  }
157
167
 
168
+ /**
169
+ * Вычисляем стиль подсказки: параметр appearance имеет приоритет, иначе мапим mode на подходящее значение из appearance
170
+ * TODO: v5 избавиться от пропа mode и этого метода, для appearance по умолчанию сделать "accent"
171
+ */
172
+ function calculateAppearance(
173
+ mode: TooltipProps["mode"],
174
+ appearance: TooltipProps["appearance"]
175
+ ): TooltipProps["appearance"] {
176
+ if (appearance) {
177
+ return appearance;
178
+ }
179
+
180
+ return mode === "light" ? "white" : "accent";
181
+ }
182
+
158
183
  /**
159
184
  * @see https://vkcom.github.io/VKUI/#/Tooltip
160
185
  */
@@ -169,13 +194,14 @@ export const Tooltip = ({
169
194
  cornerOffset = 0,
170
195
  cornerAbsoluteOffset,
171
196
  mode = "accent",
197
+ appearance,
198
+ arrow = true,
199
+ placement,
172
200
  ...restProps
173
201
  }: TooltipProps) => {
174
202
  const { entering } = useNavTransition();
175
203
  const isShown = _isShown && !entering;
176
204
  const [tooltipRef, setTooltipRef] = React.useState<HTMLElement | null>(null);
177
- const [tooltipArrowRef, setTooltipArrowRef] =
178
- React.useState<HTMLElement | null>(null);
179
205
  const [target, setTarget] = React.useState<HTMLElement>();
180
206
 
181
207
  if (IS_DEV) {
@@ -215,62 +241,66 @@ export const Tooltip = ({
215
241
  );
216
242
  }
217
243
 
218
- const arrowOffsetModifier = React.useMemo<ArrowOffsetModifier>(() => {
219
- return {
220
- name: "arrowOffset",
221
- enabled: true,
222
- phase: "main",
223
- fn({ state }) {
224
- if (!state.modifiersData.arrow) {
225
- return;
226
- }
227
- if (isVerticalPlacement(state.placement)) {
228
- if (cornerAbsoluteOffset !== undefined) {
229
- state.modifiersData.arrow.x = cornerAbsoluteOffset;
230
- } else {
231
- if (state.modifiersData.arrow?.x !== undefined) {
232
- state.modifiersData.arrow.x += cornerOffset;
233
- }
234
- }
235
- } else {
236
- if (cornerAbsoluteOffset !== undefined) {
237
- state.modifiersData.arrow.y = cornerAbsoluteOffset;
238
- } else {
239
- if (state.modifiersData.arrow?.y !== undefined) {
240
- state.modifiersData.arrow.y += cornerOffset;
241
- }
242
- }
243
- }
244
- },
245
- };
246
- }, [cornerOffset, cornerAbsoluteOffset]);
247
-
248
- const placement = getPlacement(alignX, alignY);
249
- const { styles, attributes } = usePopper(target, tooltipRef, {
250
- strategy,
251
- placement,
252
- modifiers: [
244
+ const modifiers = React.useMemo(() => {
245
+ const modifiers: Array<Modifier<string>> = [
253
246
  {
254
247
  name: "offset",
255
248
  options: {
256
249
  offset: [offsetX, offsetY],
257
250
  },
258
251
  },
259
- {
260
- name: "arrow",
261
- options: {
262
- element: tooltipArrowRef,
263
- padding: 14,
264
- },
265
- },
266
252
  {
267
253
  name: "preventOverflow",
268
254
  },
269
255
  {
270
256
  name: "flip",
271
257
  },
272
- arrowOffsetModifier,
273
- ],
258
+ ];
259
+
260
+ if (arrow) {
261
+ modifiers.push({
262
+ name: "arrow",
263
+ options: {
264
+ padding: 14,
265
+ },
266
+ });
267
+ modifiers.push({
268
+ name: "arrowOffset",
269
+ enabled: true,
270
+ phase: "main",
271
+ fn({ state }) {
272
+ if (!state.modifiersData.arrow) {
273
+ return;
274
+ }
275
+ if (isVerticalPlacement(state.placement)) {
276
+ if (cornerAbsoluteOffset !== undefined) {
277
+ state.modifiersData.arrow.x = cornerAbsoluteOffset;
278
+ } else {
279
+ if (state.modifiersData.arrow?.x !== undefined) {
280
+ state.modifiersData.arrow.x += cornerOffset;
281
+ }
282
+ }
283
+ } else {
284
+ if (cornerAbsoluteOffset !== undefined) {
285
+ state.modifiersData.arrow.y = cornerAbsoluteOffset;
286
+ } else {
287
+ if (state.modifiersData.arrow?.y !== undefined) {
288
+ state.modifiersData.arrow.y += cornerOffset;
289
+ }
290
+ }
291
+ }
292
+ },
293
+ });
294
+ }
295
+
296
+ return modifiers;
297
+ }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY]);
298
+
299
+ const _placement = placement ?? getPlacement(alignX, alignY);
300
+ const { styles, attributes } = usePopper(target, tooltipRef, {
301
+ strategy,
302
+ placement: _placement,
303
+ modifiers,
274
304
  });
275
305
 
276
306
  const { document } = useDOM();
@@ -289,6 +319,8 @@ export const Tooltip = ({
289
319
  })
290
320
  : children;
291
321
 
322
+ const _appearance = calculateAppearance(mode, appearance);
323
+
292
324
  return (
293
325
  <React.Fragment>
294
326
  {child}
@@ -297,9 +329,9 @@ export const Tooltip = ({
297
329
  ReactDOM.createPortal(
298
330
  <SimpleTooltip
299
331
  {...restProps}
300
- mode={mode}
332
+ appearance={_appearance}
333
+ arrow={arrow}
301
334
  ref={(el) => setTooltipRef(el)}
302
- arrowRef={(el) => setTooltipArrowRef(el)}
303
335
  style={{ arrow: styles.arrow, container: styles.popper }}
304
336
  attributes={{
305
337
  arrow: attributes.arrow ?? null,
@@ -1,13 +1,15 @@
1
1
  import * as React from "react";
2
- import { HasComponent } from "../../../types";
2
+ import { HasComponent, HasRootRef } from "../../../types";
3
3
  import { usePlatform } from "../../../hooks/usePlatform";
4
4
  import { useAdaptivity } from "../../../hooks/useAdaptivity";
5
5
  import { classNames } from "../../../lib/classNames";
6
+ import { warnOnce } from "../../../lib/warnOnce";
6
7
  import { getClassName } from "../../../helpers/getClassName";
7
8
  import "./Headline.css";
8
9
 
9
10
  export interface HeadlineProps
10
11
  extends React.AllHTMLAttributes<HTMLElement>,
12
+ HasRootRef<HTMLElement>,
11
13
  HasComponent {
12
14
  /**
13
15
  * Задаёт начертание шрифта отличное от стандартного.
@@ -18,6 +20,8 @@ export interface HeadlineProps
18
20
  level?: "1" | "2";
19
21
  }
20
22
 
23
+ const warn = warnOnce("Headline");
24
+
21
25
  /**
22
26
  * @see https://vkcom.github.io/VKUI/#/Headline
23
27
  */
@@ -26,14 +30,24 @@ export const Headline = ({
26
30
  weight = "3",
27
31
  level = "1",
28
32
  Component = "h3", // TODO: v5 h4
33
+ getRootRef,
29
34
  ...restProps
30
35
  }: HeadlineProps) => {
31
36
  const platform = usePlatform();
32
37
  const { sizeY } = useAdaptivity();
33
38
 
39
+ if (
40
+ process.env.NODE_ENV === "development" &&
41
+ typeof Component !== "string" &&
42
+ getRootRef
43
+ ) {
44
+ warn("getRootRef может использоваться только с элементами DOM", "error");
45
+ }
46
+
34
47
  return (
35
48
  <Component
36
49
  {...restProps}
50
+ ref={getRootRef}
37
51
  vkuiClass={classNames(
38
52
  getClassName("Headline", platform), // TODO: v5 remove
39
53
  `Headline--sizeY-${sizeY}`, // TODO: новая адаптивность