@dxc-technology/halstack-react 0.0.0-11b4a77 → 0.0.0-11fed82

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