@dxc-technology/halstack-react 0.0.0-e081e21 → 0.0.0-e1386cf

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 (348) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +294 -0
  5. package/accordion/Accordion.d.ts +4 -0
  6. package/accordion/Accordion.js +126 -170
  7. package/accordion/Accordion.stories.tsx +306 -0
  8. package/accordion/Accordion.test.js +71 -0
  9. package/accordion/types.d.ts +69 -0
  10. package/accordion/types.js +5 -0
  11. package/accordion-group/AccordionGroup.d.ts +7 -0
  12. package/accordion-group/AccordionGroup.js +61 -96
  13. package/accordion-group/AccordionGroup.stories.tsx +251 -0
  14. package/accordion-group/AccordionGroup.test.js +126 -0
  15. package/accordion-group/types.d.ts +79 -0
  16. package/accordion-group/types.js +5 -0
  17. package/alert/Alert.js +7 -4
  18. package/alert/Alert.stories.tsx +170 -0
  19. package/alert/Alert.test.js +92 -0
  20. package/alert/types.d.ts +1 -1
  21. package/badge/Badge.d.ts +4 -0
  22. package/badge/Badge.js +6 -4
  23. package/badge/types.d.ts +5 -0
  24. package/badge/types.js +5 -0
  25. package/bleed/Bleed.d.ts +3 -0
  26. package/bleed/Bleed.js +51 -0
  27. package/bleed/Bleed.stories.tsx +341 -0
  28. package/bleed/types.d.ts +37 -0
  29. package/bleed/types.js +5 -0
  30. package/box/Box.d.ts +4 -0
  31. package/box/Box.js +29 -65
  32. package/box/Box.stories.tsx +132 -0
  33. package/box/Box.test.js +18 -0
  34. package/box/types.d.ts +44 -0
  35. package/box/types.js +5 -0
  36. package/bulleted-list/BulletedList.d.ts +7 -0
  37. package/bulleted-list/BulletedList.js +123 -0
  38. package/bulleted-list/BulletedList.stories.tsx +200 -0
  39. package/bulleted-list/types.d.ts +11 -0
  40. package/bulleted-list/types.js +5 -0
  41. package/button/Button.d.ts +1 -1
  42. package/button/Button.js +61 -87
  43. package/button/Button.stories.tsx +259 -282
  44. package/button/Button.test.js +35 -0
  45. package/button/types.d.ts +14 -18
  46. package/card/Card.d.ts +4 -0
  47. package/card/Card.js +38 -77
  48. package/card/Card.stories.tsx +201 -0
  49. package/card/Card.test.js +50 -0
  50. package/card/ice-cream.jpg +0 -0
  51. package/card/types.d.ts +68 -0
  52. package/card/types.js +5 -0
  53. package/checkbox/Checkbox.d.ts +2 -2
  54. package/checkbox/Checkbox.js +108 -111
  55. package/checkbox/Checkbox.stories.tsx +208 -0
  56. package/checkbox/Checkbox.test.js +155 -0
  57. package/checkbox/types.d.ts +15 -8
  58. package/chip/Chip.d.ts +4 -0
  59. package/chip/Chip.js +16 -76
  60. package/chip/Chip.stories.tsx +119 -0
  61. package/chip/Chip.test.js +56 -0
  62. package/chip/types.d.ts +45 -0
  63. package/chip/types.js +5 -0
  64. package/common/variables.js +319 -380
  65. package/date-input/DateInput.d.ts +4 -0
  66. package/date-input/DateInput.js +65 -89
  67. package/date-input/DateInput.stories.tsx +138 -0
  68. package/date-input/DateInput.test.js +543 -0
  69. package/date-input/types.d.ts +107 -0
  70. package/date-input/types.js +5 -0
  71. package/dialog/Dialog.d.ts +4 -0
  72. package/dialog/Dialog.js +52 -74
  73. package/dialog/Dialog.stories.tsx +267 -0
  74. package/dialog/Dialog.test.js +70 -0
  75. package/dialog/types.d.ts +44 -0
  76. package/dialog/types.js +5 -0
  77. package/dropdown/Dropdown.d.ts +4 -0
  78. package/dropdown/Dropdown.js +243 -302
  79. package/dropdown/Dropdown.stories.tsx +312 -0
  80. package/dropdown/Dropdown.test.js +585 -0
  81. package/dropdown/DropdownMenu.d.ts +4 -0
  82. package/dropdown/DropdownMenu.js +80 -0
  83. package/dropdown/DropdownMenuItem.d.ts +4 -0
  84. package/dropdown/DropdownMenuItem.js +92 -0
  85. package/dropdown/types.d.ts +100 -0
  86. package/dropdown/types.js +5 -0
  87. package/file-input/FileInput.d.ts +4 -0
  88. package/file-input/FileInput.js +185 -166
  89. package/file-input/FileInput.stories.tsx +535 -0
  90. package/file-input/FileInput.test.js +498 -0
  91. package/file-input/FileItem.d.ts +4 -0
  92. package/file-input/FileItem.js +49 -81
  93. package/file-input/types.d.ts +129 -0
  94. package/file-input/types.js +5 -0
  95. package/flex/Flex.d.ts +4 -0
  96. package/flex/Flex.js +69 -0
  97. package/flex/Flex.stories.tsx +103 -0
  98. package/flex/types.d.ts +32 -0
  99. package/flex/types.js +5 -0
  100. package/footer/Footer.d.ts +4 -0
  101. package/footer/Footer.js +36 -148
  102. package/footer/Footer.stories.tsx +137 -0
  103. package/footer/Footer.test.js +109 -0
  104. package/footer/Icons.d.ts +2 -0
  105. package/footer/Icons.js +4 -4
  106. package/footer/types.d.ts +66 -0
  107. package/footer/types.js +5 -0
  108. package/header/Header.d.ts +7 -0
  109. package/header/Header.js +119 -140
  110. package/header/Header.stories.tsx +172 -0
  111. package/header/Header.test.js +79 -0
  112. package/header/Icons.d.ts +2 -0
  113. package/header/Icons.js +4 -29
  114. package/header/types.d.ts +48 -0
  115. package/header/types.js +5 -0
  116. package/heading/Heading.d.ts +4 -0
  117. package/heading/Heading.js +7 -24
  118. package/heading/Heading.stories.tsx +54 -0
  119. package/heading/Heading.test.js +186 -0
  120. package/heading/types.d.ts +33 -0
  121. package/heading/types.js +5 -0
  122. package/inset/Inset.d.ts +3 -0
  123. package/inset/Inset.js +51 -0
  124. package/inset/Inset.stories.tsx +229 -0
  125. package/inset/types.d.ts +37 -0
  126. package/inset/types.js +5 -0
  127. package/layout/ApplicationLayout.d.ts +20 -0
  128. package/layout/ApplicationLayout.js +71 -135
  129. package/layout/ApplicationLayout.stories.tsx +162 -0
  130. package/layout/Icons.d.ts +5 -0
  131. package/layout/Icons.js +13 -2
  132. package/layout/SidenavContext.d.ts +5 -0
  133. package/layout/SidenavContext.js +19 -0
  134. package/layout/types.d.ts +42 -0
  135. package/layout/types.js +5 -0
  136. package/link/Link.d.ts +4 -0
  137. package/link/Link.js +61 -108
  138. package/link/Link.stories.tsx +193 -0
  139. package/link/Link.test.js +83 -0
  140. package/link/types.d.ts +54 -0
  141. package/link/types.js +5 -0
  142. package/main.d.ts +12 -12
  143. package/main.js +64 -58
  144. package/number-input/NumberInput.d.ts +4 -0
  145. package/number-input/NumberInput.js +16 -68
  146. package/number-input/NumberInput.stories.tsx +115 -0
  147. package/number-input/NumberInput.test.js +542 -0
  148. package/number-input/NumberInputContext.d.ts +4 -0
  149. package/number-input/NumberInputContext.js +5 -2
  150. package/number-input/numberInputContextTypes.d.ts +19 -0
  151. package/number-input/numberInputContextTypes.js +5 -0
  152. package/number-input/types.d.ts +124 -0
  153. package/number-input/types.js +5 -0
  154. package/package.json +22 -16
  155. package/paginator/Paginator.js +19 -46
  156. package/paginator/Paginator.stories.tsx +63 -0
  157. package/paginator/Paginator.test.js +308 -0
  158. package/paragraph/Paragraph.d.ts +6 -0
  159. package/paragraph/Paragraph.js +38 -0
  160. package/paragraph/Paragraph.stories.tsx +44 -0
  161. package/password-input/PasswordInput.d.ts +4 -0
  162. package/password-input/PasswordInput.js +24 -57
  163. package/password-input/PasswordInput.stories.tsx +131 -0
  164. package/password-input/PasswordInput.test.js +181 -0
  165. package/password-input/types.d.ts +110 -0
  166. package/password-input/types.js +5 -0
  167. package/progress-bar/ProgressBar.d.ts +4 -0
  168. package/progress-bar/ProgressBar.js +60 -72
  169. package/progress-bar/ProgressBar.stories.jsx +60 -0
  170. package/progress-bar/ProgressBar.test.js +110 -0
  171. package/progress-bar/types.d.ts +36 -0
  172. package/progress-bar/types.js +5 -0
  173. package/quick-nav/QuickNav.d.ts +4 -0
  174. package/quick-nav/QuickNav.js +117 -0
  175. package/quick-nav/QuickNav.stories.tsx +342 -0
  176. package/quick-nav/types.d.ts +21 -0
  177. package/quick-nav/types.js +5 -0
  178. package/radio-group/Radio.d.ts +4 -0
  179. package/radio-group/Radio.js +156 -0
  180. package/radio-group/RadioGroup.d.ts +4 -0
  181. package/radio-group/RadioGroup.js +283 -0
  182. package/radio-group/RadioGroup.stories.tsx +101 -0
  183. package/radio-group/RadioGroup.test.js +722 -0
  184. package/radio-group/types.d.ts +114 -0
  185. package/radio-group/types.js +5 -0
  186. package/resultsetTable/ResultsetTable.d.ts +4 -0
  187. package/resultsetTable/ResultsetTable.js +10 -32
  188. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  189. package/resultsetTable/ResultsetTable.test.js +348 -0
  190. package/resultsetTable/types.d.ts +67 -0
  191. package/resultsetTable/types.js +5 -0
  192. package/select/Icons.d.ts +10 -0
  193. package/select/Icons.js +93 -0
  194. package/select/Listbox.d.ts +4 -0
  195. package/select/Listbox.js +198 -0
  196. package/select/Option.d.ts +4 -0
  197. package/select/Option.js +110 -0
  198. package/select/Select.d.ts +4 -0
  199. package/select/Select.js +160 -380
  200. package/select/Select.stories.tsx +627 -0
  201. package/select/Select.test.js +2233 -0
  202. package/select/types.d.ts +210 -0
  203. package/select/types.js +5 -0
  204. package/sidenav/Sidenav.d.ts +10 -0
  205. package/sidenav/Sidenav.js +186 -63
  206. package/sidenav/Sidenav.stories.tsx +180 -0
  207. package/sidenav/Sidenav.test.js +44 -0
  208. package/sidenav/types.d.ts +73 -0
  209. package/sidenav/types.js +5 -0
  210. package/slider/Slider.d.ts +4 -0
  211. package/slider/Slider.js +159 -156
  212. package/slider/Slider.stories.tsx +183 -0
  213. package/slider/Slider.test.js +250 -0
  214. package/slider/types.d.ts +86 -0
  215. package/slider/types.js +5 -0
  216. package/spinner/Spinner.d.ts +4 -0
  217. package/spinner/Spinner.js +9 -26
  218. package/spinner/Spinner.stories.jsx +103 -0
  219. package/spinner/Spinner.test.js +64 -0
  220. package/spinner/types.d.ts +32 -0
  221. package/spinner/types.js +5 -0
  222. package/switch/Switch.d.ts +2 -2
  223. package/switch/Switch.js +152 -69
  224. package/switch/Switch.stories.tsx +138 -0
  225. package/switch/Switch.test.js +225 -0
  226. package/switch/types.d.ts +12 -4
  227. package/table/Table.d.ts +4 -0
  228. package/table/Table.js +4 -4
  229. package/table/Table.stories.jsx +277 -0
  230. package/table/Table.test.js +26 -0
  231. package/table/types.d.ts +21 -0
  232. package/table/types.js +5 -0
  233. package/tabs/Tab.d.ts +4 -0
  234. package/tabs/Tab.js +135 -0
  235. package/tabs/Tabs.d.ts +4 -0
  236. package/tabs/Tabs.js +364 -156
  237. package/tabs/Tabs.stories.tsx +186 -0
  238. package/tabs/Tabs.test.js +351 -0
  239. package/tabs/types.d.ts +92 -0
  240. package/tabs/types.js +5 -0
  241. package/tabs-nav/NavTabs.d.ts +8 -0
  242. package/tabs-nav/NavTabs.js +125 -0
  243. package/tabs-nav/NavTabs.stories.tsx +170 -0
  244. package/tabs-nav/NavTabs.test.js +82 -0
  245. package/tabs-nav/Tab.d.ts +4 -0
  246. package/tabs-nav/Tab.js +130 -0
  247. package/tabs-nav/types.d.ts +53 -0
  248. package/tabs-nav/types.js +5 -0
  249. package/tag/Tag.d.ts +4 -0
  250. package/tag/Tag.js +35 -60
  251. package/tag/Tag.stories.tsx +142 -0
  252. package/tag/Tag.test.js +60 -0
  253. package/tag/types.d.ts +69 -0
  254. package/tag/types.js +5 -0
  255. package/text-input/Icons.d.ts +8 -0
  256. package/text-input/Icons.js +60 -0
  257. package/text-input/Suggestion.d.ts +4 -0
  258. package/text-input/Suggestion.js +57 -0
  259. package/text-input/Suggestions.d.ts +4 -0
  260. package/text-input/Suggestions.js +134 -0
  261. package/text-input/TextInput.d.ts +4 -0
  262. package/text-input/TextInput.js +228 -376
  263. package/text-input/TextInput.stories.tsx +481 -0
  264. package/text-input/TextInput.test.js +1624 -0
  265. package/text-input/types.d.ts +197 -0
  266. package/text-input/types.js +5 -0
  267. package/textarea/Textarea.d.ts +4 -0
  268. package/textarea/Textarea.js +39 -79
  269. package/textarea/Textarea.stories.jsx +157 -0
  270. package/textarea/Textarea.test.js +437 -0
  271. package/textarea/types.d.ts +137 -0
  272. package/textarea/types.js +5 -0
  273. package/toggle-group/ToggleGroup.d.ts +4 -0
  274. package/toggle-group/ToggleGroup.js +18 -46
  275. package/toggle-group/ToggleGroup.stories.tsx +173 -0
  276. package/toggle-group/ToggleGroup.test.js +156 -0
  277. package/toggle-group/types.d.ts +105 -0
  278. package/toggle-group/types.js +5 -0
  279. package/typography/Typography.d.ts +4 -0
  280. package/typography/Typography.js +131 -0
  281. package/typography/Typography.stories.tsx +198 -0
  282. package/typography/types.d.ts +18 -0
  283. package/typography/types.js +5 -0
  284. package/useTheme.d.ts +2 -0
  285. package/useTheme.js +2 -2
  286. package/useTranslatedLabels.d.ts +2 -0
  287. package/useTranslatedLabels.js +20 -0
  288. package/wizard/Wizard.d.ts +4 -0
  289. package/wizard/Wizard.js +118 -104
  290. package/wizard/Wizard.stories.tsx +233 -0
  291. package/wizard/Wizard.test.js +141 -0
  292. package/wizard/types.d.ts +65 -0
  293. package/wizard/types.js +5 -0
  294. package/ThemeContext.js +0 -246
  295. package/V3Select/V3Select.js +0 -455
  296. package/V3Select/index.d.ts +0 -27
  297. package/V3Textarea/V3Textarea.js +0 -260
  298. package/V3Textarea/index.d.ts +0 -27
  299. package/accordion/index.d.ts +0 -28
  300. package/accordion-group/index.d.ts +0 -16
  301. package/box/index.d.ts +0 -25
  302. package/card/index.d.ts +0 -22
  303. package/chip/index.d.ts +0 -22
  304. package/date/Date.js +0 -373
  305. package/date/index.d.ts +0 -27
  306. package/date-input/index.d.ts +0 -95
  307. package/dialog/index.d.ts +0 -18
  308. package/dropdown/index.d.ts +0 -26
  309. package/file-input/index.d.ts +0 -81
  310. package/footer/index.d.ts +0 -25
  311. package/header/index.d.ts +0 -25
  312. package/heading/index.d.ts +0 -17
  313. package/input-text/Icons.js +0 -22
  314. package/input-text/InputText.js +0 -611
  315. package/input-text/index.d.ts +0 -36
  316. package/link/index.d.ts +0 -23
  317. package/number-input/index.d.ts +0 -113
  318. package/password-input/index.d.ts +0 -94
  319. package/progress-bar/index.d.ts +0 -18
  320. package/radio/Radio.js +0 -195
  321. package/radio/index.d.ts +0 -23
  322. package/resultsetTable/index.d.ts +0 -19
  323. package/select/index.d.ts +0 -131
  324. package/sidenav/index.d.ts +0 -13
  325. package/slider/index.d.ts +0 -29
  326. package/spinner/index.d.ts +0 -17
  327. package/table/index.d.ts +0 -13
  328. package/tabs/index.d.ts +0 -19
  329. package/tag/index.d.ts +0 -24
  330. package/text-input/index.d.ts +0 -135
  331. package/textarea/index.d.ts +0 -117
  332. package/toggle/Toggle.js +0 -186
  333. package/toggle/index.d.ts +0 -21
  334. package/toggle-group/index.d.ts +0 -21
  335. package/upload/Upload.js +0 -201
  336. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  337. package/upload/buttons-upload/Icons.js +0 -40
  338. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  339. package/upload/dragAndDropArea/Icons.js +0 -39
  340. package/upload/file-upload/FileToUpload.js +0 -115
  341. package/upload/file-upload/Icons.js +0 -66
  342. package/upload/files-upload/FilesToUpload.js +0 -109
  343. package/upload/index.d.ts +0 -15
  344. package/upload/transaction/Icons.js +0 -160
  345. package/upload/transaction/Transaction.js +0 -104
  346. package/upload/transactions/Transactions.js +0 -94
  347. package/wizard/Icons.js +0 -65
  348. package/wizard/index.d.ts +0 -18
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import HeaderPropsType from "./types";
3
+ declare const DxcHeader: {
4
+ ({ underlined, content, responsiveContent, onClick, margin, padding, tabIndex, }: HeaderPropsType): JSX.Element;
5
+ Dropdown: (props: any) => JSX.Element;
6
+ };
7
+ export default DxcHeader;
package/header/Header.js CHANGED
@@ -9,8 +9,6 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
-
14
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
13
 
16
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -21,19 +19,17 @@ var _react = _interopRequireWildcard(require("react"));
21
19
 
22
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
21
 
24
- var _AppBar = _interopRequireDefault(require("@material-ui/core/AppBar"));
25
-
26
- var _propTypes = _interopRequireDefault(require("prop-types"));
27
-
28
22
  var _Dropdown = _interopRequireDefault(require("../dropdown/Dropdown"));
29
23
 
30
24
  var _Icons = require("./Icons");
31
25
 
32
26
  var _variables = require("../common/variables.js");
33
27
 
34
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
28
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
35
29
 
36
- var _BackgroundColorContext = _interopRequireWildcard(require("../BackgroundColorContext.js"));
30
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
31
+
32
+ var _BackgroundColorContext = _interopRequireWildcard(require("../BackgroundColorContext"));
37
33
 
38
34
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15;
39
35
 
@@ -41,75 +37,81 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
41
37
 
42
38
  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; }
43
39
 
40
+ var closeIcon = /*#__PURE__*/_react["default"].createElement("svg", {
41
+ xmlns: "http://www.w3.org/2000/svg",
42
+ height: "24",
43
+ viewBox: "0 0 24 24",
44
+ width: "24"
45
+ }, /*#__PURE__*/_react["default"].createElement("path", {
46
+ d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
47
+ }), /*#__PURE__*/_react["default"].createElement("path", {
48
+ d: "M0 0h24v24H0z",
49
+ fill: "none"
50
+ }));
51
+
52
+ var hamburgerIcon = /*#__PURE__*/_react["default"].createElement("svg", {
53
+ xmlns: "http://www.w3.org/2000/svg",
54
+ viewBox: "0 0 24 24",
55
+ width: "24",
56
+ height: "24"
57
+ }, /*#__PURE__*/_react["default"].createElement("path", {
58
+ d: "M3,8H21a1,1,0,0,0,0-2H3A1,1,0,0,0,3,8Zm18,8H3a1,1,0,0,0,0,2H21a1,1,0,0,0,0-2Zm0-5H3a1,1,0,0,0,0,2H21a1,1,0,0,0,0-2Z"
59
+ }));
60
+
44
61
  var Dropdown = function Dropdown(props) {
45
62
  return /*#__PURE__*/_react["default"].createElement(HeaderDropdown, null, /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], props));
46
63
  };
47
64
 
48
65
  var HeaderDropdown = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n button {\n background-color: transparent;\n :hover {\n background-color: transparent;\n }\n }\n"])));
49
66
 
50
- var getLogoElement = function getLogoElement(themeInput) {
51
- if (!themeInput) {
52
- return _Icons.dxcLogo;
53
- }
54
-
55
- if (typeof themeInput === "string") {
56
- return /*#__PURE__*/_react["default"].createElement(LogoImg, {
57
- alt: "Logo",
58
- src: themeInput
59
- });
60
- }
61
-
62
- return themeInput;
67
+ var getLogoElement = function getLogoElement(themeInput, logoLabel) {
68
+ if (!themeInput) return _Icons.dxcLogo;else if (typeof themeInput === "string") return /*#__PURE__*/_react["default"].createElement(LogoImg, {
69
+ alt: logoLabel,
70
+ src: themeInput
71
+ });else return themeInput;
63
72
  };
64
73
 
65
- var DxcHeader = function DxcHeader(_ref) {
66
- var _ref$underlined = _ref.underlined,
67
- underlined = _ref$underlined === void 0 ? false : _ref$underlined,
68
- onClick = _ref.onClick,
69
- content = _ref.content,
74
+ var Content = function Content(_ref) {
75
+ var isResponsive = _ref.isResponsive,
70
76
  responsiveContent = _ref.responsiveContent,
71
- margin = _ref.margin,
77
+ handleMenu = _ref.handleMenu,
72
78
  padding = _ref.padding,
73
- _ref$tabIndex = _ref.tabIndex,
74
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
79
+ content = _ref.content;
80
+ var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
81
+ return isResponsive ? /*#__PURE__*/_react["default"].createElement(MenuContent, {
82
+ backgroundType: backgroundType
83
+ }, responsiveContent(handleMenu)) : /*#__PURE__*/_react["default"].createElement(ContentContainer, {
84
+ padding: padding,
85
+ backgroundType: backgroundType
86
+ }, content);
87
+ };
88
+
89
+ var DxcHeader = function DxcHeader(_ref2) {
90
+ var _ref2$underlined = _ref2.underlined,
91
+ underlined = _ref2$underlined === void 0 ? false : _ref2$underlined,
92
+ content = _ref2.content,
93
+ responsiveContent = _ref2.responsiveContent,
94
+ onClick = _ref2.onClick,
95
+ margin = _ref2.margin,
96
+ padding = _ref2.padding,
97
+ _ref2$tabIndex = _ref2.tabIndex,
98
+ tabIndex = _ref2$tabIndex === void 0 ? 0 : _ref2$tabIndex;
75
99
  var colorsTheme = (0, _useTheme["default"])();
100
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
76
101
  var ref = (0, _react.useRef)(null);
77
102
 
78
- var _useState = (0, _react.useState)(),
103
+ var _useState = (0, _react.useState)(false),
79
104
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
80
- refSize = _useState2[0],
81
- setRefSize = _useState2[1];
105
+ isResponsive = _useState2[0],
106
+ setIsResponsive = _useState2[1];
82
107
 
83
- var _useState3 = (0, _react.useState)(),
108
+ var _useState3 = (0, _react.useState)(false),
84
109
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
85
- isResponsive = _useState4[0],
86
- setIsResponsive = _useState4[1];
87
-
88
- var _useState5 = (0, _react.useState)(false),
89
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
90
- isMenuVisible = _useState6[0],
91
- setIsMenuVisible = _useState6[1];
92
-
93
- var handleResize = function handleResize(refWidth) {
94
- if (refWidth) {
95
- setRefSize(refWidth);
96
-
97
- if (refWidth <= _variables.responsiveSizes.tablet && !isResponsive) {
98
- setIsResponsive(true);
99
- } else {
100
- setIsResponsive(false);
101
- }
102
- }
103
- };
110
+ isMenuVisible = _useState4[0],
111
+ setIsMenuVisible = _useState4[1];
104
112
 
105
- var ContentContainerComponent = function ContentContainerComponent() {
106
- var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
107
- return isResponsive && /*#__PURE__*/_react["default"].createElement(MenuContent, {
108
- backgroundType: backgroundType
109
- }, responsiveContent(handleMenu)) || /*#__PURE__*/_react["default"].createElement(ContentContainer, {
110
- padding: padding,
111
- backgroundType: backgroundType
112
- }, content);
113
+ var handleResize = function handleResize() {
114
+ setIsResponsive(window.matchMedia("(max-width: ".concat(_variables.responsiveSizes.medium, "rem)")).matches);
113
115
  };
114
116
 
115
117
  var handleMenu = function handleMenu() {
@@ -121,80 +123,80 @@ var DxcHeader = function DxcHeader(_ref) {
121
123
  };
122
124
 
123
125
  var headerLogo = (0, _react.useMemo)(function () {
124
- return getLogoElement(colorsTheme.header.logo);
126
+ return getLogoElement(colorsTheme.header.logo, translatedLabels.formFields.logoAlternativeText);
125
127
  }, [colorsTheme.header.logo]);
126
128
  var headerResponsiveLogo = (0, _react.useMemo)(function () {
127
- return getLogoElement(colorsTheme.header.logoResponsive);
129
+ return getLogoElement(colorsTheme.header.logoResponsive, translatedLabels.formFields.logoAlternativeText);
128
130
  }, [colorsTheme.header.logoResponsive]);
129
-
130
- var handleEventListener = function handleEventListener() {
131
- handleResize(ref.current.offsetWidth);
132
- };
133
-
134
131
  (0, _react.useEffect)(function () {
135
- if (ref.current) {
136
- window.addEventListener("resize", handleEventListener);
137
- handleResize(ref.current.offsetWidth);
138
- }
139
-
132
+ handleResize();
133
+ window.addEventListener("resize", handleResize);
140
134
  return function () {
141
- window.removeEventListener("resize", handleEventListener);
135
+ window.removeEventListener("resize", handleResize);
142
136
  };
143
137
  }, []);
138
+ (0, _react.useEffect)(function () {
139
+ !isResponsive && setIsMenuVisible(false);
140
+ }, [isResponsive]);
144
141
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
145
142
  theme: colorsTheme.header
146
143
  }, /*#__PURE__*/_react["default"].createElement(HeaderContainer, {
147
- $underlined: underlined,
148
- position: "static",
144
+ underlined: underlined,
149
145
  margin: margin,
150
146
  ref: ref
151
147
  }, /*#__PURE__*/_react["default"].createElement(LogoAnchor, {
152
- tabIndex: typeof onClick === "function" ? tabIndex : -1,
153
- interactuable: typeof onClick === "function",
148
+ tabIndex: onClick ? tabIndex : -1,
149
+ interactuable: onClick ? true : false,
154
150
  onClick: onClick
155
151
  }, /*#__PURE__*/_react["default"].createElement(LogoContainer, null, headerLogo)), isResponsive && responsiveContent && /*#__PURE__*/_react["default"].createElement(MainContainer, null, /*#__PURE__*/_react["default"].createElement(ChildContainer, {
156
152
  padding: padding
157
- }, /*#__PURE__*/_react["default"].createElement(HamburguerItem, {
153
+ }, /*#__PURE__*/_react["default"].createElement(HamburguerTrigger, {
158
154
  tabIndex: tabIndex,
159
- underlined: underlined,
160
155
  onClick: handleMenu
161
- }, _Icons.hamburgerIcon, /*#__PURE__*/_react["default"].createElement(HamburguerTitle, null, "Menu"))), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(ResponsiveMenu, {
162
- hasVisibility: isMenuVisible,
163
- refSize: refSize
164
- }, /*#__PURE__*/_react["default"].createElement(ResponsiveLogoContainer, null, headerResponsiveLogo), /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
165
- color: colorsTheme.header.menuBackgroundColor
166
- }, /*#__PURE__*/_react["default"].createElement(ContentContainerComponent, null, responsiveContent(handleMenu))), /*#__PURE__*/_react["default"].createElement(CloseContainer, {
156
+ }, hamburgerIcon, translatedLabels.header.hamburguerTitle)), /*#__PURE__*/_react["default"].createElement(ResponsiveMenu, {
157
+ hasVisibility: isMenuVisible
158
+ }, /*#__PURE__*/_react["default"].createElement(ResponsiveIconsContainer, null, /*#__PURE__*/_react["default"].createElement(ResponsiveLogoContainer, null, headerResponsiveLogo), /*#__PURE__*/_react["default"].createElement(CloseAction, {
167
159
  tabIndex: tabIndex,
168
160
  onClick: handleMenu,
169
- className: "closeIcon"
170
- }, _Icons.closeIcon)), /*#__PURE__*/_react["default"].createElement(Overlay, {
161
+ "aria-label": translatedLabels.header.closeIcon
162
+ }, closeIcon)), /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
163
+ color: colorsTheme.header.menuBackgroundColor
164
+ }, /*#__PURE__*/_react["default"].createElement(Content, {
165
+ isResponsive: isResponsive,
166
+ responsiveContent: responsiveContent,
167
+ handleMenu: handleMenu,
168
+ padding: padding,
169
+ content: content
170
+ }))), /*#__PURE__*/_react["default"].createElement(Overlay, {
171
171
  onClick: handleMenu,
172
- hasVisibility: isMenuVisible,
173
- refSize: refSize
174
- }))), !isResponsive && /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
172
+ hasVisibility: isMenuVisible
173
+ })), !isResponsive && /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
175
174
  color: colorsTheme.header.backgroundColor
176
- }, /*#__PURE__*/_react["default"].createElement(ContentContainerComponent, null))));
175
+ }, /*#__PURE__*/_react["default"].createElement(Content, {
176
+ isResponsive: isResponsive,
177
+ responsiveContent: responsiveContent,
178
+ handleMenu: handleMenu,
179
+ padding: padding,
180
+ content: content
181
+ }))));
177
182
  };
178
183
 
179
184
  DxcHeader.Dropdown = Dropdown;
180
- var HeaderContainer = (0, _styledComponents["default"])(_AppBar["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: ", ";\n\n &.MuiAppBar-colorPrimary {\n background-color: ", ";\n border-bottom: ", ";\n\n &.MuiPaper-elevation4 {\n box-shadow: none;\n }\n .ChildComponents {\n display: flex;\n align-items: center;\n }\n }\n & {\n min-height: ", ";\n }\n &.MuiAppBar-root {\n flex-direction: row;\n align-items: center;\n padding: ", ";\n justify-content: space-between;\n }\n"])), function (props) {
185
+
186
+ var HeaderContainer = _styledComponents["default"].header(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: ", ";\n padding: ", ";\n background-color: ", ";\n border-bottom: ", ";\n min-height: ", ";\n box-shadow: none;\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: space-between;\n box-sizing: border-box;\n"])), function (props) {
181
187
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
188
+ }, function (props) {
189
+ return "".concat(props.theme.paddingTop, " ").concat(props.theme.paddingRight, " ").concat(props.theme.paddingBottom, " ").concat(props.theme.paddingLeft);
182
190
  }, function (props) {
183
191
  return props.theme.backgroundColor;
184
192
  }, function (props) {
185
- return props.$underlined && "".concat(props.theme.underlinedThickness, " ").concat(props.theme.underlinedStyle, " ").concat(props.theme.underlinedColor);
193
+ return props.underlined && "".concat(props.theme.underlinedThickness, " ").concat(props.theme.underlinedStyle, " ").concat(props.theme.underlinedColor);
186
194
  }, function (props) {
187
195
  return props.theme.minHeight;
188
- }, function (props) {
189
- return "".concat(props.theme.paddingTop, " ").concat(props.theme.paddingRight, " ").concat(props.theme.paddingBottom, " ").concat(props.theme.paddingLeft);
190
196
  });
191
197
 
192
- var LogoAnchor = _styledComponents["default"].a(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n"])), function (props) {
193
- if (!props.interactuable) {
194
- return "cursor: default; outline:none;";
195
- }
196
-
197
- return "cursor: pointer;";
198
+ var LogoAnchor = _styledComponents["default"].a(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
199
+ return props.interactuable ? "cursor: pointer" : "cursor: default; outline:none";
198
200
  });
199
201
 
200
202
  var LogoImg = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n"])), function (props) {
@@ -235,15 +237,13 @@ var ContentContainer = _styledComponents["default"].div(_templateObject7 || (_te
235
237
  return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
236
238
  });
237
239
 
238
- var HamburguerItem = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 54px;\n cursor: pointer;\n :hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " auto 1px;\n }\n & > svg {\n fill: ", ";\n }\n"])), function (props) {
240
+ var HamburguerTrigger = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 54px;\n cursor: pointer;\n border: 1px solid transparent;\n border-radius: 2px;\n background-color: transparent;\n :hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " auto 1px;\n }\n & > svg {\n fill: ", ";\n }\n font-family: ", ";\n font-style: ", ";\n font-size: ", ";\n text-transform: ", ";\n font-weight: ", ";\n color: ", ";\n"])), function (props) {
239
241
  return props.theme.hamburguerHoverColor;
240
242
  }, function (props) {
241
243
  return props.theme.hamburguerFocusColor;
242
244
  }, function (props) {
243
245
  return props.theme.hamburguerIconColor;
244
- });
245
-
246
- var HamburguerTitle = _styledComponents["default"].span(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-style: ", ";\n font-size: ", ";\n text-transform: ", ";\n font-weight: ", ";\n color: ", ";\n"])), function (props) {
246
+ }, function (props) {
247
247
  return props.theme.hamburguerFontFamily;
248
248
  }, function (props) {
249
249
  return props.theme.hamburguerFontStyle;
@@ -257,39 +257,39 @@ var HamburguerTitle = _styledComponents["default"].span(_templateObject9 || (_te
257
257
  return props.theme.hamburguerFontColor;
258
258
  });
259
259
 
260
- var MainContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-grow: 1;\n"])));
260
+ var MainContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-grow: 1;\n"])));
261
261
 
262
- var ResponsiveMenu = _styledComponents["default"].div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: space-evenly;\n background-color: ", ";\n position: fixed;\n top: 0;\n right: 0;\n z-index: ", ";\n width: ", ";\n height: 100vh;\n padding: 20px;\n transform: ", ";\n opacity: ", ";\n transition-property: transform, opacity;\n transition-duration: 0.6s;\n transition-timing-function: ease-in-out;\n box-sizing: border-box;\n"])), function (props) {
262
+ var ResponsiveMenu = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n background-color: ", ";\n position: fixed;\n top: 0;\n right: 0;\n z-index: ", ";\n\n @media (max-width: ", "rem) and (min-width: ", "rem) {\n //tablet\n width: ", ";\n }\n\n @media (not((max-width: ", "rem) and (min-width: ", "rem))) {\n //mobile phones\n width: ", ";\n }\n\n height: 100vh;\n padding: 20px;\n transform: ", ";\n opacity: ", ";\n transition-property: transform, opacity;\n transition-duration: 0.6s;\n transition-timing-function: ease-in-out;\n box-sizing: border-box;\n"])), function (props) {
263
263
  return props.theme.menuBackgroundColor;
264
264
  }, function (props) {
265
265
  return props.theme.menuZindex;
266
- }, function (props) {
267
- return props.refSize <= _variables.responsiveSizes.laptop && props.refSize > _variables.responsiveSizes.mobileLarge ? "".concat(function (props) {
268
- return props.theme.menuTabletWidth;
269
- }) : "".concat(function (props) {
270
- return props.theme.menuMobileWidth;
271
- });
266
+ }, _variables.responsiveSizes.large, _variables.responsiveSizes.small, function (props) {
267
+ return props.theme.menuTabletWidth;
268
+ }, _variables.responsiveSizes.large, _variables.responsiveSizes.small, function (props) {
269
+ return props.theme.menuMobileWidth;
272
270
  }, function (props) {
273
271
  return props.hasVisibility ? "translateX(0)" : "translateX(100vw)";
274
272
  }, function (props) {
275
273
  return props.hasVisibility ? "1" : "0.96";
276
274
  });
277
275
 
278
- var ResponsiveLogoContainer = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n position: absolute;\n top: 23px;\n left: 20px;\n"])), function (props) {
276
+ var ResponsiveLogoContainer = _styledComponents["default"].div(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n max-height: ", ";\n width: ", ";\n display: flex;\n"])), function (props) {
279
277
  return props.theme.logoHeight;
280
278
  }, function (props) {
281
279
  return props.theme.logoWidth;
282
280
  });
283
281
 
284
- var CloseContainer = _styledComponents["default"].div(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n :focus {\n outline: ", " auto 1px;\n }\n position: fixed;\n top: 23px;\n right: 20px;\n width: 24px;\n height: 24px;\n padding: ", ";\n"])), function (props) {
282
+ var ResponsiveIconsContainer = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n"])));
283
+
284
+ var CloseAction = _styledComponents["default"].button(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n padding: 6px;\n height: 36px;\n width: 36px;\n border: 1px solid transparent;\n border-radius: 2px;\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n background-color: transparent;\n :focus,\n :focus-visible {\n outline: ", " auto 1px;\n }\n"])), function (props) {
285
285
  return props.theme.hamburguerFocusColor;
286
- }, _variables.spaces.xxsmall);
286
+ });
287
287
 
288
- var MenuContent = _styledComponents["default"].div(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n height: 100%;\n margin-top: 40px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n color: ", ";\n"])), function (props) {
288
+ var MenuContent = _styledComponents["default"].div(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n color: ", ";\n"])), function (props) {
289
289
  return props.backgroundType === "dark" ? props.theme.contentColorOnDark : props.theme.contentColor;
290
290
  });
291
291
 
292
- var Overlay = _styledComponents["default"].div(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: ", ";\n opacity: ", " !important;\n visibility: ", ";\n opacity: ", ";\n display: ", ";\n transition: opacity 0.2s 0.2s ease-in-out;\n z-index: ", ";\n"])), function (props) {
292
+ var Overlay = _styledComponents["default"].div(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: ", ";\n opacity: ", " !important;\n visibility: ", ";\n opacity: ", ";\n\n @media (max-width: ", "rem) {\n //mobile phones\n display: none;\n }\n\n transition: opacity 0.2s 0.2s ease-in-out;\n z-index: ", ";\n"])), function (props) {
293
293
  return props.theme.overlayColor;
294
294
  }, function (props) {
295
295
  return props.theme.overlayOpacity;
@@ -297,30 +297,9 @@ var Overlay = _styledComponents["default"].div(_templateObject15 || (_templateOb
297
297
  return props.hasVisibility ? "visible" : "hidden";
298
298
  }, function (props) {
299
299
  return props.hasVisibility ? "1" : "0";
300
- }, function (props) {
301
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "none" : "";
302
- }, function (props) {
300
+ }, _variables.responsiveSizes.small, function (props) {
303
301
  return props.theme.overlayZindex;
304
302
  });
305
303
 
306
- DxcHeader.propTypes = {
307
- underlined: _propTypes["default"].bool,
308
- onClick: _propTypes["default"].func,
309
- margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
310
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
311
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
312
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
313
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
314
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
315
- padding: _propTypes["default"].oneOfType([_propTypes["default"].shape({
316
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
317
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
318
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
319
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
320
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
321
- content: _propTypes["default"].object,
322
- responsiveContent: _propTypes["default"].func,
323
- tabIndex: _propTypes["default"].number
324
- };
325
304
  var _default = DxcHeader;
326
305
  exports["default"] = _default;
@@ -0,0 +1,172 @@
1
+ import React from "react";
2
+ import DxcHeader from "./Header";
3
+ import Title from "../../.storybook/components/Title";
4
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import { userEvent, waitFor, within } from "@storybook/testing-library";
6
+
7
+ export default {
8
+ title: "Header",
9
+ component: DxcHeader,
10
+ };
11
+
12
+ const options: any = [
13
+ {
14
+ value: 1,
15
+ label: "Amazon",
16
+ },
17
+ ];
18
+
19
+ export const Chromatic = () => (
20
+ <>
21
+ <ExampleContainer>
22
+ <Title title="Default with dropdown" theme="light" level={4} />
23
+ <DxcHeader content={<DxcHeader.Dropdown options={options} label="Default Dropdown" />} />
24
+ </ExampleContainer>
25
+ <ExampleContainer>
26
+ <Title title="Underlined with text" theme="light" level={4} />
27
+ <DxcHeader underlined content={<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>} />
28
+ </ExampleContainer>
29
+ <Title title="Margins" theme="light" level={2} />
30
+ <ExampleContainer>
31
+ <Title title="Xxsmall margin" theme="light" level={4} />
32
+ <DxcHeader underlined margin="xxsmall" />
33
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>
34
+ </ExampleContainer>
35
+ <ExampleContainer>
36
+ <Title title="Xsmall margin" theme="light" level={4} />
37
+ <DxcHeader underlined margin="xsmall" />
38
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>
39
+ </ExampleContainer>
40
+ <ExampleContainer>
41
+ <Title title="Small margin" theme="light" level={4} />
42
+ <DxcHeader underlined margin="small" />
43
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>
44
+ </ExampleContainer>
45
+ <ExampleContainer>
46
+ <Title title="Medium margin" theme="light" level={4} />
47
+ <DxcHeader underlined margin="medium" />
48
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>
49
+ </ExampleContainer>
50
+ <ExampleContainer>
51
+ <Title title="Large margin" theme="light" level={4} />
52
+ <DxcHeader underlined margin="large" />
53
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>
54
+ </ExampleContainer>
55
+ <ExampleContainer>
56
+ <Title title="Xlarge margin" theme="light" level={4} />
57
+ <DxcHeader underlined margin="xlarge" />
58
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>
59
+ </ExampleContainer>
60
+ <ExampleContainer>
61
+ <Title title="Xxlarge margin" theme="light" level={4} />
62
+ <DxcHeader underlined margin="xxlarge" />
63
+ <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>
64
+ </ExampleContainer>
65
+
66
+ <Title title="Paddings" theme="light" level={2} />
67
+ <ExampleContainer>
68
+ <Title title="Xxsmall padding" theme="light" level={4} />
69
+ <DxcHeader underlined padding="xxsmall" />
70
+ </ExampleContainer>
71
+ <ExampleContainer>
72
+ <Title title="Xsmall padding" theme="light" level={4} />
73
+ <DxcHeader underlined padding="xsmall" />
74
+ </ExampleContainer>
75
+ <ExampleContainer>
76
+ <Title title="Small padding" theme="light" level={4} />
77
+ <DxcHeader underlined padding="small" />
78
+ </ExampleContainer>
79
+ <ExampleContainer>
80
+ <Title title="Medium padding" theme="light" level={4} />
81
+ <DxcHeader underlined padding="medium" />
82
+ </ExampleContainer>
83
+ <ExampleContainer>
84
+ <Title title="Large padding" theme="light" level={4} />
85
+ <DxcHeader underlined padding="large" />
86
+ </ExampleContainer>
87
+ <ExampleContainer>
88
+ <Title title="Xlarge padding" theme="light" level={4} />
89
+ <DxcHeader underlined padding="xlarge" />
90
+ </ExampleContainer>
91
+ <ExampleContainer>
92
+ <Title title="Xxlarge padding" theme="light" level={4} />
93
+ <DxcHeader underlined padding="xxlarge" />
94
+ </ExampleContainer>
95
+ </>
96
+ );
97
+
98
+ export const ResponsiveHeader = () => (
99
+ <ExampleContainer>
100
+ <Title title="Responsive" theme="light" level={4} />
101
+ <DxcHeader
102
+ content={<DxcHeader.Dropdown options={options} label="Default Dropdown" />}
103
+ responsiveContent={(closeHandler) => <DxcHeader.Dropdown options={options} label="Default Dropdown" />}
104
+ underlined
105
+ />
106
+ </ExampleContainer>
107
+ );
108
+
109
+ const RespHeaderFocus = () => (
110
+ <ExampleContainer pseudoState="pseudo-focus">
111
+ <Title title="Responsive focus" theme="light" level={4} />
112
+ <DxcHeader responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>} underlined />
113
+ </ExampleContainer>
114
+ );
115
+
116
+ const RespHeaderHover = () => (
117
+ <ExampleContainer pseudoState="pseudo-hover">
118
+ <Title title="Responsive hover" theme="light" level={4} />
119
+ <DxcHeader responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>} underlined />
120
+ </ExampleContainer>
121
+ );
122
+
123
+ const RespHeaderMenu = () => (
124
+ <ExampleContainer>
125
+ <Title title="Responsive menu" theme="light" level={4} />
126
+ <DxcHeader responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>} underlined />
127
+ </ExampleContainer>
128
+ );
129
+
130
+ ResponsiveHeader.parameters = {
131
+ viewport: {
132
+ defaultViewport: "iphonex",
133
+ },
134
+ chromatic: { viewports: [375] },
135
+ };
136
+
137
+ export const ResponsiveHeaderFocus = RespHeaderFocus.bind({});
138
+ ResponsiveHeaderFocus.parameters = {
139
+ viewport: {
140
+ defaultViewport: "iphonex",
141
+ },
142
+ chromatic: { viewports: [375] },
143
+ };
144
+ ResponsiveHeaderFocus.play = async ({ canvasElement }) => {
145
+ const canvas = within(canvasElement);
146
+ await waitFor(() => canvas.findByText("Menu"));
147
+ };
148
+
149
+ export const ResponsiveHeaderHover = RespHeaderHover.bind({});
150
+ ResponsiveHeaderHover.parameters = {
151
+ viewport: {
152
+ defaultViewport: "iphonex",
153
+ },
154
+ chromatic: { viewports: [375] },
155
+ };
156
+ ResponsiveHeaderHover.play = async ({ canvasElement }) => {
157
+ const canvas = within(canvasElement);
158
+ await waitFor(() => canvas.findByText("Menu"));
159
+ };
160
+
161
+ export const ResponsiveHeaderMenu = RespHeaderMenu.bind({});
162
+ ResponsiveHeaderMenu.parameters = {
163
+ viewport: {
164
+ defaultViewport: "iphonex",
165
+ },
166
+ chromatic: { viewports: [375] },
167
+ };
168
+ ResponsiveHeaderMenu.play = async ({ canvasElement }) => {
169
+ const canvas = within(canvasElement);
170
+ await waitFor(() => canvas.findByText("Menu"));
171
+ await userEvent.click(canvas.getByText("Menu"));
172
+ };
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _Header = _interopRequireDefault(require("./Header"));
10
+
11
+ describe("Header component tests", function () {
12
+ beforeAll(function () {
13
+ Object.defineProperty(window, "matchMedia", {
14
+ writable: true,
15
+ value: jest.fn().mockImplementation(function () {
16
+ return {
17
+ matches: false
18
+ };
19
+ })
20
+ });
21
+ });
22
+ test("Header renders with default logo", function () {
23
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Header["default"], null)),
24
+ getByTitle = _render.getByTitle;
25
+
26
+ expect(getByTitle("DXC Logo")).toBeTruthy();
27
+ });
28
+ test("Call correct function on logo click", function () {
29
+ var onClick = jest.fn();
30
+
31
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Header["default"], {
32
+ onClick: onClick
33
+ })),
34
+ getByTitle = _render2.getByTitle;
35
+
36
+ var logo = getByTitle("DXC Logo");
37
+
38
+ _react2.fireEvent.click(logo);
39
+
40
+ expect(onClick).toHaveBeenCalled();
41
+ });
42
+ test("Header renders with correct children", function () {
43
+ // We need to force the offsetWidth value
44
+ Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
45
+ configurable: true,
46
+ value: 1024
47
+ });
48
+
49
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Header["default"], {
50
+ content: /*#__PURE__*/_react["default"].createElement("p", null, "header-child-text")
51
+ })),
52
+ getByText = _render3.getByText;
53
+
54
+ expect(getByText("header-child-text")).toBeTruthy();
55
+ });
56
+ test("Header renders menu button in mobile", function () {
57
+ Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
58
+ configurable: true,
59
+ value: 425
60
+ });
61
+ Object.defineProperty(window, "matchMedia", {
62
+ writable: true,
63
+ value: jest.fn().mockImplementation(function () {
64
+ return {
65
+ matches: true
66
+ };
67
+ })
68
+ });
69
+
70
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Header["default"], {
71
+ responsiveContent: function responsiveContent(closeMenu) {
72
+ return /*#__PURE__*/_react["default"].createElement("p", null, "header-child-text");
73
+ }
74
+ })),
75
+ getByText = _render4.getByText;
76
+
77
+ expect(getByText("Menu")).toBeTruthy();
78
+ });
79
+ });