@vkontakte/vkui 4.21.0 → 4.22.2

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 (248) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +271 -37
  4. package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
  5. package/.cache/ts/src/components/Cell/Cell.d.ts +11 -0
  6. package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  7. package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  8. package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
  9. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +0 -1
  10. package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  11. package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
  12. package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  13. package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
  14. package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +3 -1
  15. package/.cache/ts/src/index.d.ts +4 -0
  16. package/dist/cjs/components/ActionSheet/ActionSheet.js +1 -12
  17. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  18. package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
  19. package/dist/cjs/components/Avatar/Avatar.js +7 -3
  20. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  21. package/dist/cjs/components/CardScroll/CardScroll.js +1 -1
  22. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  23. package/dist/cjs/components/Cell/Cell.d.ts +11 -0
  24. package/dist/cjs/components/Cell/Cell.js +109 -182
  25. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  26. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  27. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
  28. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  29. package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  30. package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
  31. package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
  32. package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
  33. package/dist/cjs/components/Cell/useDraggable.js +142 -0
  34. package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
  35. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
  36. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  37. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
  38. package/dist/cjs/components/CustomSelect/CustomSelect.js +2 -3
  39. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  40. package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  41. package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
  42. package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
  43. package/dist/cjs/components/FocusTrap/FocusTrap.js +3 -5
  44. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  45. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  46. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  47. package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
  48. package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
  49. package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
  50. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  51. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
  52. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  53. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  54. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  55. package/dist/cjs/components/Progress/Progress.js +6 -3
  56. package/dist/cjs/components/Progress/Progress.js.map +1 -1
  57. package/dist/cjs/components/Removable/Removable.d.ts +2 -1
  58. package/dist/cjs/components/Removable/Removable.js +20 -10
  59. package/dist/cjs/components/Removable/Removable.js.map +1 -1
  60. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  61. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  62. package/dist/cjs/components/Tabbar/Tabbar.js +3 -1
  63. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  64. package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +3 -1
  65. package/dist/cjs/components/TabbarItem/TabbarItem.js +29 -11
  66. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  67. package/dist/cjs/components/View/View.js +53 -42
  68. package/dist/cjs/components/View/View.js.map +1 -1
  69. package/dist/cjs/components/View/ViewInfinite.js +63 -52
  70. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  71. package/dist/cjs/index.d.ts +4 -0
  72. package/dist/cjs/index.js +16 -0
  73. package/dist/cjs/index.js.map +1 -1
  74. package/dist/cjs/lib/prefixClass.js +7 -6
  75. package/dist/cjs/lib/prefixClass.js.map +1 -1
  76. package/dist/components/ActionSheet/ActionSheet.js +1 -11
  77. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  78. package/dist/components/Avatar/Avatar.d.ts +2 -0
  79. package/dist/components/Avatar/Avatar.js +4 -2
  80. package/dist/components/Avatar/Avatar.js.map +1 -1
  81. package/dist/components/CardScroll/CardScroll.js +1 -1
  82. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  83. package/dist/components/Cell/Cell.d.ts +11 -0
  84. package/dist/components/Cell/Cell.js +103 -177
  85. package/dist/components/Cell/Cell.js.map +1 -1
  86. package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  87. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
  88. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  89. package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  90. package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
  91. package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
  92. package/dist/components/Cell/useDraggable.d.ts +13 -0
  93. package/dist/components/Cell/useDraggable.js +126 -0
  94. package/dist/components/Cell/useDraggable.js.map +1 -0
  95. package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
  96. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  97. package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
  98. package/dist/components/CustomSelect/CustomSelect.js +3 -5
  99. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  100. package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  101. package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
  102. package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
  103. package/dist/components/FocusTrap/FocusTrap.js +3 -5
  104. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  105. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  106. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  107. package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
  108. package/dist/components/GridAvatar/GridAvatar.js +41 -0
  109. package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
  110. package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  111. package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
  112. package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  113. package/dist/components/NativeSelect/NativeSelect.js +2 -2
  114. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  115. package/dist/components/Progress/Progress.js +6 -3
  116. package/dist/components/Progress/Progress.js.map +1 -1
  117. package/dist/components/Removable/Removable.d.ts +2 -1
  118. package/dist/components/Removable/Removable.js +20 -11
  119. package/dist/components/Removable/Removable.js.map +1 -1
  120. package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
  121. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  122. package/dist/components/Tabbar/Tabbar.js +3 -1
  123. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  124. package/dist/components/TabbarItem/TabbarItem.d.ts +3 -1
  125. package/dist/components/TabbarItem/TabbarItem.js +26 -10
  126. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  127. package/dist/components/View/View.js +53 -42
  128. package/dist/components/View/View.js.map +1 -1
  129. package/dist/components/View/ViewInfinite.js +65 -54
  130. package/dist/components/View/ViewInfinite.js.map +1 -1
  131. package/dist/components.css +1 -1
  132. package/dist/components.css.map +1 -1
  133. package/dist/cssm/components/ActionSheet/ActionSheet.js +1 -11
  134. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  135. package/dist/cssm/components/Avatar/Avatar.js +4 -2
  136. package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
  137. package/dist/cssm/components/CardScroll/CardScroll.js +1 -1
  138. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  139. package/dist/cssm/components/Cell/Cell.css +1 -1
  140. package/dist/cssm/components/Cell/Cell.js +103 -177
  141. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  142. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
  143. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
  144. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  145. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
  146. package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
  147. package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
  148. package/dist/cssm/components/Cell/useDraggable.js +126 -0
  149. package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
  150. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
  151. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  152. package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -5
  153. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  154. package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
  155. package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
  156. package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
  157. package/dist/cssm/components/FocusTrap/FocusTrap.js +3 -5
  158. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  159. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  160. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  161. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  162. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  163. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
  164. package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
  165. package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
  166. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
  167. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
  168. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  169. package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
  170. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  171. package/dist/cssm/components/Progress/Progress.js +6 -3
  172. package/dist/cssm/components/Progress/Progress.js.map +1 -1
  173. package/dist/cssm/components/Removable/Removable.css +1 -1
  174. package/dist/cssm/components/Removable/Removable.js +20 -11
  175. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  176. package/dist/cssm/components/Select/Select.css +1 -1
  177. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
  178. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  179. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  180. package/dist/cssm/components/Tabbar/Tabbar.css +1 -1
  181. package/dist/cssm/components/Tabbar/Tabbar.js +3 -1
  182. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  183. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  184. package/dist/cssm/components/TabbarItem/TabbarItem.js +26 -10
  185. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  186. package/dist/cssm/components/TabsItem/TabsItem.css +1 -1
  187. package/dist/cssm/components/View/View.js +53 -42
  188. package/dist/cssm/components/View/View.js.map +1 -1
  189. package/dist/cssm/components/View/ViewInfinite.js +65 -54
  190. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  191. package/dist/cssm/index.js +2 -0
  192. package/dist/cssm/index.js.map +1 -1
  193. package/dist/cssm/lib/prefixClass.js +7 -6
  194. package/dist/cssm/lib/prefixClass.js.map +1 -1
  195. package/dist/cssm/styles/components.css +1 -1
  196. package/dist/index.d.ts +4 -0
  197. package/dist/index.js +2 -0
  198. package/dist/index.js.map +1 -1
  199. package/dist/lib/prefixClass.js +7 -6
  200. package/dist/lib/prefixClass.js.map +1 -1
  201. package/dist/vkui.css +1 -1
  202. package/dist/vkui.css.map +1 -1
  203. package/package.json +1 -1
  204. package/src/components/ActionSheet/ActionSheet.tsx +1 -8
  205. package/src/components/Avatar/Avatar.tsx +5 -2
  206. package/src/components/CardScroll/CardScroll.tsx +4 -1
  207. package/src/components/Cell/Cell.css +22 -45
  208. package/src/components/Cell/Cell.tsx +101 -162
  209. package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
  210. package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
  211. package/src/components/Cell/CellDragger/CellDragger.css +4 -0
  212. package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
  213. package/src/components/Cell/Readme.md +89 -51
  214. package/src/components/Cell/useDraggable.tsx +112 -0
  215. package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
  216. package/src/components/CustomSelect/CustomSelect.tsx +3 -4
  217. package/src/components/DropdownIcon/DropdownIcon.css +3 -0
  218. package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
  219. package/src/components/Epic/Readme.md +1 -0
  220. package/src/components/FocusTrap/FocusTrap.tsx +11 -8
  221. package/src/components/FormItem/FormItem.css +8 -8
  222. package/src/components/FormLayoutGroup/FormLayoutGroup.css +9 -3
  223. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
  224. package/src/components/GridAvatar/GridAvatar.css +37 -0
  225. package/src/components/GridAvatar/GridAvatar.tsx +55 -0
  226. package/src/components/GridAvatar/Readme.md +12 -0
  227. package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
  228. package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
  229. package/src/components/InitialsAvatar/Readme.md +14 -0
  230. package/src/components/ModalRoot/Readme.md +2 -2
  231. package/src/components/NativeSelect/NativeSelect.tsx +2 -2
  232. package/src/components/Progress/Progress.tsx +8 -3
  233. package/src/components/Removable/Removable.css +9 -20
  234. package/src/components/Removable/Removable.tsx +19 -11
  235. package/src/components/Select/Select.css +1 -1
  236. package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
  237. package/src/components/SimpleCell/SimpleCell.css +10 -27
  238. package/src/components/Tabbar/Tabbar.css +15 -4
  239. package/src/components/Tabbar/Tabbar.tsx +3 -1
  240. package/src/components/TabbarItem/Readme.md +72 -0
  241. package/src/components/TabbarItem/TabbarItem.css +65 -14
  242. package/src/components/TabbarItem/TabbarItem.tsx +46 -22
  243. package/src/components/TabsItem/TabsItem.css +5 -2
  244. package/src/components/View/View.tsx +37 -31
  245. package/src/components/View/ViewInfinite.tsx +44 -38
  246. package/src/index.ts +4 -0
  247. package/src/lib/prefixClass.ts +9 -6
  248. package/src/styles/components.css +4 -0
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import { HasRootRef } from '../../types';
3
+ import './InitialsAvatar.css';
4
+ /**
5
+ * Градиенты, которые можно использовать в алгоритме поиска градиентов по числовому идентификатору пользователя.
6
+ * @example user.id % 6 + 1
7
+ */
8
+ export declare type InitialsAvatarNumberGradients = 1 | 2 | 3 | 4 | 5 | 6;
9
+ export declare type InitialsAvatarTextGradients = 'red' | 'pink' | 'orange' | 'yellow' | 'green' | 'l-blue' | 'blue' | 'violet';
10
+ export interface InitialsAvatarProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement> {
11
+ children?: React.ReactNode;
12
+ /**
13
+ * `'red' | 'pink' | 'orange' | 'yellow' | 'green' | 'l-blue' | 'blue' | 'violet'`
14
+ *
15
+ * Если передано число, то оно будет сконвертировано в строчное представление цвета по следующей схеме:
16
+ *
17
+ * 1: 'red'
18
+ *
19
+ * 2: 'orange'
20
+ *
21
+ * 3: 'yellow'
22
+ *
23
+ * 4: 'green'
24
+ *
25
+ * 5: 'l-blue'
26
+ *
27
+ * 6: 'violet'
28
+ */
29
+ gradientColor?: InitialsAvatarNumberGradients | InitialsAvatarTextGradients;
30
+ size?: number;
31
+ shadow?: boolean;
32
+ }
33
+ export declare const InitialsAvatar: React.FC<InitialsAvatarProps>;
@@ -0,0 +1,46 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["size", "shadow", "children", "gradientColor", "style"];
5
+ import { createScopedElement } from "../../lib/jsxRuntime";
6
+ import { classNames } from "../../lib/classNames";
7
+ import Avatar, { AVATAR_DEFAULT_SHADOW, AVATAR_DEFAULT_SIZE } from "../Avatar/Avatar";
8
+ var COLORS_NUMBER_TO_TEXT_MAP = {
9
+ 1: 'red',
10
+ 2: 'orange',
11
+ 3: 'yellow',
12
+ 4: 'green',
13
+ 5: 'l-blue',
14
+ 6: 'violet'
15
+ };
16
+
17
+ function getInitialsFontSize(avatarSize) {
18
+ var calculatedFontSize = Math.ceil(avatarSize * 0.36);
19
+ var evenFix = calculatedFontSize % 2;
20
+ return calculatedFontSize + evenFix;
21
+ }
22
+
23
+ export var InitialsAvatar = function InitialsAvatar(_ref) {
24
+ var _ref$size = _ref.size,
25
+ size = _ref$size === void 0 ? AVATAR_DEFAULT_SIZE : _ref$size,
26
+ _ref$shadow = _ref.shadow,
27
+ shadow = _ref$shadow === void 0 ? AVATAR_DEFAULT_SHADOW : _ref$shadow,
28
+ children = _ref.children,
29
+ gradientColor = _ref.gradientColor,
30
+ style = _ref.style,
31
+ restProps = _objectWithoutProperties(_ref, _excluded);
32
+
33
+ var gradientName = typeof gradientColor === 'string' ? gradientColor : COLORS_NUMBER_TO_TEXT_MAP[gradientColor];
34
+ return createScopedElement(Avatar, _extends({}, restProps, {
35
+ style: _objectSpread(_objectSpread({}, style), {}, {
36
+ fontSize: getInitialsFontSize(size)
37
+ }),
38
+ shadow: shadow,
39
+ size: size,
40
+ vkuiClass: classNames('InitialsAvatar', "InitialsAvatar--color-".concat(gradientName))
41
+ }), createScopedElement("span", {
42
+ "aria-hidden": "true",
43
+ vkuiClass: "InitialsAvatar__text"
44
+ }, children));
45
+ };
46
+ //# sourceMappingURL=InitialsAvatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/InitialsAvatar/InitialsAvatar.tsx"],"names":["classNames","Avatar","AVATAR_DEFAULT_SHADOW","AVATAR_DEFAULT_SIZE","COLORS_NUMBER_TO_TEXT_MAP","getInitialsFontSize","avatarSize","calculatedFontSize","Math","ceil","evenFix","InitialsAvatar","size","shadow","children","gradientColor","style","restProps","gradientName","fontSize"],"mappings":";;;;;AAEA,SAASA,UAAT;AACA,OAAOC,MAAP,IAAiBC,qBAAjB,EAAwCC,mBAAxC;AA0CA,IAAMC,yBAA6F,GAAG;AACpG,KAAG,KADiG;AAEpG,KAAG,QAFiG;AAGpG,KAAG,QAHiG;AAIpG,KAAG,OAJiG;AAKpG,KAAG,QALiG;AAMpG,KAAG;AANiG,CAAtG;;AASA,SAASC,mBAAT,CAA6BC,UAA7B,EAAiD;AAC/C,MAAMC,kBAAkB,GAAGC,IAAI,CAACC,IAAL,CAAUH,UAAU,GAAG,IAAvB,CAA3B;AACA,MAAMI,OAAO,GAAGH,kBAAkB,GAAG,CAArC;AACA,SAAOA,kBAAkB,GAAGG,OAA5B;AACD;;AAED,OAAO,IAAMC,cAA6C,GAAG,SAAhDA,cAAgD,OAOlC;AAAA,uBANzBC,IAMyB;AAAA,MANzBA,IAMyB,0BANlBT,mBAMkB;AAAA,yBALzBU,MAKyB;AAAA,MALzBA,MAKyB,4BALhBX,qBAKgB;AAAA,MAJzBY,QAIyB,QAJzBA,QAIyB;AAAA,MAHzBC,aAGyB,QAHzBA,aAGyB;AAAA,MAFzBC,KAEyB,QAFzBA,KAEyB;AAAA,MADtBC,SACsB;;AACzB,MAAMC,YAAY,GAAG,OAAOH,aAAP,KAAyB,QAAzB,GAAoCA,aAApC,GAAoDX,yBAAyB,CAACW,aAAD,CAAlG;AAEA,SACE,oBAAC,MAAD,eACME,SADN;AAEE,IAAA,KAAK,kCACAD,KADA;AAEHG,MAAAA,QAAQ,EAAEd,mBAAmB,CAACO,IAAD;AAF1B,MAFP;AAME,IAAA,MAAM,EAAEC,MANV;AAOE,IAAA,IAAI,EAAED,IAPR;AAQE,IAAA,SAAS,EAAEZ,UAAU,CACnB,gBADmB,kCAEMkB,YAFN;AARvB,MAaE;AAAM,mBAAY,MAAlB;AAAyB,IAAA,SAAS,EAAC;AAAnC,KACGJ,QADH,CAbF,CADF;AAmBD,CA7BM","sourcesContent":["import * as React from 'react';\nimport { HasRootRef } from '../../types';\nimport { classNames } from '../../lib/classNames';\nimport Avatar, { AVATAR_DEFAULT_SHADOW, AVATAR_DEFAULT_SIZE } from '../Avatar/Avatar';\nimport './InitialsAvatar.css';\n\n/**\n * Градиенты, которые можно использовать в алгоритме поиска градиентов по числовому идентификатору пользователя.\n * @example user.id % 6 + 1\n */\nexport type InitialsAvatarNumberGradients = 1 | 2 | 3 | 4 | 5 | 6;\nexport type InitialsAvatarTextGradients =\n | 'red'\n | 'pink'\n | 'orange'\n | 'yellow'\n | 'green'\n | 'l-blue'\n | 'blue'\n | 'violet';\n\nexport interface InitialsAvatarProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement> {\n children?: React.ReactNode;\n /**\n * `'red' | 'pink' | 'orange' | 'yellow' | 'green' | 'l-blue' | 'blue' | 'violet'`\n *\n * Если передано число, то оно будет сконвертировано в строчное представление цвета по следующей схеме:\n *\n * 1: 'red'\n *\n * 2: 'orange'\n *\n * 3: 'yellow'\n *\n * 4: 'green'\n *\n * 5: 'l-blue'\n *\n * 6: 'violet'\n */\n gradientColor?: InitialsAvatarNumberGradients | InitialsAvatarTextGradients;\n size?: number;\n shadow?: boolean;\n}\n\nconst COLORS_NUMBER_TO_TEXT_MAP: Record<InitialsAvatarNumberGradients, InitialsAvatarTextGradients> = {\n 1: 'red',\n 2: 'orange',\n 3: 'yellow',\n 4: 'green',\n 5: 'l-blue',\n 6: 'violet',\n};\n\nfunction getInitialsFontSize(avatarSize: number) {\n const calculatedFontSize = Math.ceil(avatarSize * 0.36);\n const evenFix = calculatedFontSize % 2;\n return calculatedFontSize + evenFix;\n}\n\nexport const InitialsAvatar: React.FC<InitialsAvatarProps> = ({\n size = AVATAR_DEFAULT_SIZE,\n shadow = AVATAR_DEFAULT_SHADOW,\n children,\n gradientColor,\n style,\n ...restProps\n}: InitialsAvatarProps) => {\n const gradientName = typeof gradientColor === 'string' ? gradientColor : COLORS_NUMBER_TO_TEXT_MAP[gradientColor];\n\n return (\n <Avatar\n {...restProps}\n style={{\n ...style,\n fontSize: getInitialsFontSize(size),\n }}\n shadow={shadow}\n size={size}\n vkuiClass={classNames(\n 'InitialsAvatar',\n `InitialsAvatar--color-${gradientName}`,\n )}\n >\n <span aria-hidden=\"true\" vkuiClass=\"InitialsAvatar__text\">\n {children}\n </span>\n </Avatar>\n );\n};\n"],"file":"InitialsAvatar.js"}
@@ -6,7 +6,7 @@ var _excluded = ["style", "defaultValue", "align", "placeholder", "children", "c
6
6
  import { createScopedElement } from "../../lib/jsxRuntime";
7
7
  import * as React from 'react';
8
8
  import { classNames } from "../../lib/classNames";
9
- import { Icon20Dropdown, Icon24Dropdown } from '@vkontakte/icons';
9
+ import { DropdownIcon } from "../DropdownIcon/DropdownIcon";
10
10
  import { FormField } from "../FormField/FormField";
11
11
  import { withAdaptivity, SizeType } from "../../hoc/withAdaptivity";
12
12
  import { getClassName } from "../../helpers/getClassName";
@@ -72,7 +72,7 @@ var NativeSelect = function NativeSelect(_ref) {
72
72
  style: style,
73
73
  getRootRef: getRootRef,
74
74
  disabled: disabled,
75
- after: sizeY === SizeType.COMPACT ? createScopedElement(Icon20Dropdown, null) : createScopedElement(Icon24Dropdown, null)
75
+ after: createScopedElement(DropdownIcon, null)
76
76
  }, createScopedElement("select", _extends({}, restProps, {
77
77
  disabled: disabled,
78
78
  vkuiClass: "Select__el",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"names":["React","classNames","Icon20Dropdown","Icon24Dropdown","FormField","withAdaptivity","SizeType","getClassName","Headline","Text","VKCOM","useIsomorphicLayoutEffect","useEnsuredControl","useExternRef","usePlatform","NativeSelect","style","defaultValue","align","placeholder","children","className","getRef","getRootRef","disabled","sizeX","sizeY","multiline","restProps","platform","useState","title","setTitle","notSelected","setNotSelected","value","onChange","selectRef","selectedOption","current","options","selectedIndex","text","TypographyComponent","COMPACT"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { Icon20Dropdown, Icon24Dropdown } from '@vkontakte/icons';\nimport { FormField } from '../FormField/FormField';\nimport { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps, SizeType } from '../../hoc/withAdaptivity';\nimport { getClassName } from '../../helpers/getClassName';\nimport Headline from '../Typography/Headline/Headline';\nimport Text from '../Typography/Text/Text';\nimport { VKCOM } from '../../lib/platform';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport '../Select/Select.css';\n\nexport interface NativeSelectProps extends\n React.SelectHTMLAttributes<HTMLSelectElement>,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLLabelElement>,\n HasAlign,\n AdaptivityProps {\n placeholder?: string;\n multiline?: boolean;\n}\n\nexport interface SelectState {\n value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n title?: string;\n notSelected?: boolean;\n}\n\nconst NativeSelect: React.FC<NativeSelectProps> = ({\n style, defaultValue = '', align, placeholder, children,\n className, getRef, getRootRef, disabled, sizeX, sizeY, multiline,\n ...restProps\n}) => {\n const platform = usePlatform();\n const [title, setTitle] = React.useState('');\n const [notSelected, setNotSelected] = React.useState(false);\n const [value, onChange] = useEnsuredControl(restProps, { defaultValue });\n const selectRef = useExternRef(getRef);\n useIsomorphicLayoutEffect(() => {\n const selectedOption = selectRef.current.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setNotSelected(selectedOption.value === '' && placeholder != null);\n }\n }, [value, children]);\n\n const TypographyComponent = platform === VKCOM || sizeY === SizeType.COMPACT ? Text : Headline;\n\n return (\n <FormField\n Component=\"label\"\n vkuiClass={classNames(getClassName('Select', platform), {\n ['Select--not-selected']: notSelected,\n [`Select--align-${align}`]: !!align,\n [`Select--sizeX--${sizeX}`]: !!sizeX,\n [`Select--sizeY--${sizeY}`]: !!sizeY,\n 'Select--multiline': multiline,\n })}\n className={className}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n after={sizeY === SizeType.COMPACT ? <Icon20Dropdown /> : <Icon24Dropdown />}\n >\n <select\n {...restProps}\n disabled={disabled}\n vkuiClass=\"Select__el\"\n onChange={onChange}\n value={value}\n ref={selectRef}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {children}\n </select>\n <TypographyComponent Component=\"div\" weight=\"regular\" vkuiClass=\"Select__container\">\n <span vkuiClass=\"Select__title\">{title}</span>\n </TypographyComponent>\n </FormField>\n );\n};\n\nexport default withAdaptivity(NativeSelect, {\n sizeX: true,\n sizeY: true,\n});\n"],"file":"NativeSelect.js"}
1
+ {"version":3,"sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"names":["React","classNames","DropdownIcon","FormField","withAdaptivity","SizeType","getClassName","Headline","Text","VKCOM","useIsomorphicLayoutEffect","useEnsuredControl","useExternRef","usePlatform","NativeSelect","style","defaultValue","align","placeholder","children","className","getRef","getRootRef","disabled","sizeX","sizeY","multiline","restProps","platform","useState","title","setTitle","notSelected","setNotSelected","value","onChange","selectRef","selectedOption","current","options","selectedIndex","text","TypographyComponent","COMPACT"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField } from '../FormField/FormField';\nimport { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps, SizeType } from '../../hoc/withAdaptivity';\nimport { getClassName } from '../../helpers/getClassName';\nimport Headline from '../Typography/Headline/Headline';\nimport Text from '../Typography/Text/Text';\nimport { VKCOM } from '../../lib/platform';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport '../Select/Select.css';\n\nexport interface NativeSelectProps extends\n React.SelectHTMLAttributes<HTMLSelectElement>,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLLabelElement>,\n HasAlign,\n AdaptivityProps {\n placeholder?: string;\n multiline?: boolean;\n}\n\nexport interface SelectState {\n value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n title?: string;\n notSelected?: boolean;\n}\n\nconst NativeSelect: React.FC<NativeSelectProps> = ({\n style, defaultValue = '', align, placeholder, children,\n className, getRef, getRootRef, disabled, sizeX, sizeY, multiline,\n ...restProps\n}) => {\n const platform = usePlatform();\n const [title, setTitle] = React.useState('');\n const [notSelected, setNotSelected] = React.useState(false);\n const [value, onChange] = useEnsuredControl(restProps, { defaultValue });\n const selectRef = useExternRef(getRef);\n useIsomorphicLayoutEffect(() => {\n const selectedOption = selectRef.current.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setNotSelected(selectedOption.value === '' && placeholder != null);\n }\n }, [value, children]);\n\n const TypographyComponent = platform === VKCOM || sizeY === SizeType.COMPACT ? Text : Headline;\n\n return (\n <FormField\n Component=\"label\"\n vkuiClass={classNames(getClassName('Select', platform), {\n ['Select--not-selected']: notSelected,\n [`Select--align-${align}`]: !!align,\n [`Select--sizeX--${sizeX}`]: !!sizeX,\n [`Select--sizeY--${sizeY}`]: !!sizeY,\n 'Select--multiline': multiline,\n })}\n className={className}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n after={<DropdownIcon />}\n >\n <select\n {...restProps}\n disabled={disabled}\n vkuiClass=\"Select__el\"\n onChange={onChange}\n value={value}\n ref={selectRef}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {children}\n </select>\n <TypographyComponent Component=\"div\" weight=\"regular\" vkuiClass=\"Select__container\">\n <span vkuiClass=\"Select__title\">{title}</span>\n </TypographyComponent>\n </FormField>\n );\n};\n\nexport default withAdaptivity(NativeSelect, {\n sizeX: true,\n sizeY: true,\n});\n"],"file":"NativeSelect.js"}
@@ -4,6 +4,8 @@ var _excluded = ["value", "getRootRef"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import { getClassName } from "../../helpers/getClassName";
6
6
  import { usePlatform } from "../../hooks/usePlatform";
7
+ var PROGRESS_MIN_VALUE = 0;
8
+ var PROGRESS_MAX_VALUE = 100;
7
9
 
8
10
  var Progress = function Progress(_ref) {
9
11
  var value = _ref.value,
@@ -11,12 +13,13 @@ var Progress = function Progress(_ref) {
11
13
  restProps = _objectWithoutProperties(_ref, _excluded);
12
14
 
13
15
  var platform = usePlatform();
16
+ var progress = Math.max(PROGRESS_MIN_VALUE, Math.min(value, PROGRESS_MAX_VALUE));
14
17
  return createScopedElement("div", _extends({
15
18
  "aria-valuenow": value
16
19
  }, restProps, {
17
20
  role: "progressbar",
18
- "aria-valuemin": 0,
19
- "aria-valuemax": 100,
21
+ "aria-valuemin": PROGRESS_MIN_VALUE,
22
+ "aria-valuemax": PROGRESS_MAX_VALUE,
20
23
  ref: getRootRef,
21
24
  vkuiClass: getClassName('Progress', platform)
22
25
  }), createScopedElement("div", {
@@ -25,7 +28,7 @@ var Progress = function Progress(_ref) {
25
28
  }), createScopedElement("div", {
26
29
  vkuiClass: "Progress__in",
27
30
  style: {
28
- width: "".concat(value, "%")
31
+ width: "".concat(progress, "%")
29
32
  },
30
33
  "aria-hidden": "true"
31
34
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Progress/Progress.tsx"],"names":["getClassName","usePlatform","Progress","value","getRootRef","restProps","platform","width","defaultProps"],"mappings":";;;;AACA,SAASA,YAAT;AAEA,SAASC,WAAT;;AAOA,IAAMC,QAAiC,GAAG,SAApCA,QAAoC,OAAwD;AAAA,MAArDC,KAAqD,QAArDA,KAAqD;AAAA,MAA9CC,UAA8C,QAA9CA,UAA8C;AAAA,MAA/BC,SAA+B;;AAChG,MAAMC,QAAQ,GAAGL,WAAW,EAA5B;AAEA,SACE;AACE,qBAAeE;AADjB,KAEME,SAFN;AAGE,IAAA,IAAI,EAAC,aAHP;AAIE,qBAAe,CAJjB;AAKE,qBAAe,GALjB;AAME,IAAA,GAAG,EAAED,UANP;AAOE,IAAA,SAAS,EAAEJ,YAAY,CAAC,UAAD,EAAaM,QAAb;AAPzB,MASE;AAAK,IAAA,SAAS,EAAC,cAAf;AAA8B,mBAAY;AAA1C,IATF,EAUE;AAAK,IAAA,SAAS,EAAC,cAAf;AAA8B,IAAA,KAAK,EAAE;AAAEC,MAAAA,KAAK,YAAKJ,KAAL;AAAP,KAArC;AAA6D,mBAAY;AAAzE,IAVF,CADF;AAcD,CAjBD;;AAmBAD,QAAQ,CAACM,YAAT,GAAwB;AACtBL,EAAAA,KAAK,EAAE;AADe,CAAxB;AAIA,eAAeD,QAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { HasRootRef } from '../../types';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Progress.css';\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement> {\n value?: number;\n}\n\nconst Progress: React.FC<ProgressProps> = ({ value, getRootRef, ...restProps }: ProgressProps) => {\n const platform = usePlatform();\n\n return (\n <div\n aria-valuenow={value}\n {...restProps}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={100}\n ref={getRootRef}\n vkuiClass={getClassName('Progress', platform)}\n >\n <div vkuiClass=\"Progress__bg\" aria-hidden=\"true\" />\n <div vkuiClass=\"Progress__in\" style={{ width: `${value}%` }} aria-hidden=\"true\" />\n </div>\n );\n};\n\nProgress.defaultProps = {\n value: 0,\n};\n\nexport default Progress;\n"],"file":"Progress.js"}
1
+ {"version":3,"sources":["../../../src/components/Progress/Progress.tsx"],"names":["getClassName","usePlatform","PROGRESS_MIN_VALUE","PROGRESS_MAX_VALUE","Progress","value","getRootRef","restProps","platform","progress","Math","max","min","width","defaultProps"],"mappings":";;;;AACA,SAASA,YAAT;AAEA,SAASC,WAAT;AAOA,IAAMC,kBAAkB,GAAG,CAA3B;AACA,IAAMC,kBAAkB,GAAG,GAA3B;;AAEA,IAAMC,QAAiC,GAAG,SAApCA,QAAoC,OAAwD;AAAA,MAArDC,KAAqD,QAArDA,KAAqD;AAAA,MAA9CC,UAA8C,QAA9CA,UAA8C;AAAA,MAA/BC,SAA+B;;AAChG,MAAMC,QAAQ,GAAGP,WAAW,EAA5B;AAEA,MAAMQ,QAAQ,GAAGC,IAAI,CAACC,GAAL,CAAST,kBAAT,EAA6BQ,IAAI,CAACE,GAAL,CAASP,KAAT,EAAgBF,kBAAhB,CAA7B,CAAjB;AAEA,SACE;AACE,qBAAeE;AADjB,KAEME,SAFN;AAGE,IAAA,IAAI,EAAC,aAHP;AAIE,qBAAeL,kBAJjB;AAKE,qBAAeC,kBALjB;AAME,IAAA,GAAG,EAAEG,UANP;AAOE,IAAA,SAAS,EAAEN,YAAY,CAAC,UAAD,EAAaQ,QAAb;AAPzB,MASE;AAAK,IAAA,SAAS,EAAC,cAAf;AAA8B,mBAAY;AAA1C,IATF,EAUE;AAAK,IAAA,SAAS,EAAC,cAAf;AAA8B,IAAA,KAAK,EAAE;AAAEK,MAAAA,KAAK,YAAKJ,QAAL;AAAP,KAArC;AAAgE,mBAAY;AAA5E,IAVF,CADF;AAcD,CAnBD;;AAqBAL,QAAQ,CAACU,YAAT,GAAwB;AACtBT,EAAAA,KAAK,EAAE;AADe,CAAxB;AAIA,eAAeD,QAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { HasRootRef } from '../../types';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Progress.css';\n\nexport interface ProgressProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLDivElement> {\n value?: number;\n}\n\nconst PROGRESS_MIN_VALUE = 0;\nconst PROGRESS_MAX_VALUE = 100;\n\nconst Progress: React.FC<ProgressProps> = ({ value, getRootRef, ...restProps }: ProgressProps) => {\n const platform = usePlatform();\n\n const progress = Math.max(PROGRESS_MIN_VALUE, Math.min(value, PROGRESS_MAX_VALUE));\n\n return (\n <div\n aria-valuenow={value}\n {...restProps}\n role=\"progressbar\"\n aria-valuemin={PROGRESS_MIN_VALUE}\n aria-valuemax={PROGRESS_MAX_VALUE}\n ref={getRootRef}\n vkuiClass={getClassName('Progress', platform)}\n >\n <div vkuiClass=\"Progress__bg\" aria-hidden=\"true\" />\n <div vkuiClass=\"Progress__in\" style={{ width: `${progress}%` }} aria-hidden=\"true\" />\n </div>\n );\n};\n\nProgress.defaultProps = {\n value: 0,\n};\n\nexport default Progress;\n"],"file":"Progress.js"}
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { HasRootRef } from '../../types';
2
3
  import './Removable.css';
3
4
  export interface RemovableProps {
4
5
  /**
@@ -10,7 +11,7 @@ export interface RemovableProps {
10
11
  */
11
12
  onRemove?: (e: React.MouseEvent, rootEl?: HTMLElement) => void;
12
13
  }
13
- interface RemovableOwnProps extends React.AllHTMLAttributes<HTMLElement>, RemovableProps {
14
+ interface RemovableOwnProps extends React.AllHTMLAttributes<HTMLElement>, RemovableProps, HasRootRef<HTMLDivElement> {
14
15
  /**
15
16
  * Расположение кнопки удаления.
16
17
  */
@@ -1,11 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
- var _excluded = ["children", "onRemove", "removePlaceholder", "align"];
4
+ var _excluded = ["getRootRef", "children", "onRemove", "removePlaceholder", "align"];
5
5
  import { createScopedElement } from "../../lib/jsxRuntime";
6
6
  import * as React from 'react';
7
7
  import { classNames } from "../../lib/classNames";
8
- import { getTitleFromChildren } from "../../lib/utils";
8
+ import { getTitleFromChildren, noop } from "../../lib/utils";
9
+ import { useExternRef } from "../../hooks/useExternRef";
9
10
  import { usePlatform } from "../../hooks/usePlatform";
10
11
  import { getClassName } from "../../helpers/getClassName";
11
12
  import { useAdaptivity } from "../../hooks/useAdaptivity";
@@ -23,7 +24,7 @@ var RemovableIos = function RemovableIos(_ref) {
23
24
  children = _ref.children;
24
25
 
25
26
  var _useDOM = useDOM(),
26
- document = _useDOM.document;
27
+ window = _useDOM.window;
27
28
 
28
29
  var removeButtonRef = React.useRef(null);
29
30
 
@@ -32,8 +33,10 @@ var RemovableIos = function RemovableIos(_ref) {
32
33
  removeOffset = _React$useState2[0],
33
34
  updateRemoveOffset = _React$useState2[1];
34
35
 
35
- useGlobalEventListener(document, 'click', removeOffset > 0 && function () {
36
- updateRemoveOffset(0);
36
+ useGlobalEventListener(window, 'click', function () {
37
+ if (removeOffset > 0) {
38
+ updateRemoveOffset(0);
39
+ }
37
40
  });
38
41
 
39
42
  var onRemoveTransitionEnd = function onRemoveTransitionEnd() {
@@ -44,7 +47,9 @@ var RemovableIos = function RemovableIos(_ref) {
44
47
  }
45
48
  };
46
49
 
47
- var onRemoveActivateClick = function onRemoveActivateClick() {
50
+ var onRemoveActivateClick = function onRemoveActivateClick(e) {
51
+ e.stopPropagation();
52
+
48
53
  var _removeButtonRef$curr2 = removeButtonRef === null || removeButtonRef === void 0 ? void 0 : removeButtonRef.current,
49
54
  _removeButtonRef$curr3 = _removeButtonRef$curr2.offsetWidth,
50
55
  offsetWidth = _removeButtonRef$curr3 === void 0 ? 0 : _removeButtonRef$curr3;
@@ -78,16 +83,17 @@ var RemovableIos = function RemovableIos(_ref) {
78
83
  disabled: removeOffset === 0,
79
84
  getRootRef: removeButtonRef,
80
85
  vkuiClass: "Removable__remove",
81
- onClick: onRemoveClick,
82
- onTransitionEnd: onRemoveTransitionEnd
86
+ onClick: onRemoveClick
83
87
  }, createScopedElement("span", {
84
88
  vkuiClass: "Removable__remove-in"
85
89
  }, removePlaceholder)));
86
90
  };
87
91
 
88
92
  export var Removable = function Removable(_ref2) {
89
- var children = _ref2.children,
90
- onRemove = _ref2.onRemove,
93
+ var getRootRef = _ref2.getRootRef,
94
+ children = _ref2.children,
95
+ _ref2$onRemove = _ref2.onRemove,
96
+ onRemove = _ref2$onRemove === void 0 ? noop : _ref2$onRemove,
91
97
  _ref2$removePlacehold = _ref2.removePlaceholder,
92
98
  removePlaceholder = _ref2$removePlacehold === void 0 ? 'Удалить' : _ref2$removePlacehold,
93
99
  _ref2$align = _ref2.align,
@@ -99,13 +105,16 @@ export var Removable = function Removable(_ref2) {
99
105
  var _useAdaptivity = useAdaptivity(),
100
106
  sizeY = _useAdaptivity.sizeY;
101
107
 
108
+ var ref = useExternRef(getRootRef);
109
+
102
110
  var onRemoveClick = function onRemoveClick(e) {
103
111
  e.preventDefault();
104
- onRemove && onRemove(e);
112
+ onRemove(e);
105
113
  };
106
114
 
107
115
  var removePlaceholderString = getTitleFromChildren(removePlaceholder);
108
116
  return createScopedElement("div", _extends({}, restProps, {
117
+ ref: ref,
109
118
  vkuiClass: classNames(getClassName('Removable', platform), "Removable--".concat(align), "Removable--sizeY-".concat(sizeY))
110
119
  }), (platform === ANDROID || platform === VKCOM) && createScopedElement("div", {
111
120
  vkuiClass: "Removable__content"
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Removable/Removable.tsx"],"names":["React","classNames","getTitleFromChildren","usePlatform","getClassName","useAdaptivity","useDOM","ANDROID","IOS","VKCOM","Icon24Cancel","IconButton","useGlobalEventListener","Tappable","RemovableIos","onRemoveClick","removePlaceholder","removePlaceholderString","children","document","removeButtonRef","useRef","useState","removeOffset","updateRemoveOffset","onRemoveTransitionEnd","current","focus","onRemoveActivateClick","offsetWidth","transform","Removable","onRemove","align","restProps","platform","sizeY","e","preventDefault"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { getTitleFromChildren } from '../../lib/utils';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDOM } from '../../lib/dom';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { Icon24Cancel } from '@vkontakte/icons';\nimport IconButton from '../IconButton/IconButton';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport Tappable from '../Tappable/Tappable';\nimport './Removable.css';\n\nexport interface RemovableProps {\n /**\n * iOS only. Текст в выезжающей кнопке для удаления ячейки.\n */\n removePlaceholder?: React.ReactNode;\n /**\n * Коллбэк срабатывает при клике на контрол удаления.\n */\n onRemove?: (e: React.MouseEvent, rootEl?: HTMLElement) => void;\n}\n\ninterface RemovableIosOwnProps extends Pick<RemovableProps, 'removePlaceholder'> {\n onRemoveClick?: (e: React.MouseEvent, rootEl?: HTMLElement) => void;\n removePlaceholderString?: string;\n}\n\nconst RemovableIos: React.FC<RemovableIosOwnProps> = ({\n onRemoveClick,\n removePlaceholder,\n removePlaceholderString,\n children,\n}) => {\n const { document } = useDOM();\n\n const removeButtonRef = React.useRef(null);\n const [removeOffset, updateRemoveOffset] = React.useState(0);\n\n useGlobalEventListener(document, 'click', removeOffset > 0 && (() => {\n updateRemoveOffset(0);\n }));\n\n const onRemoveTransitionEnd = () => {\n if (removeOffset > 0) {\n removeButtonRef?.current?.focus();\n }\n };\n\n const onRemoveActivateClick = () => {\n const { offsetWidth = 0 } = removeButtonRef?.current;\n updateRemoveOffset(offsetWidth);\n };\n\n return (\n <div\n vkuiClass=\"Removable__content\"\n style={{ transform: `translateX(-${removeOffset ?? 0}px)` }}\n onTransitionEnd={onRemoveTransitionEnd}\n >\n <IconButton\n hasActive={false}\n hasHover={false}\n aria-label={removePlaceholderString}\n vkuiClass=\"Removable__action Removable__toggle\"\n onClick={onRemoveActivateClick}\n disabled={removeOffset > 0}\n >\n <i vkuiClass=\"Removable__toggle-in\" role=\"presentation\" />\n </IconButton>\n {children}\n\n <span vkuiClass=\"Removable__offset\" aria-hidden=\"true\"></span>\n\n <Tappable\n Component=\"button\"\n hasActive={false}\n hasHover={false}\n disabled={removeOffset === 0}\n getRootRef={removeButtonRef}\n vkuiClass=\"Removable__remove\"\n onClick={onRemoveClick}\n onTransitionEnd={onRemoveTransitionEnd}\n >\n <span vkuiClass=\"Removable__remove-in\">{removePlaceholder}</span>\n </Tappable>\n </div>\n );\n};\n\ninterface RemovableOwnProps extends React.AllHTMLAttributes<HTMLElement>, RemovableProps {\n /**\n * Расположение кнопки удаления.\n */\n align?: 'start' | 'center';\n}\n\nexport const Removable: React.FC<RemovableOwnProps> = ({\n children,\n onRemove,\n removePlaceholder = 'Удалить',\n align = 'center',\n ...restProps\n}: RemovableOwnProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n\n const onRemoveClick = (e: React.MouseEvent) => {\n e.preventDefault();\n\n onRemove && onRemove(e);\n };\n\n const removePlaceholderString: string = getTitleFromChildren(removePlaceholder);\n\n return (\n <div\n {...restProps}\n vkuiClass={classNames(\n getClassName('Removable', platform),\n `Removable--${align}`,\n `Removable--sizeY-${sizeY}`,\n )}\n >\n {(platform === ANDROID || platform === VKCOM) && (\n <div vkuiClass=\"Removable__content\">\n {children}\n\n <IconButton\n activeMode=\"opacity\"\n hoverMode=\"opacity\"\n vkuiClass=\"Removable__action\"\n onClick={onRemoveClick}\n aria-label={removePlaceholderString}\n >\n <Icon24Cancel role=\"presentation\" />\n </IconButton>\n </div>\n )}\n\n {platform === IOS && (\n <RemovableIos\n onRemoveClick={onRemoveClick}\n removePlaceholder={removePlaceholder}\n removePlaceholderString={removePlaceholderString}\n >\n {children}\n </RemovableIos>\n )}\n </div>\n );\n};\n"],"file":"Removable.js"}
1
+ {"version":3,"sources":["../../../src/components/Removable/Removable.tsx"],"names":["React","classNames","getTitleFromChildren","noop","useExternRef","usePlatform","getClassName","useAdaptivity","useDOM","ANDROID","IOS","VKCOM","Icon24Cancel","IconButton","useGlobalEventListener","Tappable","RemovableIos","onRemoveClick","removePlaceholder","removePlaceholderString","children","window","removeButtonRef","useRef","useState","removeOffset","updateRemoveOffset","onRemoveTransitionEnd","current","focus","onRemoveActivateClick","e","stopPropagation","offsetWidth","transform","Removable","getRootRef","onRemove","align","restProps","platform","sizeY","ref","preventDefault"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { HasRootRef } from '../../types';\nimport { classNames } from '../../lib/classNames';\nimport { getTitleFromChildren, noop } from '../../lib/utils';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDOM } from '../../lib/dom';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { Icon24Cancel } from '@vkontakte/icons';\nimport IconButton from '../IconButton/IconButton';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport Tappable from '../Tappable/Tappable';\nimport './Removable.css';\n\nexport interface RemovableProps {\n /**\n * iOS only. Текст в выезжающей кнопке для удаления ячейки.\n */\n removePlaceholder?: React.ReactNode;\n /**\n * Коллбэк срабатывает при клике на контрол удаления.\n */\n onRemove?: (e: React.MouseEvent, rootEl?: HTMLElement) => void;\n}\n\ninterface RemovableIosOwnProps extends Pick<RemovableProps, 'removePlaceholder'> {\n onRemoveClick?: (e: React.MouseEvent, rootEl?: HTMLElement) => void;\n removePlaceholderString?: string;\n}\n\nconst RemovableIos: React.FC<RemovableIosOwnProps> = ({\n onRemoveClick,\n removePlaceholder,\n removePlaceholderString,\n children,\n}) => {\n const { window } = useDOM();\n\n const removeButtonRef = React.useRef(null);\n const [removeOffset, updateRemoveOffset] = React.useState(0);\n\n useGlobalEventListener(window, 'click', () => {\n if (removeOffset > 0) {\n updateRemoveOffset(0);\n }\n });\n\n const onRemoveTransitionEnd = () => {\n if (removeOffset > 0) {\n removeButtonRef?.current?.focus();\n }\n };\n\n const onRemoveActivateClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n\n const { offsetWidth = 0 } = removeButtonRef?.current;\n updateRemoveOffset(offsetWidth);\n };\n\n return (\n <div\n vkuiClass=\"Removable__content\"\n style={{ transform: `translateX(-${removeOffset ?? 0}px)` }}\n onTransitionEnd={onRemoveTransitionEnd}\n >\n <IconButton\n hasActive={false}\n hasHover={false}\n aria-label={removePlaceholderString}\n vkuiClass=\"Removable__action Removable__toggle\"\n onClick={onRemoveActivateClick}\n disabled={removeOffset > 0}\n >\n <i vkuiClass=\"Removable__toggle-in\" role=\"presentation\" />\n </IconButton>\n {children}\n\n <span vkuiClass=\"Removable__offset\" aria-hidden=\"true\"></span>\n\n <Tappable\n Component=\"button\"\n hasActive={false}\n hasHover={false}\n disabled={removeOffset === 0}\n getRootRef={removeButtonRef}\n vkuiClass=\"Removable__remove\"\n onClick={onRemoveClick}\n >\n <span vkuiClass=\"Removable__remove-in\">{removePlaceholder}</span>\n </Tappable>\n </div>\n );\n};\n\ninterface RemovableOwnProps extends React.AllHTMLAttributes<HTMLElement>, RemovableProps, HasRootRef<HTMLDivElement> {\n /**\n * Расположение кнопки удаления.\n */\n align?: 'start' | 'center';\n}\n\nexport const Removable: React.FC<RemovableOwnProps> = ({\n getRootRef,\n children,\n onRemove = noop,\n removePlaceholder = 'Удалить',\n align = 'center',\n ...restProps\n}: RemovableOwnProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n\n const ref = useExternRef(getRootRef);\n\n const onRemoveClick = (e: React.MouseEvent) => {\n e.preventDefault();\n onRemove(e);\n };\n\n const removePlaceholderString: string = getTitleFromChildren(removePlaceholder);\n\n return (\n <div\n {...restProps}\n ref={ref}\n vkuiClass={classNames(\n getClassName('Removable', platform),\n `Removable--${align}`,\n `Removable--sizeY-${sizeY}`,\n )}\n >\n {(platform === ANDROID || platform === VKCOM) && (\n <div vkuiClass=\"Removable__content\">\n {children}\n\n <IconButton\n activeMode=\"opacity\"\n hoverMode=\"opacity\"\n vkuiClass=\"Removable__action\"\n onClick={onRemoveClick}\n aria-label={removePlaceholderString}\n >\n <Icon24Cancel role=\"presentation\" />\n </IconButton>\n </div>\n )}\n\n {platform === IOS && (\n <RemovableIos\n onRemoveClick={onRemoveClick}\n removePlaceholder={removePlaceholder}\n removePlaceholderString={removePlaceholderString}\n >\n {children}\n </RemovableIos>\n )}\n </div>\n );\n};\n"],"file":"Removable.js"}
@@ -4,7 +4,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
4
4
  var _excluded = ["tabIndex", "placeholder", "children", "align", "getRootRef", "multiline", "disabled", "onClick", "sizeX", "sizeY"];
5
5
  import { createScopedElement } from "../../lib/jsxRuntime";
6
6
  import { classNames } from "../../lib/classNames";
7
- import { Icon24Dropdown, Icon20Dropdown } from '@vkontakte/icons';
7
+ import { DropdownIcon } from "../DropdownIcon/DropdownIcon";
8
8
  import { FormField } from "../FormField/FormField";
9
9
  import { withAdaptivity, SizeType } from "../../hoc/withAdaptivity";
10
10
  import { usePlatform } from "../../hooks/usePlatform";
@@ -39,7 +39,7 @@ var SelectMimicry = function SelectMimicry(_ref) {
39
39
  getRootRef: getRootRef,
40
40
  onClick: disabled ? null : onClick,
41
41
  disabled: disabled,
42
- after: sizeY === SizeType.COMPACT ? createScopedElement(Icon20Dropdown, null) : createScopedElement(Icon24Dropdown, null)
42
+ after: createScopedElement(DropdownIcon, null)
43
43
  }), createScopedElement(TypographyComponent, {
44
44
  Component: "div",
45
45
  weight: "regular",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SelectMimicry/SelectMimicry.tsx"],"names":["classNames","Icon24Dropdown","Icon20Dropdown","FormField","withAdaptivity","SizeType","usePlatform","getClassName","Headline","Text","VKCOM","SelectMimicry","tabIndex","placeholder","children","align","getRootRef","multiline","disabled","onClick","sizeX","sizeY","restProps","platform","TypographyComponent","COMPACT","defaultProps"],"mappings":";;;;;AACA,SAASA,UAAT;AACA,SAASC,cAAT,EAAyBC,cAAzB,QAA+C,kBAA/C;AACA,SAASC,SAAT;AAEA,SAASC,cAAT,EAA0CC,QAA1C;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,OAAOC,QAAP;AACA,OAAOC,IAAP;AACA,SAASC,KAAT;;AAYA,IAAMC,aAA0D,GAAG,SAA7DA,aAA6D,OAYzC;AAAA;;AAAA,MAXxBC,QAWwB,QAXxBA,QAWwB;AAAA,MAVxBC,WAUwB,QAVxBA,WAUwB;AAAA,MATxBC,QASwB,QATxBA,QASwB;AAAA,MARxBC,KAQwB,QARxBA,KAQwB;AAAA,MAPxBC,UAOwB,QAPxBA,UAOwB;AAAA,MANxBC,SAMwB,QANxBA,SAMwB;AAAA,MALxBC,QAKwB,QALxBA,QAKwB;AAAA,MAJxBC,OAIwB,QAJxBA,OAIwB;AAAA,MAHxBC,KAGwB,QAHxBA,KAGwB;AAAA,MAFxBC,KAEwB,QAFxBA,KAEwB;AAAA,MADrBC,SACqB;;AACxB,MAAMC,QAAQ,GAAGjB,WAAW,EAA5B;AAEA,MAAMkB,mBAAmB,GAAGD,QAAQ,KAAKb,KAAb,IAAsBW,KAAK,KAAKhB,QAAQ,CAACoB,OAAzC,GAAmDhB,IAAnD,GAA0DD,QAAtF;AAEA,SACE,oBAAC,SAAD,eACMc,SADN;AAEE,IAAA,QAAQ,EAAEJ,QAAQ,GAAG,IAAH,GAAUN,QAF9B;AAGE,IAAA,SAAS,EAAEZ,UAAU,CAACO,YAAY,CAAC,QAAD,EAAWgB,QAAX,CAAb,EAAmC,iBAAnC;AACnB,8BAAwB,CAACT,QADN;AAEnB,2BAAqBG;AAFF,4DAGDF,KAHC,GAGS,CAAC,CAACA,KAHX,yDAIAK,KAJA,GAIU,CAAC,CAACA,KAJZ,yDAKAC,KALA,GAKU,CAAC,CAACA,KALZ,gBAHvB;AAUE,IAAA,UAAU,EAAEL,UAVd;AAWE,IAAA,OAAO,EAAEE,QAAQ,GAAG,IAAH,GAAUC,OAX7B;AAYE,IAAA,QAAQ,EAAED,QAZZ;AAaE,IAAA,KAAK,EAAEG,KAAK,KAAKhB,QAAQ,CAACoB,OAAnB,GAA6B,oBAAC,cAAD,OAA7B,GAAkD,oBAAC,cAAD;AAb3D,MAeE,oBAAC,mBAAD;AAAqB,IAAA,SAAS,EAAC,KAA/B;AAAqC,IAAA,MAAM,EAAC,SAA5C;AAAsD,IAAA,SAAS,EAAC;AAAhE,KACE;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAiCX,QAAQ,IAAID,WAA7C,CADF,CAfF,CADF;AAqBD,CAtCD;;AAwCAF,aAAa,CAACe,YAAd,GAA6B;AAC3Bd,EAAAA,QAAQ,EAAE;AADiB,CAA7B;AAIA,eAAeR,cAAc,CAACO,aAAD,EAAgB;AAC3CS,EAAAA,KAAK,EAAE,IADoC;AAE3CC,EAAAA,KAAK,EAAE;AAFoC,CAAhB,CAA7B","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { Icon24Dropdown, Icon20Dropdown } from '@vkontakte/icons';\nimport { FormField } from '../FormField/FormField';\nimport { HasAlign, HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps, SizeType } from '../../hoc/withAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport Headline from '../Typography/Headline/Headline';\nimport Text from '../Typography/Text/Text';\nimport { VKCOM } from '../../lib/platform';\nimport '../Select/Select.css';\n\nexport interface SelectMimicryProps extends\n React.HTMLAttributes<HTMLElement>,\n HasAlign,\n HasRootRef<HTMLElement>,\n AdaptivityProps {\n multiline?: boolean;\n disabled?: boolean;\n}\n\nconst SelectMimicry: React.FunctionComponent<SelectMimicryProps> = ({\n tabIndex,\n placeholder,\n children,\n align,\n getRootRef,\n multiline,\n disabled,\n onClick,\n sizeX,\n sizeY,\n ...restProps\n}: SelectMimicryProps) => {\n const platform = usePlatform();\n\n const TypographyComponent = platform === VKCOM || sizeY === SizeType.COMPACT ? Text : Headline;\n\n return (\n <FormField\n {...restProps}\n tabIndex={disabled ? null : tabIndex}\n vkuiClass={classNames(getClassName('Select', platform), 'Select--mimicry', {\n 'Select--not-selected': !children,\n 'Select--multiline': multiline,\n [`Select--align-${align}`]: !!align,\n [`Select--sizeX--${sizeX}`]: !!sizeX,\n [`Select--sizeY--${sizeY}`]: !!sizeY,\n })}\n getRootRef={getRootRef}\n onClick={disabled ? null : onClick}\n disabled={disabled}\n after={sizeY === SizeType.COMPACT ? <Icon20Dropdown /> : <Icon24Dropdown />}\n >\n <TypographyComponent Component=\"div\" weight=\"regular\" vkuiClass=\"Select__container\">\n <span vkuiClass=\"Select__title\">{children || placeholder}</span>\n </TypographyComponent>\n </FormField>\n );\n};\n\nSelectMimicry.defaultProps = {\n tabIndex: 0,\n};\n\nexport default withAdaptivity(SelectMimicry, {\n sizeX: true,\n sizeY: true,\n});\n"],"file":"SelectMimicry.js"}
1
+ {"version":3,"sources":["../../../src/components/SelectMimicry/SelectMimicry.tsx"],"names":["classNames","DropdownIcon","FormField","withAdaptivity","SizeType","usePlatform","getClassName","Headline","Text","VKCOM","SelectMimicry","tabIndex","placeholder","children","align","getRootRef","multiline","disabled","onClick","sizeX","sizeY","restProps","platform","TypographyComponent","COMPACT","defaultProps"],"mappings":";;;;;AACA,SAASA,UAAT;AACA,SAASC,YAAT;AACA,SAASC,SAAT;AAEA,SAASC,cAAT,EAA0CC,QAA1C;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,OAAOC,QAAP;AACA,OAAOC,IAAP;AACA,SAASC,KAAT;;AAYA,IAAMC,aAA0D,GAAG,SAA7DA,aAA6D,OAYzC;AAAA;;AAAA,MAXxBC,QAWwB,QAXxBA,QAWwB;AAAA,MAVxBC,WAUwB,QAVxBA,WAUwB;AAAA,MATxBC,QASwB,QATxBA,QASwB;AAAA,MARxBC,KAQwB,QARxBA,KAQwB;AAAA,MAPxBC,UAOwB,QAPxBA,UAOwB;AAAA,MANxBC,SAMwB,QANxBA,SAMwB;AAAA,MALxBC,QAKwB,QALxBA,QAKwB;AAAA,MAJxBC,OAIwB,QAJxBA,OAIwB;AAAA,MAHxBC,KAGwB,QAHxBA,KAGwB;AAAA,MAFxBC,KAEwB,QAFxBA,KAEwB;AAAA,MADrBC,SACqB;;AACxB,MAAMC,QAAQ,GAAGjB,WAAW,EAA5B;AAEA,MAAMkB,mBAAmB,GAAGD,QAAQ,KAAKb,KAAb,IAAsBW,KAAK,KAAKhB,QAAQ,CAACoB,OAAzC,GAAmDhB,IAAnD,GAA0DD,QAAtF;AAEA,SACE,oBAAC,SAAD,eACMc,SADN;AAEE,IAAA,QAAQ,EAAEJ,QAAQ,GAAG,IAAH,GAAUN,QAF9B;AAGE,IAAA,SAAS,EAAEX,UAAU,CAACM,YAAY,CAAC,QAAD,EAAWgB,QAAX,CAAb,EAAmC,iBAAnC;AACnB,8BAAwB,CAACT,QADN;AAEnB,2BAAqBG;AAFF,4DAGDF,KAHC,GAGS,CAAC,CAACA,KAHX,yDAIAK,KAJA,GAIU,CAAC,CAACA,KAJZ,yDAKAC,KALA,GAKU,CAAC,CAACA,KALZ,gBAHvB;AAUE,IAAA,UAAU,EAAEL,UAVd;AAWE,IAAA,OAAO,EAAEE,QAAQ,GAAG,IAAH,GAAUC,OAX7B;AAYE,IAAA,QAAQ,EAAED,QAZZ;AAaE,IAAA,KAAK,EAAE,oBAAC,YAAD;AAbT,MAeE,oBAAC,mBAAD;AAAqB,IAAA,SAAS,EAAC,KAA/B;AAAqC,IAAA,MAAM,EAAC,SAA5C;AAAsD,IAAA,SAAS,EAAC;AAAhE,KACE;AAAM,IAAA,SAAS,EAAC;AAAhB,KAAiCJ,QAAQ,IAAID,WAA7C,CADF,CAfF,CADF;AAqBD,CAtCD;;AAwCAF,aAAa,CAACe,YAAd,GAA6B;AAC3Bd,EAAAA,QAAQ,EAAE;AADiB,CAA7B;AAIA,eAAeR,cAAc,CAACO,aAAD,EAAgB;AAC3CS,EAAAA,KAAK,EAAE,IADoC;AAE3CC,EAAAA,KAAK,EAAE;AAFoC,CAAhB,CAA7B","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField } from '../FormField/FormField';\nimport { HasAlign, HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps, SizeType } from '../../hoc/withAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport Headline from '../Typography/Headline/Headline';\nimport Text from '../Typography/Text/Text';\nimport { VKCOM } from '../../lib/platform';\nimport '../Select/Select.css';\n\nexport interface SelectMimicryProps extends\n React.HTMLAttributes<HTMLElement>,\n HasAlign,\n HasRootRef<HTMLElement>,\n AdaptivityProps {\n multiline?: boolean;\n disabled?: boolean;\n}\n\nconst SelectMimicry: React.FunctionComponent<SelectMimicryProps> = ({\n tabIndex,\n placeholder,\n children,\n align,\n getRootRef,\n multiline,\n disabled,\n onClick,\n sizeX,\n sizeY,\n ...restProps\n}: SelectMimicryProps) => {\n const platform = usePlatform();\n\n const TypographyComponent = platform === VKCOM || sizeY === SizeType.COMPACT ? Text : Headline;\n\n return (\n <FormField\n {...restProps}\n tabIndex={disabled ? null : tabIndex}\n vkuiClass={classNames(getClassName('Select', platform), 'Select--mimicry', {\n 'Select--not-selected': !children,\n 'Select--multiline': multiline,\n [`Select--align-${align}`]: !!align,\n [`Select--sizeX--${sizeX}`]: !!sizeX,\n [`Select--sizeY--${sizeY}`]: !!sizeY,\n })}\n getRootRef={getRootRef}\n onClick={disabled ? null : onClick}\n disabled={disabled}\n after={<DropdownIcon />}\n >\n <TypographyComponent Component=\"div\" weight=\"regular\" vkuiClass=\"Select__container\">\n <span vkuiClass=\"Select__title\">{children || placeholder}</span>\n </TypographyComponent>\n </FormField>\n );\n};\n\nSelectMimicry.defaultProps = {\n tabIndex: 0,\n};\n\nexport default withAdaptivity(SelectMimicry, {\n sizeX: true,\n sizeY: true,\n});\n"],"file":"SelectMimicry.js"}
@@ -30,7 +30,9 @@ var Tabbar = function Tabbar(props) {
30
30
  vkuiClass: classNames(getClassName('Tabbar', platform), "Tabbar--l-".concat(getItemsLayout()), {
31
31
  'Tabbar--shadow': shadow
32
32
  })
33
- }, restProps), children);
33
+ }, restProps), createScopedElement("div", {
34
+ vkuiClass: "Tabbar__in"
35
+ }, children));
34
36
  };
35
37
 
36
38
  Tabbar.defaultProps = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Tabbar/Tabbar.tsx"],"names":["React","getClassName","classNames","usePlatform","Tabbar","props","children","shadow","itemsLayout","restProps","platform","getItemsLayout","Children","count","defaultProps"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;;AAWA,IAAMC,MAA4C,GAAG,SAA/CA,MAA+C,CAACC,KAAD,EAAwB;AAC3E,MAAQC,QAAR,GAAwDD,KAAxD,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAwDF,KAAxD,CAAkBE,MAAlB;AAAA,MAA0BC,WAA1B,GAAwDH,KAAxD,CAA0BG,WAA1B;AAAA,MAA0CC,SAA1C,4BAAwDJ,KAAxD;;AACA,MAAMK,QAAQ,GAAGP,WAAW,EAA5B;;AAEA,MAAMQ,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,YAAQH,WAAR;AACE,WAAK,YAAL;AACA,WAAK,UAAL;AACE,eAAOA,WAAP;;AACF;AACE,eAAOR,KAAK,CAACY,QAAN,CAAeC,KAAf,CAAqBP,QAArB,IAAiC,CAAjC,GAAqC,UAArC,GAAkD,YAAzD;AALJ;AAOD,GARD;;AAUA,SACE;AACE,IAAA,SAAS,EAAEJ,UAAU,CAACD,YAAY,CAAC,QAAD,EAAWS,QAAX,CAAb,sBAAgDC,cAAc,EAA9D,GAAoE;AACvF,wBAAkBJ;AADqE,KAApE;AADvB,KAIME,SAJN,GAMGH,QANH,CADF;AAUD,CAxBD;;AA0BAF,MAAM,CAACU,YAAP,GAAsB;AACpBP,EAAAA,MAAM,EAAE;AADY,CAAtB;AAIA,eAAeH,MAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Tabbar.css';\n\nexport interface TabbarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Флаг для показа/скрытия верхней тени (Android) или границы (iOS)\n */\n shadow?: boolean;\n itemsLayout?: 'vertical' | 'horizontal' | 'auto';\n}\n\nconst Tabbar: React.FunctionComponent<TabbarProps> = (props: TabbarProps) => {\n const { children, shadow, itemsLayout, ...restProps } = props;\n const platform = usePlatform();\n\n const getItemsLayout = () => {\n switch (itemsLayout) {\n case 'horizontal':\n case 'vertical':\n return itemsLayout;\n default:\n return React.Children.count(children) > 2 ? 'vertical' : 'horizontal';\n }\n };\n\n return (\n <div\n vkuiClass={classNames(getClassName('Tabbar', platform), `Tabbar--l-${getItemsLayout()}`, {\n 'Tabbar--shadow': shadow,\n })}\n {...restProps}\n >\n {children}\n </div>\n );\n};\n\nTabbar.defaultProps = {\n shadow: true,\n};\n\nexport default Tabbar;\n"],"file":"Tabbar.js"}
1
+ {"version":3,"sources":["../../../src/components/Tabbar/Tabbar.tsx"],"names":["React","getClassName","classNames","usePlatform","Tabbar","props","children","shadow","itemsLayout","restProps","platform","getItemsLayout","Children","count","defaultProps"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;;AAWA,IAAMC,MAA4C,GAAG,SAA/CA,MAA+C,CAACC,KAAD,EAAwB;AAC3E,MAAQC,QAAR,GAAwDD,KAAxD,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAwDF,KAAxD,CAAkBE,MAAlB;AAAA,MAA0BC,WAA1B,GAAwDH,KAAxD,CAA0BG,WAA1B;AAAA,MAA0CC,SAA1C,4BAAwDJ,KAAxD;;AACA,MAAMK,QAAQ,GAAGP,WAAW,EAA5B;;AAEA,MAAMQ,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,YAAQH,WAAR;AACE,WAAK,YAAL;AACA,WAAK,UAAL;AACE,eAAOA,WAAP;;AACF;AACE,eAAOR,KAAK,CAACY,QAAN,CAAeC,KAAf,CAAqBP,QAArB,IAAiC,CAAjC,GAAqC,UAArC,GAAkD,YAAzD;AALJ;AAOD,GARD;;AAUA,SACE;AACE,IAAA,SAAS,EAAEJ,UAAU,CAACD,YAAY,CAAC,QAAD,EAAWS,QAAX,CAAb,sBAAgDC,cAAc,EAA9D,GAAoE;AACvF,wBAAkBJ;AADqE,KAApE;AADvB,KAIME,SAJN,GAME;AAAK,IAAA,SAAS,EAAC;AAAf,KACGH,QADH,CANF,CADF;AAYD,CA1BD;;AA4BAF,MAAM,CAACU,YAAP,GAAsB;AACpBP,EAAAA,MAAM,EAAE;AADY,CAAtB;AAIA,eAAeH,MAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Tabbar.css';\n\nexport interface TabbarProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Флаг для показа/скрытия верхней тени (Android) или границы (iOS)\n */\n shadow?: boolean;\n itemsLayout?: 'vertical' | 'horizontal' | 'auto';\n}\n\nconst Tabbar: React.FunctionComponent<TabbarProps> = (props: TabbarProps) => {\n const { children, shadow, itemsLayout, ...restProps } = props;\n const platform = usePlatform();\n\n const getItemsLayout = () => {\n switch (itemsLayout) {\n case 'horizontal':\n case 'vertical':\n return itemsLayout;\n default:\n return React.Children.count(children) > 2 ? 'vertical' : 'horizontal';\n }\n };\n\n return (\n <div\n vkuiClass={classNames(getClassName('Tabbar', platform), `Tabbar--l-${getItemsLayout()}`, {\n 'Tabbar--shadow': shadow,\n })}\n {...restProps}\n >\n <div vkuiClass=\"Tabbar__in\">\n {children}\n </div>\n </div>\n );\n};\n\nTabbar.defaultProps = {\n shadow: true,\n};\n\nexport default Tabbar;\n"],"file":"Tabbar.js"}
@@ -1,6 +1,8 @@
1
1
  import * as React from 'react';
2
+ import { HasComponent, HasRootRef } from '../../types';
2
3
  import './TabbarItem.css';
3
- export interface TabbarItemProps extends React.HTMLAttributes<HTMLElement>, React.AnchorHTMLAttributes<HTMLElement> {
4
+ export interface TabbarItemProps extends Omit<React.AllHTMLAttributes<HTMLElement>, 'label'>, // TODO убрать Omit после удаления свойства label
5
+ HasRootRef<HTMLElement>, HasComponent {
4
6
  selected?: boolean;
5
7
  /**
6
8
  * Тест рядом с иконкой
@@ -1,28 +1,44 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["children", "selected", "label", "indicator", "text"];
3
+ var _excluded = ["children", "selected", "label", "indicator", "text", "href", "Component", "disabled"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import { getClassName } from "../../helpers/getClassName";
6
6
  import Counter from "../Counter/Counter";
7
7
  import { classNames } from "../../lib/classNames";
8
8
  import { usePlatform } from "../../hooks/usePlatform";
9
9
  import { hasReactNode } from "../../lib/utils";
10
+ import Tappable from "../Tappable/Tappable";
11
+ import { Platform } from "../../lib/platform";
10
12
 
11
- var TabbarItem = function TabbarItem(props) {
12
- var children = props.children,
13
- selected = props.selected,
14
- label = props.label,
15
- indicator = props.indicator,
16
- text = props.text,
17
- restProps = _objectWithoutProperties(props, _excluded);
13
+ var TabbarItem = function TabbarItem(_ref) {
14
+ var children = _ref.children,
15
+ selected = _ref.selected,
16
+ label = _ref.label,
17
+ indicator = _ref.indicator,
18
+ text = _ref.text,
19
+ href = _ref.href,
20
+ _ref$Component = _ref.Component,
21
+ Component = _ref$Component === void 0 ? href ? 'a' : 'button' : _ref$Component,
22
+ disabled = _ref.disabled,
23
+ restProps = _objectWithoutProperties(_ref, _excluded);
24
+
25
+ var platform = usePlatform(); // @ts-ignore ругается на то, что у AllHTMLAttributes type это строка, а button не любую строку считает валидным значением
18
26
 
19
- var platform = usePlatform();
20
- var Component = restProps.href ? 'a' : 'div';
21
27
  return createScopedElement(Component, _extends({}, restProps, {
28
+ disabled: disabled,
29
+ href: href,
22
30
  vkuiClass: classNames(getClassName('TabbarItem', platform), {
23
31
  'TabbarItem--selected': selected,
24
32
  'TabbarItem--text': !!text
25
33
  })
34
+ }), createScopedElement(Tappable, {
35
+ role: "presentation",
36
+ Component: "div",
37
+ disabled: disabled,
38
+ activeMode: platform === Platform.IOS ? 'TabbarItem__tappable--active' : 'background',
39
+ activeEffectDelay: platform === Platform.IOS ? 0 : 300,
40
+ hasHover: false,
41
+ vkuiClass: "TabbarItem__tappable"
26
42
  }), createScopedElement("div", {
27
43
  vkuiClass: "TabbarItem__in"
28
44
  }, createScopedElement("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/TabbarItem/TabbarItem.tsx"],"names":["getClassName","Counter","classNames","usePlatform","hasReactNode","TabbarItem","props","children","selected","label","indicator","text","restProps","platform","Component","href"],"mappings":";;;;AACA,SAASA,YAAT;AACA,OAAOC,OAAP;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;;AAmBA,IAAMC,UAAoD,GAAG,SAAvDA,UAAuD,CAACC,KAAD,EAA4B;AACvF,MAAQC,QAAR,GAAqED,KAArE,CAAQC,QAAR;AAAA,MAAkBC,QAAlB,GAAqEF,KAArE,CAAkBE,QAAlB;AAAA,MAA4BC,KAA5B,GAAqEH,KAArE,CAA4BG,KAA5B;AAAA,MAAmCC,SAAnC,GAAqEJ,KAArE,CAAmCI,SAAnC;AAAA,MAA8CC,IAA9C,GAAqEL,KAArE,CAA8CK,IAA9C;AAAA,MAAuDC,SAAvD,4BAAqEN,KAArE;;AACA,MAAMO,QAAQ,GAAGV,WAAW,EAA5B;AACA,MAAMW,SAA4B,GAAGF,SAAS,CAACG,IAAV,GAAiB,GAAjB,GAAuB,KAA5D;AAEA,SACE,oBAAC,SAAD,eACMH,SADN;AAEE,IAAA,SAAS,EAAEV,UAAU,CAACF,YAAY,CAAC,YAAD,EAAea,QAAf,CAAb,EAAuC;AAC1D,8BAAwBL,QADkC;AAE1D,0BAAoB,CAAC,CAACG;AAFoC,KAAvC;AAFvB,MAOE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGJ,QADH,EAEE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGH,YAAY,CAACM,SAAD,CAAZ,IAA2BA,SAD9B,EAEG,CAACA,SAAD,IAAcD,KAAd,IAAuB,oBAAC,OAAD;AAAS,IAAA,IAAI,EAAC,GAAd;AAAkB,IAAA,IAAI,EAAC;AAAvB,KAAoCA,KAApC,CAF1B,CAFF,CADF,EAQGE,IAAI,IAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCA,IAAnC,CARX,CAPF,CADF;AAoBD,CAzBD;;AA2BA,eAAeN,UAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport Counter from '../Counter/Counter';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport './TabbarItem.css';\n\nexport interface TabbarItemProps extends React.HTMLAttributes<HTMLElement>, React.AnchorHTMLAttributes<HTMLElement> {\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 * @deprecated будет удалено в 5.0.0. Используйте `indicator`\n */\n label?: React.ReactNode;\n}\n\nconst TabbarItem: React.FunctionComponent<TabbarItemProps> = (props: TabbarItemProps) => {\n const { children, selected, label, indicator, text, ...restProps } = props;\n const platform = usePlatform();\n const Component: React.ElementType = restProps.href ? 'a' : 'div';\n\n return (\n <Component\n {...restProps}\n vkuiClass={classNames(getClassName('TabbarItem', platform), {\n 'TabbarItem--selected': selected,\n 'TabbarItem--text': !!text,\n })}\n >\n <div vkuiClass=\"TabbarItem__in\">\n <div vkuiClass=\"TabbarItem__icon\">\n {children}\n <div vkuiClass=\"TabbarItem__label\">\n {hasReactNode(indicator) && indicator}\n {!indicator && label && <Counter size=\"s\" mode=\"prominent\">{label}</Counter>}\n </div>\n </div>\n {text && <div vkuiClass=\"TabbarItem__text\">{text}</div>}\n </div>\n </Component>\n );\n};\n\nexport default TabbarItem;\n"],"file":"TabbarItem.js"}
1
+ {"version":3,"sources":["../../../src/components/TabbarItem/TabbarItem.tsx"],"names":["getClassName","Counter","classNames","usePlatform","hasReactNode","Tappable","Platform","TabbarItem","children","selected","label","indicator","text","href","Component","disabled","restProps","platform","IOS"],"mappings":";;;;AACA,SAASA,YAAT;AACA,OAAOC,OAAP;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,OAAOC,QAAP;AACA,SAASC,QAAT;;AAuBA,IAAMC,UAAoD,GAAG,SAAvDA,UAAuD,OAUtC;AAAA,MATrBC,QASqB,QATrBA,QASqB;AAAA,MARrBC,QAQqB,QARrBA,QAQqB;AAAA,MAPrBC,KAOqB,QAPrBA,KAOqB;AAAA,MANrBC,SAMqB,QANrBA,SAMqB;AAAA,MALrBC,IAKqB,QALrBA,IAKqB;AAAA,MAJrBC,IAIqB,QAJrBA,IAIqB;AAAA,4BAHrBC,SAGqB;AAAA,MAHrBA,SAGqB,+BAHTD,IAAI,GAAG,GAAH,GAAS,QAGJ;AAAA,MAFrBE,QAEqB,QAFrBA,QAEqB;AAAA,MADlBC,SACkB;;AACrB,MAAMC,QAAQ,GAAGd,WAAW,EAA5B,CADqB,CAGrB;;AACA,SAAQ,oBAAC,SAAD,eACFa,SADE;AAEN,IAAA,QAAQ,EAAED,QAFJ;AAGN,IAAA,IAAI,EAAEF,IAHA;AAIN,IAAA,SAAS,EAAEX,UAAU,CAACF,YAAY,CAAC,YAAD,EAAeiB,QAAf,CAAb,EAAuC;AAC1D,8BAAwBR,QADkC;AAE1D,0BAAoB,CAAC,CAACG;AAFoC,KAAvC;AAJf,MASN,oBAAC,QAAD;AACE,IAAA,IAAI,EAAC,cADP;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,QAAQ,EAAEG,QAHZ;AAIE,IAAA,UAAU,EAAEE,QAAQ,KAAKX,QAAQ,CAACY,GAAtB,GAA4B,8BAA5B,GAA6D,YAJ3E;AAKE,IAAA,iBAAiB,EAAED,QAAQ,KAAKX,QAAQ,CAACY,GAAtB,GAA4B,CAA5B,GAAgC,GALrD;AAME,IAAA,QAAQ,EAAE,KANZ;AAOE,IAAA,SAAS,EAAC;AAPZ,IATM,EAkBN;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGV,QADH,EAEE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGJ,YAAY,CAACO,SAAD,CAAZ,IAA2BA,SAD9B,EAEG,CAACA,SAAD,IAAcD,KAAd,IAAuB,oBAAC,OAAD;AAAS,IAAA,IAAI,EAAC,GAAd;AAAkB,IAAA,IAAI,EAAC;AAAvB,KAAoCA,KAApC,CAF1B,CAFF,CADF,EAQGE,IAAI,IAAI;AAAK,IAAA,SAAS,EAAC;AAAf,KAAmCA,IAAnC,CARX,CAlBM,CAAR;AA6BD,CA3CD;;AA6CA,eAAeL,UAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport Counter from '../Counter/Counter';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasReactNode } from '../../lib/utils';\nimport Tappable from '../Tappable/Tappable';\nimport { Platform } from '../../lib/platform';\nimport { HasComponent, HasRootRef } from '../../types';\nimport './TabbarItem.css';\n\nexport interface TabbarItemProps extends\n Omit<React.AllHTMLAttributes<HTMLElement>, 'label'>, // TODO убрать Omit после удаления свойства label\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 * @deprecated будет удалено в 5.0.0. Используйте `indicator`\n */\n label?: React.ReactNode;\n}\n\nconst TabbarItem: React.FunctionComponent<TabbarItemProps> = ({\n children,\n selected,\n label,\n indicator,\n text,\n href,\n Component = href ? 'a' : 'button',\n disabled,\n ...restProps\n}: TabbarItemProps) => {\n const platform = usePlatform();\n\n // @ts-ignore ругается на то, что у AllHTMLAttributes type это строка, а button не любую строку считает валидным значением\n return (<Component\n {...restProps}\n disabled={disabled}\n href={href}\n vkuiClass={classNames(getClassName('TabbarItem', platform), {\n 'TabbarItem--selected': selected,\n 'TabbarItem--text': !!text,\n })}\n >\n <Tappable\n role=\"presentation\"\n Component=\"div\"\n disabled={disabled}\n activeMode={platform === Platform.IOS ? 'TabbarItem__tappable--active' : 'background'}\n activeEffectDelay={platform === Platform.IOS ? 0 : 300}\n hasHover={false}\n vkuiClass=\"TabbarItem__tappable\"\n />\n <div vkuiClass=\"TabbarItem__in\">\n <div vkuiClass=\"TabbarItem__icon\">\n {children}\n <div vkuiClass=\"TabbarItem__label\">\n {hasReactNode(indicator) && indicator}\n {!indicator && label && <Counter size=\"s\" mode=\"prominent\">{label}</Counter>}\n </div>\n </div>\n {text && <div vkuiClass=\"TabbarItem__text\">{text}</div>}\n </div>\n </Component>);\n};\n\nexport default TabbarItem;\n"],"file":"TabbarItem.js"}