@dxc-technology/halstack-react 0.0.0-fdc49d2 → 0.0.0-ff5083e

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 (145) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +295 -0
  3. package/accordion/Accordion.js +5 -27
  4. package/accordion/Accordion.stories.tsx +3 -3
  5. package/accordion-group/AccordionGroup.d.ts +1 -1
  6. package/accordion-group/AccordionGroup.js +13 -15
  7. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  8. package/accordion-group/AccordionGroup.test.js +24 -6
  9. package/accordion-group/types.d.ts +4 -0
  10. package/alert/Alert.js +4 -1
  11. package/badge/Badge.d.ts +1 -1
  12. package/badge/Badge.js +5 -3
  13. package/badge/types.d.ts +1 -0
  14. package/bleed/Bleed.js +1 -34
  15. package/bleed/Bleed.stories.tsx +31 -32
  16. package/bleed/types.d.ts +1 -1
  17. package/box/Box.js +22 -32
  18. package/bulleted-list/BulletedList.d.ts +7 -0
  19. package/bulleted-list/BulletedList.js +120 -0
  20. package/bulleted-list/BulletedList.stories.tsx +203 -0
  21. package/bulleted-list/types.d.ts +11 -0
  22. package/{list → bulleted-list}/types.js +0 -0
  23. package/button/Button.js +14 -11
  24. package/card/Card.js +24 -27
  25. package/checkbox/Checkbox.d.ts +1 -1
  26. package/checkbox/Checkbox.js +38 -28
  27. package/checkbox/Checkbox.stories.tsx +124 -128
  28. package/checkbox/types.d.ts +3 -3
  29. package/common/variables.js +197 -84
  30. package/date-input/DateInput.js +38 -20
  31. package/date-input/DateInput.test.js +9 -22
  32. package/date-input/types.d.ts +12 -9
  33. package/dialog/Dialog.js +4 -32
  34. package/dropdown/Dropdown.js +13 -17
  35. package/file-input/FileInput.js +9 -6
  36. package/file-input/FileItem.js +7 -5
  37. package/footer/Footer.js +15 -88
  38. package/header/Header.js +27 -48
  39. package/header/Header.stories.tsx +46 -36
  40. package/header/Header.test.js +18 -2
  41. package/inset/Inset.js +1 -34
  42. package/inset/Inset.stories.tsx +32 -32
  43. package/inset/types.d.ts +25 -1
  44. package/layout/ApplicationLayout.d.ts +4 -3
  45. package/layout/ApplicationLayout.js +82 -114
  46. package/layout/ApplicationLayout.stories.tsx +14 -59
  47. package/layout/Icons.d.ts +5 -0
  48. package/layout/Icons.js +13 -2
  49. package/layout/SidenavContext.d.ts +5 -0
  50. package/layout/SidenavContext.js +19 -0
  51. package/layout/types.d.ts +5 -10
  52. package/link/Link.d.ts +3 -2
  53. package/link/Link.js +57 -74
  54. package/link/Link.stories.tsx +87 -52
  55. package/link/Link.test.js +7 -15
  56. package/link/types.d.ts +7 -23
  57. package/main.d.ts +6 -5
  58. package/main.js +37 -23
  59. package/number-input/NumberInput.test.js +2 -4
  60. package/number-input/types.d.ts +13 -10
  61. package/package.json +6 -5
  62. package/paginator/Paginator.js +17 -38
  63. package/paragraph/Paragraph.d.ts +6 -0
  64. package/paragraph/Paragraph.js +38 -0
  65. package/paragraph/Paragraph.stories.tsx +44 -0
  66. package/password-input/PasswordInput.js +7 -4
  67. package/password-input/PasswordInput.test.js +3 -6
  68. package/password-input/types.d.ts +14 -11
  69. package/progress-bar/ProgressBar.js +1 -1
  70. package/progress-bar/ProgressBar.stories.jsx +11 -11
  71. package/quick-nav/QuickNav.js +75 -23
  72. package/quick-nav/QuickNav.stories.tsx +13 -13
  73. package/quick-nav/types.d.ts +4 -8
  74. package/radio-group/Radio.js +1 -1
  75. package/radio-group/RadioGroup.js +8 -6
  76. package/select/Listbox.d.ts +4 -0
  77. package/select/Listbox.js +152 -0
  78. package/select/Option.js +1 -1
  79. package/select/Select.js +66 -161
  80. package/select/Select.stories.tsx +14 -2
  81. package/select/Select.test.js +335 -231
  82. package/select/types.d.ts +33 -11
  83. package/sidenav/Sidenav.d.ts +1 -1
  84. package/sidenav/Sidenav.js +20 -9
  85. package/slider/Slider.d.ts +1 -1
  86. package/slider/Slider.js +2 -1
  87. package/slider/Slider.stories.tsx +8 -8
  88. package/slider/Slider.test.js +31 -10
  89. package/slider/types.d.ts +4 -0
  90. package/spinner/Spinner.js +1 -1
  91. package/switch/Switch.d.ts +1 -1
  92. package/switch/Switch.js +19 -16
  93. package/switch/Switch.stories.tsx +8 -8
  94. package/switch/types.d.ts +2 -2
  95. package/tabs/Tabs.d.ts +1 -1
  96. package/tabs/Tabs.js +9 -11
  97. package/tabs/Tabs.stories.tsx +0 -8
  98. package/tabs/Tabs.test.js +26 -9
  99. package/tabs/types.d.ts +4 -0
  100. package/tabs-nav/NavTabs.d.ts +8 -0
  101. package/tabs-nav/NavTabs.js +125 -0
  102. package/tabs-nav/NavTabs.stories.tsx +170 -0
  103. package/tabs-nav/NavTabs.test.js +82 -0
  104. package/tabs-nav/Tab.d.ts +4 -0
  105. package/tabs-nav/Tab.js +132 -0
  106. package/tabs-nav/types.d.ts +53 -0
  107. package/{radio → tabs-nav}/types.js +0 -0
  108. package/tag/Tag.js +5 -8
  109. package/text-input/Suggestion.d.ts +4 -0
  110. package/text-input/Suggestion.js +55 -0
  111. package/text-input/TextInput.js +48 -76
  112. package/text-input/TextInput.test.js +22 -35
  113. package/text-input/types.d.ts +27 -12
  114. package/textarea/Textarea.js +10 -19
  115. package/textarea/types.d.ts +10 -7
  116. package/toggle-group/ToggleGroup.d.ts +1 -1
  117. package/toggle-group/ToggleGroup.js +5 -4
  118. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  119. package/toggle-group/ToggleGroup.test.js +35 -4
  120. package/toggle-group/types.d.ts +8 -0
  121. package/typography/Typography.d.ts +4 -0
  122. package/typography/Typography.js +131 -0
  123. package/typography/Typography.stories.tsx +175 -0
  124. package/typography/types.d.ts +18 -0
  125. package/typography/types.js +5 -0
  126. package/typography/typographyContextTypes.d.ts +16 -0
  127. package/typography/typographyContextTypes.js +5 -0
  128. package/useTheme.js +2 -2
  129. package/useTranslatedLabels.d.ts +2 -0
  130. package/useTranslatedLabels.js +20 -0
  131. package/wizard/Wizard.js +35 -29
  132. package/ThemeContext.d.ts +0 -10
  133. package/ThemeContext.js +0 -243
  134. package/list/List.d.ts +0 -4
  135. package/list/List.js +0 -47
  136. package/list/List.stories.tsx +0 -95
  137. package/list/types.d.ts +0 -7
  138. package/radio/Radio.d.ts +0 -4
  139. package/radio/Radio.js +0 -174
  140. package/radio/Radio.stories.tsx +0 -192
  141. package/radio/Radio.test.js +0 -71
  142. package/radio/types.d.ts +0 -54
  143. package/text/Text.d.ts +0 -7
  144. package/text/Text.js +0 -30
  145. package/text/Text.stories.tsx +0 -19
package/header/Header.js CHANGED
@@ -29,6 +29,8 @@ var _variables = require("../common/variables.js");
29
29
 
30
30
  var _useTheme = _interopRequireDefault(require("../useTheme"));
31
31
 
32
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
33
+
32
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;
@@ -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
  };
@@ -8,9 +8,17 @@ var _react2 = require("@testing-library/react");
8
8
 
9
9
  var _Header = _interopRequireDefault(require("./Header"));
10
10
 
11
- var _linkedin = _interopRequireDefault(require("../../app/src/images/linkedin.svg"));
12
-
13
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
+ });
14
22
  test("Header renders with default logo", function () {
15
23
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Header["default"], null)),
16
24
  getByTitle = _render.getByTitle;
@@ -50,6 +58,14 @@ describe("Header component tests", function () {
50
58
  configurable: true,
51
59
  value: 425
52
60
  });
61
+ Object.defineProperty(window, "matchMedia", {
62
+ writable: true,
63
+ value: jest.fn().mockImplementation(function () {
64
+ return {
65
+ matches: true
66
+ };
67
+ })
68
+ });
53
69
 
54
70
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Header["default"], {
55
71
  responsiveContent: function responsiveContent(closeMenu) {
package/inset/Inset.js CHANGED
@@ -36,40 +36,7 @@ function Inset(_ref) {
36
36
  }
37
37
 
38
38
  function getSpacingValue(spacingName) {
39
- switch (spacingName) {
40
- case "none":
41
- return "0rem";
42
-
43
- case "xxxsmall":
44
- return "0.125rem";
45
-
46
- case "xxsmall":
47
- return "0.25rem";
48
-
49
- case "xsmall":
50
- return "0.5rem";
51
-
52
- case "small":
53
- return "1rem";
54
-
55
- case "medium":
56
- return "1.5rem";
57
-
58
- case "large":
59
- return "2rem";
60
-
61
- case "xlarge":
62
- return "3rem";
63
-
64
- case "xxlarge":
65
- return "4rem";
66
-
67
- case "xxxlarge":
68
- return "5rem";
69
-
70
- default:
71
- return "0rem";
72
- }
39
+ return spacingName ? spacingName : "0rem";
73
40
  }
74
41
 
75
42
  var StyledInset = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n"])), function (_ref2) {
@@ -19,187 +19,187 @@ export const Chromatic = () => (
19
19
  </Container>
20
20
  <Title title="space = none" level={4} />
21
21
  <Container>
22
- <DxcInset space="none">
22
+ <DxcInset space="0rem">
23
23
  <Placeholder></Placeholder>
24
24
  </DxcInset>
25
25
  </Container>
26
26
  <Title title="space = xxxsmall" level={4} />
27
27
  <Container>
28
- <DxcInset space="xxxsmall">
28
+ <DxcInset space="0.125rem">
29
29
  <Placeholder></Placeholder>
30
30
  </DxcInset>
31
31
  </Container>
32
32
  <Title title="space = xxsmall" level={4} />
33
33
  <Container>
34
- <DxcInset space="xxsmall">
34
+ <DxcInset space="0.25rem">
35
35
  <Placeholder></Placeholder>
36
36
  </DxcInset>
37
37
  </Container>
38
38
  <Title title="space = xsmall" level={4} />
39
39
  <Container>
40
- <DxcInset space="xsmall">
40
+ <DxcInset space="0.5rem">
41
41
  <Placeholder></Placeholder>
42
42
  </DxcInset>
43
43
  </Container>
44
44
  <Title title="space = small" level={4} />
45
45
  <Container>
46
- <DxcInset space="small">
46
+ <DxcInset space="1rem">
47
47
  <Placeholder></Placeholder>
48
48
  </DxcInset>
49
49
  </Container>
50
50
  <Title title="space = medium" level={4} />
51
51
  <Container>
52
- <DxcInset space="medium">
52
+ <DxcInset space="1.5rem">
53
53
  <Placeholder></Placeholder>
54
54
  </DxcInset>
55
55
  </Container>
56
56
  <Title title="space = large" level={4} />
57
57
  <Container>
58
- <DxcInset space="large">
58
+ <DxcInset space="2rem">
59
59
  <Placeholder></Placeholder>
60
60
  </DxcInset>
61
61
  </Container>
62
62
  <Title title="space = xlarge" level={4} />
63
63
  <Container>
64
- <DxcInset space="xlarge">
64
+ <DxcInset space="3rem">
65
65
  <Placeholder></Placeholder>
66
66
  </DxcInset>
67
67
  </Container>
68
68
  <Title title="space = xxlarge" level={4} />
69
69
  <Container>
70
- <DxcInset space="xxlarge">
70
+ <DxcInset space="4rem">
71
71
  <Placeholder></Placeholder>
72
72
  </DxcInset>
73
73
  </Container>
74
74
  <Title title="space = xxxlarge" level={4} />
75
75
  <Container>
76
- <DxcInset space="xxxlarge">
76
+ <DxcInset space="5rem">
77
77
  <Placeholder></Placeholder>
78
78
  </DxcInset>
79
79
  </Container>
80
80
  <Title title="horizontal = none" level={4} />
81
81
  <Container>
82
- <DxcInset horizontal="none">
82
+ <DxcInset horizontal="0rem">
83
83
  <Placeholder></Placeholder>
84
84
  </DxcInset>
85
85
  </Container>
86
86
  <Title title="horizontal = xxxsmall" level={4} />
87
87
  <Container>
88
- <DxcInset horizontal="xxxsmall">
88
+ <DxcInset horizontal="0.125rem">
89
89
  <Placeholder></Placeholder>
90
90
  </DxcInset>
91
91
  </Container>
92
92
  <Title title="horizontal = xxsmall" level={4} />
93
93
  <Container>
94
- <DxcInset horizontal="xxsmall">
94
+ <DxcInset horizontal="0.25rem">
95
95
  <Placeholder></Placeholder>
96
96
  </DxcInset>
97
97
  </Container>
98
98
  <Title title="horizontal = xsmall" level={4} />
99
99
  <Container>
100
- <DxcInset horizontal="xsmall">
100
+ <DxcInset horizontal="0.5rem">
101
101
  <Placeholder></Placeholder>
102
102
  </DxcInset>
103
103
  </Container>
104
104
  <Title title="horizontal = small" level={4} />
105
105
  <Container>
106
- <DxcInset horizontal="small">
106
+ <DxcInset horizontal="1rem">
107
107
  <Placeholder></Placeholder>
108
108
  </DxcInset>
109
109
  </Container>
110
110
  <Title title="horizontal = medium" level={4} />
111
111
  <Container>
112
- <DxcInset horizontal="medium">
112
+ <DxcInset horizontal="1.5rem">
113
113
  <Placeholder></Placeholder>
114
114
  </DxcInset>
115
115
  </Container>
116
116
  <Title title="horizontal = large" level={4} />
117
117
  <Container>
118
- <DxcInset horizontal="large">
118
+ <DxcInset horizontal="2rem">
119
119
  <Placeholder></Placeholder>
120
120
  </DxcInset>
121
121
  </Container>
122
122
  <Title title="horizontal = xlarge" level={4} />
123
123
  <Container>
124
- <DxcInset horizontal="xlarge">
124
+ <DxcInset horizontal="3rem">
125
125
  <Placeholder></Placeholder>
126
126
  </DxcInset>
127
127
  </Container>
128
128
  <Title title="horizontal = xxlarge" level={4} />
129
129
  <Container>
130
- <DxcInset horizontal="xxlarge">
130
+ <DxcInset horizontal="4rem">
131
131
  <Placeholder></Placeholder>
132
132
  </DxcInset>
133
133
  </Container>
134
134
  <Title title="horizontal = xxxlarge" level={4} />
135
135
  <Container>
136
- <DxcInset horizontal="xxxlarge">
136
+ <DxcInset horizontal="5rem">
137
137
  <Placeholder></Placeholder>
138
138
  </DxcInset>
139
139
  </Container>
140
140
  <Title title="vertical = none" level={4} />
141
141
  <Container>
142
- <DxcInset vertical="none">
142
+ <DxcInset vertical="0rem">
143
143
  <Placeholder></Placeholder>
144
144
  </DxcInset>
145
145
  </Container>
146
146
  <Title title="vertical = xxxsmall" level={4} />
147
147
  <Container>
148
- <DxcInset vertical="xxxsmall">
148
+ <DxcInset vertical="0.125rem">
149
149
  <Placeholder></Placeholder>
150
150
  </DxcInset>
151
151
  </Container>
152
152
  <Title title="vertical = xxsmall" level={4} />
153
153
  <Container>
154
- <DxcInset vertical="xxsmall">
154
+ <DxcInset vertical="0.25rem">
155
155
  <Placeholder></Placeholder>
156
156
  </DxcInset>
157
157
  </Container>
158
158
  <Title title="vertical = xsmall" level={4} />
159
159
  <Container>
160
- <DxcInset vertical="xsmall">
160
+ <DxcInset vertical="0.5rem">
161
161
  <Placeholder></Placeholder>
162
162
  </DxcInset>
163
163
  </Container>
164
164
  <Title title="vertical = small" level={4} />
165
165
  <Container>
166
- <DxcInset vertical="small">
166
+ <DxcInset vertical="1rem">
167
167
  <Placeholder></Placeholder>
168
168
  </DxcInset>
169
169
  </Container>
170
170
  <Title title="vertical = medium" level={4} />
171
171
  <Container>
172
- <DxcInset vertical="medium">
172
+ <DxcInset vertical="1.5rem">
173
173
  <Placeholder></Placeholder>
174
174
  </DxcInset>
175
175
  </Container>
176
176
  <Title title="vertical = large" level={4} />
177
177
  <Container>
178
- <DxcInset vertical="large">
178
+ <DxcInset vertical="2rem">
179
179
  <Placeholder></Placeholder>
180
180
  </DxcInset>
181
181
  </Container>
182
182
  <Title title="vertical = xlarge" level={4} />
183
183
  <Container>
184
- <DxcInset vertical="xlarge">
184
+ <DxcInset vertical="3rem">
185
185
  <Placeholder></Placeholder>
186
186
  </DxcInset>
187
187
  </Container>
188
188
  <Title title="vertical = xxlarge" level={4} />
189
189
  <Container>
190
- <DxcInset vertical="xxlarge">
190
+ <DxcInset vertical="4rem">
191
191
  <Placeholder></Placeholder>
192
192
  </DxcInset>
193
193
  </Container>
194
194
  <Title title="vertical = xxxlarge" level={4} />
195
195
  <Container>
196
- <DxcInset vertical="xxxlarge">
196
+ <DxcInset vertical="5rem">
197
197
  <Placeholder></Placeholder>
198
198
  </DxcInset>
199
199
  </Container>
200
200
  <Title title="top = xxsmall, right= medium, bottom = large and left = xxlarge" level={4} />
201
201
  <Container>
202
- <DxcInset top="xxsmall" right="medium" bottom="large" left="xxlarge">
202
+ <DxcInset top="0.25rem" right="1.5rem" bottom="2rem" left="4rem">
203
203
  <Placeholder></Placeholder>
204
204
  </DxcInset>
205
205
  </Container>
@@ -207,7 +207,7 @@ export const Chromatic = () => (
207
207
  <Container>
208
208
  <DxcStack gutter="medium" divider>
209
209
  <Placeholder></Placeholder>
210
- <DxcInset top="xxsmall" right="medium" bottom="large" left="xxlarge">
210
+ <DxcInset top="0.25rem" right="1.5rem" bottom="2rem" left="4rem">
211
211
  <Placeholder></Placeholder>
212
212
  </DxcInset>
213
213
  <Placeholder></Placeholder>
package/inset/types.d.ts CHANGED
@@ -1,13 +1,37 @@
1
1
  /// <reference types="react" />
2
- declare type Spacing = "none" | "xxxsmall" | "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge" | "xxxlarge";
2
+ declare type Spacing = "0rem" | "0.125rem" | "0.25rem" | "0.5rem" | "1rem" | "1.5rem" | "2rem" | "3rem" | "4rem" | "5rem";
3
3
  declare type Props = {
4
+ /**
5
+ * Applies the spacing scale to all sides.
6
+ */
4
7
  space?: Spacing;
8
+ /**
9
+ * Applies the spacing scale to the left and right sides.
10
+ */
5
11
  horizontal?: Spacing;
12
+ /**
13
+ * Applies the spacing scale to the top and bottom sides.
14
+ */
6
15
  vertical?: Spacing;
16
+ /**
17
+ * Applies the spacing scale to the top side.
18
+ */
7
19
  top?: Spacing;
20
+ /**
21
+ * Applies the spacing scale to the right side.
22
+ */
8
23
  right?: Spacing;
24
+ /**
25
+ * Applies the spacing scale to the bottom side.
26
+ */
9
27
  bottom?: Spacing;
28
+ /**
29
+ * Applies the spacing scale to the left side.
30
+ */
10
31
  left?: Spacing;
32
+ /**
33
+ * Custom content inside the inset.
34
+ */
11
35
  children: React.ReactNode;
12
36
  };
13
37
  export default Props;
@@ -1,10 +1,11 @@
1
1
  /// <reference types="react" />
2
- import AppLayoutPropsType, { AppLayoutFooterPropsType, AppLayoutMainPropsType, AppLayoutHeaderPropsType } from "./types";
2
+ import AppLayoutPropsType, { AppLayoutSidenavPropsType, AppLayoutFooterPropsType, AppLayoutMainPropsType, AppLayoutHeaderPropsType } from "./types";
3
3
  declare const DxcApplicationLayout: {
4
- ({ children }: AppLayoutPropsType): JSX.Element;
4
+ ({ visibilityToggleLabel, children }: AppLayoutPropsType): JSX.Element;
5
5
  Header: ({ children }: AppLayoutHeaderPropsType) => JSX.Element;
6
6
  Main: ({ children }: AppLayoutMainPropsType) => JSX.Element;
7
7
  Footer: ({ children }: AppLayoutFooterPropsType) => JSX.Element;
8
- SideNav: (props: any) => JSX.Element;
8
+ SideNav: ({ ...childProps }: AppLayoutSidenavPropsType) => JSX.Element;
9
+ useResponsiveSidenavVisibility: () => (isSidenavVisible: boolean) => void;
9
10
  };
10
11
  export default DxcApplicationLayout;