@alfalab/core-components-tabs 8.5.1 → 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 +3 -3
  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-aa0c1143.js +0 -4
  140. package/esm/index.module-d07623e2.js +0 -4
  141. package/index.module-abadb192.js +0 -6
  142. package/index.module-b293cf9b.js +0 -6
  143. package/modern/index.module-50acb6fd.js +0 -4
  144. package/modern/index.module-b97c5648.js +0 -4
@@ -1,4 +1,4 @@
1
- /* hash: 2qlox */
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_1kcah {
53
+ } .tabs__component_1du2s {
54
54
  position: relative;
55
55
  display: inline-flex;
56
- } .tabs__fullWidthScroll_1kcah {
56
+ } .tabs__fullWidthScroll_1du2s {
57
57
  margin: 0 var(--gap-m);
58
- } .tabs__container_1kcah {
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_1kcah {
64
+ } .tabs__title_1du2s {
65
65
  white-space: nowrap;
66
- } /* sizes */ .tabs__xxs_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
66
+ } /* sizes */ .tabs__xxs_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
67
67
  margin-left: var(--secondary-tablist-xxs-gaps);
68
- } .tabs__xs_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
68
+ } .tabs__xs_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
69
69
  margin-left: var(--secondary-tablist-xs-gaps);
70
- } .tabs__s_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
70
+ } .tabs__s_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
71
71
  margin-left: var(--secondary-tablist-s-gaps);
72
- } .tabs__m_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
72
+ } .tabs__m_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
73
73
  margin-left: var(--secondary-tablist-m-gaps);
74
- } .tabs__l_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
74
+ } .tabs__l_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
75
75
  margin-left: var(--secondary-tablist-l-gaps);
76
- } .tabs__xl_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
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: ups12 */
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_1kcah {
54
+ }.tabs__component_1du2s {
55
55
  position: relative;
56
56
  display: inline-flex;
57
- }.tabs__fullWidthScroll_1kcah {
57
+ }.tabs__fullWidthScroll_1du2s {
58
58
  margin: 0 var(--gap-m);
59
- }.tabs__container_1kcah {
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_1kcah {
65
+ }.tabs__title_1du2s {
66
66
  white-space: nowrap;
67
- }/* sizes */.tabs__xxs_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
67
+ }/* sizes */.tabs__xxs_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
68
68
  margin-left: var(--secondary-tablist-xxs-gaps);
69
- }.tabs__xs_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
69
+ }.tabs__xs_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
70
70
  margin-left: var(--secondary-tablist-xs-gaps);
71
- }.tabs__s_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
71
+ }.tabs__s_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
72
72
  margin-left: var(--secondary-tablist-s-gaps);
73
- }.tabs__m_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
73
+ }.tabs__m_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
74
74
  margin-left: var(--secondary-tablist-m-gaps);
75
- }.tabs__l_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
75
+ }.tabs__l_1du2s .tabs__title_1du2s + .tabs__title_1du2s {
76
76
  margin-left: var(--secondary-tablist-l-gaps);
77
- }.tabs__xl_1kcah .tabs__title_1kcah + .tabs__title_1kcah {
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_rlmp1 {
1641
- } .tabs__mobile_rlmp1 .tabs__title_rlmp1 + .tabs__title_rlmp1 {
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
  }
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
- var styles = {"component":"tabs__component_7oe7z","hidden":"tabs__hidden_7oe7z"};
4
+ var styles = {"component":"tabs__component_fie4e","hidden":"tabs__hidden_fie4e"};
5
5
  require('./index.css')
6
6
 
7
7
  var Tab = function (_a) {
@@ -1,8 +1,8 @@
1
- /* hash: 10g62 */
2
- .tabs__component_7oe7z {
1
+ /* hash: 1rzgq */
2
+ .tabs__component_fie4e {
3
3
  outline: none;
4
4
  }
5
5
 
6
- .tabs__hidden_7oe7z {
6
+ .tabs__hidden_fie4e {
7
7
  display: none;
8
8
  }
@@ -12,10 +12,11 @@ import '../../hooks/use-collapsible-elements.js';
12
12
  import '@juggle/resize-observer';
13
13
  import '@alfalab/hooks';
14
14
  import '../../hooks/use-tabs.js';
15
+ import 'react-merge-refs';
15
16
  import '@alfalab/core-components-shared/esm';
16
17
  import '../../synthetic-events.js';
17
18
  import '../title/Component.js';
18
- import '../../index.module-aa0c1143.js';
19
+ import '../../index.module-1e961bec.js';
19
20
 
20
21
  var TabsCollapsible = function (_a) {
21
22
  var restProps = __rest(_a, []);
@@ -9,6 +9,7 @@ import 'classnames';
9
9
  import '@alfalab/core-components-keyboard-focusable/esm';
10
10
  import '@alfalab/core-components-shared/esm';
11
11
  import '../../hooks/use-tabs.js';
12
+ import 'react-merge-refs';
12
13
  import '../scrollable-container/Component.js';
13
14
  import 'compute-scroll-into-view';
14
15
  import '../scroll-controls/Component.js';
@@ -18,10 +19,10 @@ import '@alfalab/icons-glyph/ChevronLeftMIcon';
18
19
  import '@alfalab/icons-glyph/ChevronRightMIcon';
19
20
  import '../scroll-controls/utils.js';
20
21
  import '../title/Component.js';
21
- import '../../index.module-aa0c1143.js';
22
+ import '../../index.module-1e961bec.js';
22
23
  import '@alfalab/core-components-tag/esm/desktop';
23
24
  import '../secondary-tablist/Component.js';
24
- import '../../index.module-d07623e2.js';
25
+ import '../../index.module-b07a0a20.js';
25
26
 
26
27
  var views = {
27
28
  primary: PrimaryTabListDesktop,
@@ -4,7 +4,7 @@ var Tabs = function (_a) {
4
4
  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;
5
5
  var tabsArray = React.Children.toArray(children);
6
6
  var titles = tabsArray.map(function (_a) {
7
- 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;
7
+ 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;
8
8
  return ({
9
9
  title: title,
10
10
  id: id,
@@ -13,6 +13,7 @@ var Tabs = function (_a) {
13
13
  hidden: hidden,
14
14
  toggleClassName: toggleClassName,
15
15
  dataTestId: toggleTestId,
16
+ toggleRef: toggleRef,
16
17
  });
17
18
  });
18
19
  var tabs = tabsArray.filter(function (tab) { return tab.props.id === selectedId || tab.props.keepMounted || keepMounted; });
@@ -9,6 +9,7 @@ import '@juggle/resize-observer';
9
9
  import '@alfalab/core-components-keyboard-focusable/esm';
10
10
  import '@alfalab/core-components-shared/esm';
11
11
  import '../../hooks/use-tabs.js';
12
+ import 'react-merge-refs';
12
13
  import '../scrollable-container/Component.js';
13
14
  import 'compute-scroll-into-view';
14
15
  import '../scroll-controls/Component.js';
@@ -18,10 +19,10 @@ import '@alfalab/icons-glyph/ChevronLeftMIcon';
18
19
  import '@alfalab/icons-glyph/ChevronRightMIcon';
19
20
  import '../scroll-controls/utils.js';
20
21
  import '../title/Component.js';
21
- import '../../index.module-aa0c1143.js';
22
+ import '../../index.module-1e961bec.js';
22
23
  import '@alfalab/core-components-tag/esm/mobile';
23
24
  import '../secondary-tablist/Component.js';
24
- import '../../index.module-d07623e2.js';
25
+ import '../../index.module-b07a0a20.js';
25
26
 
26
27
  var views = {
27
28
  primary: PrimaryTabListMobile,
@@ -11,6 +11,7 @@ import 'classnames';
11
11
  import '@alfalab/core-components-keyboard-focusable/esm';
12
12
  import '@alfalab/core-components-shared/esm';
13
13
  import '../../hooks/use-tabs.js';
14
+ import 'react-merge-refs';
14
15
  import '../scrollable-container/Component.js';
15
16
  import 'compute-scroll-into-view';
16
17
  import '../scroll-controls/Component.js';
@@ -20,12 +21,12 @@ import '@alfalab/icons-glyph/ChevronLeftMIcon';
20
21
  import '@alfalab/icons-glyph/ChevronRightMIcon';
21
22
  import '../scroll-controls/utils.js';
22
23
  import '../title/Component.js';
23
- import '../../index.module-aa0c1143.js';
24
+ import '../../index.module-1e961bec.js';
24
25
  import '../primary-tablist/Component.mobile.js';
25
26
  import '../secondary-tablist/Component.desktop.js';
26
27
  import '@alfalab/core-components-tag/esm/desktop';
27
28
  import '../secondary-tablist/Component.js';
28
- import '../../index.module-d07623e2.js';
29
+ import '../../index.module-b07a0a20.js';
29
30
  import '../secondary-tablist/Component.mobile.js';
30
31
  import '@alfalab/core-components-tag/esm/mobile';
31
32
 
@@ -10,6 +10,7 @@ import 'classnames';
10
10
  import '@alfalab/core-components-keyboard-focusable/esm';
11
11
  import '@alfalab/core-components-shared/esm';
12
12
  import '../hooks/use-tabs.js';
13
+ import 'react-merge-refs';
13
14
  import '../components/scrollable-container/Component.js';
14
15
  import 'compute-scroll-into-view';
15
16
  import '../components/scroll-controls/Component.js';
@@ -19,8 +20,8 @@ import '@alfalab/icons-glyph/ChevronLeftMIcon';
19
20
  import '@alfalab/icons-glyph/ChevronRightMIcon';
20
21
  import '../components/scroll-controls/utils.js';
21
22
  import '../components/title/Component.js';
22
- import '../index.module-aa0c1143.js';
23
+ import '../index.module-1e961bec.js';
23
24
  import '@alfalab/core-components-tag/esm/desktop';
24
25
  import '../components/secondary-tablist/Component.js';
25
- import '../index.module-d07623e2.js';
26
+ import '../index.module-b07a0a20.js';
26
27
  import '../components/tabs/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
  };
@@ -5,6 +5,7 @@ import { useCollapsibleElements } from './use-collapsible-elements.js';
5
5
  import { useTabs } from './use-tabs.js';
6
6
  import '@juggle/resize-observer';
7
7
  import '@alfalab/hooks';
8
+ import 'react-merge-refs';
8
9
  import '@alfalab/core-components-shared/esm';
9
10
 
10
11
  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
  };
@@ -1,4 +1,5 @@
1
1
  import { useState, useRef, useCallback } from 'react';
2
+ import mergeRefs from 'react-merge-refs';
2
3
  import { getDataTestId } from '@alfalab/core-components-shared/esm';
3
4
 
4
5
  function useTabs(_a) {
@@ -70,6 +71,17 @@ function useTabs(_a) {
70
71
  var getTabListItemProps = function (index, outerRef) {
71
72
  var item = titles[index];
72
73
  var itemSelected = item.id === selectedId;
74
+ var refs = [
75
+ function (node) {
76
+ // eslint-disable-next-line no-param-reassign
77
+ if (outerRef)
78
+ outerRef.current = node;
79
+ handleItemRef(node, item, index);
80
+ },
81
+ ];
82
+ if (item.toggleRef) {
83
+ refs.push(item.toggleRef);
84
+ }
73
85
  return {
74
86
  role: 'tab',
75
87
  tabIndex: itemSelected ? 0 : -1,
@@ -77,12 +89,7 @@ function useTabs(_a) {
77
89
  selected: itemSelected,
78
90
  'data-test-id': getDataTestId(item.dataTestId, 'toggle'),
79
91
  disabled: item.disabled,
80
- ref: function (node) {
81
- // eslint-disable-next-line no-param-reassign
82
- if (outerRef)
83
- outerRef.current = node;
84
- handleItemRef(node, item, index);
85
- },
92
+ ref: mergeRefs(refs),
86
93
  onKeyDown: handleKeyDown,
87
94
  onClick: function (event) { return handleItemClick(event, item); },
88
95
  };
package/esm/index.js CHANGED
@@ -12,6 +12,7 @@ import 'classnames';
12
12
  import '@alfalab/core-components-keyboard-focusable/esm';
13
13
  import '@alfalab/core-components-shared/esm';
14
14
  import './hooks/use-tabs.js';
15
+ import 'react-merge-refs';
15
16
  import './components/scrollable-container/Component.js';
16
17
  import 'compute-scroll-into-view';
17
18
  import './components/scroll-controls/Component.js';
@@ -21,12 +22,12 @@ import '@alfalab/icons-glyph/ChevronLeftMIcon';
21
22
  import '@alfalab/icons-glyph/ChevronRightMIcon';
22
23
  import './components/scroll-controls/utils.js';
23
24
  import './components/title/Component.js';
24
- import './index.module-aa0c1143.js';
25
+ import './index.module-1e961bec.js';
25
26
  import './components/primary-tablist/Component.mobile.js';
26
27
  import './components/secondary-tablist/Component.desktop.js';
27
28
  import '@alfalab/core-components-tag/esm/desktop';
28
29
  import './components/secondary-tablist/Component.js';
29
- import './index.module-d07623e2.js';
30
+ import './index.module-b07a0a20.js';
30
31
  import './components/secondary-tablist/Component.mobile.js';
31
32
  import '@alfalab/core-components-tag/esm/mobile';
32
33
  import './components/tabs/Component.js';
@@ -0,0 +1,4 @@
1
+ var styles = {"component":"tabs__component_18t44","fullWidthScroll":"tabs__fullWidthScroll_18t44","container":"tabs__container_18t44","title":"tabs__title_18t44","disabled":"tabs__disabled_18t44","focused":"tabs__focused_18t44","collapsed":"tabs__collapsed_18t44","selected":"tabs__selected_18t44","line":"tabs__line_18t44","option":"tabs__option_18t44","s":"tabs__s_18t44","xs":"tabs__xs_18t44","xxs":"tabs__xxs_18t44","pickerWrapper":"tabs__pickerWrapper_18t44","m":"tabs__m_18t44","l":"tabs__l_18t44","xl":"tabs__xl_18t44","rightAddons":"tabs__rightAddons_18t44"};
2
+ require('./components/primary-tablist/index.css')
3
+
4
+ export { styles as s };
@@ -0,0 +1,4 @@
1
+ var commonStyles = {"component":"tabs__component_1du2s","fullWidthScroll":"tabs__fullWidthScroll_1du2s","container":"tabs__container_1du2s","title":"tabs__title_1du2s","xxs":"tabs__xxs_1du2s","xs":"tabs__xs_1du2s","s":"tabs__s_1du2s","m":"tabs__m_1du2s","l":"tabs__l_1du2s","xl":"tabs__xl_1du2s"};
2
+ require('./components/secondary-tablist/index.css')
3
+
4
+ export { commonStyles as c };
@@ -10,6 +10,7 @@ import '@juggle/resize-observer';
10
10
  import '@alfalab/core-components-keyboard-focusable/esm';
11
11
  import '@alfalab/core-components-shared/esm';
12
12
  import '../hooks/use-tabs.js';
13
+ import 'react-merge-refs';
13
14
  import '../components/scrollable-container/Component.js';
14
15
  import 'compute-scroll-into-view';
15
16
  import '../components/scroll-controls/Component.js';
@@ -19,8 +20,8 @@ import '@alfalab/icons-glyph/ChevronLeftMIcon';
19
20
  import '@alfalab/icons-glyph/ChevronRightMIcon';
20
21
  import '../components/scroll-controls/utils.js';
21
22
  import '../components/title/Component.js';
22
- import '../index.module-aa0c1143.js';
23
+ import '../index.module-1e961bec.js';
23
24
  import '@alfalab/core-components-tag/esm/mobile';
24
25
  import '../components/secondary-tablist/Component.js';
25
- import '../index.module-d07623e2.js';
26
+ import '../index.module-b07a0a20.js';
26
27
  import '../components/tabs/Component.js';
@@ -11,6 +11,7 @@ import '@alfalab/core-components-icon-button/esm';
11
11
  import '@alfalab/icons-glyph/ChevronLeftMIcon';
12
12
  import '@alfalab/icons-glyph/ChevronRightMIcon';
13
13
  import '../components/scroll-controls/utils.js';
14
+ import 'react-merge-refs';
14
15
  import '@alfalab/core-components-shared/esm';
15
16
  import '@juggle/resize-observer';
16
17
  import '@alfalab/hooks';
package/esm/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
  /**
@@ -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');
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
  };
package/hooks/use-tabs.js CHANGED
@@ -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');
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/index.js CHANGED
@@ -16,6 +16,7 @@ require('classnames');
16
16
  require('@alfalab/core-components-keyboard-focusable');
17
17
  require('@alfalab/core-components-shared');
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');
@@ -25,12 +26,12 @@ require('@alfalab/icons-glyph/ChevronLeftMIcon');
25
26
  require('@alfalab/icons-glyph/ChevronRightMIcon');
26
27
  require('./components/scroll-controls/utils.js');
27
28
  require('./components/title/Component.js');
28
- require('./index.module-abadb192.js');
29
+ require('./index.module-dcd338c3.js');
29
30
  require('./components/primary-tablist/Component.mobile.js');
30
31
  require('./components/secondary-tablist/Component.desktop.js');
31
32
  require('@alfalab/core-components-tag/desktop');
32
33
  require('./components/secondary-tablist/Component.js');
33
- require('./index.module-b293cf9b.js');
34
+ require('./index.module-6c875fed.js');
34
35
  require('./components/secondary-tablist/Component.mobile.js');
35
36
  require('@alfalab/core-components-tag/mobile');
36
37
  require('./components/tabs/Component.js');
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var commonStyles = {"component":"tabs__component_1du2s","fullWidthScroll":"tabs__fullWidthScroll_1du2s","container":"tabs__container_1du2s","title":"tabs__title_1du2s","xxs":"tabs__xxs_1du2s","xs":"tabs__xs_1du2s","s":"tabs__s_1du2s","m":"tabs__m_1du2s","l":"tabs__l_1du2s","xl":"tabs__xl_1du2s"};
4
+ require('./components/secondary-tablist/index.css')
5
+
6
+ exports.commonStyles = commonStyles;
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var styles = {"component":"tabs__component_18t44","fullWidthScroll":"tabs__fullWidthScroll_18t44","container":"tabs__container_18t44","title":"tabs__title_18t44","disabled":"tabs__disabled_18t44","focused":"tabs__focused_18t44","collapsed":"tabs__collapsed_18t44","selected":"tabs__selected_18t44","line":"tabs__line_18t44","option":"tabs__option_18t44","s":"tabs__s_18t44","xs":"tabs__xs_18t44","xxs":"tabs__xxs_18t44","pickerWrapper":"tabs__pickerWrapper_18t44","m":"tabs__m_18t44","l":"tabs__l_18t44","xl":"tabs__xl_18t44","rightAddons":"tabs__rightAddons_18t44"};
4
+ require('./components/primary-tablist/index.css')
5
+
6
+ exports.styles = styles;
package/mobile/index.js CHANGED
@@ -14,6 +14,7 @@ require('@juggle/resize-observer');
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-abadb192.js');
27
+ require('../index.module-dcd338c3.js');
27
28
  require('@alfalab/core-components-tag/mobile');
28
29
  require('../components/secondary-tablist/Component.js');
29
- require('../index.module-b293cf9b.js');
30
+ require('../index.module-6c875fed.js');
30
31
  require('../components/tabs/Component.js');
31
32
 
32
33
 
@@ -12,8 +12,9 @@ import '../hooks/use-collapsible-elements.js';
12
12
  import '@juggle/resize-observer';
13
13
  import '@alfalab/hooks';
14
14
  import '../hooks/use-tabs.js';
15
+ import 'react-merge-refs';
15
16
  import '@alfalab/core-components-shared/modern';
16
17
  import '../synthetic-events.js';
17
18
  import '../components/title/Component.js';
18
- import '../index.module-b97c5648.js';
19
+ import '../index.module-b0eb0617.js';
19
20
  import '../components/tabs/Component.js';
@@ -6,12 +6,13 @@ import { PickerButtonDesktop } from '@alfalab/core-components-picker-button/mode
6
6
  import { useTablistTitles } from '../../hooks/use-tablist-titles.js';
7
7
  import { createSyntheticMouseEvent } from '../../synthetic-events.js';
8
8
  import { Title } from '../title/Component.js';
9
- import { s as styles } from '../../index.module-b97c5648.js';
9
+ import { s as styles } from '../../index.module-b0eb0617.js';
10
10
  import '@alfalab/core-components-mq/modern';
11
11
  import '../../hooks/use-collapsible-elements.js';
12
12
  import '@juggle/resize-observer';
13
13
  import '@alfalab/hooks';
14
14
  import '../../hooks/use-tabs.js';
15
+ import 'react-merge-refs';
15
16
  import '@alfalab/core-components-shared/modern';
16
17
 
17
18
  const CollapsiblePrimaryTabList = ({ size = 'm', className, containerClassName, titles = [], selectedId = titles.length ? titles[0].id : undefined, collapsedTabsIds, fullWidthScroll, onChange, dataTestId, breakpoint = 1024, defaultMatchMediaValue, }) => {
@@ -30,12 +31,12 @@ const CollapsiblePrimaryTabList = ({ size = 'm', className, containerClassName,
30
31
  lineRef.current.style.transform = `translateX(${selectedTab.offsetLeft}px)`;
31
32
  }
32
33
  }, [selectedTab, tablistTitles]);
33
- const collapsedOptions = useMemo(() => tablistTitles.reduce((options, title) => {
34
+ const collapsedOptions = useMemo(() => tablistTitles.reduce((options, { toggleRef, ...title }) => {
34
35
  if (title.collapsed) {
35
36
  options.push({
36
37
  key: title.title,
37
38
  value: title.id,
38
- content: React.createElement(Title, { ...title, styles: styles, isOption: true }),
39
+ content: (React.createElement(Title, { ...title, ref: toggleRef, styles: styles, isOption: true })),
39
40
  });
40
41
  }
41
42
  return options;
@@ -51,7 +52,7 @@ const CollapsiblePrimaryTabList = ({ size = 'm', className, containerClassName,
51
52
  const renderContent = () => (React.createElement("div", { role: 'tablist', "data-test-id": dataTestId, className: cn(styles.component, className, size && styles[size], {
52
53
  [styles.fullWidthScroll]: fullWidthScroll,
53
54
  }) },
54
- tablistTitles.map(({ dataTestId: _, ...restTitleProps }, index) => (React.createElement(KeyboardFocusable, { key: restTitleProps.id }, (ref, focused) => (React.createElement(Title, { ...getTabListItemProps(index, ref), ...restTitleProps, focused: focused, styles: styles }))))),
55
+ tablistTitles.map(({ dataTestId: _, toggleRef: __, ...restTitleProps }, index) => (React.createElement(KeyboardFocusable, { key: restTitleProps.id }, (ref, focused) => (React.createElement(Title, { ...getTabListItemProps(index, ref), ...restTitleProps, focused: focused, styles: styles }))))),
55
56
  collapsedOptions.length ? (React.createElement("span", { ref: addonRef, role: 'menu', className: styles.pickerWrapper },
56
57
  React.createElement(PickerButtonDesktop, { fieldClassName: styles.title, optionClassName: cn(styles.pickerOption, size && styles[size]), options: collapsedOptions, onChange: handleOptionsChange, rightAddons: collapsedAddonsLength ? (React.createElement(Badge, { view: 'count', content: collapsedAddonsLength })) : null, size: 'm', view: 'ghost', label: '\u0415\u0449\u0451', popoverPosition: 'bottom-end' }))) : null,
57
58
  React.createElement("div", { className: styles.line, ref: lineRef })));