@vkontakte/vkui 4.37.3 → 4.38.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 (225) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +1099 -879
  4. package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +5 -1
  5. package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -1
  6. package/.cache/ts/src/components/Button/Button.d.ts +1 -1
  7. package/.cache/ts/src/components/CardGrid/CardGrid.d.ts +1 -1
  8. package/.cache/ts/src/components/Checkbox/Checkbox.d.ts +1 -1
  9. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +1 -1
  10. package/.cache/ts/src/components/DatePicker/DatePicker.d.ts +1 -1
  11. package/.cache/ts/src/components/Epic/Epic.d.ts +1 -1
  12. package/.cache/ts/src/components/Group/Group.d.ts +1 -1
  13. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  14. package/.cache/ts/src/components/IconButton/IconButton.d.ts +1 -1
  15. package/.cache/ts/src/components/Input/Input.d.ts +1 -1
  16. package/.cache/ts/src/components/ModalCard/ModalCard.d.ts +1 -1
  17. package/.cache/ts/src/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  18. package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +1 -1
  19. package/.cache/ts/src/components/NativeSelect/NativeSelect.d.ts +1 -1
  20. package/.cache/ts/src/components/Panel/Panel.d.ts +1 -1
  21. package/.cache/ts/src/components/PanelHeader/PanelHeader.d.ts +1 -1
  22. package/.cache/ts/src/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  23. package/.cache/ts/src/components/PopoutRoot/PopoutRoot.d.ts +1 -1
  24. package/.cache/ts/src/components/Radio/Radio.d.ts +1 -1
  25. package/.cache/ts/src/components/RangeSlider/UniversalSlider.d.ts +1 -1
  26. package/.cache/ts/src/components/RichCell/RichCell.d.ts +1 -1
  27. package/.cache/ts/src/components/Search/Search.d.ts +1 -1
  28. package/.cache/ts/src/components/Select/Select.d.ts +1 -1
  29. package/.cache/ts/src/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  30. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +1 -1
  31. package/.cache/ts/src/components/SliderSwitch/SliderSwitch.d.ts +2 -2
  32. package/.cache/ts/src/components/Snackbar/Snackbar.d.ts +1 -1
  33. package/.cache/ts/src/components/Tabs/Tabs.d.ts +1 -1
  34. package/.cache/ts/src/components/TabsItem/TabsItem.d.ts +1 -1
  35. package/.cache/ts/src/components/Tappable/Tappable.d.ts +1 -1
  36. package/.cache/ts/src/components/Textarea/Textarea.d.ts +1 -1
  37. package/.cache/ts/src/components/View/ViewInfinite.d.ts +1 -1
  38. package/.cache/ts/src/index.d.ts +1 -0
  39. package/.cache/ts/src/lib/accessibility.d.ts +6 -1
  40. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.d.ts +5 -1
  41. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +6 -2
  42. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  43. package/dist/cjs/components/AppRoot/AppRoot.d.ts +1 -1
  44. package/dist/cjs/components/Button/Button.d.ts +1 -1
  45. package/dist/cjs/components/CardGrid/CardGrid.d.ts +1 -1
  46. package/dist/cjs/components/Checkbox/Checkbox.d.ts +1 -1
  47. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +1 -1
  48. package/dist/cjs/components/DatePicker/DatePicker.d.ts +1 -1
  49. package/dist/cjs/components/Epic/Epic.d.ts +1 -1
  50. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  51. package/dist/cjs/components/Group/Group.d.ts +1 -1
  52. package/dist/cjs/components/Group/Group.js +13 -1
  53. package/dist/cjs/components/Group/Group.js.map +1 -1
  54. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  55. package/dist/cjs/components/IconButton/IconButton.d.ts +1 -1
  56. package/dist/cjs/components/Input/Input.d.ts +1 -1
  57. package/dist/cjs/components/ModalCard/ModalCard.d.ts +1 -1
  58. package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  59. package/dist/cjs/components/ModalPage/ModalPage.d.ts +1 -1
  60. package/dist/cjs/components/NativeSelect/NativeSelect.d.ts +1 -1
  61. package/dist/cjs/components/Panel/Panel.d.ts +1 -1
  62. package/dist/cjs/components/PanelHeader/PanelHeader.d.ts +1 -1
  63. package/dist/cjs/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  64. package/dist/cjs/components/PanelHeaderContext/PanelHeaderContext.js +3 -0
  65. package/dist/cjs/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
  66. package/dist/cjs/components/PopoutRoot/PopoutRoot.d.ts +1 -1
  67. package/dist/cjs/components/Radio/Radio.d.ts +1 -1
  68. package/dist/cjs/components/RangeSlider/UniversalSlider.d.ts +1 -1
  69. package/dist/cjs/components/RichCell/RichCell.d.ts +1 -1
  70. package/dist/cjs/components/Search/Search.d.ts +1 -1
  71. package/dist/cjs/components/Select/Select.d.ts +1 -1
  72. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  73. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +1 -1
  74. package/dist/cjs/components/SliderSwitch/SliderSwitch.d.ts +2 -2
  75. package/dist/cjs/components/Snackbar/Snackbar.d.ts +1 -1
  76. package/dist/cjs/components/Tabs/Tabs.d.ts +1 -1
  77. package/dist/cjs/components/Tabs/Tabs.js +127 -3
  78. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  79. package/dist/cjs/components/TabsItem/TabsItem.d.ts +1 -1
  80. package/dist/cjs/components/TabsItem/TabsItem.js +26 -2
  81. package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
  82. package/dist/cjs/components/Tappable/Tappable.d.ts +1 -1
  83. package/dist/cjs/components/Textarea/Textarea.d.ts +1 -1
  84. package/dist/cjs/components/View/ViewInfinite.d.ts +1 -1
  85. package/dist/cjs/hooks/useWaitTransitionFinish.js +15 -2
  86. package/dist/cjs/hooks/useWaitTransitionFinish.js.map +1 -1
  87. package/dist/cjs/index.d.ts +1 -0
  88. package/dist/cjs/index.js +8 -0
  89. package/dist/cjs/index.js.map +1 -1
  90. package/dist/cjs/lib/accessibility.d.ts +6 -1
  91. package/dist/cjs/lib/accessibility.js +25 -0
  92. package/dist/cjs/lib/accessibility.js.map +1 -1
  93. package/dist/cjs/lib/calendar.d.ts +2 -2
  94. package/dist/components/ActionSheetItem/ActionSheetItem.d.ts +5 -1
  95. package/dist/components/ActionSheetItem/ActionSheetItem.js +6 -2
  96. package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  97. package/dist/components/AppRoot/AppRoot.d.ts +1 -1
  98. package/dist/components/Button/Button.d.ts +1 -1
  99. package/dist/components/CardGrid/CardGrid.d.ts +1 -1
  100. package/dist/components/Checkbox/Checkbox.d.ts +1 -1
  101. package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
  102. package/dist/components/DatePicker/DatePicker.d.ts +1 -1
  103. package/dist/components/Epic/Epic.d.ts +1 -1
  104. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  105. package/dist/components/Group/Group.d.ts +1 -1
  106. package/dist/components/Group/Group.js +12 -1
  107. package/dist/components/Group/Group.js.map +1 -1
  108. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  109. package/dist/components/IconButton/IconButton.d.ts +1 -1
  110. package/dist/components/Input/Input.d.ts +1 -1
  111. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  112. package/dist/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  113. package/dist/components/ModalPage/ModalPage.d.ts +1 -1
  114. package/dist/components/NativeSelect/NativeSelect.d.ts +1 -1
  115. package/dist/components/Panel/Panel.d.ts +1 -1
  116. package/dist/components/PanelHeader/PanelHeader.d.ts +1 -1
  117. package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  118. package/dist/components/PanelHeaderContext/PanelHeaderContext.js +3 -0
  119. package/dist/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
  120. package/dist/components/PopoutRoot/PopoutRoot.d.ts +1 -1
  121. package/dist/components/Radio/Radio.d.ts +1 -1
  122. package/dist/components/RangeSlider/UniversalSlider.d.ts +1 -1
  123. package/dist/components/RichCell/RichCell.d.ts +1 -1
  124. package/dist/components/Search/Search.d.ts +1 -1
  125. package/dist/components/Select/Select.d.ts +1 -1
  126. package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  127. package/dist/components/SimpleCell/SimpleCell.d.ts +1 -1
  128. package/dist/components/SliderSwitch/SliderSwitch.d.ts +2 -2
  129. package/dist/components/Snackbar/Snackbar.d.ts +1 -1
  130. package/dist/components/Tabs/Tabs.d.ts +1 -1
  131. package/dist/components/Tabs/Tabs.js +124 -3
  132. package/dist/components/Tabs/Tabs.js.map +1 -1
  133. package/dist/components/TabsItem/TabsItem.d.ts +1 -1
  134. package/dist/components/TabsItem/TabsItem.js +26 -3
  135. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  136. package/dist/components/Tappable/Tappable.d.ts +1 -1
  137. package/dist/components/Textarea/Textarea.d.ts +1 -1
  138. package/dist/components/View/ViewInfinite.d.ts +1 -1
  139. package/dist/components.css +2 -2
  140. package/dist/components.css.map +1 -1
  141. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  142. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.d.ts +5 -1
  143. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +6 -2
  144. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  145. package/dist/cssm/components/AppRoot/AppRoot.d.ts +1 -1
  146. package/dist/cssm/components/Button/Button.d.ts +1 -1
  147. package/dist/cssm/components/CardGrid/CardGrid.d.ts +1 -1
  148. package/dist/cssm/components/Checkbox/Checkbox.d.ts +1 -1
  149. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +1 -1
  150. package/dist/cssm/components/DatePicker/DatePicker.d.ts +1 -1
  151. package/dist/cssm/components/Epic/Epic.d.ts +1 -1
  152. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  153. package/dist/cssm/components/Group/Group.d.ts +1 -1
  154. package/dist/cssm/components/Group/Group.js +12 -1
  155. package/dist/cssm/components/Group/Group.js.map +1 -1
  156. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.d.ts +1 -1
  157. package/dist/cssm/components/IconButton/IconButton.d.ts +1 -1
  158. package/dist/cssm/components/Input/Input.d.ts +1 -1
  159. package/dist/cssm/components/ModalCard/ModalCard.d.ts +1 -1
  160. package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts +1 -1
  161. package/dist/cssm/components/ModalPage/ModalPage.css +1 -1
  162. package/dist/cssm/components/ModalPage/ModalPage.d.ts +1 -1
  163. package/dist/cssm/components/NativeSelect/NativeSelect.d.ts +1 -1
  164. package/dist/cssm/components/Panel/Panel.d.ts +1 -1
  165. package/dist/cssm/components/PanelHeader/PanelHeader.d.ts +1 -1
  166. package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  167. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.js +3 -0
  168. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
  169. package/dist/cssm/components/PopoutRoot/PopoutRoot.d.ts +1 -1
  170. package/dist/cssm/components/Radio/Radio.d.ts +1 -1
  171. package/dist/cssm/components/RangeSlider/UniversalSlider.d.ts +1 -1
  172. package/dist/cssm/components/RichCell/RichCell.d.ts +1 -1
  173. package/dist/cssm/components/Search/Search.d.ts +1 -1
  174. package/dist/cssm/components/Select/Select.d.ts +1 -1
  175. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  176. package/dist/cssm/components/SimpleCell/SimpleCell.d.ts +1 -1
  177. package/dist/cssm/components/SliderSwitch/SliderSwitch.d.ts +2 -2
  178. package/dist/cssm/components/Snackbar/Snackbar.d.ts +1 -1
  179. package/dist/cssm/components/Tabs/Tabs.d.ts +1 -1
  180. package/dist/cssm/components/Tabs/Tabs.js +124 -3
  181. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  182. package/dist/cssm/components/TabsItem/TabsItem.d.ts +1 -1
  183. package/dist/cssm/components/TabsItem/TabsItem.js +26 -3
  184. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  185. package/dist/cssm/components/Tappable/Tappable.d.ts +1 -1
  186. package/dist/cssm/components/Textarea/Textarea.d.ts +1 -1
  187. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  188. package/dist/cssm/hooks/useWaitTransitionFinish.js +14 -2
  189. package/dist/cssm/hooks/useWaitTransitionFinish.js.map +1 -1
  190. package/dist/cssm/index.d.ts +1 -0
  191. package/dist/cssm/index.js +4 -0
  192. package/dist/cssm/index.js.map +1 -1
  193. package/dist/cssm/lib/accessibility.d.ts +6 -1
  194. package/dist/cssm/lib/accessibility.js +25 -0
  195. package/dist/cssm/lib/accessibility.js.map +1 -1
  196. package/dist/cssm/lib/calendar.d.ts +2 -2
  197. package/dist/cssm/styles/components.css +2 -2
  198. package/dist/cssm/styles/themes.css +1 -1
  199. package/dist/cssm/styles/vkcom_dark.css +1 -1
  200. package/dist/hooks/useWaitTransitionFinish.js +14 -2
  201. package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
  202. package/dist/index.d.ts +1 -0
  203. package/dist/index.js +4 -0
  204. package/dist/index.js.map +1 -1
  205. package/dist/lib/accessibility.d.ts +6 -1
  206. package/dist/lib/accessibility.js +25 -0
  207. package/dist/lib/accessibility.js.map +1 -1
  208. package/dist/lib/calendar.d.ts +2 -2
  209. package/dist/vkui.css +3 -3
  210. package/dist/vkui.css.map +1 -1
  211. package/package.json +16 -13
  212. package/src/components/ActionSheetItem/ActionSheetItem.css +0 -3
  213. package/src/components/ActionSheetItem/ActionSheetItem.tsx +6 -3
  214. package/src/components/FocusTrap/FocusTrap.tsx +0 -1
  215. package/src/components/Group/Group.tsx +19 -0
  216. package/src/components/ModalPage/ModalPage.css +1 -2
  217. package/src/components/PanelHeaderContext/PanelHeaderContext.tsx +3 -1
  218. package/src/components/Tabs/Readme.md +34 -3
  219. package/src/components/Tabs/Tabs.tsx +115 -1
  220. package/src/components/TabsItem/TabsItem.tsx +26 -0
  221. package/src/hooks/useWaitTransitionFinish.ts +14 -2
  222. package/src/index.ts +1 -0
  223. package/src/lib/accessibility.ts +30 -0
  224. package/src/styles/vkcom_dark.css +10 -10
  225. package/tsconfig.json +1 -0
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["children", "mode", "getRootRef", "sizeX"];
3
+ var _excluded = ["children", "mode", "getRootRef", "sizeX", "role"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import * as React from "react";
6
6
  import { classNames } from "../../lib/classNames";
@@ -8,6 +8,9 @@ import { usePlatform } from "../../hooks/usePlatform";
8
8
  import { IOS, VKCOM } from "../../lib/platform";
9
9
  import { withAdaptivity } from "../../hoc/withAdaptivity";
10
10
  import { warnOnce } from "../../lib/warnOnce";
11
+ import { useGlobalEventListener } from "../../hooks/useGlobalEventListener";
12
+ import { useDOM } from "../../lib/dom";
13
+ import { pressedKey } from "../../lib/accessibility";
11
14
  var warn = warnOnce("Tabs");
12
15
  export var TabsModeContext = /*#__PURE__*/React.createContext({
13
16
  mode: "default",
@@ -20,10 +23,18 @@ var TabsComponent = function TabsComponent(_ref) {
20
23
  mode = _ref$mode === void 0 ? "default" : _ref$mode,
21
24
  getRootRef = _ref.getRootRef,
22
25
  sizeX = _ref.sizeX,
26
+ _ref$role = _ref.role,
27
+ role = _ref$role === void 0 ? "tablist" : _ref$role,
23
28
  restProps = _objectWithoutProperties(_ref, _excluded);
24
29
 
25
30
  var platform = usePlatform();
26
31
 
32
+ var _useDOM = useDOM(),
33
+ document = _useDOM.document;
34
+
35
+ var isTabFlow = role === "tablist";
36
+ var tabsRef = React.useRef(null);
37
+
27
38
  if ((mode === "buttons" || mode === "segmented") && process.env.NODE_ENV === "development") {
28
39
  var expectedValueText = mode === "buttons" ? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \"secondary\"" : "компонент SegmentedControl";
29
40
  warn("mode=\"".concat(mode, "\" \u0443\u0441\u0442\u0430\u0440\u0435\u043B\u043E \u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043B\u0435\u043D\u043E \u0432 5.0.0. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 ").concat(expectedValueText));
@@ -38,12 +49,122 @@ var TabsComponent = function TabsComponent(_ref) {
38
49
  }
39
50
 
40
51
  var withGaps = mode === "accent" || mode === "secondary";
52
+
53
+ var getTabEls = function getTabEls() {
54
+ if (!tabsRef.current) {
55
+ return [];
56
+ }
57
+
58
+ return Array.from( // eslint-disable-next-line no-restricted-properties
59
+ tabsRef.current.querySelectorAll("[role=tab]:not([disabled])"));
60
+ };
61
+
62
+ var handleDocumentKeydown = function handleDocumentKeydown(event) {
63
+ if (!document || !tabsRef.current || !isTabFlow) {
64
+ return;
65
+ }
66
+
67
+ var key = pressedKey(event);
68
+
69
+ switch (key) {
70
+ case "ArrowLeft":
71
+ case "ArrowRight":
72
+ case "End":
73
+ case "Home":
74
+ {
75
+ var tabEls = getTabEls();
76
+ var currentFocusedElIndex = tabEls.findIndex(function (el) {
77
+ return document.activeElement === el;
78
+ });
79
+
80
+ if (currentFocusedElIndex === -1) {
81
+ return;
82
+ }
83
+
84
+ var nextIndex = 0;
85
+
86
+ if (key === "Home") {
87
+ nextIndex = 0;
88
+ } else if (key === "End") {
89
+ nextIndex = tabEls.length - 1;
90
+ } else {
91
+ var offset = key === "ArrowRight" ? 1 : -1;
92
+ nextIndex = currentFocusedElIndex + offset;
93
+ }
94
+
95
+ var nextTabEl = tabEls[nextIndex];
96
+
97
+ if (nextTabEl) {
98
+ event.preventDefault();
99
+ nextTabEl.focus();
100
+ }
101
+
102
+ break;
103
+ }
104
+
105
+ /*
106
+ В JAWS и NVDA стрелка вниз активирует контент.
107
+ Это не прописано в стандартах, но по ссылке ниже это рекомендуется делать.
108
+ https://inclusive-components.design/tabbed-interfaces/
109
+ */
110
+
111
+ case "ArrowDown":
112
+ {
113
+ var _tabEls = getTabEls();
114
+
115
+ var currentFocusedEl = _tabEls.find(function (el) {
116
+ return document.activeElement === el;
117
+ });
118
+
119
+ if (!currentFocusedEl || currentFocusedEl.getAttribute("aria-selected") !== "true") {
120
+ return;
121
+ }
122
+
123
+ var relatedContentElId = currentFocusedEl.getAttribute("aria-controls");
124
+
125
+ if (!relatedContentElId) {
126
+ return;
127
+ } // eslint-disable-next-line no-restricted-properties
128
+
129
+
130
+ var relatedContentEl = document.getElementById(relatedContentElId);
131
+
132
+ if (!relatedContentEl) {
133
+ return;
134
+ }
135
+
136
+ event.preventDefault();
137
+ relatedContentEl.focus();
138
+ break;
139
+ }
140
+
141
+ case "Space":
142
+ case "Enter":
143
+ {
144
+ var _tabEls2 = getTabEls();
145
+
146
+ var _currentFocusedEl = _tabEls2.find(function (el) {
147
+ return document.activeElement === el;
148
+ });
149
+
150
+ if (_currentFocusedEl) {
151
+ _currentFocusedEl.click();
152
+ }
153
+ }
154
+ }
155
+ };
156
+
157
+ useGlobalEventListener(document, "keydown", handleDocumentKeydown, {
158
+ capture: true
159
+ });
41
160
  return createScopedElement("div", _extends({}, restProps, {
42
161
  ref: getRootRef,
43
162
  vkuiClass: classNames("Tabs", (platform === IOS || platform === VKCOM) && "Tabs--".concat(platform), "Tabs--".concat(mode), withGaps && "Tabs--withGaps", // TODO v5.0.0 новая адаптивность
44
- "Tabs--sizeX-".concat(sizeX))
163
+ "Tabs--sizeX-".concat(sizeX)),
164
+ role: role
45
165
  }), createScopedElement("div", {
46
- vkuiClass: "Tabs__in"
166
+ vkuiClass: "Tabs__in",
167
+ ref: tabsRef
47
168
  }, createScopedElement(TabsModeContext.Provider, {
48
169
  value: {
49
170
  mode: mode,
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","names":["React","classNames","usePlatform","IOS","VKCOM","withAdaptivity","warnOnce","warn","TabsModeContext","createContext","mode","withGaps","TabsComponent","children","getRootRef","sizeX","restProps","platform","process","env","NODE_ENV","expectedValueText","Tabs","displayName"],"sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { classNames } from \"../../lib/classNames\";\nimport { HasRootRef } from \"../../types\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { IOS, VKCOM } from \"../../lib/platform\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./Tabs.css\";\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n AdaptivityProps {\n /**\n * Задаёт вид кнопок.\n *\n * > ⚠️ Значения `\"buttons\"`, `\"segmented\"` устарели и будут удалены в 5.0.0. Вместо `\"buttons\"` используйте `\"secondary\"`.\n * > Режим `\"segmented\"` переехал в отдельный компонент [`SegmentedControl`](https://vkcom.github.io/VKUI#/SegmentedControl),\n * > поэтому используйте его вместо `Tabs`.\n */\n mode?: \"buttons\" | \"segmented\" | \"default\" | \"accent\" | \"secondary\";\n}\n\nconst warn = warnOnce(\"Tabs\");\n\nexport interface TabsContextProps {\n mode: TabsProps[\"mode\"];\n withGaps: boolean;\n}\n\nexport const TabsModeContext = React.createContext<TabsContextProps>({\n mode: \"default\",\n withGaps: false,\n});\n\nconst TabsComponent = ({\n children,\n mode = \"default\",\n getRootRef,\n sizeX,\n ...restProps\n}: TabsProps) => {\n const platform = usePlatform();\n\n if (\n (mode === \"buttons\" || mode === \"segmented\") &&\n process.env.NODE_ENV === \"development\"\n ) {\n const expectedValueText =\n mode === \"buttons\"\n ? `значения \"secondary\"`\n : \"компонент SegmentedControl\";\n warn(\n `mode=\"${mode}\" устарело и будет удалено в 5.0.0. Используйте ${expectedValueText}`\n );\n }\n\n if (platform !== IOS && mode === \"segmented\") {\n mode = \"default\";\n }\n\n if (mode === \"buttons\") {\n mode = \"secondary\";\n }\n\n const withGaps = mode === \"accent\" || mode === \"secondary\";\n\n return (\n <div\n {...restProps}\n ref={getRootRef}\n vkuiClass={classNames(\n \"Tabs\",\n (platform === IOS || platform === VKCOM) && `Tabs--${platform}`,\n `Tabs--${mode}`,\n withGaps && \"Tabs--withGaps\",\n // TODO v5.0.0 новая адаптивность\n `Tabs--sizeX-${sizeX}`\n )}\n >\n <div vkuiClass=\"Tabs__in\">\n <TabsModeContext.Provider value={{ mode, withGaps }}>\n {children}\n </TabsModeContext.Provider>\n </div>\n </div>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tabs\n */\nexport const Tabs = withAdaptivity(TabsComponent, { sizeX: true });\n\nTabs.displayName = \"Tabs\";\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT;AAEA,SAASC,WAAT;AACA,SAASC,GAAT,EAAcC,KAAd;AACA,SAASC,cAAT;AACA,SAASC,QAAT;AAiBA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,MAAD,CAArB;AAOA,OAAO,IAAME,eAAe,gBAAGR,KAAK,CAACS,aAAN,CAAsC;EACnEC,IAAI,EAAE,SAD6D;EAEnEC,QAAQ,EAAE;AAFyD,CAAtC,CAAxB;;AAKP,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,OAML;EAAA,IALfC,QAKe,QALfA,QAKe;EAAA,qBAJfH,IAIe;EAAA,IAJfA,IAIe,0BAJR,SAIQ;EAAA,IAHfI,UAGe,QAHfA,UAGe;EAAA,IAFfC,KAEe,QAFfA,KAEe;EAAA,IADZC,SACY;;EACf,IAAMC,QAAQ,GAAGf,WAAW,EAA5B;;EAEA,IACE,CAACQ,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,WAAhC,KACAQ,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAF3B,EAGE;IACA,IAAMC,iBAAiB,GACrBX,IAAI,KAAK,SAAT,sEAEI,4BAHN;IAIAH,IAAI,kBACOG,IADP,mOAC8DW,iBAD9D,EAAJ;EAGD;;EAED,IAAIJ,QAAQ,KAAKd,GAAb,IAAoBO,IAAI,KAAK,WAAjC,EAA8C;IAC5CA,IAAI,GAAG,SAAP;EACD;;EAED,IAAIA,IAAI,KAAK,SAAb,EAAwB;IACtBA,IAAI,GAAG,WAAP;EACD;;EAED,IAAMC,QAAQ,GAAGD,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,WAA/C;EAEA,OACE,wCACMM,SADN;IAEE,GAAG,EAAEF,UAFP;IAGE,SAAS,EAAEb,UAAU,CACnB,MADmB,EAEnB,CAACgB,QAAQ,KAAKd,GAAb,IAAoBc,QAAQ,KAAKb,KAAlC,qBAAqDa,QAArD,CAFmB,kBAGVP,IAHU,GAInBC,QAAQ,IAAI,gBAJO,EAKnB;IALmB,sBAMJI,KANI;EAHvB,IAYE;IAAK,SAAS,EAAC;EAAf,GACE,oBAAC,eAAD,CAAiB,QAAjB;IAA0B,KAAK,EAAE;MAAEL,IAAI,EAAJA,IAAF;MAAQC,QAAQ,EAARA;IAAR;EAAjC,GACGE,QADH,CADF,CAZF,CADF;AAoBD,CApDD;AAsDA;AACA;AACA;;;AACA,OAAO,IAAMS,IAAI,GAAGjB,cAAc,CAACO,aAAD,EAAgB;EAAEG,KAAK,EAAE;AAAT,CAAhB,CAA3B;AAEPO,IAAI,CAACC,WAAL,GAAmB,MAAnB"}
1
+ {"version":3,"file":"Tabs.js","names":["React","classNames","usePlatform","IOS","VKCOM","withAdaptivity","warnOnce","useGlobalEventListener","useDOM","pressedKey","warn","TabsModeContext","createContext","mode","withGaps","TabsComponent","children","getRootRef","sizeX","role","restProps","platform","document","isTabFlow","tabsRef","useRef","process","env","NODE_ENV","expectedValueText","getTabEls","current","Array","from","querySelectorAll","handleDocumentKeydown","event","key","tabEls","currentFocusedElIndex","findIndex","el","activeElement","nextIndex","length","offset","nextTabEl","preventDefault","focus","currentFocusedEl","find","getAttribute","relatedContentElId","relatedContentEl","getElementById","click","capture","Tabs","displayName"],"sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { classNames } from \"../../lib/classNames\";\nimport { HasRootRef } from \"../../types\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { IOS, VKCOM } from \"../../lib/platform\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { useDOM } from \"../../lib/dom\";\nimport { pressedKey } from \"../../lib/accessibility\";\nimport \"./Tabs.css\";\n\nexport interface TabsProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n AdaptivityProps {\n /**\n * Задаёт вид кнопок.\n *\n * > ⚠️ Значения `\"buttons\"`, `\"segmented\"` устарели и будут удалены в 5.0.0. Вместо `\"buttons\"` используйте `\"secondary\"`.\n * > Режим `\"segmented\"` переехал в отдельный компонент [`SegmentedControl`](https://vkcom.github.io/VKUI#/SegmentedControl),\n * > поэтому используйте его вместо `Tabs`.\n */\n mode?: \"buttons\" | \"segmented\" | \"default\" | \"accent\" | \"secondary\";\n}\n\nconst warn = warnOnce(\"Tabs\");\n\nexport interface TabsContextProps {\n mode: TabsProps[\"mode\"];\n withGaps: boolean;\n}\n\nexport const TabsModeContext = React.createContext<TabsContextProps>({\n mode: \"default\",\n withGaps: false,\n});\n\nconst TabsComponent = ({\n children,\n mode = \"default\",\n getRootRef,\n sizeX,\n role = \"tablist\",\n ...restProps\n}: TabsProps) => {\n const platform = usePlatform();\n const { document } = useDOM();\n\n const isTabFlow = role === \"tablist\";\n\n const tabsRef = React.useRef<HTMLDivElement>(null);\n\n if (\n (mode === \"buttons\" || mode === \"segmented\") &&\n process.env.NODE_ENV === \"development\"\n ) {\n const expectedValueText =\n mode === \"buttons\"\n ? `значения \"secondary\"`\n : \"компонент SegmentedControl\";\n warn(\n `mode=\"${mode}\" устарело и будет удалено в 5.0.0. Используйте ${expectedValueText}`\n );\n }\n\n if (platform !== IOS && mode === \"segmented\") {\n mode = \"default\";\n }\n\n if (mode === \"buttons\") {\n mode = \"secondary\";\n }\n\n const withGaps = mode === \"accent\" || mode === \"secondary\";\n\n const getTabEls = () => {\n if (!tabsRef.current) {\n return [];\n }\n\n return Array.from(\n // eslint-disable-next-line no-restricted-properties\n tabsRef.current.querySelectorAll<HTMLDivElement>(\n \"[role=tab]:not([disabled])\"\n )\n );\n };\n\n const handleDocumentKeydown = (event: KeyboardEvent) => {\n if (!document || !tabsRef.current || !isTabFlow) {\n return;\n }\n\n const key = pressedKey(event);\n\n switch (key) {\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \"End\":\n case \"Home\": {\n const tabEls = getTabEls();\n const currentFocusedElIndex = tabEls.findIndex(\n (el) => document.activeElement === el\n );\n if (currentFocusedElIndex === -1) {\n return;\n }\n\n let nextIndex = 0;\n if (key === \"Home\") {\n nextIndex = 0;\n } else if (key === \"End\") {\n nextIndex = tabEls.length - 1;\n } else {\n const offset = key === \"ArrowRight\" ? 1 : -1;\n nextIndex = currentFocusedElIndex + offset;\n }\n\n const nextTabEl = tabEls[nextIndex];\n\n if (nextTabEl) {\n event.preventDefault();\n nextTabEl.focus();\n }\n\n break;\n }\n /*\n В JAWS и NVDA стрелка вниз активирует контент.\n Это не прописано в стандартах, но по ссылке ниже это рекомендуется делать.\n https://inclusive-components.design/tabbed-interfaces/\n */\n case \"ArrowDown\": {\n const tabEls = getTabEls();\n const currentFocusedEl = tabEls.find(\n (el) => document.activeElement === el\n );\n\n if (\n !currentFocusedEl ||\n currentFocusedEl.getAttribute(\"aria-selected\") !== \"true\"\n ) {\n return;\n }\n\n const relatedContentElId =\n currentFocusedEl.getAttribute(\"aria-controls\");\n if (!relatedContentElId) {\n return;\n }\n\n // eslint-disable-next-line no-restricted-properties\n const relatedContentEl = document.getElementById(relatedContentElId);\n if (!relatedContentEl) {\n return;\n }\n\n event.preventDefault();\n relatedContentEl.focus();\n\n break;\n }\n case \"Space\":\n case \"Enter\": {\n const tabEls = getTabEls();\n const currentFocusedEl = tabEls.find(\n (el) => document.activeElement === el\n );\n if (currentFocusedEl) {\n currentFocusedEl.click();\n }\n }\n }\n };\n\n useGlobalEventListener(document, \"keydown\", handleDocumentKeydown, {\n capture: true,\n });\n\n return (\n <div\n {...restProps}\n ref={getRootRef}\n vkuiClass={classNames(\n \"Tabs\",\n (platform === IOS || platform === VKCOM) && `Tabs--${platform}`,\n `Tabs--${mode}`,\n withGaps && \"Tabs--withGaps\",\n // TODO v5.0.0 новая адаптивность\n `Tabs--sizeX-${sizeX}`\n )}\n role={role}\n >\n <div vkuiClass=\"Tabs__in\" ref={tabsRef}>\n <TabsModeContext.Provider value={{ mode, withGaps }}>\n {children}\n </TabsModeContext.Provider>\n </div>\n </div>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Tabs\n */\nexport const Tabs = withAdaptivity(TabsComponent, { sizeX: true });\n\nTabs.displayName = \"Tabs\";\n"],"mappings":"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"}
@@ -28,4 +28,4 @@ export interface TabsItemProps extends React.HTMLAttributes<HTMLElement> {
28
28
  /**
29
29
  * @see https://vkcom.github.io/VKUI/#/TabsItem
30
30
  */
31
- export declare const TabsItem: ({ before, children, status, after, selected, ...restProps }: TabsItemProps) => JSX.Element;
31
+ export declare const TabsItem: ({ before, children, status, after, selected, role, tabIndex: tabIndexProp, ...restProps }: TabsItemProps) => JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["before", "children", "status", "after", "selected"];
3
+ var _excluded = ["before", "children", "status", "after", "selected", "role", "tabIndex"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import * as React from "react";
6
6
  import { Tappable } from "../Tappable/Tappable";
@@ -11,10 +11,12 @@ import { useAdaptivity } from "../../hooks/useAdaptivity";
11
11
  import { TabsModeContext } from "../Tabs/Tabs";
12
12
  import { Headline } from "../Typography/Headline/Headline";
13
13
  import { Subhead } from "../Typography/Subhead/Subhead";
14
-
14
+ import { warnOnce } from "../../lib/warnOnce";
15
+ var warn = warnOnce("TabsItem");
15
16
  /**
16
17
  * @see https://vkcom.github.io/VKUI/#/TabsItem
17
18
  */
19
+
18
20
  export var TabsItem = function TabsItem(_ref) {
19
21
  var before = _ref.before,
20
22
  children = _ref.children,
@@ -22,6 +24,9 @@ export var TabsItem = function TabsItem(_ref) {
22
24
  after = _ref.after,
23
25
  _ref$selected = _ref.selected,
24
26
  selected = _ref$selected === void 0 ? false : _ref$selected,
27
+ _ref$role = _ref.role,
28
+ role = _ref$role === void 0 ? "tab" : _ref$role,
29
+ tabIndexProp = _ref.tabIndex,
25
30
  restProps = _objectWithoutProperties(_ref, _excluded);
26
31
 
27
32
  var platform = usePlatform();
@@ -34,6 +39,7 @@ export var TabsItem = function TabsItem(_ref) {
34
39
  withGaps = _React$useContext.withGaps;
35
40
 
36
41
  var statusComponent = null;
42
+ var isTabFlow = role === "tab";
37
43
 
38
44
  if (status) {
39
45
  statusComponent = typeof status === "number" ? createScopedElement(Subhead, {
@@ -45,13 +51,30 @@ export var TabsItem = function TabsItem(_ref) {
45
51
  }, status);
46
52
  }
47
53
 
54
+ if (process.env.NODE_ENV === "development" && isTabFlow) {
55
+ if (!restProps["aria-controls"]) {
56
+ warn("\u041F\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u0432 \"aria-controls\" id \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0438\u0440\u0443\u0435\u043C\u043E\u0433\u043E \u0431\u043B\u043E\u043A\u0430", "warn");
57
+ } else if (!restProps["id"]) {
58
+ warn("\u041F\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \"id\" \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442\u0443 \u0434\u043B\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0432 \"aria-labelledby\" \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0438\u0440\u0443\u0435\u043C\u043E\u0433\u043E \u0431\u043B\u043E\u043A\u0430", "warn");
59
+ }
60
+ }
61
+
62
+ var tabIndex = tabIndexProp;
63
+
64
+ if (isTabFlow && tabIndex === undefined) {
65
+ tabIndex = selected ? 0 : -1;
66
+ }
67
+
48
68
  return createScopedElement(Tappable, _extends({}, restProps, {
49
69
  vkuiClass: classNames("TabsItem", (platform === IOS || platform === VKCOM) && "TabsItem--".concat(platform), mode && "TabsItem--".concat(mode), selected && "TabsItem--selected", // TODO v5.0.0 новая адаптивность
50
70
  sizeY && "TabsItem--sizeY-".concat(sizeY), withGaps && "TabsItem--withGaps"),
51
71
  hoverMode: "TabsItem--hover",
52
72
  activeMode: "TabsItem--active",
53
73
  focusVisibleMode: mode === "segmented" ? "outside" : "inside",
54
- hasActive: mode === "segmented"
74
+ hasActive: mode === "segmented",
75
+ role: role,
76
+ "aria-selected": selected,
77
+ tabIndex: tabIndex
55
78
  }), before && createScopedElement("div", {
56
79
  vkuiClass: "TabsItem__before"
57
80
  }, before), createScopedElement(Headline, {
@@ -1 +1 @@
1
- {"version":3,"file":"TabsItem.js","names":["React","Tappable","classNames","IOS","VKCOM","usePlatform","useAdaptivity","TabsModeContext","Headline","Subhead","TabsItem","before","children","status","after","selected","restProps","platform","sizeY","useContext","mode","withGaps","statusComponent"],"sources":["../../../src/components/TabsItem/TabsItem.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Tappable } from \"../Tappable/Tappable\";\nimport { classNames } from \"../../lib/classNames\";\nimport { IOS, VKCOM } from \"../../lib/platform\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { TabsModeContext, TabsContextProps } from \"../Tabs/Tabs\";\nimport { Headline } from \"../Typography/Headline/Headline\";\nimport { Subhead } from \"../Typography/Subhead/Subhead\";\nimport \"./TabsItem.css\";\n\nexport interface TabsItemProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Добавляет иконку слева.\n *\n * - Для `mode=\"default\"` используйте иконки размером 24.\n * - Для всех остальных `mode` используйте иконки размером 20.\n */\n before?: React.ReactNode;\n /**\n * Добавляет элемент слева от `after`.\n *\n * - `React.ReactElement` – либо [`Badge`](https://vkcom.github.io/VKUI/#/Badge) с параметром `mode=\"prominent\"`.\n * либо [`Counter`](https://vkcom.github.io/VKUI/#/Counter) с параметрами `mode=\"prominent\" size=\"s\"`.\n * - `number` – для показа текстового блока с переданным числом.\n */\n status?: React.ReactElement | number;\n /**\n * Добавляет иконку справа.\n *\n * Например, `<Icon16Dropdown />`\n */\n after?: React.ReactNode;\n selected?: boolean;\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/TabsItem\n */\nexport const TabsItem = ({\n before,\n children,\n status,\n after,\n selected = false,\n ...restProps\n}: TabsItemProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n const { mode, withGaps }: TabsContextProps =\n React.useContext(TabsModeContext);\n let statusComponent = null;\n\n if (status) {\n statusComponent =\n typeof status === \"number\" ? (\n <Subhead\n Component=\"span\"\n vkuiClass=\"TabsItem__status TabsItem__status--count\"\n weight=\"2\"\n >\n {status}\n </Subhead>\n ) : (\n <span vkuiClass=\"TabsItem__status\">{status}</span>\n );\n }\n\n return (\n <Tappable\n {...restProps}\n vkuiClass={classNames(\n \"TabsItem\",\n (platform === IOS || platform === VKCOM) && `TabsItem--${platform}`,\n mode && `TabsItem--${mode}`,\n selected && \"TabsItem--selected\",\n // TODO v5.0.0 новая адаптивность\n sizeY && `TabsItem--sizeY-${sizeY}`,\n withGaps && \"TabsItem--withGaps\"\n )}\n hoverMode=\"TabsItem--hover\"\n activeMode=\"TabsItem--active\"\n focusVisibleMode={mode === \"segmented\" ? \"outside\" : \"inside\"}\n hasActive={mode === \"segmented\"}\n >\n {before && <div vkuiClass=\"TabsItem__before\">{before}</div>}\n <Headline\n Component=\"span\"\n vkuiClass=\"TabsItem__label\"\n level={mode === \"default\" ? \"1\" : \"2\"}\n weight=\"2\"\n >\n {children}\n </Headline>\n {statusComponent}\n {after && <div vkuiClass=\"TabsItem__after\">{after}</div>}\n {mode === \"default\" && (\n <div\n vkuiClass=\"TabsItem__underline\"\n aria-hidden\n data-selected={selected}\n />\n )}\n </Tappable>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT;AACA,SAASC,UAAT;AACA,SAASC,GAAT,EAAcC,KAAd;AACA,SAASC,WAAT;AACA,SAASC,aAAT;AACA,SAASC,eAAT;AACA,SAASC,QAAT;AACA,SAASC,OAAT;;AA6BA;AACA;AACA;AACA,OAAO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,OAOH;EAAA,IANnBC,MAMmB,QANnBA,MAMmB;EAAA,IALnBC,QAKmB,QALnBA,QAKmB;EAAA,IAJnBC,MAImB,QAJnBA,MAImB;EAAA,IAHnBC,KAGmB,QAHnBA,KAGmB;EAAA,yBAFnBC,QAEmB;EAAA,IAFnBA,QAEmB,8BAFR,KAEQ;EAAA,IADhBC,SACgB;;EACnB,IAAMC,QAAQ,GAAGZ,WAAW,EAA5B;;EACA,qBAAkBC,aAAa,EAA/B;EAAA,IAAQY,KAAR,kBAAQA,KAAR;;EACA,wBACElB,KAAK,CAACmB,UAAN,CAAiBZ,eAAjB,CADF;EAAA,IAAQa,IAAR,qBAAQA,IAAR;EAAA,IAAcC,QAAd,qBAAcA,QAAd;;EAEA,IAAIC,eAAe,GAAG,IAAtB;;EAEA,IAAIT,MAAJ,EAAY;IACVS,eAAe,GACb,OAAOT,MAAP,KAAkB,QAAlB,GACE,oBAAC,OAAD;MACE,SAAS,EAAC,MADZ;MAEE,SAAS,EAAC,0CAFZ;MAGE,MAAM,EAAC;IAHT,GAKGA,MALH,CADF,GASE;MAAM,SAAS,EAAC;IAAhB,GAAoCA,MAApC,CAVJ;EAYD;;EAED,OACE,oBAAC,QAAD,eACMG,SADN;IAEE,SAAS,EAAEd,UAAU,CACnB,UADmB,EAEnB,CAACe,QAAQ,KAAKd,GAAb,IAAoBc,QAAQ,KAAKb,KAAlC,yBAAyDa,QAAzD,CAFmB,EAGnBG,IAAI,wBAAiBA,IAAjB,CAHe,EAInBL,QAAQ,IAAI,oBAJO,EAKnB;IACAG,KAAK,8BAAuBA,KAAvB,CANc,EAOnBG,QAAQ,IAAI,oBAPO,CAFvB;IAWE,SAAS,EAAC,iBAXZ;IAYE,UAAU,EAAC,kBAZb;IAaE,gBAAgB,EAAED,IAAI,KAAK,WAAT,GAAuB,SAAvB,GAAmC,QAbvD;IAcE,SAAS,EAAEA,IAAI,KAAK;EAdtB,IAgBGT,MAAM,IAAI;IAAK,SAAS,EAAC;EAAf,GAAmCA,MAAnC,CAhBb,EAiBE,oBAAC,QAAD;IACE,SAAS,EAAC,MADZ;IAEE,SAAS,EAAC,iBAFZ;IAGE,KAAK,EAAES,IAAI,KAAK,SAAT,GAAqB,GAArB,GAA2B,GAHpC;IAIE,MAAM,EAAC;EAJT,GAMGR,QANH,CAjBF,EAyBGU,eAzBH,EA0BGR,KAAK,IAAI;IAAK,SAAS,EAAC;EAAf,GAAkCA,KAAlC,CA1BZ,EA2BGM,IAAI,KAAK,SAAT,IACC;IACE,SAAS,EAAC,qBADZ;IAEE,mBAFF;IAGE,iBAAeL;EAHjB,EA5BJ,CADF;AAqCD,CAlEM"}
1
+ {"version":3,"file":"TabsItem.js","names":["React","Tappable","classNames","IOS","VKCOM","usePlatform","useAdaptivity","TabsModeContext","Headline","Subhead","warnOnce","warn","TabsItem","before","children","status","after","selected","role","tabIndexProp","tabIndex","restProps","platform","sizeY","useContext","mode","withGaps","statusComponent","isTabFlow","process","env","NODE_ENV","undefined"],"sources":["../../../src/components/TabsItem/TabsItem.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Tappable } from \"../Tappable/Tappable\";\nimport { classNames } from \"../../lib/classNames\";\nimport { IOS, VKCOM } from \"../../lib/platform\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { TabsModeContext, TabsContextProps } from \"../Tabs/Tabs\";\nimport { Headline } from \"../Typography/Headline/Headline\";\nimport { Subhead } from \"../Typography/Subhead/Subhead\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./TabsItem.css\";\n\nexport interface TabsItemProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * Добавляет иконку слева.\n *\n * - Для `mode=\"default\"` используйте иконки размером 24.\n * - Для всех остальных `mode` используйте иконки размером 20.\n */\n before?: React.ReactNode;\n /**\n * Добавляет элемент слева от `after`.\n *\n * - `React.ReactElement` – либо [`Badge`](https://vkcom.github.io/VKUI/#/Badge) с параметром `mode=\"prominent\"`.\n * либо [`Counter`](https://vkcom.github.io/VKUI/#/Counter) с параметрами `mode=\"prominent\" size=\"s\"`.\n * - `number` – для показа текстового блока с переданным числом.\n */\n status?: React.ReactElement | number;\n /**\n * Добавляет иконку справа.\n *\n * Например, `<Icon16Dropdown />`\n */\n after?: React.ReactNode;\n selected?: boolean;\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"TabsItem\");\n\n/**\n * @see https://vkcom.github.io/VKUI/#/TabsItem\n */\nexport const TabsItem = ({\n before,\n children,\n status,\n after,\n selected = false,\n role = \"tab\",\n tabIndex: tabIndexProp,\n ...restProps\n}: TabsItemProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n const { mode, withGaps }: TabsContextProps =\n React.useContext(TabsModeContext);\n let statusComponent = null;\n\n const isTabFlow = role === \"tab\";\n\n if (status) {\n statusComponent =\n typeof status === \"number\" ? (\n <Subhead\n Component=\"span\"\n vkuiClass=\"TabsItem__status TabsItem__status--count\"\n weight=\"2\"\n >\n {status}\n </Subhead>\n ) : (\n <span vkuiClass=\"TabsItem__status\">{status}</span>\n );\n }\n\n if (process.env.NODE_ENV === \"development\" && isTabFlow) {\n if (!restProps[\"aria-controls\"]) {\n warn(`Передайте в \"aria-controls\" id контролируемого блока`, \"warn\");\n } else if (!restProps[\"id\"]) {\n warn(\n `Передайте \"id\" компоненту для использования в \"aria-labelledby\" контролируемого блока`,\n \"warn\"\n );\n }\n }\n\n let tabIndex = tabIndexProp;\n if (isTabFlow && tabIndex === undefined) {\n tabIndex = selected ? 0 : -1;\n }\n\n return (\n <Tappable\n {...restProps}\n vkuiClass={classNames(\n \"TabsItem\",\n (platform === IOS || platform === VKCOM) && `TabsItem--${platform}`,\n mode && `TabsItem--${mode}`,\n selected && \"TabsItem--selected\",\n // TODO v5.0.0 новая адаптивность\n sizeY && `TabsItem--sizeY-${sizeY}`,\n withGaps && \"TabsItem--withGaps\"\n )}\n hoverMode=\"TabsItem--hover\"\n activeMode=\"TabsItem--active\"\n focusVisibleMode={mode === \"segmented\" ? \"outside\" : \"inside\"}\n hasActive={mode === \"segmented\"}\n role={role}\n aria-selected={selected}\n tabIndex={tabIndex}\n >\n {before && <div vkuiClass=\"TabsItem__before\">{before}</div>}\n <Headline\n Component=\"span\"\n vkuiClass=\"TabsItem__label\"\n level={mode === \"default\" ? \"1\" : \"2\"}\n weight=\"2\"\n >\n {children}\n </Headline>\n {statusComponent}\n {after && <div vkuiClass=\"TabsItem__after\">{after}</div>}\n {mode === \"default\" && (\n <div\n vkuiClass=\"TabsItem__underline\"\n aria-hidden\n data-selected={selected}\n />\n )}\n </Tappable>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,QAAT;AACA,SAASC,UAAT;AACA,SAASC,GAAT,EAAcC,KAAd;AACA,SAASC,WAAT;AACA,SAASC,aAAT;AACA,SAASC,eAAT;AACA,SAASC,QAAT;AACA,SAASC,OAAT;AACA,SAASC,QAAT;AA6BA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,UAAD,CAArB;AAEA;AACA;AACA;;AACA,OAAO,IAAME,QAAQ,GAAG,SAAXA,QAAW,OASH;EAAA,IARnBC,MAQmB,QARnBA,MAQmB;EAAA,IAPnBC,QAOmB,QAPnBA,QAOmB;EAAA,IANnBC,MAMmB,QANnBA,MAMmB;EAAA,IALnBC,KAKmB,QALnBA,KAKmB;EAAA,yBAJnBC,QAImB;EAAA,IAJnBA,QAImB,8BAJR,KAIQ;EAAA,qBAHnBC,IAGmB;EAAA,IAHnBA,IAGmB,0BAHZ,KAGY;EAAA,IAFTC,YAES,QAFnBC,QAEmB;EAAA,IADhBC,SACgB;;EACnB,IAAMC,QAAQ,GAAGjB,WAAW,EAA5B;;EACA,qBAAkBC,aAAa,EAA/B;EAAA,IAAQiB,KAAR,kBAAQA,KAAR;;EACA,wBACEvB,KAAK,CAACwB,UAAN,CAAiBjB,eAAjB,CADF;EAAA,IAAQkB,IAAR,qBAAQA,IAAR;EAAA,IAAcC,QAAd,qBAAcA,QAAd;;EAEA,IAAIC,eAAe,GAAG,IAAtB;EAEA,IAAMC,SAAS,GAAGV,IAAI,KAAK,KAA3B;;EAEA,IAAIH,MAAJ,EAAY;IACVY,eAAe,GACb,OAAOZ,MAAP,KAAkB,QAAlB,GACE,oBAAC,OAAD;MACE,SAAS,EAAC,MADZ;MAEE,SAAS,EAAC,0CAFZ;MAGE,MAAM,EAAC;IAHT,GAKGA,MALH,CADF,GASE;MAAM,SAAS,EAAC;IAAhB,GAAoCA,MAApC,CAVJ;EAYD;;EAED,IAAIc,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CH,SAA9C,EAAyD;IACvD,IAAI,CAACP,SAAS,CAAC,eAAD,CAAd,EAAiC;MAC/BV,IAAI,iNAAyD,MAAzD,CAAJ;IACD,CAFD,MAEO,IAAI,CAACU,SAAS,CAAC,IAAD,CAAd,EAAsB;MAC3BV,IAAI,sXAEF,MAFE,CAAJ;IAID;EACF;;EAED,IAAIS,QAAQ,GAAGD,YAAf;;EACA,IAAIS,SAAS,IAAIR,QAAQ,KAAKY,SAA9B,EAAyC;IACvCZ,QAAQ,GAAGH,QAAQ,GAAG,CAAH,GAAO,CAAC,CAA3B;EACD;;EAED,OACE,oBAAC,QAAD,eACMI,SADN;IAEE,SAAS,EAAEnB,UAAU,CACnB,UADmB,EAEnB,CAACoB,QAAQ,KAAKnB,GAAb,IAAoBmB,QAAQ,KAAKlB,KAAlC,yBAAyDkB,QAAzD,CAFmB,EAGnBG,IAAI,wBAAiBA,IAAjB,CAHe,EAInBR,QAAQ,IAAI,oBAJO,EAKnB;IACAM,KAAK,8BAAuBA,KAAvB,CANc,EAOnBG,QAAQ,IAAI,oBAPO,CAFvB;IAWE,SAAS,EAAC,iBAXZ;IAYE,UAAU,EAAC,kBAZb;IAaE,gBAAgB,EAAED,IAAI,KAAK,WAAT,GAAuB,SAAvB,GAAmC,QAbvD;IAcE,SAAS,EAAEA,IAAI,KAAK,WAdtB;IAeE,IAAI,EAAEP,IAfR;IAgBE,iBAAeD,QAhBjB;IAiBE,QAAQ,EAAEG;EAjBZ,IAmBGP,MAAM,IAAI;IAAK,SAAS,EAAC;EAAf,GAAmCA,MAAnC,CAnBb,EAoBE,oBAAC,QAAD;IACE,SAAS,EAAC,MADZ;IAEE,SAAS,EAAC,iBAFZ;IAGE,KAAK,EAAEY,IAAI,KAAK,SAAT,GAAqB,GAArB,GAA2B,GAHpC;IAIE,MAAM,EAAC;EAJT,GAMGX,QANH,CApBF,EA4BGa,eA5BH,EA6BGX,KAAK,IAAI;IAAK,SAAS,EAAC;EAAf,GAAkCA,KAAlC,CA7BZ,EA8BGS,IAAI,KAAK,SAAT,IACC;IACE,SAAS,EAAC,qBADZ;IAEE,mBAFF;IAGE,iBAAeR;EAHjB,EA/BJ,CADF;AAwCD,CAzFM"}
@@ -43,4 +43,4 @@ export declare const ACTIVE_EFFECT_DELAY = 600;
43
43
  /**
44
44
  * @see https://vkcom.github.io/VKUI/#/Tappable
45
45
  */
46
- export declare const Tappable: React.FC<Pick<TappableProps, "max" | "required" | "high" | "low" | "disabled" | "default" | "start" | "open" | "media" | "hidden" | "cite" | "data" | "dir" | "form" | "label" | "slot" | "span" | "style" | "summary" | "title" | "pattern" | "async" | "defer" | "manifest" | "color" | "content" | "size" | "wrap" | "multiple" | "height" | "translate" | "width" | "prefix" | "src" | "children" | "className" | "id" | "lang" | "method" | "min" | "name" | "target" | "type" | "role" | "tabIndex" | "crossOrigin" | "href" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancelCapture" | "onTouchEndCapture" | "onTouchMoveCapture" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "list" | "classID" | "useMap" | "wmode" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "as" | "hrefLang" | "integrity" | "rel" | "sizes" | "charSet" | "kind" | "srcLang" | "value" | "download" | "alt" | "coords" | "shape" | "autoPlay" | "controls" | "loop" | "mediaGroup" | "muted" | "playsInline" | "preload" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "dateTime" | "acceptCharset" | "action" | "autoComplete" | "encType" | "noValidate" | "allowFullScreen" | "allowTransparency" | "frameBorder" | "marginHeight" | "marginWidth" | "sandbox" | "scrolling" | "seamless" | "srcDoc" | "srcSet" | "accept" | "capture" | "checked" | "maxLength" | "minLength" | "readOnly" | "step" | "htmlFor" | "httpEquiv" | "optimum" | "reversed" | "selected" | "nonce" | "scoped" | "cellPadding" | "cellSpacing" | "colSpan" | "headers" | "rowSpan" | "scope" | "cols" | "rows" | "poster" | "challenge" | "keyType" | "keyParams" | "onStart" | "onMove" | "onLeave" | "onEnter" | "onEnd" | "Component" | "getRootRef" | "stopPropagation" | "activeEffectDelay" | "hasHover" | "hoverMode" | "hasActive" | "activeMode" | "focusVisibleMode"> & import("../AdaptivityProvider/AdaptivityContext").SizeProps>;
46
+ export declare const Tappable: React.FC<Pick<TappableProps, "cite" | "data" | "form" | "label" | "slot" | "span" | "style" | "summary" | "title" | "pattern" | "value" | "children" | "alt" | "crossOrigin" | "height" | "sizes" | "src" | "srcSet" | "useMap" | "width" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancelCapture" | "onTouchEndCapture" | "onTouchMoveCapture" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "start" | "content" | "size" | "default" | "wrap" | "open" | "multiple" | "disabled" | "list" | "step" | "onStart" | "onMove" | "onLeave" | "onEnter" | "onEnd" | "Component" | "getRootRef" | "stopPropagation" | "accept" | "acceptCharset" | "action" | "allowFullScreen" | "allowTransparency" | "as" | "async" | "autoComplete" | "autoFocus" | "autoPlay" | "capture" | "cellPadding" | "cellSpacing" | "charSet" | "challenge" | "checked" | "classID" | "cols" | "colSpan" | "controls" | "coords" | "dateTime" | "defer" | "download" | "encType" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "frameBorder" | "headers" | "high" | "href" | "hrefLang" | "htmlFor" | "httpEquiv" | "integrity" | "keyParams" | "keyType" | "kind" | "loop" | "low" | "manifest" | "marginHeight" | "marginWidth" | "max" | "maxLength" | "media" | "mediaGroup" | "method" | "min" | "minLength" | "muted" | "name" | "nonce" | "noValidate" | "optimum" | "playsInline" | "poster" | "preload" | "readOnly" | "rel" | "required" | "reversed" | "rows" | "rowSpan" | "sandbox" | "scope" | "scoped" | "scrolling" | "seamless" | "selected" | "shape" | "srcDoc" | "srcLang" | "target" | "type" | "wmode" | "activeEffectDelay" | "hasHover" | "hoverMode" | "hasActive" | "activeMode" | "focusVisibleMode"> & import("../AdaptivityProvider/AdaptivityContext").SizeProps>;
@@ -11,4 +11,4 @@ export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextArea
11
11
  /**
12
12
  * @see https://vkcom.github.io/VKUI/#/Textarea
13
13
  */
14
- export declare const Textarea: React.FC<Pick<TextareaProps, "required" | "disabled" | "hidden" | "dir" | "form" | "slot" | "style" | "title" | "color" | "wrap" | "maxHeight" | "translate" | "prefix" | "children" | "className" | "id" | "lang" | "name" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "status" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "value" | "autoFocus" | "autoComplete" | "maxLength" | "minLength" | "readOnly" | "cols" | "dirName" | "rows" | "getRootRef" | "getRef" | "grow" | "onResize"> & import("../AdaptivityProvider/AdaptivityContext").SizeProps>;
14
+ export declare const Textarea: React.FC<Pick<TextareaProps, "form" | "slot" | "style" | "title" | "value" | "children" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "wrap" | "disabled" | "status" | "getRootRef" | "autoComplete" | "autoFocus" | "cols" | "maxLength" | "minLength" | "name" | "readOnly" | "required" | "rows" | "getRef" | "maxHeight" | "dirName" | "grow" | "onResize"> & import("../AdaptivityProvider/AdaptivityContext").SizeProps>;
@@ -62,5 +62,5 @@ export interface ViewInfiniteState {
62
62
  swipeBackResult: SwipeBackResults | null;
63
63
  browserSwipe: boolean;
64
64
  }
65
- export declare const ViewInfinite: React.FC<Pick<ViewInfiniteProps, "hidden" | "dir" | "nav" | "slot" | "style" | "title" | "scroll" | "color" | "translate" | "prefix" | "children" | "className" | "id" | "lang" | "role" | "tabIndex" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "popout" | "modal" | "onTransition" | "activePanel" | "history" | "onSwipeBack" | "onSwipeBackStart" | "onSwipeBackCancel" | "configProvider" | "isBackCheck" | "splitCol">>;
65
+ export declare const ViewInfinite: React.FC<Pick<ViewInfiniteProps, "nav" | "slot" | "style" | "title" | "children" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "scroll" | "popout" | "modal" | "onTransition" | "activePanel" | "history" | "onSwipeBack" | "onSwipeBackStart" | "onSwipeBackCancel" | "configProvider" | "isBackCheck" | "splitCol">>;
66
66
  export {};
@@ -106,7 +106,7 @@
106
106
  --modal_card_background,var(--vkui--color_background_modal)
107
107
  );box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3,0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08));color:#99a2ad;color:var(--icon_secondary,var(--vkui--color_icon_secondary));display:flex;justify-content:center}.vkuiHorizontalScrollArrow--m .vkuiHorizontalScrollArrow__icon{border-radius:14px;height:28px;width:28px}.vkuiHorizontalScrollArrow--l .vkuiHorizontalScrollArrow__icon{border-radius:24px;height:40px;width:40px}.vkuiHorizontalScrollArrow--left{left:0;padding-left:16px;padding-left:var(--vkui--size_base_padding_horizontal--regular,16px)}.vkuiHorizontalScrollArrow--right{padding-right:16px;padding-right:var(--vkui--size_base_padding_horizontal--regular,16px);right:0}.vkuiHorizontalScrollArrow--ios .vkuiHorizontalScrollArrow{transition-timing-function:cubic-bezier(.36,.66,.04,1);transition-timing-function:var(--ios-easing)}.vkuiGallery:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow{opacity:.64;opacity:var(--vkui--opacity_disable_accessibility,.64)}.vkuiGallery:hover .vkuiHorizontalScrollArrow:hover,.vkuiHorizontalScroll--withConstArrows .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll--withConstArrows:hover .vkuiHorizontalScrollArrow,.vkuiHorizontalScroll:hover .vkuiHorizontalScrollArrow:hover{opacity:1}.vkuiPopoutWrapper{box-sizing:border-box;height:100%;left:0;pointer-events:none;top:0;width:100%}.vkuiPopoutWrapper--opened{pointer-events:auto}.vkuiPopoutWrapper--closing{pointer-events:none}.vkuiPopoutWrapper--fixed{position:fixed}.vkuiPopoutWrapper__overlay{-webkit-animation:vkui-animation-full-fade-in .2s ease;animation:vkui-animation-full-fade-in .2s ease;-webkit-animation:vkui-animation-full-fade-in var(--vkui--animation_duration_m,.2s) ease;animation:vkui-animation-full-fade-in var(--vkui--animation_duration_m,.2s) ease;height:100%;left:0;opacity:1;position:fixed;top:0;width:100%}.vkuiPopoutWrapper--closing .vkuiPopoutWrapper__overlay{opacity:0;transition:opacity .2s cubic-bezier(.3,.3,.5,1);transition:opacity var(--vkui--animation_duration_m,.2s) var(--vkui--animation_easing_default,cubic-bezier(.3,.3,.5,1))}.vkuiPopoutWrapper--masked .vkuiPopoutWrapper__overlay{background:rgba(0,0,0,.4);background:var(--vkui--color_overlay_primary,rgba(0,0,0,.4))}.vkuiPopoutWrapper--fixed .vkuiPopoutWrapper__overlay{position:absolute}.vkuiPopoutWrapper__container{box-sizing:border-box;display:flex;height:100%;position:relative;width:100%}.vkuiPopoutWrapper__content{display:flex;justify-content:center;pointer-events:none;width:100%;z-index:2}.vkuiPopoutWrapper__content>*{pointer-events:auto}.vkuiPopoutWrapper--v-center .vkuiPopoutWrapper__container{align-items:center}.vkuiPopoutWrapper--v-bottom .vkuiPopoutWrapper__container{align-items:flex-end}.vkuiPopoutWrapper--v-top .vkuiPopoutWrapper__container{align-items:flex-start}.vkuiPopoutWrapper--h-center .vkuiPopoutWrapper__container{justify-content:center}.vkuiPopoutWrapper--h-left .vkuiPopoutWrapper__container{justify-content:flex-start}.vkuiPopoutWrapper--h-right .vkuiPopoutWrapper__container{justify-content:flex-end}@-webkit-keyframes vkui-animation-full-fade-in{0%{opacity:0}to{opacity:1}}@keyframes vkui-animation-full-fade-in{0%{opacity:0}to{opacity:1}}.vkuiActionSheet{align-items:stretch;-webkit-animation:vkui-animation-actionsheet-intro .2s cubic-bezier(.4,0,.2,1);animation:vkui-animation-actionsheet-intro .2s cubic-bezier(.4,0,.2,1);-webkit-animation:vkui-animation-actionsheet-intro .2s var(--android-easing);animation:vkui-animation-actionsheet-intro .2s var(--android-easing);background:#fff;background:var(--modal_card_background,var(--vkui--color_background_modal));border-radius:12px;box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3,0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08));box-sizing:border-box;display:flex;flex-direction:column;margin:10px;overflow:hidden;padding:8px 0;position:relative;width:calc(100% - 20px)}.vkuiActionSheet__header{color:#818c99;color:var(--text_secondary,var(--vkui--color_text_subhead));padding:16px 20px}.vkuiActionSheet--closing{-webkit-transform:translateY(calc(100% + 20px));transform:translateY(calc(100% + 20px));transition:-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:transform .2s cubic-bezier(.4,0,.2,1);transition:transform .2s cubic-bezier(.4,0,.2,1),-webkit-transform .2s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .2s var(--android-easing);transition:transform .2s var(--android-easing);transition:transform .2s var(--android-easing),-webkit-transform .2s var(--android-easing)}.vkuiActionSheet__title+.vkuiActionSheet__text{margin-top:8px}.vkuiActionSheet--ios{-webkit-animation:vkui-animation-actionsheet-intro .3s cubic-bezier(.36,.66,.04,1);animation:vkui-animation-actionsheet-intro .3s cubic-bezier(.36,.66,.04,1);-webkit-animation:vkui-animation-actionsheet-intro .3s var(--ios-easing);animation:vkui-animation-actionsheet-intro .3s var(--ios-easing);background:transparent;margin:unset;padding:10px;width:100%}.vkuiActionSheet--ios.vkuiActionSheet--closing{-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .3s cubic-bezier(.36,.66,.04,1);transition:transform .3s cubic-bezier(.36,.66,.04,1);transition:transform .3s cubic-bezier(.36,.66,.04,1),-webkit-transform .3s cubic-bezier(.36,.66,.04,1);transition:-webkit-transform .3s var(--ios-easing);transition:transform .3s var(--ios-easing);transition:transform .3s var(--ios-easing),-webkit-transform .3s var(--ios-easing)}.vkuiActionSheet--ios .vkuiActionSheet__header{border-radius:14px 14px 0 0;overflow:hidden;position:relative;text-align:center}.vkuiActionSheet--ios .vkuiActionSheet__title{position:relative;z-index:2}.vkuiActionSheet--ios .vkuiActionSheet__title+.vkuiActionSheet__text{margin-top:9px}.vkuiActionSheet--ios .vkuiActionSheet__text{position:relative;z-index:2}.vkuiActionSheet--ios .vkuiActionSheet__header:before{background-color:#fff;background-color:var(
108
108
  --modal_card_background,var(--vkui--color_background_modal)
109
- );content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.vkuiActionSheet--sizeY-compact .vkuiActionSheet__header{padding:12px 20px}.vkuiActionSheet--desktop{-webkit-animation:none;animation:none;height:auto;margin:0;width:auto}.vkuiActionSheet--desktop.vkuiActionSheet--ios{border-radius:14px;padding:0}@-webkit-keyframes vkui-animation-actionsheet-intro{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes vkui-animation-actionsheet-intro{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.vkuiActionSheetItem{align-items:center;border-radius:0;box-sizing:border-box;color:#000;color:var(--text_primary,var(--vkui--color_text_primary));display:flex;min-height:48px;overflow:hidden;padding:0 20px;text-decoration:none}.vkuiActionSheetItem,.vkuiActionSheetItem__after,.vkuiActionSheetItem__before,.vkuiActionSheetItem__container{position:relative;z-index:2}.vkuiActionSheetItem__after,.vkuiActionSheetItem__before{flex-shrink:0}.vkuiActionSheetItem__before{margin-left:-2px;margin-right:18px}.vkuiActionSheetItem__container{flex-grow:1;max-width:100%;padding:10px 0}.vkuiActionSheetItem--ellipsis{overflow:hidden;white-space:nowrap}.vkuiActionSheetItem__content{align-items:baseline;display:flex;justify-content:space-between;overflow:hidden}.vkuiActionSheetItem--ellipsis .vkuiActionSheetItem__content{justify-content:flex-start}.vkuiActionSheetItem__children{min-width:0;overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__subtitle{margin-top:2px;overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__meta,.vkuiActionSheetItem__subtitle{color:#818c99;color:var(--text_secondary,var(--vkui--color_text_secondary))}.vkuiActionSheetItem__meta{flex-shrink:0;margin-left:6px}.vkuiActionSheetItem__before{color:#2688eb;color:var(--action_sheet_action_foreground,var(--vkui--color_icon_accent))}.vkuiActionSheetItem--destructive .vkuiActionSheetItem__container:first-child{color:#e64646;color:var(--destructive,var(--vkui--color_text_negative))}.vkuiActionSheetItem--destructive .vkuiActionSheetItem__before{color:#e64646;color:var(--destructive,var(--vkui--color_icon_negative))}.vkuiActionSheetItem__radio{display:none}.vkuiActionSheetItem__marker{align-items:center;background-color:initial;border-radius:50%;color:#2688eb;color:var(--accent,var(--vkui--color_icon_accent));display:none;height:24px;justify-content:center;margin-left:16px;width:24px}.vkuiActionSheetItem__radio:checked~.vkuiActionSheetItem__marker{display:flex}.vkuiActionSheetItem--ios{background:#fff;background:var(--modal_card_background,var(--vkui--color_background_modal));border-radius:0;color:#2688eb;color:var(--action_sheet_action_foreground,var(--vkui--color_text_accent));min-height:56px;padding:14px 20px 14px 19px}.vkuiActionSheetItem--rich{color:#000;color:var(--text_primary,var(--vkui--color_text_primary))}.vkuiActionSheetItem--ios.vkuiActionSheetItem--destructive{color:#e64646;color:var(--destructive,var(--vkui--color_text_negative))}.vkuiActionSheetItem--ios:first-child{border-top-left-radius:14px;border-top-right-radius:14px}.vkuiActionSheetItem--ios:last-child,.vkuiActionSheetItem--ios:not(.vkuiActionSheetItem--desktop):nth-last-child(2){border-bottom-left-radius:14px;border-bottom-right-radius:14px}.vkuiActionSheetItem--ios:before{background-color:#fff;background-color:var(
109
+ );content:"";height:100%;left:0;position:absolute;top:0;width:100%;z-index:1}.vkuiActionSheet--sizeY-compact .vkuiActionSheet__header{padding:12px 20px}.vkuiActionSheet--desktop{-webkit-animation:none;animation:none;height:auto;margin:0;width:auto}.vkuiActionSheet--desktop.vkuiActionSheet--ios{border-radius:14px;padding:0}@-webkit-keyframes vkui-animation-actionsheet-intro{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes vkui-animation-actionsheet-intro{0%{-webkit-transform:translateY(100%);transform:translateY(100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.vkuiActionSheetItem{align-items:center;border-radius:0;box-sizing:border-box;color:#000;color:var(--text_primary,var(--vkui--color_text_primary));display:flex;min-height:48px;overflow:hidden;padding:0 20px;text-decoration:none}.vkuiActionSheetItem,.vkuiActionSheetItem__after,.vkuiActionSheetItem__before,.vkuiActionSheetItem__container{position:relative;z-index:2}.vkuiActionSheetItem__after,.vkuiActionSheetItem__before{flex-shrink:0}.vkuiActionSheetItem__before{margin-left:-2px;margin-right:18px}.vkuiActionSheetItem__container{flex-grow:1;max-width:100%;padding:10px 0}.vkuiActionSheetItem--ellipsis{overflow:hidden;white-space:nowrap}.vkuiActionSheetItem__content{align-items:baseline;display:flex;justify-content:space-between;overflow:hidden}.vkuiActionSheetItem--ellipsis .vkuiActionSheetItem__content{justify-content:flex-start}.vkuiActionSheetItem__children{min-width:0;overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__subtitle{margin-top:2px;overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__meta,.vkuiActionSheetItem__subtitle{color:#818c99;color:var(--text_secondary,var(--vkui--color_text_secondary))}.vkuiActionSheetItem__meta{flex-shrink:0;margin-left:6px}.vkuiActionSheetItem__before{color:#2688eb;color:var(--action_sheet_action_foreground,var(--vkui--color_icon_accent))}.vkuiActionSheetItem--destructive .vkuiActionSheetItem__container:first-child{color:#e64646;color:var(--destructive,var(--vkui--color_text_negative))}.vkuiActionSheetItem--destructive .vkuiActionSheetItem__before{color:#e64646;color:var(--destructive,var(--vkui--color_icon_negative))}.vkuiActionSheetItem__radio{display:none}.vkuiActionSheetItem__marker{align-items:center;background-color:initial;color:#2688eb;color:var(--accent,var(--vkui--color_icon_accent));display:none;justify-content:center;margin-left:16px}.vkuiActionSheetItem__radio:checked~.vkuiActionSheetItem__marker{display:flex}.vkuiActionSheetItem--ios{background:#fff;background:var(--modal_card_background,var(--vkui--color_background_modal));border-radius:0;color:#2688eb;color:var(--action_sheet_action_foreground,var(--vkui--color_text_accent));min-height:56px;padding:14px 20px 14px 19px}.vkuiActionSheetItem--rich{color:#000;color:var(--text_primary,var(--vkui--color_text_primary))}.vkuiActionSheetItem--ios.vkuiActionSheetItem--destructive{color:#e64646;color:var(--destructive,var(--vkui--color_text_negative))}.vkuiActionSheetItem--ios:first-child{border-top-left-radius:14px;border-top-right-radius:14px}.vkuiActionSheetItem--ios:last-child,.vkuiActionSheetItem--ios:not(.vkuiActionSheetItem--desktop):nth-last-child(2){border-bottom-left-radius:14px;border-bottom-right-radius:14px}.vkuiActionSheetItem--ios:before{background-color:#fff;background-color:var(
110
110
  --modal_card_background,var(--vkui--color_background_modal)
111
111
  );content:"";height:100%;left:0;position:absolute;top:0;transition:opacity .15s ease-out,background-color .15s ease-out;width:100%;z-index:-1}.vkuiActionSheetItem--ios:after{background:rgba(0,0,0,.12);background:var(
112
112
  --action_sheet_separator,var(--vkui--color_separator_primary)
@@ -125,7 +125,7 @@
125
125
  var(--vkui--size_panel_header_height--regular)
126
126
  ))}.vkuiModalRoot__modal{box-sizing:border-box;height:100%;position:absolute;width:100%;z-index:1}@-webkit-keyframes vkui-animation-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes vkui-animation-fadeIn{0%{opacity:0}to{opacity:1}}.vkuiModalCard{align-items:flex-end;box-sizing:border-box;display:flex;height:100%;left:0;padding:8px;position:absolute;top:0;width:100%;z-index:1}.vkuiModalCard__in{margin-left:auto;margin-right:auto;-webkit-transform:translateY(calc(100% + 16px));transform:translateY(calc(100% + 16px));width:100%}.vkuiModalCard--ios .vkuiModalCard__in{max-width:414px;transition:-webkit-transform .34s cubic-bezier(.36,.66,.04,1);transition:transform .34s cubic-bezier(.36,.66,.04,1);transition:transform .34s cubic-bezier(.36,.66,.04,1),-webkit-transform .34s cubic-bezier(.36,.66,.04,1);transition:-webkit-transform .34s var(--ios-easing);transition:transform .34s var(--ios-easing);transition:transform .34s var(--ios-easing),-webkit-transform .34s var(--ios-easing)}.vkuiModalCard--android .vkuiModalCard__in,.vkuiModalCard--vkcom .vkuiModalCard__in{transition:-webkit-transform .34s cubic-bezier(.4,0,.2,1);transition:transform .34s cubic-bezier(.4,0,.2,1);transition:transform .34s cubic-bezier(.4,0,.2,1),-webkit-transform .34s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .34s var(--android-easing);transition:transform .34s var(--android-easing);transition:transform .34s var(--android-easing),-webkit-transform .34s var(--android-easing)}.vkuiModalCard--android .vkuiModalCard__in{max-width:440px}.vkuiModalCard--vkcom .vkuiModalCard__in{max-width:400px}.vkuiModalCard--desktop{align-items:center}.vkuiModalCard--desktop .vkuiModalCard__in{opacity:0;-webkit-transform:unset;transform:unset;transition:opacity .34s cubic-bezier(.4,0,.2,1);transition:opacity .34s var(--android-easing)}.vkuiModalRoot--touched .vkuiModalCard__in{transition:none}.vkuiModalPage{box-sizing:border-box;height:100%;overflow:hidden;pointer-events:none;position:absolute;width:100%;z-index:1}.vkuiModalPage--desktop{align-items:center;display:flex;justify-content:center}.vkuiModalPage__in-wrap{align-items:flex-end;bottom:0;display:flex;height:100%;left:0;margin-left:auto;margin-right:auto;pointer-events:auto;position:absolute;right:0;-webkit-transform:translateY(100%);transform:translateY(100%);transition:-webkit-transform .32s cubic-bezier(.4,0,.2,1);transition:transform .32s cubic-bezier(.4,0,.2,1);transition:transform .32s cubic-bezier(.4,0,.2,1),-webkit-transform .32s cubic-bezier(.4,0,.2,1);transition:-webkit-transform .32s var(--android-easing);transition:transform .32s var(--android-easing);transition:transform .32s var(--android-easing),-webkit-transform .32s var(--android-easing);width:100%}.vkuiModalPage--ios .vkuiModalPage__in-wrap{transition:-webkit-transform .4s cubic-bezier(.36,.66,.04,1);transition:transform .4s cubic-bezier(.36,.66,.04,1);transition:transform .4s cubic-bezier(.36,.66,.04,1),-webkit-transform .4s cubic-bezier(.36,.66,.04,1);transition:-webkit-transform .4s var(--ios-easing);transition:transform .4s var(--ios-easing);transition:transform .4s var(--ios-easing),-webkit-transform .4s var(--ios-easing)}.vkuiModalPage--desktop .vkuiModalPage__in-wrap{align-items:normal;height:auto;margin:32px 56px;max-height:640px;opacity:0;position:relative;-webkit-transform:none;transform:none;transition:opacity .34s cubic-bezier(.4,0,.2,1);transition:opacity .34s var(--android-easing)}@media (max-height:672px){.vkuiModalPage--desktop .vkuiModalPage__in-wrap{max-height:calc(100% - 32px * 2)}}.vkuiModalPage--s .vkuiModalPage__in-wrap{max-width:420px;max-width:var(--vkui--size_popup_small--regular,420px)}.vkuiModalPage--m .vkuiModalPage__in-wrap{max-width:680px;max-width:var(--vkui--size_popup_medium--regular,680px)}.vkuiModalPage--l .vkuiModalPage__in-wrap{max-width:880px;max-width:var(--vkui--size_popup_large--regular,880px)}.vkuiModalPage--vkcom .vkuiModalPage__in-wrap{max-width:448px}.vkuiModalPage__in{background-color:#fff;background-color:var(
127
127
  --background_content,var(--vkui--color_background_modal)
128
- );border-top-left-radius:12px;border-top-left-radius:var(--vkui--size_border_radius_paper--regular,12px);border-top-right-radius:12px;border-top-right-radius:var(--vkui--size_border_radius_paper--regular,12px);box-sizing:border-box;display:flex;flex-direction:column;height:100%;overflow:visible;position:relative;width:100%}.vkuiModalPage--desktop .vkuiModalPage__in{border-bottom-left-radius:12px;border-bottom-left-radius:var(--vkui--size_border_radius_paper--regular,12px);border-bottom-right-radius:12px;border-bottom-right-radius:var(--vkui--size_border_radius_paper--regular,12px);box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3,0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08));height:auto}.vkuiModalPage__header{width:100%}.vkuiModalPage__content-wrap{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;display:flex;flex-direction:column;overflow:hidden;position:relative}.vkuiModalPage__content{box-sizing:border-box;height:100%;overflow-x:hidden;overflow-y:hidden}.vkuiModalPage--desktop .vkuiModalPage__content,.vkuiModalRoot__modal--expandable .vkuiModalPage__content{-webkit-overflow-scrolling:touch;overflow-y:auto}.vkuiModalPage__content-in{padding-bottom:0;padding-bottom:var(--safe-area-inset-bottom);position:relative}.vkuiModalPage__footer{background-color:#fff;background-color:var(
128
+ );border-top-left-radius:12px;border-top-left-radius:var(--vkui--size_border_radius_paper--regular,12px);border-top-right-radius:12px;border-top-right-radius:var(--vkui--size_border_radius_paper--regular,12px);box-sizing:border-box;display:flex;flex-direction:column;height:100%;overflow:visible;position:relative;width:100%}.vkuiModalPage--desktop .vkuiModalPage__in{border-bottom-left-radius:12px;border-bottom-left-radius:var(--vkui--size_border_radius_paper--regular,12px);border-bottom-right-radius:12px;border-bottom-right-radius:var(--vkui--size_border_radius_paper--regular,12px);box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3,0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08));height:auto}.vkuiModalPage__header{width:100%}.vkuiModalPage__content-wrap{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;height:100%;overflow:hidden;position:relative}.vkuiModalPage__content{box-sizing:border-box;height:100%;overflow-x:hidden;overflow-y:hidden}.vkuiModalPage--desktop .vkuiModalPage__content,.vkuiModalRoot__modal--expandable .vkuiModalPage__content{-webkit-overflow-scrolling:touch;overflow-y:auto}.vkuiModalPage__content-in{padding-bottom:0;padding-bottom:var(--safe-area-inset-bottom);position:relative}.vkuiModalPage__footer{background-color:#fff;background-color:var(
129
129
  --background_content,var(--vkui--color_background_modal)
130
130
  );position:relative;z-index:10}.vkuiModalRoot--touched .vkuiModalPage__in-wrap{transition:none}.vkuiModalRoot--switching .vkuiModalPage__in-wrap{pointer-events:none}.vkuiModalRoot__modal--collapsed .vkuiModalPage__content,.vkuiModalRoot__modal--dragging .vkuiModalPage__content{overflow:hidden;touch-action:pan-y}.vkuiModalRoot--touched .vkuiModalPage__footer{transition:none}.vkuiModalDismissButton{box-sizing:border-box;color:#fff;color:var(--white,var(--vkui--color_icon_contrast));height:56px;justify-content:center;padding:18px;position:absolute;right:-56px;top:0;transition:opacity .15s ease-out;width:56px}.vkuiModalDismissButton:before{background:rgba(0,0,0,.4);background:var(--vkui--color_overlay_primary,rgba(0,0,0,.4));border-radius:50%;bottom:14px;content:"";display:block;left:14px;position:absolute;right:14px;top:14px}.vkuiModalDismissButton .vkuiIcon{-webkit-transform:translateX(0);transform:translateX(0)}.vkuiModalDismissButton--hover.vkuiModalDismissButton:before{background:rgba(0,0,0,.44);background:var(--vkui--color_overlay_primary--hover,rgba(0,0,0,.44))}.vkuiModalDismissButton--active.vkuiModalDismissButton:before{background:rgba(0,0,0,.48);background:var(--vkui--color_overlay_primary--active,rgba(0,0,0,.48))}.vkuiModalPageHeader{--safe-area-inset-top:0;position:relative;z-index:2}.vkuiModalPageHeader--withGaps{padding-left:4px;padding-right:4px}.vkuiModalPageHeader--desktop.vkuiModalPageHeader--withGaps{padding-left:8px;padding-right:8px}.vkuiModalPageHeader .vkuiIcon--cancel_24,.vkuiModalPageHeader .vkuiIcon--dismiss_24{color:#99a2ad;color:var(--icon_secondary,var(--vkui--color_icon_secondary))}.vkuiButtonGroup{display:inline-flex;max-width:100%}.vkuiButtonGroup--stretched{display:flex;width:100%}.vkuiButtonGroup--mode-vertical{flex-direction:column}.vkuiButtonGroup--mode-horizontal{flex-direction:row}.vkuiButtonGroup--mode-vertical.vkuiButtonGroup--gap-space>:not(:first-child){margin-top:1px;margin-top:var(--vkui--size_button_group_gap_space--regular,1px)}.vkuiButtonGroup--mode-vertical.vkuiButtonGroup--gap-s>:not(:first-child){margin-top:8px;margin-top:var(--vkui--size_button_group_gap_small--regular,8px)}.vkuiButtonGroup--mode-vertical.vkuiButtonGroup--gap-m>:not(:first-child){margin-top:12px;margin-top:var(--vkui--size_button_group_gap_medium--regular,12px)}.vkuiButtonGroup--mode-horizontal>:not(.vkuiButtonGroup){min-width:0}.vkuiButtonGroup--mode-horizontal.vkuiButtonGroup--gap-space>:not(:last-child){margin-right:1px;margin-right:var(--vkui--size_button_group_gap_space--regular,1px)}.vkuiButtonGroup--mode-horizontal.vkuiButtonGroup--gap-s>:not(:last-child){margin-right:8px;margin-right:var(--vkui--size_button_group_gap_small--regular,8px)}.vkuiButtonGroup--mode-horizontal.vkuiButtonGroup--gap-m>:not(:last-child){margin-right:12px;margin-right:var(--vkui--size_button_group_gap_medium--regular,12px)}.vkuiButtonGroup--align-left{align-items:flex-start}.vkuiButtonGroup--align-center{align-items:center}.vkuiButtonGroup--align-right{align-items:flex-end}.vkuiBadge{border-radius:50%;display:block;flex-grow:0;flex-shrink:0;height:6px;width:6px}.vkuiBadge--new{background-color:#5c9ce6;background-color:var(--blue_200,var(--vkui--color_icon_accent))}.vkuiBadge--prominent{background-color:#ff3347;background-color:var(
131
131
  --counter_prominent_background,var(--vkui--color_icon_negative)