@alfalab/core-components-tabs 8.5.0 → 8.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/collapsible/index.js +2 -1
  2. package/components/primary-tablist/Component.collapsible.js +6 -4
  3. package/components/primary-tablist/Component.desktop.js +2 -1
  4. package/components/primary-tablist/Component.js +2 -1
  5. package/components/primary-tablist/Component.mobile.js +3 -2
  6. package/components/primary-tablist/Component.responsive.js +2 -1
  7. package/components/primary-tablist/index.css +30 -30
  8. package/components/primary-tablist/mobile.css +33 -33
  9. package/components/scroll-controls/Component.js +1 -1
  10. package/components/scroll-controls/index.css +14 -14
  11. package/components/scrollable-container/Component.js +1 -1
  12. package/components/scrollable-container/index.css +6 -6
  13. package/components/secondary-tablist/Component.desktop.js +2 -1
  14. package/components/secondary-tablist/Component.js +1 -0
  15. package/components/secondary-tablist/Component.mobile.js +3 -2
  16. package/components/secondary-tablist/Component.responsive.js +2 -1
  17. package/components/secondary-tablist/index.css +11 -11
  18. package/components/secondary-tablist/mobile.css +13 -13
  19. package/components/tab/Component.js +1 -1
  20. package/components/tab/index.css +3 -3
  21. package/components/tabs/Component.collapsible.js +2 -1
  22. package/components/tabs/Component.desktop.js +3 -2
  23. package/components/tabs/Component.js +2 -1
  24. package/components/tabs/Component.mobile.js +3 -2
  25. package/components/tabs/Component.responsive.js +3 -2
  26. package/cssm/collapsible/index.js +1 -0
  27. package/cssm/components/primary-tablist/Component.collapsible.js +5 -3
  28. package/cssm/components/primary-tablist/Component.desktop.js +1 -0
  29. package/cssm/components/primary-tablist/Component.js +2 -1
  30. package/cssm/components/primary-tablist/Component.mobile.js +1 -0
  31. package/cssm/components/primary-tablist/Component.responsive.js +1 -0
  32. package/cssm/components/secondary-tablist/Component.desktop.js +1 -0
  33. package/cssm/components/secondary-tablist/Component.js +1 -0
  34. package/cssm/components/secondary-tablist/Component.mobile.js +1 -0
  35. package/cssm/components/secondary-tablist/Component.responsive.js +1 -0
  36. package/cssm/components/tabs/Component.collapsible.js +1 -0
  37. package/cssm/components/tabs/Component.desktop.js +1 -0
  38. package/cssm/components/tabs/Component.js +2 -1
  39. package/cssm/components/tabs/Component.mobile.js +1 -0
  40. package/cssm/components/tabs/Component.responsive.js +1 -0
  41. package/cssm/desktop/index.js +1 -0
  42. package/cssm/hooks/use-tablist-titles.d.ts +2 -1
  43. package/cssm/hooks/use-tablist-titles.js +1 -0
  44. package/cssm/hooks/use-tabs.d.ts +2 -1
  45. package/cssm/hooks/use-tabs.js +17 -6
  46. package/cssm/index.js +1 -0
  47. package/cssm/mobile/index.js +1 -0
  48. package/cssm/shared/index.js +1 -0
  49. package/cssm/typings.d.ts +6 -1
  50. package/desktop/index.js +3 -2
  51. package/esm/collapsible/index.js +2 -1
  52. package/esm/components/primary-tablist/Component.collapsible.js +7 -5
  53. package/esm/components/primary-tablist/Component.desktop.js +2 -1
  54. package/esm/components/primary-tablist/Component.js +2 -1
  55. package/esm/components/primary-tablist/Component.mobile.js +3 -2
  56. package/esm/components/primary-tablist/Component.responsive.js +2 -1
  57. package/esm/components/primary-tablist/index.css +30 -30
  58. package/esm/components/primary-tablist/mobile.css +33 -33
  59. package/esm/components/scroll-controls/Component.js +1 -1
  60. package/esm/components/scroll-controls/index.css +14 -14
  61. package/esm/components/scrollable-container/Component.js +1 -1
  62. package/esm/components/scrollable-container/index.css +6 -6
  63. package/esm/components/secondary-tablist/Component.desktop.js +2 -1
  64. package/esm/components/secondary-tablist/Component.js +1 -0
  65. package/esm/components/secondary-tablist/Component.mobile.js +3 -2
  66. package/esm/components/secondary-tablist/Component.responsive.js +2 -1
  67. package/esm/components/secondary-tablist/index.css +11 -11
  68. package/esm/components/secondary-tablist/mobile.css +13 -13
  69. package/esm/components/tab/Component.js +1 -1
  70. package/esm/components/tab/index.css +3 -3
  71. package/esm/components/tabs/Component.collapsible.js +2 -1
  72. package/esm/components/tabs/Component.desktop.js +3 -2
  73. package/esm/components/tabs/Component.js +2 -1
  74. package/esm/components/tabs/Component.mobile.js +3 -2
  75. package/esm/components/tabs/Component.responsive.js +3 -2
  76. package/esm/desktop/index.js +3 -2
  77. package/esm/hooks/use-tablist-titles.d.ts +2 -1
  78. package/esm/hooks/use-tablist-titles.js +1 -0
  79. package/esm/hooks/use-tabs.d.ts +2 -1
  80. package/esm/hooks/use-tabs.js +13 -6
  81. package/esm/index.js +3 -2
  82. package/esm/index.module-1e961bec.js +4 -0
  83. package/esm/index.module-b07a0a20.js +4 -0
  84. package/esm/mobile/index.js +3 -2
  85. package/esm/shared/index.js +1 -0
  86. package/esm/typings.d.ts +6 -1
  87. package/hooks/use-tablist-titles.d.ts +2 -1
  88. package/hooks/use-tablist-titles.js +1 -0
  89. package/hooks/use-tabs.d.ts +2 -1
  90. package/hooks/use-tabs.js +17 -6
  91. package/index.js +3 -2
  92. package/index.module-6c875fed.js +6 -0
  93. package/index.module-dcd338c3.js +6 -0
  94. package/mobile/index.js +3 -2
  95. package/modern/collapsible/index.js +2 -1
  96. package/modern/components/primary-tablist/Component.collapsible.js +5 -4
  97. package/modern/components/primary-tablist/Component.desktop.js +2 -1
  98. package/modern/components/primary-tablist/Component.js +2 -1
  99. package/modern/components/primary-tablist/Component.mobile.js +3 -2
  100. package/modern/components/primary-tablist/Component.responsive.js +2 -1
  101. package/modern/components/primary-tablist/index.css +30 -30
  102. package/modern/components/primary-tablist/mobile.css +33 -33
  103. package/modern/components/scroll-controls/Component.js +1 -1
  104. package/modern/components/scroll-controls/index.css +14 -14
  105. package/modern/components/scrollable-container/Component.js +1 -1
  106. package/modern/components/scrollable-container/index.css +6 -6
  107. package/modern/components/secondary-tablist/Component.desktop.js +2 -1
  108. package/modern/components/secondary-tablist/Component.js +1 -0
  109. package/modern/components/secondary-tablist/Component.mobile.js +3 -2
  110. package/modern/components/secondary-tablist/Component.responsive.js +2 -1
  111. package/modern/components/secondary-tablist/index.css +11 -11
  112. package/modern/components/secondary-tablist/mobile.css +13 -13
  113. package/modern/components/tab/Component.js +1 -1
  114. package/modern/components/tab/index.css +3 -3
  115. package/modern/components/tabs/Component.collapsible.js +2 -1
  116. package/modern/components/tabs/Component.desktop.js +3 -2
  117. package/modern/components/tabs/Component.js +2 -1
  118. package/modern/components/tabs/Component.mobile.js +3 -2
  119. package/modern/components/tabs/Component.responsive.js +3 -2
  120. package/modern/desktop/index.js +3 -2
  121. package/modern/hooks/use-tablist-titles.d.ts +2 -1
  122. package/modern/hooks/use-tablist-titles.js +1 -0
  123. package/modern/hooks/use-tabs.d.ts +2 -1
  124. package/modern/hooks/use-tabs.js +13 -6
  125. package/modern/index.js +3 -2
  126. package/modern/index.module-11a3c51b.js +4 -0
  127. package/modern/index.module-b0eb0617.js +4 -0
  128. package/modern/mobile/index.js +3 -2
  129. package/modern/shared/index.js +1 -0
  130. package/modern/typings.d.ts +6 -1
  131. package/package.json +5 -5
  132. package/shared/index.js +1 -0
  133. package/src/components/primary-tablist/Component.collapsible.tsx +22 -12
  134. package/src/components/primary-tablist/Component.tsx +1 -1
  135. package/src/components/tabs/Component.tsx +2 -0
  136. package/src/hooks/use-tabs.tsx +23 -6
  137. package/src/typings.ts +7 -1
  138. package/typings.d.ts +6 -1
  139. package/esm/index.module-77f20a83.js +0 -4
  140. package/esm/index.module-b2867cef.js +0 -4
  141. package/index.module-269f7642.js +0 -6
  142. package/index.module-3e51b518.js +0 -6
  143. package/modern/index.module-2ee1459e.js +0 -4
  144. package/modern/index.module-5572b7e8.js +0 -4
@@ -1,4 +1,4 @@
1
- /* hash: 1smpn */
1
+ /* hash: qf899 */
2
2
  :root {
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -50,29 +50,29 @@
50
50
 
51
51
  /* size xl */
52
52
  --secondary-tablist-xl-gaps: var(--gap-m);
53
- } .tabs__component_14u7v {
53
+ } .tabs__component_1du2s {
54
54
  position: relative;
55
55
  display: inline-flex;
56
- } .tabs__fullWidthScroll_14u7v {
56
+ } .tabs__fullWidthScroll_1du2s {
57
57
  margin: 0 var(--gap-m);
58
- } .tabs__container_14u7v {
58
+ } .tabs__container_1du2s {
59
59
  overflow: hidden;
60
60
 
61
61
  /* focus-outline fix */
62
62
  margin: var(--gap-2xs-neg) 0 var(--gap-2xs-neg) var(--gap-2xs-neg);
63
63
  padding: var(--gap-2xs) 0 var(--gap-2xs) var(--gap-2xs);
64
- } .tabs__title_14u7v {
64
+ } .tabs__title_1du2s {
65
65
  white-space: nowrap;
66
- } /* sizes */ .tabs__xxs_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
66
+ } /* sizes */ .tabs__xxs_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
67
67
  margin-left: var(--secondary-tablist-xxs-gaps);
68
- } .tabs__xs_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
68
+ } .tabs__xs_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
69
69
  margin-left: var(--secondary-tablist-xs-gaps);
70
- } .tabs__s_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
70
+ } .tabs__s_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
71
71
  margin-left: var(--secondary-tablist-s-gaps);
72
- } .tabs__m_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
72
+ } .tabs__m_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
73
73
  margin-left: var(--secondary-tablist-m-gaps);
74
- } .tabs__l_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
74
+ } .tabs__l_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
75
75
  margin-left: var(--secondary-tablist-l-gaps);
76
- } .tabs__xl_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
76
+ } .tabs__xl_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
77
77
  margin-left: var(--secondary-tablist-xl-gaps);
78
78
  }
@@ -1,4 +1,4 @@
1
- /* hash: evptj */
1
+ /* hash: 19flh */
2
2
  :root {
3
3
  }/* deprecated */:root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  }:root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -51,30 +51,30 @@
51
51
 
52
52
  /* size xl */
53
53
  --secondary-tablist-xl-gaps: var(--gap-m);
54
- }.tabs__component_14u7v {
54
+ }.tabs__component_1du2s {
55
55
  position: relative;
56
56
  display: inline-flex;
57
- }.tabs__fullWidthScroll_14u7v {
57
+ }.tabs__fullWidthScroll_1du2s {
58
58
  margin: 0 var(--gap-m);
59
- }.tabs__container_14u7v {
59
+ }.tabs__container_1du2s {
60
60
  overflow: hidden;
61
61
 
62
62
  /* focus-outline fix */
63
63
  margin: var(--gap-2xs-neg) 0 var(--gap-2xs-neg) var(--gap-2xs-neg);
64
64
  padding: var(--gap-2xs) 0 var(--gap-2xs) var(--gap-2xs);
65
- }.tabs__title_14u7v {
65
+ }.tabs__title_1du2s {
66
66
  white-space: nowrap;
67
- }/* sizes */.tabs__xxs_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
67
+ }/* sizes */.tabs__xxs_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
68
68
  margin-left: var(--secondary-tablist-xxs-gaps);
69
- }.tabs__xs_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
69
+ }.tabs__xs_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
70
70
  margin-left: var(--secondary-tablist-xs-gaps);
71
- }.tabs__s_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
71
+ }.tabs__s_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
72
72
  margin-left: var(--secondary-tablist-s-gaps);
73
- }.tabs__m_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
73
+ }.tabs__m_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
74
74
  margin-left: var(--secondary-tablist-m-gaps);
75
- }.tabs__l_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
75
+ }.tabs__l_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
76
76
  margin-left: var(--secondary-tablist-l-gaps);
77
- }.tabs__xl_14u7v .tabs__title_14u7v + .tabs__title_14u7v {
77
+ }.tabs__xl_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
78
78
  margin-left: var(--secondary-tablist-xl-gaps);
79
79
  } :root {
80
80
  --color-dark-indigo: #0b1f35;
@@ -1637,7 +1637,7 @@
1637
1637
 
1638
1638
  /* size xl */
1639
1639
  --secondary-tablist-xl-gaps: var(--gap-m);
1640
- } .tabs__title_19or5 {
1641
- } .tabs__mobile_19or5 .tabs__title_19or5 + .tabs__title_19or5 {
1640
+ } .tabs__title_1kd50 {
1641
+ } .tabs__mobile_1kd50 .tabs__title_1kd50 + .tabs__title_1kd50 {
1642
1642
  margin-left: var(--secondary-tablist-mobile-gaps);
1643
1643
  }
@@ -10,7 +10,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
10
10
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
11
11
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
12
12
 
13
- var styles = {"component":"tabs__component_1q0ar","hidden":"tabs__hidden_1q0ar"};
13
+ var styles = {"component":"tabs__component_fie4e","hidden":"tabs__hidden_fie4e"};
14
14
  require('./index.css')
15
15
 
16
16
  var Tab = function (_a) {
@@ -1,8 +1,8 @@
1
- /* hash: 1ga89 */
2
- .tabs__component_1q0ar {
1
+ /* hash: 1rzgq */
2
+ .tabs__component_fie4e {
3
3
  outline: none;
4
4
  }
5
5
 
6
- .tabs__hidden_1q0ar {
6
+ .tabs__hidden_fie4e {
7
7
  display: none;
8
8
  }
@@ -16,10 +16,11 @@ require('../../hooks/use-collapsible-elements.js');
16
16
  require('@juggle/resize-observer');
17
17
  require('@alfalab/hooks');
18
18
  require('../../hooks/use-tabs.js');
19
+ require('react-merge-refs');
19
20
  require('@alfalab/core-components-shared');
20
21
  require('../../synthetic-events.js');
21
22
  require('../title/Component.js');
22
- require('../../index.module-3e51b518.js');
23
+ require('../../index.module-dcd338c3.js');
23
24
 
24
25
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
25
26
 
@@ -13,6 +13,7 @@ require('classnames');
13
13
  require('@alfalab/core-components-keyboard-focusable');
14
14
  require('@alfalab/core-components-shared');
15
15
  require('../../hooks/use-tabs.js');
16
+ require('react-merge-refs');
16
17
  require('../scrollable-container/Component.js');
17
18
  require('compute-scroll-into-view');
18
19
  require('../scroll-controls/Component.js');
@@ -22,10 +23,10 @@ require('@alfalab/icons-glyph/ChevronLeftMIcon');
22
23
  require('@alfalab/icons-glyph/ChevronRightMIcon');
23
24
  require('../scroll-controls/utils.js');
24
25
  require('../title/Component.js');
25
- require('../../index.module-3e51b518.js');
26
+ require('../../index.module-dcd338c3.js');
26
27
  require('@alfalab/core-components-tag/desktop');
27
28
  require('../secondary-tablist/Component.js');
28
- require('../../index.module-269f7642.js');
29
+ require('../../index.module-6c875fed.js');
29
30
 
30
31
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
31
32
 
@@ -12,7 +12,7 @@ var Tabs = function (_a) {
12
12
  var TabList = _a.TabList, className = _a.className, containerClassName = _a.containerClassName, size = _a.size, defaultMatchMediaValue = _a.defaultMatchMediaValue, children = _a.children, selectedId = _a.selectedId, scrollable = _a.scrollable, collapsedTabsIds = _a.collapsedTabsIds, _b = _a.fullWidthScroll, fullWidthScroll = _b === void 0 ? false : _b, _c = _a.keepMounted, keepMounted = _c === void 0 ? false : _c, dataTestId = _a.dataTestId, onChange = _a.onChange, _d = _a.breakpoint, breakpoint = _d === void 0 ? 1024 : _d, tagShape = _a.tagShape, tagView = _a.tagView;
13
13
  var tabsArray = React__default.default.Children.toArray(children);
14
14
  var titles = tabsArray.map(function (_a) {
15
- var _b = _a.props, title = _b.title, id = _b.id, rightAddons = _b.rightAddons, disabled = _b.disabled, hidden = _b.hidden, toggleClassName = _b.toggleClassName, toggleTestId = _b.dataTestId;
15
+ var _b = _a.props, title = _b.title, id = _b.id, rightAddons = _b.rightAddons, disabled = _b.disabled, hidden = _b.hidden, toggleClassName = _b.toggleClassName, toggleTestId = _b.dataTestId, toggleRef = _b.toggleRef;
16
16
  return ({
17
17
  title: title,
18
18
  id: id,
@@ -21,6 +21,7 @@ var Tabs = function (_a) {
21
21
  hidden: hidden,
22
22
  toggleClassName: toggleClassName,
23
23
  dataTestId: toggleTestId,
24
+ toggleRef: toggleRef,
24
25
  });
25
26
  });
26
27
  var tabs = tabsArray.filter(function (tab) { return tab.props.id === selectedId || tab.props.keepMounted || keepMounted; });
@@ -13,6 +13,7 @@ require('@juggle/resize-observer');
13
13
  require('@alfalab/core-components-keyboard-focusable');
14
14
  require('@alfalab/core-components-shared');
15
15
  require('../../hooks/use-tabs.js');
16
+ require('react-merge-refs');
16
17
  require('../scrollable-container/Component.js');
17
18
  require('compute-scroll-into-view');
18
19
  require('../scroll-controls/Component.js');
@@ -22,10 +23,10 @@ require('@alfalab/icons-glyph/ChevronLeftMIcon');
22
23
  require('@alfalab/icons-glyph/ChevronRightMIcon');
23
24
  require('../scroll-controls/utils.js');
24
25
  require('../title/Component.js');
25
- require('../../index.module-3e51b518.js');
26
+ require('../../index.module-dcd338c3.js');
26
27
  require('@alfalab/core-components-tag/mobile');
27
28
  require('../secondary-tablist/Component.js');
28
- require('../../index.module-269f7642.js');
29
+ require('../../index.module-6c875fed.js');
29
30
 
30
31
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
31
32
 
@@ -15,6 +15,7 @@ require('classnames');
15
15
  require('@alfalab/core-components-keyboard-focusable');
16
16
  require('@alfalab/core-components-shared');
17
17
  require('../../hooks/use-tabs.js');
18
+ require('react-merge-refs');
18
19
  require('../scrollable-container/Component.js');
19
20
  require('compute-scroll-into-view');
20
21
  require('../scroll-controls/Component.js');
@@ -24,12 +25,12 @@ require('@alfalab/icons-glyph/ChevronLeftMIcon');
24
25
  require('@alfalab/icons-glyph/ChevronRightMIcon');
25
26
  require('../scroll-controls/utils.js');
26
27
  require('../title/Component.js');
27
- require('../../index.module-3e51b518.js');
28
+ require('../../index.module-dcd338c3.js');
28
29
  require('../primary-tablist/Component.mobile.js');
29
30
  require('../secondary-tablist/Component.desktop.js');
30
31
  require('@alfalab/core-components-tag/desktop');
31
32
  require('../secondary-tablist/Component.js');
32
- require('../../index.module-269f7642.js');
33
+ require('../../index.module-6c875fed.js');
33
34
  require('../secondary-tablist/Component.mobile.js');
34
35
  require('@alfalab/core-components-tag/mobile');
35
36
 
@@ -17,6 +17,7 @@ require('../hooks/use-collapsible-elements.js');
17
17
  require('@juggle/resize-observer');
18
18
  require('@alfalab/hooks');
19
19
  require('../hooks/use-tabs.js');
20
+ require('react-merge-refs');
20
21
  require('@alfalab/core-components-shared/cssm');
21
22
  require('../synthetic-events.js');
22
23
  require('../components/title/Component.js');
@@ -17,6 +17,7 @@ require('../../hooks/use-collapsible-elements.js');
17
17
  require('@juggle/resize-observer');
18
18
  require('@alfalab/hooks');
19
19
  require('../../hooks/use-tabs.js');
20
+ require('react-merge-refs');
20
21
  require('@alfalab/core-components-shared/cssm');
21
22
 
22
23
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -43,12 +44,13 @@ var CollapsiblePrimaryTabList = function (_a) {
43
44
  }
44
45
  }, [selectedTab, tablistTitles]);
45
46
  var collapsedOptions = React.useMemo(function () {
46
- return tablistTitles.reduce(function (options, title) {
47
+ return tablistTitles.reduce(function (options, _a) {
48
+ var toggleRef = _a.toggleRef, title = tslib.__rest(_a, ["toggleRef"]);
47
49
  if (title.collapsed) {
48
50
  options.push({
49
51
  key: title.title,
50
52
  value: title.id,
51
- content: React__default.default.createElement(components_title_Component.Title, tslib.__assign({}, title, { styles: styles__default.default, isOption: true })),
53
+ content: (React__default.default.createElement(components_title_Component.Title, tslib.__assign({}, title, { ref: toggleRef, styles: styles__default.default, isOption: true }))),
52
54
  });
53
55
  }
54
56
  return options;
@@ -69,7 +71,7 @@ var CollapsiblePrimaryTabList = function (_a) {
69
71
  _a[styles__default.default.fullWidthScroll] = fullWidthScroll,
70
72
  _a)) },
71
73
  tablistTitles.map(function (_a, index) {
72
- _a.dataTestId; var restTitleProps = tslib.__rest(_a, ["dataTestId"]);
74
+ _a.dataTestId; _a.toggleRef; var restTitleProps = tslib.__rest(_a, ["dataTestId", "toggleRef"]);
73
75
  return (React__default.default.createElement(coreComponentsKeyboardFocusable.KeyboardFocusable, { key: restTitleProps.id }, function (ref, focused) { return (React__default.default.createElement(components_title_Component.Title, tslib.__assign({}, getTabListItemProps(index, ref), restTitleProps, { focused: focused, styles: styles__default.default }))); }));
74
76
  }),
75
77
  collapsedOptions.length ? (React__default.default.createElement("span", { ref: addonRef, role: 'menu', className: styles__default.default.pickerWrapper },
@@ -11,6 +11,7 @@ require('classnames');
11
11
  require('@alfalab/core-components-keyboard-focusable/cssm');
12
12
  require('@alfalab/core-components-shared/cssm');
13
13
  require('../../hooks/use-tabs.js');
14
+ require('react-merge-refs');
14
15
  require('../scrollable-container/Component.js');
15
16
  require('compute-scroll-into-view');
16
17
  require('../scroll-controls/Component.js');
@@ -11,6 +11,7 @@ var coreComponentsShared = require('@alfalab/core-components-shared/cssm');
11
11
  var hooks_useTabs = require('../../hooks/use-tabs.js');
12
12
  var components_scrollableContainer_Component = require('../scrollable-container/Component.js');
13
13
  var components_title_Component = require('../title/Component.js');
14
+ require('react-merge-refs');
14
15
  require('compute-scroll-into-view');
15
16
  require('../scroll-controls/Component.js');
16
17
  require('lodash.debounce');
@@ -55,7 +56,7 @@ var PrimaryTabList = function (_a) {
55
56
  _a[styles.fullWidthScroll] = fullWidthScroll,
56
57
  _a)) },
57
58
  titles.map(function (_a, index) {
58
- _a.dataTestId; var restTitleProps = tslib.__rest(_a, ["dataTestId"]);
59
+ _a.dataTestId; _a.toggleRef; var restTitleProps = tslib.__rest(_a, ["dataTestId", "toggleRef"]);
59
60
  return (React__default.default.createElement(coreComponentsKeyboardFocusable.KeyboardFocusable, { key: restTitleProps.id }, function (ref, focused) { return (React__default.default.createElement(components_title_Component.Title, tslib.__assign({}, getTabListItemProps(index, ref), restTitleProps, { focused: focused, styles: styles }))); }));
60
61
  }),
61
62
  React__default.default.createElement("div", { className: styles.line, ref: lineRef })));
@@ -12,6 +12,7 @@ require('@juggle/resize-observer');
12
12
  require('@alfalab/core-components-keyboard-focusable/cssm');
13
13
  require('@alfalab/core-components-shared/cssm');
14
14
  require('../../hooks/use-tabs.js');
15
+ require('react-merge-refs');
15
16
  require('../scrollable-container/Component.js');
16
17
  require('compute-scroll-into-view');
17
18
  require('../scroll-controls/Component.js');
@@ -13,6 +13,7 @@ require('classnames');
13
13
  require('@alfalab/core-components-keyboard-focusable/cssm');
14
14
  require('@alfalab/core-components-shared/cssm');
15
15
  require('../../hooks/use-tabs.js');
16
+ require('react-merge-refs');
16
17
  require('../scrollable-container/Component.js');
17
18
  require('compute-scroll-into-view');
18
19
  require('../scroll-controls/Component.js');
@@ -9,6 +9,7 @@ var components_secondaryTablist_Component = require('./Component.js');
9
9
  var commonStyles = require('./index.module.css');
10
10
  require('classnames');
11
11
  require('../../hooks/use-tabs.js');
12
+ require('react-merge-refs');
12
13
  require('@alfalab/core-components-shared/cssm');
13
14
  require('../scrollable-container/Component.js');
14
15
  require('compute-scroll-into-view');
@@ -7,6 +7,7 @@ var React = require('react');
7
7
  var cn = require('classnames');
8
8
  var hooks_useTabs = require('../../hooks/use-tabs.js');
9
9
  var components_scrollableContainer_Component = require('../scrollable-container/Component.js');
10
+ require('react-merge-refs');
10
11
  require('@alfalab/core-components-shared/cssm');
11
12
  require('compute-scroll-into-view');
12
13
  require('../scroll-controls/Component.js');
@@ -10,6 +10,7 @@ var components_secondaryTablist_Component = require('./Component.js');
10
10
  var commonStyles = require('./index.module.css');
11
11
  var mobileStyles = require('./mobile.module.css');
12
12
  require('../../hooks/use-tabs.js');
13
+ require('react-merge-refs');
13
14
  require('@alfalab/core-components-shared/cssm');
14
15
  require('../scrollable-container/Component.js');
15
16
  require('compute-scroll-into-view');
@@ -11,6 +11,7 @@ require('@alfalab/core-components-tag/cssm/desktop');
11
11
  require('./Component.js');
12
12
  require('classnames');
13
13
  require('../../hooks/use-tabs.js');
14
+ require('react-merge-refs');
14
15
  require('@alfalab/core-components-shared/cssm');
15
16
  require('../scrollable-container/Component.js');
16
17
  require('compute-scroll-into-view');
@@ -16,6 +16,7 @@ require('../../hooks/use-collapsible-elements.js');
16
16
  require('@juggle/resize-observer');
17
17
  require('@alfalab/hooks');
18
18
  require('../../hooks/use-tabs.js');
19
+ require('react-merge-refs');
19
20
  require('@alfalab/core-components-shared/cssm');
20
21
  require('../../synthetic-events.js');
21
22
  require('../title/Component.js');
@@ -13,6 +13,7 @@ require('classnames');
13
13
  require('@alfalab/core-components-keyboard-focusable/cssm');
14
14
  require('@alfalab/core-components-shared/cssm');
15
15
  require('../../hooks/use-tabs.js');
16
+ require('react-merge-refs');
16
17
  require('../scrollable-container/Component.js');
17
18
  require('compute-scroll-into-view');
18
19
  require('../scroll-controls/Component.js');
@@ -12,7 +12,7 @@ var Tabs = function (_a) {
12
12
  var TabList = _a.TabList, className = _a.className, containerClassName = _a.containerClassName, size = _a.size, defaultMatchMediaValue = _a.defaultMatchMediaValue, children = _a.children, selectedId = _a.selectedId, scrollable = _a.scrollable, collapsedTabsIds = _a.collapsedTabsIds, _b = _a.fullWidthScroll, fullWidthScroll = _b === void 0 ? false : _b, _c = _a.keepMounted, keepMounted = _c === void 0 ? false : _c, dataTestId = _a.dataTestId, onChange = _a.onChange, _d = _a.breakpoint, breakpoint = _d === void 0 ? 1024 : _d, tagShape = _a.tagShape, tagView = _a.tagView;
13
13
  var tabsArray = React__default.default.Children.toArray(children);
14
14
  var titles = tabsArray.map(function (_a) {
15
- var _b = _a.props, title = _b.title, id = _b.id, rightAddons = _b.rightAddons, disabled = _b.disabled, hidden = _b.hidden, toggleClassName = _b.toggleClassName, toggleTestId = _b.dataTestId;
15
+ var _b = _a.props, title = _b.title, id = _b.id, rightAddons = _b.rightAddons, disabled = _b.disabled, hidden = _b.hidden, toggleClassName = _b.toggleClassName, toggleTestId = _b.dataTestId, toggleRef = _b.toggleRef;
16
16
  return ({
17
17
  title: title,
18
18
  id: id,
@@ -21,6 +21,7 @@ var Tabs = function (_a) {
21
21
  hidden: hidden,
22
22
  toggleClassName: toggleClassName,
23
23
  dataTestId: toggleTestId,
24
+ toggleRef: toggleRef,
24
25
  });
25
26
  });
26
27
  var tabs = tabsArray.filter(function (tab) { return tab.props.id === selectedId || tab.props.keepMounted || keepMounted; });
@@ -13,6 +13,7 @@ require('@juggle/resize-observer');
13
13
  require('@alfalab/core-components-keyboard-focusable/cssm');
14
14
  require('@alfalab/core-components-shared/cssm');
15
15
  require('../../hooks/use-tabs.js');
16
+ require('react-merge-refs');
16
17
  require('../scrollable-container/Component.js');
17
18
  require('compute-scroll-into-view');
18
19
  require('../scroll-controls/Component.js');
@@ -15,6 +15,7 @@ require('classnames');
15
15
  require('@alfalab/core-components-keyboard-focusable/cssm');
16
16
  require('@alfalab/core-components-shared/cssm');
17
17
  require('../../hooks/use-tabs.js');
18
+ require('react-merge-refs');
18
19
  require('../scrollable-container/Component.js');
19
20
  require('compute-scroll-into-view');
20
21
  require('../scroll-controls/Component.js');
@@ -14,6 +14,7 @@ require('classnames');
14
14
  require('@alfalab/core-components-keyboard-focusable/cssm');
15
15
  require('@alfalab/core-components-shared/cssm');
16
16
  require('../hooks/use-tabs.js');
17
+ require('react-merge-refs');
17
18
  require('../components/scrollable-container/Component.js');
18
19
  require('compute-scroll-into-view');
19
20
  require('../components/scroll-controls/Component.js');
@@ -13,6 +13,7 @@ declare const useTablistTitles: ({ titles, selectedId, collapsedTabsIds, breakpo
13
13
  hidden?: boolean | undefined;
14
14
  toggleClassName?: string | undefined;
15
15
  dataTestId?: string | undefined;
16
+ toggleRef?: import("react").Ref<HTMLDivElement> | undefined;
16
17
  }[];
17
18
  selectedTab: HTMLButtonElement | null;
18
19
  focusedTab: HTMLButtonElement | null;
@@ -23,7 +24,7 @@ declare const useTablistTitles: ({ titles, selectedId, collapsedTabsIds, breakpo
23
24
  selected: boolean;
24
25
  'data-test-id': string | undefined;
25
26
  disabled: boolean | undefined;
26
- ref: (node: HTMLButtonElement) => void;
27
+ ref: (instance: HTMLElement | null) => void;
27
28
  onKeyDown: (event: import("react").KeyboardEvent<HTMLButtonElement>) => void;
28
29
  onClick: (event?: import("react").MouseEvent<Element, MouseEvent> | undefined) => void;
29
30
  };
@@ -9,6 +9,7 @@ var hooks_useCollapsibleElements = require('./use-collapsible-elements.js');
9
9
  var hooks_useTabs = require('./use-tabs.js');
10
10
  require('@juggle/resize-observer');
11
11
  require('@alfalab/hooks');
12
+ require('react-merge-refs');
12
13
  require('@alfalab/core-components-shared/cssm');
13
14
 
14
15
  var useTablistTitles = function (_a) {
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { KeyboardEvent, MouseEvent, MutableRefObject } from 'react';
2
3
  import { UseTabsProps } from "../typings";
3
4
  declare function useTabs({ titles, selectedId, onChange }: UseTabsProps): {
@@ -8,7 +9,7 @@ declare function useTabs({ titles, selectedId, onChange }: UseTabsProps): {
8
9
  selected: boolean;
9
10
  'data-test-id': string | undefined;
10
11
  disabled: boolean | undefined;
11
- ref: (node: HTMLButtonElement) => void;
12
+ ref: (instance: HTMLElement | null) => void;
12
13
  onKeyDown: (event: KeyboardEvent<HTMLButtonElement>) => void;
13
14
  onClick: (event?: MouseEvent) => void;
14
15
  };
@@ -3,8 +3,13 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
+ var mergeRefs = require('react-merge-refs');
6
7
  var coreComponentsShared = require('@alfalab/core-components-shared/cssm');
7
8
 
9
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
10
+
11
+ var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
12
+
8
13
  function useTabs(_a) {
9
14
  var _b = _a.titles, titles = _b === void 0 ? [] : _b, selectedId = _a.selectedId, onChange = _a.onChange;
10
15
  var _c = React.useState(null), selectedTab = _c[0], setSelectedTab = _c[1];
@@ -74,6 +79,17 @@ function useTabs(_a) {
74
79
  var getTabListItemProps = function (index, outerRef) {
75
80
  var item = titles[index];
76
81
  var itemSelected = item.id === selectedId;
82
+ var refs = [
83
+ function (node) {
84
+ // eslint-disable-next-line no-param-reassign
85
+ if (outerRef)
86
+ outerRef.current = node;
87
+ handleItemRef(node, item, index);
88
+ },
89
+ ];
90
+ if (item.toggleRef) {
91
+ refs.push(item.toggleRef);
92
+ }
77
93
  return {
78
94
  role: 'tab',
79
95
  tabIndex: itemSelected ? 0 : -1,
@@ -81,12 +97,7 @@ function useTabs(_a) {
81
97
  selected: itemSelected,
82
98
  'data-test-id': coreComponentsShared.getDataTestId(item.dataTestId, 'toggle'),
83
99
  disabled: item.disabled,
84
- ref: function (node) {
85
- // eslint-disable-next-line no-param-reassign
86
- if (outerRef)
87
- outerRef.current = node;
88
- handleItemRef(node, item, index);
89
- },
100
+ ref: mergeRefs__default.default(refs),
90
101
  onKeyDown: handleKeyDown,
91
102
  onClick: function (event) { return handleItemClick(event, item); },
92
103
  };
package/cssm/index.js CHANGED
@@ -16,6 +16,7 @@ require('classnames');
16
16
  require('@alfalab/core-components-keyboard-focusable/cssm');
17
17
  require('@alfalab/core-components-shared/cssm');
18
18
  require('./hooks/use-tabs.js');
19
+ require('react-merge-refs');
19
20
  require('./components/scrollable-container/Component.js');
20
21
  require('compute-scroll-into-view');
21
22
  require('./components/scroll-controls/Component.js');
@@ -14,6 +14,7 @@ require('@juggle/resize-observer');
14
14
  require('@alfalab/core-components-keyboard-focusable/cssm');
15
15
  require('@alfalab/core-components-shared/cssm');
16
16
  require('../hooks/use-tabs.js');
17
+ require('react-merge-refs');
17
18
  require('../components/scrollable-container/Component.js');
18
19
  require('compute-scroll-into-view');
19
20
  require('../components/scroll-controls/Component.js');
@@ -17,6 +17,7 @@ require('@alfalab/icons-glyph/ChevronRightMIcon');
17
17
  require('../components/scroll-controls/utils.js');
18
18
  require('../components/scroll-controls/index.module.css');
19
19
  require('../components/scrollable-container/index.module.css');
20
+ require('react-merge-refs');
20
21
  require('@alfalab/core-components-shared/cssm');
21
22
  require('@juggle/resize-observer');
22
23
  require('@alfalab/hooks');
package/cssm/typings.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { FC, MouseEvent, ReactElement, ReactNode } from 'react';
1
+ import { FC, MouseEvent, ReactElement, ReactNode, Ref } from 'react';
2
2
  import { TagProps } from "@alfalab/core-components-tag";
3
3
  type SelectedId = string | number;
4
4
  type TabsProps = {
@@ -119,6 +119,10 @@ type TabProps = {
119
119
  * Идентификатор для систем автоматизированного тестирования
120
120
  */
121
121
  dataTestId?: string;
122
+ /**
123
+ * Реф для кнопки переключения таба
124
+ */
125
+ toggleRef?: Ref<HTMLDivElement>;
122
126
  };
123
127
  type TabListTitle = {
124
128
  title: string;
@@ -130,6 +134,7 @@ type TabListTitle = {
130
134
  selected?: boolean;
131
135
  collapsed?: boolean;
132
136
  dataTestId?: string;
137
+ toggleRef?: Ref<HTMLDivElement>;
133
138
  };
134
139
  type TabListProps = Pick<TabsProps, 'className' | 'containerClassName' | 'size' | 'defaultMatchMediaValue' | 'selectedId' | 'scrollable' | 'collapsedTabsIds' | 'onChange' | 'dataTestId' | 'fullWidthScroll' | 'tagShape' | 'tagView'> & {
135
140
  /**
package/desktop/index.js CHANGED
@@ -14,6 +14,7 @@ require('classnames');
14
14
  require('@alfalab/core-components-keyboard-focusable');
15
15
  require('@alfalab/core-components-shared');
16
16
  require('../hooks/use-tabs.js');
17
+ require('react-merge-refs');
17
18
  require('../components/scrollable-container/Component.js');
18
19
  require('compute-scroll-into-view');
19
20
  require('../components/scroll-controls/Component.js');
@@ -23,10 +24,10 @@ require('@alfalab/icons-glyph/ChevronLeftMIcon');
23
24
  require('@alfalab/icons-glyph/ChevronRightMIcon');
24
25
  require('../components/scroll-controls/utils.js');
25
26
  require('../components/title/Component.js');
26
- require('../index.module-3e51b518.js');
27
+ require('../index.module-dcd338c3.js');
27
28
  require('@alfalab/core-components-tag/desktop');
28
29
  require('../components/secondary-tablist/Component.js');
29
- require('../index.module-269f7642.js');
30
+ require('../index.module-6c875fed.js');
30
31
  require('../components/tabs/Component.js');
31
32
 
32
33
 
@@ -13,8 +13,9 @@ import '../hooks/use-collapsible-elements.js';
13
13
  import '@juggle/resize-observer';
14
14
  import '@alfalab/hooks';
15
15
  import '../hooks/use-tabs.js';
16
+ import 'react-merge-refs';
16
17
  import '@alfalab/core-components-shared/esm';
17
18
  import '../synthetic-events.js';
18
19
  import '../components/title/Component.js';
19
- import '../index.module-b2867cef.js';
20
+ import '../index.module-1e961bec.js';
20
21
  import '../components/tabs/Component.js';