@dxc-technology/halstack-react 0.0.0-d1e7610 → 0.0.0-d201da1

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 (282) 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 +295 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +15 -47
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +8 -8
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +16 -17
  12. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  13. package/accordion-group/AccordionGroup.test.js +151 -0
  14. package/accordion-group/types.d.ts +8 -8
  15. package/alert/Alert.js +6 -3
  16. package/alert/Alert.test.js +92 -0
  17. package/alert/types.d.ts +1 -1
  18. package/badge/Badge.d.ts +4 -0
  19. package/badge/Badge.js +6 -4
  20. package/badge/types.d.ts +5 -0
  21. package/{radio → badge}/types.js +0 -0
  22. package/bleed/Bleed.d.ts +3 -0
  23. package/bleed/Bleed.js +51 -0
  24. package/bleed/Bleed.stories.tsx +341 -0
  25. package/bleed/types.d.ts +37 -0
  26. package/bleed/types.js +5 -0
  27. package/box/Box.d.ts +1 -1
  28. package/box/Box.js +26 -39
  29. package/box/Box.test.js +18 -0
  30. package/box/types.d.ts +0 -4
  31. package/button/Button.d.ts +1 -1
  32. package/button/Button.js +24 -27
  33. package/button/Button.stories.tsx +6 -8
  34. package/button/Button.test.js +35 -0
  35. package/button/types.d.ts +5 -9
  36. package/card/Card.js +26 -30
  37. package/card/Card.stories.tsx +201 -0
  38. package/card/Card.test.js +50 -0
  39. package/card/ice-cream.jpg +0 -0
  40. package/card/types.d.ts +4 -6
  41. package/checkbox/Checkbox.d.ts +1 -1
  42. package/checkbox/Checkbox.js +45 -41
  43. package/checkbox/Checkbox.stories.tsx +124 -128
  44. package/checkbox/Checkbox.test.js +78 -0
  45. package/checkbox/types.d.ts +9 -5
  46. package/chip/Chip.d.ts +4 -0
  47. package/chip/Chip.js +16 -76
  48. package/chip/Chip.stories.tsx +6 -8
  49. package/chip/Chip.test.js +56 -0
  50. package/chip/types.d.ts +45 -0
  51. package/chip/types.js +5 -0
  52. package/common/variables.js +234 -341
  53. package/date-input/DateInput.js +63 -52
  54. package/date-input/DateInput.stories.tsx +7 -7
  55. package/date-input/DateInput.test.js +479 -0
  56. package/date-input/types.d.ts +16 -9
  57. package/dialog/Dialog.js +8 -35
  58. package/dialog/Dialog.test.js +40 -0
  59. package/dropdown/Dropdown.d.ts +1 -1
  60. package/dropdown/Dropdown.js +22 -48
  61. package/dropdown/Dropdown.stories.tsx +249 -0
  62. package/dropdown/Dropdown.test.js +189 -0
  63. package/dropdown/types.d.ts +6 -15
  64. package/file-input/FileInput.d.ts +4 -0
  65. package/file-input/FileInput.js +172 -111
  66. package/file-input/FileInput.stories.tsx +507 -0
  67. package/file-input/FileInput.test.js +457 -0
  68. package/file-input/FileItem.d.ts +14 -0
  69. package/file-input/FileItem.js +16 -23
  70. package/file-input/types.d.ts +112 -0
  71. package/file-input/types.js +5 -0
  72. package/footer/Footer.d.ts +1 -1
  73. package/footer/Footer.js +32 -113
  74. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  75. package/footer/Footer.test.js +109 -0
  76. package/footer/Icons.d.ts +2 -0
  77. package/footer/Icons.js +4 -4
  78. package/footer/types.d.ts +21 -17
  79. package/header/Header.js +29 -50
  80. package/header/Header.stories.tsx +172 -0
  81. package/header/Header.test.js +79 -0
  82. package/header/Icons.d.ts +2 -0
  83. package/header/types.d.ts +4 -2
  84. package/heading/Heading.js +1 -1
  85. package/heading/Heading.stories.tsx +54 -0
  86. package/heading/Heading.test.js +186 -0
  87. package/inline/Inline.d.ts +4 -0
  88. package/inline/Inline.js +60 -0
  89. package/inline/Inline.stories.tsx +319 -0
  90. package/inline/types.d.ts +36 -0
  91. package/inline/types.js +5 -0
  92. package/inset/Inset.d.ts +3 -0
  93. package/inset/Inset.js +51 -0
  94. package/inset/Inset.stories.tsx +229 -0
  95. package/inset/types.d.ts +37 -0
  96. package/inset/types.js +5 -0
  97. package/layout/ApplicationLayout.d.ts +11 -0
  98. package/layout/ApplicationLayout.js +84 -120
  99. package/layout/ApplicationLayout.stories.tsx +126 -0
  100. package/layout/Icons.d.ts +5 -0
  101. package/layout/Icons.js +13 -2
  102. package/layout/SidenavContext.d.ts +5 -0
  103. package/layout/SidenavContext.js +19 -0
  104. package/layout/types.d.ts +52 -0
  105. package/layout/types.js +5 -0
  106. package/link/Link.d.ts +3 -2
  107. package/link/Link.js +61 -86
  108. package/link/Link.stories.tsx +131 -15
  109. package/link/Link.test.js +83 -0
  110. package/link/types.d.ts +9 -29
  111. package/list/List.d.ts +4 -0
  112. package/list/List.js +47 -0
  113. package/list/List.stories.tsx +89 -0
  114. package/list/types.d.ts +7 -0
  115. package/list/types.js +5 -0
  116. package/main.d.ts +13 -9
  117. package/main.js +80 -42
  118. package/number-input/NumberInput.js +14 -24
  119. package/number-input/NumberInput.stories.tsx +5 -5
  120. package/number-input/NumberInput.test.js +506 -0
  121. package/number-input/NumberInputContext.d.ts +4 -0
  122. package/number-input/NumberInputContext.js +5 -2
  123. package/number-input/numberInputContextTypes.d.ts +19 -0
  124. package/number-input/numberInputContextTypes.js +5 -0
  125. package/number-input/types.d.ts +17 -10
  126. package/package.json +10 -6
  127. package/paginator/Paginator.js +19 -46
  128. package/paginator/Paginator.test.js +308 -0
  129. package/password-input/PasswordInput.js +23 -19
  130. package/password-input/PasswordInput.stories.tsx +3 -3
  131. package/password-input/PasswordInput.test.js +180 -0
  132. package/password-input/types.d.ts +29 -19
  133. package/progress-bar/ProgressBar.js +5 -5
  134. package/progress-bar/ProgressBar.stories.jsx +11 -11
  135. package/progress-bar/ProgressBar.test.js +65 -0
  136. package/quick-nav/QuickNav.d.ts +4 -0
  137. package/quick-nav/QuickNav.js +116 -0
  138. package/quick-nav/QuickNav.stories.tsx +237 -0
  139. package/quick-nav/types.d.ts +21 -0
  140. package/quick-nav/types.js +5 -0
  141. package/radio-group/Radio.d.ts +4 -0
  142. package/radio-group/Radio.js +141 -0
  143. package/radio-group/RadioGroup.d.ts +4 -0
  144. package/radio-group/RadioGroup.js +282 -0
  145. package/radio-group/RadioGroup.stories.tsx +100 -0
  146. package/radio-group/RadioGroup.test.js +695 -0
  147. package/radio-group/types.d.ts +114 -0
  148. package/radio-group/types.js +5 -0
  149. package/resultsetTable/ResultsetTable.d.ts +4 -0
  150. package/resultsetTable/ResultsetTable.js +9 -29
  151. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  152. package/resultsetTable/ResultsetTable.test.js +348 -0
  153. package/resultsetTable/types.d.ts +67 -0
  154. package/resultsetTable/types.js +5 -0
  155. package/row/Row.d.ts +3 -0
  156. package/row/Row.js +127 -0
  157. package/row/Row.stories.tsx +237 -0
  158. package/row/types.d.ts +28 -0
  159. package/row/types.js +5 -0
  160. package/select/Icons.d.ts +10 -0
  161. package/select/Icons.js +93 -0
  162. package/select/Listbox.d.ts +4 -0
  163. package/select/Listbox.js +175 -0
  164. package/select/Option.d.ts +4 -0
  165. package/select/Option.js +110 -0
  166. package/select/Select.d.ts +4 -0
  167. package/select/Select.js +161 -366
  168. package/select/Select.stories.tsx +230 -176
  169. package/select/Select.test.js +2162 -0
  170. package/select/types.d.ts +212 -0
  171. package/select/types.js +5 -0
  172. package/sidenav/Sidenav.d.ts +1 -1
  173. package/sidenav/Sidenav.js +22 -11
  174. package/sidenav/Sidenav.stories.tsx +182 -0
  175. package/sidenav/Sidenav.test.js +56 -0
  176. package/slider/Slider.d.ts +1 -1
  177. package/slider/Slider.js +6 -5
  178. package/slider/Slider.stories.tsx +8 -8
  179. package/slider/Slider.test.js +150 -0
  180. package/slider/types.d.ts +4 -0
  181. package/spinner/Spinner.js +3 -3
  182. package/spinner/Spinner.stories.jsx +1 -0
  183. package/spinner/Spinner.test.js +64 -0
  184. package/stack/Stack.d.ts +4 -0
  185. package/stack/Stack.js +56 -0
  186. package/stack/Stack.stories.tsx +263 -0
  187. package/stack/types.d.ts +32 -0
  188. package/stack/types.js +5 -0
  189. package/switch/Switch.d.ts +1 -1
  190. package/switch/Switch.js +37 -21
  191. package/switch/Switch.stories.tsx +15 -15
  192. package/switch/Switch.test.js +98 -0
  193. package/switch/types.d.ts +6 -2
  194. package/table/Table.js +3 -3
  195. package/table/Table.stories.jsx +2 -1
  196. package/table/Table.test.js +26 -0
  197. package/tabs/Tabs.d.ts +1 -1
  198. package/tabs/Tabs.js +20 -20
  199. package/tabs/Tabs.stories.tsx +112 -0
  200. package/tabs/Tabs.test.js +140 -0
  201. package/tabs/types.d.ts +29 -18
  202. package/tabs-nav/NavTabs.d.ts +8 -0
  203. package/tabs-nav/NavTabs.js +125 -0
  204. package/tabs-nav/NavTabs.stories.tsx +170 -0
  205. package/tabs-nav/NavTabs.test.js +82 -0
  206. package/tabs-nav/Tab.d.ts +4 -0
  207. package/tabs-nav/Tab.js +132 -0
  208. package/tabs-nav/types.d.ts +53 -0
  209. package/tabs-nav/types.js +5 -0
  210. package/tag/Tag.d.ts +1 -1
  211. package/tag/Tag.js +18 -28
  212. package/tag/Tag.stories.tsx +26 -29
  213. package/tag/Tag.test.js +60 -0
  214. package/tag/types.d.ts +23 -14
  215. package/text/Text.d.ts +7 -0
  216. package/text/Text.js +30 -0
  217. package/text/Text.stories.tsx +19 -0
  218. package/text-input/Suggestion.d.ts +4 -0
  219. package/text-input/Suggestion.js +55 -0
  220. package/text-input/TextInput.d.ts +4 -0
  221. package/text-input/TextInput.js +91 -146
  222. package/text-input/TextInput.stories.tsx +474 -0
  223. package/text-input/TextInput.test.js +1712 -0
  224. package/text-input/types.d.ts +178 -0
  225. package/text-input/types.js +5 -0
  226. package/textarea/Textarea.d.ts +4 -0
  227. package/textarea/Textarea.js +39 -79
  228. package/textarea/Textarea.stories.jsx +37 -15
  229. package/textarea/Textarea.test.js +437 -0
  230. package/textarea/types.d.ts +137 -0
  231. package/textarea/types.js +5 -0
  232. package/toggle-group/ToggleGroup.d.ts +4 -0
  233. package/toggle-group/ToggleGroup.js +18 -46
  234. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  235. package/toggle-group/ToggleGroup.test.js +156 -0
  236. package/toggle-group/types.d.ts +105 -0
  237. package/toggle-group/types.js +5 -0
  238. package/useTheme.d.ts +2 -0
  239. package/useTheme.js +2 -2
  240. package/useTranslatedLabels.d.ts +2 -0
  241. package/useTranslatedLabels.js +20 -0
  242. package/wizard/Wizard.d.ts +1 -1
  243. package/wizard/Wizard.js +107 -46
  244. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +13 -23
  245. package/wizard/Wizard.test.js +141 -0
  246. package/wizard/types.d.ts +9 -9
  247. package/ThemeContext.js +0 -246
  248. package/V3Select/V3Select.js +0 -455
  249. package/V3Select/index.d.ts +0 -27
  250. package/V3Textarea/V3Textarea.js +0 -260
  251. package/V3Textarea/index.d.ts +0 -27
  252. package/chip/index.d.ts +0 -22
  253. package/date/Date.js +0 -373
  254. package/date/index.d.ts +0 -27
  255. package/file-input/index.d.ts +0 -81
  256. package/input-text/Icons.js +0 -22
  257. package/input-text/InputText.js +0 -611
  258. package/input-text/index.d.ts +0 -36
  259. package/radio/Radio.d.ts +0 -4
  260. package/radio/Radio.js +0 -174
  261. package/radio/Radio.stories.tsx +0 -192
  262. package/radio/types.d.ts +0 -54
  263. package/resultsetTable/index.d.ts +0 -19
  264. package/select/index.d.ts +0 -131
  265. package/text-input/index.d.ts +0 -135
  266. package/textarea/index.d.ts +0 -117
  267. package/toggle/Toggle.js +0 -186
  268. package/toggle/index.d.ts +0 -21
  269. package/toggle-group/index.d.ts +0 -21
  270. package/upload/Upload.js +0 -201
  271. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  272. package/upload/buttons-upload/Icons.js +0 -40
  273. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  274. package/upload/dragAndDropArea/Icons.js +0 -39
  275. package/upload/file-upload/FileToUpload.js +0 -115
  276. package/upload/file-upload/Icons.js +0 -66
  277. package/upload/files-upload/FilesToUpload.js +0 -109
  278. package/upload/index.d.ts +0 -15
  279. package/upload/transaction/Icons.js +0 -160
  280. package/upload/transaction/Transaction.js +0 -104
  281. package/upload/transactions/Transactions.js +0 -94
  282. package/wizard/Icons.js +0 -65
package/header/Header.js CHANGED
@@ -27,9 +27,11 @@ var _Icons = require("./Icons");
27
27
 
28
28
  var _variables = require("../common/variables.js");
29
29
 
30
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
30
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
31
31
 
32
- var _BackgroundColorContext = _interopRequireWildcard(require("../BackgroundColorContext.js"));
32
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
33
+
34
+ var _BackgroundColorContext = _interopRequireWildcard(require("../BackgroundColorContext"));
33
35
 
34
36
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15;
35
37
 
@@ -64,14 +66,14 @@ var Dropdown = function Dropdown(props) {
64
66
 
65
67
  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"])));
66
68
 
67
- var getLogoElement = function getLogoElement(themeInput) {
69
+ var getLogoElement = function getLogoElement(themeInput, logoLabel) {
68
70
  if (!themeInput) {
69
71
  return _Icons.dxcLogo;
70
72
  }
71
73
 
72
74
  if (typeof themeInput === "string") {
73
75
  return /*#__PURE__*/_react["default"].createElement(LogoImg, {
74
- alt: "Logo",
76
+ alt: logoLabel,
75
77
  src: themeInput
76
78
  });
77
79
  }
@@ -90,33 +92,21 @@ var DxcHeader = function DxcHeader(_ref) {
90
92
  _ref$tabIndex = _ref.tabIndex,
91
93
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
92
94
  var colorsTheme = (0, _useTheme["default"])();
95
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
93
96
  var ref = (0, _react.useRef)(null);
94
97
 
95
- var _useState = (0, _react.useState)(),
98
+ var _useState = (0, _react.useState)(false),
96
99
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
97
- refSize = _useState2[0],
98
- setRefSize = _useState2[1];
100
+ isResponsive = _useState2[0],
101
+ setIsResponsive = _useState2[1];
99
102
 
100
103
  var _useState3 = (0, _react.useState)(false),
101
104
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
102
- isResponsive = _useState4[0],
103
- setIsResponsive = _useState4[1];
104
-
105
- var _useState5 = (0, _react.useState)(false),
106
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
107
- isMenuVisible = _useState6[0],
108
- setIsMenuVisible = _useState6[1];
109
-
110
- var handleResize = function handleResize(refWidth) {
111
- if (refWidth) {
112
- setRefSize(refWidth);
113
-
114
- if (refWidth <= _variables.responsiveSizes.tablet && !isResponsive) {
115
- setIsResponsive(true);
116
- } else {
117
- setIsResponsive(false);
118
- }
119
- }
105
+ isMenuVisible = _useState4[0],
106
+ setIsMenuVisible = _useState4[1];
107
+
108
+ var handleResize = function handleResize() {
109
+ setIsResponsive(window.matchMedia("(max-width: ".concat(_variables.responsiveSizes.medium, "rem)")).matches && !isResponsive);
120
110
  };
121
111
 
122
112
  var ContentContainerComponent = function ContentContainerComponent() {
@@ -138,24 +128,19 @@ var DxcHeader = function DxcHeader(_ref) {
138
128
  };
139
129
 
140
130
  var headerLogo = (0, _react.useMemo)(function () {
141
- return getLogoElement(colorsTheme.header.logo);
131
+ return getLogoElement(colorsTheme.header.logo, translatedLabels.formFields.logoAlternativeText);
142
132
  }, [colorsTheme.header.logo]);
143
133
  var headerResponsiveLogo = (0, _react.useMemo)(function () {
144
- return getLogoElement(colorsTheme.header.logoResponsive);
134
+ return getLogoElement(colorsTheme.header.logoResponsive, translatedLabels.formFields.logoAlternativeText);
145
135
  }, [colorsTheme.header.logoResponsive]);
146
-
147
- var handleEventListener = function handleEventListener() {
148
- handleResize(ref.current.offsetWidth);
149
- };
150
-
151
136
  (0, _react.useEffect)(function () {
152
137
  if (ref.current) {
153
- window.addEventListener("resize", handleEventListener);
154
- handleResize(ref.current.offsetWidth);
138
+ window.addEventListener("resize", handleResize);
139
+ handleResize();
155
140
  }
156
141
 
157
142
  return function () {
158
- window.removeEventListener("resize", handleEventListener);
143
+ window.removeEventListener("resize", handleResize);
159
144
  };
160
145
  }, []);
161
146
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
@@ -176,8 +161,7 @@ var DxcHeader = function DxcHeader(_ref) {
176
161
  underlined: underlined,
177
162
  onClick: handleMenu
178
163
  }, hamburgerIcon, /*#__PURE__*/_react["default"].createElement(HamburguerTitle, null, "Menu"))), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(ResponsiveMenu, {
179
- hasVisibility: isMenuVisible,
180
- refSize: refSize
164
+ hasVisibility: isMenuVisible
181
165
  }, /*#__PURE__*/_react["default"].createElement(ResponsiveLogoContainer, null, headerResponsiveLogo), /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
182
166
  color: colorsTheme.header.menuBackgroundColor
183
167
  }, /*#__PURE__*/_react["default"].createElement(ContentContainerComponent, null)), /*#__PURE__*/_react["default"].createElement(CloseContainer, {
@@ -186,8 +170,7 @@ var DxcHeader = function DxcHeader(_ref) {
186
170
  className: "closeIcon"
187
171
  }, closeIcon)), /*#__PURE__*/_react["default"].createElement(Overlay, {
188
172
  onClick: handleMenu,
189
- hasVisibility: isMenuVisible,
190
- refSize: refSize
173
+ hasVisibility: isMenuVisible
191
174
  }))), !isResponsive && /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
192
175
  color: colorsTheme.header.backgroundColor
193
176
  }, /*#__PURE__*/_react["default"].createElement(ContentContainerComponent, null))));
@@ -276,16 +259,14 @@ var HamburguerTitle = _styledComponents["default"].span(_templateObject9 || (_te
276
259
 
277
260
  var MainContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-grow: 1;\n"])));
278
261
 
279
- 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(_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\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) {
280
263
  return props.theme.menuBackgroundColor;
281
264
  }, function (props) {
282
265
  return props.theme.menuZindex;
283
- }, function (props) {
284
- return props.refSize <= _variables.responsiveSizes.laptop && props.refSize > _variables.responsiveSizes.mobileLarge ? "".concat(function (props) {
285
- return props.theme.menuTabletWidth;
286
- }) : "".concat(function (props) {
287
- return props.theme.menuMobileWidth;
288
- });
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;
289
270
  }, function (props) {
290
271
  return props.hasVisibility ? "translateX(0)" : "translateX(100vw)";
291
272
  }, function (props) {
@@ -306,7 +287,7 @@ var MenuContent = _styledComponents["default"].div(_templateObject14 || (_templa
306
287
  return props.backgroundType === "dark" ? props.theme.contentColorOnDark : props.theme.contentColor;
307
288
  });
308
289
 
309
- 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) {
290
+ 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) {
310
291
  return props.theme.overlayColor;
311
292
  }, function (props) {
312
293
  return props.theme.overlayOpacity;
@@ -314,9 +295,7 @@ var Overlay = _styledComponents["default"].div(_templateObject15 || (_templateOb
314
295
  return props.hasVisibility ? "visible" : "hidden";
315
296
  }, function (props) {
316
297
  return props.hasVisibility ? "1" : "0";
317
- }, function (props) {
318
- return props.refSize <= _variables.responsiveSizes.mobileLarge ? "none" : "";
319
- }, function (props) {
298
+ }, _variables.responsiveSizes.small, function (props) {
320
299
  return props.theme.overlayZindex;
321
300
  });
322
301
 
@@ -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: [720] },
135
+ };
136
+
137
+ export const ResponsiveHeaderFocus = RespHeaderFocus.bind({});
138
+ ResponsiveHeaderFocus.parameters = {
139
+ viewport: {
140
+ defaultViewport: "iphonex",
141
+ },
142
+ chromatic: { viewports: [720] },
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: [720] },
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: [720] },
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
+ });
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const dxcLogo: JSX.Element;
package/header/types.d.ts CHANGED
@@ -27,11 +27,13 @@ declare type Props = {
27
27
  */
28
28
  onClick?: () => void;
29
29
  /**
30
- * Size of the bottom margin to be applied to the header.
30
+ * Size of the bottom margin to be applied to the header
31
+ * ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
31
32
  */
32
33
  margin?: Space;
33
34
  /**
34
- * Size of the padding to be applied to the custom area of the component.
35
+ * Size of the padding to be applied to the custom area of the component
36
+ * ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
35
37
  * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in
36
38
  * order to specify different padding sizes.
37
39
  */
@@ -19,7 +19,7 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
19
 
20
20
  var _variables = require("../common/variables.js");
21
21
 
22
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
22
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
23
23
 
24
24
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
25
25
 
@@ -0,0 +1,54 @@
1
+ import React from "react";
2
+ import DxcHeading from "./Heading";
3
+ import Title from "../../.storybook/components/Title";
4
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+
6
+ export default {
7
+ title: "Heading",
8
+ component: DxcHeading,
9
+ };
10
+
11
+ export const Chromatic = () => (
12
+ <>
13
+ <Title title="Levels" theme="light" level={2} />
14
+ <ExampleContainer>
15
+ <Title title="Level 1" theme="light" level={4} />
16
+ <DxcHeading text="Heading for sections within the page" />
17
+ <Title title="Level 2" theme="light" level={4} />
18
+ <DxcHeading text="Heading for sections within the page" level={2} />
19
+ <Title title="Level 3" theme="light" level={4} />
20
+ <DxcHeading text="Heading for sections within the page" level={3} />
21
+ <Title title="Level 4" theme="light" level={4} />
22
+ <DxcHeading text="Heading for sections within the page" level={4} />
23
+ <Title title="Level 5" theme="light" level={4} />
24
+ <DxcHeading text="Heading for sections within the page" level={5} />
25
+ </ExampleContainer>
26
+ <Title title="Weights" theme="light" level={2} />
27
+ <ExampleContainer>
28
+ <Title title="'light' Weight" theme="light" level={4} />
29
+ <DxcHeading text="Heading for sections within the page" level={2} weight="light" />
30
+ <Title title="'normal' Weight" theme="light" level={4} />
31
+ <DxcHeading text="Heading for sections within the page" level={2} weight="normal" />
32
+ <Title title="'bold' Weight" theme="light" level={4} />
33
+ <DxcHeading text="Heading for sections within the page" level={2} weight="bold" />
34
+ </ExampleContainer>
35
+ <Title title="Margins" theme="light" level={2} />
36
+ <ExampleContainer>
37
+ <Title title="Xxsmall" theme="light" level={4} />
38
+ <DxcHeading text="Xxsmall" margin="xxsmall" />
39
+ <Title title="Xsmall" theme="light" level={4} />
40
+ <DxcHeading text="Xsmall" margin="xsmall" />
41
+ <Title title="Small" theme="light" level={4} />
42
+ <DxcHeading text="Small" margin="small" />
43
+ <Title title="Medium" theme="light" level={4} />
44
+ <DxcHeading text="Medium" margin="medium" />
45
+ <Title title="Large" theme="light" level={4} />
46
+ <DxcHeading text="Large" margin="large" />
47
+ <Title title="Xlarge" theme="light" level={4} />
48
+ <DxcHeading text="Xlarge" margin="xlarge" />
49
+ <Title title="Xxlarge" theme="light" level={4} />
50
+ <DxcHeading text="Xxlarge" margin="xxlarge" />
51
+ <hr />
52
+ </ExampleContainer>
53
+ </>
54
+ );