@vkontakte/vkui 5.1.0 → 5.2.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 (516) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +118 -0
  3. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  4. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  5. package/dist/cjs/components/AppRoot/AppRoot.js +7 -4
  6. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  7. package/dist/cjs/components/Avatar/Avatar.d.ts +1 -1
  8. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  9. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  10. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  11. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  12. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  13. package/dist/cjs/components/Checkbox/Checkbox.d.ts +3 -2
  14. package/dist/cjs/components/Checkbox/Checkbox.js +12 -2
  15. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  16. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +0 -4
  17. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  18. package/dist/cjs/components/ContentCard/ContentCard.js +2 -1
  19. package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
  20. package/dist/cjs/components/CustomSelect/CustomSelect.js +11 -7
  21. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  22. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  23. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +21 -72
  24. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  25. package/dist/cjs/components/DateInput/DateInput.d.ts +3 -2
  26. package/dist/cjs/components/DateInput/DateInput.js +3 -3
  27. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  28. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  29. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +3 -2
  30. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  31. package/dist/cjs/components/Epic/Epic.js +1 -1
  32. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  33. package/dist/cjs/components/FixedLayout/FixedLayout.js +2 -2
  34. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  35. package/dist/cjs/components/FormField/FormField.js +6 -10
  36. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  37. package/dist/cjs/components/IconButton/IconButton.js +9 -0
  38. package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
  39. package/dist/cjs/components/ModalCard/ModalCard.d.ts +1 -1
  40. package/dist/cjs/components/ModalCard/ModalCard.js +4 -2
  41. package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
  42. package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  43. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +9 -2
  44. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  45. package/dist/cjs/components/ModalPage/ModalPage.d.ts +2 -6
  46. package/dist/cjs/components/ModalPage/ModalPage.js +13 -7
  47. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  48. package/dist/cjs/components/ModalRoot/ModalRoot.js +1 -2
  49. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  50. package/dist/cjs/components/NativeSelect/NativeSelect.d.ts +1 -1
  51. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  52. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  53. package/dist/cjs/components/PanelHeader/PanelHeader.js +18 -4
  54. package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
  55. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  56. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  57. package/dist/cjs/components/Popover/Popover.js +4 -1
  58. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  59. package/dist/cjs/components/Popper/Popper.d.ts +12 -9
  60. package/dist/cjs/components/Popper/Popper.js +92 -119
  61. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  62. package/dist/cjs/components/PopperArrow/PopperArrow.d.ts +15 -5
  63. package/dist/cjs/components/PopperArrow/PopperArrow.js +44 -17
  64. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
  65. package/dist/cjs/components/Progress/Progress.js +3 -1
  66. package/dist/cjs/components/Progress/Progress.js.map +1 -1
  67. package/dist/cjs/components/Root/Root.js +2 -2
  68. package/dist/cjs/components/Root/Root.js.map +1 -1
  69. package/dist/cjs/components/Select/Select.d.ts +1 -5
  70. package/dist/cjs/components/Select/Select.js +13 -41
  71. package/dist/cjs/components/Select/Select.js.map +1 -1
  72. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  73. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  74. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  75. package/dist/cjs/components/SelectTypography/SelectTypography.d.ts +11 -0
  76. package/dist/cjs/components/SelectTypography/SelectTypography.js +48 -0
  77. package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -0
  78. package/dist/cjs/components/Slider/Slider.d.ts +1 -1
  79. package/dist/cjs/components/Slider/Slider.js +4 -3
  80. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  81. package/dist/cjs/components/Spacing/Spacing.js +2 -1
  82. package/dist/cjs/components/Spacing/Spacing.js.map +1 -1
  83. package/dist/cjs/components/SplitCol/SplitCol.d.ts +0 -6
  84. package/dist/cjs/components/SplitCol/SplitCol.js +3 -11
  85. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  86. package/dist/cjs/components/SplitCol/SplitColContext.d.ts +7 -0
  87. package/dist/cjs/components/SplitCol/SplitColContext.js +18 -0
  88. package/dist/cjs/components/SplitCol/SplitColContext.js.map +1 -0
  89. package/dist/cjs/components/Switch/Switch.js +2 -3
  90. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  91. package/dist/cjs/components/TabbarItem/TabbarItem.js +9 -0
  92. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  93. package/dist/cjs/components/Tabs/Tabs.js +6 -15
  94. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  95. package/dist/cjs/components/Tooltip/Tooltip.d.ts +3 -3
  96. package/dist/cjs/components/Tooltip/Tooltip.js +116 -151
  97. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  98. package/dist/cjs/components/Touch/Touch.js +4 -4
  99. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  100. package/dist/cjs/components/View/View.js +2 -2
  101. package/dist/cjs/components/View/View.js.map +1 -1
  102. package/dist/cjs/components/View/ViewInfinite.d.ts +1 -1
  103. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  104. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  105. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +10 -8
  106. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  107. package/dist/cjs/index.d.ts +37 -30
  108. package/dist/cjs/index.js +13 -13
  109. package/dist/cjs/index.js.map +1 -1
  110. package/dist/cjs/lib/floating/adapters.d.ts +2 -0
  111. package/dist/cjs/lib/floating/adapters.js +63 -0
  112. package/dist/cjs/lib/floating/adapters.js.map +1 -0
  113. package/dist/cjs/lib/floating/functions.d.ts +10 -0
  114. package/dist/cjs/lib/floating/functions.js +36 -0
  115. package/dist/cjs/lib/floating/functions.js.map +1 -0
  116. package/dist/cjs/lib/floating/index.d.ts +4 -0
  117. package/dist/cjs/lib/floating/index.js +75 -0
  118. package/dist/cjs/lib/floating/index.js.map +1 -0
  119. package/dist/cjs/lib/floating/types.d.ts +4 -0
  120. package/dist/cjs/lib/floating/types.js +6 -0
  121. package/dist/cjs/lib/floating/types.js.map +1 -0
  122. package/dist/cjs/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  123. package/dist/cjs/lib/warnOnce.d.ts +7 -0
  124. package/dist/cjs/lib/warnOnce.js +14 -0
  125. package/dist/cjs/lib/warnOnce.js.map +1 -1
  126. package/dist/cjs/shared/breakpoints.d.ts +2 -2
  127. package/dist/cjs/shared/breakpoints.js +12 -13
  128. package/dist/cjs/shared/breakpoints.js.map +1 -1
  129. package/dist/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  130. package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  131. package/dist/components/AppRoot/AppRoot.js +7 -4
  132. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  133. package/dist/components/Avatar/Avatar.d.ts +1 -1
  134. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  135. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  136. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  137. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  138. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  139. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  140. package/dist/components/Checkbox/Checkbox.js +12 -2
  141. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  142. package/dist/components/ChipsSelect/ChipsSelect.js +0 -4
  143. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  144. package/dist/components/ContentCard/ContentCard.js +2 -1
  145. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  146. package/dist/components/CustomSelect/CustomSelect.js +12 -8
  147. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  148. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  149. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  150. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  151. package/dist/components/DateInput/DateInput.d.ts +3 -2
  152. package/dist/components/DateInput/DateInput.js +3 -3
  153. package/dist/components/DateInput/DateInput.js.map +1 -1
  154. package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  155. package/dist/components/DateRangeInput/DateRangeInput.js +3 -2
  156. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  157. package/dist/components/Epic/Epic.js +1 -1
  158. package/dist/components/Epic/Epic.js.map +1 -1
  159. package/dist/components/FixedLayout/FixedLayout.js +1 -1
  160. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  161. package/dist/components/FormField/FormField.js +6 -10
  162. package/dist/components/FormField/FormField.js.map +1 -1
  163. package/dist/components/IconButton/IconButton.js +9 -0
  164. package/dist/components/IconButton/IconButton.js.map +1 -1
  165. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  166. package/dist/components/ModalCard/ModalCard.js +4 -2
  167. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  168. package/dist/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  169. package/dist/components/ModalCardBase/ModalCardBase.js +9 -2
  170. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  171. package/dist/components/ModalPage/ModalPage.d.ts +2 -6
  172. package/dist/components/ModalPage/ModalPage.js +13 -7
  173. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  174. package/dist/components/ModalRoot/ModalRoot.js +1 -2
  175. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  176. package/dist/components/NativeSelect/NativeSelect.d.ts +1 -1
  177. package/dist/components/NativeSelect/NativeSelect.js +1 -1
  178. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  179. package/dist/components/PanelHeader/PanelHeader.js +18 -4
  180. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  181. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  182. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  183. package/dist/components/Popover/Popover.js +4 -1
  184. package/dist/components/Popover/Popover.js.map +1 -1
  185. package/dist/components/Popper/Popper.d.ts +12 -9
  186. package/dist/components/Popper/Popper.js +93 -120
  187. package/dist/components/Popper/Popper.js.map +1 -1
  188. package/dist/components/PopperArrow/PopperArrow.d.ts +15 -5
  189. package/dist/components/PopperArrow/PopperArrow.js +40 -15
  190. package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
  191. package/dist/components/Progress/Progress.js +3 -1
  192. package/dist/components/Progress/Progress.js.map +1 -1
  193. package/dist/components/Root/Root.js +1 -1
  194. package/dist/components/Root/Root.js.map +1 -1
  195. package/dist/components/Select/Select.d.ts +1 -5
  196. package/dist/components/Select/Select.js +12 -39
  197. package/dist/components/Select/Select.js.map +1 -1
  198. package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  199. package/dist/components/SelectMimicry/SelectMimicry.js +1 -1
  200. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  201. package/dist/components/SelectTypography/SelectTypography.d.ts +11 -0
  202. package/dist/components/SelectTypography/SelectTypography.js +39 -0
  203. package/dist/components/SelectTypography/SelectTypography.js.map +1 -0
  204. package/dist/components/Slider/Slider.d.ts +1 -1
  205. package/dist/components/Slider/Slider.js +4 -3
  206. package/dist/components/Slider/Slider.js.map +1 -1
  207. package/dist/components/Spacing/Spacing.js +2 -1
  208. package/dist/components/Spacing/Spacing.js.map +1 -1
  209. package/dist/components/SplitCol/SplitCol.d.ts +0 -6
  210. package/dist/components/SplitCol/SplitCol.js +1 -7
  211. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  212. package/dist/components/SplitCol/SplitColContext.d.ts +7 -0
  213. package/dist/components/SplitCol/SplitColContext.js +9 -0
  214. package/dist/components/SplitCol/SplitColContext.js.map +1 -0
  215. package/dist/components/Switch/Switch.js +2 -3
  216. package/dist/components/Switch/Switch.js.map +1 -1
  217. package/dist/components/TabbarItem/TabbarItem.js +9 -0
  218. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  219. package/dist/components/Tabs/Tabs.js +6 -15
  220. package/dist/components/Tabs/Tabs.js.map +1 -1
  221. package/dist/components/Tooltip/Tooltip.d.ts +3 -3
  222. package/dist/components/Tooltip/Tooltip.js +116 -151
  223. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  224. package/dist/components/Touch/Touch.js +4 -4
  225. package/dist/components/Touch/Touch.js.map +1 -1
  226. package/dist/components/View/View.js +1 -1
  227. package/dist/components/View/View.js.map +1 -1
  228. package/dist/components/View/ViewInfinite.d.ts +1 -1
  229. package/dist/components/View/ViewInfinite.js +1 -1
  230. package/dist/components/View/ViewInfinite.js.map +1 -1
  231. package/dist/components/WriteBarIcon/WriteBarIcon.js +11 -9
  232. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  233. package/dist/components.css +142 -2
  234. package/dist/components.css.map +1 -1
  235. package/dist/components.js.tmp +61921 -4
  236. package/dist/cssm/components/ActionSheet/ActionSheet.module.css +1 -1
  237. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
  238. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  239. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  240. package/dist/cssm/components/Alert/Alert.module.css +1 -1
  241. package/dist/cssm/components/AppRoot/AppRoot.js +7 -4
  242. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  243. package/dist/cssm/components/AppRoot/AppRoot.module.css +1 -1
  244. package/dist/cssm/components/Avatar/Avatar.d.ts +1 -1
  245. package/dist/cssm/components/Avatar/Avatar.module.css +1 -1
  246. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadge.module.css +1 -1
  247. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  248. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  249. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  250. package/dist/cssm/components/Badge/Badge.module.css +1 -1
  251. package/dist/cssm/components/Banner/Banner.module.css +1 -1
  252. package/dist/cssm/components/BaseGallery/BaseGallery.module.css +1 -1
  253. package/dist/cssm/components/Button/Button.module.css +1 -1
  254. package/dist/cssm/components/ButtonGroup/ButtonGroup.module.css +1 -1
  255. package/dist/cssm/components/Calendar/Calendar.module.css +1 -1
  256. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +1 -1
  257. package/dist/cssm/components/CalendarDays/CalendarDays.module.css +1 -1
  258. package/dist/cssm/components/CalendarHeader/CalendarHeader.module.css +1 -1
  259. package/dist/cssm/components/CalendarRange/CalendarRange.module.css +1 -1
  260. package/dist/cssm/components/CalendarTime/CalendarTime.module.css +1 -1
  261. package/dist/cssm/components/Card/Card.module.css +2 -2
  262. package/dist/cssm/components/CardGrid/CardGrid.module.css +1 -1
  263. package/dist/cssm/components/CardScroll/CardScroll.module.css +1 -1
  264. package/dist/cssm/components/Cell/Cell.module.css +1 -1
  265. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  266. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  267. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.module.css +1 -1
  268. package/dist/cssm/components/Cell/CellDragger/CellDragger.module.css +1 -1
  269. package/dist/cssm/components/CellButton/CellButton.module.css +1 -1
  270. package/dist/cssm/components/Checkbox/Checkbox.d.ts +3 -2
  271. package/dist/cssm/components/Checkbox/Checkbox.js +12 -2
  272. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  273. package/dist/cssm/components/Checkbox/Checkbox.module.css +1 -1
  274. package/dist/cssm/components/Chip/Chip.module.css +1 -1
  275. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.module.css +1 -1
  276. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +0 -4
  277. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  278. package/dist/cssm/components/ChipsSelect/ChipsSelect.module.css +1 -1
  279. package/dist/cssm/components/ContentCard/ContentCard.js +2 -1
  280. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  281. package/dist/cssm/components/ContentCard/ContentCard.module.css +1 -1
  282. package/dist/cssm/components/Counter/Counter.module.css +1 -1
  283. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +1 -1
  284. package/dist/cssm/components/CustomSelect/CustomSelect.js +12 -8
  285. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  286. package/dist/cssm/components/CustomSelect/CustomSelect.module.css +1 -1
  287. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  288. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  289. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  290. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.module.css +1 -1
  291. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +1 -1
  292. package/dist/cssm/components/DateInput/DateInput.d.ts +3 -2
  293. package/dist/cssm/components/DateInput/DateInput.js +4 -3
  294. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  295. package/dist/cssm/components/DateInput/DateInput.module.css +1 -1
  296. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  297. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +3 -2
  298. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  299. package/dist/cssm/components/DateRangeInput/DateRangeInput.module.css +1 -1
  300. package/dist/cssm/components/Div/Div.module.css +1 -1
  301. package/dist/cssm/components/Epic/Epic.js +1 -1
  302. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  303. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
  304. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  305. package/dist/cssm/components/FixedLayout/FixedLayout.module.css +1 -1
  306. package/dist/cssm/components/FocusVisible/FocusVisible.module.css +1 -1
  307. package/dist/cssm/components/Footer/Footer.module.css +1 -1
  308. package/dist/cssm/components/FormField/FormField.js +6 -10
  309. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  310. package/dist/cssm/components/FormField/FormField.module.css +1 -1
  311. package/dist/cssm/components/FormItem/FormItem.module.css +1 -1
  312. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.module.css +1 -1
  313. package/dist/cssm/components/FormStatus/FormStatus.module.css +1 -1
  314. package/dist/cssm/components/Gradient/Gradient.module.css +1 -1
  315. package/dist/cssm/components/Group/Group.module.css +1 -1
  316. package/dist/cssm/components/Header/Header.module.css +1 -1
  317. package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +1 -1
  318. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.module.css +1 -1
  319. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.module.css +1 -1
  320. package/dist/cssm/components/IconButton/IconButton.js +9 -0
  321. package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
  322. package/dist/cssm/components/IconButton/IconButton.module.css +1 -1
  323. package/dist/cssm/components/ImageBase/ImageBase.module.css +1 -1
  324. package/dist/cssm/components/ImageBase/ImageBaseBadge/ImageBaseBadge.module.css +1 -1
  325. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +1 -1
  326. package/dist/cssm/components/InfoRow/InfoRow.module.css +1 -1
  327. package/dist/cssm/components/Input/Input.module.css +1 -1
  328. package/dist/cssm/components/InputLike/InputLike.module.css +1 -1
  329. package/dist/cssm/components/InputLike/InputLikeDivider.module.css +1 -1
  330. package/dist/cssm/components/Link/Link.module.css +1 -1
  331. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.module.css +1 -1
  332. package/dist/cssm/components/ModalCard/ModalCard.d.ts +1 -1
  333. package/dist/cssm/components/ModalCard/ModalCard.js +4 -2
  334. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  335. package/dist/cssm/components/ModalCard/ModalCard.module.css +1 -1
  336. package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  337. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +9 -2
  338. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  339. package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +1 -1
  340. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.module.css +1 -1
  341. package/dist/cssm/components/ModalPage/ModalPage.d.ts +2 -6
  342. package/dist/cssm/components/ModalPage/ModalPage.js +13 -7
  343. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  344. package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -1
  345. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.module.css +1 -1
  346. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -2
  347. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  348. package/dist/cssm/components/ModalRoot/ModalRoot.module.css +1 -1
  349. package/dist/cssm/components/NativeSelect/NativeSelect.d.ts +1 -1
  350. package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -1
  351. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  352. package/dist/cssm/components/Pagination/Pagination.module.css +1 -1
  353. package/dist/cssm/components/Panel/Panel.module.css +1 -1
  354. package/dist/cssm/components/PanelHeader/PanelHeader.js +18 -4
  355. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  356. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +1 -1
  357. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  358. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  359. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +1 -1
  360. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.module.css +1 -1
  361. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.module.css +1 -1
  362. package/dist/cssm/components/Placeholder/Placeholder.module.css +1 -1
  363. package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +1 -1
  364. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +1 -1
  365. package/dist/cssm/components/Popover/Popover.js +4 -1
  366. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  367. package/dist/cssm/components/Popover/Popover.module.css +1 -1
  368. package/dist/cssm/components/Popper/Popper.d.ts +12 -9
  369. package/dist/cssm/components/Popper/Popper.js +93 -120
  370. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  371. package/dist/cssm/components/Popper/Popper.module.css +1 -1
  372. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +15 -5
  373. package/dist/cssm/components/PopperArrow/PopperArrow.js +40 -15
  374. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
  375. package/dist/cssm/components/PopperArrow/PopperArrow.module.css +1 -1
  376. package/dist/cssm/components/Progress/Progress.js +3 -1
  377. package/dist/cssm/components/Progress/Progress.js.map +1 -1
  378. package/dist/cssm/components/Progress/Progress.module.css +1 -1
  379. package/dist/cssm/components/PromoBanner/PromoBanner.module.css +1 -1
  380. package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +1 -1
  381. package/dist/cssm/components/Radio/Radio.module.css +1 -1
  382. package/dist/cssm/components/RadioGroup/RadioGroup.module.css +1 -1
  383. package/dist/cssm/components/Removable/Removable.module.css +1 -1
  384. package/dist/cssm/components/RichCell/RichCell.module.css +1 -1
  385. package/dist/cssm/components/RichTooltip/RichTooltip.module.css +1 -1
  386. package/dist/cssm/components/Root/Root.js +1 -1
  387. package/dist/cssm/components/Root/Root.js.map +1 -1
  388. package/dist/cssm/components/Root/Root.module.css +1 -1
  389. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +1 -1
  390. package/dist/cssm/components/Search/Search.module.css +1 -1
  391. package/dist/cssm/components/SegmentedControl/SegmentedControl.module.css +1 -1
  392. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
  393. package/dist/cssm/components/Select/Select.d.ts +1 -5
  394. package/dist/cssm/components/Select/Select.js +12 -39
  395. package/dist/cssm/components/Select/Select.js.map +1 -1
  396. package/dist/cssm/components/Select/Select.module.css +1 -1
  397. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  398. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -1
  399. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  400. package/dist/cssm/components/SelectTypography/SelectTypography.d.ts +11 -0
  401. package/dist/cssm/components/SelectTypography/SelectTypography.js +40 -0
  402. package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -0
  403. package/dist/cssm/components/SelectTypography/SelectTypography.module.css +1 -0
  404. package/dist/cssm/components/Separator/Separator.module.css +1 -1
  405. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +1 -1
  406. package/dist/cssm/components/Slider/Slider.d.ts +1 -1
  407. package/dist/cssm/components/Slider/Slider.js +4 -3
  408. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  409. package/dist/cssm/components/Slider/Slider.module.css +1 -1
  410. package/dist/cssm/components/Snackbar/Snackbar.module.css +1 -1
  411. package/dist/cssm/components/Spacing/Spacing.js +2 -1
  412. package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
  413. package/dist/cssm/components/Spacing/Spacing.module.css +1 -1
  414. package/dist/cssm/components/Spinner/Spinner.module.css +1 -1
  415. package/dist/cssm/components/SplitCol/SplitCol.d.ts +0 -6
  416. package/dist/cssm/components/SplitCol/SplitCol.js +1 -7
  417. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  418. package/dist/cssm/components/SplitCol/SplitCol.module.css +1 -1
  419. package/dist/cssm/components/SplitCol/SplitColContext.d.ts +7 -0
  420. package/dist/cssm/components/SplitCol/SplitColContext.js +9 -0
  421. package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -0
  422. package/dist/cssm/components/SplitLayout/SplitLayout.module.css +1 -1
  423. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.module.css +1 -1
  424. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +1 -1
  425. package/dist/cssm/components/Switch/Switch.js +2 -3
  426. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  427. package/dist/cssm/components/Switch/Switch.module.css +1 -1
  428. package/dist/cssm/components/Tabbar/Tabbar.module.css +1 -1
  429. package/dist/cssm/components/TabbarItem/TabbarItem.js +9 -0
  430. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  431. package/dist/cssm/components/TabbarItem/TabbarItem.module.css +1 -1
  432. package/dist/cssm/components/Tabs/Tabs.js +6 -15
  433. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  434. package/dist/cssm/components/Tabs/Tabs.module.css +1 -1
  435. package/dist/cssm/components/TabsItem/TabsItem.module.css +1 -1
  436. package/dist/cssm/components/Tappable/Tappable.module.css +1 -1
  437. package/dist/cssm/components/TextTooltip/TextTooltip.module.css +1 -1
  438. package/dist/cssm/components/Textarea/Textarea.module.css +1 -1
  439. package/dist/cssm/components/Tooltip/Tooltip.d.ts +3 -3
  440. package/dist/cssm/components/Tooltip/Tooltip.js +122 -151
  441. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  442. package/dist/cssm/components/Tooltip/Tooltip.module.css +1 -1
  443. package/dist/cssm/components/Touch/Touch.js +4 -4
  444. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  445. package/dist/cssm/components/Typography/Caption/Caption.module.css +1 -1
  446. package/dist/cssm/components/Typography/Footnote/Footnote.module.css +1 -1
  447. package/dist/cssm/components/Typography/Headline/Headline.module.css +1 -1
  448. package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +1 -1
  449. package/dist/cssm/components/Typography/Subhead/Subhead.module.css +1 -1
  450. package/dist/cssm/components/Typography/Text/Text.module.css +1 -1
  451. package/dist/cssm/components/Typography/Title/Title.module.css +1 -1
  452. package/dist/cssm/components/UsersStack/UsersStack.module.css +1 -1
  453. package/dist/cssm/components/View/View.js +1 -1
  454. package/dist/cssm/components/View/View.js.map +1 -1
  455. package/dist/cssm/components/View/View.module.css +1 -1
  456. package/dist/cssm/components/View/ViewIOS.module.css +1 -1
  457. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  458. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  459. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  460. package/dist/cssm/components/WriteBar/WriteBar.module.css +1 -1
  461. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +11 -9
  462. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  463. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.module.css +1 -1
  464. package/dist/cssm/index.d.ts +37 -30
  465. package/dist/cssm/index.js +24 -18
  466. package/dist/cssm/index.js.map +1 -1
  467. package/dist/cssm/lib/floating/adapters.d.ts +2 -0
  468. package/dist/cssm/lib/floating/adapters.js +56 -0
  469. package/dist/cssm/lib/floating/adapters.js.map +1 -0
  470. package/dist/cssm/lib/floating/functions.d.ts +10 -0
  471. package/dist/cssm/lib/floating/functions.js +28 -0
  472. package/dist/cssm/lib/floating/functions.js.map +1 -0
  473. package/dist/cssm/lib/floating/index.d.ts +4 -0
  474. package/dist/cssm/lib/floating/index.js +4 -0
  475. package/dist/cssm/lib/floating/index.js.map +1 -0
  476. package/dist/cssm/lib/floating/types.d.ts +4 -0
  477. package/dist/cssm/lib/floating/types.js +2 -0
  478. package/dist/cssm/lib/floating/types.js.map +1 -0
  479. package/dist/cssm/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  480. package/dist/cssm/lib/warnOnce.d.ts +7 -0
  481. package/dist/cssm/lib/warnOnce.js +12 -0
  482. package/dist/cssm/lib/warnOnce.js.map +1 -1
  483. package/dist/cssm/shared/breakpoints.d.ts +2 -2
  484. package/dist/cssm/shared/breakpoints.js +12 -13
  485. package/dist/cssm/shared/breakpoints.js.map +1 -1
  486. package/dist/cssm/styles/adaptivity.module.css +1 -1
  487. package/dist/cssm/styles/common.css +1 -1
  488. package/dist/cssm/styles/themes.css +1 -1
  489. package/dist/index.d.ts +37 -30
  490. package/dist/index.js +22 -16
  491. package/dist/index.js.map +1 -1
  492. package/dist/lib/floating/adapters.d.ts +2 -0
  493. package/dist/lib/floating/adapters.js +56 -0
  494. package/dist/lib/floating/adapters.js.map +1 -0
  495. package/dist/lib/floating/functions.d.ts +10 -0
  496. package/dist/lib/floating/functions.js +28 -0
  497. package/dist/lib/floating/functions.js.map +1 -0
  498. package/dist/lib/floating/index.d.ts +4 -0
  499. package/dist/lib/floating/index.js +4 -0
  500. package/dist/lib/floating/index.js.map +1 -0
  501. package/dist/lib/floating/types.d.ts +4 -0
  502. package/dist/lib/floating/types.js +2 -0
  503. package/dist/lib/floating/types.js.map +1 -0
  504. package/dist/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  505. package/dist/lib/warnOnce.d.ts +7 -0
  506. package/dist/lib/warnOnce.js +12 -0
  507. package/dist/lib/warnOnce.js.map +1 -1
  508. package/dist/shared/breakpoints.d.ts +2 -2
  509. package/dist/shared/breakpoints.js +12 -13
  510. package/dist/shared/breakpoints.js.map +1 -1
  511. package/dist/stable.js.tmp +69 -21
  512. package/dist/vkui.css +143 -3
  513. package/dist/vkui.css.map +1 -1
  514. package/dist/vkui.js.tmp +61837 -0
  515. package/package.json +6 -6
  516. package/dist/cssm/styles/components.css +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"SplitCol.js","names":["React","classNames","getSizeXClassName","getViewWidthClassName","useAdaptivity","ViewWidth","useObjectMemo","useMediaQueries","matchMediaListAddListener","matchMediaListRemoveListener","useTransitionAnimate","animateProp","viewWidth","useState","Boolean","animate","setAnimate","mediaQueries","useEffect","undefined","TABLET","listener","smallTabletPlus","matches","SplitColContext","createContext","colRef","useSplitCol","useContext","SplitCol","props","children","width","maxWidth","minWidth","spaced","fixed","style","autoSpaced","stretchedOnMobile","className","restProps","baseRef","useRef","sizeX","contextValue"],"sources":["../../../src/components/SplitCol/SplitCol.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { getSizeXClassName } from '../../helpers/getSizeXClassName';\nimport { getViewWidthClassName } from '../../helpers/getViewWidthClassName';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { ViewWidth } from '../../lib/adaptivity';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { useMediaQueries } from '../../hooks/useMediaQueries';\nimport { matchMediaListAddListener, matchMediaListRemoveListener } from '../../lib/matchMedia';\nimport styles from './SplitCol.module.css';\n\nfunction useTransitionAnimate(animateProp?: boolean) {\n const { viewWidth } = useAdaptivity();\n const [animate, setAnimate] = React.useState(Boolean(animateProp));\n const mediaQueries = useMediaQueries();\n\n React.useEffect(() => {\n if (animateProp !== undefined) {\n setAnimate(animateProp);\n return;\n }\n\n if (viewWidth !== undefined) {\n setAnimate(viewWidth < ViewWidth.TABLET);\n return;\n }\n\n // eslint-disable-next-line no-restricted-properties\n const listener = () => setAnimate(!mediaQueries.smallTabletPlus.matches);\n listener();\n\n matchMediaListAddListener(mediaQueries.smallTabletPlus, listener);\n return () => {\n matchMediaListRemoveListener(mediaQueries.smallTabletPlus, listener);\n };\n }, [animateProp, viewWidth, mediaQueries]);\n\n return animate;\n}\n\nexport interface SplitColContextProps {\n colRef: React.RefObject<HTMLDivElement> | null;\n animate: boolean;\n}\n\nexport const SplitColContext = React.createContext<SplitColContextProps>({\n colRef: null,\n animate: true,\n});\n\nexport const useSplitCol = () => React.useContext(SplitColContext);\n\nexport interface SplitColProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: number | string;\n maxWidth?: number | string;\n minWidth?: number | string;\n /**\n * Если false, то переходы между Panel происходят без анимации\n */\n animate?: boolean;\n /**\n * Если true, то добавляются боковые отступы фиксированной величины\n */\n spaced?: boolean;\n /**\n * Если true, то добавляются боковые отступы фиксированной величины при ширине больше чем `smallTablet`\n */\n autoSpaced?: boolean;\n fixed?: boolean;\n /**\n * Если true, то ширина контейнера становится 100% при ширине меньше чем `tablet`\n */\n stretchedOnMobile?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SplitCol\n */\nexport const SplitCol = (props: SplitColProps) => {\n const {\n children,\n width,\n maxWidth,\n minWidth,\n spaced,\n animate: animateProp,\n fixed,\n style,\n autoSpaced,\n stretchedOnMobile,\n className,\n ...restProps\n } = props;\n const baseRef = React.useRef<HTMLDivElement>(null);\n const { viewWidth, sizeX } = useAdaptivity();\n const animate = useTransitionAnimate(animateProp);\n\n const contextValue = useObjectMemo({\n colRef: baseRef,\n animate,\n });\n\n return (\n <div\n {...restProps}\n style={{\n ...style,\n width: width,\n maxWidth: maxWidth,\n minWidth: minWidth,\n }}\n ref={baseRef}\n className={classNames(\n styles['SplitCol'],\n getSizeXClassName(styles['SplitCol'], sizeX),\n getViewWidthClassName(styles['SplitCol'], viewWidth),\n spaced && styles['SplitCol--spaced'],\n spaced === undefined && styles['SplitCol--spaced-none'],\n autoSpaced && styles['SplitCol--spaced-auto'],\n fixed && styles['SplitCol--fixed'],\n stretchedOnMobile && styles['SplitCol--stretched-on-mobile'],\n className,\n )}\n >\n <SplitColContext.Provider value={contextValue}>\n {fixed ? <div className={styles['SplitCol__fixedInner']}>{children}</div> : children}\n </SplitColContext.Provider>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"SplitCol.js","names":["React","classNames","getSizeXClassName","getViewWidthClassName","useAdaptivity","ViewWidth","useObjectMemo","useMediaQueries","matchMediaListAddListener","matchMediaListRemoveListener","SplitColContext","useTransitionAnimate","animateProp","viewWidth","useState","Boolean","animate","setAnimate","mediaQueries","useEffect","undefined","TABLET","listener","smallTabletPlus","matches","SplitCol","props","children","width","maxWidth","minWidth","spaced","fixed","style","autoSpaced","stretchedOnMobile","className","restProps","baseRef","useRef","sizeX","contextValue","colRef"],"sources":["../../../src/components/SplitCol/SplitCol.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { getSizeXClassName } from '../../helpers/getSizeXClassName';\nimport { getViewWidthClassName } from '../../helpers/getViewWidthClassName';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { ViewWidth } from '../../lib/adaptivity';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { useMediaQueries } from '../../hooks/useMediaQueries';\nimport { matchMediaListAddListener, matchMediaListRemoveListener } from '../../lib/matchMedia';\nimport { SplitColContext } from './SplitColContext';\nimport styles from './SplitCol.module.css';\n\nfunction useTransitionAnimate(animateProp?: boolean) {\n const { viewWidth } = useAdaptivity();\n const [animate, setAnimate] = React.useState(Boolean(animateProp));\n const mediaQueries = useMediaQueries();\n\n React.useEffect(() => {\n if (animateProp !== undefined) {\n setAnimate(animateProp);\n return;\n }\n\n if (viewWidth !== undefined) {\n setAnimate(viewWidth < ViewWidth.TABLET);\n return;\n }\n\n // eslint-disable-next-line no-restricted-properties\n const listener = () => setAnimate(!mediaQueries.smallTabletPlus.matches);\n listener();\n\n matchMediaListAddListener(mediaQueries.smallTabletPlus, listener);\n return () => {\n matchMediaListRemoveListener(mediaQueries.smallTabletPlus, listener);\n };\n }, [animateProp, viewWidth, mediaQueries]);\n\n return animate;\n}\n\nexport interface SplitColProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: number | string;\n maxWidth?: number | string;\n minWidth?: number | string;\n /**\n * Если false, то переходы между Panel происходят без анимации\n */\n animate?: boolean;\n /**\n * Если true, то добавляются боковые отступы фиксированной величины\n */\n spaced?: boolean;\n /**\n * Если true, то добавляются боковые отступы фиксированной величины при ширине больше чем `smallTablet`\n */\n autoSpaced?: boolean;\n fixed?: boolean;\n /**\n * Если true, то ширина контейнера становится 100% при ширине меньше чем `tablet`\n */\n stretchedOnMobile?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SplitCol\n */\nexport const SplitCol = (props: SplitColProps) => {\n const {\n children,\n width,\n maxWidth,\n minWidth,\n spaced,\n animate: animateProp,\n fixed,\n style,\n autoSpaced,\n stretchedOnMobile,\n className,\n ...restProps\n } = props;\n const baseRef = React.useRef<HTMLDivElement>(null);\n const { viewWidth, sizeX } = useAdaptivity();\n const animate = useTransitionAnimate(animateProp);\n\n const contextValue = useObjectMemo({\n colRef: baseRef,\n animate,\n });\n\n return (\n <div\n {...restProps}\n style={{\n ...style,\n width: width,\n maxWidth: maxWidth,\n minWidth: minWidth,\n }}\n ref={baseRef}\n className={classNames(\n styles['SplitCol'],\n getSizeXClassName(styles['SplitCol'], sizeX),\n getViewWidthClassName(styles['SplitCol'], viewWidth),\n spaced && styles['SplitCol--spaced'],\n spaced === undefined && styles['SplitCol--spaced-none'],\n autoSpaced && styles['SplitCol--spaced-auto'],\n fixed && styles['SplitCol--fixed'],\n stretchedOnMobile && styles['SplitCol--stretched-on-mobile'],\n className,\n )}\n >\n <SplitColContext.Provider value={contextValue}>\n {fixed ? <div className={styles['SplitCol__fixedInner']}>{children}</div> : children}\n </SplitColContext.Provider>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ export interface SplitColContextProps {
3
+ colRef: React.RefObject<HTMLDivElement> | null;
4
+ animate: boolean;
5
+ }
6
+ export declare const SplitColContext: React.Context<SplitColContextProps>;
7
+ export declare const useSplitCol: () => SplitColContextProps;
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ export var SplitColContext = /*#__PURE__*/React.createContext({
3
+ colRef: null,
4
+ animate: true
5
+ });
6
+ export var useSplitCol = function useSplitCol() {
7
+ return React.useContext(SplitColContext);
8
+ };
9
+ //# sourceMappingURL=SplitColContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitColContext.js","names":["React","SplitColContext","createContext","colRef","animate","useSplitCol","useContext"],"sources":["../../../src/components/SplitCol/SplitColContext.tsx"],"sourcesContent":["import * as React from 'react';\n\nexport interface SplitColContextProps {\n colRef: React.RefObject<HTMLDivElement> | null;\n animate: boolean;\n}\n\nexport const SplitColContext = React.createContext<SplitColContextProps>({\n colRef: null,\n animate: true,\n});\n\nexport const useSplitCol = () => React.useContext(SplitColContext);\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAO9B,OAAO,IAAMC,eAAe,gBAAGD,KAAK,CAACE,aAAa,CAAuB;EACvEC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAW;EAAA,OAASL,KAAK,CAACM,UAAU,CAACL,eAAe,CAAC;AAAA"}
@@ -29,15 +29,14 @@ export var Switch = function Switch(_ref) {
29
29
  return /*#__PURE__*/React.createElement("label", {
30
30
  className: classNames("vkuiSwitch", getPlatformClassName("vkuiSwitch", platform), getSizeYClassName("vkuiSwitch", sizeY), restProps.disabled && "vkuiSwitch--disabled", focusVisible && "vkuiSwitch--focus-visible", className),
31
31
  style: style,
32
- ref: getRootRef,
33
- role: "presentation"
32
+ ref: getRootRef
34
33
  }, /*#__PURE__*/React.createElement(VisuallyHiddenInput, _extends({}, restProps, {
35
34
  type: "checkbox",
36
35
  className: "vkuiSwitch__self",
37
36
  onBlur: callMultiple(onBlur, restProps.onBlur),
38
37
  onFocus: callMultiple(onFocus, restProps.onFocus)
39
38
  })), /*#__PURE__*/React.createElement("span", {
40
- role: "presentation",
39
+ "aria-hidden": true,
41
40
  className: "vkuiSwitch__pseudo"
42
41
  }), /*#__PURE__*/React.createElement(FocusVisible, {
43
42
  mode: "outside"
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","names":["React","getPlatformClassName","classNames","callMultiple","usePlatform","useAdaptivity","VisuallyHiddenInput","useFocusVisible","FocusVisible","getSizeYClassName","Switch","style","className","getRootRef","restProps","platform","sizeY","focusVisible","onBlur","onFocus","disabled"],"sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { classNames } from '@vkontakte/vkjs';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRootRef } from '../../types';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport {\n VisuallyHiddenInput,\n VisuallyHiddenInputProps,\n} from '../VisuallyHiddenInput/VisuallyHiddenInput';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport { FocusVisible } from '../FocusVisible/FocusVisible';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport styles from './Switch.module.css';\n\nexport interface SwitchProps extends VisuallyHiddenInputProps, HasRootRef<HTMLLabelElement> {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Switch\n */\nexport const Switch = ({ style, className, getRootRef, ...restProps }: SwitchProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n const { focusVisible, onBlur, onFocus } = useFocusVisible();\n\n return (\n <label\n className={classNames(\n styles['Switch'],\n getPlatformClassName(styles['Switch'], platform),\n getSizeYClassName(styles['Switch'], sizeY),\n restProps.disabled && styles['Switch--disabled'],\n focusVisible && styles['Switch--focus-visible'],\n className,\n )}\n style={style}\n ref={getRootRef}\n role=\"presentation\"\n >\n <VisuallyHiddenInput\n {...restProps}\n type=\"checkbox\"\n className={styles['Switch__self']}\n onBlur={callMultiple(onBlur, restProps.onBlur)}\n onFocus={callMultiple(onFocus, restProps.onFocus)}\n />\n <span role=\"presentation\" className={styles['Switch__pseudo']} />\n <FocusVisible mode=\"outside\" />\n </label>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,oBAAoB,QAAQ,oCAAoC;AACzE,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SAASC,WAAW,QAAQ,yBAAyB;AAErD,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SACEC,mBAAmB,QAEd,4CAA4C;AACnD,SAASC,eAAe,QAAQ,6BAA6B;AAC7D,SAASC,YAAY,QAAQ,8BAA8B;AAC3D,SAASC,iBAAiB,QAAQ,iCAAiC;AAKnE;AACA;AACA;AACA,OAAO,IAAMC,MAAM,GAAG,SAATA,MAAM,OAAoE;EAAA,IAA9DC,KAAK,QAALA,KAAK;IAAEC,SAAS,QAATA,SAAS;IAAEC,UAAU,QAAVA,UAAU;IAAKC,SAAS;EACjE,IAAMC,QAAQ,GAAGX,WAAW,EAAE;EAC9B,qBAAkBC,aAAa,EAAE;IAAzBW,KAAK,kBAALA,KAAK;EACb,uBAA0CT,eAAe,EAAE;IAAnDU,YAAY,oBAAZA,YAAY;IAAEC,MAAM,oBAANA,MAAM;IAAEC,OAAO,oBAAPA,OAAO;EAErC,oBACE;IACE,SAAS,EAAEjB,UAAU,eAEnBD,oBAAoB,eAAmBc,QAAQ,CAAC,EAChDN,iBAAiB,eAAmBO,KAAK,CAAC,EAC1CF,SAAS,CAACM,QAAQ,0BAA8B,EAChDH,YAAY,+BAAmC,EAC/CL,SAAS,CACT;IACF,KAAK,EAAED,KAAM;IACb,GAAG,EAAEE,UAAW;IAChB,IAAI,EAAC;EAAc,gBAEnB,oBAAC,mBAAmB,eACdC,SAAS;IACb,IAAI,EAAC,UAAU;IACf,SAAS,oBAAyB;IAClC,MAAM,EAAEX,YAAY,CAACe,MAAM,EAAEJ,SAAS,CAACI,MAAM,CAAE;IAC/C,OAAO,EAAEf,YAAY,CAACgB,OAAO,EAAEL,SAAS,CAACK,OAAO;EAAE,GAClD,eACF;IAAM,IAAI,EAAC,cAAc;IAAC,SAAS;EAA2B,EAAG,eACjE,oBAAC,YAAY;IAAC,IAAI,EAAC;EAAS,EAAG,CACzB;AAEZ,CAAC"}
1
+ {"version":3,"file":"Switch.js","names":["React","getPlatformClassName","classNames","callMultiple","usePlatform","useAdaptivity","VisuallyHiddenInput","useFocusVisible","FocusVisible","getSizeYClassName","Switch","style","className","getRootRef","restProps","platform","sizeY","focusVisible","onBlur","onFocus","disabled"],"sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { classNames } from '@vkontakte/vkjs';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRootRef } from '../../types';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport {\n VisuallyHiddenInput,\n VisuallyHiddenInputProps,\n} from '../VisuallyHiddenInput/VisuallyHiddenInput';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport { FocusVisible } from '../FocusVisible/FocusVisible';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport styles from './Switch.module.css';\n\nexport interface SwitchProps extends VisuallyHiddenInputProps, HasRootRef<HTMLLabelElement> {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Switch\n */\nexport const Switch = ({ style, className, getRootRef, ...restProps }: SwitchProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n const { focusVisible, onBlur, onFocus } = useFocusVisible();\n\n return (\n <label\n className={classNames(\n styles['Switch'],\n getPlatformClassName(styles['Switch'], platform),\n getSizeYClassName(styles['Switch'], sizeY),\n restProps.disabled && styles['Switch--disabled'],\n focusVisible && styles['Switch--focus-visible'],\n className,\n )}\n style={style}\n ref={getRootRef}\n >\n <VisuallyHiddenInput\n {...restProps}\n type=\"checkbox\"\n className={styles['Switch__self']}\n onBlur={callMultiple(onBlur, restProps.onBlur)}\n onFocus={callMultiple(onFocus, restProps.onFocus)}\n />\n <span aria-hidden className={styles['Switch__pseudo']} />\n <FocusVisible mode=\"outside\" />\n </label>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,oBAAoB,QAAQ,oCAAoC;AACzE,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SAASC,WAAW,QAAQ,yBAAyB;AAErD,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SACEC,mBAAmB,QAEd,4CAA4C;AACnD,SAASC,eAAe,QAAQ,6BAA6B;AAC7D,SAASC,YAAY,QAAQ,8BAA8B;AAC3D,SAASC,iBAAiB,QAAQ,iCAAiC;AAKnE;AACA;AACA;AACA,OAAO,IAAMC,MAAM,GAAG,SAATA,MAAM,OAAoE;EAAA,IAA9DC,KAAK,QAALA,KAAK;IAAEC,SAAS,QAATA,SAAS;IAAEC,UAAU,QAAVA,UAAU;IAAKC,SAAS;EACjE,IAAMC,QAAQ,GAAGX,WAAW,EAAE;EAC9B,qBAAkBC,aAAa,EAAE;IAAzBW,KAAK,kBAALA,KAAK;EACb,uBAA0CT,eAAe,EAAE;IAAnDU,YAAY,oBAAZA,YAAY;IAAEC,MAAM,oBAANA,MAAM;IAAEC,OAAO,oBAAPA,OAAO;EAErC,oBACE;IACE,SAAS,EAAEjB,UAAU,eAEnBD,oBAAoB,eAAmBc,QAAQ,CAAC,EAChDN,iBAAiB,eAAmBO,KAAK,CAAC,EAC1CF,SAAS,CAACM,QAAQ,0BAA8B,EAChDH,YAAY,+BAAmC,EAC/CL,SAAS,CACT;IACF,KAAK,EAAED,KAAM;IACb,GAAG,EAAEE;EAAW,gBAEhB,oBAAC,mBAAmB,eACdC,SAAS;IACb,IAAI,EAAC,UAAU;IACf,SAAS,oBAAyB;IAClC,MAAM,EAAEX,YAAY,CAACe,MAAM,EAAEJ,SAAS,CAACI,MAAM,CAAE;IAC/C,OAAO,EAAEf,YAAY,CAACgB,OAAO,EAAEL,SAAS,CAACK,OAAO;EAAE,GAClD,eACF;IAAM,mBAAW;IAAC,SAAS;EAA2B,EAAG,eACzD,oBAAC,YAAY;IAAC,IAAI,EAAC;EAAS,EAAG,CACzB;AAEZ,CAAC"}
@@ -7,6 +7,9 @@ import { usePlatform } from '../../hooks/usePlatform';
7
7
  import { Tappable } from '../Tappable/Tappable';
8
8
  import { Footnote } from '../Typography/Footnote/Footnote';
9
9
  import { Platform } from '../../lib/platform';
10
+ import { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';
11
+ var warn = warnOnce('TabbarItem');
12
+
10
13
  /**
11
14
  * @see https://vkcom.github.io/VKUI/#/TabbarItem
12
15
  */
@@ -22,6 +25,12 @@ export var TabbarItem = function TabbarItem(_ref) {
22
25
  className = _ref.className,
23
26
  restProps = _objectWithoutProperties(_ref, _excluded);
24
27
  var platform = usePlatform();
28
+ if (process.env.NODE_ENV === 'development') {
29
+ var isAccessible = !text && (!restProps['aria-label'] || !restProps['aria-labelledby']);
30
+ if (!isAccessible) {
31
+ warn(COMMON_WARNINGS.a11y[Component === 'a' ? 'link-name' : 'button-name'], 'error');
32
+ }
33
+ }
25
34
  return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {
26
35
  disabled: disabled,
27
36
  href: href,
@@ -1 +1 @@
1
- {"version":3,"file":"TabbarItem.js","names":["React","classNames","hasReactNode","usePlatform","Tappable","Footnote","Platform","TabbarItem","children","selected","indicator","text","href","Component","disabled","className","restProps","platform","IOS","ANDROID"],"sources":["../../../src/components/TabbarItem/TabbarItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Platform } from '../../lib/platform';\nimport { HasComponent, HasRootRef } from '../../types';\nimport styles from './TabbarItem.module.css';\n\nexport interface TabbarItemProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent {\n selected?: boolean;\n /**\n * Текст рядом с иконкой\n */\n text?: React.ReactNode;\n /**\n * Индикатор над иконкой. Принимает `<Badge mode=\"prominent\" />` или `<Counter size=\"s\" mode=\"prominent\" />`\n */\n indicator?: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/TabbarItem\n */\nexport const TabbarItem = ({\n children,\n selected,\n indicator,\n text,\n href,\n Component = href ? 'a' : 'button',\n disabled,\n className,\n ...restProps\n}: TabbarItemProps) => {\n const platform = usePlatform();\n\n return (\n <Component\n {...restProps}\n disabled={disabled}\n href={href}\n className={classNames(\n styles['TabbarItem'],\n platform === Platform.IOS && styles['TabbarItem--ios'],\n platform === Platform.ANDROID && styles['TabbarItem--android'],\n selected && styles['TabbarItem--selected'],\n !!text && styles['TabbarItem--text'],\n className,\n )}\n >\n <Tappable\n role=\"presentation\"\n Component=\"div\"\n disabled={disabled}\n activeMode={\n platform === Platform.IOS ? styles['TabbarItem__tappable--active'] : 'background'\n }\n activeEffectDelay={platform === Platform.IOS ? 0 : 300}\n hasHover={false}\n className={styles['TabbarItem__tappable']}\n />\n <div className={styles['TabbarItem__in']}>\n <div className={styles['TabbarItem__icon']}>\n {children}\n <div className={styles['TabbarItem__label']}>{hasReactNode(indicator) && indicator}</div>\n </div>\n {text && (\n <Footnote Component=\"div\" className={styles['TabbarItem__text']} weight=\"2\">\n {text}\n </Footnote>\n )}\n </div>\n </Component>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAC1D,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,QAAQ,QAAQ,oBAAoB;AAmB7C;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,OAUA;EAAA,IATrBC,QAAQ,QAARA,QAAQ;IACRC,QAAQ,QAARA,QAAQ;IACRC,SAAS,QAATA,SAAS;IACTC,IAAI,QAAJA,IAAI;IACJC,IAAI,QAAJA,IAAI;IAAA,sBACJC,SAAS;IAATA,SAAS,+BAAGD,IAAI,GAAG,GAAG,GAAG,QAAQ;IACjCE,QAAQ,QAARA,QAAQ;IACRC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,QAAQ,GAAGd,WAAW,EAAE;EAE9B,oBACE,oBAAC,SAAS,eACJa,SAAS;IACb,QAAQ,EAAEF,QAAS;IACnB,IAAI,EAAEF,IAAK;IACX,SAAS,EAAEX,UAAU,mBAEnBgB,QAAQ,KAAKX,QAAQ,CAACY,GAAG,yBAA6B,EACtDD,QAAQ,KAAKX,QAAQ,CAACa,OAAO,6BAAiC,EAC9DV,QAAQ,8BAAkC,EAC1C,CAAC,CAACE,IAAI,0BAA8B,EACpCI,SAAS;EACT,iBAEF,oBAAC,QAAQ;IACP,IAAI,EAAC,cAAc;IACnB,SAAS,EAAC,KAAK;IACf,QAAQ,EAAED,QAAS;IACnB,UAAU,EACRG,QAAQ,KAAKX,QAAQ,CAACY,GAAG,wCAA4C,YACtE;IACD,iBAAiB,EAAED,QAAQ,KAAKX,QAAQ,CAACY,GAAG,GAAG,CAAC,GAAG,GAAI;IACvD,QAAQ,EAAE,KAAM;IAChB,SAAS;EAAiC,EAC1C,eACF;IAAK,SAAS;EAA2B,gBACvC;IAAK,SAAS;EAA6B,GACxCV,QAAQ,eACT;IAAK,SAAS;EAA8B,GAAEN,YAAY,CAACQ,SAAS,CAAC,IAAIA,SAAS,CAAO,CACrF,EACLC,IAAI,iBACH,oBAAC,QAAQ;IAAC,SAAS,EAAC,KAAK;IAAC,SAAS,wBAA6B;IAAC,MAAM,EAAC;EAAG,GACxEA,IAAI,CAER,CACG,CACI;AAEhB,CAAC"}
1
+ {"version":3,"file":"TabbarItem.js","names":["React","classNames","hasReactNode","usePlatform","Tappable","Footnote","Platform","COMMON_WARNINGS","warnOnce","warn","TabbarItem","children","selected","indicator","text","href","Component","disabled","className","restProps","platform","process","env","NODE_ENV","isAccessible","a11y","IOS","ANDROID"],"sources":["../../../src/components/TabbarItem/TabbarItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Platform } from '../../lib/platform';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport styles from './TabbarItem.module.css';\n\nexport interface TabbarItemProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent {\n selected?: boolean;\n /**\n * Текст рядом с иконкой\n */\n text?: React.ReactNode;\n /**\n * Индикатор над иконкой. Принимает `<Badge mode=\"prominent\" />` или `<Counter size=\"s\" mode=\"prominent\" />`\n */\n indicator?: React.ReactNode;\n}\n\nconst warn = warnOnce('TabbarItem');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/TabbarItem\n */\nexport const TabbarItem = ({\n children,\n selected,\n indicator,\n text,\n href,\n Component = href ? 'a' : 'button',\n disabled,\n className,\n ...restProps\n}: TabbarItemProps) => {\n const platform = usePlatform();\n\n if (process.env.NODE_ENV === 'development') {\n const isAccessible = !text && (!restProps['aria-label'] || !restProps['aria-labelledby']);\n\n if (!isAccessible) {\n warn(COMMON_WARNINGS.a11y[Component === 'a' ? 'link-name' : 'button-name'], 'error');\n }\n }\n\n return (\n <Component\n {...restProps}\n disabled={disabled}\n href={href}\n className={classNames(\n styles['TabbarItem'],\n platform === Platform.IOS && styles['TabbarItem--ios'],\n platform === Platform.ANDROID && styles['TabbarItem--android'],\n selected && styles['TabbarItem--selected'],\n !!text && styles['TabbarItem--text'],\n className,\n )}\n >\n <Tappable\n role=\"presentation\"\n Component=\"div\"\n disabled={disabled}\n activeMode={\n platform === Platform.IOS ? styles['TabbarItem__tappable--active'] : 'background'\n }\n activeEffectDelay={platform === Platform.IOS ? 0 : 300}\n hasHover={false}\n className={styles['TabbarItem__tappable']}\n />\n <div className={styles['TabbarItem__in']}>\n <div className={styles['TabbarItem__icon']}>\n {children}\n <div className={styles['TabbarItem__label']}>{hasReactNode(indicator) && indicator}</div>\n </div>\n {text && (\n <Footnote Component=\"div\" className={styles['TabbarItem__text']} weight=\"2\">\n {text}\n </Footnote>\n )}\n </div>\n </Component>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAC1D,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,QAAQ,QAAQ,iCAAiC;AAC1D,SAASC,QAAQ,QAAQ,oBAAoB;AAE7C,SAASC,eAAe,EAAEC,QAAQ,QAAQ,oBAAoB;AAkB9D,IAAMC,IAAI,GAAGD,QAAQ,CAAC,YAAY,CAAC;;AAEnC;AACA;AACA;AACA,OAAO,IAAME,UAAU,GAAG,SAAbA,UAAU,OAUA;EAAA,IATrBC,QAAQ,QAARA,QAAQ;IACRC,QAAQ,QAARA,QAAQ;IACRC,SAAS,QAATA,SAAS;IACTC,IAAI,QAAJA,IAAI;IACJC,IAAI,QAAJA,IAAI;IAAA,sBACJC,SAAS;IAATA,SAAS,+BAAGD,IAAI,GAAG,GAAG,GAAG,QAAQ;IACjCE,QAAQ,QAARA,QAAQ;IACRC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,QAAQ,GAAGjB,WAAW,EAAE;EAE9B,IAAIkB,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1C,IAAMC,YAAY,GAAG,CAACV,IAAI,KAAK,CAACK,SAAS,CAAC,YAAY,CAAC,IAAI,CAACA,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAEzF,IAAI,CAACK,YAAY,EAAE;MACjBf,IAAI,CAACF,eAAe,CAACkB,IAAI,CAACT,SAAS,KAAK,GAAG,GAAG,WAAW,GAAG,aAAa,CAAC,EAAE,OAAO,CAAC;IACtF;EACF;EAEA,oBACE,oBAAC,SAAS,eACJG,SAAS;IACb,QAAQ,EAAEF,QAAS;IACnB,IAAI,EAAEF,IAAK;IACX,SAAS,EAAEd,UAAU,mBAEnBmB,QAAQ,KAAKd,QAAQ,CAACoB,GAAG,yBAA6B,EACtDN,QAAQ,KAAKd,QAAQ,CAACqB,OAAO,6BAAiC,EAC9Df,QAAQ,8BAAkC,EAC1C,CAAC,CAACE,IAAI,0BAA8B,EACpCI,SAAS;EACT,iBAEF,oBAAC,QAAQ;IACP,IAAI,EAAC,cAAc;IACnB,SAAS,EAAC,KAAK;IACf,QAAQ,EAAED,QAAS;IACnB,UAAU,EACRG,QAAQ,KAAKd,QAAQ,CAACoB,GAAG,wCAA4C,YACtE;IACD,iBAAiB,EAAEN,QAAQ,KAAKd,QAAQ,CAACoB,GAAG,GAAG,CAAC,GAAG,GAAI;IACvD,QAAQ,EAAE,KAAM;IAChB,SAAS;EAAiC,EAC1C,eACF;IAAK,SAAS;EAA2B,gBACvC;IAAK,SAAS;EAA6B,GACxCf,QAAQ,eACT;IAAK,SAAS;EAA8B,GAAET,YAAY,CAACW,SAAS,CAAC,IAAIA,SAAS,CAAO,CACrF,EACLC,IAAI,iBACH,oBAAC,QAAQ;IAAC,SAAS,EAAC,KAAK;IAAC,SAAS,wBAA6B;IAAC,MAAM,EAAC;EAAG,GACxEA,IAAI,CAER,CACG,CACI;AAEhB,CAAC"}
@@ -8,8 +8,11 @@ import { Platform } from '../../lib/platform';
8
8
  import { useGlobalEventListener } from '../../hooks/useGlobalEventListener';
9
9
  import { useDOM } from '../../lib/dom';
10
10
  import { pressedKey } from '../../lib/accessibility';
11
- import { useAdaptivity } from '../../hooks/useAdaptivity';
12
- import { getSizeXClassName } from '../../helpers/getSizeXClassName';
11
+ var modeClassNames = {
12
+ default: "vkuiTabs--mode-default",
13
+ accent: "vkuiTabs--mode-accent",
14
+ secondary: "vkuiTabs--mode-secondary"
15
+ };
13
16
  export var TabsModeContext = /*#__PURE__*/React.createContext({
14
17
  mode: 'default',
15
18
  withGaps: false
@@ -28,8 +31,6 @@ export var Tabs = function Tabs(_ref) {
28
31
  role = _ref$role === void 0 ? 'tablist' : _ref$role,
29
32
  restProps = _objectWithoutProperties(_ref, _excluded);
30
33
  var platform = usePlatform();
31
- var _useAdaptivity = useAdaptivity(),
32
- sizeX = _useAdaptivity.sizeX;
33
34
  var _useDOM = useDOM(),
34
35
  document = _useDOM.document;
35
36
  var isTabFlow = role === 'tablist';
@@ -123,7 +124,7 @@ export var Tabs = function Tabs(_ref) {
123
124
  });
124
125
  return /*#__PURE__*/React.createElement("div", _extends({}, restProps, {
125
126
  ref: getRootRef,
126
- className: classNames("vkuiTabs", platform === Platform.VKCOM && styles["Tabs--".concat(platform)], getSizeXClassName("vkuiTabs", sizeX), withGaps && "vkuiTabs--withGaps", styles["Tabs--mode-".concat(mode)], className),
127
+ className: classNames("vkuiTabs", platform === Platform.VKCOM && "vkuiTabs--vkcom", withGaps && "vkuiTabs--withGaps", modeClassNames[mode], className),
127
128
  role: role
128
129
  }), /*#__PURE__*/React.createElement("div", {
129
130
  className: "vkuiTabs__in",
@@ -135,14 +136,4 @@ export var Tabs = function Tabs(_ref) {
135
136
  }
136
137
  }, children)));
137
138
  };
138
- var styles = {
139
- "Tabs--withGaps": "vkuiTabs--withGaps",
140
- "Tabs--mode-default": "vkuiTabs--mode-default",
141
- "Tabs--buttons": "vkuiTabs--buttons",
142
- "Tabs--sizeX-compact": "vkuiTabs--sizeX-compact",
143
- "Tabs--sizeX-none": "vkuiTabs--sizeX-none",
144
- "Tabs--mode-accent": "vkuiTabs--mode-accent",
145
- "Tabs--mode-secondary": "vkuiTabs--mode-secondary",
146
- "Tabs--vkcom": "vkuiTabs--vkcom"
147
- };
148
139
  //# sourceMappingURL=Tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","names":["React","classNames","usePlatform","Platform","useGlobalEventListener","useDOM","pressedKey","useAdaptivity","getSizeXClassName","TabsModeContext","createContext","mode","withGaps","Tabs","children","getRootRef","className","role","restProps","platform","sizeX","document","isTabFlow","tabsRef","useRef","getTabEls","current","Array","from","querySelectorAll","handleDocumentKeydown","event","key","tabEls","currentFocusedElIndex","findIndex","el","activeElement","nextIndex","length","offset","nextTabEl","preventDefault","focus","currentFocusedEl","find","getAttribute","relatedContentElId","relatedContentEl","getElementById","click","capture","VKCOM","styles"],"sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { HasRootRef } from '../../types';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useDOM } from '../../lib/dom';\nimport { pressedKey } from '../../lib/accessibility';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { getSizeXClassName } from '../../helpers/getSizeXClassName';\nimport styles from './Tabs.module.css';\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n mode?: 'default' | 'accent' | 'secondary';\n}\n\nexport interface TabsContextProps {\n mode: TabsProps['mode'];\n withGaps: boolean;\n}\n\nexport const TabsModeContext = React.createContext<TabsContextProps>({\n mode: 'default',\n withGaps: false,\n});\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tabs\n */\nexport const Tabs = ({\n children,\n mode = 'default',\n getRootRef,\n className,\n role = 'tablist',\n ...restProps\n}: TabsProps) => {\n const platform = usePlatform();\n const { sizeX } = useAdaptivity();\n const { document } = useDOM();\n\n const isTabFlow = role === 'tablist';\n\n const tabsRef = React.useRef<HTMLDivElement>(null);\n\n const withGaps = mode === 'accent' || mode === 'secondary';\n\n const getTabEls = () => {\n if (!tabsRef.current) {\n return [];\n }\n\n return Array.from(\n // eslint-disable-next-line no-restricted-properties\n tabsRef.current.querySelectorAll<HTMLDivElement>('[role=tab]:not([disabled])'),\n );\n };\n\n const handleDocumentKeydown = (event: KeyboardEvent) => {\n if (!document || !tabsRef.current || !isTabFlow) {\n return;\n }\n\n const key = pressedKey(event);\n\n switch (key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'End':\n case 'Home': {\n const tabEls = getTabEls();\n const currentFocusedElIndex = tabEls.findIndex((el) => document.activeElement === el);\n if (currentFocusedElIndex === -1) {\n return;\n }\n\n let nextIndex = 0;\n if (key === 'Home') {\n nextIndex = 0;\n } else if (key === 'End') {\n nextIndex = tabEls.length - 1;\n } else {\n const offset = key === 'ArrowRight' ? 1 : -1;\n nextIndex = currentFocusedElIndex + offset;\n }\n\n const nextTabEl = tabEls[nextIndex];\n\n if (nextTabEl) {\n event.preventDefault();\n nextTabEl.focus();\n }\n\n break;\n }\n /*\n В JAWS и NVDA стрелка вниз активирует контент.\n Это не прописано в стандартах, но по ссылке ниже это рекомендуется делать.\n https://inclusive-components.design/tabbed-interfaces/\n */\n case 'ArrowDown': {\n const tabEls = getTabEls();\n const currentFocusedEl = tabEls.find((el) => document.activeElement === el);\n\n if (!currentFocusedEl || currentFocusedEl.getAttribute('aria-selected') !== 'true') {\n return;\n }\n\n const relatedContentElId = currentFocusedEl.getAttribute('aria-controls');\n if (!relatedContentElId) {\n return;\n }\n\n // eslint-disable-next-line no-restricted-properties\n const relatedContentEl = document.getElementById(relatedContentElId);\n if (!relatedContentEl) {\n return;\n }\n\n event.preventDefault();\n relatedContentEl.focus();\n\n break;\n }\n case 'Space':\n case 'Enter': {\n const tabEls = getTabEls();\n const currentFocusedEl = tabEls.find((el) => document.activeElement === el);\n if (currentFocusedEl) {\n currentFocusedEl.click();\n }\n }\n }\n };\n\n useGlobalEventListener(document, 'keydown', handleDocumentKeydown, {\n capture: true,\n });\n\n return (\n <div\n {...restProps}\n ref={getRootRef}\n className={classNames(\n styles['Tabs'],\n platform === Platform.VKCOM && styles[`Tabs--${platform}`],\n getSizeXClassName(styles['Tabs'], sizeX),\n withGaps && styles['Tabs--withGaps'],\n styles[`Tabs--mode-${mode}`],\n className,\n )}\n role={role}\n >\n <div className={styles['Tabs__in']} ref={tabsRef}>\n <TabsModeContext.Provider value={{ mode, withGaps }}>{children}</TabsModeContext.Provider>\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tabs.js","names":["React","classNames","usePlatform","Platform","useGlobalEventListener","useDOM","pressedKey","modeClassNames","default","accent","secondary","TabsModeContext","createContext","mode","withGaps","Tabs","children","getRootRef","className","role","restProps","platform","document","isTabFlow","tabsRef","useRef","getTabEls","current","Array","from","querySelectorAll","handleDocumentKeydown","event","key","tabEls","currentFocusedElIndex","findIndex","el","activeElement","nextIndex","length","offset","nextTabEl","preventDefault","focus","currentFocusedEl","find","getAttribute","relatedContentElId","relatedContentEl","getElementById","click","capture","VKCOM"],"sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { HasRootRef } from '../../types';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useDOM } from '../../lib/dom';\nimport { pressedKey } from '../../lib/accessibility';\nimport styles from './Tabs.module.css';\n\nconst modeClassNames = {\n default: styles['Tabs--mode-default'],\n accent: styles['Tabs--mode-accent'],\n secondary: styles['Tabs--mode-secondary'],\n};\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n mode?: 'default' | 'accent' | 'secondary';\n}\n\nexport interface TabsContextProps {\n mode: TabsProps['mode'];\n withGaps: boolean;\n}\n\nexport const TabsModeContext = React.createContext<TabsContextProps>({\n mode: 'default',\n withGaps: false,\n});\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tabs\n */\nexport const Tabs = ({\n children,\n mode = 'default',\n getRootRef,\n className,\n role = 'tablist',\n ...restProps\n}: TabsProps) => {\n const platform = usePlatform();\n const { document } = useDOM();\n\n const isTabFlow = role === 'tablist';\n\n const tabsRef = React.useRef<HTMLDivElement>(null);\n\n const withGaps = mode === 'accent' || mode === 'secondary';\n\n const getTabEls = () => {\n if (!tabsRef.current) {\n return [];\n }\n\n return Array.from(\n // eslint-disable-next-line no-restricted-properties\n tabsRef.current.querySelectorAll<HTMLDivElement>('[role=tab]:not([disabled])'),\n );\n };\n\n const handleDocumentKeydown = (event: KeyboardEvent) => {\n if (!document || !tabsRef.current || !isTabFlow) {\n return;\n }\n\n const key = pressedKey(event);\n\n switch (key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'End':\n case 'Home': {\n const tabEls = getTabEls();\n const currentFocusedElIndex = tabEls.findIndex((el) => document.activeElement === el);\n if (currentFocusedElIndex === -1) {\n return;\n }\n\n let nextIndex = 0;\n if (key === 'Home') {\n nextIndex = 0;\n } else if (key === 'End') {\n nextIndex = tabEls.length - 1;\n } else {\n const offset = key === 'ArrowRight' ? 1 : -1;\n nextIndex = currentFocusedElIndex + offset;\n }\n\n const nextTabEl = tabEls[nextIndex];\n\n if (nextTabEl) {\n event.preventDefault();\n nextTabEl.focus();\n }\n\n break;\n }\n /*\n В JAWS и NVDA стрелка вниз активирует контент.\n Это не прописано в стандартах, но по ссылке ниже это рекомендуется делать.\n https://inclusive-components.design/tabbed-interfaces/\n */\n case 'ArrowDown': {\n const tabEls = getTabEls();\n const currentFocusedEl = tabEls.find((el) => document.activeElement === el);\n\n if (!currentFocusedEl || currentFocusedEl.getAttribute('aria-selected') !== 'true') {\n return;\n }\n\n const relatedContentElId = currentFocusedEl.getAttribute('aria-controls');\n if (!relatedContentElId) {\n return;\n }\n\n // eslint-disable-next-line no-restricted-properties\n const relatedContentEl = document.getElementById(relatedContentElId);\n if (!relatedContentEl) {\n return;\n }\n\n event.preventDefault();\n relatedContentEl.focus();\n\n break;\n }\n case 'Space':\n case 'Enter': {\n const tabEls = getTabEls();\n const currentFocusedEl = tabEls.find((el) => document.activeElement === el);\n if (currentFocusedEl) {\n currentFocusedEl.click();\n }\n }\n }\n };\n\n useGlobalEventListener(document, 'keydown', handleDocumentKeydown, {\n capture: true,\n });\n\n return (\n <div\n {...restProps}\n ref={getRootRef}\n className={classNames(\n styles['Tabs'],\n platform === Platform.VKCOM && styles['Tabs--vkcom'],\n withGaps && styles['Tabs--withGaps'],\n modeClassNames[mode],\n className,\n )}\n role={role}\n >\n <div className={styles['Tabs__in']} ref={tabsRef}>\n <TabsModeContext.Provider value={{ mode, withGaps }}>{children}</TabsModeContext.Provider>\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Placement } from '@popperjs/core';
2
+ import { type PlacementWithAuto } from '../../lib/floating';
3
3
  import { HasRootRef } from '../../types';
4
4
  export interface TooltipProps {
5
5
  /**
@@ -61,7 +61,7 @@ export interface TooltipProps {
61
61
  /**
62
62
  * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства
63
63
  */
64
- placement?: Placement;
64
+ placement?: PlacementWithAuto;
65
65
  /**
66
66
  * Пользовательские css-классы, будут добавлены на root-элемент
67
67
  */
@@ -70,4 +70,4 @@ export interface TooltipProps {
70
70
  /**
71
71
  * @see https://vkcom.github.io/VKUI/#/Tooltip
72
72
  */
73
- export declare const Tooltip: ({ children, isShown: _isShown, offsetX, offsetY, alignX, alignY, onClose, cornerOffset, cornerAbsoluteOffset, appearance, arrow, placement, ...restProps }: TooltipProps) => JSX.Element;
73
+ export declare const Tooltip: ({ children, isShown: isShownProp, offsetX, offsetY, alignX, alignY, onClose, cornerOffset, cornerAbsoluteOffset, appearance, arrow, placement: placementProp, text, header, className, ...restProps }: TooltipProps) => JSX.Element;
@@ -1,17 +1,16 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
1
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
3
  import _typeof from "@babel/runtime/helpers/typeof";
3
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
- import _extends from "@babel/runtime/helpers/extends";
5
5
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
6
- var _excluded = ["className"],
7
- _excluded2 = ["children", "isShown", "offsetX", "offsetY", "alignX", "alignY", "onClose", "cornerOffset", "cornerAbsoluteOffset", "appearance", "arrow", "placement"];
6
+ var _excluded = ["children", "isShown", "offsetX", "offsetY", "alignX", "alignY", "onClose", "cornerOffset", "cornerAbsoluteOffset", "appearance", "arrow", "placement", "text", "header", "className"];
8
7
  import * as React from 'react';
9
8
  import ReactDOM from 'react-dom';
10
9
  import { classNames, hasReactNode } from '@vkontakte/vkjs';
11
10
  import { Subhead } from '../Typography/Subhead/Subhead';
12
11
  import { useNavTransition } from '../NavTransitionContext/NavTransitionContext';
13
12
  import { PopperArrow } from '../PopperArrow/PopperArrow';
14
- import { usePopper } from 'react-popper';
13
+ import { useFloating, checkIsNotAutoPlacement, convertFloatingDataToReactCSSProperties, offsetMiddleware, shiftMiddleware, flipMiddleware, arrowMiddleware, autoUpdateFloatingElement, getAutoPlacementAlign, autoPlacementMiddleware } from '../../lib/floating';
15
14
  import { tooltipContainerAttr } from './TooltipContainer';
16
15
  import { useExternRef } from '../../hooks/useExternRef';
17
16
  import { useDOM } from '../../lib/dom';
@@ -21,40 +20,13 @@ var isDOMTypeElement = function isDOMTypeElement(element) {
21
20
  return /*#__PURE__*/React.isValidElement(element) && typeof element.type === 'string';
22
21
  };
23
22
  var warn = warnOnce('Tooltip');
24
- var IS_DEV = process.env.NODE_ENV === 'development';
25
- var SimpleTooltip = /*#__PURE__*/React.forwardRef(function SimpleTooltip(_ref, ref) {
26
- var _attributes$container;
27
- var _ref$appearance = _ref.appearance,
28
- appearance = _ref$appearance === void 0 ? 'accent' : _ref$appearance,
29
- header = _ref.header,
30
- text = _ref.text,
31
- arrow = _ref.arrow,
32
- _ref$style = _ref.style,
33
- popperStyles = _ref$style === void 0 ? {} : _ref$style,
34
- attributes = _ref.attributes,
35
- className = _ref.className;
36
- var _ref2 = (_attributes$container = attributes === null || attributes === void 0 ? void 0 : attributes.container) !== null && _attributes$container !== void 0 ? _attributes$container : {},
37
- containerClassName = _ref2.className,
38
- restContainerAttributes = _objectWithoutProperties(_ref2, _excluded);
39
- return /*#__PURE__*/React.createElement("div", {
40
- className: classNames("vkuiTooltip", styles["Tooltip--appearance-".concat(appearance)], className)
41
- }, /*#__PURE__*/React.createElement("div", _extends({
42
- className: classNames("vkuiTooltip__container", containerClassName),
43
- ref: ref,
44
- style: popperStyles.container
45
- }, restContainerAttributes), arrow && /*#__PURE__*/React.createElement(PopperArrow, {
46
- style: popperStyles.arrow,
47
- attributes: attributes === null || attributes === void 0 ? void 0 : attributes.arrow,
48
- arrowClassName: "vkuiTooltip__arrow"
49
- }), /*#__PURE__*/React.createElement("div", {
50
- className: "vkuiTooltip__content"
51
- }, header && /*#__PURE__*/React.createElement(Subhead, {
52
- weight: "2",
53
- className: "vkuiTooltip__title"
54
- }, header), text && /*#__PURE__*/React.createElement(Subhead, {
55
- className: "vkuiTooltip__text"
56
- }, text))));
57
- });
23
+ var stylesAppearance = {
24
+ accent: "vkuiTooltip--appearance-accent",
25
+ neutral: "vkuiTooltip--appearance-neutral",
26
+ white: "vkuiTooltip--appearance-white",
27
+ black: "vkuiTooltip--appearance-black",
28
+ inversion: "vkuiTooltip--appearance-inversion"
29
+ };
58
30
  function mapAlignX(x) {
59
31
  switch (x) {
60
32
  case 'left':
@@ -65,7 +37,7 @@ function mapAlignX(x) {
65
37
  return '';
66
38
  }
67
39
  }
68
- function getPlacement(alignX, alignY) {
40
+ function getDefaultPlacement(alignX, alignY) {
69
41
  return [alignY || 'bottom', mapAlignX(alignX || 'left')].filter(function (p) {
70
42
  return !!p;
71
43
  }).join('-');
@@ -77,148 +49,141 @@ function isVerticalPlacement(placement) {
77
49
  /**
78
50
  * @see https://vkcom.github.io/VKUI/#/Tooltip
79
51
  */
80
- export var Tooltip = function Tooltip(_ref3) {
81
- var _attributes$arrow, _attributes$popper;
82
- var children = _ref3.children,
83
- _ref3$isShown = _ref3.isShown,
84
- _isShown = _ref3$isShown === void 0 ? true : _ref3$isShown,
85
- _ref3$offsetX = _ref3.offsetX,
86
- offsetX = _ref3$offsetX === void 0 ? 0 : _ref3$offsetX,
87
- _ref3$offsetY = _ref3.offsetY,
88
- offsetY = _ref3$offsetY === void 0 ? 15 : _ref3$offsetY,
89
- alignX = _ref3.alignX,
90
- alignY = _ref3.alignY,
91
- onClose = _ref3.onClose,
92
- _ref3$cornerOffset = _ref3.cornerOffset,
93
- cornerOffset = _ref3$cornerOffset === void 0 ? 0 : _ref3$cornerOffset,
94
- cornerAbsoluteOffset = _ref3.cornerAbsoluteOffset,
95
- appearance = _ref3.appearance,
96
- _ref3$arrow = _ref3.arrow,
97
- arrow = _ref3$arrow === void 0 ? true : _ref3$arrow,
98
- placement = _ref3.placement,
99
- restProps = _objectWithoutProperties(_ref3, _excluded2);
100
- var _useNavTransition = useNavTransition(),
101
- entering = _useNavTransition.entering;
102
- var isShown = _isShown && !entering;
52
+ export var Tooltip = function Tooltip(_ref) {
53
+ var children = _ref.children,
54
+ _ref$isShown = _ref.isShown,
55
+ isShownProp = _ref$isShown === void 0 ? true : _ref$isShown,
56
+ _ref$offsetX = _ref.offsetX,
57
+ offsetX = _ref$offsetX === void 0 ? 0 : _ref$offsetX,
58
+ _ref$offsetY = _ref.offsetY,
59
+ offsetY = _ref$offsetY === void 0 ? 15 : _ref$offsetY,
60
+ alignX = _ref.alignX,
61
+ alignY = _ref.alignY,
62
+ onClose = _ref.onClose,
63
+ _ref$cornerOffset = _ref.cornerOffset,
64
+ cornerOffset = _ref$cornerOffset === void 0 ? 0 : _ref$cornerOffset,
65
+ cornerAbsoluteOffset = _ref.cornerAbsoluteOffset,
66
+ _ref$appearance = _ref.appearance,
67
+ appearance = _ref$appearance === void 0 ? 'accent' : _ref$appearance,
68
+ _ref$arrow = _ref.arrow,
69
+ arrow = _ref$arrow === void 0 ? true : _ref$arrow,
70
+ placementProp = _ref.placement,
71
+ text = _ref.text,
72
+ header = _ref.header,
73
+ className = _ref.className,
74
+ restProps = _objectWithoutProperties(_ref, _excluded);
75
+ var arrowRef = React.useRef(null);
103
76
  var _React$useState = React.useState(null),
104
77
  _React$useState2 = _slicedToArray(_React$useState, 2),
105
- tooltipRef = _React$useState2[0],
106
- setTooltipRef = _React$useState2[1];
107
- var _React$useState3 = React.useState(),
108
- _React$useState4 = _slicedToArray(_React$useState3, 2),
109
- target = _React$useState4[0],
110
- setTarget = _React$useState4[1];
111
- if (IS_DEV) {
78
+ target = _React$useState2[0],
79
+ setTarget = _React$useState2[1];
80
+ /* eslint-disable no-restricted-properties */
81
+ var tooltipContainer = React.useMemo(function () {
82
+ return target === null || target === void 0 ? void 0 : target.closest("[".concat(tooltipContainerAttr, "]"));
83
+ }, [target]);
84
+ var _useNavTransition = useNavTransition(),
85
+ entering = _useNavTransition.entering;
86
+ var isShown = isShownProp && tooltipContainer && !entering;
87
+ var placement = placementProp || getDefaultPlacement(alignX, alignY);
88
+ var isNotAutoPlacement = checkIsNotAutoPlacement(placement);
89
+ if (process.env.NODE_ENV === 'development') {
112
90
  var multiChildren = React.Children.count(children) > 1;
113
91
  // Empty children is a noop
114
92
  var primitiveChild = hasReactNode(children) && _typeof(children) !== 'object';
115
93
  (multiChildren || primitiveChild) && warn(['children должен быть одним React элементом, получено', multiChildren && 'несколько', primitiveChild && JSON.stringify(children)].filter(Boolean).join(' '), 'error');
116
94
  }
117
-
118
- /* eslint-disable no-restricted-properties */
119
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion*/
120
- var tooltipContainer = React.useMemo(function () {
121
- return target === null || target === void 0 ? void 0 : target.closest("[".concat(tooltipContainerAttr, "]"));
122
- }, [target]);
123
- var strategy = React.useMemo(function () {
95
+ var floatingPositionStrategy = React.useMemo(function () {
124
96
  return (target === null || target === void 0 ? void 0 : target.style.position) === 'fixed' ? 'fixed' : 'absolute';
125
97
  }, [target]);
126
- /* eslint-enable @typescript-eslint/no-unnecessary-type-assertion*/
127
- /* eslint-enable no-restricted-properties */
128
-
129
- if (IS_DEV && target && !tooltipContainer) {
98
+ if (process.env.NODE_ENV === 'development' && target && !tooltipContainer) {
130
99
  throw new Error('Use TooltipContainer for Tooltip outside Panel (see docs)');
131
100
  }
132
- var modifiers = React.useMemo(function () {
133
- var modifiers = [{
134
- name: 'offset',
135
- options: {
136
- offset: [offsetX, offsetY]
137
- }
138
- }, {
139
- name: 'preventOverflow'
140
- }, {
141
- name: 'flip'
142
- }];
101
+ var memoizedMiddlewares = React.useMemo(function () {
102
+ var middlewares = [offsetMiddleware({
103
+ crossAxis: offsetX,
104
+ mainAxis: offsetY
105
+ })];
106
+
107
+ // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement
108
+ if (isNotAutoPlacement) {
109
+ middlewares.push(flipMiddleware());
110
+ } else {
111
+ middlewares.push(autoPlacementMiddleware({
112
+ alignment: placement ? getAutoPlacementAlign(placement) : null
113
+ }));
114
+ }
115
+ middlewares.push(shiftMiddleware());
116
+
117
+ // см. https://floating-ui.com/docs/arrow#order
143
118
  if (arrow) {
144
- modifiers.push({
145
- name: 'arrow',
146
- options: {
147
- padding: 14
148
- }
149
- });
150
- modifiers.push({
119
+ middlewares.push(arrowMiddleware({
120
+ element: arrowRef,
121
+ padding: 14
122
+ }));
123
+ middlewares.push({
151
124
  name: 'arrowOffset',
152
- enabled: true,
153
- phase: 'main',
154
- fn: function fn(_ref4) {
155
- var state = _ref4.state;
156
- if (!state.modifiersData.arrow) {
157
- return;
125
+ fn: function fn(_ref2) {
126
+ var placement = _ref2.placement,
127
+ middlewareData = _ref2.middlewareData;
128
+ if (!middlewareData.arrow) {
129
+ return Promise.resolve({});
158
130
  }
159
- if (isVerticalPlacement(state.placement)) {
131
+ if (isVerticalPlacement(placement)) {
160
132
  if (cornerAbsoluteOffset !== undefined) {
161
- state.modifiersData.arrow.x = cornerAbsoluteOffset;
162
- } else {
163
- var _state$modifiersData$;
164
- if (((_state$modifiersData$ = state.modifiersData.arrow) === null || _state$modifiersData$ === void 0 ? void 0 : _state$modifiersData$.x) !== undefined) {
165
- state.modifiersData.arrow.x += cornerOffset;
166
- }
133
+ middlewareData.arrow.x = cornerAbsoluteOffset;
134
+ } else if (middlewareData.arrow.x !== undefined) {
135
+ middlewareData.arrow.x += cornerOffset;
167
136
  }
168
137
  } else {
169
138
  if (cornerAbsoluteOffset !== undefined) {
170
- state.modifiersData.arrow.y = cornerAbsoluteOffset;
171
- } else {
172
- var _state$modifiersData$2;
173
- if (((_state$modifiersData$2 = state.modifiersData.arrow) === null || _state$modifiersData$2 === void 0 ? void 0 : _state$modifiersData$2.y) !== undefined) {
174
- state.modifiersData.arrow.y += cornerOffset;
175
- }
139
+ middlewareData.arrow.y = cornerAbsoluteOffset;
140
+ } else if (middlewareData.arrow.y !== undefined) {
141
+ middlewareData.arrow.y += cornerOffset;
176
142
  }
177
143
  }
144
+ return Promise.resolve({});
178
145
  }
179
146
  });
180
147
  }
181
- return modifiers;
182
- }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY]);
183
- var _placement = placement !== null && placement !== void 0 ? placement : getPlacement(alignX, alignY);
184
- var _usePopper = usePopper(target, tooltipRef, {
185
- strategy: strategy,
186
- placement: _placement,
187
- modifiers: modifiers
148
+ return middlewares;
149
+ }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY, placement, isNotAutoPlacement]);
150
+ var _useFloating = useFloating({
151
+ strategy: floatingPositionStrategy,
152
+ placement: isNotAutoPlacement ? placement : undefined,
153
+ middleware: memoizedMiddlewares,
154
+ whileElementsMounted: autoUpdateFloatingElement
188
155
  }),
189
- popperStyles = _usePopper.styles,
190
- attributes = _usePopper.attributes;
156
+ floatingDataX = _useFloating.x,
157
+ floatingDataY = _useFloating.y,
158
+ resolvedPlacement = _useFloating.placement,
159
+ refs = _useFloating.refs,
160
+ arrowCoords = _useFloating.middlewareData.arrow;
191
161
  var _useDOM = useDOM(),
192
162
  document = _useDOM.document;
193
163
  useGlobalEventListener(document, 'click', isShown && onClose, {
164
+ capture: true,
194
165
  passive: true
195
166
  });
196
- // NOTE: setting isShown to true used to trigger usePopper().forceUpdate()
197
-
198
167
  var childRef = isDOMTypeElement(children) ? children.ref : /*#__PURE__*/React.isValidElement(children) ? children.props.getRootRef : null;
199
- var patchedRef = useExternRef(setTarget, childRef);
168
+ var patchedRef = useExternRef(setTarget, refs.setReference, childRef);
200
169
  var child = /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, _defineProperty({}, isDOMTypeElement(children) ? 'ref' : 'getRootRef', patchedRef)) : children;
201
- return /*#__PURE__*/React.createElement(React.Fragment, null, child, isShown && target != null && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(SimpleTooltip, _extends({}, restProps, {
202
- appearance: appearance,
203
- arrow: arrow,
204
- ref: function ref(el) {
205
- return setTooltipRef(el);
206
- },
207
- style: {
208
- arrow: popperStyles.arrow,
209
- container: popperStyles.popper
210
- },
211
- attributes: {
212
- arrow: (_attributes$arrow = attributes.arrow) !== null && _attributes$arrow !== void 0 ? _attributes$arrow : null,
213
- container: (_attributes$popper = attributes.popper) !== null && _attributes$popper !== void 0 ? _attributes$popper : null
214
- }
215
- })), tooltipContainer));
216
- };
217
- var styles = {
218
- "Tooltip--appearance-accent": "vkuiTooltip--appearance-accent",
219
- "Tooltip--appearance-white": "vkuiTooltip--appearance-white",
220
- "Tooltip--appearance-black": "vkuiTooltip--appearance-black",
221
- "Tooltip--appearance-inversion": "vkuiTooltip--appearance-inversion",
222
- "Tooltip--appearance-neutral": "vkuiTooltip--appearance-neutral"
170
+ return /*#__PURE__*/React.createElement(React.Fragment, null, child, isShown && target != null && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement("div", _extends({}, restProps, {
171
+ className: classNames("vkuiTooltip", stylesAppearance[appearance], className)
172
+ }), /*#__PURE__*/React.createElement("div", {
173
+ ref: refs.setFloating,
174
+ style: convertFloatingDataToReactCSSProperties(floatingPositionStrategy, floatingDataX, floatingDataY)
175
+ }, arrow && /*#__PURE__*/React.createElement(PopperArrow, {
176
+ coords: arrowCoords,
177
+ placement: resolvedPlacement,
178
+ arrowClassName: "vkuiTooltip__arrow",
179
+ getRootRef: arrowRef
180
+ }), /*#__PURE__*/React.createElement("div", {
181
+ className: "vkuiTooltip__content"
182
+ }, header && /*#__PURE__*/React.createElement(Subhead, {
183
+ weight: "2",
184
+ className: "vkuiTooltip__title"
185
+ }, header), text && /*#__PURE__*/React.createElement(Subhead, {
186
+ className: "vkuiTooltip__text"
187
+ }, text)))), tooltipContainer));
223
188
  };
224
189
  //# sourceMappingURL=Tooltip.js.map