@dxc-technology/halstack-react 5.0.0 → 6.0.0

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 (128) hide show
  1. package/HalstackContext.d.ts +4 -2
  2. package/HalstackContext.js +110 -58
  3. package/accordion/Accordion.stories.tsx +1 -1
  4. package/accordion-group/AccordionGroup.js +1 -0
  5. package/alert/Alert.js +4 -1
  6. package/badge/Badge.d.ts +1 -1
  7. package/badge/Badge.js +5 -3
  8. package/badge/types.d.ts +1 -0
  9. package/bleed/Bleed.js +1 -34
  10. package/bleed/Bleed.stories.tsx +94 -95
  11. package/bleed/types.d.ts +1 -1
  12. package/box/Box.js +22 -32
  13. package/bulleted-list/BulletedList.d.ts +7 -0
  14. package/bulleted-list/BulletedList.js +123 -0
  15. package/bulleted-list/BulletedList.stories.tsx +200 -0
  16. package/bulleted-list/types.d.ts +11 -0
  17. package/{list → bulleted-list}/types.js +0 -0
  18. package/button/Button.js +3 -1
  19. package/card/Card.js +34 -36
  20. package/checkbox/Checkbox.js +4 -1
  21. package/common/variables.js +211 -88
  22. package/date-input/DateInput.js +5 -2
  23. package/dropdown/Dropdown.stories.tsx +1 -1
  24. package/file-input/FileInput.js +9 -6
  25. package/file-input/FileItem.js +7 -5
  26. package/flex/Flex.d.ts +4 -0
  27. package/flex/Flex.js +57 -0
  28. package/flex/Flex.stories.tsx +103 -0
  29. package/flex/types.d.ts +21 -0
  30. package/{radio → flex}/types.js +0 -0
  31. package/footer/Footer.js +7 -5
  32. package/footer/Icons.js +1 -1
  33. package/header/Header.js +7 -4
  34. package/inset/Inset.js +1 -34
  35. package/inset/Inset.stories.tsx +36 -36
  36. package/inset/types.d.ts +1 -1
  37. package/layout/ApplicationLayout.d.ts +16 -6
  38. package/layout/ApplicationLayout.js +70 -117
  39. package/layout/ApplicationLayout.stories.tsx +83 -93
  40. package/layout/Icons.d.ts +5 -0
  41. package/layout/Icons.js +13 -2
  42. package/layout/SidenavContext.d.ts +5 -0
  43. package/layout/SidenavContext.js +19 -0
  44. package/layout/types.d.ts +18 -33
  45. package/link/Link.d.ts +3 -2
  46. package/link/Link.js +57 -70
  47. package/link/Link.stories.tsx +88 -53
  48. package/link/Link.test.js +7 -15
  49. package/link/types.d.ts +7 -23
  50. package/main.d.ts +7 -10
  51. package/main.js +38 -56
  52. package/number-input/types.d.ts +1 -1
  53. package/package.json +3 -1
  54. package/paginator/Paginator.js +17 -38
  55. package/paginator/Paginator.test.js +42 -0
  56. package/paragraph/Paragraph.d.ts +6 -0
  57. package/paragraph/Paragraph.js +38 -0
  58. package/paragraph/Paragraph.stories.tsx +44 -0
  59. package/password-input/PasswordInput.js +7 -4
  60. package/password-input/PasswordInput.test.js +1 -2
  61. package/password-input/types.d.ts +1 -1
  62. package/progress-bar/ProgressBar.js +1 -1
  63. package/progress-bar/ProgressBar.stories.jsx +11 -11
  64. package/quick-nav/QuickNav.js +74 -20
  65. package/quick-nav/QuickNav.stories.tsx +43 -16
  66. package/quick-nav/types.d.ts +4 -4
  67. package/radio-group/Radio.js +1 -1
  68. package/radio-group/RadioGroup.js +10 -7
  69. package/resultsetTable/ResultsetTable.test.js +42 -0
  70. package/select/Listbox.d.ts +1 -1
  71. package/select/Listbox.js +35 -8
  72. package/select/Select.js +83 -78
  73. package/select/Select.stories.tsx +144 -100
  74. package/select/Select.test.js +299 -194
  75. package/select/types.d.ts +3 -4
  76. package/sidenav/Sidenav.d.ts +6 -5
  77. package/sidenav/Sidenav.js +172 -52
  78. package/sidenav/Sidenav.stories.tsx +154 -156
  79. package/sidenav/Sidenav.test.js +25 -37
  80. package/sidenav/types.d.ts +50 -27
  81. package/spinner/Spinner.js +1 -1
  82. package/switch/Switch.js +4 -1
  83. package/tabs/Tabs.stories.tsx +0 -6
  84. package/tabs-nav/NavTabs.d.ts +8 -0
  85. package/tabs-nav/NavTabs.js +125 -0
  86. package/tabs-nav/NavTabs.stories.tsx +170 -0
  87. package/tabs-nav/NavTabs.test.js +82 -0
  88. package/tabs-nav/Tab.d.ts +4 -0
  89. package/tabs-nav/Tab.js +132 -0
  90. package/tabs-nav/types.d.ts +53 -0
  91. package/{row → tabs-nav}/types.js +0 -0
  92. package/text-input/Suggestion.d.ts +4 -0
  93. package/text-input/Suggestion.js +55 -0
  94. package/text-input/TextInput.js +46 -72
  95. package/text-input/TextInput.test.js +1 -1
  96. package/text-input/types.d.ts +14 -2
  97. package/textarea/Textarea.js +10 -19
  98. package/textarea/types.d.ts +1 -1
  99. package/typography/Typography.d.ts +4 -0
  100. package/typography/Typography.js +131 -0
  101. package/typography/Typography.stories.tsx +198 -0
  102. package/typography/types.d.ts +18 -0
  103. package/{stack → typography}/types.js +0 -0
  104. package/useTranslatedLabels.d.ts +2 -0
  105. package/useTranslatedLabels.js +20 -0
  106. package/wizard/Wizard.js +36 -41
  107. package/wizard/Wizard.stories.tsx +20 -1
  108. package/wizard/types.d.ts +4 -3
  109. package/list/List.d.ts +0 -4
  110. package/list/List.js +0 -47
  111. package/list/List.stories.tsx +0 -95
  112. package/list/types.d.ts +0 -7
  113. package/radio/Radio.d.ts +0 -4
  114. package/radio/Radio.js +0 -173
  115. package/radio/Radio.stories.tsx +0 -192
  116. package/radio/Radio.test.js +0 -71
  117. package/radio/types.d.ts +0 -54
  118. package/row/Row.d.ts +0 -3
  119. package/row/Row.js +0 -127
  120. package/row/Row.stories.tsx +0 -237
  121. package/row/types.d.ts +0 -28
  122. package/stack/Stack.d.ts +0 -3
  123. package/stack/Stack.js +0 -97
  124. package/stack/Stack.stories.tsx +0 -164
  125. package/stack/types.d.ts +0 -24
  126. package/text/Text.d.ts +0 -7
  127. package/text/Text.js +0 -30
  128. package/text/Text.stories.tsx +0 -19
@@ -13,23 +13,25 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
13
13
 
14
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
15
 
16
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
-
18
16
  var _react = _interopRequireWildcard(require("react"));
19
17
 
20
- var _main = require("../main");
18
+ var _Header = _interopRequireDefault(require("../header/Header"));
19
+
20
+ var _Footer = _interopRequireDefault(require("../footer/Footer"));
21
+
22
+ var _Sidenav = _interopRequireDefault(require("../sidenav/Sidenav"));
21
23
 
22
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
24
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
23
25
 
24
26
  var _variables = require("../common/variables.js");
25
27
 
26
28
  var _Icons = require("./Icons");
27
29
 
28
- var _useTheme = _interopRequireDefault(require("../useTheme"));
30
+ var _SidenavContext = require("./SidenavContext");
29
31
 
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
32
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
31
33
 
32
- var _excluded = ["displayArrow", "mode"];
34
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
33
35
 
34
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
37
 
@@ -37,32 +39,19 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
37
39
 
38
40
  var year = new Date().getFullYear();
39
41
 
40
- var Header = function Header(_ref) {
42
+ var Main = function Main(_ref) {
41
43
  var children = _ref.children;
42
44
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children);
43
45
  };
44
46
 
45
- var Main = function Main(_ref2) {
46
- var children = _ref2.children;
47
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children);
48
- };
49
-
50
- var Footer = function Footer(_ref3) {
51
- var children = _ref3.children;
52
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children);
53
- };
54
-
55
- var SideNav = function SideNav(props) {
56
- var _props$displayArrow = props.displayArrow,
57
- displayArrow = _props$displayArrow === void 0 ? true : _props$displayArrow,
58
- _props$mode = props.mode,
59
- mode = _props$mode === void 0 ? "overlay" : _props$mode,
60
- childProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
61
- return /*#__PURE__*/_react["default"].createElement(_main.DxcSidenav, childProps, childProps.children);
47
+ var defaultHeader = function defaultHeader() {
48
+ return /*#__PURE__*/_react["default"].createElement(_Header["default"], {
49
+ underlined: true
50
+ });
62
51
  };
63
52
 
64
53
  var defaultFooter = function defaultFooter() {
65
- return /*#__PURE__*/_react["default"].createElement(_main.DxcFooter, {
54
+ return /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
66
55
  copyright: "\xA9 DXC Technology ".concat(year, "\u200B\u200B\u200B\u200B. All rights reserved."),
67
56
  bottomLinks: [{
68
57
  href: "https://www.linkedin.com/company/dxctechnology",
@@ -87,132 +76,96 @@ var defaultFooter = function defaultFooter() {
87
76
  });
88
77
  };
89
78
 
90
- var defaultHeader = function defaultHeader() {
91
- return /*#__PURE__*/_react["default"].createElement(_main.DxcHeader, {
92
- underlined: true
93
- });
94
- };
95
-
96
79
  var childTypeExists = function childTypeExists(children, childType) {
97
80
  return children.find(function (child) {
98
- return child && child.type && child.type === childType;
81
+ return (child === null || child === void 0 ? void 0 : child.type) === childType;
99
82
  });
100
83
  };
101
84
 
102
- var DxcApplicationLayout = function DxcApplicationLayout(_ref4) {
103
- var children = _ref4.children;
104
- var ref = (0, _react.useRef)(null);
105
- var colorsTheme = (0, _useTheme["default"])();
85
+ var DxcApplicationLayout = function DxcApplicationLayout(_ref2) {
86
+ var _ref2$visibilityToggl = _ref2.visibilityToggleLabel,
87
+ visibilityToggleLabel = _ref2$visibilityToggl === void 0 ? "" : _ref2$visibilityToggl,
88
+ header = _ref2.header,
89
+ sidenav = _ref2.sidenav,
90
+ footer = _ref2.footer,
91
+ children = _ref2.children;
106
92
 
107
- var _useState = (0, _react.useState)(true),
93
+ var _useState = (0, _react.useState)(false),
108
94
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
109
- isSideNavVisible = _useState2[0],
110
- setIsSideNavVisible = _useState2[1];
95
+ isSidenavVisibleResponsive = _useState2[0],
96
+ setIsSidenavVisibleResponsive = _useState2[1];
111
97
 
112
98
  var _useState3 = (0, _react.useState)(false),
113
99
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
114
100
  isResponsive = _useState4[0],
115
101
  setIsResponsive = _useState4[1];
116
102
 
103
+ var ref = (0, _react.useRef)(null);
104
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
105
+
117
106
  var childrenArray = _react["default"].Children.toArray(children);
118
107
 
119
- var header = childTypeExists(childrenArray, _main.DxcHeader) || childTypeExists(childrenArray, Header) || defaultHeader();
120
- var footer = childTypeExists(childrenArray, _main.DxcFooter) || childTypeExists(childrenArray, Footer) || defaultFooter();
121
- var sideNav = childTypeExists(childrenArray, SideNav);
108
+ var headerContent = header || defaultHeader();
109
+ var footerContent = footer || defaultFooter();
122
110
  var main = childTypeExists(childrenArray, Main);
123
- var displayArrow = sideNav && sideNav.props && sideNav.props.displayArrow;
124
- var sideNavMode = sideNav && sideNav.props && sideNav.props.mode;
125
-
126
- var ArrowIcon = function ArrowIcon() {
127
- return /*#__PURE__*/_react["default"].createElement("svg", {
128
- xmlns: "http://www.w3.org/2000/svg",
129
- width: "15.995",
130
- height: "10.01",
131
- viewBox: "0 0 15.995 10.01"
132
- }, /*#__PURE__*/_react["default"].createElement("path", {
133
- "data-testid": "arrow-to-right",
134
- d: "M17.71,11.29l-4-4a1,1,0,0,0-1.42,1.42L14.59,11H3a1,1,0,0,0,0,2H14.59l-2.3,2.29a1,1,0,1,0,1.42,1.42l4-4a1.034,1.034,0,0,0,0-1.42Z",
135
- transform: "translate(-2 -6.996)"
136
- }));
137
- };
138
111
 
139
112
  var handleResize = function handleResize() {
140
113
  setIsResponsive(window.matchMedia("(max-width: ".concat(_variables.responsiveSizes.medium, "rem)")).matches);
141
- setIsSideNavVisible(true);
142
114
  };
143
115
 
144
- (0, _react.useEffect)(function () {
145
- if (ref.current) {
146
- window.addEventListener("resize", handleResize);
147
- }
116
+ var handleSidenavVisibility = function handleSidenavVisibility() {
117
+ setIsSidenavVisibleResponsive(function (isSidenavVisibleResponsive) {
118
+ return !isSidenavVisibleResponsive;
119
+ });
120
+ };
148
121
 
122
+ (0, _react.useEffect)(function () {
123
+ handleResize();
124
+ window.addEventListener("resize", handleResize);
149
125
  return function () {
150
126
  window.removeEventListener("resize", handleResize);
151
127
  };
152
- }, [ref.current]);
153
-
154
- var handleSidenav = function handleSidenav() {
155
- setIsSideNavVisible(!isSideNavVisible);
156
- };
157
-
158
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
159
- theme: colorsTheme.sidenav
160
- }, /*#__PURE__*/_react["default"].createElement(ApplicationLayoutContainer, {
128
+ }, [setIsResponsive]);
129
+ (0, _react.useEffect)(function () {
130
+ !isResponsive && setIsSidenavVisibleResponsive(false);
131
+ }, [isResponsive, setIsSidenavVisibleResponsive]);
132
+ return /*#__PURE__*/_react["default"].createElement(ApplicationLayoutContainer, {
133
+ hasSidenav: sidenav ? true : false,
134
+ isSidenavVisible: isSidenavVisibleResponsive,
161
135
  ref: ref
162
- }, /*#__PURE__*/_react["default"].createElement(HeaderContainer, null, header), /*#__PURE__*/_react["default"].createElement(BodyContainer, null, /*#__PURE__*/_react["default"].createElement(ContentContainer, null, /*#__PURE__*/_react["default"].createElement(SideNavArrowContainer, {
163
- isSideNavVisible: isSideNavVisible
164
- }, sideNav, /*#__PURE__*/_react["default"].createElement(ArrowContainer, null, sideNav && (displayArrow || isResponsive) && /*#__PURE__*/_react["default"].createElement(ArrowTrigger, {
165
- role: "button",
166
- tabIndex: 0,
167
- onClick: handleSidenav,
168
- isSideNavVisible: isSideNavVisible
169
- }, /*#__PURE__*/_react["default"].createElement(ArrowIcon, null)))), /*#__PURE__*/_react["default"].createElement(MainBodyContainer, null, /*#__PURE__*/_react["default"].createElement(MainContent, {
170
- sideNav: sideNav,
171
- mode: isResponsive ? "overlay" : sideNavMode,
172
- isSideNavVisible: isSideNavVisible
173
- }, main), /*#__PURE__*/_react["default"].createElement(FooterContainer, {
174
- sideNav: sideNav,
175
- mode: isResponsive ? "overlay" : sideNavMode,
176
- isSideNavVisible: isSideNavVisible
177
- }, footer))))));
136
+ }, /*#__PURE__*/_react["default"].createElement(HeaderContainer, null, headerContent), sidenav && isResponsive && /*#__PURE__*/_react["default"].createElement(VisibilityToggle, null, /*#__PURE__*/_react["default"].createElement(HamburgerTrigger, {
137
+ onClick: handleSidenavVisibility,
138
+ "aria-label": visibilityToggleLabel ? undefined : translatedLabels.applicationLayout.visibilityToggleTitle,
139
+ title: translatedLabels.applicationLayout.visibilityToggleTitle
140
+ }, _Icons.hamburgerIcon, visibilityToggleLabel)), /*#__PURE__*/_react["default"].createElement(BodyContainer, null, /*#__PURE__*/_react["default"].createElement(_SidenavContext.SidenavContextProvider, {
141
+ value: setIsSidenavVisibleResponsive
142
+ }, sidenav && (isResponsive ? isSidenavVisibleResponsive : true) && /*#__PURE__*/_react["default"].createElement(SidenavContainer, null, sidenav)), /*#__PURE__*/_react["default"].createElement(MainContainer, null, /*#__PURE__*/_react["default"].createElement(MainContentContainer, null, main), footerContent)));
178
143
  };
179
144
 
180
- DxcApplicationLayout.Header = Header;
181
- DxcApplicationLayout.Main = Main;
182
- DxcApplicationLayout.Footer = Footer;
183
- DxcApplicationLayout.SideNav = SideNav;
184
-
185
- var ApplicationLayoutContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n position: absolute;\n top: 64px;\n bottom: 0;\n left: 0;\n right: 0;\n"])));
186
-
187
- var HeaderContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1250;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n"])));
145
+ var ApplicationLayoutContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: 64px;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n flex-direction: column;\n\n @media (max-width: ", "rem) {\n ", ";\n ", "\n }\n"])), _variables.responsiveSizes.medium, function (props) {
146
+ return props.hasSidenav && "top: 116px";
147
+ }, function (props) {
148
+ return props.isSidenavVisible && "overflow: hidden;";
149
+ });
188
150
 
189
- var BodyContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 1;\n display: flex;\n flex-direction: column;\n"])));
151
+ var HeaderContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n z-index: 3;\n"])));
190
152
 
191
- var ContentContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex: 1 1 auto;\n align-items: flex-start;\n"])));
153
+ var VisibilityToggle = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n top: 64px;\n left: 0;\n right: 0;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n padding: 4px 16px;\n width: 100%;\n background-color: #f2f2f2;\n user-select: none;\n z-index: 2;\n"])));
192
154
 
193
- var MainBodyContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n min-width: 0;\n display: flex;\n flex-direction: column;\n"])));
155
+ var HamburgerTrigger = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n border: 0px solid transparent;\n border-radius: 2px;\n padding: 12px 4px;\n background-color: transparent;\n box-shadow: 0 0 0 2px transparent;\n font-family: Open Sans, sans-serif;\n font-weight: 600;\n font-size: 14px;\n color: #000;\n cursor: pointer;\n :active {\n background-color: #cccccc;\n }\n :focus,\n :focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px #0095ff;\n }\n & > svg {\n height: 20px;\n width: 20px;\n }\n"])));
194
156
 
195
- var FooterContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n transition: margin 0.4s ease-in-out;\n"])), function (props) {
196
- return props.sideNav ? props.mode === "push" && !props.isSideNavVisible || props.mode === "overlay" ? "-300px" : "" : "";
197
- });
198
-
199
- var MainContent = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 1;\n position: relative;\n min-height: calc(100vh - 184px);\n margin-left: ", ";\n transition: margin 0.4s ease-in-out;\n"])), function (props) {
200
- return props.sideNav ? props.mode === "push" && props.isSideNavVisible ? "" : "-297px" : "";
201
- });
157
+ var BodyContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n flex: 1;\n"])));
202
158
 
203
- var SideNavArrowContainer = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n z-index: 1200;\n transform: ", ";\n transition: transform 0.4s ease-in-out;\n height: calc(100vh - 64px);\n position: sticky;\n top: 64px;\n"])), function (props) {
204
- return props.isSideNavVisible ? "translateX(0)" : !props.isSideNavVisible ? "translateX(-100%)" : "";
205
- });
159
+ var SidenavContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n position: sticky;\n top: 64px;\n display: flex;\n height: calc(100vh - 64px);\n z-index: 1;\n\n @media (max-width: ", "rem) {\n position: absolute;\n top: 0px;\n height: 100%;\n }\n"])), _variables.responsiveSizes.medium);
206
160
 
207
- var ArrowContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n height: calc(100vh - 64px);\n left: 279px;\n"])));
161
+ var MainContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n width: 100%;\n"])));
208
162
 
209
- var ArrowTrigger = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n position: sticky;\n top: 45vh;\n width: 42px;\n min-height: 42px;\n background-color: ", ";\n border-radius: 50%;\n transform: ", ";\n transition: transform 0.4s ease-in-out;\n z-index: 1250;\n cursor: pointer;\n & > svg {\n fill: ", ";\n }\n :focus {\n outline: #0095ff auto 1px;\n }\n"])), function (props) {
210
- return "".concat(props.theme.arrowContainerColor);
211
- }, function (props) {
212
- return props.isSideNavVisible ? "rotate(-180deg)" : "rotate(0deg)";
213
- }, function (props) {
214
- return props.theme.arrowColor;
215
- });
163
+ var MainContentContainer = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 1;\n"])));
216
164
 
165
+ DxcApplicationLayout.Header = _Header["default"];
166
+ DxcApplicationLayout.Main = Main;
167
+ DxcApplicationLayout.Footer = _Footer["default"];
168
+ DxcApplicationLayout.SideNav = _Sidenav["default"];
169
+ DxcApplicationLayout.useResponsiveSidenavVisibility = _SidenavContext.useResponsiveSidenavVisibility;
217
170
  var _default = DxcApplicationLayout;
218
171
  exports["default"] = _default;
@@ -1,9 +1,7 @@
1
1
  import React from "react";
2
2
  import DxcApplicationLayout from "./ApplicationLayout";
3
- import DxcSidenav from "../sidenav/Sidenav";
4
3
  import Title from "../../.storybook/components/Title";
5
- import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport';
6
- import { userEvent, within, waitFor } from "@storybook/testing-library";
4
+ import { INITIAL_VIEWPORTS } from "@storybook/addon-viewport";
7
5
 
8
6
  export default {
9
7
  title: "Application Layout ",
@@ -11,8 +9,8 @@ export default {
11
9
  parameters: {
12
10
  viewport: {
13
11
  viewports: INITIAL_VIEWPORTS,
14
- }
15
- }
12
+ },
13
+ },
16
14
  };
17
15
 
18
16
  export const DefaultApplicationLayout = () => (
@@ -31,57 +29,25 @@ export const DefaultApplicationLayout = () => (
31
29
 
32
30
  export const ApplicationLayoutWithDefaultSidenav = () => (
33
31
  <>
34
- <DxcApplicationLayout>
35
- <DxcApplicationLayout.SideNav>
36
- <DxcSidenav.Title>Application layout with sidenav</DxcSidenav.Title>
37
- <p>SideNav Content</p>
38
- <p>SideNav Content</p>
39
- <p>SideNav Content</p>
40
- <p>SideNav Content</p>
41
- <p>SideNav Content</p>
42
- </DxcApplicationLayout.SideNav>
43
- <DxcApplicationLayout.Main>
44
- <p>Main Content</p>
45
- <p>Main Content</p>
46
- <p>Main Content</p>
47
- <p>Main Content</p>
48
- </DxcApplicationLayout.Main>
49
- </DxcApplicationLayout>
50
- </>
51
- );
52
-
53
- export const ApplicationLayoutWithPushSidenav = () => (
54
- <>
55
- <DxcApplicationLayout>
56
- <DxcApplicationLayout.SideNav mode="push">
57
- <DxcSidenav.Title>Application layout with push sidenav</DxcSidenav.Title>
58
- <p>SideNav Content</p>
59
- <p>SideNav Content</p>
60
- <p>SideNav Content</p>
61
- <p>SideNav Content</p>
62
- <p>SideNav Content</p>
63
- </DxcApplicationLayout.SideNav>
64
- <DxcApplicationLayout.Main>
65
- <p>Main Content</p>
66
- <p>Main Content</p>
67
- <p>Main Content</p>
68
- <p>Main Content</p>
69
- </DxcApplicationLayout.Main>
70
- </DxcApplicationLayout>
71
- </>
72
- );
73
-
74
- export const ApplicationLayoutWithArrowSidenav = () => (
75
- <>
76
- <DxcApplicationLayout>
77
- <DxcApplicationLayout.SideNav mode="overlay" displayArrow>
78
- <DxcSidenav.Title>Application layout with push sidenav</DxcSidenav.Title>
79
- <p>SideNav Content</p>
80
- <p>SideNav Content</p>
81
- <p>SideNav Content</p>
82
- <p>SideNav Content</p>
83
- <p>SideNav Content</p>
84
- </DxcApplicationLayout.SideNav>
32
+ <DxcApplicationLayout
33
+ sidenav={
34
+ <DxcApplicationLayout.SideNav
35
+ title={
36
+ <DxcApplicationLayout.SideNav.Title>
37
+ Application layout with push sidenav
38
+ </DxcApplicationLayout.SideNav.Title>
39
+ }
40
+ >
41
+ <DxcApplicationLayout.SideNav.Section>
42
+ <p>SideNav Content</p>
43
+ <p>SideNav Content</p>
44
+ <p>SideNav Content</p>
45
+ <p>SideNav Content</p>
46
+ <p>SideNav Content</p>
47
+ </DxcApplicationLayout.SideNav.Section>
48
+ </DxcApplicationLayout.SideNav>
49
+ }
50
+ >
85
51
  <DxcApplicationLayout.Main>
86
52
  <p>Main Content</p>
87
53
  <p>Main Content</p>
@@ -94,15 +60,26 @@ export const ApplicationLayoutWithArrowSidenav = () => (
94
60
 
95
61
  export const ApplicationLayoutWithResponsiveSidenav = () => (
96
62
  <>
97
- <DxcApplicationLayout>
98
- <DxcApplicationLayout.SideNav>
99
- <DxcSidenav.Title>Application layout with push sidenav</DxcSidenav.Title>
100
- <p>SideNav Content</p>
101
- <p>SideNav Content</p>
102
- <p>SideNav Content</p>
103
- <p>SideNav Content</p>
104
- <p>SideNav Content</p>
105
- </DxcApplicationLayout.SideNav>
63
+ <DxcApplicationLayout
64
+ visibilityToggleLabel="Example"
65
+ sidenav={
66
+ <DxcApplicationLayout.SideNav
67
+ title={
68
+ <DxcApplicationLayout.SideNav.Title>
69
+ Application layout with push sidenav
70
+ </DxcApplicationLayout.SideNav.Title>
71
+ }
72
+ >
73
+ <DxcApplicationLayout.SideNav.Section>
74
+ <p>SideNav Content</p>
75
+ <p>SideNav Content</p>
76
+ <p>SideNav Content</p>
77
+ <p>SideNav Content</p>
78
+ <p>SideNav Content</p>
79
+ </DxcApplicationLayout.SideNav.Section>
80
+ </DxcApplicationLayout.SideNav>
81
+ }
82
+ >
106
83
  <DxcApplicationLayout.Main>
107
84
  <p>Main Content</p>
108
85
  <p>Main Content</p>
@@ -115,22 +92,32 @@ export const ApplicationLayoutWithResponsiveSidenav = () => (
115
92
 
116
93
  ApplicationLayoutWithResponsiveSidenav.parameters = {
117
94
  viewport: {
118
- defaultViewport: 'pixel',
95
+ defaultViewport: "pixel",
119
96
  },
120
97
  };
121
98
 
122
99
  export const ApplicationLayoutWithCustomHeader = () => (
123
100
  <>
124
- <DxcApplicationLayout>
125
- <DxcApplicationLayout.Header> <p>Custom Header</p> </DxcApplicationLayout.Header>
126
- <DxcApplicationLayout.SideNav>
127
- <DxcSidenav.Title>Application layout with push sidenav</DxcSidenav.Title>
128
- <p>SideNav Content</p>
129
- <p>SideNav Content</p>
130
- <p>SideNav Content</p>
131
- <p>SideNav Content</p>
132
- <p>SideNav Content</p>
133
- </DxcApplicationLayout.SideNav>
101
+ <DxcApplicationLayout
102
+ header={<p>Custom Header</p>}
103
+ sidenav={
104
+ <DxcApplicationLayout.SideNav
105
+ title={
106
+ <DxcApplicationLayout.SideNav.Title>
107
+ Application layout with push sidenav
108
+ </DxcApplicationLayout.SideNav.Title>
109
+ }
110
+ >
111
+ <DxcApplicationLayout.SideNav.Section>
112
+ <p>SideNav Content</p>
113
+ <p>SideNav Content</p>
114
+ <p>SideNav Content</p>
115
+ <p>SideNav Content</p>
116
+ <p>SideNav Content</p>
117
+ </DxcApplicationLayout.SideNav.Section>
118
+ </DxcApplicationLayout.SideNav>
119
+ }
120
+ >
134
121
  <DxcApplicationLayout.Main>
135
122
  <p>Main Content</p>
136
123
  <p>Main Content</p>
@@ -143,29 +130,32 @@ export const ApplicationLayoutWithCustomHeader = () => (
143
130
 
144
131
  export const ApplicationLayoutWithCustomFooter = () => (
145
132
  <>
146
- <DxcApplicationLayout>
147
- <DxcApplicationLayout.SideNav>
148
- <DxcSidenav.Title>Application layout with push sidenav</DxcSidenav.Title>
149
- <p>SideNav Content</p>
150
- <p>SideNav Content</p>
151
- <p>SideNav Content</p>
152
- <p>SideNav Content</p>
153
- <p>SideNav Content</p>
154
- </DxcApplicationLayout.SideNav>
133
+ <DxcApplicationLayout
134
+ footer={<p>Custom Footer</p>}
135
+ sidenav={
136
+ <DxcApplicationLayout.SideNav
137
+ title={
138
+ <DxcApplicationLayout.SideNav.Title>
139
+ Application layout with push sidenav
140
+ </DxcApplicationLayout.SideNav.Title>
141
+ }
142
+ >
143
+ <DxcApplicationLayout.SideNav.Section>
144
+ <p>SideNav Content</p>
145
+ <p>SideNav Content</p>
146
+ <p>SideNav Content</p>
147
+ <p>SideNav Content</p>
148
+ <p>SideNav Content</p>
149
+ </DxcApplicationLayout.SideNav.Section>
150
+ </DxcApplicationLayout.SideNav>
151
+ }
152
+ >
155
153
  <DxcApplicationLayout.Main>
156
154
  <p>Main Content</p>
157
155
  <p>Main Content</p>
158
156
  <p>Main Content</p>
159
157
  <p>Main Content</p>
160
158
  </DxcApplicationLayout.Main>
161
- <DxcApplicationLayout.Footer> <p>Custom Footer</p> </DxcApplicationLayout.Footer>
162
159
  </DxcApplicationLayout>
163
160
  </>
164
161
  );
165
-
166
- export const ApplicationLayoutWithClosingSidenav = ApplicationLayoutWithArrowSidenav.bind({});
167
- ApplicationLayoutWithClosingSidenav.play = async ({ canvasElement }) => {
168
- const canvas = within(canvasElement);
169
- const arrow = canvas.getByRole("button");
170
- await userEvent.click(arrow);
171
- };
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare const facebookLogo: JSX.Element;
3
+ export declare const twitterLogo: JSX.Element;
4
+ export declare const linkedinLogo: JSX.Element;
5
+ export declare const hamburgerIcon: JSX.Element;
package/layout/Icons.js CHANGED
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.twitterLogo = exports.linkedinLogo = exports.facebookLogo = void 0;
8
+ exports.twitterLogo = exports.linkedinLogo = exports.hamburgerIcon = exports.facebookLogo = void 0;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
@@ -52,4 +52,15 @@ var linkedinLogo = /*#__PURE__*/_react["default"].createElement("svg", {
52
52
  d: "M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123 C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126 h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225 C438.532,59.576,430.49,40.204,414.41,24.123z M133.618,367.157H67.666V169.016h65.952V367.157z M127.626,132.332 c-6.851,6.567-15.893,9.851-27.124,9.851h-0.288c-10.848,0-19.648-3.284-26.407-9.851c-6.76-6.567-10.138-14.703-10.138-24.41 c0-9.897,3.476-18.083,10.421-24.556c6.95-6.471,15.942-9.708,26.98-9.708c11.039,0,19.89,3.237,26.553,9.708 c6.661,6.473,10.088,14.659,10.277,24.556C137.899,117.625,134.477,125.761,127.626,132.332z M370.873,367.157h-65.952v-105.92 c0-29.879-11.036-44.823-33.116-44.823c-8.374,0-15.42,2.331-21.128,6.995c-5.715,4.661-9.996,10.324-12.847,16.991 c-1.335,3.422-1.999,8.75-1.999,15.981v110.775h-65.952c0.571-119.529,0.571-185.579,0-198.142h65.952v27.974 c13.867-21.681,33.558-32.544,59.101-32.544c22.84,0,41.21,7.52,55.104,22.554c13.895,15.037,20.841,37.214,20.841,66.519v113.64 H370.873z"
53
53
  })));
54
54
 
55
- exports.linkedinLogo = linkedinLogo;
55
+ exports.linkedinLogo = linkedinLogo;
56
+
57
+ var hamburgerIcon = /*#__PURE__*/_react["default"].createElement("svg", {
58
+ xmlns: "http://www.w3.org/2000/svg",
59
+ height: "24",
60
+ width: "24",
61
+ viewBox: "0 0 24 24"
62
+ }, /*#__PURE__*/_react["default"].createElement("path", {
63
+ d: "M3 18V16H21V18ZM3 13V11H21V13ZM3 8V6H21V8Z"
64
+ }));
65
+
66
+ exports.hamburgerIcon = hamburgerIcon;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ declare type SidenavContextType = (isSidenavVisible: boolean) => void;
3
+ export declare const SidenavContextProvider: import("react").Provider<SidenavContextType>;
4
+ export declare const useResponsiveSidenavVisibility: () => SidenavContextType;
5
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useResponsiveSidenavVisibility = exports.SidenavContextProvider = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var SidenavContext = /*#__PURE__*/(0, _react.createContext)(null);
11
+ var SidenavContextProvider = SidenavContext.Provider;
12
+ exports.SidenavContextProvider = SidenavContextProvider;
13
+
14
+ var useResponsiveSidenavVisibility = function useResponsiveSidenavVisibility() {
15
+ var changeResponsiveSidenavVisibility = (0, _react.useContext)(SidenavContext);
16
+ return changeResponsiveSidenavVisibility;
17
+ };
18
+
19
+ exports.useResponsiveSidenavVisibility = useResponsiveSidenavVisibility;
package/layout/types.d.ts CHANGED
@@ -1,54 +1,39 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Padding = {
4
- top?: Space;
5
- bottom?: Space;
6
- left?: Space;
7
- right?: Space;
8
- };
9
- declare type ChildrenType = AppLayoutHeaderPropsType | AppLayoutMainPropsType | AppLayoutFooterPropsType | AppLayoutSidenavPropsType;
10
- export declare type AppLayoutHeaderPropsType = {
11
- /**
12
- * Everything between this tags will be displayed as a header, at the top of the screen.
13
- * This is optional and if it is not specified, the DxcHeader will be shown by default.
14
- */
15
- children?: React.ReactNode;
16
- };
2
+ declare type ChildrenType = AppLayoutMainPropsType | AppLayoutSidenavPropsType;
17
3
  export declare type AppLayoutMainPropsType = {
18
4
  /**
19
5
  * Everything between the tags will be displayed as the content of the main part of the application.
20
6
  */
21
7
  children: React.ReactNode;
22
8
  };
23
- export declare type AppLayoutFooterPropsType = {
9
+ export declare type AppLayoutSidenavPropsType = {
10
+ /**
11
+ * The area inside the sidenav. This area can be used to render the content inside the sidenav.
12
+ */
13
+ children: React.ReactNode;
24
14
  /**
25
- * Everything between the tags will be displayed as a footer, at the bottom of the screen.
26
- * This is optional and if it is not specified, the DxcFooter will be shown by default.
15
+ * The area assigned to render the sidenav title. It is highly recommended to use the sidenav title.
27
16
  */
28
- children?: React.ReactNode;
17
+ title?: React.ReactNode;
29
18
  };
30
- export declare type AppLayoutSidenavPropsType = {
19
+ declare type AppLayoutPropsType = {
31
20
  /**
32
- * Size of the padding to be applied to the custom area ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
33
- * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
21
+ * Text to be placed next to the hamburger button that toggles the
22
+ * visibility of the sidenav.
34
23
  */
35
- padding?: Space | Padding;
24
+ visibilityToggleLabel?: string;
36
25
  /**
37
- * The area inside the sidenav. This area can be used to render custom content.
26
+ * Header content.
38
27
  */
39
- children: React.ReactNode;
28
+ header?: React.ReactNode;
40
29
  /**
41
- * If false, the arrow button is hidden.
42
- * In lower resolutions the arrow will be always displayed.
30
+ * Sidenav content
43
31
  */
44
- displayArrow?: boolean;
32
+ sidenav?: React.ReactNode;
45
33
  /**
46
- * Default action over the content of the page, overlay the content or push to the right ('push' | 'overlay').
47
- * In lower resolutions the mode will always be overlay.
34
+ * Footer content
48
35
  */
49
- mode: "push" | "overlay";
50
- };
51
- declare type AppLayoutPropsType = {
36
+ footer?: React.ReactNode;
52
37
  /**
53
38
  * The area inside the sidenav. This area can be used to render custom content.
54
39
  */
package/link/Link.d.ts CHANGED
@@ -1,3 +1,4 @@
1
- import Overload from "./types";
2
- declare const DxcLink: Overload;
1
+ import React from "react";
2
+ import { LinkProps } from "./types";
3
+ declare const DxcLink: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
3
4
  export default DxcLink;