@vkontakte/vkui 4.22.2 → 4.23.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 (236) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +193 -30
  4. package/.cache/ts/src/components/ActionSheet/ActionSheetContext.d.ts +1 -1
  5. package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +7 -0
  6. package/.cache/ts/src/components/AdaptivityProvider/AdaptivityContext.d.ts +5 -0
  7. package/.cache/ts/src/components/AppRoot/AppRootContext.d.ts +1 -0
  8. package/.cache/ts/src/components/AppRoot/AppRootPortal.d.ts +1 -0
  9. package/.cache/ts/src/components/ClickPopper/ClickPopper.d.ts +21 -0
  10. package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +8 -0
  11. package/.cache/ts/src/components/Dropdown/Dropdown.d.ts +49 -0
  12. package/.cache/ts/src/components/Footer/Footer.d.ts +3 -3
  13. package/.cache/ts/src/components/HoverPopper/HoverPopper.d.ts +29 -0
  14. package/.cache/ts/src/components/Popper/Popper.d.ts +27 -0
  15. package/.cache/ts/src/components/RichTooltip/RichTooltip.d.ts +46 -0
  16. package/.cache/ts/src/components/TextTooltip/TextTooltip.d.ts +49 -0
  17. package/.cache/ts/src/hoc/withAdaptivity.d.ts +1 -0
  18. package/.cache/ts/src/hooks/usePatchChildrenRef.d.ts +6 -0
  19. package/.cache/ts/src/index.d.ts +2 -1
  20. package/.cache/ts/src/unstable/index.d.ts +8 -0
  21. package/dist/cjs/components/ActionSheet/ActionSheet.js +21 -7
  22. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  23. package/dist/cjs/components/ActionSheet/ActionSheetContext.d.ts +1 -1
  24. package/dist/cjs/components/ActionSheet/ActionSheetContext.js.map +1 -1
  25. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -3
  26. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  27. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts +7 -0
  28. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +4 -3
  29. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  30. package/dist/cjs/components/AdaptivityProvider/AdaptivityContext.d.ts +5 -0
  31. package/dist/cjs/components/AdaptivityProvider/AdaptivityContext.js +5 -1
  32. package/dist/cjs/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
  33. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +10 -5
  34. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  35. package/dist/cjs/components/AppRoot/AppRoot.js +3 -6
  36. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  37. package/dist/cjs/components/AppRoot/AppRootContext.d.ts +1 -0
  38. package/dist/cjs/components/AppRoot/AppRootContext.js.map +1 -1
  39. package/dist/cjs/components/AppRoot/AppRootPortal.d.ts +1 -0
  40. package/dist/cjs/components/AppRoot/AppRootPortal.js +7 -3
  41. package/dist/cjs/components/AppRoot/AppRootPortal.js.map +1 -1
  42. package/dist/cjs/components/Cell/Cell.js +3 -1
  43. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  44. package/dist/cjs/components/ClickPopper/ClickPopper.d.ts +21 -0
  45. package/dist/cjs/components/ClickPopper/ClickPopper.js +92 -0
  46. package/dist/cjs/components/ClickPopper/ClickPopper.js.map +1 -0
  47. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +8 -0
  48. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  49. package/dist/cjs/components/Dropdown/Dropdown.d.ts +49 -0
  50. package/dist/cjs/components/Dropdown/Dropdown.js +56 -0
  51. package/dist/cjs/components/Dropdown/Dropdown.js.map +1 -0
  52. package/dist/cjs/components/Footer/Footer.d.ts +3 -3
  53. package/dist/cjs/components/Footer/Footer.js +2 -3
  54. package/dist/cjs/components/Footer/Footer.js.map +1 -1
  55. package/dist/cjs/components/HoverPopper/HoverPopper.d.ts +29 -0
  56. package/dist/cjs/components/HoverPopper/HoverPopper.js +97 -0
  57. package/dist/cjs/components/HoverPopper/HoverPopper.js.map +1 -0
  58. package/dist/cjs/components/Popper/Popper.d.ts +27 -0
  59. package/dist/cjs/components/Popper/Popper.js +153 -0
  60. package/dist/cjs/components/Popper/Popper.js.map +1 -0
  61. package/dist/cjs/components/RichTooltip/RichTooltip.d.ts +46 -0
  62. package/dist/cjs/components/RichTooltip/RichTooltip.js +47 -0
  63. package/dist/cjs/components/RichTooltip/RichTooltip.js.map +1 -0
  64. package/dist/cjs/components/Tappable/Tappable.js +6 -4
  65. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  66. package/dist/cjs/components/TextTooltip/TextTooltip.d.ts +49 -0
  67. package/dist/cjs/components/TextTooltip/TextTooltip.js +57 -0
  68. package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -0
  69. package/dist/cjs/hoc/withAdaptivity.d.ts +1 -0
  70. package/dist/cjs/hoc/withAdaptivity.js +5 -2
  71. package/dist/cjs/hoc/withAdaptivity.js.map +1 -1
  72. package/dist/cjs/hooks/usePatchChildrenRef.d.ts +6 -0
  73. package/dist/cjs/hooks/usePatchChildrenRef.js +38 -0
  74. package/dist/cjs/hooks/usePatchChildrenRef.js.map +1 -0
  75. package/dist/cjs/index.d.ts +2 -1
  76. package/dist/cjs/index.js +2 -2
  77. package/dist/cjs/index.js.map +1 -1
  78. package/dist/cjs/unstable/index.d.ts +8 -0
  79. package/dist/cjs/unstable/index.js +32 -0
  80. package/dist/cjs/unstable/index.js.map +1 -1
  81. package/dist/components/ActionSheet/ActionSheet.js +22 -8
  82. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  83. package/dist/components/ActionSheet/ActionSheetContext.d.ts +1 -1
  84. package/dist/components/ActionSheet/ActionSheetContext.js.map +1 -1
  85. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -3
  86. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  87. package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +7 -0
  88. package/dist/components/ActionSheetItem/ActionSheetItem.js +4 -3
  89. package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  90. package/dist/components/AdaptivityProvider/AdaptivityContext.d.ts +5 -0
  91. package/dist/components/AdaptivityProvider/AdaptivityContext.js +4 -1
  92. package/dist/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
  93. package/dist/components/AdaptivityProvider/AdaptivityProvider.js +11 -6
  94. package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  95. package/dist/components/AppRoot/AppRoot.js +3 -6
  96. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  97. package/dist/components/AppRoot/AppRootContext.d.ts +1 -0
  98. package/dist/components/AppRoot/AppRootContext.js.map +1 -1
  99. package/dist/components/AppRoot/AppRootPortal.d.ts +1 -0
  100. package/dist/components/AppRoot/AppRootPortal.js +7 -3
  101. package/dist/components/AppRoot/AppRootPortal.js.map +1 -1
  102. package/dist/components/Cell/Cell.js +3 -1
  103. package/dist/components/Cell/Cell.js.map +1 -1
  104. package/dist/components/ClickPopper/ClickPopper.d.ts +21 -0
  105. package/dist/components/ClickPopper/ClickPopper.js +67 -0
  106. package/dist/components/ClickPopper/ClickPopper.js.map +1 -0
  107. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +8 -0
  108. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  109. package/dist/components/Dropdown/Dropdown.d.ts +49 -0
  110. package/dist/components/Dropdown/Dropdown.js +38 -0
  111. package/dist/components/Dropdown/Dropdown.js.map +1 -0
  112. package/dist/components/Footer/Footer.d.ts +3 -3
  113. package/dist/components/Footer/Footer.js +1 -4
  114. package/dist/components/Footer/Footer.js.map +1 -1
  115. package/dist/components/HoverPopper/HoverPopper.d.ts +29 -0
  116. package/dist/components/HoverPopper/HoverPopper.js +73 -0
  117. package/dist/components/HoverPopper/HoverPopper.js.map +1 -0
  118. package/dist/components/Popper/Popper.d.ts +27 -0
  119. package/dist/components/Popper/Popper.js +127 -0
  120. package/dist/components/Popper/Popper.js.map +1 -0
  121. package/dist/components/RichTooltip/RichTooltip.d.ts +46 -0
  122. package/dist/components/RichTooltip/RichTooltip.js +26 -0
  123. package/dist/components/RichTooltip/RichTooltip.js.map +1 -0
  124. package/dist/components/Tappable/Tappable.js +7 -5
  125. package/dist/components/Tappable/Tappable.js.map +1 -1
  126. package/dist/components/TextTooltip/TextTooltip.d.ts +49 -0
  127. package/dist/components/TextTooltip/TextTooltip.js +34 -0
  128. package/dist/components/TextTooltip/TextTooltip.js.map +1 -0
  129. package/dist/components.css +1 -1
  130. package/dist/components.css.map +1 -1
  131. package/dist/cssm/components/ActionSheet/ActionSheet.js +22 -8
  132. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  133. package/dist/cssm/components/ActionSheet/ActionSheetContext.js.map +1 -1
  134. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -3
  135. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  136. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +4 -3
  137. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  138. package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js +4 -1
  139. package/dist/cssm/components/AdaptivityProvider/AdaptivityContext.js.map +1 -1
  140. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +11 -6
  141. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  142. package/dist/cssm/components/AppRoot/AppRoot.js +3 -6
  143. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  144. package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
  145. package/dist/cssm/components/AppRoot/AppRootPortal.js +7 -3
  146. package/dist/cssm/components/AppRoot/AppRootPortal.js.map +1 -1
  147. package/dist/cssm/components/Cell/Cell.js +3 -1
  148. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  149. package/dist/cssm/components/ClickPopper/ClickPopper.js +67 -0
  150. package/dist/cssm/components/ClickPopper/ClickPopper.js.map +1 -0
  151. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  152. package/dist/cssm/components/Dropdown/Dropdown.css +1 -0
  153. package/dist/cssm/components/Dropdown/Dropdown.js +41 -0
  154. package/dist/cssm/components/Dropdown/Dropdown.js.map +1 -0
  155. package/dist/cssm/components/Footer/Footer.js +1 -4
  156. package/dist/cssm/components/Footer/Footer.js.map +1 -1
  157. package/dist/cssm/components/HoverPopper/HoverPopper.js +73 -0
  158. package/dist/cssm/components/HoverPopper/HoverPopper.js.map +1 -0
  159. package/dist/cssm/components/Popper/Popper.css +1 -0
  160. package/dist/cssm/components/Popper/Popper.js +128 -0
  161. package/dist/cssm/components/Popper/Popper.js.map +1 -0
  162. package/dist/cssm/components/RichTooltip/RichTooltip.css +1 -0
  163. package/dist/cssm/components/RichTooltip/RichTooltip.js +29 -0
  164. package/dist/cssm/components/RichTooltip/RichTooltip.js.map +1 -0
  165. package/dist/cssm/components/Tappable/Tappable.js +7 -5
  166. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  167. package/dist/cssm/components/TextTooltip/TextTooltip.css +1 -0
  168. package/dist/cssm/components/TextTooltip/TextTooltip.js +37 -0
  169. package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -0
  170. package/dist/cssm/hoc/withAdaptivity.js +5 -2
  171. package/dist/cssm/hoc/withAdaptivity.js.map +1 -1
  172. package/dist/cssm/hooks/usePatchChildrenRef.js +21 -0
  173. package/dist/cssm/hooks/usePatchChildrenRef.js.map +1 -0
  174. package/dist/cssm/index.js +1 -1
  175. package/dist/cssm/index.js.map +1 -1
  176. package/dist/cssm/styles/animations.css +1 -1
  177. package/dist/cssm/styles/common.css +1 -1
  178. package/dist/cssm/styles/components.css +1 -1
  179. package/dist/cssm/styles/unstable.css +1 -1
  180. package/dist/cssm/unstable/index.js +4 -0
  181. package/dist/cssm/unstable/index.js.map +1 -1
  182. package/dist/hoc/withAdaptivity.d.ts +1 -0
  183. package/dist/hoc/withAdaptivity.js +5 -2
  184. package/dist/hoc/withAdaptivity.js.map +1 -1
  185. package/dist/hooks/usePatchChildrenRef.d.ts +6 -0
  186. package/dist/hooks/usePatchChildrenRef.js +21 -0
  187. package/dist/hooks/usePatchChildrenRef.js.map +1 -0
  188. package/dist/index.d.ts +2 -1
  189. package/dist/index.js +1 -1
  190. package/dist/index.js.map +1 -1
  191. package/dist/unstable/index.d.ts +8 -0
  192. package/dist/unstable/index.js +4 -0
  193. package/dist/unstable/index.js.map +1 -1
  194. package/dist/unstable.css +1 -1
  195. package/dist/unstable.css.map +1 -1
  196. package/dist/vkui.css +1 -1
  197. package/dist/vkui.css.map +1 -1
  198. package/package.json +2 -2
  199. package/src/components/ActionSheet/ActionSheet.tsx +16 -9
  200. package/src/components/ActionSheet/ActionSheetContext.ts +1 -1
  201. package/src/components/ActionSheet/ActionSheetDropdownDesktop.tsx +1 -3
  202. package/src/components/ActionSheetItem/ActionSheetItem.tsx +10 -2
  203. package/src/components/AdaptivityProvider/AdaptivityContext.tsx +8 -0
  204. package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +8 -6
  205. package/src/components/AdaptivityProvider/Readme.md +3 -3
  206. package/src/components/AppRoot/AppRoot.tsx +4 -5
  207. package/src/components/AppRoot/AppRootContext.ts +1 -0
  208. package/src/components/AppRoot/AppRootPortal.tsx +5 -3
  209. package/src/components/Cell/Cell.tsx +2 -1
  210. package/src/components/ChipsSelect/Readme.md +1 -1
  211. package/src/components/ClickPopper/ClickPopper.tsx +82 -0
  212. package/src/components/ConfigProvider/ConfigProviderContext.tsx +8 -0
  213. package/src/components/Dropdown/Dropdown.css +19 -0
  214. package/src/components/Dropdown/Dropdown.tsx +74 -0
  215. package/src/components/Dropdown/Readme.md +39 -0
  216. package/src/components/Footer/Footer.tsx +6 -4
  217. package/src/components/HoverPopper/HoverPopper.tsx +100 -0
  218. package/src/components/PanelHeader/Readme.md +4 -0
  219. package/src/components/Popper/Popper.css +39 -0
  220. package/src/components/Popper/Popper.tsx +147 -0
  221. package/src/components/Popper/Readme.md +23 -0
  222. package/src/components/RichTooltip/Readme.md +55 -0
  223. package/src/components/RichTooltip/RichTooltip.css +10 -0
  224. package/src/components/RichTooltip/RichTooltip.tsx +70 -0
  225. package/src/components/Tappable/Tappable.tsx +5 -4
  226. package/src/components/TextTooltip/Readme.md +7 -0
  227. package/src/components/TextTooltip/TextTooltip.css +12 -0
  228. package/src/components/TextTooltip/TextTooltip.tsx +76 -0
  229. package/src/components/Tooltip/Readme.md +2 -0
  230. package/src/hoc/withAdaptivity.tsx +5 -1
  231. package/src/hooks/usePatchChildrenRef.ts +24 -0
  232. package/src/index.ts +2 -1
  233. package/src/styles/animations.css +5 -0
  234. package/src/styles/common.css +7 -2
  235. package/src/styles/unstable.css +4 -0
  236. package/src/unstable/index.ts +12 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/RichTooltip/RichTooltip.tsx"],"names":["HoverPopper","getClassName","usePlatform","useAppearance","classNames","prefixClass","RichTooltip","children","arrow","popperProps","platform","appearance"],"mappings":";;;;;AACA,SAASA,WAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,aAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AA+CA,OAAO,IAAMC,WAAuC,GAAG,SAA1CA,WAA0C,OAAkE;AAAA,MAA/DC,QAA+D,QAA/DA,QAA+D;AAAA,wBAArDC,KAAqD;AAAA,MAArDA,KAAqD,2BAA7C,IAA6C;AAAA,MAApCC,WAAoC;;AACvH,MAAMC,QAAQ,GAAGR,WAAW,EAA5B;AACA,MAAMS,UAAU,GAAGR,aAAa,EAAhC;AAEA,SACE,oBAAC,WAAD;AACE,IAAA,SAAS,EAAEC,UAAU,CAACH,YAAY,CAAC,aAAD,EAAgBS,QAAhB,CAAb,6CACFC,UADE,GACa,CAAC,CAACA,UADf,EADvB;AAIE,IAAA,KAAK,EAAEH,KAJT;AAKE,IAAA,cAAc,EAAEH,WAAW,CAAC,oBAAD;AAL7B,KAMMI,WANN,GAQGF,QARH,CADF;AAYD,CAhBM","sourcesContent":["import * as React from 'react';\nimport { HoverPopper } from '../HoverPopper/HoverPopper';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useAppearance } from '../../hooks/useAppearance';\nimport { classNames } from '../../lib/classNames';\nimport { prefixClass } from '../../lib/prefixClass';\nimport { Placement } from '../Popper/Popper';\nimport './RichTooltip.css';\n\n// Приходится избегать экстендов от HoverPopperProps и PopperProps, потому что react-docgen не умеет в Omit.\n// Ждём либо фикса react-docgen (что вряд ли), либо переезда на react-docgen-typescript, где такой проблемы нет.\nexport interface RichTooltipProps {\n /**\n * Содержимое тултипа\n */\n content?: React.ReactNode;\n /**\n * Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства\n */\n shown?: boolean;\n /**\n * Вызывается при каждом изменении видимости тултипа\n */\n onShownChange?: (shown: boolean) => void;\n /**\n * Количество миллисекунд, после которых произойдет показ дропдауна\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдет скрытие дропдауна\n */\n hideDelay?: number;\n /**\n * Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элементу компонента\n */\n children?: React.ReactElement;\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Отступ по вспомогательной оси\n */\n offsetSkidding?: number;\n /**\n * Отступ по главной оси\n */\n offsetDistance?: number;\n onPlacementChange?: (data: { placement?: Placement }) => void;\n arrow?: boolean;\n}\n\nexport const RichTooltip: React.FC<RichTooltipProps> = ({ children, arrow = true, ...popperProps }: RichTooltipProps) => {\n const platform = usePlatform();\n const appearance = useAppearance();\n\n return (\n <HoverPopper\n vkuiClass={classNames(getClassName('RichTooltip', platform), {\n [`RichTooltip--${appearance}`]: !!appearance,\n })}\n arrow={arrow}\n arrowClassName={prefixClass('RichTooltip__arrow')}\n {...popperProps}\n >\n {children}\n </HoverPopper>\n );\n};\n"],"file":"RichTooltip.js"}
@@ -3,11 +3,11 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
5
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
6
- var _excluded = ["children", "Component", "onClick", "onKeyDown", "activeEffectDelay", "stopPropagation", "getRootRef", "sizeX", "hasMouse", "hasHover", "hoverMode", "hasActive", "activeMode", "focusVisibleMode"];
6
+ var _excluded = ["children", "Component", "onClick", "onKeyDown", "activeEffectDelay", "stopPropagation", "getRootRef", "sizeX", "hasMouse", "deviceHasHover", "hasHover", "hoverMode", "hasActive", "activeMode", "focusVisibleMode"];
7
7
  import { createScopedElement } from "../../lib/jsxRuntime";
8
8
  import * as React from 'react';
9
9
  import mitt from 'mitt';
10
- import { hasHover as deviceHasHover, noop } from '@vkontakte/vkjs';
10
+ import { noop } from '@vkontakte/vkjs';
11
11
  import { Touch } from "../Touch/Touch";
12
12
  import TouchRootContext from "../Touch/TouchContext";
13
13
  import { classNames } from "../../lib/classNames";
@@ -123,8 +123,9 @@ var Tappable = function Tappable(_ref) {
123
123
  getRootRef = _ref.getRootRef,
124
124
  sizeX = _ref.sizeX,
125
125
  hasMouse = _ref.hasMouse,
126
+ deviceHasHover = _ref.deviceHasHover,
126
127
  _ref$hasHover = _ref.hasHover,
127
- _hasHover = _ref$hasHover === void 0 ? deviceHasHover : _ref$hasHover,
128
+ _hasHover = _ref$hasHover === void 0 ? true : _ref$hasHover,
128
129
  _ref$hoverMode = _ref.hoverMode,
129
130
  hoverMode = _ref$hoverMode === void 0 ? 'background' : _ref$hoverMode,
130
131
  _ref$hasActive = _ref.hasActive,
@@ -160,7 +161,7 @@ var Tappable = function Tappable(_ref) {
160
161
 
161
162
  var hovered = _hovered && !props.disabled;
162
163
  var hasActive = _hasActive && !childHover && !props.disabled;
163
- var hasHover = _hasHover && !childHover;
164
+ var hasHover = deviceHasHover && _hasHover && !childHover;
164
165
  var isCustomElement = Component !== 'a' && Component !== 'button' && !props.contentEditable;
165
166
  var isPresetHoverMode = ['opacity', 'background'].includes(hoverMode);
166
167
  var isPresetActiveMode = ['opacity', 'background'].includes(activeMode);
@@ -314,7 +315,8 @@ var Tappable = function Tappable(_ref) {
314
315
 
315
316
  export default withAdaptivity(Tappable, {
316
317
  sizeX: true,
317
- hasMouse: true
318
+ hasMouse: true,
319
+ deviceHasHover: true
318
320
  });
319
321
 
320
322
  function Wave(_ref5) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Tappable/Tappable.tsx"],"names":["React","mitt","hasHover","deviceHasHover","noop","Touch","TouchRootContext","classNames","getClassName","ANDROID","getOffsetRect","coordX","coordY","withAdaptivity","shouldTriggerClickOnEnterOrSpace","useIsomorphicLayoutEffect","FocusVisible","useTimeout","useExternRef","usePlatform","ACTIVE_DELAY","ACTIVE_EFFECT_DELAY","activeBus","TapState","none","pending","active","exiting","TappableContext","createContext","onHoverChange","useActivity","hasActive","stopDelay","id","useMemo","Math","round","random","toString","useState","activity","setActivity","_stop","start","delayStart","activeTimeout","stopTimeout","set","clear","emit","onActiveChange","activeId","on","off","stop","delay","Tappable","children","Component","onClick","_onKeyDown","onKeyDown","activeEffectDelay","stopPropagation","getRootRef","sizeX","hasMouse","_hasHover","hoverMode","_hasActive","activeMode","focusVisibleMode","props","href","useContext","insideTouchRoot","platform","clicks","setClicks","childHover","setChildHover","_hovered","setHovered","hovered","disabled","isCustomElement","contentEditable","isPresetHoverMode","includes","isPresetActiveMode","containerRef","childContext","useRef","current","e","preventDefault","click","onStart","originalEvent","touches","length","top","left","x","y","Date","now","onMove","isSlide","onEnd","duration","activeDuraion","classes","handlers","role","undefined","map","wave","filter","c","Wave","onClear","timeout","useEffect"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport mitt from 'mitt';\nimport { hasHover as deviceHasHover, noop } from '@vkontakte/vkjs';\nimport { Touch, TouchEvent, TouchProps } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { ANDROID } from '../../lib/platform';\nimport { getOffsetRect } from '../../lib/offset';\nimport { coordX, coordY } from '../../lib/touch';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { shouldTriggerClickOnEnterOrSpace } from '../../lib/accessibility';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { FocusVisible, FocusVisibleMode } from '../FocusVisible/FocusVisible';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Tappable.css';\n\nexport interface TappableProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, AdaptivityProps, HasComponent {\n /**\n * Длительность показа active-состояния\n */\n activeEffectDelay?: number;\n stopPropagation?: boolean;\n /**\n * Указывает, должен ли компонент реагировать на hover-состояние\n */\n hasHover?: boolean;\n /**\n * Указывает, должен ли компонент реагировать на active-состояние\n */\n hasActive?: boolean;\n /**\n * Стиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active\n */\n activeMode?: 'opacity' | 'background' | string;\n /**\n * Стиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover\n */\n hoverMode?: 'opacity' | 'background' | string;\n /**\n * Стиль аутлайна focus visible.\n */\n focusVisibleMode?: FocusVisibleMode;\n}\n\ninterface Wave {\n x: number;\n y: number;\n id: string;\n}\n\nexport interface RootComponentProps extends TouchProps {\n ref?: React.Ref<HTMLElement>;\n}\n\nexport const ACTIVE_DELAY = 70;\nexport const ACTIVE_EFFECT_DELAY = 600;\n\nconst activeBus = mitt<{ active: string }>();\nconst TapState = { none: 0, pending: 1, active: 2, exiting: 3 } as const;\n\ntype TappableContextInterface = { onHoverChange: (s: boolean) => void };\nconst TappableContext = React.createContext<TappableContextInterface>({ onHoverChange: noop });\n\nfunction useActivity(hasActive: boolean, stopDelay: number) {\n const id = React.useMemo(() => Math.round(Math.random() * 1e8).toString(16), []);\n\n const [activity, setActivity] = React.useState<typeof TapState[keyof typeof TapState]>(TapState.none);\n const _stop = () => setActivity(TapState.none);\n const start = () => hasActive && setActivity(TapState.active);\n const delayStart = () => {\n hasActive && setActivity(TapState.pending);\n };\n\n const activeTimeout = useTimeout(start, ACTIVE_DELAY);\n const stopTimeout = useTimeout(_stop, stopDelay);\n\n useIsomorphicLayoutEffect(() => {\n if (activity === TapState.pending) {\n activeTimeout.set();\n return activeTimeout.clear;\n }\n if (activity === TapState.exiting) {\n return stopTimeout.clear;\n }\n if (activity === TapState.active) {\n activeBus.emit('active', id);\n }\n return noop;\n }, [activity]);\n\n useIsomorphicLayoutEffect(() => {\n if (activity === TapState.none) {\n return noop;\n }\n const onActiveChange = (activeId: string) => {\n activeId !== id && _stop();\n };\n activeBus.on('active', onActiveChange);\n return () => activeBus.off('active', onActiveChange);\n }, [activity === TapState.none]);\n\n useIsomorphicLayoutEffect(() => {\n !hasActive && _stop();\n }, [hasActive]);\n\n const stop = (delay?: number) => {\n if (delay) {\n setActivity(TapState.exiting);\n return stopTimeout.set(delay);\n }\n _stop();\n };\n\n return [activity, { delayStart, start, stop }] as const;\n}\n\nconst Tappable: React.FC<TappableProps> = ({\n children,\n Component,\n onClick,\n onKeyDown: _onKeyDown,\n activeEffectDelay = ACTIVE_EFFECT_DELAY,\n stopPropagation = false,\n getRootRef,\n sizeX,\n hasMouse,\n hasHover: _hasHover = deviceHasHover,\n hoverMode = 'background',\n hasActive: _hasActive = true,\n activeMode = 'background',\n focusVisibleMode = 'inside',\n ...props\n}: TappableProps) => {\n Component = Component || (props.href ? 'a' : 'div') as React.ElementType;\n\n const { onHoverChange } = React.useContext(TappableContext);\n const insideTouchRoot = React.useContext(TouchRootContext);\n const platform = usePlatform();\n\n const [clicks, setClicks] = React.useState<Wave[]>([]);\n const [childHover, setChildHover] = React.useState(false);\n const [_hovered, setHovered] = React.useState(false);\n\n const hovered = _hovered && !props.disabled;\n const hasActive = _hasActive && !childHover && !props.disabled;\n const hasHover = _hasHover && !childHover;\n const isCustomElement = Component !== 'a' && Component !== 'button' && !props.contentEditable;\n const isPresetHoverMode = ['opacity', 'background'].includes(hoverMode);\n const isPresetActiveMode = ['opacity', 'background'].includes(activeMode);\n\n const [activity, { start, stop, delayStart }] = useActivity(hasActive, activeEffectDelay);\n const active = activity === TapState.active || activity === TapState.exiting;\n\n const containerRef = useExternRef(getRootRef);\n\n // hover propagation\n const childContext = React.useRef({ onHoverChange: setChildHover }).current;\n useIsomorphicLayoutEffect(() => {\n if (!hovered) {\n return noop;\n }\n onHoverChange(true);\n return () => onHoverChange(false);\n }, [hovered]);\n\n /*\n * [a11y]\n * Обрабатывает событие onkeydown\n * для кастомных доступных элементов:\n * - role=\"link\" (активация по Enter)\n * - role=\"button\" (активация по Space и Enter)\n */\n function onKeyDown(e: React.KeyboardEvent<HTMLElement>) {\n if (isCustomElement && shouldTriggerClickOnEnterOrSpace(e)) {\n e.preventDefault();\n containerRef.current.click();\n }\n\n if (typeof _onKeyDown === 'function') {\n return _onKeyDown(e);\n }\n }\n\n function onStart({ originalEvent }: TouchEvent) {\n if (hasActive) {\n if (originalEvent.touches && originalEvent.touches.length > 1) {\n // r сожалению я так и не понял, что это делает и можно ли упихнуть его в Touch\n return stop();\n }\n\n if (platform === ANDROID) {\n const { top, left } = getOffsetRect(containerRef.current);\n const x = coordX(originalEvent) - left;\n const y = coordY(originalEvent) - top;\n setClicks([...clicks, { x, y, id: Date.now().toString() }]);\n }\n\n delayStart();\n }\n }\n\n function onMove({ isSlide }: TouchEvent) {\n if (isSlide) {\n stop();\n }\n }\n\n function onEnd({ duration }: TouchEvent) {\n if (activity === TapState.none) {\n return;\n }\n if (activity === TapState.pending) {\n // активировать при коротком тапе\n start();\n }\n\n // отключить без задержки при длинном тапе\n const activeDuraion = duration - ACTIVE_DELAY;\n stop(activeDuraion >= 100 ? 0 : activeEffectDelay - activeDuraion);\n }\n\n const classes = classNames(\n getClassName('Tappable', platform),\n `Tappable--sizeX-${sizeX}`,\n {\n 'Tappable--active': hasActive && active,\n 'Tappable--mouse': hasMouse,\n [`Tappable--hover-${hoverMode}`]: hasHover && hovered && isPresetHoverMode,\n [`Tappable--active-${activeMode}`]: hasActive && active && isPresetActiveMode,\n [hoverMode]: hasHover && hovered && !isPresetHoverMode,\n [activeMode]: hasActive && active && !isPresetActiveMode,\n });\n\n const handlers: RootComponentProps = { onStart, onMove, onEnd, onClick, onKeyDown };\n const role = props.href ? 'link' : 'button';\n\n return (\n <Touch\n onEnter={() => setHovered(true)}\n onLeave={() => setHovered(false)}\n type={Component === 'button' ? 'button' : undefined}\n tabIndex={isCustomElement && !props.disabled ? 0 : undefined}\n role={isCustomElement ? role : undefined}\n aria-disabled={isCustomElement ? props.disabled : null}\n stopPropagation={stopPropagation && !insideTouchRoot && !props.disabled}\n {...props}\n slideThreshold={20}\n usePointerHover\n vkuiClass={classes}\n Component={Component}\n getRootRef={containerRef}\n {...(props.disabled ? {} : handlers)}>\n <TappableContext.Provider value={childContext}>\n {children}\n </TappableContext.Provider>\n {platform === ANDROID && !hasMouse && hasActive && activeMode === 'background' && (\n <span aria-hidden=\"true\" vkuiClass=\"Tappable__waves\">\n {clicks.map((wave) => (\n <Wave {...wave} key={wave.id} onClear={() => setClicks(clicks.filter((c) => c.id !== wave.id))} />\n ))}\n </span>\n )}\n {hasHover && hoverMode === 'background' && <span aria-hidden=\"true\" vkuiClass=\"Tappable__hoverShadow\" />}\n {!props.disabled && <FocusVisible mode={focusVisibleMode} />}\n </Touch>\n );\n};\n\nexport default withAdaptivity(Tappable, { sizeX: true, hasMouse: true });\n\nfunction Wave({ x, y, onClear }: Wave & { onClear: VoidFunction }) {\n const timeout = useTimeout(onClear, 225);\n React.useEffect(() => timeout.set(), []);\n return <span vkuiClass=\"Tappable__wave\" style={{ top: y, left: x }} />;\n}\n"],"file":"Tappable.js"}
1
+ {"version":3,"sources":["../../../src/components/Tappable/Tappable.tsx"],"names":["React","mitt","noop","Touch","TouchRootContext","classNames","getClassName","ANDROID","getOffsetRect","coordX","coordY","withAdaptivity","shouldTriggerClickOnEnterOrSpace","useIsomorphicLayoutEffect","FocusVisible","useTimeout","useExternRef","usePlatform","ACTIVE_DELAY","ACTIVE_EFFECT_DELAY","activeBus","TapState","none","pending","active","exiting","TappableContext","createContext","onHoverChange","useActivity","hasActive","stopDelay","id","useMemo","Math","round","random","toString","useState","activity","setActivity","_stop","start","delayStart","activeTimeout","stopTimeout","set","clear","emit","onActiveChange","activeId","on","off","stop","delay","Tappable","children","Component","onClick","_onKeyDown","onKeyDown","activeEffectDelay","stopPropagation","getRootRef","sizeX","hasMouse","deviceHasHover","hasHover","_hasHover","hoverMode","_hasActive","activeMode","focusVisibleMode","props","href","useContext","insideTouchRoot","platform","clicks","setClicks","childHover","setChildHover","_hovered","setHovered","hovered","disabled","isCustomElement","contentEditable","isPresetHoverMode","includes","isPresetActiveMode","containerRef","childContext","useRef","current","e","preventDefault","click","onStart","originalEvent","touches","length","top","left","x","y","Date","now","onMove","isSlide","onEnd","duration","activeDuraion","classes","handlers","role","undefined","map","wave","filter","c","Wave","onClear","timeout","useEffect"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport mitt from 'mitt';\nimport { noop } from '@vkontakte/vkjs';\nimport { Touch, TouchEvent, TouchProps } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { ANDROID } from '../../lib/platform';\nimport { getOffsetRect } from '../../lib/offset';\nimport { coordX, coordY } from '../../lib/touch';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { shouldTriggerClickOnEnterOrSpace } from '../../lib/accessibility';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { FocusVisible, FocusVisibleMode } from '../FocusVisible/FocusVisible';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Tappable.css';\n\nexport interface TappableProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, AdaptivityProps, HasComponent {\n /**\n * Длительность показа active-состояния\n */\n activeEffectDelay?: number;\n stopPropagation?: boolean;\n /**\n * Указывает, должен ли компонент реагировать на hover-состояние\n */\n hasHover?: boolean;\n /**\n * Указывает, должен ли компонент реагировать на active-состояние\n */\n hasActive?: boolean;\n /**\n * Стиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active\n */\n activeMode?: 'opacity' | 'background' | string;\n /**\n * Стиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover\n */\n hoverMode?: 'opacity' | 'background' | string;\n /**\n * Стиль аутлайна focus visible.\n */\n focusVisibleMode?: FocusVisibleMode;\n}\n\ninterface Wave {\n x: number;\n y: number;\n id: string;\n}\n\nexport interface RootComponentProps extends TouchProps {\n ref?: React.Ref<HTMLElement>;\n}\n\nexport const ACTIVE_DELAY = 70;\nexport const ACTIVE_EFFECT_DELAY = 600;\n\nconst activeBus = mitt<{ active: string }>();\nconst TapState = { none: 0, pending: 1, active: 2, exiting: 3 } as const;\n\ntype TappableContextInterface = { onHoverChange: (s: boolean) => void };\nconst TappableContext = React.createContext<TappableContextInterface>({ onHoverChange: noop });\n\nfunction useActivity(hasActive: boolean, stopDelay: number) {\n const id = React.useMemo(() => Math.round(Math.random() * 1e8).toString(16), []);\n\n const [activity, setActivity] = React.useState<typeof TapState[keyof typeof TapState]>(TapState.none);\n const _stop = () => setActivity(TapState.none);\n const start = () => hasActive && setActivity(TapState.active);\n const delayStart = () => {\n hasActive && setActivity(TapState.pending);\n };\n\n const activeTimeout = useTimeout(start, ACTIVE_DELAY);\n const stopTimeout = useTimeout(_stop, stopDelay);\n\n useIsomorphicLayoutEffect(() => {\n if (activity === TapState.pending) {\n activeTimeout.set();\n return activeTimeout.clear;\n }\n if (activity === TapState.exiting) {\n return stopTimeout.clear;\n }\n if (activity === TapState.active) {\n activeBus.emit('active', id);\n }\n return noop;\n }, [activity]);\n\n useIsomorphicLayoutEffect(() => {\n if (activity === TapState.none) {\n return noop;\n }\n const onActiveChange = (activeId: string) => {\n activeId !== id && _stop();\n };\n activeBus.on('active', onActiveChange);\n return () => activeBus.off('active', onActiveChange);\n }, [activity === TapState.none]);\n\n useIsomorphicLayoutEffect(() => {\n !hasActive && _stop();\n }, [hasActive]);\n\n const stop = (delay?: number) => {\n if (delay) {\n setActivity(TapState.exiting);\n return stopTimeout.set(delay);\n }\n _stop();\n };\n\n return [activity, { delayStart, start, stop }] as const;\n}\n\nconst Tappable: React.FC<TappableProps> = ({\n children,\n Component,\n onClick,\n onKeyDown: _onKeyDown,\n activeEffectDelay = ACTIVE_EFFECT_DELAY,\n stopPropagation = false,\n getRootRef,\n sizeX,\n hasMouse,\n deviceHasHover,\n hasHover: _hasHover = true,\n hoverMode = 'background',\n hasActive: _hasActive = true,\n activeMode = 'background',\n focusVisibleMode = 'inside',\n ...props\n}: TappableProps) => {\n Component = Component || (props.href ? 'a' : 'div') as React.ElementType;\n\n const { onHoverChange } = React.useContext(TappableContext);\n const insideTouchRoot = React.useContext(TouchRootContext);\n const platform = usePlatform();\n\n const [clicks, setClicks] = React.useState<Wave[]>([]);\n const [childHover, setChildHover] = React.useState(false);\n const [_hovered, setHovered] = React.useState(false);\n\n const hovered = _hovered && !props.disabled;\n const hasActive = _hasActive && !childHover && !props.disabled;\n const hasHover = deviceHasHover && _hasHover && !childHover;\n const isCustomElement = Component !== 'a' && Component !== 'button' && !props.contentEditable;\n const isPresetHoverMode = ['opacity', 'background'].includes(hoverMode);\n const isPresetActiveMode = ['opacity', 'background'].includes(activeMode);\n\n const [activity, { start, stop, delayStart }] = useActivity(hasActive, activeEffectDelay);\n const active = activity === TapState.active || activity === TapState.exiting;\n\n const containerRef = useExternRef(getRootRef);\n\n // hover propagation\n const childContext = React.useRef({ onHoverChange: setChildHover }).current;\n useIsomorphicLayoutEffect(() => {\n if (!hovered) {\n return noop;\n }\n onHoverChange(true);\n return () => onHoverChange(false);\n }, [hovered]);\n\n /*\n * [a11y]\n * Обрабатывает событие onkeydown\n * для кастомных доступных элементов:\n * - role=\"link\" (активация по Enter)\n * - role=\"button\" (активация по Space и Enter)\n */\n function onKeyDown(e: React.KeyboardEvent<HTMLElement>) {\n if (isCustomElement && shouldTriggerClickOnEnterOrSpace(e)) {\n e.preventDefault();\n containerRef.current.click();\n }\n\n if (typeof _onKeyDown === 'function') {\n return _onKeyDown(e);\n }\n }\n\n function onStart({ originalEvent }: TouchEvent) {\n if (hasActive) {\n if (originalEvent.touches && originalEvent.touches.length > 1) {\n // r сожалению я так и не понял, что это делает и можно ли упихнуть его в Touch\n return stop();\n }\n\n if (platform === ANDROID) {\n const { top, left } = getOffsetRect(containerRef.current);\n const x = coordX(originalEvent) - left;\n const y = coordY(originalEvent) - top;\n setClicks([...clicks, { x, y, id: Date.now().toString() }]);\n }\n\n delayStart();\n }\n }\n\n function onMove({ isSlide }: TouchEvent) {\n if (isSlide) {\n stop();\n }\n }\n\n function onEnd({ duration }: TouchEvent) {\n if (activity === TapState.none) {\n return;\n }\n if (activity === TapState.pending) {\n // активировать при коротком тапе\n start();\n }\n\n // отключить без задержки при длинном тапе\n const activeDuraion = duration - ACTIVE_DELAY;\n stop(activeDuraion >= 100 ? 0 : activeEffectDelay - activeDuraion);\n }\n\n const classes = classNames(\n getClassName('Tappable', platform),\n `Tappable--sizeX-${sizeX}`,\n {\n 'Tappable--active': hasActive && active,\n 'Tappable--mouse': hasMouse,\n [`Tappable--hover-${hoverMode}`]: hasHover && hovered && isPresetHoverMode,\n [`Tappable--active-${activeMode}`]: hasActive && active && isPresetActiveMode,\n [hoverMode]: hasHover && hovered && !isPresetHoverMode,\n [activeMode]: hasActive && active && !isPresetActiveMode,\n });\n\n const handlers: RootComponentProps = { onStart, onMove, onEnd, onClick, onKeyDown };\n const role = props.href ? 'link' : 'button';\n\n return (\n <Touch\n onEnter={() => setHovered(true)}\n onLeave={() => setHovered(false)}\n type={Component === 'button' ? 'button' : undefined}\n tabIndex={isCustomElement && !props.disabled ? 0 : undefined}\n role={isCustomElement ? role : undefined}\n aria-disabled={isCustomElement ? props.disabled : null}\n stopPropagation={stopPropagation && !insideTouchRoot && !props.disabled}\n {...props}\n slideThreshold={20}\n usePointerHover\n vkuiClass={classes}\n Component={Component}\n getRootRef={containerRef}\n {...(props.disabled ? {} : handlers)}>\n <TappableContext.Provider value={childContext}>\n {children}\n </TappableContext.Provider>\n {platform === ANDROID && !hasMouse && hasActive && activeMode === 'background' && (\n <span aria-hidden=\"true\" vkuiClass=\"Tappable__waves\">\n {clicks.map((wave) => (\n <Wave {...wave} key={wave.id} onClear={() => setClicks(clicks.filter((c) => c.id !== wave.id))} />\n ))}\n </span>\n )}\n {hasHover && hoverMode === 'background' && <span aria-hidden=\"true\" vkuiClass=\"Tappable__hoverShadow\" />}\n {!props.disabled && <FocusVisible mode={focusVisibleMode} />}\n </Touch>\n );\n};\n\nexport default withAdaptivity(Tappable, { sizeX: true, hasMouse: true, deviceHasHover: true });\n\nfunction Wave({ x, y, onClear }: Wave & { onClear: VoidFunction }) {\n const timeout = useTimeout(onClear, 225);\n React.useEffect(() => timeout.set(), []);\n return <span vkuiClass=\"Tappable__wave\" style={{ top: y, left: x }} />;\n}\n"],"file":"Tappable.js"}
@@ -0,0 +1,49 @@
1
+ import * as React from 'react';
2
+ import { Placement } from '../Popper/Popper';
3
+ import './TextTooltip.css';
4
+ export interface TextTooltipProps {
5
+ /**
6
+ * Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства
7
+ */
8
+ shown?: boolean;
9
+ /**
10
+ * Вызывается при каждом изменении видимости тултипа
11
+ */
12
+ onShownChange?: (shown: boolean) => void;
13
+ /**
14
+ * Количество миллисекунд, после которых произойдет показ дропдауна
15
+ */
16
+ showDelay?: number;
17
+ /**
18
+ * Количество миллисекунд, после которых произойдет скрытие дропдауна
19
+ */
20
+ hideDelay?: number;
21
+ /**
22
+ * Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элементу компонента
23
+ */
24
+ children?: React.ReactElement;
25
+ /**
26
+ * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства
27
+ */
28
+ placement?: Placement;
29
+ /**
30
+ * Отступ по вспомогательной оси
31
+ */
32
+ offsetSkidding?: number;
33
+ /**
34
+ * Отступ по главной оси
35
+ */
36
+ offsetDistance?: number;
37
+ onPlacementChange?: (data: {
38
+ placement?: Placement;
39
+ }) => void;
40
+ /**
41
+ * Текст тултипа
42
+ */
43
+ text?: React.ReactNode;
44
+ /**
45
+ * Заголовок тултипа
46
+ */
47
+ header?: React.ReactNode;
48
+ }
49
+ export declare const TextTooltip: React.FC<TextTooltipProps>;
@@ -0,0 +1,34 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["children", "text", "header"];
4
+ import { createScopedElement } from "../../lib/jsxRuntime";
5
+ import * as React from 'react';
6
+ import { HoverPopper } from "../HoverPopper/HoverPopper";
7
+ import { getClassName } from "../../helpers/getClassName";
8
+ import { usePlatform } from "../../hooks/usePlatform";
9
+ import { hasReactNode } from "../../lib/utils";
10
+ import Subhead from "../Typography/Subhead/Subhead";
11
+ import { prefixClass } from "../../lib/prefixClass";
12
+ export var TextTooltip = function TextTooltip(_ref) {
13
+ var children = _ref.children,
14
+ text = _ref.text,
15
+ header = _ref.header,
16
+ popperProps = _objectWithoutProperties(_ref, _excluded);
17
+
18
+ var platform = usePlatform();
19
+ return createScopedElement(HoverPopper, _extends({
20
+ vkuiClass: getClassName('TextTooltip', platform),
21
+ arrow: true,
22
+ arrowClassName: prefixClass('TextTooltip__arrow'),
23
+ content: createScopedElement(React.Fragment, null, hasReactNode(header) && createScopedElement(Subhead, {
24
+ Component: "span",
25
+ weight: "medium",
26
+ vkuiClass: "TextTooltip__header"
27
+ }, header), hasReactNode(text) && createScopedElement(Subhead, {
28
+ Component: "span",
29
+ weight: "regular",
30
+ vkuiClass: "TextTooltip__text"
31
+ }, text))
32
+ }, popperProps), children);
33
+ };
34
+ //# sourceMappingURL=TextTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/TextTooltip/TextTooltip.tsx"],"names":["React","HoverPopper","getClassName","usePlatform","hasReactNode","Subhead","prefixClass","TextTooltip","children","text","header","popperProps","platform"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AAEA,OAAOC,OAAP;AACA,SAASC,WAAT;AAiDA,OAAO,IAAMC,WAAuC,GAAG,SAA1CA,WAA0C,OAAkE;AAAA,MAA/DC,QAA+D,QAA/DA,QAA+D;AAAA,MAArDC,IAAqD,QAArDA,IAAqD;AAAA,MAA/CC,MAA+C,QAA/CA,MAA+C;AAAA,MAApCC,WAAoC;;AACvH,MAAMC,QAAQ,GAAGT,WAAW,EAA5B;AAEA,SACE,oBAAC,WAAD;AACE,IAAA,SAAS,EAAED,YAAY,CAAC,aAAD,EAAgBU,QAAhB,CADzB;AAEE,IAAA,KAAK,MAFP;AAGE,IAAA,cAAc,EAAEN,WAAW,CAAC,oBAAD,CAH7B;AAIE,IAAA,OAAO,EACL,oBAAC,KAAD,CAAO,QAAP,QACGF,YAAY,CAACM,MAAD,CAAZ,IAAwB,oBAAC,OAAD;AAAS,MAAA,SAAS,EAAC,MAAnB;AAA0B,MAAA,MAAM,EAAC,QAAjC;AAA0C,MAAA,SAAS,EAAC;AAApD,OAA2EA,MAA3E,CAD3B,EAEGN,YAAY,CAACK,IAAD,CAAZ,IAAsB,oBAAC,OAAD;AAAS,MAAA,SAAS,EAAC,MAAnB;AAA0B,MAAA,MAAM,EAAC,SAAjC;AAA2C,MAAA,SAAS,EAAC;AAArD,OAA0EA,IAA1E,CAFzB;AALJ,KAUME,WAVN,GAYGH,QAZH,CADF;AAgBD,CAnBM","sourcesContent":["import * as React from 'react';\nimport { HoverPopper } from '../HoverPopper/HoverPopper';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport { Placement } from '../Popper/Popper';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport { prefixClass } from '../../lib/prefixClass';\nimport './TextTooltip.css';\n\n// Приходится избегать экстендов от HoverPopperProps и PopperProps, потому что react-docgen не умеет в Omit.\n// Ждём либо фикса react-docgen (что вряд ли), либо переезда на react-docgen-typescript, где такой проблемы нет.\nexport interface TextTooltipProps {\n /**\n * Если передан, то тултип будет показыван/скрыт в зависимости от значения свойства\n */\n shown?: boolean;\n /**\n * Вызывается при каждом изменении видимости тултипа\n */\n onShownChange?: (shown: boolean) => void;\n /**\n * Количество миллисекунд, после которых произойдет показ дропдауна\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдет скрытие дропдауна\n */\n hideDelay?: number;\n /**\n * Либо jsx-элемент (div, button, etc.), либо компонент со свойством `getRootRef`, которое применяется к корневому элементу компонента\n */\n children?: React.ReactElement;\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Отступ по вспомогательной оси\n */\n offsetSkidding?: number;\n /**\n * Отступ по главной оси\n */\n offsetDistance?: number;\n onPlacementChange?: (data: { placement?: Placement }) => void;\n /**\n * Текст тултипа\n */\n text?: React.ReactNode;\n /**\n * Заголовок тултипа\n */\n header?: React.ReactNode;\n}\n\nexport const TextTooltip: React.FC<TextTooltipProps> = ({ children, text, header, ...popperProps }: TextTooltipProps) => {\n const platform = usePlatform();\n\n return (\n <HoverPopper\n vkuiClass={getClassName('TextTooltip', platform)}\n arrow\n arrowClassName={prefixClass('TextTooltip__arrow')}\n content={\n <React.Fragment>\n {hasReactNode(header) && <Subhead Component=\"span\" weight=\"medium\" vkuiClass=\"TextTooltip__header\">{header}</Subhead>}\n {hasReactNode(text) && <Subhead Component=\"span\" weight=\"regular\" vkuiClass=\"TextTooltip__text\">{text}</Subhead>}\n </React.Fragment>\n }\n {...popperProps}\n >\n {children}\n </HoverPopper>\n );\n};\n"],"file":"TextTooltip.js"}