@vkontakte/vkui 4.37.4 → 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 (222) 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/hooks/useWaitTransitionFinish.js +14 -2
  199. package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
  200. package/dist/index.d.ts +1 -0
  201. package/dist/index.js +4 -0
  202. package/dist/index.js.map +1 -1
  203. package/dist/lib/accessibility.d.ts +6 -1
  204. package/dist/lib/accessibility.js +25 -0
  205. package/dist/lib/accessibility.js.map +1 -1
  206. package/dist/lib/calendar.d.ts +2 -2
  207. package/dist/vkui.css +2 -2
  208. package/dist/vkui.css.map +1 -1
  209. package/package.json +15 -12
  210. package/src/components/ActionSheetItem/ActionSheetItem.css +0 -3
  211. package/src/components/ActionSheetItem/ActionSheetItem.tsx +6 -3
  212. package/src/components/FocusTrap/FocusTrap.tsx +0 -1
  213. package/src/components/Group/Group.tsx +19 -0
  214. package/src/components/ModalPage/ModalPage.css +1 -2
  215. package/src/components/PanelHeaderContext/PanelHeaderContext.tsx +3 -1
  216. package/src/components/Tabs/Readme.md +34 -3
  217. package/src/components/Tabs/Tabs.tsx +115 -1
  218. package/src/components/TabsItem/TabsItem.tsx +26 -0
  219. package/src/hooks/useWaitTransitionFinish.ts +14 -2
  220. package/src/index.ts +1 -0
  221. package/src/lib/accessibility.ts +30 -0
  222. 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
  import "./Tabs.css";
12
15
  var warn = warnOnce("Tabs");
13
16
  export var TabsModeContext = /*#__PURE__*/React.createContext({
@@ -21,10 +24,18 @@ var TabsComponent = function TabsComponent(_ref) {
21
24
  mode = _ref$mode === void 0 ? "default" : _ref$mode,
22
25
  getRootRef = _ref.getRootRef,
23
26
  sizeX = _ref.sizeX,
27
+ _ref$role = _ref.role,
28
+ role = _ref$role === void 0 ? "tablist" : _ref$role,
24
29
  restProps = _objectWithoutProperties(_ref, _excluded);
25
30
 
26
31
  var platform = usePlatform();
27
32
 
33
+ var _useDOM = useDOM(),
34
+ document = _useDOM.document;
35
+
36
+ var isTabFlow = role === "tablist";
37
+ var tabsRef = React.useRef(null);
38
+
28
39
  if ((mode === "buttons" || mode === "segmented") && process.env.NODE_ENV === "development") {
29
40
  var expectedValueText = mode === "buttons" ? "\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \"secondary\"" : "компонент SegmentedControl";
30
41
  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));
@@ -39,12 +50,122 @@ var TabsComponent = function TabsComponent(_ref) {
39
50
  }
40
51
 
41
52
  var withGaps = mode === "accent" || mode === "secondary";
53
+
54
+ var getTabEls = function getTabEls() {
55
+ if (!tabsRef.current) {
56
+ return [];
57
+ }
58
+
59
+ return Array.from( // eslint-disable-next-line no-restricted-properties
60
+ tabsRef.current.querySelectorAll("[role=tab]:not([disabled])"));
61
+ };
62
+
63
+ var handleDocumentKeydown = function handleDocumentKeydown(event) {
64
+ if (!document || !tabsRef.current || !isTabFlow) {
65
+ return;
66
+ }
67
+
68
+ var key = pressedKey(event);
69
+
70
+ switch (key) {
71
+ case "ArrowLeft":
72
+ case "ArrowRight":
73
+ case "End":
74
+ case "Home":
75
+ {
76
+ var tabEls = getTabEls();
77
+ var currentFocusedElIndex = tabEls.findIndex(function (el) {
78
+ return document.activeElement === el;
79
+ });
80
+
81
+ if (currentFocusedElIndex === -1) {
82
+ return;
83
+ }
84
+
85
+ var nextIndex = 0;
86
+
87
+ if (key === "Home") {
88
+ nextIndex = 0;
89
+ } else if (key === "End") {
90
+ nextIndex = tabEls.length - 1;
91
+ } else {
92
+ var offset = key === "ArrowRight" ? 1 : -1;
93
+ nextIndex = currentFocusedElIndex + offset;
94
+ }
95
+
96
+ var nextTabEl = tabEls[nextIndex];
97
+
98
+ if (nextTabEl) {
99
+ event.preventDefault();
100
+ nextTabEl.focus();
101
+ }
102
+
103
+ break;
104
+ }
105
+
106
+ /*
107
+ В JAWS и NVDA стрелка вниз активирует контент.
108
+ Это не прописано в стандартах, но по ссылке ниже это рекомендуется делать.
109
+ https://inclusive-components.design/tabbed-interfaces/
110
+ */
111
+
112
+ case "ArrowDown":
113
+ {
114
+ var _tabEls = getTabEls();
115
+
116
+ var currentFocusedEl = _tabEls.find(function (el) {
117
+ return document.activeElement === el;
118
+ });
119
+
120
+ if (!currentFocusedEl || currentFocusedEl.getAttribute("aria-selected") !== "true") {
121
+ return;
122
+ }
123
+
124
+ var relatedContentElId = currentFocusedEl.getAttribute("aria-controls");
125
+
126
+ if (!relatedContentElId) {
127
+ return;
128
+ } // eslint-disable-next-line no-restricted-properties
129
+
130
+
131
+ var relatedContentEl = document.getElementById(relatedContentElId);
132
+
133
+ if (!relatedContentEl) {
134
+ return;
135
+ }
136
+
137
+ event.preventDefault();
138
+ relatedContentEl.focus();
139
+ break;
140
+ }
141
+
142
+ case "Space":
143
+ case "Enter":
144
+ {
145
+ var _tabEls2 = getTabEls();
146
+
147
+ var _currentFocusedEl = _tabEls2.find(function (el) {
148
+ return document.activeElement === el;
149
+ });
150
+
151
+ if (_currentFocusedEl) {
152
+ _currentFocusedEl.click();
153
+ }
154
+ }
155
+ }
156
+ };
157
+
158
+ useGlobalEventListener(document, "keydown", handleDocumentKeydown, {
159
+ capture: true
160
+ });
42
161
  return createScopedElement("div", _extends({}, restProps, {
43
162
  ref: getRootRef,
44
163
  vkuiClass: classNames("Tabs", (platform === IOS || platform === VKCOM) && "Tabs--".concat(platform), "Tabs--".concat(mode), withGaps && "Tabs--withGaps", // TODO v5.0.0 новая адаптивность
45
- "Tabs--sizeX-".concat(sizeX))
164
+ "Tabs--sizeX-".concat(sizeX)),
165
+ role: role
46
166
  }), createScopedElement("div", {
47
- vkuiClass: "Tabs__in"
167
+ vkuiClass: "Tabs__in",
168
+ ref: tabsRef
48
169
  }, createScopedElement(TabsModeContext.Provider, {
49
170
  value: {
50
171
  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;AACA;AAgBA,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,11 +11,13 @@ 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
+ import { warnOnce } from "../../lib/warnOnce";
14
15
  import "./TabsItem.css";
15
-
16
+ var warn = warnOnce("TabsItem");
16
17
  /**
17
18
  * @see https://vkcom.github.io/VKUI/#/TabsItem
18
19
  */
20
+
19
21
  export var TabsItem = function TabsItem(_ref) {
20
22
  var before = _ref.before,
21
23
  children = _ref.children,
@@ -23,6 +25,9 @@ export var TabsItem = function TabsItem(_ref) {
23
25
  after = _ref.after,
24
26
  _ref$selected = _ref.selected,
25
27
  selected = _ref$selected === void 0 ? false : _ref$selected,
28
+ _ref$role = _ref.role,
29
+ role = _ref$role === void 0 ? "tab" : _ref$role,
30
+ tabIndexProp = _ref.tabIndex,
26
31
  restProps = _objectWithoutProperties(_ref, _excluded);
27
32
 
28
33
  var platform = usePlatform();
@@ -35,6 +40,7 @@ export var TabsItem = function TabsItem(_ref) {
35
40
  withGaps = _React$useContext.withGaps;
36
41
 
37
42
  var statusComponent = null;
43
+ var isTabFlow = role === "tab";
38
44
 
39
45
  if (status) {
40
46
  statusComponent = typeof status === "number" ? createScopedElement(Subhead, {
@@ -46,13 +52,30 @@ export var TabsItem = function TabsItem(_ref) {
46
52
  }, status);
47
53
  }
48
54
 
55
+ if (process.env.NODE_ENV === "development" && isTabFlow) {
56
+ if (!restProps["aria-controls"]) {
57
+ 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");
58
+ } else if (!restProps["id"]) {
59
+ 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");
60
+ }
61
+ }
62
+
63
+ var tabIndex = tabIndexProp;
64
+
65
+ if (isTabFlow && tabIndex === undefined) {
66
+ tabIndex = selected ? 0 : -1;
67
+ }
68
+
49
69
  return createScopedElement(Tappable, _extends({}, restProps, {
50
70
  vkuiClass: classNames("TabsItem", (platform === IOS || platform === VKCOM) && "TabsItem--".concat(platform), mode && "TabsItem--".concat(mode), selected && "TabsItem--selected", // TODO v5.0.0 новая адаптивность
51
71
  sizeY && "TabsItem--sizeY-".concat(sizeY), withGaps && "TabsItem--withGaps"),
52
72
  hoverMode: "TabsItem--hover",
53
73
  activeMode: "TabsItem--active",
54
74
  focusVisibleMode: mode === "segmented" ? "outside" : "inside",
55
- hasActive: mode === "segmented"
75
+ hasActive: mode === "segmented",
76
+ role: role,
77
+ "aria-selected": selected,
78
+ tabIndex: tabIndex
56
79
  }), before && createScopedElement("div", {
57
80
  vkuiClass: "TabsItem__before"
58
81
  }, 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;AACA;;AA4BA;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":"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"}
@@ -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 {};
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { useDOM } from "../lib/dom";
3
+ import { noop } from "../lib/utils";
3
4
  import { transitionEvent } from "../lib/supportEvents";
4
5
  export var useWaitTransitionFinish = function useWaitTransitionFinish() {
5
6
  var timeoutRef = React.useRef(null);
@@ -7,11 +8,22 @@ export var useWaitTransitionFinish = function useWaitTransitionFinish() {
7
8
  var _useDOM = useDOM(),
8
9
  document = _useDOM.document;
9
10
 
11
+ var detach = React.useRef(noop);
12
+ var remove = React.useCallback(function () {
13
+ detach.current();
14
+ detach.current = noop;
15
+ }, []);
10
16
  var waitTransitionFinish = React.useCallback(function (element, eventHandler, durationFallback) {
11
17
  if (element) {
12
18
  if (!(document !== null && document !== void 0 && document.hidden) && transitionEvent.supported && transitionEvent.name) {
13
- element.removeEventListener(transitionEvent.name, eventHandler);
19
+ remove();
14
20
  element.addEventListener(transitionEvent.name, eventHandler);
21
+
22
+ detach.current = function () {
23
+ if (transitionEvent.name) {
24
+ element.removeEventListener(transitionEvent.name, eventHandler);
25
+ }
26
+ };
15
27
  } else {
16
28
  if (timeoutRef !== null && timeoutRef !== void 0 && timeoutRef.current) {
17
29
  clearTimeout(timeoutRef.current);
@@ -20,7 +32,7 @@ export var useWaitTransitionFinish = function useWaitTransitionFinish() {
20
32
  timeoutRef.current = setTimeout(eventHandler, durationFallback);
21
33
  }
22
34
  }
23
- }, [document, timeoutRef]);
35
+ }, [document, remove, timeoutRef]);
24
36
  return {
25
37
  waitTransitionFinish: waitTransitionFinish
26
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useWaitTransitionFinish.js","names":["React","useDOM","transitionEvent","useWaitTransitionFinish","timeoutRef","useRef","document","waitTransitionFinish","useCallback","element","eventHandler","durationFallback","hidden","supported","name","removeEventListener","addEventListener","current","clearTimeout","setTimeout"],"sources":["../../../src/hooks/useWaitTransitionFinish.ts"],"sourcesContent":["import * as React from \"react\";\nimport { useDOM } from \"../lib/dom\";\nimport { transitionEvent } from \"../lib/supportEvents\";\n\nexport const useWaitTransitionFinish = () => {\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const { document } = useDOM();\n\n const waitTransitionFinish = React.useCallback(\n (\n element: HTMLElement | null,\n eventHandler: VoidFunction,\n durationFallback: number\n ) => {\n if (element) {\n if (\n !document?.hidden &&\n transitionEvent.supported &&\n transitionEvent.name\n ) {\n element.removeEventListener(transitionEvent.name, eventHandler);\n element.addEventListener(transitionEvent.name, eventHandler);\n } else {\n if (timeoutRef?.current) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(eventHandler, durationFallback);\n }\n }\n },\n [document, timeoutRef]\n );\n\n return {\n waitTransitionFinish,\n };\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,MAAT;AACA,SAASC,eAAT;AAEA,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAM;EAC3C,IAAMC,UAAU,GAAGJ,KAAK,CAACK,MAAN,CAAmD,IAAnD,CAAnB;;EACA,cAAqBJ,MAAM,EAA3B;EAAA,IAAQK,QAAR,WAAQA,QAAR;;EAEA,IAAMC,oBAAoB,GAAGP,KAAK,CAACQ,WAAN,CAC3B,UACEC,OADF,EAEEC,YAFF,EAGEC,gBAHF,EAIK;IACH,IAAIF,OAAJ,EAAa;MACX,IACE,EAACH,QAAD,aAACA,QAAD,eAACA,QAAQ,CAAEM,MAAX,KACAV,eAAe,CAACW,SADhB,IAEAX,eAAe,CAACY,IAHlB,EAIE;QACAL,OAAO,CAACM,mBAAR,CAA4Bb,eAAe,CAACY,IAA5C,EAAkDJ,YAAlD;QACAD,OAAO,CAACO,gBAAR,CAAyBd,eAAe,CAACY,IAAzC,EAA+CJ,YAA/C;MACD,CAPD,MAOO;QACL,IAAIN,UAAJ,aAAIA,UAAJ,eAAIA,UAAU,CAAEa,OAAhB,EAAyB;UACvBC,YAAY,CAACd,UAAU,CAACa,OAAZ,CAAZ;QACD;;QACDb,UAAU,CAACa,OAAX,GAAqBE,UAAU,CAACT,YAAD,EAAeC,gBAAf,CAA/B;MACD;IACF;EACF,CArB0B,EAsB3B,CAACL,QAAD,EAAWF,UAAX,CAtB2B,CAA7B;EAyBA,OAAO;IACLG,oBAAoB,EAApBA;EADK,CAAP;AAGD,CAhCM"}
1
+ {"version":3,"file":"useWaitTransitionFinish.js","names":["React","useDOM","noop","transitionEvent","useWaitTransitionFinish","timeoutRef","useRef","document","detach","remove","useCallback","current","waitTransitionFinish","element","eventHandler","durationFallback","hidden","supported","name","addEventListener","removeEventListener","clearTimeout","setTimeout"],"sources":["../../../src/hooks/useWaitTransitionFinish.ts"],"sourcesContent":["import * as React from \"react\";\nimport { useDOM } from \"../lib/dom\";\nimport { noop } from \"../lib/utils\";\nimport { transitionEvent } from \"../lib/supportEvents\";\n\nexport const useWaitTransitionFinish = () => {\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const { document } = useDOM();\n const detach = React.useRef(noop);\n\n const remove = React.useCallback(() => {\n detach.current();\n detach.current = noop;\n }, []);\n\n const waitTransitionFinish = React.useCallback(\n (\n element: HTMLElement | null,\n eventHandler: VoidFunction,\n durationFallback: number\n ) => {\n if (element) {\n if (\n !document?.hidden &&\n transitionEvent.supported &&\n transitionEvent.name\n ) {\n remove();\n element.addEventListener(transitionEvent.name, eventHandler);\n detach.current = () => {\n if (transitionEvent.name) {\n element.removeEventListener(transitionEvent.name, eventHandler);\n }\n };\n } else {\n if (timeoutRef?.current) {\n clearTimeout(timeoutRef.current);\n }\n timeoutRef.current = setTimeout(eventHandler, durationFallback);\n }\n }\n },\n [document, remove, timeoutRef]\n );\n\n return {\n waitTransitionFinish,\n };\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,MAAT;AACA,SAASC,IAAT;AACA,SAASC,eAAT;AAEA,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAM;EAC3C,IAAMC,UAAU,GAAGL,KAAK,CAACM,MAAN,CAAmD,IAAnD,CAAnB;;EACA,cAAqBL,MAAM,EAA3B;EAAA,IAAQM,QAAR,WAAQA,QAAR;;EACA,IAAMC,MAAM,GAAGR,KAAK,CAACM,MAAN,CAAaJ,IAAb,CAAf;EAEA,IAAMO,MAAM,GAAGT,KAAK,CAACU,WAAN,CAAkB,YAAM;IACrCF,MAAM,CAACG,OAAP;IACAH,MAAM,CAACG,OAAP,GAAiBT,IAAjB;EACD,CAHc,EAGZ,EAHY,CAAf;EAKA,IAAMU,oBAAoB,GAAGZ,KAAK,CAACU,WAAN,CAC3B,UACEG,OADF,EAEEC,YAFF,EAGEC,gBAHF,EAIK;IACH,IAAIF,OAAJ,EAAa;MACX,IACE,EAACN,QAAD,aAACA,QAAD,eAACA,QAAQ,CAAES,MAAX,KACAb,eAAe,CAACc,SADhB,IAEAd,eAAe,CAACe,IAHlB,EAIE;QACAT,MAAM;QACNI,OAAO,CAACM,gBAAR,CAAyBhB,eAAe,CAACe,IAAzC,EAA+CJ,YAA/C;;QACAN,MAAM,CAACG,OAAP,GAAiB,YAAM;UACrB,IAAIR,eAAe,CAACe,IAApB,EAA0B;YACxBL,OAAO,CAACO,mBAAR,CAA4BjB,eAAe,CAACe,IAA5C,EAAkDJ,YAAlD;UACD;QACF,CAJD;MAKD,CAZD,MAYO;QACL,IAAIT,UAAJ,aAAIA,UAAJ,eAAIA,UAAU,CAAEM,OAAhB,EAAyB;UACvBU,YAAY,CAAChB,UAAU,CAACM,OAAZ,CAAZ;QACD;;QACDN,UAAU,CAACM,OAAX,GAAqBW,UAAU,CAACR,YAAD,EAAeC,gBAAf,CAA/B;MACD;IACF;EACF,CA1B0B,EA2B3B,CAACR,QAAD,EAAWE,MAAX,EAAmBJ,UAAnB,CA3B2B,CAA7B;EA8BA,OAAO;IACLO,oBAAoB,EAApBA;EADK,CAAP;AAGD,CA3CM"}
@@ -300,6 +300,7 @@ export { ViewWidth, ViewHeight, SizeType, } from "./components/AdaptivityProvide
300
300
  export { calcInitialsAvatarColor } from "./helpers/avatar";
301
301
  export { Popper } from "./components/Popper/Popper";
302
302
  export type { PopperProps } from "./components/Popper/Popper";
303
+ export { CustomScrollView } from "./components/CustomScrollView/CustomScrollView";
303
304
  /**
304
305
  * Types
305
306
  */
@@ -194,4 +194,8 @@ export { getClassName } from "./helpers/getClassName";
194
194
  export { ViewWidth, ViewHeight, SizeType } from "./components/AdaptivityProvider/AdaptivityContext";
195
195
  export { calcInitialsAvatarColor } from "./helpers/avatar";
196
196
  export { Popper } from "./components/Popper/Popper";
197
+ export { CustomScrollView } from "./components/CustomScrollView/CustomScrollView";
198
+ /**
199
+ * Types
200
+ */
197
201
  //# sourceMappingURL=index.js.map