@vkontakte/vkui 5.1.2 → 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 (281) hide show
  1. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  2. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  3. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +0 -4
  4. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  5. package/dist/cjs/components/ContentCard/ContentCard.js +2 -1
  6. package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
  7. package/dist/cjs/components/CustomSelect/CustomSelect.js +4 -3
  8. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  9. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  10. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +21 -72
  11. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  12. package/dist/cjs/components/DateInput/DateInput.d.ts +3 -2
  13. package/dist/cjs/components/DateInput/DateInput.js +3 -2
  14. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  15. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  16. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +3 -2
  17. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  18. package/dist/cjs/components/FixedLayout/FixedLayout.js +2 -2
  19. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  20. package/dist/cjs/components/FormField/FormField.js +6 -10
  21. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  22. package/dist/cjs/components/IconButton/IconButton.js +9 -0
  23. package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
  24. package/dist/cjs/components/ModalCard/ModalCard.d.ts +1 -1
  25. package/dist/cjs/components/ModalCard/ModalCard.js +4 -2
  26. package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
  27. package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  28. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +9 -2
  29. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  30. package/dist/cjs/components/ModalPage/ModalPage.d.ts +2 -6
  31. package/dist/cjs/components/ModalPage/ModalPage.js +13 -7
  32. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  33. package/dist/cjs/components/ModalRoot/ModalRoot.js +1 -2
  34. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  35. package/dist/cjs/components/Popper/Popper.d.ts +12 -9
  36. package/dist/cjs/components/Popper/Popper.js +92 -119
  37. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  38. package/dist/cjs/components/PopperArrow/PopperArrow.d.ts +15 -5
  39. package/dist/cjs/components/PopperArrow/PopperArrow.js +44 -17
  40. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
  41. package/dist/cjs/components/Root/Root.js +2 -2
  42. package/dist/cjs/components/Root/Root.js.map +1 -1
  43. package/dist/cjs/components/SplitCol/SplitCol.d.ts +0 -6
  44. package/dist/cjs/components/SplitCol/SplitCol.js +3 -11
  45. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  46. package/dist/cjs/components/SplitCol/SplitColContext.d.ts +7 -0
  47. package/dist/cjs/components/SplitCol/SplitColContext.js +18 -0
  48. package/dist/cjs/components/SplitCol/SplitColContext.js.map +1 -0
  49. package/dist/cjs/components/TabbarItem/TabbarItem.js +9 -0
  50. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  51. package/dist/cjs/components/Tooltip/Tooltip.d.ts +3 -3
  52. package/dist/cjs/components/Tooltip/Tooltip.js +115 -151
  53. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  54. package/dist/cjs/components/View/View.js +2 -2
  55. package/dist/cjs/components/View/View.js.map +1 -1
  56. package/dist/cjs/components/View/ViewInfinite.d.ts +1 -1
  57. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  58. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  59. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +10 -8
  60. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  61. package/dist/cjs/index.d.ts +37 -30
  62. package/dist/cjs/index.js +13 -13
  63. package/dist/cjs/index.js.map +1 -1
  64. package/dist/cjs/lib/floating/adapters.d.ts +2 -0
  65. package/dist/cjs/lib/floating/adapters.js +63 -0
  66. package/dist/cjs/lib/floating/adapters.js.map +1 -0
  67. package/dist/cjs/lib/floating/functions.d.ts +10 -0
  68. package/dist/cjs/lib/floating/functions.js +36 -0
  69. package/dist/cjs/lib/floating/functions.js.map +1 -0
  70. package/dist/cjs/lib/floating/index.d.ts +4 -0
  71. package/dist/cjs/lib/floating/index.js +75 -0
  72. package/dist/cjs/lib/floating/index.js.map +1 -0
  73. package/dist/cjs/lib/floating/types.d.ts +4 -0
  74. package/dist/cjs/lib/floating/types.js +6 -0
  75. package/dist/cjs/lib/floating/types.js.map +1 -0
  76. package/dist/cjs/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  77. package/dist/cjs/lib/warnOnce.d.ts +7 -0
  78. package/dist/cjs/lib/warnOnce.js +14 -0
  79. package/dist/cjs/lib/warnOnce.js.map +1 -1
  80. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  81. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  82. package/dist/components/ChipsSelect/ChipsSelect.js +0 -4
  83. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  84. package/dist/components/ContentCard/ContentCard.js +2 -1
  85. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  86. package/dist/components/CustomSelect/CustomSelect.js +5 -4
  87. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  88. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  89. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  90. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  91. package/dist/components/DateInput/DateInput.d.ts +3 -2
  92. package/dist/components/DateInput/DateInput.js +3 -2
  93. package/dist/components/DateInput/DateInput.js.map +1 -1
  94. package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  95. package/dist/components/DateRangeInput/DateRangeInput.js +3 -2
  96. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  97. package/dist/components/FixedLayout/FixedLayout.js +1 -1
  98. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  99. package/dist/components/FormField/FormField.js +6 -10
  100. package/dist/components/FormField/FormField.js.map +1 -1
  101. package/dist/components/IconButton/IconButton.js +9 -0
  102. package/dist/components/IconButton/IconButton.js.map +1 -1
  103. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  104. package/dist/components/ModalCard/ModalCard.js +4 -2
  105. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  106. package/dist/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  107. package/dist/components/ModalCardBase/ModalCardBase.js +9 -2
  108. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  109. package/dist/components/ModalPage/ModalPage.d.ts +2 -6
  110. package/dist/components/ModalPage/ModalPage.js +13 -7
  111. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  112. package/dist/components/ModalRoot/ModalRoot.js +1 -2
  113. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  114. package/dist/components/Popper/Popper.d.ts +12 -9
  115. package/dist/components/Popper/Popper.js +93 -120
  116. package/dist/components/Popper/Popper.js.map +1 -1
  117. package/dist/components/PopperArrow/PopperArrow.d.ts +15 -5
  118. package/dist/components/PopperArrow/PopperArrow.js +40 -15
  119. package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
  120. package/dist/components/Root/Root.js +1 -1
  121. package/dist/components/Root/Root.js.map +1 -1
  122. package/dist/components/SplitCol/SplitCol.d.ts +0 -6
  123. package/dist/components/SplitCol/SplitCol.js +1 -7
  124. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  125. package/dist/components/SplitCol/SplitColContext.d.ts +7 -0
  126. package/dist/components/SplitCol/SplitColContext.js +9 -0
  127. package/dist/components/SplitCol/SplitColContext.js.map +1 -0
  128. package/dist/components/TabbarItem/TabbarItem.js +9 -0
  129. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  130. package/dist/components/Tooltip/Tooltip.d.ts +3 -3
  131. package/dist/components/Tooltip/Tooltip.js +115 -151
  132. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  133. package/dist/components/View/View.js +1 -1
  134. package/dist/components/View/View.js.map +1 -1
  135. package/dist/components/View/ViewInfinite.d.ts +1 -1
  136. package/dist/components/View/ViewInfinite.js +1 -1
  137. package/dist/components/View/ViewInfinite.js.map +1 -1
  138. package/dist/components/WriteBarIcon/WriteBarIcon.js +11 -9
  139. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  140. package/dist/components.css +142 -2
  141. package/dist/components.css.map +1 -1
  142. package/dist/components.js.tmp +61921 -4
  143. package/dist/cssm/components/Alert/Alert.module.css +1 -1
  144. package/dist/cssm/components/Avatar/Avatar.module.css +1 -1
  145. package/dist/cssm/components/Button/Button.module.css +1 -1
  146. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +1 -1
  147. package/dist/cssm/components/CalendarTime/CalendarTime.module.css +1 -1
  148. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  149. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  150. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.module.css +1 -1
  151. package/dist/cssm/components/Checkbox/Checkbox.module.css +1 -1
  152. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +0 -4
  153. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  154. package/dist/cssm/components/ContentCard/ContentCard.js +2 -1
  155. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  156. package/dist/cssm/components/CustomSelect/CustomSelect.js +5 -4
  157. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  158. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  159. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  160. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  161. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +1 -1
  162. package/dist/cssm/components/DateInput/DateInput.d.ts +3 -2
  163. package/dist/cssm/components/DateInput/DateInput.js +4 -2
  164. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  165. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  166. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +3 -2
  167. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  168. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
  169. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  170. package/dist/cssm/components/FormField/FormField.js +6 -10
  171. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  172. package/dist/cssm/components/FormField/FormField.module.css +1 -1
  173. package/dist/cssm/components/Header/Header.module.css +1 -1
  174. package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +1 -1
  175. package/dist/cssm/components/IconButton/IconButton.js +9 -0
  176. package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
  177. package/dist/cssm/components/InputLike/InputLike.module.css +1 -1
  178. package/dist/cssm/components/ModalCard/ModalCard.d.ts +1 -1
  179. package/dist/cssm/components/ModalCard/ModalCard.js +4 -2
  180. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  181. package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  182. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +9 -2
  183. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  184. package/dist/cssm/components/ModalPage/ModalPage.d.ts +2 -6
  185. package/dist/cssm/components/ModalPage/ModalPage.js +13 -7
  186. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  187. package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -1
  188. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -2
  189. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  190. package/dist/cssm/components/Pagination/Pagination.module.css +1 -1
  191. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +1 -1
  192. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.module.css +1 -1
  193. package/dist/cssm/components/Popper/Popper.d.ts +12 -9
  194. package/dist/cssm/components/Popper/Popper.js +93 -120
  195. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  196. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +15 -5
  197. package/dist/cssm/components/PopperArrow/PopperArrow.js +40 -15
  198. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
  199. package/dist/cssm/components/PopperArrow/PopperArrow.module.css +1 -1
  200. package/dist/cssm/components/Radio/Radio.module.css +1 -1
  201. package/dist/cssm/components/RichCell/RichCell.module.css +1 -1
  202. package/dist/cssm/components/Root/Root.js +1 -1
  203. package/dist/cssm/components/Root/Root.js.map +1 -1
  204. package/dist/cssm/components/Search/Search.module.css +1 -1
  205. package/dist/cssm/components/SegmentedControl/SegmentedControl.module.css +1 -1
  206. package/dist/cssm/components/Select/Select.module.css +1 -1
  207. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +1 -1
  208. package/dist/cssm/components/SplitCol/SplitCol.d.ts +0 -6
  209. package/dist/cssm/components/SplitCol/SplitCol.js +1 -7
  210. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  211. package/dist/cssm/components/SplitCol/SplitColContext.d.ts +7 -0
  212. package/dist/cssm/components/SplitCol/SplitColContext.js +9 -0
  213. package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -0
  214. package/dist/cssm/components/TabbarItem/TabbarItem.js +9 -0
  215. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  216. package/dist/cssm/components/Tabs/Tabs.module.css +1 -1
  217. package/dist/cssm/components/Tooltip/Tooltip.d.ts +3 -3
  218. package/dist/cssm/components/Tooltip/Tooltip.js +121 -151
  219. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  220. package/dist/cssm/components/Tooltip/Tooltip.module.css +1 -1
  221. package/dist/cssm/components/Typography/Caption/Caption.module.css +1 -1
  222. package/dist/cssm/components/Typography/Footnote/Footnote.module.css +1 -1
  223. package/dist/cssm/components/Typography/Headline/Headline.module.css +1 -1
  224. package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +1 -1
  225. package/dist/cssm/components/Typography/Subhead/Subhead.module.css +1 -1
  226. package/dist/cssm/components/Typography/Text/Text.module.css +1 -1
  227. package/dist/cssm/components/Typography/Title/Title.module.css +1 -1
  228. package/dist/cssm/components/View/View.js +1 -1
  229. package/dist/cssm/components/View/View.js.map +1 -1
  230. package/dist/cssm/components/View/View.module.css +1 -1
  231. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  232. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  233. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  234. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +11 -9
  235. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  236. package/dist/cssm/index.d.ts +37 -30
  237. package/dist/cssm/index.js +24 -18
  238. package/dist/cssm/index.js.map +1 -1
  239. package/dist/cssm/lib/floating/adapters.d.ts +2 -0
  240. package/dist/cssm/lib/floating/adapters.js +56 -0
  241. package/dist/cssm/lib/floating/adapters.js.map +1 -0
  242. package/dist/cssm/lib/floating/functions.d.ts +10 -0
  243. package/dist/cssm/lib/floating/functions.js +28 -0
  244. package/dist/cssm/lib/floating/functions.js.map +1 -0
  245. package/dist/cssm/lib/floating/index.d.ts +4 -0
  246. package/dist/cssm/lib/floating/index.js +4 -0
  247. package/dist/cssm/lib/floating/index.js.map +1 -0
  248. package/dist/cssm/lib/floating/types.d.ts +4 -0
  249. package/dist/cssm/lib/floating/types.js +2 -0
  250. package/dist/cssm/lib/floating/types.js.map +1 -0
  251. package/dist/cssm/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  252. package/dist/cssm/lib/warnOnce.d.ts +7 -0
  253. package/dist/cssm/lib/warnOnce.js +12 -0
  254. package/dist/cssm/lib/warnOnce.js.map +1 -1
  255. package/dist/cssm/styles/common.css +1 -1
  256. package/dist/cssm/styles/themes.css +1 -1
  257. package/dist/index.d.ts +37 -30
  258. package/dist/index.js +22 -16
  259. package/dist/index.js.map +1 -1
  260. package/dist/lib/floating/adapters.d.ts +2 -0
  261. package/dist/lib/floating/adapters.js +56 -0
  262. package/dist/lib/floating/adapters.js.map +1 -0
  263. package/dist/lib/floating/functions.d.ts +10 -0
  264. package/dist/lib/floating/functions.js +28 -0
  265. package/dist/lib/floating/functions.js.map +1 -0
  266. package/dist/lib/floating/index.d.ts +4 -0
  267. package/dist/lib/floating/index.js +4 -0
  268. package/dist/lib/floating/index.js.map +1 -0
  269. package/dist/lib/floating/types.d.ts +4 -0
  270. package/dist/lib/floating/types.js +2 -0
  271. package/dist/lib/floating/types.js.map +1 -0
  272. package/dist/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  273. package/dist/lib/warnOnce.d.ts +7 -0
  274. package/dist/lib/warnOnce.js +12 -0
  275. package/dist/lib/warnOnce.js.map +1 -1
  276. package/dist/stable.js.tmp +69 -21
  277. package/dist/vkui.css +143 -3
  278. package/dist/vkui.css.map +1 -1
  279. package/dist/vkui.js.tmp +61837 -0
  280. package/package.json +4 -5
  281. package/dist/cssm/styles/components.css +0 -3
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useSplitCol = exports.SplitColContext = void 0;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var SplitColContext = /*#__PURE__*/React.createContext({
10
+ colRef: null,
11
+ animate: true
12
+ });
13
+ exports.SplitColContext = SplitColContext;
14
+ var useSplitCol = function useSplitCol() {
15
+ return React.useContext(SplitColContext);
16
+ };
17
+ exports.useSplitCol = useSplitCol;
18
+ //# sourceMappingURL=SplitColContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitColContext.js","names":["SplitColContext","React","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;AAOO,IAAMA,eAAe,gBAAGC,KAAK,CAACC,aAAa,CAAuB;EACvEC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;AACX,CAAC,CAAC;AAAC;AAEI,IAAMC,WAAW,GAAG,SAAdA,WAAW;EAAA,OAASJ,KAAK,CAACK,UAAU,CAACN,eAAe,CAAC;AAAA;AAAC"}
@@ -14,7 +14,10 @@ var _usePlatform = require("../../hooks/usePlatform");
14
14
  var _Tappable = require("../Tappable/Tappable");
15
15
  var _Footnote = require("../Typography/Footnote/Footnote");
16
16
  var _platform = require("../../lib/platform");
17
+ var _warnOnce = require("../../lib/warnOnce");
17
18
  var _excluded = ["children", "selected", "indicator", "text", "href", "Component", "disabled", "className"];
19
+ var warn = (0, _warnOnce.warnOnce)('TabbarItem');
20
+
18
21
  /**
19
22
  * @see https://vkcom.github.io/VKUI/#/TabbarItem
20
23
  */
@@ -30,6 +33,12 @@ var TabbarItem = function TabbarItem(_ref) {
30
33
  className = _ref.className,
31
34
  restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
32
35
  var platform = (0, _usePlatform.usePlatform)();
36
+ if (process.env.NODE_ENV === 'development') {
37
+ var isAccessible = !text && (!restProps['aria-label'] || !restProps['aria-labelledby']);
38
+ if (!isAccessible) {
39
+ warn(_warnOnce.COMMON_WARNINGS.a11y[Component === 'a' ? 'link-name' : 'button-name'], 'error');
40
+ }
41
+ }
33
42
  return /*#__PURE__*/React.createElement(Component, (0, _extends2.default)({}, restProps, {
34
43
  disabled: disabled,
35
44
  href: href,
@@ -1 +1 @@
1
- {"version":3,"file":"TabbarItem.js","names":["TabbarItem","children","selected","indicator","text","href","Component","disabled","className","restProps","platform","usePlatform","classNames","Platform","IOS","ANDROID","hasReactNode"],"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;AACA;AACA;AACA;AACA;AACA;AAA8C;AAmB9C;AACA;AACA;AACO,IAAMA,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,GAAG,IAAAC,wBAAW,GAAE;EAE9B,oBACE,oBAAC,SAAS,6BACJF,SAAS;IACb,QAAQ,EAAEF,QAAS;IACnB,IAAI,EAAEF,IAAK;IACX,SAAS,EAAE,IAAAO,gBAAU,oBAEnBF,QAAQ,KAAKG,kBAAQ,CAACC,GAAG,yBAA6B,EACtDJ,QAAQ,KAAKG,kBAAQ,CAACE,OAAO,6BAAiC,EAC9Db,QAAQ,8BAAkC,EAC1C,CAAC,CAACE,IAAI,0BAA8B,EACpCI,SAAS;EACT,iBAEF,oBAAC,kBAAQ;IACP,IAAI,EAAC,cAAc;IACnB,SAAS,EAAC,KAAK;IACf,QAAQ,EAAED,QAAS;IACnB,UAAU,EACRG,QAAQ,KAAKG,kBAAQ,CAACC,GAAG,wCAA4C,YACtE;IACD,iBAAiB,EAAEJ,QAAQ,KAAKG,kBAAQ,CAACC,GAAG,GAAG,CAAC,GAAG,GAAI;IACvD,QAAQ,EAAE,KAAM;IAChB,SAAS;EAAiC,EAC1C,eACF;IAAK,SAAS;EAA2B,gBACvC;IAAK,SAAS;EAA6B,GACxCb,QAAQ,eACT;IAAK,SAAS;EAA8B,GAAE,IAAAe,kBAAY,EAACb,SAAS,CAAC,IAAIA,SAAS,CAAO,CACrF,EACLC,IAAI,iBACH,oBAAC,kBAAQ;IAAC,SAAS,EAAC,KAAK;IAAC,SAAS,wBAA6B;IAAC,MAAM,EAAC;EAAG,GACxEA,IAAI,CAER,CACG,CACI;AAEhB,CAAC;AAAC"}
1
+ {"version":3,"file":"TabbarItem.js","names":["warn","warnOnce","TabbarItem","children","selected","indicator","text","href","Component","disabled","className","restProps","platform","usePlatform","process","env","NODE_ENV","isAccessible","COMMON_WARNINGS","a11y","classNames","Platform","IOS","ANDROID","hasReactNode"],"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;AACA;AACA;AACA;AACA;AACA;AAEA;AAA+D;AAkB/D,IAAMA,IAAI,GAAG,IAAAC,kBAAQ,EAAC,YAAY,CAAC;;AAEnC;AACA;AACA;AACO,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,GAAG,IAAAC,wBAAW,GAAE;EAE9B,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1C,IAAMC,YAAY,GAAG,CAACX,IAAI,KAAK,CAACK,SAAS,CAAC,YAAY,CAAC,IAAI,CAACA,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAEzF,IAAI,CAACM,YAAY,EAAE;MACjBjB,IAAI,CAACkB,yBAAe,CAACC,IAAI,CAACX,SAAS,KAAK,GAAG,GAAG,WAAW,GAAG,aAAa,CAAC,EAAE,OAAO,CAAC;IACtF;EACF;EAEA,oBACE,oBAAC,SAAS,6BACJG,SAAS;IACb,QAAQ,EAAEF,QAAS;IACnB,IAAI,EAAEF,IAAK;IACX,SAAS,EAAE,IAAAa,gBAAU,oBAEnBR,QAAQ,KAAKS,kBAAQ,CAACC,GAAG,yBAA6B,EACtDV,QAAQ,KAAKS,kBAAQ,CAACE,OAAO,6BAAiC,EAC9DnB,QAAQ,8BAAkC,EAC1C,CAAC,CAACE,IAAI,0BAA8B,EACpCI,SAAS;EACT,iBAEF,oBAAC,kBAAQ;IACP,IAAI,EAAC,cAAc;IACnB,SAAS,EAAC,KAAK;IACf,QAAQ,EAAED,QAAS;IACnB,UAAU,EACRG,QAAQ,KAAKS,kBAAQ,CAACC,GAAG,wCAA4C,YACtE;IACD,iBAAiB,EAAEV,QAAQ,KAAKS,kBAAQ,CAACC,GAAG,GAAG,CAAC,GAAG,GAAI;IACvD,QAAQ,EAAE,KAAM;IAChB,SAAS;EAAiC,EAC1C,eACF;IAAK,SAAS;EAA2B,gBACvC;IAAK,SAAS;EAA6B,GACxCnB,QAAQ,eACT;IAAK,SAAS;EAA8B,GAAE,IAAAqB,kBAAY,EAACnB,SAAS,CAAC,IAAIA,SAAS,CAAO,CACrF,EACLC,IAAI,iBACH,oBAAC,kBAAQ;IAAC,SAAS,EAAC,KAAK;IAAC,SAAS,wBAA6B;IAAC,MAAM,EAAC;EAAG,GACxEA,IAAI,CAER,CACG,CACI;AAEhB,CAAC;AAAC"}
@@ -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;
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.Tooltip = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
14
14
  var React = _interopRequireWildcard(require("react"));
15
15
  var _reactDom = _interopRequireDefault(require("react-dom"));
@@ -17,52 +17,24 @@ var _vkjs = require("@vkontakte/vkjs");
17
17
  var _Subhead = require("../Typography/Subhead/Subhead");
18
18
  var _NavTransitionContext = require("../NavTransitionContext/NavTransitionContext");
19
19
  var _PopperArrow = require("../PopperArrow/PopperArrow");
20
- var _reactPopper = require("react-popper");
20
+ var _floating = require("../../lib/floating");
21
21
  var _TooltipContainer = require("./TooltipContainer");
22
22
  var _useExternRef = require("../../hooks/useExternRef");
23
23
  var _dom = require("../../lib/dom");
24
24
  var _warnOnce = require("../../lib/warnOnce");
25
25
  var _useGlobalEventListener = require("../../hooks/useGlobalEventListener");
26
- var _excluded = ["className"],
27
- _excluded2 = ["children", "isShown", "offsetX", "offsetY", "alignX", "alignY", "onClose", "cornerOffset", "cornerAbsoluteOffset", "appearance", "arrow", "placement"];
26
+ var _excluded = ["children", "isShown", "offsetX", "offsetY", "alignX", "alignY", "onClose", "cornerOffset", "cornerAbsoluteOffset", "appearance", "arrow", "placement", "text", "header", "className"];
28
27
  var isDOMTypeElement = function isDOMTypeElement(element) {
29
28
  return /*#__PURE__*/React.isValidElement(element) && typeof element.type === 'string';
30
29
  };
31
30
  var warn = (0, _warnOnce.warnOnce)('Tooltip');
32
- var IS_DEV = process.env.NODE_ENV === 'development';
33
- var SimpleTooltip = /*#__PURE__*/React.forwardRef(function SimpleTooltip(_ref, ref) {
34
- var _attributes$container;
35
- var _ref$appearance = _ref.appearance,
36
- appearance = _ref$appearance === void 0 ? 'accent' : _ref$appearance,
37
- header = _ref.header,
38
- text = _ref.text,
39
- arrow = _ref.arrow,
40
- _ref$style = _ref.style,
41
- popperStyles = _ref$style === void 0 ? {} : _ref$style,
42
- attributes = _ref.attributes,
43
- className = _ref.className;
44
- var _ref2 = (_attributes$container = attributes === null || attributes === void 0 ? void 0 : attributes.container) !== null && _attributes$container !== void 0 ? _attributes$container : {},
45
- containerClassName = _ref2.className,
46
- restContainerAttributes = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
47
- return /*#__PURE__*/React.createElement("div", {
48
- className: (0, _vkjs.classNames)("vkuiTooltip", styles["Tooltip--appearance-".concat(appearance)], className)
49
- }, /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
50
- className: (0, _vkjs.classNames)("vkuiTooltip__container", containerClassName),
51
- ref: ref,
52
- style: popperStyles.container
53
- }, restContainerAttributes), arrow && /*#__PURE__*/React.createElement(_PopperArrow.PopperArrow, {
54
- style: popperStyles.arrow,
55
- attributes: attributes === null || attributes === void 0 ? void 0 : attributes.arrow,
56
- arrowClassName: "vkuiTooltip__arrow"
57
- }), /*#__PURE__*/React.createElement("div", {
58
- className: "vkuiTooltip__content"
59
- }, header && /*#__PURE__*/React.createElement(_Subhead.Subhead, {
60
- weight: "2",
61
- className: "vkuiTooltip__title"
62
- }, header), text && /*#__PURE__*/React.createElement(_Subhead.Subhead, {
63
- className: "vkuiTooltip__text"
64
- }, text))));
65
- });
31
+ var stylesAppearance = {
32
+ accent: "vkuiTooltip--appearance-accent",
33
+ neutral: "vkuiTooltip--appearance-neutral",
34
+ white: "vkuiTooltip--appearance-white",
35
+ black: "vkuiTooltip--appearance-black",
36
+ inversion: "vkuiTooltip--appearance-inversion"
37
+ };
66
38
  function mapAlignX(x) {
67
39
  switch (x) {
68
40
  case 'left':
@@ -73,7 +45,7 @@ function mapAlignX(x) {
73
45
  return '';
74
46
  }
75
47
  }
76
- function getPlacement(alignX, alignY) {
48
+ function getDefaultPlacement(alignX, alignY) {
77
49
  return [alignY || 'bottom', mapAlignX(alignX || 'left')].filter(function (p) {
78
50
  return !!p;
79
51
  }).join('-');
@@ -85,150 +57,142 @@ function isVerticalPlacement(placement) {
85
57
  /**
86
58
  * @see https://vkcom.github.io/VKUI/#/Tooltip
87
59
  */
88
- var Tooltip = function Tooltip(_ref3) {
89
- var _attributes$arrow, _attributes$popper;
90
- var children = _ref3.children,
91
- _ref3$isShown = _ref3.isShown,
92
- _isShown = _ref3$isShown === void 0 ? true : _ref3$isShown,
93
- _ref3$offsetX = _ref3.offsetX,
94
- offsetX = _ref3$offsetX === void 0 ? 0 : _ref3$offsetX,
95
- _ref3$offsetY = _ref3.offsetY,
96
- offsetY = _ref3$offsetY === void 0 ? 15 : _ref3$offsetY,
97
- alignX = _ref3.alignX,
98
- alignY = _ref3.alignY,
99
- onClose = _ref3.onClose,
100
- _ref3$cornerOffset = _ref3.cornerOffset,
101
- cornerOffset = _ref3$cornerOffset === void 0 ? 0 : _ref3$cornerOffset,
102
- cornerAbsoluteOffset = _ref3.cornerAbsoluteOffset,
103
- appearance = _ref3.appearance,
104
- _ref3$arrow = _ref3.arrow,
105
- arrow = _ref3$arrow === void 0 ? true : _ref3$arrow,
106
- placement = _ref3.placement,
107
- restProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded2);
108
- var _useNavTransition = (0, _NavTransitionContext.useNavTransition)(),
109
- entering = _useNavTransition.entering;
110
- var isShown = _isShown && !entering;
60
+ var Tooltip = function Tooltip(_ref) {
61
+ var children = _ref.children,
62
+ _ref$isShown = _ref.isShown,
63
+ isShownProp = _ref$isShown === void 0 ? true : _ref$isShown,
64
+ _ref$offsetX = _ref.offsetX,
65
+ offsetX = _ref$offsetX === void 0 ? 0 : _ref$offsetX,
66
+ _ref$offsetY = _ref.offsetY,
67
+ offsetY = _ref$offsetY === void 0 ? 15 : _ref$offsetY,
68
+ alignX = _ref.alignX,
69
+ alignY = _ref.alignY,
70
+ onClose = _ref.onClose,
71
+ _ref$cornerOffset = _ref.cornerOffset,
72
+ cornerOffset = _ref$cornerOffset === void 0 ? 0 : _ref$cornerOffset,
73
+ cornerAbsoluteOffset = _ref.cornerAbsoluteOffset,
74
+ _ref$appearance = _ref.appearance,
75
+ appearance = _ref$appearance === void 0 ? 'accent' : _ref$appearance,
76
+ _ref$arrow = _ref.arrow,
77
+ arrow = _ref$arrow === void 0 ? true : _ref$arrow,
78
+ placementProp = _ref.placement,
79
+ text = _ref.text,
80
+ header = _ref.header,
81
+ className = _ref.className,
82
+ restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
83
+ var arrowRef = React.useRef(null);
111
84
  var _React$useState = React.useState(null),
112
85
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
113
- tooltipRef = _React$useState2[0],
114
- setTooltipRef = _React$useState2[1];
115
- var _React$useState3 = React.useState(),
116
- _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
117
- target = _React$useState4[0],
118
- setTarget = _React$useState4[1];
119
- if (IS_DEV) {
86
+ target = _React$useState2[0],
87
+ setTarget = _React$useState2[1];
88
+ /* eslint-disable no-restricted-properties */
89
+ var tooltipContainer = React.useMemo(function () {
90
+ return target === null || target === void 0 ? void 0 : target.closest("[".concat(_TooltipContainer.tooltipContainerAttr, "]"));
91
+ }, [target]);
92
+ var _useNavTransition = (0, _NavTransitionContext.useNavTransition)(),
93
+ entering = _useNavTransition.entering;
94
+ var isShown = isShownProp && tooltipContainer && !entering;
95
+ var placement = placementProp || getDefaultPlacement(alignX, alignY);
96
+ var isNotAutoPlacement = (0, _floating.checkIsNotAutoPlacement)(placement);
97
+ if (process.env.NODE_ENV === 'development') {
120
98
  var multiChildren = React.Children.count(children) > 1;
121
99
  // Empty children is a noop
122
100
  var primitiveChild = (0, _vkjs.hasReactNode)(children) && (0, _typeof2.default)(children) !== 'object';
123
101
  (multiChildren || primitiveChild) && warn(['children должен быть одним React элементом, получено', multiChildren && 'несколько', primitiveChild && JSON.stringify(children)].filter(Boolean).join(' '), 'error');
124
102
  }
125
-
126
- /* eslint-disable no-restricted-properties */
127
- /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion*/
128
- var tooltipContainer = React.useMemo(function () {
129
- return target === null || target === void 0 ? void 0 : target.closest("[".concat(_TooltipContainer.tooltipContainerAttr, "]"));
130
- }, [target]);
131
- var strategy = React.useMemo(function () {
103
+ var floatingPositionStrategy = React.useMemo(function () {
132
104
  return (target === null || target === void 0 ? void 0 : target.style.position) === 'fixed' ? 'fixed' : 'absolute';
133
105
  }, [target]);
134
- /* eslint-enable @typescript-eslint/no-unnecessary-type-assertion*/
135
- /* eslint-enable no-restricted-properties */
136
-
137
- if (IS_DEV && target && !tooltipContainer) {
106
+ if (process.env.NODE_ENV === 'development' && target && !tooltipContainer) {
138
107
  throw new Error('Use TooltipContainer for Tooltip outside Panel (see docs)');
139
108
  }
140
- var modifiers = React.useMemo(function () {
141
- var modifiers = [{
142
- name: 'offset',
143
- options: {
144
- offset: [offsetX, offsetY]
145
- }
146
- }, {
147
- name: 'preventOverflow'
148
- }, {
149
- name: 'flip'
150
- }];
109
+ var memoizedMiddlewares = React.useMemo(function () {
110
+ var middlewares = [(0, _floating.offsetMiddleware)({
111
+ crossAxis: offsetX,
112
+ mainAxis: offsetY
113
+ })];
114
+
115
+ // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement
116
+ if (isNotAutoPlacement) {
117
+ middlewares.push((0, _floating.flipMiddleware)());
118
+ } else {
119
+ middlewares.push((0, _floating.autoPlacementMiddleware)({
120
+ alignment: placement ? (0, _floating.getAutoPlacementAlign)(placement) : null
121
+ }));
122
+ }
123
+ middlewares.push((0, _floating.shiftMiddleware)());
124
+
125
+ // см. https://floating-ui.com/docs/arrow#order
151
126
  if (arrow) {
152
- modifiers.push({
153
- name: 'arrow',
154
- options: {
155
- padding: 14
156
- }
157
- });
158
- modifiers.push({
127
+ middlewares.push((0, _floating.arrowMiddleware)({
128
+ element: arrowRef,
129
+ padding: 14
130
+ }));
131
+ middlewares.push({
159
132
  name: 'arrowOffset',
160
- enabled: true,
161
- phase: 'main',
162
- fn: function fn(_ref4) {
163
- var state = _ref4.state;
164
- if (!state.modifiersData.arrow) {
165
- return;
133
+ fn: function fn(_ref2) {
134
+ var placement = _ref2.placement,
135
+ middlewareData = _ref2.middlewareData;
136
+ if (!middlewareData.arrow) {
137
+ return Promise.resolve({});
166
138
  }
167
- if (isVerticalPlacement(state.placement)) {
139
+ if (isVerticalPlacement(placement)) {
168
140
  if (cornerAbsoluteOffset !== undefined) {
169
- state.modifiersData.arrow.x = cornerAbsoluteOffset;
170
- } else {
171
- var _state$modifiersData$;
172
- if (((_state$modifiersData$ = state.modifiersData.arrow) === null || _state$modifiersData$ === void 0 ? void 0 : _state$modifiersData$.x) !== undefined) {
173
- state.modifiersData.arrow.x += cornerOffset;
174
- }
141
+ middlewareData.arrow.x = cornerAbsoluteOffset;
142
+ } else if (middlewareData.arrow.x !== undefined) {
143
+ middlewareData.arrow.x += cornerOffset;
175
144
  }
176
145
  } else {
177
146
  if (cornerAbsoluteOffset !== undefined) {
178
- state.modifiersData.arrow.y = cornerAbsoluteOffset;
179
- } else {
180
- var _state$modifiersData$2;
181
- if (((_state$modifiersData$2 = state.modifiersData.arrow) === null || _state$modifiersData$2 === void 0 ? void 0 : _state$modifiersData$2.y) !== undefined) {
182
- state.modifiersData.arrow.y += cornerOffset;
183
- }
147
+ middlewareData.arrow.y = cornerAbsoluteOffset;
148
+ } else if (middlewareData.arrow.y !== undefined) {
149
+ middlewareData.arrow.y += cornerOffset;
184
150
  }
185
151
  }
152
+ return Promise.resolve({});
186
153
  }
187
154
  });
188
155
  }
189
- return modifiers;
190
- }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY]);
191
- var _placement = placement !== null && placement !== void 0 ? placement : getPlacement(alignX, alignY);
192
- var _usePopper = (0, _reactPopper.usePopper)(target, tooltipRef, {
193
- strategy: strategy,
194
- placement: _placement,
195
- modifiers: modifiers
156
+ return middlewares;
157
+ }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY, placement, isNotAutoPlacement]);
158
+ var _useFloating = (0, _floating.useFloating)({
159
+ strategy: floatingPositionStrategy,
160
+ placement: isNotAutoPlacement ? placement : undefined,
161
+ middleware: memoizedMiddlewares,
162
+ whileElementsMounted: _floating.autoUpdateFloatingElement
196
163
  }),
197
- popperStyles = _usePopper.styles,
198
- attributes = _usePopper.attributes;
164
+ floatingDataX = _useFloating.x,
165
+ floatingDataY = _useFloating.y,
166
+ resolvedPlacement = _useFloating.placement,
167
+ refs = _useFloating.refs,
168
+ arrowCoords = _useFloating.middlewareData.arrow;
199
169
  var _useDOM = (0, _dom.useDOM)(),
200
170
  document = _useDOM.document;
201
171
  (0, _useGlobalEventListener.useGlobalEventListener)(document, 'click', isShown && onClose, {
202
172
  capture: true,
203
173
  passive: true
204
174
  });
205
- // NOTE: setting isShown to true used to trigger usePopper().forceUpdate()
206
-
207
175
  var childRef = isDOMTypeElement(children) ? children.ref : /*#__PURE__*/React.isValidElement(children) ? children.props.getRootRef : null;
208
- var patchedRef = (0, _useExternRef.useExternRef)(setTarget, childRef);
176
+ var patchedRef = (0, _useExternRef.useExternRef)(setTarget, refs.setReference, childRef);
209
177
  var child = /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, (0, _defineProperty2.default)({}, isDOMTypeElement(children) ? 'ref' : 'getRootRef', patchedRef)) : children;
210
- return /*#__PURE__*/React.createElement(React.Fragment, null, child, isShown && target != null && /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/React.createElement(SimpleTooltip, (0, _extends2.default)({}, restProps, {
211
- appearance: appearance,
212
- arrow: arrow,
213
- ref: function ref(el) {
214
- return setTooltipRef(el);
215
- },
216
- style: {
217
- arrow: popperStyles.arrow,
218
- container: popperStyles.popper
219
- },
220
- attributes: {
221
- arrow: (_attributes$arrow = attributes.arrow) !== null && _attributes$arrow !== void 0 ? _attributes$arrow : null,
222
- container: (_attributes$popper = attributes.popper) !== null && _attributes$popper !== void 0 ? _attributes$popper : null
223
- }
224
- })), tooltipContainer));
178
+ return /*#__PURE__*/React.createElement(React.Fragment, null, child, isShown && target != null && /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/React.createElement("div", (0, _extends2.default)({}, restProps, {
179
+ className: (0, _vkjs.classNames)("vkuiTooltip", stylesAppearance[appearance], className)
180
+ }), /*#__PURE__*/React.createElement("div", {
181
+ ref: refs.setFloating,
182
+ style: (0, _floating.convertFloatingDataToReactCSSProperties)(floatingPositionStrategy, floatingDataX, floatingDataY)
183
+ }, arrow && /*#__PURE__*/React.createElement(_PopperArrow.PopperArrow, {
184
+ coords: arrowCoords,
185
+ placement: resolvedPlacement,
186
+ arrowClassName: "vkuiTooltip__arrow",
187
+ getRootRef: arrowRef
188
+ }), /*#__PURE__*/React.createElement("div", {
189
+ className: "vkuiTooltip__content"
190
+ }, header && /*#__PURE__*/React.createElement(_Subhead.Subhead, {
191
+ weight: "2",
192
+ className: "vkuiTooltip__title"
193
+ }, header), text && /*#__PURE__*/React.createElement(_Subhead.Subhead, {
194
+ className: "vkuiTooltip__text"
195
+ }, text)))), tooltipContainer));
225
196
  };
226
197
  exports.Tooltip = Tooltip;
227
- var styles = {
228
- "Tooltip--appearance-accent": "vkuiTooltip--appearance-accent",
229
- "Tooltip--appearance-white": "vkuiTooltip--appearance-white",
230
- "Tooltip--appearance-black": "vkuiTooltip--appearance-black",
231
- "Tooltip--appearance-inversion": "vkuiTooltip--appearance-inversion",
232
- "Tooltip--appearance-neutral": "vkuiTooltip--appearance-neutral"
233
- };
234
198
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":["isDOMTypeElement","element","React","isValidElement","type","warn","warnOnce","IS_DEV","process","env","NODE_ENV","SimpleTooltip","forwardRef","ref","appearance","header","text","arrow","style","popperStyles","attributes","className","container","containerClassName","restContainerAttributes","classNames","styles","mapAlignX","x","getPlacement","alignX","alignY","filter","p","join","isVerticalPlacement","placement","startsWith","Tooltip","children","isShown","_isShown","offsetX","offsetY","onClose","cornerOffset","cornerAbsoluteOffset","restProps","useNavTransition","entering","useState","tooltipRef","setTooltipRef","target","setTarget","multiChildren","Children","count","primitiveChild","hasReactNode","JSON","stringify","Boolean","tooltipContainer","useMemo","closest","tooltipContainerAttr","strategy","position","Error","modifiers","name","options","offset","push","padding","enabled","phase","fn","state","modifiersData","undefined","y","_placement","usePopper","useDOM","document","useGlobalEventListener","capture","passive","childRef","props","getRootRef","patchedRef","useExternRef","child","cloneElement","ReactDOM","createPortal","el","popper"],"sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { useNavTransition } from '../NavTransitionContext/NavTransitionContext';\nimport { PopperArrow } from '../PopperArrow/PopperArrow';\nimport { Modifier, usePopper } from 'react-popper';\nimport { Placement } from '@popperjs/core';\nimport { tooltipContainerAttr } from './TooltipContainer';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { HasRootRef } from '../../types';\nimport styles from './Tooltip.module.css';\n\ninterface SimpleTooltipProps extends Partial<TooltipProps> {\n target?: HTMLDivElement;\n style?: {\n arrow: React.CSSProperties;\n container: React.CSSProperties;\n };\n attributes?: {\n arrow: React.HTMLAttributes<HTMLDivElement> | null;\n container: React.HTMLAttributes<HTMLDivElement> | null;\n };\n className?: string;\n}\n\n/**\n * Перебиваем `ref`.\n *\n * В оригинальном `React.DOMElement` задаётся `React.LegacyRef<T>`, в котором есть `string`.\n * Когда как `{ ref: \"string\" }` уже давно депрекейтнут.\n */\ninterface DOMElement<P extends React.HTMLAttributes<T> | React.SVGAttributes<T>, T extends Element>\n extends React.DOMElement<P, T> {\n ref: React.Ref<T>;\n}\n\nconst isDOMTypeElement = <\n P extends React.HTMLAttributes<T> | React.SVGAttributes<T>,\n T extends Element,\n>(\n element: React.ReactElement,\n): element is DOMElement<P, T> => {\n return React.isValidElement(element) && typeof element.type === 'string';\n};\n\nconst warn = warnOnce('Tooltip');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nconst SimpleTooltip = React.forwardRef<HTMLDivElement, SimpleTooltipProps>(function SimpleTooltip(\n { appearance = 'accent', header, text, arrow, style: popperStyles = {}, attributes, className },\n ref,\n) {\n const { className: containerClassName, ...restContainerAttributes } = attributes?.container ?? {};\n\n return (\n <div\n className={classNames(\n styles['Tooltip'],\n styles[`Tooltip--appearance-${appearance}`],\n className,\n )}\n >\n <div\n className={classNames(styles['Tooltip__container'], containerClassName)}\n ref={ref}\n style={popperStyles.container}\n {...restContainerAttributes}\n >\n {arrow && (\n <PopperArrow\n style={popperStyles.arrow}\n attributes={attributes?.arrow}\n arrowClassName={styles['Tooltip__arrow']}\n />\n )}\n <div className={styles['Tooltip__content']}>\n {header && (\n <Subhead weight=\"2\" className={styles['Tooltip__title']}>\n {header}\n </Subhead>\n )}\n {text && <Subhead className={styles['Tooltip__text']}>{text}</Subhead>}\n </div>\n </div>\n </div>\n );\n});\n\nexport interface TooltipProps {\n /**\n * **Важно**: если в `children` передан React-компонент, то необходимо убедиться в том, что он поддерживает\n * свойство `getRootRef`, которое должно возвращаться ссылку на корневой DOM-элемент компонента,\n * иначе тултип показан не будет. Если передан React-element, то такой проблемы нет.\n */\n children: React.ReactElement<HasRootRef<any>> | React.ReactElement;\n /**\n * Стиль отображения подсказки\n */\n appearance?: 'accent' | 'neutral' | 'white' | 'black' | 'inversion';\n /**\n * Если передан `false`, то рисуется просто `children`.\n */\n isShown?: boolean;\n /**\n * Текст тултипа.\n */\n text?: React.ReactNode;\n /**\n * Заголовок тултипа.\n */\n header?: React.ReactNode;\n /**\n * Положение по горизонтали (прижатие к левому или правому краю `children`).\n * Если не задано, позиция по горизонтали определятся автоматически\n */\n alignX?: 'center' | 'left' | 'right';\n /**\n * Положение по вертикали (расположение над или под `children`).\n * Если не задано, позиция по вертикали определятся автоматически\n */\n alignY?: 'top' | 'bottom';\n /**\n * Сдвиг по горизонтали (относительно портала, в котором рисуется тултип).\n */\n offsetX?: number;\n /**\n * Сдвиг по вертикали (относительно портала, в котором рисуется тултип).\n */\n offsetY?: number;\n /**\n * Отображать ли стрелку, указывающую на якорный элемент\n */\n arrow?: boolean;\n /**\n * Сдвиг стрелочки относительно центра дочернего элемента.\n */\n cornerOffset?: number;\n /**\n * Сдвиг стрелочки относительно ширины тултипа\n */\n cornerAbsoluteOffset?: number;\n /**\n * Callback, который вызывается при клике по любому месту в пределах экрана.\n */\n onClose?: () => void;\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Пользовательские css-классы, будут добавлены на root-элемент\n */\n className?: string;\n}\n\nfunction mapAlignX(x: TooltipProps['alignX']) {\n switch (x) {\n case 'left':\n return 'start';\n case 'right':\n return 'end';\n default:\n return '';\n }\n}\nfunction getPlacement(alignX: TooltipProps['alignX'], alignY: TooltipProps['alignY']): Placement {\n return [alignY || 'bottom', mapAlignX(alignX || 'left')]\n .filter((p) => !!p)\n .join('-') as Placement;\n}\nfunction isVerticalPlacement(placement: Placement) {\n return placement.startsWith('top') || placement.startsWith('bottom');\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tooltip\n */\nexport const Tooltip = ({\n children,\n isShown: _isShown = true,\n offsetX = 0,\n offsetY = 15,\n alignX,\n alignY,\n onClose,\n cornerOffset = 0,\n cornerAbsoluteOffset,\n appearance,\n arrow = true,\n placement,\n ...restProps\n}: TooltipProps) => {\n const { entering } = useNavTransition();\n const isShown = _isShown && !entering;\n const [tooltipRef, setTooltipRef] = React.useState<HTMLElement | null>(null);\n const [target, setTarget] = React.useState<HTMLElement>();\n\n if (IS_DEV) {\n const multiChildren = React.Children.count(children) > 1;\n // Empty children is a noop\n const primitiveChild = hasReactNode(children) && typeof children !== 'object';\n (multiChildren || primitiveChild) &&\n warn(\n [\n 'children должен быть одним React элементом, получено',\n multiChildren && 'несколько',\n primitiveChild && JSON.stringify(children),\n ]\n .filter(Boolean)\n .join(' '),\n 'error',\n );\n }\n\n /* eslint-disable no-restricted-properties */\n /* eslint-disable @typescript-eslint/no-unnecessary-type-assertion*/\n const tooltipContainer = React.useMemo(\n () => target?.closest(`[${tooltipContainerAttr}]`) as HTMLDivElement,\n [target],\n );\n const strategy = React.useMemo(\n () => (target?.style.position === 'fixed' ? 'fixed' : 'absolute'),\n [target],\n );\n /* eslint-enable @typescript-eslint/no-unnecessary-type-assertion*/\n /* eslint-enable no-restricted-properties */\n\n if (IS_DEV && target && !tooltipContainer) {\n throw new Error('Use TooltipContainer for Tooltip outside Panel (see docs)');\n }\n\n const modifiers = React.useMemo(() => {\n const modifiers: Array<Modifier<string>> = [\n {\n name: 'offset',\n options: {\n offset: [offsetX, offsetY],\n },\n },\n {\n name: 'preventOverflow',\n },\n {\n name: 'flip',\n },\n ];\n\n if (arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n padding: 14,\n },\n });\n modifiers.push({\n name: 'arrowOffset',\n enabled: true,\n phase: 'main',\n fn({ state }) {\n if (!state.modifiersData.arrow) {\n return;\n }\n if (isVerticalPlacement(state.placement)) {\n if (cornerAbsoluteOffset !== undefined) {\n state.modifiersData.arrow.x = cornerAbsoluteOffset;\n } else {\n if (state.modifiersData.arrow?.x !== undefined) {\n state.modifiersData.arrow.x += cornerOffset;\n }\n }\n } else {\n if (cornerAbsoluteOffset !== undefined) {\n state.modifiersData.arrow.y = cornerAbsoluteOffset;\n } else {\n if (state.modifiersData.arrow?.y !== undefined) {\n state.modifiersData.arrow.y += cornerOffset;\n }\n }\n }\n },\n });\n }\n\n return modifiers;\n }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY]);\n\n const _placement = placement ?? getPlacement(alignX, alignY);\n const { styles: popperStyles, attributes } = usePopper(target, tooltipRef, {\n strategy,\n placement: _placement,\n modifiers,\n });\n\n const { document } = useDOM();\n useGlobalEventListener(document, 'click', isShown && onClose, {\n capture: true,\n passive: true,\n });\n // NOTE: setting isShown to true used to trigger usePopper().forceUpdate()\n\n const childRef = isDOMTypeElement<React.HTMLAttributes<HTMLElement>, HTMLElement>(children)\n ? children.ref\n : React.isValidElement<HasRootRef<HTMLElement>>(children)\n ? children.props.getRootRef\n : null;\n const patchedRef = useExternRef(setTarget, childRef);\n const child = React.isValidElement(children)\n ? React.cloneElement(children, {\n [isDOMTypeElement(children) ? 'ref' : 'getRootRef']: patchedRef,\n })\n : children;\n\n return (\n <React.Fragment>\n {child}\n {isShown &&\n target != null &&\n ReactDOM.createPortal(\n <SimpleTooltip\n {...restProps}\n appearance={appearance}\n arrow={arrow}\n ref={(el) => setTooltipRef(el)}\n style={{\n arrow: popperStyles.arrow,\n container: popperStyles.popper,\n }}\n attributes={{\n arrow: attributes.arrow ?? null,\n container: attributes.popper ?? null,\n }}\n />,\n tooltipContainer,\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.js","names":["isDOMTypeElement","element","React","isValidElement","type","warn","warnOnce","stylesAppearance","accent","neutral","white","black","inversion","mapAlignX","x","getDefaultPlacement","alignX","alignY","filter","p","join","isVerticalPlacement","placement","startsWith","Tooltip","children","isShown","isShownProp","offsetX","offsetY","onClose","cornerOffset","cornerAbsoluteOffset","appearance","arrow","placementProp","text","header","className","restProps","arrowRef","useRef","useState","target","setTarget","tooltipContainer","useMemo","closest","tooltipContainerAttr","useNavTransition","entering","isNotAutoPlacement","checkIsNotAutoPlacement","process","env","NODE_ENV","multiChildren","Children","count","primitiveChild","hasReactNode","JSON","stringify","Boolean","floatingPositionStrategy","style","position","Error","memoizedMiddlewares","middlewares","offsetMiddleware","crossAxis","mainAxis","push","flipMiddleware","autoPlacementMiddleware","alignment","getAutoPlacementAlign","shiftMiddleware","arrowMiddleware","padding","name","fn","middlewareData","Promise","resolve","undefined","y","useFloating","strategy","middleware","whileElementsMounted","autoUpdateFloatingElement","floatingDataX","floatingDataY","resolvedPlacement","refs","arrowCoords","useDOM","document","useGlobalEventListener","capture","passive","childRef","ref","props","getRootRef","patchedRef","useExternRef","setReference","child","cloneElement","ReactDOM","createPortal","classNames","setFloating","convertFloatingDataToReactCSSProperties"],"sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { useNavTransition } from '../NavTransitionContext/NavTransitionContext';\nimport { PopperArrow } from '../PopperArrow/PopperArrow';\nimport {\n type Placement,\n type PlacementWithAuto,\n type UseFloatingMiddleware,\n useFloating,\n checkIsNotAutoPlacement,\n convertFloatingDataToReactCSSProperties,\n offsetMiddleware,\n shiftMiddleware,\n flipMiddleware,\n arrowMiddleware,\n autoUpdateFloatingElement,\n getAutoPlacementAlign,\n autoPlacementMiddleware,\n} from '../../lib/floating';\nimport { tooltipContainerAttr } from './TooltipContainer';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { HasRootRef } from '../../types';\nimport styles from './Tooltip.module.css';\n\n/**\n * Перебиваем `ref`.\n *\n * В оригинальном `React.DOMElement` задаётся `React.LegacyRef<T>`, в котором есть `string`.\n * Когда как `{ ref: \"string\" }` уже давно депрекейтнут.\n */\ninterface DOMElement<P extends React.HTMLAttributes<T> | React.SVGAttributes<T>, T extends Element>\n extends React.DOMElement<P, T> {\n ref: React.Ref<T>;\n}\n\nconst isDOMTypeElement = <\n P extends React.HTMLAttributes<T> | React.SVGAttributes<T>,\n T extends Element,\n>(\n element: React.ReactElement,\n): element is DOMElement<P, T> => {\n return React.isValidElement(element) && typeof element.type === 'string';\n};\n\nconst warn = warnOnce('Tooltip');\n\nconst stylesAppearance = {\n accent: styles['Tooltip--appearance-accent'],\n neutral: styles['Tooltip--appearance-neutral'],\n white: styles['Tooltip--appearance-white'],\n black: styles['Tooltip--appearance-black'],\n inversion: styles['Tooltip--appearance-inversion'],\n};\n\nexport interface TooltipProps {\n /**\n * **Важно**: если в `children` передан React-компонент, то необходимо убедиться в том, что он поддерживает\n * свойство `getRootRef`, которое должно возвращаться ссылку на корневой DOM-элемент компонента,\n * иначе тултип показан не будет. Если передан React-element, то такой проблемы нет.\n */\n children: React.ReactElement<HasRootRef<any>> | React.ReactElement;\n /**\n * Стиль отображения подсказки\n */\n appearance?: 'accent' | 'neutral' | 'white' | 'black' | 'inversion';\n /**\n * Если передан `false`, то рисуется просто `children`.\n */\n isShown?: boolean;\n /**\n * Текст тултипа.\n */\n text?: React.ReactNode;\n /**\n * Заголовок тултипа.\n */\n header?: React.ReactNode;\n /**\n * Положение по горизонтали (прижатие к левому или правому краю `children`).\n * Если не задано, позиция по горизонтали определятся автоматически\n */\n alignX?: 'center' | 'left' | 'right';\n /**\n * Положение по вертикали (расположение над или под `children`).\n * Если не задано, позиция по вертикали определятся автоматически\n */\n alignY?: 'top' | 'bottom';\n /**\n * Сдвиг по горизонтали (относительно портала, в котором рисуется тултип).\n */\n offsetX?: number;\n /**\n * Сдвиг по вертикали (относительно портала, в котором рисуется тултип).\n */\n offsetY?: number;\n /**\n * Отображать ли стрелку, указывающую на якорный элемент\n */\n arrow?: boolean;\n /**\n * Сдвиг стрелочки относительно центра дочернего элемента.\n */\n cornerOffset?: number;\n /**\n * Сдвиг стрелочки относительно ширины тултипа\n */\n cornerAbsoluteOffset?: number;\n /**\n * Callback, который вызывается при клике по любому месту в пределах экрана.\n */\n onClose?: () => void;\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: PlacementWithAuto;\n /**\n * Пользовательские css-классы, будут добавлены на root-элемент\n */\n className?: string;\n}\n\nfunction mapAlignX(x: TooltipProps['alignX']) {\n switch (x) {\n case 'left':\n return 'start';\n case 'right':\n return 'end';\n default:\n return '';\n }\n}\nfunction getDefaultPlacement(\n alignX: TooltipProps['alignX'],\n alignY: TooltipProps['alignY'],\n): Placement {\n return [alignY || 'bottom', mapAlignX(alignX || 'left')]\n .filter((p) => !!p)\n .join('-') as Placement;\n}\nfunction isVerticalPlacement(placement: PlacementWithAuto) {\n return placement.startsWith('top') || placement.startsWith('bottom');\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tooltip\n */\nexport const Tooltip = ({\n children,\n isShown: isShownProp = true,\n offsetX = 0,\n offsetY = 15,\n alignX,\n alignY,\n onClose,\n cornerOffset = 0,\n cornerAbsoluteOffset,\n appearance = 'accent',\n arrow = true,\n placement: placementProp,\n text,\n header,\n className,\n ...restProps\n}: TooltipProps) => {\n const arrowRef = React.useRef<HTMLDivElement>(null);\n const [target, setTarget] = React.useState<HTMLElement | null>(null);\n /* eslint-disable no-restricted-properties */\n const tooltipContainer = React.useMemo(\n () => target?.closest<HTMLDivElement>(`[${tooltipContainerAttr}]`),\n [target],\n );\n const { entering } = useNavTransition();\n const isShown = isShownProp && tooltipContainer && !entering;\n\n const placement = placementProp || getDefaultPlacement(alignX, alignY);\n const isNotAutoPlacement = checkIsNotAutoPlacement(placement);\n\n if (process.env.NODE_ENV === 'development') {\n const multiChildren = React.Children.count(children) > 1;\n // Empty children is a noop\n const primitiveChild = hasReactNode(children) && typeof children !== 'object';\n (multiChildren || primitiveChild) &&\n warn(\n [\n 'children должен быть одним React элементом, получено',\n multiChildren && 'несколько',\n primitiveChild && JSON.stringify(children),\n ]\n .filter(Boolean)\n .join(' '),\n 'error',\n );\n }\n\n const floatingPositionStrategy = React.useMemo(\n () => (target?.style.position === 'fixed' ? 'fixed' : 'absolute'),\n [target],\n );\n\n if (process.env.NODE_ENV === 'development' && target && !tooltipContainer) {\n throw new Error('Use TooltipContainer for Tooltip outside Panel (see docs)');\n }\n\n const memoizedMiddlewares = React.useMemo(() => {\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetX,\n mainAxis: offsetY,\n }),\n ];\n\n // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement\n if (isNotAutoPlacement) {\n middlewares.push(flipMiddleware());\n } else {\n middlewares.push(\n autoPlacementMiddleware({\n alignment: placement ? getAutoPlacementAlign(placement) : null,\n }),\n );\n }\n\n middlewares.push(shiftMiddleware());\n\n // см. https://floating-ui.com/docs/arrow#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: 14,\n }),\n );\n middlewares.push({\n name: 'arrowOffset',\n fn({ placement, middlewareData }) {\n if (!middlewareData.arrow) {\n return Promise.resolve({});\n }\n if (isVerticalPlacement(placement)) {\n if (cornerAbsoluteOffset !== undefined) {\n middlewareData.arrow.x = cornerAbsoluteOffset;\n } else if (middlewareData.arrow.x !== undefined) {\n middlewareData.arrow.x += cornerOffset;\n }\n } else {\n if (cornerAbsoluteOffset !== undefined) {\n middlewareData.arrow.y = cornerAbsoluteOffset;\n } else if (middlewareData.arrow.y !== undefined) {\n middlewareData.arrow.y += cornerOffset;\n }\n }\n return Promise.resolve({});\n },\n });\n }\n\n return middlewares;\n }, [arrow, cornerAbsoluteOffset, cornerOffset, offsetX, offsetY, placement, isNotAutoPlacement]);\n\n const {\n x: floatingDataX,\n y: floatingDataY,\n placement: resolvedPlacement,\n refs,\n middlewareData: { arrow: arrowCoords },\n } = useFloating({\n strategy: floatingPositionStrategy,\n placement: isNotAutoPlacement ? placement : undefined,\n middleware: memoizedMiddlewares,\n whileElementsMounted: autoUpdateFloatingElement,\n });\n\n const { document } = useDOM();\n useGlobalEventListener(document, 'click', isShown && onClose, {\n capture: true,\n passive: true,\n });\n\n const childRef = isDOMTypeElement<React.HTMLAttributes<HTMLElement>, HTMLElement>(children)\n ? children.ref\n : React.isValidElement<HasRootRef<HTMLElement>>(children)\n ? children.props.getRootRef\n : null;\n const patchedRef = useExternRef<HTMLElement>(setTarget, refs.setReference, childRef);\n const child = React.isValidElement(children)\n ? React.cloneElement(children, {\n [isDOMTypeElement(children) ? 'ref' : 'getRootRef']: patchedRef,\n })\n : children;\n\n return (\n <React.Fragment>\n {child}\n {isShown &&\n target != null &&\n ReactDOM.createPortal(\n <div\n {...restProps}\n className={classNames(styles['Tooltip'], stylesAppearance[appearance], className)}\n >\n <div\n ref={refs.setFloating}\n style={convertFloatingDataToReactCSSProperties(\n floatingPositionStrategy,\n floatingDataX,\n floatingDataY,\n )}\n >\n {arrow && (\n <PopperArrow\n coords={arrowCoords}\n placement={resolvedPlacement}\n arrowClassName={styles['Tooltip__arrow']}\n getRootRef={arrowRef}\n />\n )}\n <div className={styles['Tooltip__content']}>\n {header && (\n <Subhead weight=\"2\" className={styles['Tooltip__title']}>\n {header}\n </Subhead>\n )}\n {text && <Subhead className={styles['Tooltip__text']}>{text}</Subhead>}\n </div>\n </div>\n </div>,\n tooltipContainer,\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ var _supportEvents = require("../../lib/supportEvents");
15
15
  var _platform = require("../../lib/platform");
16
16
  var _Touch = require("../Touch/Touch");
17
17
  var _ConfigProviderContext = require("../ConfigProvider/ConfigProviderContext");
18
- var _SplitCol = require("../SplitCol/SplitCol");
18
+ var _SplitColContext = require("../SplitCol/SplitColContext");
19
19
  var _dom = require("../../lib/dom");
20
20
  var _ScrollContext = require("../AppRoot/ScrollContext");
21
21
  var _NavTransitionContext = require("../NavTransitionContext/NavTransitionContext");
@@ -74,7 +74,7 @@ var View = function View(_ref) {
74
74
  document = _useDOM.document;
75
75
  var scroll = (0, _ScrollContext.useScroll)();
76
76
  var configProvider = (0, _ConfigProviderContext.useConfigProvider)();
77
- var splitCol = (0, _SplitCol.useSplitCol)();
77
+ var splitCol = (0, _SplitColContext.useSplitCol)();
78
78
  var platform = (0, _usePlatform.usePlatform)();
79
79
  var _React$useState = React.useState(false),
80
80
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),