@alfalab/core-components-tabs 7.1.1 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/components/primary-tablist/Component.d.ts +2 -4
  2. package/components/primary-tablist/Component.desktop.js +12 -4
  3. package/components/primary-tablist/Component.js +42 -21
  4. package/components/primary-tablist/Component.mobile.d.ts +1 -1
  5. package/components/primary-tablist/Component.mobile.js +13 -5
  6. package/components/primary-tablist/Component.responsive.d.ts +1 -1
  7. package/components/primary-tablist/Component.responsive.js +14 -7
  8. package/components/primary-tablist/index.css +53 -22
  9. package/components/primary-tablist/mobile.css +99 -69
  10. package/components/scrollable-container/Component.d.ts +1 -1
  11. package/components/scrollable-container/Component.js +4 -2
  12. package/components/scrollable-container/index.css +5 -5
  13. package/components/secondary-tablist/Component.d.ts +2 -6
  14. package/components/secondary-tablist/Component.desktop.d.ts +1 -1
  15. package/components/secondary-tablist/Component.desktop.js +3 -3
  16. package/components/secondary-tablist/Component.js +3 -3
  17. package/components/secondary-tablist/Component.mobile.d.ts +1 -1
  18. package/components/secondary-tablist/Component.mobile.js +4 -4
  19. package/components/secondary-tablist/Component.responsive.js +4 -4
  20. package/components/secondary-tablist/index.css +11 -11
  21. package/components/secondary-tablist/mobile.css +65 -57
  22. package/components/tab/Component.js +1 -1
  23. package/components/tab/index.css +3 -3
  24. package/components/tabs/Component.d.ts +1 -1
  25. package/components/tabs/Component.desktop.d.ts +1 -1
  26. package/components/tabs/Component.desktop.js +13 -5
  27. package/components/tabs/Component.js +2 -2
  28. package/components/tabs/Component.mobile.d.ts +2 -2
  29. package/components/tabs/Component.mobile.js +13 -5
  30. package/components/tabs/Component.responsive.d.ts +1 -1
  31. package/components/tabs/Component.responsive.js +13 -6
  32. package/components/title/Component.d.ts +8 -0
  33. package/components/title/Component.js +27 -0
  34. package/components/title/index.d.ts +1 -0
  35. package/components/title/index.js +12 -0
  36. package/cssm/components/primary-tablist/Component.d.ts +2 -4
  37. package/cssm/components/primary-tablist/Component.desktop.js +11 -3
  38. package/cssm/components/primary-tablist/Component.js +42 -21
  39. package/cssm/components/primary-tablist/Component.mobile.d.ts +1 -1
  40. package/cssm/components/primary-tablist/Component.mobile.js +11 -3
  41. package/cssm/components/primary-tablist/Component.responsive.d.ts +1 -1
  42. package/cssm/components/primary-tablist/Component.responsive.js +13 -6
  43. package/cssm/components/primary-tablist/index.module.css +33 -2
  44. package/cssm/components/scrollable-container/Component.d.ts +1 -1
  45. package/cssm/components/scrollable-container/Component.js +3 -1
  46. package/cssm/components/secondary-tablist/Component.d.ts +2 -6
  47. package/cssm/components/secondary-tablist/Component.desktop.d.ts +1 -1
  48. package/cssm/components/secondary-tablist/Component.desktop.js +2 -2
  49. package/cssm/components/secondary-tablist/Component.js +3 -3
  50. package/cssm/components/secondary-tablist/Component.mobile.d.ts +1 -1
  51. package/cssm/components/secondary-tablist/Component.mobile.js +2 -2
  52. package/cssm/components/secondary-tablist/Component.responsive.js +3 -3
  53. package/cssm/components/tabs/Component.d.ts +1 -1
  54. package/cssm/components/tabs/Component.desktop.d.ts +1 -1
  55. package/cssm/components/tabs/Component.desktop.js +11 -3
  56. package/cssm/components/tabs/Component.js +2 -2
  57. package/cssm/components/tabs/Component.mobile.d.ts +2 -2
  58. package/cssm/components/tabs/Component.mobile.js +11 -3
  59. package/cssm/components/tabs/Component.responsive.d.ts +1 -1
  60. package/cssm/components/tabs/Component.responsive.js +11 -4
  61. package/cssm/components/title/Component.d.ts +8 -0
  62. package/cssm/components/title/Component.js +27 -0
  63. package/cssm/components/title/index.d.ts +1 -0
  64. package/cssm/components/title/index.js +12 -0
  65. package/cssm/desktop.d.ts +2 -1
  66. package/cssm/desktop.js +13 -4
  67. package/cssm/hooks/use-collapsible-elements.d.ts +8 -0
  68. package/cssm/hooks/use-collapsible-elements.js +56 -0
  69. package/cssm/hooks/use-tablist-titles.d.ts +28 -0
  70. package/cssm/hooks/use-tablist-titles.js +45 -0
  71. package/{esm/useTabs.d.ts → cssm/hooks/use-tabs.d.ts} +1 -1
  72. package/cssm/{useTabs.js → hooks/use-tabs.js} +0 -0
  73. package/cssm/index.d.ts +1 -1
  74. package/cssm/index.js +12 -5
  75. package/cssm/mobile.d.ts +1 -1
  76. package/cssm/mobile.js +12 -4
  77. package/cssm/responsive.d.ts +2 -1
  78. package/cssm/responsive.js +13 -5
  79. package/cssm/synthetic-events.d.ts +6 -0
  80. package/cssm/synthetic-events.js +47 -0
  81. package/cssm/{tslib.es6-ce870b46.d.ts → tslib.es6-0857346e.d.ts} +8 -4
  82. package/cssm/{tslib.es6-ce870b46.js → tslib.es6-0857346e.js} +13 -1
  83. package/cssm/typings.d.ts +13 -2
  84. package/desktop.d.ts +2 -1
  85. package/desktop.js +15 -6
  86. package/esm/components/primary-tablist/Component.d.ts +2 -4
  87. package/esm/components/primary-tablist/Component.desktop.js +12 -4
  88. package/esm/components/primary-tablist/Component.js +43 -22
  89. package/esm/components/primary-tablist/Component.mobile.d.ts +1 -1
  90. package/esm/components/primary-tablist/Component.mobile.js +13 -5
  91. package/esm/components/primary-tablist/Component.responsive.d.ts +1 -1
  92. package/esm/components/primary-tablist/Component.responsive.js +14 -7
  93. package/esm/components/primary-tablist/index.css +53 -22
  94. package/esm/components/primary-tablist/mobile.css +99 -69
  95. package/esm/components/scrollable-container/Component.d.ts +1 -1
  96. package/esm/components/scrollable-container/Component.js +4 -2
  97. package/esm/components/scrollable-container/index.css +5 -5
  98. package/esm/components/secondary-tablist/Component.d.ts +2 -6
  99. package/esm/components/secondary-tablist/Component.desktop.d.ts +1 -1
  100. package/esm/components/secondary-tablist/Component.desktop.js +3 -3
  101. package/esm/components/secondary-tablist/Component.js +2 -2
  102. package/esm/components/secondary-tablist/Component.mobile.d.ts +1 -1
  103. package/esm/components/secondary-tablist/Component.mobile.js +4 -4
  104. package/esm/components/secondary-tablist/Component.responsive.js +4 -4
  105. package/esm/components/secondary-tablist/index.css +11 -11
  106. package/esm/components/secondary-tablist/mobile.css +65 -57
  107. package/esm/components/tab/Component.js +1 -1
  108. package/esm/components/tab/index.css +3 -3
  109. package/esm/components/tabs/Component.d.ts +1 -1
  110. package/esm/components/tabs/Component.desktop.d.ts +1 -1
  111. package/esm/components/tabs/Component.desktop.js +13 -5
  112. package/esm/components/tabs/Component.js +2 -2
  113. package/esm/components/tabs/Component.mobile.d.ts +2 -2
  114. package/esm/components/tabs/Component.mobile.js +13 -5
  115. package/esm/components/tabs/Component.responsive.d.ts +1 -1
  116. package/esm/components/tabs/Component.responsive.js +13 -6
  117. package/esm/components/title/Component.d.ts +8 -0
  118. package/esm/components/title/Component.js +18 -0
  119. package/esm/components/title/index.d.ts +1 -0
  120. package/esm/components/title/index.js +4 -0
  121. package/esm/desktop.d.ts +2 -1
  122. package/esm/desktop.js +13 -5
  123. package/esm/hooks/use-collapsible-elements.d.ts +8 -0
  124. package/esm/hooks/use-collapsible-elements.js +52 -0
  125. package/esm/hooks/use-tablist-titles.d.ts +28 -0
  126. package/esm/hooks/use-tablist-titles.js +41 -0
  127. package/{modern/useTabs.d.ts → esm/hooks/use-tabs.d.ts} +1 -1
  128. package/esm/{useTabs.js → hooks/use-tabs.js} +0 -0
  129. package/esm/index.d.ts +1 -1
  130. package/esm/index.js +13 -6
  131. package/esm/index.module-01d292c0.js +4 -0
  132. package/esm/index.module-16a12061.js +4 -0
  133. package/esm/mobile.d.ts +1 -1
  134. package/esm/mobile.js +13 -5
  135. package/esm/responsive.d.ts +2 -1
  136. package/esm/responsive.js +13 -6
  137. package/esm/synthetic-events.d.ts +6 -0
  138. package/esm/synthetic-events.js +41 -0
  139. package/{tslib.es6-fcb75541.d.ts → esm/tslib.es6-e74e5c93.d.ts} +8 -4
  140. package/esm/{tslib.es6-444ae64e.js → tslib.es6-e74e5c93.js} +13 -2
  141. package/esm/typings.d.ts +13 -2
  142. package/hooks/use-collapsible-elements.d.ts +8 -0
  143. package/hooks/use-collapsible-elements.js +56 -0
  144. package/hooks/use-tablist-titles.d.ts +28 -0
  145. package/hooks/use-tablist-titles.js +45 -0
  146. package/{cssm/useTabs.d.ts → hooks/use-tabs.d.ts} +1 -1
  147. package/{useTabs.js → hooks/use-tabs.js} +0 -0
  148. package/index.d.ts +1 -1
  149. package/index.js +14 -7
  150. package/index.module-370f6bd7.js +6 -0
  151. package/index.module-872dcef9.js +6 -0
  152. package/mobile.d.ts +1 -1
  153. package/mobile.js +14 -6
  154. package/modern/components/primary-tablist/Component.d.ts +2 -4
  155. package/modern/components/primary-tablist/Component.desktop.js +12 -4
  156. package/modern/components/primary-tablist/Component.js +38 -17
  157. package/modern/components/primary-tablist/Component.mobile.d.ts +1 -1
  158. package/modern/components/primary-tablist/Component.mobile.js +13 -5
  159. package/modern/components/primary-tablist/Component.responsive.d.ts +1 -1
  160. package/modern/components/primary-tablist/Component.responsive.js +13 -6
  161. package/modern/components/primary-tablist/index.css +53 -22
  162. package/modern/components/primary-tablist/mobile.css +99 -69
  163. package/modern/components/scrollable-container/Component.d.ts +1 -1
  164. package/modern/components/scrollable-container/Component.js +4 -2
  165. package/modern/components/scrollable-container/index.css +5 -5
  166. package/modern/components/secondary-tablist/Component.d.ts +2 -6
  167. package/modern/components/secondary-tablist/Component.desktop.d.ts +1 -1
  168. package/modern/components/secondary-tablist/Component.desktop.js +3 -3
  169. package/modern/components/secondary-tablist/Component.js +2 -2
  170. package/modern/components/secondary-tablist/Component.mobile.d.ts +1 -1
  171. package/modern/components/secondary-tablist/Component.mobile.js +4 -4
  172. package/modern/components/secondary-tablist/Component.responsive.js +4 -4
  173. package/modern/components/secondary-tablist/index.css +11 -11
  174. package/modern/components/secondary-tablist/mobile.css +65 -57
  175. package/modern/components/tab/Component.js +1 -1
  176. package/modern/components/tab/index.css +3 -3
  177. package/modern/components/tabs/Component.d.ts +1 -1
  178. package/modern/components/tabs/Component.desktop.d.ts +1 -1
  179. package/modern/components/tabs/Component.desktop.js +13 -5
  180. package/modern/components/tabs/Component.js +4 -4
  181. package/modern/components/tabs/Component.mobile.d.ts +2 -2
  182. package/modern/components/tabs/Component.mobile.js +13 -5
  183. package/modern/components/tabs/Component.responsive.d.ts +1 -1
  184. package/modern/components/tabs/Component.responsive.js +13 -6
  185. package/modern/components/title/Component.d.ts +8 -0
  186. package/modern/components/title/Component.js +13 -0
  187. package/modern/components/title/index.d.ts +1 -0
  188. package/modern/components/title/index.js +3 -0
  189. package/modern/desktop.d.ts +2 -1
  190. package/modern/desktop.js +12 -4
  191. package/modern/hooks/use-collapsible-elements.d.ts +8 -0
  192. package/modern/hooks/use-collapsible-elements.js +50 -0
  193. package/modern/hooks/use-tablist-titles.d.ts +28 -0
  194. package/modern/hooks/use-tablist-titles.js +40 -0
  195. package/{useTabs.d.ts → modern/hooks/use-tabs.d.ts} +1 -1
  196. package/modern/{useTabs.js → hooks/use-tabs.js} +3 -3
  197. package/modern/index.d.ts +1 -1
  198. package/modern/index.js +12 -5
  199. package/modern/index.module-01d292c0.js +4 -0
  200. package/modern/index.module-16a12061.js +4 -0
  201. package/modern/mobile.d.ts +1 -1
  202. package/modern/mobile.js +12 -4
  203. package/modern/responsive.d.ts +2 -1
  204. package/modern/responsive.js +12 -5
  205. package/modern/synthetic-events.d.ts +6 -0
  206. package/modern/synthetic-events.js +61 -0
  207. package/modern/typings.d.ts +13 -2
  208. package/package.json +7 -4
  209. package/responsive.d.ts +2 -1
  210. package/responsive.js +15 -7
  211. package/send-stats.js +1 -1
  212. package/synthetic-events.d.ts +6 -0
  213. package/synthetic-events.js +47 -0
  214. package/{esm/tslib.es6-444ae64e.d.ts → tslib.es6-cbc5fb87.d.ts} +8 -4
  215. package/{tslib.es6-fcb75541.js → tslib.es6-cbc5fb87.js} +13 -1
  216. package/typings.d.ts +13 -2
  217. package/esm/index.module-17321b1b.js +0 -4
  218. package/esm/index.module-198d371d.js +0 -4
  219. package/index.module-3530e300.js +0 -6
  220. package/index.module-c424649c.js +0 -6
  221. package/modern/index.module-17321b1b.js +0 -4
  222. package/modern/index.module-198d371d.js +0 -4
@@ -1,6 +1,4 @@
1
1
  /// <reference types="react" />
2
- import { Styles } from "../../typings";
3
- declare const PrimaryTabList: ({ size, styles, className, containerClassName, titles, selectedId, scrollable, fullWidthScroll, onChange, dataTestId, }: Pick<import("../../typings").TabsProps, "className" | "onChange" | "size" | "dataTestId" | "containerClassName" | "defaultMatch" | "selectedId" | "scrollable" | "fullWidthScroll"> & {
4
- titles?: import("../../typings").TabListTitle[] | undefined;
5
- } & Styles) => JSX.Element;
2
+ import { Styles, TabListProps } from "../../typings";
3
+ declare const PrimaryTabList: ({ size, styles, className, containerClassName, titles, selectedId, scrollable, collapsible, fullWidthScroll, onChange, dataTestId, breakpoint, }: TabListProps & Styles) => JSX.Element;
6
4
  export { PrimaryTabList };
@@ -2,15 +2,23 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../../tslib.es6-fcb75541.js');
5
+ var tslib_es6 = require('../../tslib.es6-cbc5fb87.js');
6
6
  var React = require('react');
7
- require('@alfalab/core-components-keyboard-focusable');
8
7
  require('classnames');
8
+ require('@alfalab/core-components/picker-button/desktop');
9
+ require('@alfalab/core-components-badge');
10
+ require('@alfalab/core-components-keyboard-focusable');
11
+ require('@alfalab/hooks');
12
+ require('@juggle/resize-observer');
13
+ require('../../hooks/use-collapsible-elements.js');
14
+ require('../../hooks/use-tabs.js');
15
+ require('../../hooks/use-tablist-titles.js');
16
+ require('../../synthetic-events.js');
9
17
  require('compute-scroll-into-view');
10
18
  require('../scrollable-container/Component.js');
11
- require('../../useTabs.js');
19
+ require('../title/Component.js');
12
20
  var components_primaryTablist_Component = require('./Component.js');
13
- var index_module = require('../../index.module-c424649c.js');
21
+ var index_module = require('../../index.module-370f6bd7.js');
14
22
 
15
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
24
 
@@ -2,13 +2,21 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../../tslib.es6-fcb75541.js');
5
+ var tslib_es6 = require('../../tslib.es6-cbc5fb87.js');
6
6
  var React = require('react');
7
- var coreComponentsKeyboardFocusable = require('@alfalab/core-components-keyboard-focusable');
8
7
  var cn = require('classnames');
8
+ var desktop = require('@alfalab/core-components/picker-button/desktop');
9
+ var coreComponentsBadge = require('@alfalab/core-components-badge');
10
+ var coreComponentsKeyboardFocusable = require('@alfalab/core-components-keyboard-focusable');
11
+ require('@alfalab/hooks');
12
+ require('@juggle/resize-observer');
13
+ require('../../hooks/use-collapsible-elements.js');
14
+ require('../../hooks/use-tabs.js');
15
+ var hooks_useTablistTitles = require('../../hooks/use-tablist-titles.js');
16
+ var syntheticEvents = require('../../synthetic-events.js');
9
17
  require('compute-scroll-into-view');
10
18
  var components_scrollableContainer_Component = require('../scrollable-container/Component.js');
11
- var useTabs = require('../../useTabs.js');
19
+ var components_title_Component = require('../title/Component.js');
12
20
 
13
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
22
 
@@ -16,40 +24,53 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
16
24
  var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
17
25
 
18
26
  var PrimaryTabList = function (_a) {
19
- var size = _a.size, _b = _a.styles, styles = _b === void 0 ? {} : _b, className = _a.className, containerClassName = _a.containerClassName, _c = _a.titles, titles = _c === void 0 ? [] : _c, _d = _a.selectedId, selectedId = _d === void 0 ? titles.length ? titles[0].id : undefined : _d, _e = _a.scrollable, scrollable = _e === void 0 ? true : _e, fullWidthScroll = _a.fullWidthScroll, onChange = _a.onChange, dataTestId = _a.dataTestId;
27
+ var size = _a.size, _b = _a.styles, styles = _b === void 0 ? {} : _b, className = _a.className, containerClassName = _a.containerClassName, _c = _a.titles, titles = _c === void 0 ? [] : _c, _d = _a.selectedId, selectedId = _d === void 0 ? titles.length ? titles[0].id : undefined : _d, _e = _a.scrollable, scrollable = _e === void 0 ? true : _e, collapsible = _a.collapsible, fullWidthScroll = _a.fullWidthScroll, onChange = _a.onChange, dataTestId = _a.dataTestId, _f = _a.breakpoint, breakpoint = _f === void 0 ? 1024 : _f;
20
28
  var lineRef = React.useRef(null);
21
- var _f = useTabs.useTabs({
29
+ var _g = hooks_useTablistTitles.useTablistTitles({
22
30
  titles: titles,
23
31
  selectedId: selectedId,
32
+ collapsible: collapsible,
33
+ breakpoint: breakpoint,
24
34
  onChange: onChange,
25
- }), selectedTab = _f.selectedTab, focusedTab = _f.focusedTab, getTabListItemProps = _f.getTabListItemProps;
35
+ }), containerRef = _g.containerRef, addonRef = _g.addonRef, tablistTitles = _g.tablistTitles, selectedTab = _g.selectedTab, focusedTab = _g.focusedTab, getTabListItemProps = _g.getTabListItemProps;
26
36
  React.useEffect(function () {
27
37
  if (selectedTab && lineRef.current) {
28
38
  lineRef.current.style.width = selectedTab.offsetWidth + "px";
29
39
  lineRef.current.style.transform = "translateX(" + selectedTab.offsetLeft + "px)";
30
40
  }
31
- }, [selectedTab]);
41
+ }, [selectedTab, tablistTitles]);
42
+ var collapsedOptions = React.useMemo(function () {
43
+ return tablistTitles.reduce(function (options, title) {
44
+ if (title.collapsed) {
45
+ options.push({
46
+ key: title.title,
47
+ value: title.id,
48
+ content: React__default['default'].createElement(components_title_Component.Title, tslib_es6.__assign({}, title, { styles: styles, isOption: true })),
49
+ });
50
+ }
51
+ return options;
52
+ }, []);
53
+ }, [tablistTitles, styles]);
54
+ var collapsedAddonsLength = tablistTitles.filter(function (title) { return title.collapsed && title.rightAddons; }).length;
55
+ var handleOptionsChange = function (payload) {
56
+ var _a;
57
+ if (((_a = payload.selected) === null || _a === void 0 ? void 0 : _a.value) && onChange) {
58
+ var nativeMouseEvent = new MouseEvent('change');
59
+ var syntheticMouseEvent = syntheticEvents.createSyntheticMouseEvent(nativeMouseEvent);
60
+ onChange(syntheticMouseEvent, { selectedId: payload.selected.value });
61
+ }
62
+ };
32
63
  var renderContent = function () {
33
64
  var _a;
34
65
  return (React__default['default'].createElement("div", { role: 'tablist', "data-test-id": dataTestId, className: cn__default['default'](styles.component, className, size && styles[size], (_a = {},
35
66
  _a[styles.fullWidthScroll] = fullWidthScroll,
36
67
  _a)) },
37
- titles.map(function (item, index) {
38
- if (item.hidden)
39
- return null;
40
- return (React__default['default'].createElement(coreComponentsKeyboardFocusable.KeyboardFocusable, { key: item.id }, function (ref, focused) {
41
- var _a;
42
- return (React__default['default'].createElement("button", tslib_es6.__assign({}, getTabListItemProps(index, ref), { type: 'button', className: cn__default['default'](styles.title, (_a = {},
43
- _a[styles.selected] = item.id === selectedId,
44
- _a[styles.disabled] = item.disabled,
45
- _a), item.toggleClassName) }),
46
- React__default['default'].createElement("span", { className: focused ? styles.focused : undefined }, item.title),
47
- item.rightAddons && (React__default['default'].createElement("span", { className: styles.rightAddons }, item.rightAddons))));
48
- }));
49
- }),
68
+ tablistTitles.map(function (title, index) { return (React__default['default'].createElement(coreComponentsKeyboardFocusable.KeyboardFocusable, { key: title.id }, function (ref, focused) { return (React__default['default'].createElement(components_title_Component.Title, tslib_es6.__assign({}, getTabListItemProps(index, ref), title, { focused: focused, styles: styles }))); })); }),
69
+ collapsedOptions.length ? (React__default['default'].createElement("span", { ref: addonRef, className: styles.pickerWrapper },
70
+ React__default['default'].createElement(desktop.PickerButtonDesktop, { fieldClassName: styles.title, optionClassName: cn__default['default'](styles.pickerOption, size && styles[size]), options: collapsedOptions, onChange: handleOptionsChange, rightAddons: collapsedAddonsLength ? (React__default['default'].createElement(coreComponentsBadge.Badge, { view: 'count', content: collapsedAddonsLength })) : null, size: 'l', view: 'ghost', label: '\u0415\u0449\u0451', popoverPosition: 'bottom-end' }))) : null,
50
71
  React__default['default'].createElement("div", { className: styles.line, ref: lineRef })));
51
72
  };
52
- return scrollable ? (React__default['default'].createElement(components_scrollableContainer_Component.ScrollableContainer, { activeChild: focusedTab || selectedTab, containerClassName: containerClassName, fullWidthScroll: fullWidthScroll }, renderContent())) : (React__default['default'].createElement("div", { className: cn__default['default'](styles.container, containerClassName) }, renderContent()));
73
+ return scrollable && !collapsible ? (React__default['default'].createElement(components_scrollableContainer_Component.ScrollableContainer, { activeChild: focusedTab || selectedTab, containerClassName: containerClassName, fullWidthScroll: fullWidthScroll }, renderContent())) : (React__default['default'].createElement("div", { ref: containerRef, className: cn__default['default'](styles.container, containerClassName) }, renderContent()));
53
74
  };
54
75
 
55
76
  exports.PrimaryTabList = PrimaryTabList;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { TabListProps } from "../../typings";
3
3
  type PrimaryTabListMobileProps = Omit<TabListProps, 'size'>;
4
- declare const PrimaryTabListMobile: ({ className, ...restProps }: Pick<TabListProps, "className" | "onChange" | "dataTestId" | "containerClassName" | "defaultMatch" | "selectedId" | "scrollable" | "fullWidthScroll" | "titles">) => JSX.Element;
4
+ declare const PrimaryTabListMobile: ({ className, ...restProps }: PrimaryTabListMobileProps) => JSX.Element;
5
5
  export { PrimaryTabListMobileProps, PrimaryTabListMobile };
@@ -2,22 +2,30 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../../tslib.es6-fcb75541.js');
5
+ var tslib_es6 = require('../../tslib.es6-cbc5fb87.js');
6
6
  var React = require('react');
7
- require('@alfalab/core-components-keyboard-focusable');
8
7
  var cn = require('classnames');
8
+ require('@alfalab/core-components/picker-button/desktop');
9
+ require('@alfalab/core-components-badge');
10
+ require('@alfalab/core-components-keyboard-focusable');
11
+ require('@alfalab/hooks');
12
+ require('@juggle/resize-observer');
13
+ require('../../hooks/use-collapsible-elements.js');
14
+ require('../../hooks/use-tabs.js');
15
+ require('../../hooks/use-tablist-titles.js');
16
+ require('../../synthetic-events.js');
9
17
  require('compute-scroll-into-view');
10
18
  require('../scrollable-container/Component.js');
11
- require('../../useTabs.js');
19
+ require('../title/Component.js');
12
20
  var components_primaryTablist_Component = require('./Component.js');
13
- var index_module = require('../../index.module-c424649c.js');
21
+ var index_module = require('../../index.module-370f6bd7.js');
14
22
 
15
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
24
 
17
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
26
  var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
19
27
 
20
- var mobileStyles = {"title":"tabs__title_fowyz tabs__title_1aith","mobile":"tabs__mobile_fowyz"};
28
+ var mobileStyles = {"title":"tabs__title_ob67q tabs__title_1qgkh","mobile":"tabs__mobile_ob67q"};
21
29
  require('./mobile.css')
22
30
 
23
31
  var styles = tslib_es6.__assign(tslib_es6.__assign({}, index_module.commonStyles), mobileStyles);
@@ -1,4 +1,4 @@
1
1
  /// <reference types="react" />
2
2
  import { TabListProps } from "../../typings";
3
- declare const PrimaryTabListResponsive: ({ size, defaultMatch, fullWidthScroll, ...restProps }: TabListProps) => JSX.Element;
3
+ declare const PrimaryTabListResponsive: ({ size, defaultMatch, collapsible, fullWidthScroll, ...restProps }: TabListProps) => JSX.Element;
4
4
  export { PrimaryTabListResponsive };
@@ -2,17 +2,24 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../../tslib.es6-fcb75541.js');
5
+ var tslib_es6 = require('../../tslib.es6-cbc5fb87.js');
6
6
  var React = require('react');
7
- require('@alfalab/core-components-keyboard-focusable');
8
7
  require('classnames');
8
+ require('@alfalab/core-components/picker-button/desktop');
9
+ require('@alfalab/core-components-badge');
10
+ require('@alfalab/core-components-keyboard-focusable');
11
+ var hooks = require('@alfalab/hooks');
12
+ require('@juggle/resize-observer');
13
+ require('../../hooks/use-collapsible-elements.js');
14
+ require('../../hooks/use-tabs.js');
15
+ require('../../hooks/use-tablist-titles.js');
16
+ require('../../synthetic-events.js');
9
17
  require('compute-scroll-into-view');
10
18
  require('../scrollable-container/Component.js');
11
- require('../../useTabs.js');
19
+ require('../title/Component.js');
12
20
  require('./Component.js');
13
- require('../../index.module-c424649c.js');
21
+ require('../../index.module-370f6bd7.js');
14
22
  var components_primaryTablist_Component_desktop = require('./Component.desktop.js');
15
- var hooks = require('@alfalab/hooks');
16
23
  var components_primaryTablist_Component_mobile = require('./Component.mobile.js');
17
24
 
18
25
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -20,12 +27,12 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
20
27
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
21
28
 
22
29
  var PrimaryTabListResponsive = function (_a) {
23
- var size = _a.size, _b = _a.defaultMatch, defaultMatch = _b === void 0 ? 'desktop' : _b, fullWidthScroll = _a.fullWidthScroll, restProps = tslib_es6.__rest(_a, ["size", "defaultMatch", "fullWidthScroll"]);
30
+ var size = _a.size, _b = _a.defaultMatch, defaultMatch = _b === void 0 ? 'desktop' : _b, collapsible = _a.collapsible, fullWidthScroll = _a.fullWidthScroll, restProps = tslib_es6.__rest(_a, ["size", "defaultMatch", "collapsible", "fullWidthScroll"]);
24
31
  var view = hooks.useMedia([
25
32
  ['mobile', '(max-width: 767px)'],
26
33
  ['desktop', '(min-width: 768px)'],
27
34
  ], defaultMatch)[0];
28
- return view === 'desktop' ? (React__default['default'].createElement(components_primaryTablist_Component_desktop.PrimaryTabListDesktop, tslib_es6.__assign({ size: size }, restProps))) : (React__default['default'].createElement(components_primaryTablist_Component_mobile.PrimaryTabListMobile, tslib_es6.__assign({ fullWidthScroll: fullWidthScroll }, restProps)));
35
+ return view === 'desktop' ? (React__default['default'].createElement(components_primaryTablist_Component_desktop.PrimaryTabListDesktop, tslib_es6.__assign({ collapsible: collapsible, size: size }, restProps))) : (React__default['default'].createElement(components_primaryTablist_Component_mobile.PrimaryTabListMobile, tslib_es6.__assign({ fullWidthScroll: fullWidthScroll }, restProps)));
29
36
  };
30
37
 
31
38
  exports.PrimaryTabListResponsive = PrimaryTabListResponsive;
@@ -1,11 +1,11 @@
1
- /* hash: skdkb */
1
+ /* hash: 1rh9l */
2
2
  :root {
3
3
  --color-light-border-accent: #ef3124;
4
4
  --color-light-border-link: #007aff;
5
5
  --color-light-border-primary: #dbdee1;
6
6
  --color-light-text-primary: #0b1f35;
7
- --color-light-text-secondary: #546272;
8
- --color-light-text-tertiary: #b6bcc3;
7
+ --color-light-text-secondary: rgba(11, 31, 53, 0.7);
8
+ --color-light-text-tertiary: rgba(11, 31, 53, 0.3);
9
9
  }
10
10
  :root {
11
11
 
@@ -83,12 +83,12 @@
83
83
 
84
84
  /* size xl */
85
85
  }
86
- .tabs__component_1aith {
86
+ .tabs__component_1qgkh {
87
87
  position: relative;
88
88
  display: inline-flex;
89
89
  min-width: 100%
90
90
  }
91
- .tabs__component_1aith:before {
91
+ .tabs__component_1qgkh:before {
92
92
  content: '';
93
93
  display: block;
94
94
  position: absolute;
@@ -97,15 +97,15 @@
97
97
  width: 100%;
98
98
  background-color: var(--primary-tablist-bottom-border-color);
99
99
  }
100
- .tabs__fullWidthScroll_1aith {
100
+ .tabs__fullWidthScroll_1qgkh {
101
101
  min-width: calc(100% - 2 * var(--gap-m));
102
102
  margin: 0 var(--gap-m);
103
103
  }
104
- .tabs__container_1aith {
104
+ .tabs__container_1qgkh {
105
105
  position: relative;
106
106
  overflow: hidden;
107
107
  }
108
- .tabs__title_1aith {
108
+ .tabs__title_1qgkh {
109
109
  display: flex;
110
110
  align-items: center;
111
111
  height: 100%;
@@ -123,22 +123,26 @@
123
123
  cursor: pointer;
124
124
  outline: none
125
125
  }
126
- .tabs__title_1aith:not(.tabs__disabled_1aith):hover {
126
+ .tabs__title_1qgkh:not(.tabs__disabled_1qgkh):hover {
127
127
  color: var(--primary-tablist-hover-color);
128
128
  }
129
- .tabs__focused_1aith {
129
+ .tabs__focused_1qgkh {
130
130
  outline: 2px solid var(--focus-color);
131
131
  outline-offset: 2px;
132
132
  }
133
- .tabs__selected_1aith {
133
+ .tabs__collapsed_1qgkh {
134
+ order: 99;
135
+ visibility: collapse;
136
+ }
137
+ .tabs__selected_1qgkh {
134
138
  cursor: default;
135
139
  color: var(--primary-tablist-selected-color);
136
140
  }
137
- .tabs__disabled_1aith {
141
+ .tabs__disabled_1qgkh {
138
142
  cursor: var(--disabled-cursor);
139
143
  color: var(--primary-tablist-disabled-color);
140
144
  }
141
- .tabs__line_1aith {
145
+ .tabs__line_1qgkh {
142
146
  position: absolute;
143
147
  height: 3px;
144
148
  bottom: 0;
@@ -147,46 +151,73 @@
147
151
  transition: transform 0.2s ease, width 0.2s ease;
148
152
  }
149
153
  /* sizes */
150
- .tabs__s_1aith .tabs__title_1aith, .tabs__xs_1aith .tabs__title_1aith, .tabs__xxs_1aith .tabs__title_1aith {
154
+ .tabs__s_1qgkh .tabs__title_1qgkh, .tabs__xs_1qgkh .tabs__title_1qgkh, .tabs__xxs_1qgkh .tabs__title_1qgkh {
151
155
  padding: var(--primary-tablist-s-padding);
152
156
  font-size: var(--primary-tablist-s-font-size);
153
157
  font-weight: var(--primary-tablist-s-font-weight);
154
158
  font-family: var(--primary-tablist-s-font-family);
155
159
  line-height: 24px;
156
160
  }
157
- .tabs__s_1aith .tabs__title_1aith + .tabs__title_1aith, .tabs__xs_1aith .tabs__title_1aith + .tabs__title_1aith, .tabs__xxs_1aith .tabs__title_1aith + .tabs__title_1aith {
161
+ .tabs__s_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh, .tabs__xs_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh, .tabs__xxs_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh {
162
+ margin-left: var(--primary-tablist-s-gaps);
163
+ }
164
+ .tabs__s_1qgkh .tabs__pickerWrapper_1qgkh, .tabs__xs_1qgkh .tabs__pickerWrapper_1qgkh, .tabs__xxs_1qgkh .tabs__pickerWrapper_1qgkh {
158
165
  margin-left: var(--primary-tablist-s-gaps);
159
166
  }
160
- .tabs__m_1aith .tabs__title_1aith {
167
+ .tabs__s_1qgkh .tabs__option_1qgkh, .tabs__xs_1qgkh .tabs__option_1qgkh, .tabs__xxs_1qgkh .tabs__option_1qgkh {
168
+ padding: 0;
169
+ }
170
+ .tabs__m_1qgkh .tabs__title_1qgkh {
161
171
  padding: var(--primary-tablist-m-padding);
162
172
  font-size: var(--primary-tablist-m-font-size);
163
173
  font-weight: var(--primary-tablist-m-font-weight);
164
174
  font-family: var(--primary-tablist-m-font-family);
165
175
  line-height: 24px;
166
176
  }
167
- .tabs__m_1aith .tabs__title_1aith + .tabs__title_1aith {
177
+ .tabs__m_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh {
168
178
  margin-left: var(--primary-tablist-m-gaps);
169
179
  }
170
- .tabs__l_1aith .tabs__title_1aith {
180
+ .tabs__m_1qgkh .tabs__pickerWrapper_1qgkh {
181
+ margin-left: var(--primary-tablist-m-gaps);
182
+ }
183
+ .tabs__m_1qgkh .tabs__option_1qgkh {
184
+ padding: 0;
185
+ }
186
+ .tabs__l_1qgkh .tabs__title_1qgkh {
171
187
  padding: var(--primary-tablist-l-padding);
172
188
  font-size: var(--primary-tablist-l-font-size);
173
189
  font-weight: var(--primary-tablist-l-font-weight);
174
190
  font-family: var(--primary-tablist-l-font-family);
175
191
  line-height: 24px;
176
192
  }
177
- .tabs__l_1aith .tabs__title_1aith + .tabs__title_1aith {
193
+ .tabs__l_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh {
178
194
  margin-left: var(--primary-tablist-l-gaps);
179
195
  }
180
- .tabs__xl_1aith .tabs__title_1aith {
196
+ .tabs__l_1qgkh .tabs__pickerWrapper_1qgkh {
197
+ margin-left: var(--primary-tablist-l-gaps);
198
+ }
199
+ .tabs__l_1qgkh .tabs__option_1qgkh {
200
+ padding: 0;
201
+ }
202
+ .tabs__xl_1qgkh .tabs__title_1qgkh {
181
203
  padding: var(--primary-tablist-xl-padding);
182
204
  font-size: var(--primary-tablist-xl-font-size);
183
205
  font-weight: var(--primary-tablist-xl-font-weight);
184
206
  font-family: var(--primary-tablist-xl-font-family);
185
207
  line-height: 32px;
186
208
  }
187
- .tabs__xl_1aith .tabs__title_1aith + .tabs__title_1aith {
209
+ .tabs__xl_1qgkh .tabs__title_1qgkh + .tabs__title_1qgkh {
210
+ margin-left: var(--primary-tablist-xl-gaps);
211
+ }
212
+ .tabs__xl_1qgkh .tabs__pickerWrapper_1qgkh {
188
213
  margin-left: var(--primary-tablist-xl-gaps);
189
214
  }
190
- .tabs__rightAddons_1aith {
215
+ .tabs__xl_1qgkh .tabs__option_1qgkh {
216
+ padding: 0;
217
+ }
218
+ .tabs__rightAddons_1qgkh {
219
+ display: flex;
220
+ justify-content: center;
221
+ align-items: center;
191
222
  margin-left: var(--gap-xs);
192
223
  }