@dxc-technology/halstack-react 0.0.0-8710cb0 → 0.0.0-8719165

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 (284) 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.js +24 -34
  28. package/box/Box.test.js +18 -0
  29. package/bulleted-list/BulletedList.d.ts +7 -0
  30. package/bulleted-list/BulletedList.js +123 -0
  31. package/bulleted-list/BulletedList.stories.tsx +200 -0
  32. package/bulleted-list/types.d.ts +11 -0
  33. package/bulleted-list/types.js +5 -0
  34. package/button/Button.d.ts +1 -1
  35. package/button/Button.js +62 -83
  36. package/button/Button.stories.tsx +15 -8
  37. package/button/Button.test.js +35 -0
  38. package/button/types.d.ts +10 -14
  39. package/card/Card.js +26 -30
  40. package/card/Card.stories.tsx +201 -0
  41. package/card/Card.test.js +50 -0
  42. package/card/ice-cream.jpg +0 -0
  43. package/card/types.d.ts +4 -6
  44. package/checkbox/Checkbox.d.ts +1 -1
  45. package/checkbox/Checkbox.js +45 -41
  46. package/checkbox/Checkbox.stories.tsx +124 -128
  47. package/checkbox/Checkbox.test.js +78 -0
  48. package/checkbox/types.d.ts +9 -5
  49. package/chip/Chip.d.ts +4 -0
  50. package/chip/Chip.js +16 -76
  51. package/chip/Chip.stories.tsx +6 -8
  52. package/chip/Chip.test.js +56 -0
  53. package/chip/types.d.ts +45 -0
  54. package/chip/types.js +5 -0
  55. package/common/variables.js +278 -355
  56. package/date-input/DateInput.js +66 -55
  57. package/date-input/DateInput.stories.tsx +7 -7
  58. package/date-input/DateInput.test.js +479 -0
  59. package/date-input/types.d.ts +16 -9
  60. package/dialog/Dialog.js +50 -53
  61. package/dialog/Dialog.stories.tsx +1 -2
  62. package/dialog/Dialog.test.js +70 -0
  63. package/dialog/types.d.ts +2 -2
  64. package/dropdown/Dropdown.d.ts +1 -1
  65. package/dropdown/Dropdown.js +242 -272
  66. package/dropdown/Dropdown.stories.tsx +312 -0
  67. package/dropdown/Dropdown.test.js +591 -0
  68. package/dropdown/DropdownMenu.d.ts +4 -0
  69. package/dropdown/DropdownMenu.js +80 -0
  70. package/dropdown/DropdownMenuItem.d.ts +4 -0
  71. package/dropdown/DropdownMenuItem.js +92 -0
  72. package/dropdown/types.d.ts +30 -19
  73. package/file-input/FileInput.d.ts +4 -0
  74. package/file-input/FileInput.js +172 -111
  75. package/file-input/FileInput.stories.tsx +507 -0
  76. package/file-input/FileInput.test.js +457 -0
  77. package/file-input/FileItem.d.ts +14 -0
  78. package/file-input/FileItem.js +16 -23
  79. package/file-input/types.d.ts +112 -0
  80. package/file-input/types.js +5 -0
  81. package/flex/Flex.d.ts +4 -0
  82. package/flex/Flex.js +57 -0
  83. package/flex/Flex.stories.tsx +103 -0
  84. package/flex/types.d.ts +21 -0
  85. package/flex/types.js +5 -0
  86. package/footer/Footer.d.ts +1 -1
  87. package/footer/Footer.js +32 -113
  88. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  89. package/footer/Footer.test.js +109 -0
  90. package/footer/Icons.d.ts +2 -0
  91. package/footer/Icons.js +4 -4
  92. package/footer/types.d.ts +21 -17
  93. package/header/Header.js +29 -50
  94. package/header/Header.stories.tsx +46 -36
  95. package/header/Header.test.js +79 -0
  96. package/header/Icons.d.ts +2 -0
  97. package/header/types.d.ts +4 -2
  98. package/heading/Heading.js +1 -1
  99. package/heading/Heading.stories.tsx +54 -0
  100. package/heading/Heading.test.js +186 -0
  101. package/inset/Inset.d.ts +3 -0
  102. package/inset/Inset.js +51 -0
  103. package/inset/Inset.stories.tsx +229 -0
  104. package/inset/types.d.ts +37 -0
  105. package/inset/types.js +5 -0
  106. package/layout/ApplicationLayout.d.ts +20 -0
  107. package/layout/ApplicationLayout.js +71 -135
  108. package/layout/ApplicationLayout.stories.tsx +161 -0
  109. package/layout/Icons.d.ts +5 -0
  110. package/layout/Icons.js +13 -2
  111. package/layout/SidenavContext.d.ts +5 -0
  112. package/layout/SidenavContext.js +19 -0
  113. package/layout/types.d.ts +42 -0
  114. package/layout/types.js +5 -0
  115. package/link/Link.d.ts +3 -2
  116. package/link/Link.js +61 -86
  117. package/link/Link.stories.tsx +139 -16
  118. package/link/Link.test.js +83 -0
  119. package/link/types.d.ts +9 -29
  120. package/main.d.ts +12 -12
  121. package/main.js +64 -58
  122. package/number-input/NumberInput.js +14 -24
  123. package/number-input/NumberInput.stories.tsx +5 -5
  124. package/number-input/NumberInput.test.js +506 -0
  125. package/number-input/NumberInputContext.d.ts +4 -0
  126. package/number-input/NumberInputContext.js +5 -2
  127. package/number-input/numberInputContextTypes.d.ts +19 -0
  128. package/number-input/numberInputContextTypes.js +5 -0
  129. package/number-input/types.d.ts +17 -10
  130. package/package.json +14 -10
  131. package/paginator/Paginator.js +19 -46
  132. package/paginator/Paginator.test.js +308 -0
  133. package/paragraph/Paragraph.d.ts +6 -0
  134. package/paragraph/Paragraph.js +38 -0
  135. package/paragraph/Paragraph.stories.tsx +44 -0
  136. package/password-input/PasswordInput.js +23 -19
  137. package/password-input/PasswordInput.stories.tsx +3 -3
  138. package/password-input/PasswordInput.test.js +180 -0
  139. package/password-input/types.d.ts +29 -19
  140. package/progress-bar/ProgressBar.d.ts +2 -2
  141. package/progress-bar/ProgressBar.js +59 -53
  142. package/progress-bar/ProgressBar.stories.jsx +13 -11
  143. package/progress-bar/ProgressBar.test.js +110 -0
  144. package/progress-bar/types.d.ts +3 -4
  145. package/quick-nav/QuickNav.d.ts +4 -0
  146. package/quick-nav/QuickNav.js +118 -0
  147. package/quick-nav/QuickNav.stories.tsx +264 -0
  148. package/quick-nav/types.d.ts +21 -0
  149. package/quick-nav/types.js +5 -0
  150. package/radio-group/Radio.d.ts +4 -0
  151. package/radio-group/Radio.js +141 -0
  152. package/radio-group/RadioGroup.d.ts +4 -0
  153. package/radio-group/RadioGroup.js +281 -0
  154. package/radio-group/RadioGroup.stories.tsx +100 -0
  155. package/radio-group/RadioGroup.test.js +695 -0
  156. package/radio-group/types.d.ts +114 -0
  157. package/radio-group/types.js +5 -0
  158. package/resultsetTable/ResultsetTable.d.ts +4 -0
  159. package/resultsetTable/ResultsetTable.js +9 -29
  160. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  161. package/resultsetTable/ResultsetTable.test.js +348 -0
  162. package/resultsetTable/types.d.ts +67 -0
  163. package/resultsetTable/types.js +5 -0
  164. package/select/Icons.d.ts +10 -0
  165. package/select/Icons.js +93 -0
  166. package/select/Listbox.d.ts +4 -0
  167. package/select/Listbox.js +199 -0
  168. package/select/Option.d.ts +4 -0
  169. package/select/Option.js +110 -0
  170. package/select/Select.d.ts +4 -0
  171. package/select/Select.js +158 -380
  172. package/select/Select.stories.tsx +231 -176
  173. package/select/Select.test.js +2175 -0
  174. package/select/types.d.ts +210 -0
  175. package/select/types.js +5 -0
  176. package/sidenav/Sidenav.d.ts +6 -5
  177. package/sidenav/Sidenav.js +186 -54
  178. package/sidenav/Sidenav.stories.tsx +180 -0
  179. package/sidenav/Sidenav.test.js +44 -0
  180. package/sidenav/types.d.ts +50 -27
  181. package/slider/Slider.d.ts +1 -1
  182. package/slider/Slider.js +6 -5
  183. package/slider/Slider.stories.tsx +8 -8
  184. package/slider/Slider.test.js +150 -0
  185. package/slider/types.d.ts +4 -0
  186. package/spinner/Spinner.js +3 -3
  187. package/spinner/Spinner.stories.jsx +1 -0
  188. package/spinner/Spinner.test.js +64 -0
  189. package/switch/Switch.d.ts +2 -2
  190. package/switch/Switch.js +129 -57
  191. package/switch/Switch.stories.tsx +21 -43
  192. package/switch/Switch.test.js +212 -0
  193. package/switch/types.d.ts +9 -6
  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 +130 -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-input/Suggestion.d.ts +4 -0
  216. package/text-input/Suggestion.js +55 -0
  217. package/text-input/TextInput.d.ts +4 -0
  218. package/text-input/TextInput.js +103 -167
  219. package/text-input/TextInput.stories.tsx +473 -0
  220. package/text-input/TextInput.test.js +1712 -0
  221. package/text-input/types.d.ts +178 -0
  222. package/text-input/types.js +5 -0
  223. package/textarea/Textarea.d.ts +4 -0
  224. package/textarea/Textarea.js +39 -79
  225. package/textarea/Textarea.stories.jsx +37 -15
  226. package/textarea/Textarea.test.js +437 -0
  227. package/textarea/types.d.ts +137 -0
  228. package/textarea/types.js +5 -0
  229. package/toggle-group/ToggleGroup.d.ts +4 -0
  230. package/toggle-group/ToggleGroup.js +18 -46
  231. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  232. package/toggle-group/ToggleGroup.test.js +156 -0
  233. package/toggle-group/types.d.ts +105 -0
  234. package/toggle-group/types.js +5 -0
  235. package/typography/Typography.d.ts +4 -0
  236. package/typography/Typography.js +131 -0
  237. package/typography/Typography.stories.tsx +198 -0
  238. package/typography/types.d.ts +18 -0
  239. package/typography/types.js +5 -0
  240. package/useTheme.d.ts +2 -0
  241. package/useTheme.js +2 -2
  242. package/useTranslatedLabels.d.ts +2 -0
  243. package/useTranslatedLabels.js +20 -0
  244. package/wizard/Wizard.d.ts +1 -1
  245. package/wizard/Wizard.js +112 -58
  246. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +33 -24
  247. package/wizard/Wizard.test.js +141 -0
  248. package/wizard/types.d.ts +13 -12
  249. package/ThemeContext.js +0 -246
  250. package/V3Select/V3Select.js +0 -455
  251. package/V3Select/index.d.ts +0 -27
  252. package/V3Textarea/V3Textarea.js +0 -260
  253. package/V3Textarea/index.d.ts +0 -27
  254. package/chip/index.d.ts +0 -22
  255. package/date/Date.js +0 -373
  256. package/date/index.d.ts +0 -27
  257. package/file-input/index.d.ts +0 -81
  258. package/input-text/Icons.js +0 -22
  259. package/input-text/InputText.js +0 -611
  260. package/input-text/index.d.ts +0 -36
  261. package/radio/Radio.d.ts +0 -4
  262. package/radio/Radio.js +0 -174
  263. package/radio/Radio.stories.tsx +0 -192
  264. package/radio/types.d.ts +0 -54
  265. package/resultsetTable/index.d.ts +0 -19
  266. package/select/index.d.ts +0 -131
  267. package/text-input/index.d.ts +0 -135
  268. package/textarea/index.d.ts +0 -117
  269. package/toggle/Toggle.js +0 -186
  270. package/toggle/index.d.ts +0 -21
  271. package/toggle-group/index.d.ts +0 -21
  272. package/upload/Upload.js +0 -201
  273. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  274. package/upload/buttons-upload/Icons.js +0 -40
  275. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  276. package/upload/dragAndDropArea/Icons.js +0 -39
  277. package/upload/file-upload/FileToUpload.js +0 -115
  278. package/upload/file-upload/Icons.js +0 -66
  279. package/upload/files-upload/FilesToUpload.js +0 -109
  280. package/upload/index.d.ts +0 -15
  281. package/upload/transaction/Icons.js +0 -160
  282. package/upload/transaction/Transaction.js +0 -104
  283. package/upload/transactions/Transactions.js +0 -94
  284. package/wizard/Icons.js +0 -65
package/footer/types.d.ts CHANGED
@@ -6,34 +6,38 @@ declare type Size = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
9
10
  declare type SocialLink = {
10
- logo?: ImgElement;
11
- logoSrc?: string;
12
- href?: string;
11
+ /**
12
+ * Element used as the icon for the link.
13
+ */
14
+ logo: string | SVG;
15
+ /**
16
+ * URL of the page the link goes to.
17
+ */
18
+ href: string;
13
19
  };
14
20
  declare type BottomLink = {
15
- text?: string;
16
- href?: string;
21
+ /**
22
+ * Text for the link.
23
+ */
24
+ text: string;
25
+ /**
26
+ * URL of the page the link goes to.
27
+ */
28
+ href: string;
17
29
  };
18
- declare type ImgElement = HTMLElement & (SVGElement | HTMLImageElement);
19
30
  declare type FooterPropsType = {
20
31
  /**
21
32
  * An array of objects representing the links that will be rendered as
22
- * icons at the top-right side of the footer. Each object has the
23
- * following properties:
24
- * - logo: Element used as the icon for the link.
25
- * - logoSrc: The path of an icon for the link. @deprecated
26
- * - href: URL of the page the link goes to.
33
+ * icons at the top-right side of the footer.
27
34
  */
28
- socialLinks?: [SocialLink, ...SocialLink[]];
35
+ socialLinks?: SocialLink[];
29
36
  /**
30
37
  * An array of objects representing the links that will be rendered at
31
- * the bottom part of the footer. Each object has the following
32
- * properties:
33
- * - text: Text for the link.
34
- * - href: URL of the page the link goes to.
38
+ * the bottom part of the footer.
35
39
  */
36
- bottomLinks?: [BottomLink, ...BottomLink[]];
40
+ bottomLinks?: BottomLink[];
37
41
  /**
38
42
  * The center section of the footer. Can be used to render custom
39
43
  * content in this area.
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
 
@@ -26,15 +26,6 @@ export const Chromatic = () => (
26
26
  <Title title="Underlined with text" theme="light" level={4} />
27
27
  <DxcHeader underlined content={<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras felis.</p>} />
28
28
  </ExampleContainer>
29
- <ExampleContainer>
30
- <Title title="Responsive" theme="light" level={4} />
31
- <div style={{ width: "400px" }}>
32
- <DxcHeader
33
- responsiveContent={(closeHandler) => <DxcHeader.Dropdown options={options} label="Default Dropdown" />}
34
- underlined
35
- />
36
- </div>
37
- </ExampleContainer>
38
29
  <Title title="Margins" theme="light" level={2} />
39
30
  <ExampleContainer>
40
31
  <Title title="Xxsmall margin" theme="light" level={4} />
@@ -104,59 +95,78 @@ export const Chromatic = () => (
104
95
  </>
105
96
  );
106
97
 
107
- const RespHeader = () => (
98
+ export const ResponsiveHeader = () => (
108
99
  <ExampleContainer>
109
100
  <Title title="Responsive" theme="light" level={4} />
110
- <div style={{ maxWidth: "400px" }}>
111
- <DxcHeader
112
- responsiveContent={(closeHandler) => <DxcHeader.Dropdown options={options} label="Default Dropdown" />}
113
- underlined
114
- />
115
- </div>
101
+ <DxcHeader
102
+ content={<DxcHeader.Dropdown options={options} label="Default Dropdown" />}
103
+ responsiveContent={(closeHandler) => <DxcHeader.Dropdown options={options} label="Default Dropdown" />}
104
+ underlined
105
+ />
116
106
  </ExampleContainer>
117
107
  );
118
108
 
119
109
  const RespHeaderFocus = () => (
120
110
  <ExampleContainer pseudoState="pseudo-focus">
121
- <Title title="Responsive" theme="light" level={4} />
122
- <div style={{ maxWidth: "400px" }}>
123
- <DxcHeader
124
- responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>}
125
- underlined
126
- />
127
- </div>
111
+ <Title title="Responsive focus" theme="light" level={4} />
112
+ <DxcHeader responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>} underlined />
128
113
  </ExampleContainer>
129
114
  );
130
115
 
131
116
  const RespHeaderHover = () => (
132
117
  <ExampleContainer pseudoState="pseudo-hover">
133
- <Title title="Responsive" theme="light" level={4} />
134
- <div style={{ maxWidth: "400px" }}>
135
- <DxcHeader
136
- responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>}
137
- underlined
138
- />
139
- </div>
118
+ <Title title="Responsive hover" theme="light" level={4} />
119
+ <DxcHeader responsiveContent={(closeHandler) => <p>Lorem ipsum dolor sit amet.</p>} underlined />
140
120
  </ExampleContainer>
141
121
  );
142
122
 
143
- export const ResponsiveHeader = RespHeader.bind({});
144
- ResponsiveHeader.play = async ({ canvasElement }) => {
145
- const canvas = within(canvasElement);
146
- await waitFor(() => canvas.findByText("Menu"));
147
- await userEvent.click(canvas.getByText("Menu"));
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] },
148
135
  };
149
136
 
150
137
  export const ResponsiveHeaderFocus = RespHeaderFocus.bind({});
138
+ ResponsiveHeaderFocus.parameters = {
139
+ viewport: {
140
+ defaultViewport: "iphonex",
141
+ },
142
+ chromatic: { viewports: [720] },
143
+ };
151
144
  ResponsiveHeaderFocus.play = async ({ canvasElement }) => {
152
145
  const canvas = within(canvasElement);
153
146
  await waitFor(() => canvas.findByText("Menu"));
154
- await userEvent.click(canvas.getByText("Menu"));
155
147
  };
156
148
 
157
149
  export const ResponsiveHeaderHover = RespHeaderHover.bind({});
150
+ ResponsiveHeaderHover.parameters = {
151
+ viewport: {
152
+ defaultViewport: "iphonex",
153
+ },
154
+ chromatic: { viewports: [720] },
155
+ };
158
156
  ResponsiveHeaderHover.play = async ({ canvasElement }) => {
159
157
  const canvas = within(canvasElement);
160
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"));
161
171
  await userEvent.click(canvas.getByText("Menu"));
162
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
+ );