@dxc-technology/halstack-react 0.0.0-ff43881 → 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.
- package/HalstackContext.d.ts +12 -0
- package/HalstackContext.js +295 -0
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +7 -28
- package/accordion/Accordion.stories.tsx +11 -11
- package/accordion/Accordion.test.js +72 -0
- package/accordion/types.d.ts +4 -0
- package/accordion-group/AccordionGroup.d.ts +1 -1
- package/accordion-group/AccordionGroup.js +13 -15
- package/accordion-group/AccordionGroup.stories.tsx +1 -1
- package/accordion-group/AccordionGroup.test.js +151 -0
- package/accordion-group/types.d.ts +4 -0
- package/alert/Alert.js +4 -1
- package/alert/Alert.test.js +92 -0
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +5 -3
- package/badge/types.d.ts +1 -0
- package/bleed/Bleed.js +1 -34
- package/bleed/Bleed.stories.tsx +31 -32
- package/bleed/types.d.ts +25 -1
- package/box/Box.js +22 -32
- package/box/Box.test.js +18 -0
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +120 -0
- package/bulleted-list/BulletedList.stories.tsx +203 -0
- package/bulleted-list/types.d.ts +11 -0
- package/{list → bulleted-list}/types.js +0 -0
- package/button/Button.js +14 -11
- package/button/Button.test.js +35 -0
- package/card/Card.js +24 -27
- package/card/Card.test.js +50 -0
- package/checkbox/Checkbox.d.ts +1 -1
- package/checkbox/Checkbox.js +43 -39
- package/checkbox/Checkbox.stories.tsx +124 -128
- package/checkbox/Checkbox.test.js +78 -0
- package/checkbox/types.d.ts +7 -3
- package/chip/Chip.test.js +56 -0
- package/common/variables.js +197 -322
- package/date-input/DateInput.js +53 -39
- package/date-input/DateInput.stories.tsx +7 -7
- package/date-input/DateInput.test.js +479 -0
- package/date-input/types.d.ts +16 -9
- package/dialog/Dialog.js +4 -32
- package/dialog/Dialog.test.js +40 -0
- package/dropdown/Dropdown.js +13 -17
- package/dropdown/Dropdown.test.js +189 -0
- package/file-input/FileInput.js +9 -6
- package/file-input/FileInput.test.js +457 -0
- package/file-input/FileItem.js +7 -5
- package/footer/Footer.js +15 -88
- package/footer/Footer.test.js +109 -0
- package/header/Header.js +27 -48
- package/header/Header.stories.tsx +46 -36
- package/header/Header.test.js +79 -0
- package/heading/Heading.test.js +186 -0
- package/inset/Inset.js +1 -34
- package/inset/Inset.stories.tsx +32 -32
- package/inset/types.d.ts +25 -1
- package/layout/ApplicationLayout.d.ts +4 -3
- package/layout/ApplicationLayout.js +82 -114
- package/layout/ApplicationLayout.stories.tsx +14 -59
- package/layout/Icons.d.ts +5 -0
- package/layout/Icons.js +13 -2
- package/layout/SidenavContext.d.ts +5 -0
- package/layout/SidenavContext.js +19 -0
- package/layout/types.d.ts +5 -10
- package/link/Link.d.ts +3 -2
- package/link/Link.js +57 -74
- package/link/Link.stories.tsx +87 -52
- package/link/Link.test.js +83 -0
- package/link/types.d.ts +7 -23
- package/main.d.ts +7 -10
- package/main.js +33 -51
- package/number-input/NumberInput.js +11 -18
- package/number-input/NumberInput.stories.tsx +5 -5
- package/number-input/NumberInput.test.js +506 -0
- package/number-input/types.d.ts +17 -10
- package/package.json +6 -5
- package/paginator/Paginator.js +17 -38
- package/paginator/Paginator.test.js +266 -0
- package/paragraph/Paragraph.d.ts +6 -0
- package/paragraph/Paragraph.js +38 -0
- package/paragraph/Paragraph.stories.tsx +44 -0
- package/password-input/PasswordInput.js +7 -4
- package/password-input/PasswordInput.test.js +180 -0
- package/password-input/types.d.ts +14 -11
- package/progress-bar/ProgressBar.js +1 -1
- package/progress-bar/ProgressBar.stories.jsx +11 -11
- package/progress-bar/ProgressBar.test.js +65 -0
- package/quick-nav/QuickNav.d.ts +4 -0
- package/quick-nav/QuickNav.js +112 -0
- package/quick-nav/QuickNav.stories.tsx +237 -0
- package/quick-nav/types.d.ts +21 -0
- package/{radio → quick-nav}/types.js +0 -0
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +25 -24
- package/radio-group/RadioGroup.js +46 -37
- package/radio-group/RadioGroup.stories.tsx +60 -39
- package/radio-group/RadioGroup.test.js +530 -83
- package/radio-group/types.d.ts +80 -2
- package/resultsetTable/ResultsetTable.test.js +306 -0
- package/row/types.d.ts +18 -0
- package/select/Icons.d.ts +10 -0
- package/select/Icons.js +93 -0
- package/select/Listbox.d.ts +4 -0
- package/select/Listbox.js +152 -0
- package/select/Option.d.ts +4 -0
- package/select/Option.js +110 -0
- package/select/Select.js +109 -327
- package/select/Select.stories.tsx +103 -81
- package/select/Select.test.js +2120 -0
- package/select/types.d.ts +54 -11
- package/sidenav/Sidenav.d.ts +1 -1
- package/sidenav/Sidenav.js +20 -9
- package/sidenav/Sidenav.test.js +56 -0
- package/slider/Slider.d.ts +1 -1
- package/slider/Slider.js +2 -1
- package/slider/Slider.stories.tsx +8 -8
- package/slider/Slider.test.js +150 -0
- package/slider/types.d.ts +4 -0
- package/spinner/Spinner.js +1 -1
- package/spinner/Spinner.test.js +64 -0
- package/stack/types.d.ts +15 -0
- package/switch/Switch.d.ts +1 -1
- package/switch/Switch.js +35 -19
- package/switch/Switch.stories.tsx +14 -14
- package/switch/Switch.test.js +98 -0
- package/switch/types.d.ts +6 -2
- package/table/Table.test.js +26 -0
- package/tabs/Tabs.d.ts +1 -1
- package/tabs/Tabs.js +9 -11
- package/tabs/Tabs.stories.tsx +0 -8
- package/tabs/Tabs.test.js +140 -0
- package/tabs/types.d.ts +4 -0
- package/tabs-nav/NavTabs.d.ts +8 -0
- package/tabs-nav/NavTabs.js +125 -0
- package/tabs-nav/NavTabs.stories.tsx +170 -0
- package/tabs-nav/NavTabs.test.js +82 -0
- package/tabs-nav/Tab.d.ts +4 -0
- package/tabs-nav/Tab.js +132 -0
- package/tabs-nav/types.d.ts +53 -0
- package/tabs-nav/types.js +5 -0
- package/tag/Tag.js +14 -19
- package/tag/Tag.stories.tsx +12 -8
- package/tag/Tag.test.js +60 -0
- package/text-input/Suggestion.d.ts +4 -0
- package/text-input/Suggestion.js +55 -0
- package/text-input/TextInput.js +56 -80
- package/text-input/TextInput.stories.tsx +30 -12
- package/text-input/TextInput.test.js +1712 -0
- package/text-input/types.d.ts +31 -12
- package/textarea/Textarea.js +20 -27
- package/textarea/Textarea.stories.jsx +33 -12
- package/textarea/Textarea.test.js +437 -0
- package/textarea/types.d.ts +18 -11
- package/toggle-group/ToggleGroup.d.ts +1 -1
- package/toggle-group/ToggleGroup.js +5 -4
- package/toggle-group/ToggleGroup.stories.tsx +4 -4
- package/toggle-group/ToggleGroup.test.js +156 -0
- package/toggle-group/types.d.ts +8 -0
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +131 -0
- package/typography/Typography.stories.tsx +175 -0
- package/typography/types.d.ts +18 -0
- package/typography/types.js +5 -0
- package/typography/typographyContextTypes.d.ts +16 -0
- package/typography/typographyContextTypes.js +5 -0
- package/useTheme.js +2 -2
- package/useTranslatedLabels.d.ts +2 -0
- package/useTranslatedLabels.js +20 -0
- package/wizard/Wizard.d.ts +1 -1
- package/wizard/Wizard.js +55 -44
- package/wizard/Wizard.stories.tsx +13 -23
- package/wizard/Wizard.test.js +141 -0
- package/wizard/types.d.ts +6 -2
- package/ThemeContext.d.ts +0 -15
- package/ThemeContext.js +0 -243
- package/V3Select/V3Select.js +0 -455
- package/V3Select/index.d.ts +0 -27
- package/V3Textarea/V3Textarea.js +0 -260
- package/V3Textarea/index.d.ts +0 -27
- package/date/Date.js +0 -373
- package/date/index.d.ts +0 -27
- package/input-text/Icons.js +0 -22
- package/input-text/InputText.js +0 -611
- package/input-text/index.d.ts +0 -36
- package/list/List.d.ts +0 -4
- package/list/List.js +0 -47
- package/list/List.stories.tsx +0 -95
- package/list/types.d.ts +0 -7
- package/radio/Radio.d.ts +0 -4
- package/radio/Radio.js +0 -174
- package/radio/Radio.stories.tsx +0 -192
- package/radio/types.d.ts +0 -54
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
- package/upload/Upload.js +0 -201
- package/upload/buttons-upload/ButtonsUpload.js +0 -111
- package/upload/buttons-upload/Icons.js +0 -40
- package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
- package/upload/dragAndDropArea/Icons.js +0 -39
- package/upload/file-upload/FileToUpload.js +0 -115
- package/upload/file-upload/Icons.js +0 -66
- package/upload/files-upload/FilesToUpload.js +0 -109
- package/upload/index.d.ts +0 -15
- package/upload/transaction/Icons.js +0 -160
- package/upload/transaction/Transaction.js +0 -104
- package/upload/transactions/Transactions.js +0 -94
package/footer/Footer.js
CHANGED
|
@@ -13,8 +13,6 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
|
13
13
|
|
|
14
14
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
15
|
|
|
16
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
-
|
|
18
16
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
17
|
|
|
20
18
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
@@ -23,6 +21,8 @@ var _variables = require("../common/variables.js");
|
|
|
23
21
|
|
|
24
22
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
23
|
|
|
24
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
25
|
+
|
|
26
26
|
var _BackgroundColorContext = require("../BackgroundColorContext");
|
|
27
27
|
|
|
28
28
|
var _Icons = require("./Icons");
|
|
@@ -36,31 +36,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
36
36
|
var DxcFooter = function DxcFooter(_ref) {
|
|
37
37
|
var socialLinks = _ref.socialLinks,
|
|
38
38
|
bottomLinks = _ref.bottomLinks,
|
|
39
|
-
|
|
40
|
-
copyright = _ref$copyright === void 0 ? "\xA9 DXC Technology ".concat(new Date().getFullYear(), ". All rights reserved.") : _ref$copyright,
|
|
39
|
+
copyright = _ref.copyright,
|
|
41
40
|
children = _ref.children,
|
|
42
41
|
padding = _ref.padding,
|
|
43
42
|
margin = _ref.margin,
|
|
44
43
|
_ref$tabIndex = _ref.tabIndex,
|
|
45
44
|
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
46
|
-
var ref = (0, _react.useRef)(null);
|
|
47
|
-
|
|
48
|
-
var _useState = (0, _react.useState)(),
|
|
49
|
-
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
50
|
-
refSize = _useState2[0],
|
|
51
|
-
setRefSize = _useState2[1];
|
|
52
|
-
|
|
53
|
-
var _useState3 = (0, _react.useState)(false),
|
|
54
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
55
|
-
isResponsiveTablet = _useState4[0],
|
|
56
|
-
setIsResponsiveTablet = _useState4[1];
|
|
57
|
-
|
|
58
|
-
var _useState5 = (0, _react.useState)(false),
|
|
59
|
-
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
60
|
-
isResponsivePhone = _useState6[0],
|
|
61
|
-
setIsResponsivePhone = _useState6[1];
|
|
62
|
-
|
|
63
45
|
var colorsTheme = (0, _useTheme["default"])();
|
|
46
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
64
47
|
var footerLogo = (0, _react.useMemo)(function () {
|
|
65
48
|
if (!colorsTheme.footer.logo) {
|
|
66
49
|
return _Icons.dxcLogo;
|
|
@@ -68,42 +51,13 @@ var DxcFooter = function DxcFooter(_ref) {
|
|
|
68
51
|
|
|
69
52
|
if (typeof colorsTheme.footer.logo === "string") {
|
|
70
53
|
return /*#__PURE__*/_react["default"].createElement(LogoImg, {
|
|
71
|
-
alt:
|
|
54
|
+
alt: translatedLabels.formFields.logoAlternativeText,
|
|
72
55
|
src: colorsTheme.footer.logo
|
|
73
56
|
});
|
|
74
57
|
}
|
|
75
58
|
|
|
76
59
|
return colorsTheme.footer.logo;
|
|
77
60
|
}, [colorsTheme.footer.logo]);
|
|
78
|
-
|
|
79
|
-
var handleResize = function handleResize(refWidth) {
|
|
80
|
-
if (ref.current) {
|
|
81
|
-
setRefSize(refWidth);
|
|
82
|
-
|
|
83
|
-
if (refWidth <= _variables.responsiveSizes.tablet && refWidth > _variables.responsiveSizes.mobileLarge) {
|
|
84
|
-
setIsResponsiveTablet(true);
|
|
85
|
-
setIsResponsivePhone(false);
|
|
86
|
-
} else if (refWidth <= _variables.responsiveSizes.tablet && refWidth <= _variables.responsiveSizes.mobileLarge) {
|
|
87
|
-
setIsResponsivePhone(true);
|
|
88
|
-
setIsResponsiveTablet(false);
|
|
89
|
-
} else {
|
|
90
|
-
setIsResponsiveTablet(false);
|
|
91
|
-
setIsResponsivePhone(false);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
var handleEventListener = function handleEventListener() {
|
|
97
|
-
handleResize(ref.current.offsetWidth);
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
(0, _react.useEffect)(function () {
|
|
101
|
-
window.addEventListener("resize", handleEventListener);
|
|
102
|
-
handleResize(ref.current.offsetWidth);
|
|
103
|
-
return function () {
|
|
104
|
-
window.removeEventListener("resize", handleEventListener);
|
|
105
|
-
};
|
|
106
|
-
}, []);
|
|
107
61
|
var socialLink = socialLinks === null || socialLinks === void 0 ? void 0 : socialLinks.map(function (link, index) {
|
|
108
62
|
return /*#__PURE__*/_react["default"].createElement(SocialAnchor, {
|
|
109
63
|
tabIndex: tabIndex,
|
|
@@ -127,30 +81,17 @@ var DxcFooter = function DxcFooter(_ref) {
|
|
|
127
81
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
128
82
|
theme: colorsTheme.footer
|
|
129
83
|
}, /*#__PURE__*/_react["default"].createElement(FooterContainer, {
|
|
130
|
-
margin: margin
|
|
131
|
-
|
|
132
|
-
ref: ref
|
|
133
|
-
}, /*#__PURE__*/_react["default"].createElement(FooterHeader, {
|
|
134
|
-
refSize: refSize
|
|
135
|
-
}, /*#__PURE__*/_react["default"].createElement(LogoContainer, null, footerLogo), /*#__PURE__*/_react["default"].createElement(SocialLinkContainer, {
|
|
136
|
-
refSize: refSize
|
|
137
|
-
}, socialLink)), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(ChildComponents, {
|
|
84
|
+
margin: margin
|
|
85
|
+
}, /*#__PURE__*/_react["default"].createElement(FooterHeader, null, /*#__PURE__*/_react["default"].createElement(LogoContainer, null, footerLogo), /*#__PURE__*/_react["default"].createElement(SocialLinkContainer, null, socialLink)), /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(ChildComponents, {
|
|
138
86
|
padding: padding
|
|
139
87
|
}, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
|
|
140
88
|
color: colorsTheme.footer.backgroundColor
|
|
141
89
|
}, children)), /*#__PURE__*/_react["default"].createElement(FooterFooter, {
|
|
142
|
-
className: "footerFooter"
|
|
143
|
-
|
|
144
|
-
}, /*#__PURE__*/_react["default"].createElement(BottomLinks, {
|
|
145
|
-
refSize: refSize
|
|
146
|
-
}, bottomLink), /*#__PURE__*/_react["default"].createElement(Copyright, {
|
|
147
|
-
refSize: refSize
|
|
148
|
-
}, copyright)))));
|
|
90
|
+
className: "footerFooter"
|
|
91
|
+
}, /*#__PURE__*/_react["default"].createElement(BottomLinks, null, bottomLink), /*#__PURE__*/_react["default"].createElement(Copyright, null, copyright || translatedLabels.footer.copyrightText(new Date().getFullYear()))))));
|
|
149
92
|
};
|
|
150
93
|
|
|
151
|
-
var FooterContainer = _styledComponents["default"].footer(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: ", ";\n background-color: ", ";\n margin-top: ", ";\n width: 100%;\n box-sizing: border-box;\n min-height: ", ";\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n"])), function (props) {
|
|
152
|
-
return props.refSize <= _variables.responsiveSizes.mobileLarge ? "20px 20px 20px 20px" : "24px 36px 24px 36px";
|
|
153
|
-
}, function (props) {
|
|
94
|
+
var FooterContainer = _styledComponents["default"].footer(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n @media (min-width: ", "rem) {\n padding: 24px 36px 24px 36px;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n padding: 20px;\n }\n\n background-color: ", ";\n margin-top: ", ";\n width: 100%;\n box-sizing: border-box;\n min-height: ", ";\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n"])), _variables.responsiveSizes.small, _variables.responsiveSizes.small, function (props) {
|
|
154
95
|
return props.theme.backgroundColor;
|
|
155
96
|
}, function (props) {
|
|
156
97
|
return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
|
|
@@ -160,21 +101,13 @@ var FooterContainer = _styledComponents["default"].footer(_templateObject || (_t
|
|
|
160
101
|
|
|
161
102
|
var FooterHeader = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n row-gap: 24px;\n"])));
|
|
162
103
|
|
|
163
|
-
var FooterFooter = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n
|
|
164
|
-
return props.refSize <= _variables.responsiveSizes.mobileLarge ? "column" : "row";
|
|
165
|
-
}, function (props) {
|
|
166
|
-
return props.refSize <= _variables.responsiveSizes.mobileLarge ? "center" : "";
|
|
167
|
-
}, function (props) {
|
|
104
|
+
var FooterFooter = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n\n @media (min-width: ", "rem) {\n flex-direction: row;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n flex-direction: column;\n align-items: center;\n }\n\n border-top: ", ";\n margin-top: 16px;\n"])), _variables.responsiveSizes.small, _variables.responsiveSizes.small, function (props) {
|
|
168
105
|
return "".concat(props.theme.bottomLinksDividerThickness, " ").concat(props.theme.bottomLinksDividerStyle, " ").concat(props.theme.bottomLinksDividerColor);
|
|
169
106
|
});
|
|
170
107
|
|
|
171
|
-
var BottomLinks = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n display: inline-flex;\n flex-wrap: wrap;\n
|
|
108
|
+
var BottomLinks = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n display: inline-flex;\n flex-wrap: wrap;\n\n @media (min-width: ", "rem) {\n max-width: 60%;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 100%;\n width: 100%;\n }\n\n & > span:last-child span {\n display: none;\n }\n align-self: center;\n"])), function (props) {
|
|
172
109
|
return props.theme.bottomLinksDividerSpacing;
|
|
173
|
-
},
|
|
174
|
-
return props.refSize <= _variables.responsiveSizes.mobileLarge ? "100%" : "60%";
|
|
175
|
-
}, function (props) {
|
|
176
|
-
return props.refSize <= _variables.responsiveSizes.mobileLarge ? "100%" : "";
|
|
177
|
-
});
|
|
110
|
+
}, _variables.responsiveSizes.small, _variables.responsiveSizes.small);
|
|
178
111
|
|
|
179
112
|
var ChildComponents = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 16px;\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n overflow: hidden;\n"])), function (props) {
|
|
180
113
|
return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : "0px";
|
|
@@ -188,7 +121,7 @@ var ChildComponents = _styledComponents["default"].div(_templateObject5 || (_tem
|
|
|
188
121
|
return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
|
|
189
122
|
});
|
|
190
123
|
|
|
191
|
-
var Copyright = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n
|
|
124
|
+
var Copyright = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n\n @media (min-width: ", "rem) {\n max-width: 40%;\n text-align: right;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 100%;\n width: 100%;\n text-align: left;\n }\n\n padding-top: ", ";\n"])), function (props) {
|
|
192
125
|
return props.theme.copyrightFontFamily;
|
|
193
126
|
}, function (props) {
|
|
194
127
|
return props.theme.copyrightFontSize;
|
|
@@ -198,13 +131,7 @@ var Copyright = _styledComponents["default"].div(_templateObject6 || (_templateO
|
|
|
198
131
|
return props.theme.copyrightFontWeight;
|
|
199
132
|
}, function (props) {
|
|
200
133
|
return props.theme.copyrightFontColor;
|
|
201
|
-
}, function (props) {
|
|
202
|
-
return props.refSize <= _variables.responsiveSizes.mobileLarge ? "100%" : "40%";
|
|
203
|
-
}, function (props) {
|
|
204
|
-
return props.refSize <= _variables.responsiveSizes.mobileLarge ? "100%" : "";
|
|
205
|
-
}, function (props) {
|
|
206
|
-
return props.refSize <= _variables.responsiveSizes.mobileLarge ? "left" : "right";
|
|
207
|
-
}, function (props) {
|
|
134
|
+
}, _variables.responsiveSizes.small, _variables.responsiveSizes.small, function (props) {
|
|
208
135
|
return props.theme.bottomLinksDividerSpacing;
|
|
209
136
|
});
|
|
210
137
|
|
|
@@ -0,0 +1,109 @@
|
|
|
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 _linkedin = _interopRequireDefault(require("../../app/src/images/linkedin.svg"));
|
|
10
|
+
|
|
11
|
+
var _Footer = _interopRequireDefault(require("./Footer"));
|
|
12
|
+
|
|
13
|
+
describe("Footer component tests", function () {
|
|
14
|
+
test("Footer renders with default logo", function () {
|
|
15
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], null)),
|
|
16
|
+
getByTitle = _render.getByTitle;
|
|
17
|
+
|
|
18
|
+
expect(getByTitle("DXC Logo")).toBeTruthy();
|
|
19
|
+
});
|
|
20
|
+
test("Footer renders with social links", function () {
|
|
21
|
+
var social = [{
|
|
22
|
+
href: "https://www.test.com/test",
|
|
23
|
+
logo: _linkedin["default"]
|
|
24
|
+
}];
|
|
25
|
+
|
|
26
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
|
|
27
|
+
socialLinks: social
|
|
28
|
+
})),
|
|
29
|
+
getByRole = _render2.getByRole;
|
|
30
|
+
|
|
31
|
+
var socialIcon = getByRole("link");
|
|
32
|
+
expect(socialIcon.getAttribute("href")).toBe("https://www.test.com/test");
|
|
33
|
+
});
|
|
34
|
+
test("Footer renders with bottom links", function () {
|
|
35
|
+
var bottom = [{
|
|
36
|
+
href: "https://www.test.com/test",
|
|
37
|
+
text: "bottom-link-text"
|
|
38
|
+
}];
|
|
39
|
+
|
|
40
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
|
|
41
|
+
bottomLinks: bottom
|
|
42
|
+
})),
|
|
43
|
+
getByText = _render3.getByText;
|
|
44
|
+
|
|
45
|
+
var link = getByText("bottom-link-text");
|
|
46
|
+
expect(link.getAttribute("href")).toBe("https://www.test.com/test");
|
|
47
|
+
});
|
|
48
|
+
test("Footer renders with copyright text", function () {
|
|
49
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
|
|
50
|
+
copyright: "test-copyright"
|
|
51
|
+
})),
|
|
52
|
+
getByText = _render4.getByText;
|
|
53
|
+
|
|
54
|
+
expect(getByText("test-copyright")).toBeTruthy();
|
|
55
|
+
});
|
|
56
|
+
test("Footer renders with correct children", function () {
|
|
57
|
+
//We need to force the offsetWidth value
|
|
58
|
+
Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
|
|
59
|
+
configurable: true,
|
|
60
|
+
value: 1024
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], null, /*#__PURE__*/_react["default"].createElement("p", null, "footer-child-text"))),
|
|
64
|
+
getByText = _render5.getByText;
|
|
65
|
+
|
|
66
|
+
expect(getByText("footer-child-text")).toBeTruthy();
|
|
67
|
+
});
|
|
68
|
+
test("Footer renders with children in mobile", function () {
|
|
69
|
+
//425 is mobile width
|
|
70
|
+
Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
|
|
71
|
+
configurable: true,
|
|
72
|
+
value: 425
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], null, /*#__PURE__*/_react["default"].createElement("p", null, "footer-child-text"))),
|
|
76
|
+
queryByText = _render6.queryByText;
|
|
77
|
+
|
|
78
|
+
expect(queryByText("footer-child-text")).toBeTruthy();
|
|
79
|
+
});
|
|
80
|
+
test("Footer is fully rendered", function () {
|
|
81
|
+
Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
|
|
82
|
+
configurable: true,
|
|
83
|
+
value: 1024
|
|
84
|
+
});
|
|
85
|
+
var social = [{
|
|
86
|
+
href: "https://www.test.com/social",
|
|
87
|
+
logo: _linkedin["default"]
|
|
88
|
+
}];
|
|
89
|
+
var bottom = [{
|
|
90
|
+
href: "https://www.test.com/bottom",
|
|
91
|
+
text: "bottom-link-text"
|
|
92
|
+
}];
|
|
93
|
+
|
|
94
|
+
var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
|
|
95
|
+
socialLinks: social,
|
|
96
|
+
bottomLinks: bottom,
|
|
97
|
+
copyright: "test-copyright"
|
|
98
|
+
}, /*#__PURE__*/_react["default"].createElement("p", null, "footer-child-text"))),
|
|
99
|
+
getAllByRole = _render7.getAllByRole,
|
|
100
|
+
getByText = _render7.getByText;
|
|
101
|
+
|
|
102
|
+
var socialIcon = getAllByRole("link")[0];
|
|
103
|
+
expect(socialIcon.getAttribute("href")).toBe("https://www.test.com/social");
|
|
104
|
+
var bottomLink = getByText("bottom-link-text");
|
|
105
|
+
expect(bottomLink.getAttribute("href")).toBe("https://www.test.com/bottom");
|
|
106
|
+
expect(getByText("test-copyright")).toBeTruthy();
|
|
107
|
+
expect(getByText("footer-child-text")).toBeTruthy();
|
|
108
|
+
});
|
|
109
|
+
});
|
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:
|
|
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
|
-
|
|
98
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
var
|
|
106
|
-
|
|
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",
|
|
154
|
-
handleResize(
|
|
138
|
+
window.addEventListener("resize", handleResize);
|
|
139
|
+
handleResize();
|
|
155
140
|
}
|
|
156
141
|
|
|
157
142
|
return function () {
|
|
158
|
-
window.removeEventListener("resize",
|
|
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.
|
|
285
|
-
|
|
286
|
-
|
|
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
|
|
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
|
|
98
|
+
export const ResponsiveHeader = () => (
|
|
108
99
|
<ExampleContainer>
|
|
109
100
|
<Title title="Responsive" theme="light" level={4} />
|
|
110
|
-
<
|
|
111
|
-
<DxcHeader
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
<
|
|
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
|
-
<
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
+
});
|