@elliemae/ds-tabs 2.3.0-next.3 → 3.0.0-alpha.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 (174) hide show
  1. package/dist/cjs/DSTabs.js +63 -0
  2. package/dist/cjs/DSTabs.js.map +7 -0
  3. package/dist/cjs/DSTabsCTX.js +56 -0
  4. package/dist/cjs/DSTabsCTX.js.map +7 -0
  5. package/dist/cjs/DSTabsDatatestid.js +46 -0
  6. package/dist/cjs/DSTabsDatatestid.js.map +7 -0
  7. package/dist/cjs/DSTabsTypes.js +27 -0
  8. package/dist/cjs/DSTabsTypes.js.map +7 -0
  9. package/dist/cjs/config/useCrossRef.js +44 -0
  10. package/dist/cjs/config/useCrossRef.js.map +7 -0
  11. package/dist/cjs/config/useTabs.js +68 -0
  12. package/dist/cjs/config/useTabs.js.map +7 -0
  13. package/dist/cjs/defaultProps.js +53 -0
  14. package/dist/cjs/defaultProps.js.map +7 -0
  15. package/dist/cjs/exportsRelated/DSTab.js +46 -0
  16. package/dist/cjs/exportsRelated/DSTab.js.map +7 -0
  17. package/dist/cjs/index.js +38 -0
  18. package/dist/cjs/index.js.map +7 -0
  19. package/dist/cjs/parts/carousel/Carousel.js +77 -0
  20. package/dist/cjs/parts/carousel/Carousel.js.map +7 -0
  21. package/dist/cjs/parts/carousel/styles.js +79 -0
  22. package/dist/cjs/parts/carousel/styles.js.map +7 -0
  23. package/dist/cjs/parts/carousel/useCarousel.js +80 -0
  24. package/dist/cjs/parts/carousel/useCarousel.js.map +7 -0
  25. package/dist/cjs/parts/carousel/useCarouselCallbacks.js +89 -0
  26. package/dist/cjs/parts/carousel/useCarouselCallbacks.js.map +7 -0
  27. package/dist/cjs/parts/tabBar/TabBar.js +171 -0
  28. package/dist/cjs/parts/tabBar/TabBar.js.map +7 -0
  29. package/dist/cjs/parts/tabBar/styles.js +294 -0
  30. package/dist/cjs/parts/tabBar/styles.js.map +7 -0
  31. package/dist/cjs/parts/tabBar/useTabBar.js +100 -0
  32. package/dist/cjs/parts/tabBar/useTabBar.js.map +7 -0
  33. package/dist/cjs/parts/tabsContent/TabsContent.js +53 -0
  34. package/dist/cjs/parts/tabsContent/TabsContent.js.map +7 -0
  35. package/dist/cjs/parts/tabsContent/styles.js +39 -0
  36. package/dist/cjs/parts/tabsContent/styles.js.map +7 -0
  37. package/dist/cjs/parts/tabsPanel/TabsPanels.js +79 -0
  38. package/dist/cjs/parts/tabsPanel/TabsPanels.js.map +7 -0
  39. package/dist/cjs/parts/tabsPanel/styles.js +45 -0
  40. package/dist/cjs/parts/tabsPanel/styles.js.map +7 -0
  41. package/dist/cjs/propTypes.js +58 -0
  42. package/dist/cjs/propTypes.js.map +7 -0
  43. package/dist/cjs/utils/constants.js +56 -0
  44. package/dist/cjs/utils/constants.js.map +7 -0
  45. package/dist/cjs/utils/helpers.js +88 -0
  46. package/dist/cjs/utils/helpers.js.map +7 -0
  47. package/dist/cjs/utils/hooks/useKeyboardNavigation.js +77 -0
  48. package/dist/cjs/utils/hooks/useKeyboardNavigation.js.map +7 -0
  49. package/dist/cjs/utils/hooks/useTabsCallbacks.js +60 -0
  50. package/dist/cjs/utils/hooks/useTabsCallbacks.js.map +7 -0
  51. package/dist/esm/DSTabs.js +34 -0
  52. package/dist/esm/DSTabs.js.map +7 -0
  53. package/dist/esm/DSTabsCTX.js +27 -0
  54. package/dist/esm/DSTabsCTX.js.map +7 -0
  55. package/dist/esm/DSTabsDatatestid.js +17 -0
  56. package/dist/esm/DSTabsDatatestid.js.map +7 -0
  57. package/dist/esm/DSTabsTypes.js +2 -0
  58. package/dist/esm/DSTabsTypes.js.map +7 -0
  59. package/{esm → dist/esm}/config/useCrossRef.js +6 -4
  60. package/dist/esm/config/useCrossRef.js.map +7 -0
  61. package/dist/esm/config/useTabs.js +39 -0
  62. package/dist/esm/config/useTabs.js.map +7 -0
  63. package/{esm → dist/esm}/defaultProps.js +9 -8
  64. package/dist/esm/defaultProps.js.map +7 -0
  65. package/dist/esm/exportsRelated/DSTab.js +17 -0
  66. package/dist/esm/exportsRelated/DSTab.js.map +7 -0
  67. package/dist/esm/index.js +9 -0
  68. package/dist/esm/index.js.map +7 -0
  69. package/dist/esm/parts/carousel/Carousel.js +48 -0
  70. package/dist/esm/parts/carousel/Carousel.js.map +7 -0
  71. package/dist/esm/parts/carousel/styles.js +50 -0
  72. package/dist/esm/parts/carousel/styles.js.map +7 -0
  73. package/{esm → dist/esm}/parts/carousel/useCarousel.js +15 -34
  74. package/dist/esm/parts/carousel/useCarousel.js.map +7 -0
  75. package/{esm → dist/esm}/parts/carousel/useCarouselCallbacks.js +20 -28
  76. package/dist/esm/parts/carousel/useCarouselCallbacks.js.map +7 -0
  77. package/dist/esm/parts/tabBar/TabBar.js +149 -0
  78. package/dist/esm/parts/tabBar/TabBar.js.map +7 -0
  79. package/dist/esm/parts/tabBar/styles.js +265 -0
  80. package/dist/esm/parts/tabBar/styles.js.map +7 -0
  81. package/{esm → dist/esm}/parts/tabBar/useTabBar.js +27 -35
  82. package/dist/esm/parts/tabBar/useTabBar.js.map +7 -0
  83. package/dist/esm/parts/tabsContent/TabsContent.js +24 -0
  84. package/dist/esm/parts/tabsContent/TabsContent.js.map +7 -0
  85. package/dist/esm/parts/tabsContent/styles.js +10 -0
  86. package/dist/esm/parts/tabsContent/styles.js.map +7 -0
  87. package/dist/esm/parts/tabsPanel/TabsPanels.js +50 -0
  88. package/dist/esm/parts/tabsPanel/TabsPanels.js.map +7 -0
  89. package/dist/esm/parts/tabsPanel/styles.js +16 -0
  90. package/dist/esm/parts/tabsPanel/styles.js.map +7 -0
  91. package/dist/esm/propTypes.js +29 -0
  92. package/dist/esm/propTypes.js.map +7 -0
  93. package/dist/esm/utils/constants.js +27 -0
  94. package/dist/esm/utils/constants.js.map +7 -0
  95. package/{esm → dist/esm}/utils/helpers.js +23 -28
  96. package/dist/esm/utils/helpers.js.map +7 -0
  97. package/dist/esm/utils/hooks/useKeyboardNavigation.js +48 -0
  98. package/dist/esm/utils/hooks/useKeyboardNavigation.js.map +7 -0
  99. package/dist/esm/utils/hooks/useTabsCallbacks.js +31 -0
  100. package/dist/esm/utils/hooks/useTabsCallbacks.js.map +7 -0
  101. package/{types → dist/types}/DSTabs.d.ts +2 -2
  102. package/{types → dist/types}/DSTabsCTX.d.ts +0 -0
  103. package/{types → dist/types}/DSTabsDatatestid.d.ts +0 -0
  104. package/{types → dist/types}/DSTabsTypes.d.ts +0 -0
  105. package/{types → dist/types}/config/useCrossRef.d.ts +0 -0
  106. package/{types → dist/types}/config/useTabs.d.ts +0 -0
  107. package/{types → dist/types}/defaultProps.d.ts +0 -0
  108. package/{types → dist/types}/exportsRelated/DSTab.d.ts +0 -0
  109. package/{types → dist/types}/index.d.ts +0 -0
  110. package/{types → dist/types}/parts/carousel/Carousel.d.ts +0 -0
  111. package/{types → dist/types}/parts/carousel/styles.d.ts +1 -1
  112. package/{types → dist/types}/parts/carousel/useCarousel.d.ts +0 -0
  113. package/{types → dist/types}/parts/carousel/useCarouselCallbacks.d.ts +0 -0
  114. package/{types → dist/types}/parts/tabBar/TabBar.d.ts +0 -0
  115. package/{types → dist/types}/parts/tabBar/styles.d.ts +0 -0
  116. package/{types → dist/types}/parts/tabBar/useTabBar.d.ts +0 -0
  117. package/{types → dist/types}/parts/tabsContent/TabsContent.d.ts +0 -0
  118. package/{types → dist/types}/parts/tabsContent/styles.d.ts +0 -0
  119. package/{types → dist/types}/parts/tabsPanel/TabsPanels.d.ts +0 -0
  120. package/{types → dist/types}/parts/tabsPanel/styles.d.ts +0 -0
  121. package/{types → dist/types}/propTypes.d.ts +0 -0
  122. package/{types → dist/types}/tests/DSTabs.callbacks.test.d.ts +0 -0
  123. package/{types → dist/types}/tests/DSTabs.func.test.d.ts +0 -0
  124. package/{types → dist/types}/tests/DSTabs.keyboard.test.d.ts +0 -0
  125. package/{types → dist/types}/tests/DSTabs.test.d.ts +0 -0
  126. package/{types → dist/types}/utils/constants.d.ts +0 -0
  127. package/{types → dist/types}/utils/helpers.d.ts +0 -0
  128. package/{types → dist/types}/utils/hooks/useKeyboardNavigation.d.ts +0 -0
  129. package/{types → dist/types}/utils/hooks/useTabsCallbacks.d.ts +0 -0
  130. package/package.json +77 -69
  131. package/cjs/DSTabs.js +0 -45
  132. package/cjs/DSTabsCTX.js +0 -30
  133. package/cjs/DSTabsDatatestid.js +0 -18
  134. package/cjs/DSTabsTypes.js +0 -2
  135. package/cjs/config/useCrossRef.js +0 -17
  136. package/cjs/config/useTabs.js +0 -51
  137. package/cjs/defaultProps.js +0 -27
  138. package/cjs/exportsRelated/DSTab.js +0 -32
  139. package/cjs/index.js +0 -17
  140. package/cjs/parts/carousel/Carousel.js +0 -69
  141. package/cjs/parts/carousel/styles.js +0 -65
  142. package/cjs/parts/carousel/useCarousel.js +0 -78
  143. package/cjs/parts/carousel/useCarouselCallbacks.js +0 -72
  144. package/cjs/parts/tabBar/TabBar.js +0 -168
  145. package/cjs/parts/tabBar/styles.js +0 -200
  146. package/cjs/parts/tabBar/useTabBar.js +0 -87
  147. package/cjs/parts/tabsContent/TabsContent.js +0 -49
  148. package/cjs/parts/tabsContent/styles.js +0 -15
  149. package/cjs/parts/tabsPanel/TabsPanels.js +0 -77
  150. package/cjs/parts/tabsPanel/styles.js +0 -25
  151. package/cjs/propTypes.js +0 -33
  152. package/cjs/utils/constants.js +0 -28
  153. package/cjs/utils/helpers.js +0 -75
  154. package/cjs/utils/hooks/useKeyboardNavigation.js +0 -61
  155. package/cjs/utils/hooks/useTabsCallbacks.js +0 -41
  156. package/esm/DSTabs.js +0 -35
  157. package/esm/DSTabsCTX.js +0 -25
  158. package/esm/DSTabsDatatestid.js +0 -14
  159. package/esm/DSTabsTypes.js +0 -1
  160. package/esm/config/useTabs.js +0 -47
  161. package/esm/exportsRelated/DSTab.js +0 -21
  162. package/esm/index.js +0 -4
  163. package/esm/parts/carousel/Carousel.js +0 -61
  164. package/esm/parts/carousel/styles.js +0 -54
  165. package/esm/parts/tabBar/TabBar.js +0 -159
  166. package/esm/parts/tabBar/styles.js +0 -186
  167. package/esm/parts/tabsContent/TabsContent.js +0 -40
  168. package/esm/parts/tabsContent/styles.js +0 -7
  169. package/esm/parts/tabsPanel/TabsPanels.js +0 -67
  170. package/esm/parts/tabsPanel/styles.js +0 -17
  171. package/esm/propTypes.js +0 -28
  172. package/esm/utils/constants.js +0 -20
  173. package/esm/utils/hooks/useKeyboardNavigation.js +0 -57
  174. package/esm/utils/hooks/useTabsCallbacks.js +0 -37
@@ -1,200 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
6
- var styled = require('styled-components');
7
- var dsSystem = require('@elliemae/ds-system');
8
- var constants = require('../../utils/constants.js');
9
-
10
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
-
12
- var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
13
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
14
-
15
- var _templateObject;
16
- const StyledSelectionIndicator = /*#__PURE__*/styled__default["default"].div.withConfig({
17
- componentId: "sc-3hla56-0"
18
- })(["position:absolute;height:3px;top:", ";margin-top:", ";pointer-events:none;transition:200ms cubic-bezier(0.36,0,1,1);z-index:10;", ""], _ref => {
19
- let {
20
- tabType,
21
- isDSMobile
22
- } = _ref;
23
- if (isDSMobile) return "35px";
24
- if (tabType === constants.TabTypes.NORMAL_SMALL) return "15px";
25
- return "25px";
26
- }, _ref2 => {
27
- let {
28
- theme
29
- } = _ref2;
30
- return theme.space.xxxs;
31
- }, _ref3 => {
32
- let {
33
- isDSMobile
34
- } = _ref3;
35
- return isDSMobile ? " \n margin-left: 0;\n margin-top: 3px;\n " : "";
36
- });
37
- const mobileGradientsSettings = dsSystem.css(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n ", "\n"])), _ref4 => {
38
- let {
39
- theme,
40
- mobileGradients,
41
- isDSMobile,
42
- fixedTabsHeaders
43
- } = _ref4;
44
-
45
- if (isDSMobile && !fixedTabsHeaders) {
46
- if (mobileGradients.right && mobileGradients.left) return "background: linear-gradient(90deg, rgba(238,238,238,0) 0%, ".concat(theme.colors.brand[200], " 20%, ").concat(theme.colors.brand[200], " 80%, rgba(238,238,238,0) 100%);");
47
- if (mobileGradients.right) return "background: linear-gradient(90deg, ".concat(theme.colors.brand[200], " 0%, ").concat(theme.colors.brand[200], " 80%, rgba(238,238,238,0) 100%);");
48
- if (mobileGradients.left) return "background: linear-gradient(90deg, rgba(238,238,238,0) 0%, ".concat(theme.colors.brand[200], " 20%, ").concat(theme.colors.brand[200], " 100%);");
49
- }
50
-
51
- return "";
52
- });
53
- const StyledTabWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
54
- componentId: "sc-3hla56-1"
55
- })(["display:flex;flex:1;flex-wrap:nowrap;", " ", ""], _ref5 => {
56
- let {
57
- fixedTabsHeaders,
58
- isDSMobile
59
- } = _ref5;
60
- return !fixedTabsHeaders && isDSMobile ? '' : 'overflow-x: hidden;';
61
- }, _ref6 => {
62
- let {
63
- theme,
64
- isDSMobile
65
- } = _ref6;
66
- return isDSMobile ? "border-bottom: 1px solid ".concat(theme.colors.brand[300], ";") : "";
67
- });
68
- const StyledTabButton = /*#__PURE__*/styled__default["default"].button.withConfig({
69
- componentId: "sc-3hla56-2"
70
- })(["position:relative;background-color:transparent;border:none;cursor:pointer;transition:100ms cubic-bezier(0,0,0.42,1);text-transform:", ";letter-spacing:0px;white-space:nowrap;padding:2px 0;margin-right:", ";margin-left:", ";color:", ";", " ", " ", " ", " ", " ", " ", ""], _ref7 => {
71
- let {
72
- tabType
73
- } = _ref7;
74
- return tabType === constants.TabTypes.SUBTABS ? "capitalize" : "uppercase";
75
- }, _ref8 => {
76
- let {
77
- fixedTabsHeaders,
78
- isDSMobile
79
- } = _ref8;
80
- if (fixedTabsHeaders) return '0px';
81
- if (!fixedTabsHeaders && isDSMobile) return '14px';
82
- return '16px';
83
- }, _ref9 => {
84
- let {
85
- fixedTabsHeaders,
86
- isDSMobile
87
- } = _ref9;
88
- if (fixedTabsHeaders) return '0px';
89
- if (!fixedTabsHeaders && isDSMobile) return '14px';
90
- return '16px';
91
- }, _ref10 => {
92
- let {
93
- theme
94
- } = _ref10;
95
- return theme.colors.neutral[700];
96
- }, dsSystem.onlySafariAndFirefox('-webkit-text-stroke: 0.4px transparent;'), _ref11 => {
97
- let {
98
- tabType
99
- } = _ref11;
100
- return tabType === constants.TabTypes.NORMAL ? "height: 32px;" : "height: 22px;";
101
- }, _ref12 => {
102
- let {
103
- theme,
104
- isActive,
105
- disabled
106
- } = _ref12;
107
- return isActive && !disabled ? "\n font-weight: ".concat(theme.fontWeights.semibold, ";\n ").concat(dsSystem.safariAndFirefoxBold("#353C46"), "\n\n &:hover {\n ").concat(dsSystem.safariAndFirefoxBold("#1E79C2"), "\n }\n \n ") : "\n \n ";
108
- }, _ref13 => {
109
- let {
110
- theme,
111
- disabled
112
- } = _ref13;
113
- return disabled ? "\n color: ".concat(theme.colors.neutral[500], ";\n cursor: not-allowed;\n ") : "\n &:hover {\n color: ".concat(theme.colors.brand[600], ";\n }\n ");
114
- }, _ref14 => {
115
- let {
116
- theme,
117
- showSeparator,
118
- tabType
119
- } = _ref14;
120
- return showSeparator ? "\n &:not(:last-of-type):before\n {\n content: \"\";\n position: absolute;\n width: 1px;\n right: -16px;\n top: 50%;\n transform: translateY(-50%);\n height: ".concat(tabType === constants.TabTypes.SUBTABS ? "10px" : "16px", ";\n background: ").concat(theme.colors.neutral[400], ";\n }") : "";
121
- }, _ref15 => {
122
- let {
123
- theme,
124
- isDSMobile,
125
- tabType,
126
- isActive
127
- } = _ref15;
128
- return !isDSMobile ? "\n &:focus {\n outline: none;\n &:after {\n position: absolute;\n content: '';\n top: 0;\n left: -16px;\n width: calc(100% + 32px);\n height: 100%;\n z-index: 5;\n border-radius: 2px;\n border: 2px solid ".concat(theme.colors.brand[700], ";\n }\n\n ").concat(tabType !== constants.TabTypes.SUBTABS && isActive ? "\n &:before {\n position: absolute;\n content: '';\n left: -16px;\n right: 0;\n top: calc(100% - 2px);\n transform: none;\n width: calc(100% + 32px);\n height: 2px;\n z-index: 10;\n background: linear-gradient(to right, transparent 0px, transparent 12px, white 12px, white 16px, transparent 16px,transparent calc(100% - 16px), white calc(100% - 16px), white calc(100% - 12px), transparent calc(100% - 12px), transparent 100%);\n }\n " : "", "\n }\n \n ") : "";
129
- }, _ref16 => {
130
- let {
131
- theme,
132
- isActive,
133
- disabled,
134
- isDSMobile
135
- } = _ref16;
136
- return isDSMobile ? "\n height: 40px;\n color: ".concat(theme.colors.brand[600], ";\n font-weight: ").concat(theme.fontWeights.regular, ";\n padding: 0;\n font-size: 13px;\n line-height: 1.3;\n ").concat(dsSystem.onlySafariAndFirefox('-webkit-text-stroke: 0.4px transparent;'), " \n\n &:focus {\n font-weight: ").concat(theme.fontWeights.regular, ";\n font-size: 13px;\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n }\n\n ").concat(isActive ? "\n font-weight: ".concat(theme.fontWeights.regular, ";\n font-size: 13px;\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n ") : "", "\n\n ").concat(isActive && !disabled ? "\n font-size: 13px;\n color: ".concat(theme.colors.brand[700], ";\n line-height: 1.3;\n font-weight: ").concat(theme.fontWeights.regular, ";\n -webkit-font-smoothing: subpixel-antialiased; \n -webkit-text-stroke: 0.4px ").concat(theme.colors.brand[700], ";") : "", "\n\n ").concat(!disabled ? "\n &:hover,\n &:focus {\n outline: none;\n color: ".concat(theme.colors.brand[700], ";\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n }") : "", "\n\n ") : "";
137
- });
138
- const StyledSubTabsList = /*#__PURE__*/styled__default["default"].div.withConfig({
139
- componentId: "sc-3hla56-3"
140
- })(["position:relative;display:flex;flex-wrap:nowrap;flex:1;width:100%;", ""], _ref17 => {
141
- let {
142
- withCarousel
143
- } = _ref17;
144
- return withCarousel ? 'max-width: 100%;' : '';
145
- });
146
- const StyledTabList = /*#__PURE__*/styled__default["default"].div.withConfig({
147
- componentId: "sc-3hla56-4"
148
- })(["position:relative;display:flex;flex-wrap:nowrap;flex:1;width:100%;", " ", " ", "{padding-bottom:0;padding-top:0;}", " ", " ", " ", "{", "}", "{background:", ";}"], _ref18 => {
149
- let {
150
- withCarousel,
151
- isDSMobile
152
- } = _ref18;
153
- return withCarousel && !isDSMobile ? "max-width: 100%;" : '';
154
- }, _ref19 => {
155
- let {
156
- theme,
157
- isDSMobile,
158
- tabType
159
- } = _ref19;
160
- return tabType !== constants.TabTypes.NORMAL_SMALL && !isDSMobile ? "\n &:after {\n content: '';\n position: absolute;\n width: 100%;\n height: 1px;\n box-shadow: 0px 0px 0px 1px ".concat(theme.colors.neutral[400], ";\n pointer-events: none;\n bottom: 0px;\n }\n ") : "";
161
- }, StyledTabButton, _ref20 => {
162
- let {
163
- theme,
164
- isDSMobile
165
- } = _ref20;
166
- return isDSMobile ? "\n \n background: ".concat(theme.colors.brand[200], ";") : "";
167
- }, mobileGradientsSettings, _ref21 => {
168
- let {
169
- isDSMobile,
170
- fixedTabsHeaders
171
- } = _ref21;
172
- return isDSMobile ? "\n ".concat(!fixedTabsHeaders ? "\n z-index: 0;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: thin;\n &::-webkit-scrollbar {\n display: none;\n }" : "\n display: flex;\n ".concat(StyledTabButton, " {\n flex: 1;\n overflow-x: hidden;\n }")) : "";
173
- }, StyledSelectionIndicator, _ref22 => {
174
- let {
175
- indicatorStyle
176
- } = _ref22;
177
- return "\n width: ".concat(indicatorStyle.width, ";\n left: ").concat(indicatorStyle.left, ";\n ");
178
- }, StyledSelectionIndicator, _ref23 => {
179
- let {
180
- theme,
181
- indicatorStyle,
182
- isDSMobile
183
- } = _ref23;
184
- return !isDSMobile ? indicatorStyle.backgroundWithTransparent : theme.colors.brand[600];
185
- });
186
- const StyledRequiredMark = /*#__PURE__*/styled__default["default"].span.withConfig({
187
- componentId: "sc-3hla56-5"
188
- })(["color:", ";font-size:6px;margin-left:2px;position:absolute;top:5px;"], _ref24 => {
189
- let {
190
- theme
191
- } = _ref24;
192
- return theme.colors.danger[900];
193
- });
194
-
195
- exports.StyledRequiredMark = StyledRequiredMark;
196
- exports.StyledSelectionIndicator = StyledSelectionIndicator;
197
- exports.StyledSubTabsList = StyledSubTabsList;
198
- exports.StyledTabButton = StyledTabButton;
199
- exports.StyledTabList = StyledTabList;
200
- exports.StyledTabWrapper = StyledTabWrapper;
@@ -1,87 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- require('core-js/modules/web.dom-collections.iterator.js');
6
- var React = require('react');
7
- var useResizeObserver = require('@react-hook/resize-observer');
8
- var helpers = require('../../utils/helpers.js');
9
- var DSTabsCTX = require('../../DSTabsCTX.js');
10
- var constants = require('../../utils/constants.js');
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var useResizeObserver__default = /*#__PURE__*/_interopDefaultLegacy(useResizeObserver);
15
-
16
- const useTabBar = () => {
17
- const {
18
- actualActiveTab,
19
- actualActiveTabRef,
20
- tabsListRef,
21
- props: {
22
- showSelectionIndicator,
23
- isDSMobile,
24
- fixedTabsHeaders
25
- }
26
- } = React.useContext(DSTabsCTX.DSTabsContext);
27
- const [mobileGradients, setMobileGradients] = React.useState({
28
- left: false,
29
- right: false
30
- });
31
- const [indicatorStyle, setIndicatorStyle] = React.useState(constants.defaultIndicatorStyles);
32
- const getIndicatorStyles = React.useCallback(() => {
33
- if (tabsListRef.current) {
34
- const tabList = tabsListRef.current;
35
- const activeTabButton = actualActiveTabRef.current;
36
- if (!activeTabButton || !helpers.isElementVisible(activeTabButton, tabList)) return constants.defaultIndicatorStyles; // The missingMargins are to make the selection indicator white marks work properly in desktop, we need
37
- // the full width of the tab button with margins.
38
-
39
- const missingMargins = isDSMobile ? 0 : 16;
40
- const tabClientWidth = isDSMobile && !fixedTabsHeaders ? activeTabButton.clientWidth : activeTabButton.clientWidth + missingMargins * 2; // The reason why we use the tabList.scrollLeft is due to the centerOnTabChange (only in Mobile and FlexibleTabs)
41
- // behavior that adds scroll to the tabList
42
-
43
- const position = isDSMobile && !fixedTabsHeaders ? activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left + tabList.scrollLeft : activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left - missingMargins;
44
- const backgroundWithTransparent = "linear-gradient(to right, transparent 0px, transparent 16px, #1E79C2 16px, #1E79C2 ".concat(tabClientWidth - 16, "px,transparent ").concat(tabClientWidth - 16, "px,transparent ").concat(tabClientWidth, "px )");
45
- return {
46
- left: "".concat(position, "px"),
47
- width: "".concat(tabClientWidth, "px"),
48
- backgroundWithTransparent
49
- };
50
- }
51
-
52
- return constants.defaultIndicatorStyles;
53
- }, [actualActiveTabRef, fixedTabsHeaders, isDSMobile, tabsListRef]);
54
- const updateIndicatorStyle = React.useCallback(() => setTimeout(() => setIndicatorStyle(getIndicatorStyles()), 100), [getIndicatorStyles, setIndicatorStyle]);
55
- useResizeObserver__default["default"](tabsListRef, updateIndicatorStyle);
56
- const updateMobileGradients = React.useCallback(() => {
57
- if (tabsListRef.current && isDSMobile && !fixedTabsHeaders) {
58
- const {
59
- scrollLeft,
60
- scrollWidth,
61
- clientWidth
62
- } = tabsListRef.current;
63
- setMobileGradients({
64
- left: helpers.shouldHaveLeftGradient(scrollLeft),
65
- right: helpers.shouldHaveRightGradient(scrollLeft, clientWidth, scrollWidth)
66
- });
67
- }
68
- }, [fixedTabsHeaders, isDSMobile, tabsListRef]);
69
- React.useLayoutEffect(() => {
70
- if (showSelectionIndicator) {
71
- updateIndicatorStyle();
72
- }
73
-
74
- if (isDSMobile && !fixedTabsHeaders) {
75
- updateMobileGradients();
76
- }
77
- }, [updateMobileGradients, showSelectionIndicator, updateIndicatorStyle, isDSMobile, fixedTabsHeaders, actualActiveTab]);
78
- return {
79
- updateIndicatorStyle,
80
- setIndicatorStyle,
81
- indicatorStyle,
82
- mobileGradients,
83
- updateMobileGradients
84
- };
85
- };
86
-
87
- exports.useTabBar = useTabBar;
@@ -1,49 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- require('core-js/modules/esnext.async-iterator.filter.js');
6
- require('core-js/modules/esnext.iterator.constructor.js');
7
- require('core-js/modules/esnext.iterator.filter.js');
8
- require('core-js/modules/esnext.async-iterator.for-each.js');
9
- require('core-js/modules/esnext.iterator.for-each.js');
10
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
- var _jsx = require('@babel/runtime/helpers/jsx');
12
- var React = require('react');
13
- var TabsPanels = require('../tabsPanel/TabsPanels.js');
14
- var TabBar = require('../tabBar/TabBar.js');
15
- var styles = require('./styles.js');
16
- var DSTabsCTX = require('../../DSTabsCTX.js');
17
- var DSTabsDatatestid = require('../../DSTabsDatatestid.js');
18
- var jsxRuntime = require('react/jsx-runtime');
19
-
20
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
-
22
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
23
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
24
-
25
- var _TabBar, _TabsPanels;
26
-
27
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
28
-
29
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
- const TabsContent = () => {
31
- const {
32
- props: {
33
- containerProps,
34
- innerRef,
35
- tabsListAriaLabel,
36
- tabBarExtraContent
37
- }
38
- } = React.useContext(DSTabsCTX.DSTabsContext);
39
- return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({}, containerProps), {}, {
40
- ref: innerRef,
41
- "data-testid": DSTabsDatatestid.DSTabsDatatestid.TABS_CONTAINER,
42
- children: [/*#__PURE__*/_jsx__default["default"](styles.StyledTabBarContainer, {
43
- "aria-label": tabsListAriaLabel,
44
- role: "tablist"
45
- }, void 0, _TabBar || (_TabBar = /*#__PURE__*/_jsx__default["default"](TabBar.TabBar, {})), tabBarExtraContent), _TabsPanels || (_TabsPanels = /*#__PURE__*/_jsx__default["default"](TabsPanels.TabsPanels, {}))]
46
- }));
47
- };
48
-
49
- exports.TabsContent = TabsContent;
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var styled = require('styled-components');
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
-
11
- const StyledTabBarContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
12
- componentId: "sc-vm3k1y-0"
13
- })(["display:flex;overflow-x:hidden;"]);
14
-
15
- exports.StyledTabBarContainer = StyledTabBarContainer;
@@ -1,77 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _jsx = require('@babel/runtime/helpers/jsx');
6
- require('core-js/modules/esnext.async-iterator.map.js');
7
- require('core-js/modules/esnext.iterator.map.js');
8
- var React = require('react');
9
- var SwipeableViews = require('react-swipeable-views');
10
- var helpers = require('../../utils/helpers.js');
11
- var styles = require('./styles.js');
12
- var DSTabsCTX = require('../../DSTabsCTX.js');
13
- var useTabsCallbacks = require('../../utils/hooks/useTabsCallbacks.js');
14
- var jsxRuntime = require('react/jsx-runtime');
15
-
16
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
-
18
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
19
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
- var SwipeableViews__default = /*#__PURE__*/_interopDefaultLegacy(SwipeableViews);
21
-
22
- const TabsPanels = () => {
23
- const {
24
- actualActiveTab,
25
- focusableTabsRef,
26
- props: {
27
- animated,
28
- enableMouseEvents,
29
- onlyRenderActiveTab,
30
- children: tabs,
31
- isDSMobile
32
- }
33
- } = React.useContext(DSTabsCTX.DSTabsContext);
34
- const {
35
- handleOnTabChange,
36
- handleOnMouseDown
37
- } = useTabsCallbacks.useTabsCallbacks();
38
- const handleOnChangeIndex = React.useCallback(index => {
39
- handleOnTabChange(helpers.getIdByIndex(tabs, index));
40
- if (focusableTabsRef.current) focusableTabsRef.current[index].click();
41
- }, [focusableTabsRef, handleOnTabChange, tabs]);
42
- const panels = React.useMemo(() => React__default["default"].Children.map(tabs, tab => {
43
- const {
44
- tabId: panelId = '',
45
- style,
46
- children: content
47
- } = tab.props;
48
- const isActive = actualActiveTab === panelId;
49
- const shouldRender = !onlyRenderActiveTab || isActive;
50
- return shouldRender && /*#__PURE__*/_jsx__default["default"](styles.StyledPanelContainer, {
51
- id: panelId,
52
- "aria-labelledby": "".concat(panelId, "-label"),
53
- "aria-hidden": !isActive,
54
- "data-panel-id": panelId,
55
- "data-testid": "ds-tabs-tab-panel",
56
- hidden: !isActive,
57
- onMouseDown: handleOnMouseDown,
58
- role: "tabpanel",
59
- style: style,
60
- isDSMobile: isDSMobile
61
- }, panelId, content);
62
- }), [actualActiveTab, handleOnMouseDown, isDSMobile, onlyRenderActiveTab, tabs]);
63
-
64
- if (animated) {
65
- return /*#__PURE__*/_jsx__default["default"](SwipeableViews__default["default"], {
66
- enableMouseEvents: enableMouseEvents,
67
- index: helpers.getIndexById(tabs, actualActiveTab),
68
- onChangeIndex: handleOnChangeIndex
69
- }, void 0, panels);
70
- }
71
-
72
- return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
73
- children: panels
74
- });
75
- };
76
-
77
- exports.TabsPanels = TabsPanels;
@@ -1,25 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var styled = require('styled-components');
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
-
11
- const StyledPanelContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
12
- componentId: "sc-oxw5jq-0"
13
- })(["padding-top:8px;&:focus{outline:none;}", " ", ""], _ref => {
14
- let {
15
- hidden
16
- } = _ref;
17
- return hidden ? 'visibility: hidden;' : '';
18
- }, _ref2 => {
19
- let {
20
- isDSMobile
21
- } = _ref2;
22
- return isDSMobile ? "padding-top: 0;" : "";
23
- });
24
-
25
- exports.StyledPanelContainer = StyledPanelContainer;
package/cjs/propTypes.js DELETED
@@ -1,33 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var reactDesc = require('react-desc');
6
- var constants = require('./utils/constants.js');
7
-
8
- const tabPropTypes = {
9
- tabId: reactDesc.PropTypes.string.description('Unique Tab id.').defaultValue(''),
10
- title: reactDesc.PropTypes.string.description('Tab title.').defaultValue(''),
11
- required: reactDesc.PropTypes.bool.description('Show a required mark next to the title.').defaultValue(false),
12
- disabled: reactDesc.PropTypes.bool.description('Disables Tab.').defaultValue(false)
13
- };
14
- const tabsPropTypes = {
15
- animated: reactDesc.PropTypes.bool.description('Whether the Tab transition should animate or not.').defaultValue(true),
16
- enableMouseEvents: reactDesc.PropTypes.bool.description('Enables Tab transition with mouse drag events.').defaultValue(false),
17
- allowTextSelection: reactDesc.PropTypes.bool.description('Allows text selection when mouse drag events are active.').defaultValue(false),
18
- onTabChange: reactDesc.PropTypes.func.description('Handler when a user clicks on a different Tab.').defaultValue('() => {}'),
19
- type: reactDesc.PropTypes.oneOf(constants.TabTypesValuesAsArray).description('Tab type.').defaultValue(constants.TabTypesValuesAsArray[0]),
20
- tabBarExtraContent: reactDesc.PropTypes.element.description('Extra content next to the Tab Bar.').defaultValue(undefined),
21
- onlyRenderActiveTab: reactDesc.PropTypes.bool.description('Only renders the active Tab in the DOM.').defaultValue(false),
22
- withCarousel: reactDesc.PropTypes.bool.description('Activate carousel behavior.').defaultValue(false),
23
- activeTab: reactDesc.PropTypes.string.description('Passing a value makes DSTabs a controlled component.').defaultValue('First DSTab children.'),
24
- children: reactDesc.PropTypes.node.description('Use DSTab component as children.').isRequired,
25
- tabsListAriaLabel: reactDesc.PropTypes.string.description('Aria label for the list.').defaultValue('Tab list.'),
26
- containerProps: reactDesc.PropTypes.object.description('Additional properties for the container.').defaultValue({}),
27
- innerRef: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.func, reactDesc.PropTypes.shape({
28
- current: reactDesc.PropTypes.any
29
- })]).description('Ref to the container.').defaultValue(undefined)
30
- };
31
-
32
- exports.tabPropTypes = tabPropTypes;
33
- exports.tabsPropTypes = tabsPropTypes;
@@ -1,28 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- const TabTypes = {
6
- NORMAL: 'normal',
7
- NORMAL_SMALL: 'normal_small',
8
- SUBTABS: 'subtabs'
9
- };
10
- const TabTypesValuesAsArray = Object.values(TabTypes);
11
- const MOBILE_GRADIENT_WIDTH = 24;
12
- const defaultIndicatorStyles = {
13
- left: '0px',
14
- width: '0px',
15
- backgroundWithTransparent: ''
16
- };
17
- const gradientOffsetsAccordingType = {
18
- normal_small: 14,
19
- normal: 16,
20
- subtabs: 16,
21
- fixedTabsHeaders: 0
22
- };
23
-
24
- exports.MOBILE_GRADIENT_WIDTH = MOBILE_GRADIENT_WIDTH;
25
- exports.TabTypes = TabTypes;
26
- exports.TabTypesValuesAsArray = TabTypesValuesAsArray;
27
- exports.defaultIndicatorStyles = defaultIndicatorStyles;
28
- exports.gradientOffsetsAccordingType = gradientOffsetsAccordingType;
@@ -1,75 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var constants = require('./constants.js');
6
-
7
- const isElementVisible = (tab, tabList) => {
8
- const tabDimensions = tab.getBoundingClientRect();
9
- const tabListDimensions = tabList.getBoundingClientRect();
10
- return tabDimensions.left <= tabListDimensions.left ? tabListDimensions.left - tabDimensions.left <= tabDimensions.width : tabDimensions.right - tabListDimensions.right <= tabDimensions.width;
11
- };
12
- const isElementVisibleCarousel = function (tab, tabContainer) {
13
- let firstOrLastItem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
14
-
15
- if (tab && tabContainer) {
16
- const tabDimensions = tab.getBoundingClientRect();
17
- const tabContainerDimensions = tabContainer.getBoundingClientRect();
18
- const offset = firstOrLastItem ? 16 : 32;
19
- const tabDimensionsLeft = Math.floor(tabDimensions.left - offset);
20
- const tabDimensionsRight = Math.floor(tabDimensions.right + offset);
21
- const tabContainerDimensionsLeft = Math.floor(tabContainerDimensions.left);
22
- const tabContainerDimensionsRight = Math.floor(tabContainerDimensions.right);
23
- return tabDimensionsLeft >= tabContainerDimensionsLeft && tabDimensionsRight <= tabContainerDimensionsRight;
24
- }
25
-
26
- return false;
27
- };
28
- const centerTab = _ref => {
29
- let {
30
- e,
31
- listRef
32
- } = _ref;
33
-
34
- if (listRef.current) {
35
- const {
36
- offsetLeft
37
- } = e === null || e === void 0 ? void 0 : e.target;
38
- const {
39
- width: tabWidth
40
- } = (e === null || e === void 0 ? void 0 : e.target).getBoundingClientRect();
41
- const {
42
- width: listWidth
43
- } = listRef.current.getBoundingClientRect();
44
- const extraSideSpace = listWidth - tabWidth;
45
- const leftOffsetToCenter = extraSideSpace > 0 ? extraSideSpace / 2 : 0;
46
- const centeredLeftOffset = offsetLeft > leftOffsetToCenter ? offsetLeft - leftOffsetToCenter : 0;
47
- listRef.current.scrollTo({
48
- top: 0,
49
- left: centeredLeftOffset,
50
- behavior: 'smooth'
51
- });
52
- e === null || e === void 0 ? void 0 : e.preventDefault();
53
- }
54
- };
55
- const getVisibleDimensions = (node, referenceNode) => {
56
- const nodeDimensions = node.getBoundingClientRect();
57
- const referenceNodeDimensions = referenceNode.getBoundingClientRect();
58
- return {
59
- width: Math.min(node.clientWidth, referenceNodeDimensions.left + referenceNode.clientWidth - nodeDimensions.left, node.clientWidth - (referenceNodeDimensions.left - nodeDimensions.left)),
60
- height: Math.min(node.clientHeight, referenceNodeDimensions.top + referenceNode.clientHeight - nodeDimensions.top, node.clientHeight - (referenceNodeDimensions.top - nodeDimensions.top))
61
- };
62
- };
63
- const getIndexById = (children, activeId) => children && children.findIndex(item => item.props.tabId === activeId);
64
- const getIdByIndex = (children, index) => children && children[index].props.tabId || '';
65
- const shouldHaveLeftGradient = scrollLeft => Math.abs(scrollLeft) > constants.MOBILE_GRADIENT_WIDTH;
66
- const shouldHaveRightGradient = (scrollLeft, clientWidth, scrollWidth) => Math.abs(scrollLeft) <= scrollWidth - (clientWidth + constants.MOBILE_GRADIENT_WIDTH);
67
-
68
- exports.centerTab = centerTab;
69
- exports.getIdByIndex = getIdByIndex;
70
- exports.getIndexById = getIndexById;
71
- exports.getVisibleDimensions = getVisibleDimensions;
72
- exports.isElementVisible = isElementVisible;
73
- exports.isElementVisibleCarousel = isElementVisibleCarousel;
74
- exports.shouldHaveLeftGradient = shouldHaveLeftGradient;
75
- exports.shouldHaveRightGradient = shouldHaveRightGradient;
@@ -1,61 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var DSTabsCTX = require('../../DSTabsCTX.js');
7
-
8
- /* eslint-disable max-statements */
9
- const useKeyboardNavigation = () => {
10
- const {
11
- focusableTabsRef
12
- } = React.useContext(DSTabsCTX.DSTabsContext);
13
- const {
14
- firstSubtabInternalRef,
15
- lastTabInternalRef
16
- } = React.useContext(DSTabsCTX.DSTabsCrossRefContext);
17
- const handleOnKeyDown = React.useCallback(e => {
18
- if (e.key === 'ArrowRight' && focusableTabsRef.current) {
19
- var _focusableTabsRef$cur, _focusableTabsRef$cur2;
20
-
21
- e.preventDefault();
22
- e.stopPropagation();
23
- const nextTab = focusableTabsRef.current[(focusableTabsRef === null || focusableTabsRef === void 0 ? void 0 : (_focusableTabsRef$cur = focusableTabsRef.current) === null || _focusableTabsRef$cur === void 0 ? void 0 : (_focusableTabsRef$cur2 = _focusableTabsRef$cur.indexOf) === null || _focusableTabsRef$cur2 === void 0 ? void 0 : _focusableTabsRef$cur2.call(_focusableTabsRef$cur, e.target)) + 1];
24
- if (nextTab) nextTab.focus();
25
- if (!nextTab) return;
26
- }
27
-
28
- if (e.key === 'ArrowLeft' && focusableTabsRef.current) {
29
- var _focusableTabsRef$cur3, _focusableTabsRef$cur4;
30
-
31
- e.preventDefault();
32
- e.stopPropagation();
33
- const prevTab = focusableTabsRef.current[(focusableTabsRef === null || focusableTabsRef === void 0 ? void 0 : (_focusableTabsRef$cur3 = focusableTabsRef.current) === null || _focusableTabsRef$cur3 === void 0 ? void 0 : (_focusableTabsRef$cur4 = _focusableTabsRef$cur3.indexOf) === null || _focusableTabsRef$cur4 === void 0 ? void 0 : _focusableTabsRef$cur4.call(_focusableTabsRef$cur3, e.target)) - 1];
34
- if (prevTab) prevTab.focus();
35
- if (!prevTab) return;
36
- }
37
-
38
- if (e.key === 'ArrowDown') {
39
- var _firstSubtabInternalR;
40
-
41
- e.preventDefault();
42
- e.stopPropagation();
43
- const canFocusCrossTabs = (firstSubtabInternalRef === null || firstSubtabInternalRef === void 0 ? void 0 : firstSubtabInternalRef.current) && (lastTabInternalRef === null || lastTabInternalRef === void 0 ? void 0 : lastTabInternalRef.current);
44
- if (canFocusCrossTabs) (_firstSubtabInternalR = firstSubtabInternalRef.current) === null || _firstSubtabInternalR === void 0 ? void 0 : _firstSubtabInternalR.focus();
45
- }
46
-
47
- if (e.key === 'ArrowUp') {
48
- var _lastTabInternalRef$c;
49
-
50
- e.preventDefault();
51
- e.stopPropagation();
52
- const canFocusCrossTabs = (firstSubtabInternalRef === null || firstSubtabInternalRef === void 0 ? void 0 : firstSubtabInternalRef.current) && (lastTabInternalRef === null || lastTabInternalRef === void 0 ? void 0 : lastTabInternalRef.current);
53
- if (canFocusCrossTabs) (_lastTabInternalRef$c = lastTabInternalRef.current) === null || _lastTabInternalRef$c === void 0 ? void 0 : _lastTabInternalRef$c.focus();
54
- }
55
- }, [firstSubtabInternalRef, lastTabInternalRef, focusableTabsRef]);
56
- return {
57
- handleOnKeyDown
58
- };
59
- };
60
-
61
- exports.useKeyboardNavigation = useKeyboardNavigation;