@dxc-technology/halstack-react 0.0.0-ecc45e2 → 0.0.0-ede733c

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 (216) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1329 -5
  4. package/HalstackContext.js +117 -77
  5. package/accordion/Accordion.js +118 -110
  6. package/accordion/Accordion.stories.tsx +103 -15
  7. package/accordion/Accordion.test.js +10 -11
  8. package/accordion/types.d.ts +1 -0
  9. package/accordion-group/AccordionGroup.d.ts +4 -3
  10. package/accordion-group/AccordionGroup.js +24 -65
  11. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  12. package/accordion-group/AccordionGroup.test.js +21 -46
  13. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  14. package/accordion-group/AccordionGroupAccordion.js +43 -0
  15. package/accordion-group/types.d.ts +7 -0
  16. package/alert/Alert.js +5 -9
  17. package/alert/Alert.stories.tsx +28 -0
  18. package/alert/Alert.test.js +1 -1
  19. package/bleed/Bleed.stories.tsx +1 -0
  20. package/box/Box.js +4 -6
  21. package/box/Box.stories.tsx +15 -0
  22. package/box/Box.test.js +1 -1
  23. package/box/types.d.ts +1 -0
  24. package/bulleted-list/BulletedList.js +4 -2
  25. package/bulleted-list/BulletedList.stories.tsx +7 -1
  26. package/bulleted-list/types.d.ts +31 -4
  27. package/button/Button.js +13 -16
  28. package/button/Button.stories.tsx +151 -9
  29. package/button/Button.test.js +1 -1
  30. package/button/types.d.ts +3 -3
  31. package/card/Card.js +12 -13
  32. package/card/Card.stories.tsx +12 -13
  33. package/card/Card.test.js +1 -1
  34. package/card/types.d.ts +1 -0
  35. package/checkbox/Checkbox.d.ts +2 -2
  36. package/checkbox/Checkbox.js +94 -101
  37. package/checkbox/Checkbox.stories.tsx +131 -59
  38. package/checkbox/Checkbox.test.js +94 -17
  39. package/checkbox/types.d.ts +4 -0
  40. package/chip/Chip.js +28 -49
  41. package/chip/Chip.stories.tsx +121 -26
  42. package/chip/Chip.test.js +3 -5
  43. package/common/OpenSans.css +68 -80
  44. package/common/coreTokens.d.ts +146 -0
  45. package/common/coreTokens.js +167 -0
  46. package/common/utils.d.ts +1 -0
  47. package/common/utils.js +4 -4
  48. package/common/variables.d.ts +1482 -0
  49. package/common/variables.js +994 -1137
  50. package/date-input/Calendar.d.ts +4 -0
  51. package/date-input/Calendar.js +258 -0
  52. package/date-input/DateInput.js +134 -237
  53. package/date-input/DateInput.stories.tsx +199 -33
  54. package/date-input/DateInput.test.js +494 -138
  55. package/date-input/DatePicker.d.ts +4 -0
  56. package/date-input/DatePicker.js +146 -0
  57. package/date-input/Icons.d.ts +6 -0
  58. package/date-input/Icons.js +75 -0
  59. package/date-input/YearPicker.d.ts +4 -0
  60. package/date-input/YearPicker.js +126 -0
  61. package/date-input/types.d.ts +51 -0
  62. package/dialog/Dialog.js +60 -73
  63. package/dialog/Dialog.stories.tsx +229 -121
  64. package/dialog/Dialog.test.js +302 -3
  65. package/dialog/types.d.ts +3 -2
  66. package/dropdown/Dropdown.js +43 -42
  67. package/dropdown/Dropdown.stories.tsx +210 -84
  68. package/dropdown/Dropdown.test.js +22 -27
  69. package/dropdown/DropdownMenu.js +12 -18
  70. package/dropdown/DropdownMenuItem.js +5 -18
  71. package/dropdown/types.d.ts +3 -3
  72. package/file-input/FileInput.d.ts +2 -2
  73. package/file-input/FileInput.js +174 -220
  74. package/file-input/FileInput.stories.tsx +122 -11
  75. package/file-input/FileInput.test.js +14 -14
  76. package/file-input/FileItem.d.ts +4 -14
  77. package/file-input/FileItem.js +39 -63
  78. package/file-input/types.d.ts +17 -0
  79. package/flex/Flex.d.ts +1 -1
  80. package/flex/Flex.js +33 -19
  81. package/flex/Flex.stories.tsx +35 -26
  82. package/flex/types.d.ts +83 -7
  83. package/footer/Footer.js +6 -8
  84. package/footer/Footer.stories.tsx +99 -1
  85. package/footer/Footer.test.js +14 -26
  86. package/footer/types.d.ts +1 -0
  87. package/grid/Grid.d.ts +7 -0
  88. package/grid/Grid.js +91 -0
  89. package/grid/Grid.stories.tsx +219 -0
  90. package/grid/types.d.ts +115 -0
  91. package/header/Header.d.ts +3 -2
  92. package/header/Header.js +21 -23
  93. package/header/Header.stories.tsx +152 -9
  94. package/header/Header.test.js +2 -2
  95. package/header/types.d.ts +3 -2
  96. package/heading/Heading.js +1 -1
  97. package/heading/Heading.test.js +1 -1
  98. package/inset/Inset.stories.tsx +2 -1
  99. package/layout/ApplicationLayout.d.ts +3 -3
  100. package/layout/ApplicationLayout.js +1 -1
  101. package/layout/ApplicationLayout.stories.tsx +1 -0
  102. package/layout/types.d.ts +2 -3
  103. package/link/Link.js +4 -4
  104. package/link/Link.stories.tsx +60 -0
  105. package/link/Link.test.js +2 -4
  106. package/link/types.d.ts +2 -2
  107. package/main.d.ts +3 -2
  108. package/main.js +9 -1
  109. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  110. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  111. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  112. package/{tabs-nav → nav-tabs}/Tab.js +38 -18
  113. package/nav-tabs/types.js +5 -0
  114. package/number-input/NumberInput.test.js +44 -8
  115. package/package.json +15 -20
  116. package/paginator/Icons.d.ts +5 -0
  117. package/paginator/Icons.js +16 -28
  118. package/paginator/Paginator.js +7 -15
  119. package/paginator/Paginator.stories.tsx +24 -0
  120. package/paginator/Paginator.test.js +45 -48
  121. package/paragraph/Paragraph.d.ts +3 -4
  122. package/paragraph/Paragraph.js +5 -5
  123. package/password-input/PasswordInput.test.js +14 -13
  124. package/progress-bar/ProgressBar.d.ts +2 -2
  125. package/progress-bar/ProgressBar.js +5 -5
  126. package/progress-bar/ProgressBar.stories.jsx +35 -2
  127. package/progress-bar/ProgressBar.test.js +1 -1
  128. package/progress-bar/types.d.ts +4 -3
  129. package/quick-nav/QuickNav.js +11 -12
  130. package/quick-nav/QuickNav.stories.tsx +111 -19
  131. package/radio-group/Radio.d.ts +1 -1
  132. package/radio-group/Radio.js +43 -28
  133. package/radio-group/RadioGroup.js +15 -13
  134. package/radio-group/RadioGroup.stories.tsx +132 -18
  135. package/radio-group/RadioGroup.test.js +124 -97
  136. package/radio-group/types.d.ts +2 -2
  137. package/resultsetTable/Icons.d.ts +7 -0
  138. package/resultsetTable/Icons.js +51 -0
  139. package/resultsetTable/ResultsetTable.js +49 -108
  140. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  141. package/resultsetTable/ResultsetTable.test.js +41 -64
  142. package/resultsetTable/types.d.ts +1 -1
  143. package/select/Listbox.d.ts +1 -1
  144. package/select/Listbox.js +5 -35
  145. package/select/Option.js +11 -24
  146. package/select/Select.js +59 -36
  147. package/select/Select.stories.tsx +494 -150
  148. package/select/Select.test.js +341 -288
  149. package/select/types.d.ts +2 -2
  150. package/sidenav/Icons.d.ts +7 -0
  151. package/sidenav/Icons.js +51 -0
  152. package/sidenav/Sidenav.d.ts +2 -2
  153. package/sidenav/Sidenav.js +66 -96
  154. package/sidenav/Sidenav.stories.tsx +165 -63
  155. package/sidenav/types.d.ts +21 -18
  156. package/slider/Slider.d.ts +2 -2
  157. package/slider/Slider.js +119 -95
  158. package/slider/Slider.stories.tsx +64 -1
  159. package/slider/Slider.test.js +88 -25
  160. package/slider/types.d.ts +4 -0
  161. package/spinner/Spinner.js +17 -23
  162. package/spinner/Spinner.stories.jsx +53 -27
  163. package/spinner/Spinner.test.js +1 -1
  164. package/switch/Switch.d.ts +3 -3
  165. package/switch/Switch.js +96 -85
  166. package/switch/Switch.stories.tsx +33 -0
  167. package/switch/Switch.test.js +27 -14
  168. package/switch/types.d.ts +8 -3
  169. package/table/Table.js +3 -3
  170. package/table/Table.stories.jsx +80 -1
  171. package/table/Table.test.js +2 -2
  172. package/tabs/Tab.d.ts +4 -0
  173. package/tabs/Tab.js +132 -0
  174. package/tabs/Tabs.js +358 -108
  175. package/tabs/Tabs.stories.tsx +119 -5
  176. package/tabs/Tabs.test.js +220 -10
  177. package/tabs/types.d.ts +12 -2
  178. package/tag/Tag.js +8 -10
  179. package/tag/Tag.stories.tsx +14 -1
  180. package/tag/Tag.test.js +1 -1
  181. package/text-input/Icons.d.ts +8 -0
  182. package/text-input/Icons.js +60 -0
  183. package/text-input/Suggestion.js +40 -11
  184. package/text-input/Suggestions.d.ts +4 -0
  185. package/text-input/Suggestions.js +134 -0
  186. package/text-input/TextInput.js +189 -277
  187. package/text-input/TextInput.stories.tsx +280 -184
  188. package/text-input/TextInput.test.js +736 -725
  189. package/text-input/types.d.ts +21 -2
  190. package/textarea/Textarea.js +3 -4
  191. package/textarea/Textarea.stories.jsx +60 -1
  192. package/textarea/Textarea.test.js +2 -4
  193. package/toggle-group/ToggleGroup.d.ts +2 -2
  194. package/toggle-group/ToggleGroup.js +7 -4
  195. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  196. package/toggle-group/ToggleGroup.test.js +1 -1
  197. package/toggle-group/types.d.ts +1 -1
  198. package/typography/Typography.d.ts +2 -2
  199. package/typography/Typography.js +14 -113
  200. package/typography/Typography.stories.tsx +1 -1
  201. package/useTheme.d.ts +1234 -1
  202. package/useTheme.js +1 -1
  203. package/useTranslatedLabels.d.ts +84 -1
  204. package/utils/BaseTypography.d.ts +21 -0
  205. package/utils/BaseTypography.js +108 -0
  206. package/utils/FocusLock.d.ts +13 -0
  207. package/utils/FocusLock.js +138 -0
  208. package/wizard/Wizard.js +2 -2
  209. package/wizard/Wizard.stories.tsx +20 -0
  210. package/wizard/Wizard.test.js +1 -1
  211. package/wizard/types.d.ts +5 -6
  212. package/common/RequiredComponent.js +0 -32
  213. /package/{tabs-nav → grid}/types.js +0 -0
  214. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  215. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  216. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
package/tabs/Tabs.js CHANGED
@@ -17,24 +17,61 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
- var _Tabs = _interopRequireDefault(require("@material-ui/core/Tabs"));
21
-
22
- var _Tab = _interopRequireDefault(require("@material-ui/core/Tab"));
23
-
24
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
25
21
 
26
- var _variables = require("../common/variables.js");
27
-
28
- var _Badge = _interopRequireDefault(require("../badge/Badge"));
22
+ var _variables = require("../common/variables");
29
23
 
30
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
31
25
 
32
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
26
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
27
+
28
+ var _Tab = _interopRequireDefault(require("./Tab"));
29
+
30
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
33
31
 
34
32
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
33
 
36
34
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
35
 
36
+ var arrowIcons = {
37
+ left: /*#__PURE__*/_react["default"].createElement("svg", {
38
+ focusable: "false",
39
+ viewBox: "0 0 24 24",
40
+ "aria-hidden": "true"
41
+ }, /*#__PURE__*/_react["default"].createElement("path", {
42
+ d: "M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"
43
+ })),
44
+ right: /*#__PURE__*/_react["default"].createElement("svg", {
45
+ focusable: "false",
46
+ viewBox: "0 0 24 24",
47
+ "aria-hidden": "true"
48
+ }, /*#__PURE__*/_react["default"].createElement("path", {
49
+ d: "M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"
50
+ }))
51
+ };
52
+
53
+ var useResize = function useResize(refTabList) {
54
+ var _useState = (0, _react.useState)(0),
55
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
56
+ viewWidth = _useState2[0],
57
+ setViewWidth = _useState2[1];
58
+
59
+ var handleWindowSizeChange = (0, _react.useCallback)(function () {
60
+ var _refTabList$current;
61
+
62
+ setViewWidth(refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current = refTabList.current) === null || _refTabList$current === void 0 ? void 0 : _refTabList$current.offsetWidth);
63
+ }, [refTabList]);
64
+ (0, _react.useEffect)(function () {
65
+ window.addEventListener("load", handleWindowSizeChange);
66
+ window.addEventListener("resize", handleWindowSizeChange);
67
+ return function () {
68
+ window.removeEventListener("load", handleWindowSizeChange);
69
+ window.removeEventListener("resize", handleWindowSizeChange);
70
+ };
71
+ }, [handleWindowSizeChange]);
72
+ return viewWidth;
73
+ };
74
+
38
75
  var DxcTabs = function DxcTabs(_ref) {
39
76
  var defaultActiveTabIndex = _ref.defaultActiveTabIndex,
40
77
  activeTabIndex = _ref.activeTabIndex,
@@ -46,59 +83,295 @@ var DxcTabs = function DxcTabs(_ref) {
46
83
  iconPosition = _ref$iconPosition === void 0 ? "top" : _ref$iconPosition,
47
84
  _ref$tabIndex = _ref.tabIndex,
48
85
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
49
-
50
- var _useState = (0, _react.useState)(defaultActiveTabIndex !== null && defaultActiveTabIndex !== void 0 ? defaultActiveTabIndex : 0),
51
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
52
- innerActiveTabIndex = _useState2[0],
53
- setInnerActiveTabIndex = _useState2[1];
54
-
55
86
  var colorsTheme = (0, _useTheme["default"])();
56
87
  var hasLabelAndIcon = tabs && tabs.filter(function (tab) {
57
88
  return tab.label && tab.icon;
58
89
  }).length > 0;
59
-
60
- var handleChange = function handleChange(event, newValue) {
90
+ var firstFocus = tabs && tabs.findIndex(function (tab) {
91
+ return !tab.isDisabled;
92
+ });
93
+
94
+ var _useState3 = (0, _react.useState)(tabs && defaultActiveTabIndex && !tabs[defaultActiveTabIndex].isDisabled ? defaultActiveTabIndex : firstFocus),
95
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
96
+ innerActiveTabIndex = _useState4[0],
97
+ setInnerActiveTabIndex = _useState4[1];
98
+
99
+ var _useState5 = (0, _react.useState)(0),
100
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
101
+ activeIndicatorWidth = _useState6[0],
102
+ setActiveIndicatorWidth = _useState6[1];
103
+
104
+ var _useState7 = (0, _react.useState)(0),
105
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
106
+ activeIndicatorLeft = _useState8[0],
107
+ setActiveIndicatorLeft = _useState8[1];
108
+
109
+ var _useState9 = (0, _react.useState)(0),
110
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
111
+ translateScroll = _useState10[0],
112
+ setTranslateScroll = _useState10[1];
113
+
114
+ var _useState11 = (0, _react.useState)(true),
115
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
116
+ scrollRightEnabled = _useState12[0],
117
+ setScrollRightEnabled = _useState12[1];
118
+
119
+ var _useState13 = (0, _react.useState)(false),
120
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
121
+ scrollLeftEnabled = _useState14[0],
122
+ setScrollLeftEnabled = _useState14[1];
123
+
124
+ var _useState15 = (0, _react.useState)(0),
125
+ _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
126
+ countClick = _useState16[0],
127
+ setCountClick = _useState16[1];
128
+
129
+ var _useState17 = (0, _react.useState)(0),
130
+ _useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
131
+ totalTabsWidth = _useState18[0],
132
+ setTotalTabsWidth = _useState18[1];
133
+
134
+ var _useState19 = (0, _react.useState)(activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : innerActiveTabIndex),
135
+ _useState20 = (0, _slicedToArray2["default"])(_useState19, 2),
136
+ currentFocusIndex = _useState20[0],
137
+ setCurrentFocusIndex = _useState20[1];
138
+
139
+ var _useState21 = (0, _react.useState)(activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : innerActiveTabIndex),
140
+ _useState22 = (0, _slicedToArray2["default"])(_useState21, 2),
141
+ temporalFocusIndex = _useState22[0],
142
+ setTemporalFocusIndex = _useState22[1];
143
+
144
+ var _useState23 = (0, _react.useState)(0),
145
+ _useState24 = (0, _slicedToArray2["default"])(_useState23, 2),
146
+ minHeightTabs = _useState24[0],
147
+ setMinHeightTabs = _useState24[1];
148
+
149
+ var refTabs = (0, _react.useRef)([]);
150
+ var refTabList = (0, _react.useRef)(null);
151
+ var viewWidth = useResize(refTabList);
152
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
153
+ var enabledIndicator = (0, _react.useMemo)(function () {
154
+ return viewWidth < totalTabsWidth;
155
+ }, [viewWidth]);
156
+ (0, _react.useEffect)(function () {
157
+ var _refTabs$current, _refTabs$current2, _refTabs$current3;
158
+
159
+ var sumWidth = refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current = refTabs.current) === null || _refTabs$current === void 0 ? void 0 : _refTabs$current.reduce(function (count, obj) {
160
+ return count + obj.offsetWidth;
161
+ }, 0);
162
+ setTotalTabsWidth(sumWidth);
163
+ setActiveIndicatorWidth(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current2 = refTabs.current[activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : innerActiveTabIndex]) === null || _refTabs$current2 === void 0 ? void 0 : _refTabs$current2.offsetWidth);
164
+ setActiveIndicatorLeft(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current3 = refTabs.current[activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : innerActiveTabIndex]) === null || _refTabs$current3 === void 0 ? void 0 : _refTabs$current3.offsetLeft);
165
+ }, [refTabs]);
166
+ (0, _react.useEffect)(function () {
167
+ var _refTabList$current2;
168
+
169
+ setMinHeightTabs((refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current2 = refTabList.current) === null || _refTabList$current2 === void 0 ? void 0 : _refTabList$current2.offsetHeight) + 1);
170
+ }, [refTabList]);
171
+ (0, _react.useEffect)(function () {
172
+ if (activeTabIndex >= 0) {
173
+ var _refTabs$current$acti, _refTabs$current$acti2;
174
+
175
+ setActiveIndicatorWidth(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current$acti = refTabs.current[activeTabIndex]) === null || _refTabs$current$acti === void 0 ? void 0 : _refTabs$current$acti.offsetWidth);
176
+ setActiveIndicatorLeft(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current$acti2 = refTabs.current[activeTabIndex]) === null || _refTabs$current$acti2 === void 0 ? void 0 : _refTabs$current$acti2.offsetLeft);
177
+ }
178
+ }, [activeTabIndex]);
179
+
180
+ var handleSelected = function handleSelected(newValue) {
61
181
  activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : setInnerActiveTabIndex(newValue);
62
182
  onTabClick === null || onTabClick === void 0 ? void 0 : onTabClick(newValue);
183
+
184
+ if (activeTabIndex === undefined) {
185
+ var _refTabs$current$newV, _refTabs$current$newV2;
186
+
187
+ setActiveIndicatorWidth(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current$newV = refTabs.current[newValue]) === null || _refTabs$current$newV === void 0 ? void 0 : _refTabs$current$newV.offsetWidth);
188
+ setActiveIndicatorLeft(refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current$newV2 = refTabs.current[newValue]) === null || _refTabs$current$newV2 === void 0 ? void 0 : _refTabs$current$newV2.offsetLeft);
189
+ }
63
190
  };
64
191
 
65
- var getLabelForTab = function getLabelForTab(tab) {
66
- return /*#__PURE__*/_react["default"].createElement(ParentLabelSpan, null, /*#__PURE__*/_react["default"].createElement(MainLabelContainer, {
67
- hasBadge: tab.notificationNumber
68
- }, /*#__PURE__*/_react["default"].createElement(TabLabelContainer, {
69
- hasLabelAndIcon: hasLabelAndIcon,
70
- iconPosition: iconPosition
71
- }, tab.icon && /*#__PURE__*/_react["default"].createElement(TabIconContainer, {
72
- hasLabelAndIcon: hasLabelAndIcon,
73
- iconPosition: iconPosition
74
- }, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement(TabIcon, {
75
- src: tab.icon
76
- }) : tab.icon), /*#__PURE__*/_react["default"].createElement(LabelTextContainer, null, tab.label))), tab.notificationNumber && tab.notificationNumber !== false && /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
77
- hasLabelAndIcon: hasLabelAndIcon,
78
- iconPosition: iconPosition
79
- }, /*#__PURE__*/_react["default"].createElement(_Badge["default"], {
80
- notificationText: tab.notificationNumber > 99 ? "+99" : tab.notificationNumber
81
- })));
192
+ var scrollLeft = function scrollLeft() {
193
+ var _refTabList$current3;
194
+
195
+ var scrollWidth = (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current3 = refTabList.current) === null || _refTabList$current3 === void 0 ? void 0 : _refTabList$current3.offsetWidth) * 0.75;
196
+ var moveX = 0;
197
+
198
+ if (countClick <= scrollWidth) {
199
+ moveX = 0;
200
+ setScrollLeftEnabled(false);
201
+ setScrollRightEnabled(true);
202
+ } else {
203
+ moveX = countClick - scrollWidth;
204
+ setScrollRightEnabled(true);
205
+ setScrollLeftEnabled(true);
206
+ }
207
+
208
+ setTranslateScroll(-moveX);
209
+ setCountClick(moveX);
210
+ };
211
+
212
+ var scrollRight = function scrollRight() {
213
+ var _refTabList$current4, _refTabList$current5;
214
+
215
+ var scrollWidth = (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current4 = refTabList.current) === null || _refTabList$current4 === void 0 ? void 0 : _refTabList$current4.offsetWidth) * 0.75;
216
+ var moveX = 0;
217
+
218
+ if (countClick + scrollWidth + (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current5 = refTabList.current) === null || _refTabList$current5 === void 0 ? void 0 : _refTabList$current5.offsetWidth) >= totalTabsWidth) {
219
+ var _refTabList$current6;
220
+
221
+ moveX = totalTabsWidth - (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current6 = refTabList.current) === null || _refTabList$current6 === void 0 ? void 0 : _refTabList$current6.offsetWidth);
222
+ setScrollRightEnabled(false);
223
+ setScrollLeftEnabled(true);
224
+ } else {
225
+ moveX = countClick + scrollWidth;
226
+ setScrollLeftEnabled(true);
227
+ setScrollRightEnabled(true);
228
+ }
229
+
230
+ setTranslateScroll(-moveX);
231
+ setCountClick(moveX);
232
+ };
233
+
234
+ var setPreviousTabFocus = function setPreviousTabFocus() {
235
+ setTemporalFocusIndex(function (temporalFocusIndex) {
236
+ var index = temporalFocusIndex === 0 ? tabs.length - 1 : temporalFocusIndex - 1;
237
+
238
+ while (tabs[index].isDisabled) {
239
+ index = index === 0 ? tabs.length - 1 : index - 1;
240
+ }
241
+
242
+ refTabs === null || refTabs === void 0 ? void 0 : refTabs.current[index].focus({
243
+ preventScroll: true
244
+ });
245
+ setScrollFocus(index);
246
+ return index;
247
+ });
248
+ };
249
+
250
+ var setNextTabFocus = function setNextTabFocus() {
251
+ setTemporalFocusIndex(function (temporalFocusIndex) {
252
+ var index = temporalFocusIndex === tabs.length - 1 ? 0 : temporalFocusIndex + 1;
253
+
254
+ while (tabs[index].isDisabled) {
255
+ index = index === tabs.length - 1 ? 0 : index + 1;
256
+ }
257
+
258
+ refTabs === null || refTabs === void 0 ? void 0 : refTabs.current[index].focus({
259
+ preventScroll: true
260
+ });
261
+ setScrollFocus(index);
262
+ return index;
263
+ });
264
+ };
265
+
266
+ var setScrollFocus = function setScrollFocus(actualIndex) {
267
+ var _refTabs$current4, _refTabList$current8;
268
+
269
+ var sumPrev = 0;
270
+ refTabs === null || refTabs === void 0 ? void 0 : (_refTabs$current4 = refTabs.current) === null || _refTabs$current4 === void 0 ? void 0 : _refTabs$current4.map(function (item, index) {
271
+ if (index <= actualIndex) {
272
+ sumPrev += item.offsetWidth;
273
+ }
274
+ });
275
+ var moveX = 0;
276
+
277
+ if (actualIndex === tabs.length - 1) {
278
+ var _refTabList$current7;
279
+
280
+ moveX = totalTabsWidth - (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current7 = refTabList.current) === null || _refTabList$current7 === void 0 ? void 0 : _refTabList$current7.offsetWidth);
281
+ setScrollLeftEnabled(true);
282
+ setScrollRightEnabled(false);
283
+ } else if (sumPrev > (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current8 = refTabList.current) === null || _refTabList$current8 === void 0 ? void 0 : _refTabList$current8.offsetWidth)) {
284
+ var _refTabList$current9;
285
+
286
+ moveX = sumPrev - (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current9 = refTabList.current) === null || _refTabList$current9 === void 0 ? void 0 : _refTabList$current9.offsetWidth) + 1; //plus 1px for the outline
287
+
288
+ setScrollLeftEnabled(true);
289
+ setScrollRightEnabled(true);
290
+ } else {
291
+ setScrollLeftEnabled(false);
292
+ setScrollRightEnabled(true);
293
+ }
294
+
295
+ setTranslateScroll(-moveX);
296
+ setCountClick(moveX);
297
+ };
298
+
299
+ var handleOnKeyDown = function handleOnKeyDown(event) {
300
+ switch (event.key) {
301
+ case "Left":
302
+ case "ArrowLeft":
303
+ event.preventDefault();
304
+ setPreviousTabFocus();
305
+ break;
306
+
307
+ case "Right":
308
+ case "ArrowRight":
309
+ event.preventDefault();
310
+ setNextTabFocus();
311
+ break;
312
+
313
+ case "Enter":
314
+ case " ":
315
+ event.preventDefault();
316
+ setCurrentFocusIndex(temporalFocusIndex);
317
+ handleSelected(temporalFocusIndex);
318
+ break;
319
+
320
+ case "Tab":
321
+ if (temporalFocusIndex !== currentFocusIndex) {
322
+ event.preventDefault();
323
+ setTemporalFocusIndex(currentFocusIndex);
324
+ refTabs === null || refTabs === void 0 ? void 0 : refTabs.current[currentFocusIndex].focus();
325
+ }
326
+
327
+ handleSelected(currentFocusIndex);
328
+ break;
329
+ }
330
+ };
331
+
332
+ var isTabActive = function isTabActive(index) {
333
+ return activeTabIndex >= 0 ? activeTabIndex === index : innerActiveTabIndex === index;
82
334
  };
83
335
 
336
+ var isActiveIndicatorDisabled = firstFocus === -1 || tabs && activeTabIndex >= 0 && tabs[activeTabIndex].isDisabled;
84
337
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
85
338
  theme: colorsTheme.tabs
86
- }, /*#__PURE__*/_react["default"].createElement(DxCTabs, {
87
- margin: margin,
339
+ }, /*#__PURE__*/_react["default"].createElement(TabsContainer, {
340
+ margin: margin
341
+ }, /*#__PURE__*/_react["default"].createElement(Underline, null), /*#__PURE__*/_react["default"].createElement(Tabs, {
88
342
  hasLabelAndIcon: hasLabelAndIcon,
89
343
  iconPosition: iconPosition
90
- }, /*#__PURE__*/_react["default"].createElement(Underline, null), /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
91
- value: activeTabIndex !== null && activeTabIndex !== void 0 ? activeTabIndex : innerActiveTabIndex,
92
- onChange: handleChange,
93
- variant: "scrollable",
94
- scrollButtons: "auto"
344
+ }, /*#__PURE__*/_react["default"].createElement(ScrollIndicator, {
345
+ onClick: scrollLeft,
346
+ enabled: enabledIndicator,
347
+ disabled: !scrollLeftEnabled,
348
+ "aria-label": translatedLabels.tabs.scrollLeft,
349
+ tabIndex: scrollLeftEnabled ? tabIndex : -1,
350
+ minHeightTabs: minHeightTabs
351
+ }, arrowIcons.left), /*#__PURE__*/_react["default"].createElement(TabsContent, null, /*#__PURE__*/_react["default"].createElement(TabsContentScroll, {
352
+ translateScroll: translateScroll,
353
+ ref: refTabList,
354
+ enabled: enabledIndicator
355
+ }, /*#__PURE__*/_react["default"].createElement(TabList, {
356
+ role: "tablist",
357
+ onKeyDown: handleOnKeyDown,
358
+ minHeightTabs: minHeightTabs
95
359
  }, tabs.map(function (tab, i) {
96
360
  return /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
97
- tabIndex: (activeTabIndex === i || innerActiveTabIndex === i) && !tab.isDisabled ? tabIndex : -1,
361
+ tab: tab,
98
362
  key: "tab".concat(i).concat(tab.label),
99
- label: getLabelForTab(tab),
100
- disabled: tab.isDisabled,
101
- disableRipple: true,
363
+ active: isTabActive(i),
364
+ tabIndex: isTabActive(i) && !tab.isDisabled ? tabIndex : -1,
365
+ hasLabelAndIcon: hasLabelAndIcon,
366
+ iconPosition: iconPosition,
367
+ ref: function ref(el) {
368
+ return refTabs.current[i] = el;
369
+ },
370
+ onClick: function onClick() {
371
+ setCurrentFocusIndex(i);
372
+ setTemporalFocusIndex(i);
373
+ handleSelected(i);
374
+ },
102
375
  onMouseEnter: function onMouseEnter() {
103
376
  onTabHover === null || onTabHover === void 0 ? void 0 : onTabHover(i);
104
377
  },
@@ -106,34 +379,27 @@ var DxcTabs = function DxcTabs(_ref) {
106
379
  onTabHover === null || onTabHover === void 0 ? void 0 : onTabHover(null);
107
380
  }
108
381
  });
109
- }))));
382
+ })), /*#__PURE__*/_react["default"].createElement(ActiveIndicator, {
383
+ tabWidth: activeIndicatorWidth,
384
+ tabLeft: activeIndicatorLeft,
385
+ "aria-disabled": isActiveIndicatorDisabled
386
+ }))), /*#__PURE__*/_react["default"].createElement(ScrollIndicator, {
387
+ onClick: scrollRight,
388
+ enabled: enabledIndicator,
389
+ disabled: !scrollRightEnabled,
390
+ "aria-label": translatedLabels.tabs.scrollRight,
391
+ tabIndex: scrollRightEnabled ? tabIndex : -1,
392
+ minHeightTabs: minHeightTabs
393
+ }, arrowIcons.right))));
110
394
  };
111
395
 
112
- var ParentLabelSpan = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n"])));
113
-
114
- var TabLabelContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n align-items: center;\n"])), function (props) {
115
- return props.hasLabelAndIcon && props.iconPosition === "top" && "column" || "row";
116
- });
117
-
118
- var LabelTextContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])([""])));
119
-
120
- var BadgeContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n right: 0;\n top: ", ";\n width: 23px;\n height: 17px;\n"])), function (props) {
121
- return props.hasLabelAndIcon && props.iconPosition === "top" && "0" || "5px";
122
- });
123
-
124
- var MainLabelContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n margin-left: ", ";\n margin-right: ", ";\n"])), function (props) {
125
- return props.hasBadge && "35px" || "unset";
126
- }, function (props) {
127
- return props.hasBadge && "35px" || "unset";
128
- });
129
-
130
- var Underline = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n left: 0px;\n bottom: 0;\n width: 100%;\n height: ", ";\n position: absolute;\n background-color: ", ";\n"])), function (props) {
396
+ var Underline = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: ", ";\n background-color: ", ";\n"])), function (props) {
131
397
  return props.theme.dividerThickness;
132
398
  }, function (props) {
133
399
  return props.theme.dividerColor;
134
400
  });
135
401
 
136
- var DxCTabs = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n .MuiTabs-root {\n background: white;\n min-height: ", ";\n\n .MuiTabs-scroller {\n .MuiTabs-flexContainer + span {\n z-index: 4;\n }\n }\n .MuiTab-root {\n text-transform: ", " !important;\n }\n .MuiButtonBase-root {\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n\n padding: ", ";\n height: ", ";\n min-width: 90px;\n max-width: 360px;\n min-height: ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n font-weight: ", ";\n }\n &:not(.Mui-selected) {\n background-color: ", ";\n color: ", ";\n svg {\n color: ", ";\n }\n }\n &.Mui-selected {\n background-color: ", ";\n color: ", ";\n svg {\n color: ", ";\n }\n }\n &.Mui-disabled {\n background-color: ", " !important;\n cursor: not-allowed !important;\n pointer-events: all;\n color: ", ";\n font-style: ", ";\n svg {\n color: ", ";\n }\n outline: none !important;\n }\n &:focus {\n outline: ", " auto 1px;\n }\n }\n .MuiTabs-indicator {\n background-color: ", ";\n height: ", ";\n }\n .MuiTabs-scrollButtons {\n min-width: ", ";\n width: ", ";\n padding: 0;\n }\n @media (max-width: 599.95px) {\n .MuiTabs-scrollButtonsDesktop {\n display: flex;\n }\n }\n }\n"])), function (props) {
402
+ var TabsContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
137
403
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
138
404
  }, function (props) {
139
405
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
@@ -143,68 +409,52 @@ var DxCTabs = _styledComponents["default"].div(_templateObject7 || (_templateObj
143
409
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
144
410
  }, function (props) {
145
411
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
146
- }, function (props) {
147
- return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "48px" || "72px";
148
- }, function (props) {
149
- return props.theme.fontTextTransform;
150
- }, function (props) {
151
- return props.theme.fontFamily;
152
- }, function (props) {
153
- return props.theme.fontSize;
154
- }, function (props) {
155
- return props.theme.fontStyle;
156
- }, function (props) {
157
- return props.theme.fontWeight;
158
- }, function (props) {
159
- return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "12px 16px" || "8px 16px";
160
- }, function (props) {
412
+ });
413
+
414
+ var Tabs = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: ", ";\n height: ", ";\n display: flex;\n overflow: hidden;\n background-color: ", ";\n"])), function (props) {
161
415
  return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "48px" || "72px";
162
416
  }, function (props) {
163
417
  return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "48px" || "72px";
164
- }, function (props) {
165
- return "".concat(props.theme.hoverBackgroundColor, " !important");
166
- }, function (props) {
167
- return "".concat(props.theme.pressedBackgroundColor, " !important");
168
- }, function (props) {
169
- return "".concat(props.theme.pressedFontWeight, " !important");
170
418
  }, function (props) {
171
419
  return props.theme.unselectedBackgroundColor;
420
+ });
421
+
422
+ var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: ", ";\n justify-content: center;\n min-width: ", ";\n height: ", "px;\n padding: 0;\n border: none;\n background-color: #ffffff;\n font-size: 1.25rem;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n &:active {\n background-color: ", ";\n }\n &:disabled {\n cursor: default;\n svg {\n visibility: hidden;\n }\n &:focus {\n outline: none;\n }\n &:hover,\n &:active {\n background-color: transparent !important;\n }\n }\n\n svg {\n align-self: center;\n height: 20px;\n width: 20px;\n fill: ", ";\n }\n"])), function (props) {
423
+ return props.enabled ? "flex" : "none";
172
424
  }, function (props) {
173
- return props.theme.unselectedFontColor;
174
- }, function (props) {
175
- return props.theme.unselectedIconColor;
176
- }, function (props) {
177
- return props.theme.selectedBackgroundColor;
178
- }, function (props) {
179
- return props.theme.selectedFontColor;
180
- }, function (props) {
181
- return props.theme.selectedIconColor;
425
+ return props.theme.scrollButtonsWidth;
182
426
  }, function (props) {
183
- return props.theme.unselectedBackgroundColor;
427
+ return props.minHeightTabs - 1;
184
428
  }, function (props) {
185
- return props.theme.disabledFontColor;
429
+ return "".concat(props.theme.hoverBackgroundColor, " !important");
186
430
  }, function (props) {
187
- return props.theme.disabledFontStyle;
431
+ return props.theme.focusOutline;
188
432
  }, function (props) {
189
- return props.theme.disabledIconColor;
433
+ return "".concat(props.theme.pressedBackgroundColor, " !important");
190
434
  }, function (props) {
191
- return props.theme.focusOutline;
435
+ return props.theme.unselectedFontColor;
436
+ });
437
+
438
+ var ActiveIndicator = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n bottom: 0;\n left: ", ";\n width: ", ";\n height: ", ";\n background-color: ", ";\n &[aria-disabled=\"true\"] {\n background-color: ", ";\n display: none;\n }\n"])), function (props) {
439
+ return "".concat(props.tabLeft, "px");
192
440
  }, function (props) {
193
- return props.theme.selectedUnderlineColor;
441
+ return "".concat(props.tabWidth, "px");
194
442
  }, function (props) {
195
443
  return props.theme.selectedUnderlineThickness;
196
444
  }, function (props) {
197
- return props.theme.scrollButtonsWidth;
445
+ return props.theme.selectedUnderlineColor;
198
446
  }, function (props) {
199
- return props.theme.scrollButtonsWidth;
447
+ return props.theme.disabledFontColor;
200
448
  });
201
449
 
202
- var TabIcon = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])([""])));
450
+ var TabsContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 1 1 auto;\n display: inline-block;\n position: relative;\n white-space: nowrap;\n overflow-x: scroll;\n ::-webkit-scrollbar {\n display: none;\n }\n"])));
203
451
 
204
- var TabIconContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: 22px;\n max-width: 22px;\n margin-bottom: ", ";\n margin-right: ", ";\n overflow: hidden;\n display: flex;\n align-items: center;\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
205
- return props.hasLabelAndIcon && props.iconPosition === "top" && "8px" || "";
206
- }, function (props) {
207
- return props.hasLabelAndIcon && props.iconPosition === "left" && "12px" || "";
452
+ var TabList = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n min-height: ", "px;\n"])), function (props) {
453
+ return props.minHeightTabs;
454
+ });
455
+
456
+ var TabsContentScroll = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", ";\n transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n"])), function (props) {
457
+ return props.enabled ? "transform: translateX(".concat(props.translateScroll, "px)") : "transform: translateX(0px)";
208
458
  });
209
459
 
210
460
  var _default = DxcTabs;