@dxc-technology/halstack-react 0.0.0-e1a279c → 0.0.0-e201636

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 (281) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +295 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +15 -47
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +8 -8
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +15 -17
  12. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  13. package/accordion-group/AccordionGroup.test.js +151 -0
  14. package/accordion-group/types.d.ts +8 -8
  15. package/alert/Alert.js +6 -3
  16. package/alert/Alert.test.js +92 -0
  17. package/alert/types.d.ts +1 -1
  18. package/badge/Badge.d.ts +4 -0
  19. package/badge/Badge.js +6 -4
  20. package/badge/types.d.ts +5 -0
  21. package/{radio → badge}/types.js +0 -0
  22. package/bleed/Bleed.d.ts +3 -0
  23. package/bleed/Bleed.js +84 -0
  24. package/bleed/Bleed.stories.tsx +342 -0
  25. package/bleed/types.d.ts +37 -0
  26. package/bleed/types.js +5 -0
  27. package/box/Box.d.ts +1 -1
  28. package/box/Box.js +26 -39
  29. package/box/Box.test.js +18 -0
  30. package/box/types.d.ts +0 -4
  31. package/button/Button.d.ts +1 -1
  32. package/button/Button.js +24 -27
  33. package/button/Button.stories.tsx +6 -8
  34. package/button/Button.test.js +35 -0
  35. package/button/types.d.ts +5 -9
  36. package/card/Card.js +32 -34
  37. package/card/Card.stories.tsx +201 -0
  38. package/card/Card.test.js +50 -0
  39. package/card/ice-cream.jpg +0 -0
  40. package/card/types.d.ts +4 -6
  41. package/checkbox/Checkbox.d.ts +1 -1
  42. package/checkbox/Checkbox.js +45 -41
  43. package/checkbox/Checkbox.stories.tsx +124 -128
  44. package/checkbox/Checkbox.test.js +78 -0
  45. package/checkbox/types.d.ts +9 -5
  46. package/chip/Chip.d.ts +4 -0
  47. package/chip/Chip.js +16 -76
  48. package/chip/Chip.stories.tsx +6 -8
  49. package/chip/Chip.test.js +56 -0
  50. package/chip/types.d.ts +45 -0
  51. package/chip/types.js +5 -0
  52. package/common/variables.js +234 -341
  53. package/date-input/DateInput.js +63 -52
  54. package/date-input/DateInput.stories.tsx +7 -7
  55. package/date-input/DateInput.test.js +479 -0
  56. package/date-input/types.d.ts +16 -9
  57. package/dialog/Dialog.js +8 -35
  58. package/dialog/Dialog.test.js +40 -0
  59. package/dropdown/Dropdown.d.ts +1 -1
  60. package/dropdown/Dropdown.js +22 -48
  61. package/dropdown/Dropdown.stories.tsx +249 -0
  62. package/dropdown/Dropdown.test.js +189 -0
  63. package/dropdown/types.d.ts +6 -15
  64. package/file-input/FileInput.d.ts +4 -0
  65. package/file-input/FileInput.js +172 -111
  66. package/file-input/FileInput.stories.tsx +507 -0
  67. package/file-input/FileInput.test.js +457 -0
  68. package/file-input/FileItem.d.ts +14 -0
  69. package/file-input/FileItem.js +16 -23
  70. package/file-input/types.d.ts +112 -0
  71. package/file-input/types.js +5 -0
  72. package/footer/Footer.d.ts +1 -1
  73. package/footer/Footer.js +32 -113
  74. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  75. package/footer/Footer.test.js +109 -0
  76. package/footer/Icons.d.ts +2 -0
  77. package/footer/Icons.js +3 -3
  78. package/footer/types.d.ts +22 -18
  79. package/header/Header.js +29 -50
  80. package/header/Header.stories.tsx +172 -0
  81. package/header/Header.test.js +79 -0
  82. package/header/Icons.d.ts +2 -0
  83. package/header/types.d.ts +4 -2
  84. package/heading/Heading.d.ts +4 -0
  85. package/heading/Heading.js +7 -24
  86. package/heading/Heading.stories.tsx +54 -0
  87. package/heading/Heading.test.js +186 -0
  88. package/heading/types.d.ts +33 -0
  89. package/heading/types.js +5 -0
  90. package/inset/Inset.d.ts +3 -0
  91. package/inset/Inset.js +84 -0
  92. package/inset/Inset.stories.tsx +229 -0
  93. package/inset/types.d.ts +37 -0
  94. package/inset/types.js +5 -0
  95. package/layout/ApplicationLayout.d.ts +11 -0
  96. package/layout/ApplicationLayout.js +84 -120
  97. package/layout/ApplicationLayout.stories.tsx +126 -0
  98. package/layout/Icons.d.ts +5 -0
  99. package/layout/Icons.js +13 -2
  100. package/layout/SidenavContext.d.ts +5 -0
  101. package/layout/SidenavContext.js +19 -0
  102. package/layout/types.d.ts +52 -0
  103. package/layout/types.js +5 -0
  104. package/link/Link.d.ts +3 -2
  105. package/link/Link.js +61 -86
  106. package/link/Link.stories.tsx +131 -15
  107. package/link/Link.test.js +83 -0
  108. package/link/types.d.ts +9 -29
  109. package/list/List.d.ts +4 -0
  110. package/list/List.js +47 -0
  111. package/list/List.stories.tsx +95 -0
  112. package/list/types.d.ts +7 -0
  113. package/list/types.js +5 -0
  114. package/main.d.ts +12 -9
  115. package/main.js +72 -42
  116. package/number-input/NumberInput.js +14 -24
  117. package/number-input/NumberInput.stories.tsx +5 -5
  118. package/number-input/NumberInput.test.js +506 -0
  119. package/number-input/NumberInputContext.d.ts +4 -0
  120. package/number-input/NumberInputContext.js +5 -2
  121. package/number-input/numberInputContextTypes.d.ts +19 -0
  122. package/number-input/numberInputContextTypes.js +5 -0
  123. package/number-input/types.d.ts +17 -10
  124. package/package.json +9 -6
  125. package/paginator/Paginator.js +19 -46
  126. package/paginator/Paginator.test.js +266 -0
  127. package/password-input/PasswordInput.js +23 -19
  128. package/password-input/PasswordInput.stories.tsx +3 -3
  129. package/password-input/PasswordInput.test.js +180 -0
  130. package/password-input/types.d.ts +29 -19
  131. package/progress-bar/ProgressBar.js +5 -5
  132. package/progress-bar/ProgressBar.stories.jsx +11 -11
  133. package/progress-bar/ProgressBar.test.js +65 -0
  134. package/quick-nav/QuickNav.d.ts +4 -0
  135. package/quick-nav/QuickNav.js +112 -0
  136. package/quick-nav/QuickNav.stories.tsx +237 -0
  137. package/quick-nav/types.d.ts +21 -0
  138. package/quick-nav/types.js +5 -0
  139. package/radio-group/Radio.d.ts +4 -0
  140. package/radio-group/Radio.js +141 -0
  141. package/radio-group/RadioGroup.d.ts +4 -0
  142. package/radio-group/RadioGroup.js +282 -0
  143. package/radio-group/RadioGroup.stories.tsx +100 -0
  144. package/radio-group/RadioGroup.test.js +695 -0
  145. package/radio-group/types.d.ts +114 -0
  146. package/radio-group/types.js +5 -0
  147. package/resultsetTable/ResultsetTable.d.ts +4 -0
  148. package/resultsetTable/ResultsetTable.js +9 -29
  149. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  150. package/resultsetTable/ResultsetTable.test.js +306 -0
  151. package/resultsetTable/types.d.ts +67 -0
  152. package/resultsetTable/types.js +5 -0
  153. package/row/Row.d.ts +3 -0
  154. package/row/Row.js +127 -0
  155. package/row/Row.stories.tsx +237 -0
  156. package/row/types.d.ts +28 -0
  157. package/row/types.js +5 -0
  158. package/select/Icons.d.ts +10 -0
  159. package/select/Icons.js +93 -0
  160. package/select/Listbox.d.ts +4 -0
  161. package/select/Listbox.js +152 -0
  162. package/select/Option.d.ts +4 -0
  163. package/select/Option.js +110 -0
  164. package/select/Select.d.ts +4 -0
  165. package/select/Select.js +122 -342
  166. package/select/Select.stories.tsx +103 -81
  167. package/select/Select.test.js +2120 -0
  168. package/select/types.d.ts +213 -0
  169. package/select/types.js +5 -0
  170. package/sidenav/Sidenav.d.ts +1 -1
  171. package/sidenav/Sidenav.js +22 -11
  172. package/sidenav/Sidenav.stories.tsx +182 -0
  173. package/sidenav/Sidenav.test.js +56 -0
  174. package/slider/Slider.d.ts +1 -1
  175. package/slider/Slider.js +6 -5
  176. package/slider/Slider.stories.tsx +8 -8
  177. package/slider/Slider.test.js +150 -0
  178. package/slider/types.d.ts +4 -0
  179. package/spinner/Spinner.js +3 -3
  180. package/spinner/Spinner.stories.jsx +1 -0
  181. package/spinner/Spinner.test.js +64 -0
  182. package/stack/Stack.d.ts +3 -0
  183. package/stack/Stack.js +97 -0
  184. package/stack/Stack.stories.tsx +164 -0
  185. package/stack/types.d.ts +24 -0
  186. package/stack/types.js +5 -0
  187. package/switch/Switch.d.ts +1 -1
  188. package/switch/Switch.js +37 -21
  189. package/switch/Switch.stories.tsx +15 -15
  190. package/switch/Switch.test.js +98 -0
  191. package/switch/types.d.ts +6 -2
  192. package/table/Table.js +3 -3
  193. package/table/Table.stories.jsx +2 -1
  194. package/table/Table.test.js +26 -0
  195. package/tabs/Tabs.d.ts +1 -1
  196. package/tabs/Tabs.js +20 -20
  197. package/tabs/Tabs.stories.tsx +112 -0
  198. package/tabs/Tabs.test.js +140 -0
  199. package/tabs/types.d.ts +29 -18
  200. package/tabs-nav/NavTabs.d.ts +8 -0
  201. package/tabs-nav/NavTabs.js +125 -0
  202. package/tabs-nav/NavTabs.stories.tsx +170 -0
  203. package/tabs-nav/NavTabs.test.js +82 -0
  204. package/tabs-nav/Tab.d.ts +4 -0
  205. package/tabs-nav/Tab.js +132 -0
  206. package/tabs-nav/types.d.ts +53 -0
  207. package/tabs-nav/types.js +5 -0
  208. package/tag/Tag.d.ts +1 -1
  209. package/tag/Tag.js +18 -28
  210. package/tag/Tag.stories.tsx +26 -29
  211. package/tag/Tag.test.js +60 -0
  212. package/tag/types.d.ts +23 -14
  213. package/text/Text.d.ts +7 -0
  214. package/text/Text.js +30 -0
  215. package/text/Text.stories.tsx +19 -0
  216. package/text-input/Suggestion.d.ts +4 -0
  217. package/text-input/Suggestion.js +55 -0
  218. package/text-input/TextInput.d.ts +4 -0
  219. package/text-input/TextInput.js +91 -146
  220. package/text-input/TextInput.stories.tsx +474 -0
  221. package/text-input/TextInput.test.js +1712 -0
  222. package/text-input/types.d.ts +178 -0
  223. package/text-input/types.js +5 -0
  224. package/textarea/Textarea.d.ts +4 -0
  225. package/textarea/Textarea.js +39 -79
  226. package/textarea/Textarea.stories.jsx +37 -15
  227. package/textarea/Textarea.test.js +437 -0
  228. package/textarea/types.d.ts +137 -0
  229. package/textarea/types.js +5 -0
  230. package/toggle-group/ToggleGroup.d.ts +4 -0
  231. package/toggle-group/ToggleGroup.js +18 -46
  232. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  233. package/toggle-group/ToggleGroup.test.js +156 -0
  234. package/toggle-group/types.d.ts +105 -0
  235. package/toggle-group/types.js +5 -0
  236. package/useTheme.d.ts +2 -0
  237. package/useTheme.js +2 -2
  238. package/useTranslatedLabels.d.ts +2 -0
  239. package/useTranslatedLabels.js +20 -0
  240. package/wizard/Wizard.d.ts +1 -1
  241. package/wizard/Wizard.js +107 -46
  242. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +13 -23
  243. package/wizard/Wizard.test.js +141 -0
  244. package/wizard/types.d.ts +9 -9
  245. package/ThemeContext.js +0 -246
  246. package/V3Select/V3Select.js +0 -455
  247. package/V3Select/index.d.ts +0 -27
  248. package/V3Textarea/V3Textarea.js +0 -260
  249. package/V3Textarea/index.d.ts +0 -27
  250. package/chip/index.d.ts +0 -22
  251. package/date/Date.js +0 -373
  252. package/date/index.d.ts +0 -27
  253. package/file-input/index.d.ts +0 -81
  254. package/heading/index.d.ts +0 -17
  255. package/input-text/Icons.js +0 -22
  256. package/input-text/InputText.js +0 -611
  257. package/input-text/index.d.ts +0 -36
  258. package/radio/Radio.d.ts +0 -4
  259. package/radio/Radio.js +0 -174
  260. package/radio/Radio.stories.tsx +0 -192
  261. package/radio/types.d.ts +0 -54
  262. package/resultsetTable/index.d.ts +0 -19
  263. package/select/index.d.ts +0 -131
  264. package/text-input/index.d.ts +0 -135
  265. package/textarea/index.d.ts +0 -117
  266. package/toggle/Toggle.js +0 -186
  267. package/toggle/index.d.ts +0 -21
  268. package/toggle-group/index.d.ts +0 -21
  269. package/upload/Upload.js +0 -201
  270. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  271. package/upload/buttons-upload/Icons.js +0 -40
  272. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  273. package/upload/dragAndDropArea/Icons.js +0 -39
  274. package/upload/file-upload/FileToUpload.js +0 -115
  275. package/upload/file-upload/Icons.js +0 -66
  276. package/upload/files-upload/FilesToUpload.js +0 -109
  277. package/upload/index.d.ts +0 -15
  278. package/upload/transaction/Icons.js +0 -160
  279. package/upload/transaction/Transaction.js +0 -104
  280. package/upload/transactions/Transactions.js +0 -94
  281. package/wizard/Icons.js +0 -65
@@ -13,25 +13,29 @@ 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"));
16
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
- var _main = require("../main");
20
+ var _Header = _interopRequireDefault(require("../header/Header"));
21
21
 
22
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
22
+ var _Footer = _interopRequireDefault(require("../footer/Footer"));
23
23
 
24
- var _propTypes = _interopRequireDefault(require("prop-types"));
24
+ var _Sidenav = _interopRequireDefault(require("../sidenav/Sidenav"));
25
+
26
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
25
27
 
26
28
  var _variables = require("../common/variables.js");
27
29
 
28
30
  var _Icons = require("./Icons");
29
31
 
30
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
32
+ var _uuid = require("uuid");
33
+
34
+ var _SidenavContext = require("./SidenavContext");
31
35
 
32
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
36
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
33
37
 
34
- var _excluded = ["displayArrow", "mode"];
38
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
35
39
 
36
40
  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); }
37
41
 
@@ -54,26 +58,13 @@ var Footer = function Footer(_ref3) {
54
58
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children);
55
59
  };
56
60
 
57
- var SideNav = function SideNav(props) {
58
- var displayArrow = props.displayArrow,
59
- mode = props.mode,
60
- childProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
61
- return /*#__PURE__*/_react["default"].createElement(_main.DxcSidenav, childProps, childProps.children);
62
- };
63
-
64
- SideNav.propTypes = {
65
- mode: _propTypes["default"].oneOf(["overlay", "push", ""]),
66
- displayArrow: _propTypes["default"].bool,
67
- padding: _propTypes["default"].oneOfType([_propTypes["default"].shape({
68
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
69
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
70
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
71
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
72
- })])
61
+ var Sidenav = function Sidenav(_ref4) {
62
+ var childProps = (0, _extends2["default"])({}, _ref4);
63
+ return /*#__PURE__*/_react["default"].createElement(_Sidenav["default"], childProps, childProps.children);
73
64
  };
74
65
 
75
66
  var defaultFooter = function defaultFooter() {
76
- return /*#__PURE__*/_react["default"].createElement(_main.DxcFooter, {
67
+ return /*#__PURE__*/_react["default"].createElement(_Footer["default"], {
77
68
  copyright: "\xA9 DXC Technology ".concat(year, "\u200B\u200B\u200B\u200B. All rights reserved."),
78
69
  bottomLinks: [{
79
70
  href: "https://www.linkedin.com/company/dxctechnology",
@@ -99,137 +90,110 @@ var defaultFooter = function defaultFooter() {
99
90
  };
100
91
 
101
92
  var defaultHeader = function defaultHeader() {
102
- return /*#__PURE__*/_react["default"].createElement(_main.DxcHeader, {
93
+ return /*#__PURE__*/_react["default"].createElement(_Header["default"], {
103
94
  underlined: true
104
95
  });
105
96
  };
106
97
 
107
98
  var childTypeExists = function childTypeExists(children, childType) {
108
99
  return children.find(function (child) {
109
- return child && child.type && child.type === childType;
100
+ return (child === null || child === void 0 ? void 0 : child.type) === childType;
110
101
  });
111
102
  };
112
103
 
113
- var DxcApplicationLayout = function DxcApplicationLayout(_ref4) {
114
- var children = _ref4.children;
115
- var ref = (0, _react.useRef)(null);
116
- var colorsTheme = (0, _useTheme["default"])();
104
+ var DxcApplicationLayout = function DxcApplicationLayout(_ref5) {
105
+ var _ref5$visibilityToggl = _ref5.visibilityToggleLabel,
106
+ visibilityToggleLabel = _ref5$visibilityToggl === void 0 ? "" : _ref5$visibilityToggl,
107
+ children = _ref5.children;
108
+
109
+ var _useState = (0, _react.useState)("appLayout-".concat((0, _uuid.v4)())),
110
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
111
+ appLayoutId = _useState2[0];
117
112
 
118
- var _useState = (0, _react.useState)(true),
119
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
120
- isSideNavVisible = _useState2[0],
121
- setIsSideNavVisible = _useState2[1];
113
+ var visibilityToggleLabelId = "label-".concat(appLayoutId);
122
114
 
123
- var _useState3 = (0, _react.useState)(),
115
+ var _useState3 = (0, _react.useState)(false),
124
116
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
125
- isResponsive = _useState4[0],
126
- setIsResponsive = _useState4[1];
117
+ isSidenavVisibleResponsive = _useState4[0],
118
+ setIsSidenavVisibleResponsive = _useState4[1];
119
+
120
+ var _useState5 = (0, _react.useState)(false),
121
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
122
+ isResponsive = _useState6[0],
123
+ setIsResponsive = _useState6[1];
124
+
125
+ var ref = (0, _react.useRef)(null);
126
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
127
127
 
128
128
  var childrenArray = _react["default"].Children.toArray(children);
129
129
 
130
- var header = childTypeExists(childrenArray, _main.DxcHeader) || childTypeExists(childrenArray, Header) || defaultHeader();
131
- var footer = childTypeExists(childrenArray, _main.DxcFooter) || childTypeExists(childrenArray, Footer) || defaultFooter();
132
- var sideNav = childTypeExists(childrenArray, SideNav);
130
+ var header = childTypeExists(childrenArray, _Header["default"]) || childTypeExists(childrenArray, Header) || defaultHeader();
131
+ var footer = childTypeExists(childrenArray, _Footer["default"]) || childTypeExists(childrenArray, Footer) || defaultFooter();
132
+ var sidenav = childTypeExists(childrenArray, Sidenav);
133
133
  var main = childTypeExists(childrenArray, Main);
134
- var displayArrow = sideNav && sideNav.props && sideNav.props.displayArrow;
135
- var sideNavMode = sideNav && sideNav.props && sideNav.props.mode;
136
-
137
- var ArrowIcon = function ArrowIcon() {
138
- return /*#__PURE__*/_react["default"].createElement("svg", {
139
- xmlns: "http://www.w3.org/2000/svg",
140
- width: "15.995",
141
- height: "10.01",
142
- viewBox: "0 0 15.995 10.01"
143
- }, /*#__PURE__*/_react["default"].createElement("path", {
144
- "data-testid": "arrow-to-right",
145
- 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",
146
- transform: "translate(-2 -6.996)"
147
- }));
148
- };
149
134
 
150
- var handleResize = function handleResize(width) {
151
- if (width) {
152
- if (width <= _variables.responsiveSizes.tablet ? setIsResponsive(true) : setIsResponsive(false)) ;
153
- setIsSideNavVisible(true);
154
- }
135
+ var handleResize = function handleResize() {
136
+ setIsResponsive(window.matchMedia("(max-width: ".concat(_variables.responsiveSizes.medium, "rem)")).matches);
155
137
  };
156
138
 
157
- var handleEventListener = function handleEventListener() {
158
- handleResize(ref.current.offsetWidth);
139
+ var handleSidenavVisibility = function handleSidenavVisibility() {
140
+ setIsSidenavVisibleResponsive(function (isSidenavVisibleResponsive) {
141
+ return !isSidenavVisibleResponsive;
142
+ });
159
143
  };
160
144
 
161
145
  (0, _react.useEffect)(function () {
162
- if (ref.current) {
163
- window.addEventListener("resize", handleEventListener);
164
- handleResize(ref.current.offsetWidth);
165
- }
166
-
146
+ handleResize();
147
+ window.addEventListener("resize", handleResize);
167
148
  return function () {
168
- window.removeEventListener("resize", handleEventListener);
149
+ window.removeEventListener("resize", handleResize);
169
150
  };
170
- }, []);
171
-
172
- var handleSidenav = function handleSidenav() {
173
- setIsSideNavVisible(!isSideNavVisible);
174
- };
175
-
176
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
177
- theme: colorsTheme.sidenav
178
- }, /*#__PURE__*/_react["default"].createElement(ApplicationLayoutContainer, {
151
+ }, [setIsResponsive]);
152
+ (0, _react.useEffect)(function () {
153
+ !isResponsive && setIsSidenavVisibleResponsive(false);
154
+ }, [isResponsive, setIsSidenavVisibleResponsive]);
155
+ return /*#__PURE__*/_react["default"].createElement(ApplicationLayoutContainer, {
156
+ hasSidenav: sidenav ? true : false,
157
+ isSidenavVisible: isSidenavVisibleResponsive,
179
158
  ref: ref
180
- }, /*#__PURE__*/_react["default"].createElement(HeaderContainer, null, header), /*#__PURE__*/_react["default"].createElement(BodyContainer, null, /*#__PURE__*/_react["default"].createElement(ContentContainer, null, /*#__PURE__*/_react["default"].createElement(SideNavArrowContainer, {
181
- isSideNavVisible: isSideNavVisible
182
- }, sideNav, /*#__PURE__*/_react["default"].createElement(ArrowContainer, null, sideNav && (displayArrow || isResponsive) && /*#__PURE__*/_react["default"].createElement(ArrowTrigger, {
183
- tabIndex: 0,
184
- onClick: handleSidenav,
185
- isSideNavVisible: isSideNavVisible
186
- }, /*#__PURE__*/_react["default"].createElement(ArrowIcon, null)))), /*#__PURE__*/_react["default"].createElement(MainBodyContainer, null, /*#__PURE__*/_react["default"].createElement(MainContent, {
187
- sideNav: sideNav,
188
- mode: isResponsive ? "overlay" : sideNavMode,
189
- isSideNavVisible: isSideNavVisible
190
- }, main), /*#__PURE__*/_react["default"].createElement(FooterContainer, {
191
- sideNav: sideNav,
192
- mode: isResponsive ? "overlay" : sideNavMode,
193
- isSideNavVisible: isSideNavVisible
194
- }, footer))))));
159
+ }, /*#__PURE__*/_react["default"].createElement(HeaderContainer, null, header), sidenav && isResponsive && /*#__PURE__*/_react["default"].createElement(VisibilityToggle, null, /*#__PURE__*/_react["default"].createElement(HamburgerTrigger, {
160
+ onClick: handleSidenavVisibility,
161
+ "aria-labelledby": visibilityToggleLabel ? visibilityToggleLabelId : undefined,
162
+ "aria-label": visibilityToggleLabel ? undefined : translatedLabels.applicationLayout.visibilityToggleTitle,
163
+ title: translatedLabels.applicationLayout.visibilityToggleTitle
164
+ }, _Icons.hamburgerIcon), visibilityToggleLabel && /*#__PURE__*/_react["default"].createElement(VisibilityToggleLabel, {
165
+ id: visibilityToggleLabelId
166
+ }, visibilityToggleLabel)), /*#__PURE__*/_react["default"].createElement(BodyContainer, null, /*#__PURE__*/_react["default"].createElement(_SidenavContext.SidenavContextProvider, {
167
+ value: setIsSidenavVisibleResponsive
168
+ }, sidenav && (isResponsive ? isSidenavVisibleResponsive : true) && /*#__PURE__*/_react["default"].createElement(SidenavContainer, null, sidenav)), /*#__PURE__*/_react["default"].createElement(MainContainer, null, /*#__PURE__*/_react["default"].createElement(MainContentContainer, null, main), footer)));
195
169
  };
196
170
 
197
- DxcApplicationLayout.Header = Header;
198
- DxcApplicationLayout.Main = Main;
199
- DxcApplicationLayout.Footer = Footer;
200
- DxcApplicationLayout.SideNav = SideNav;
201
-
202
- 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"])));
171
+ 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) {
172
+ return props.hasSidenav && "top: 112px";
173
+ }, function (props) {
174
+ return props.isSidenavVisible && "overflow: hidden;";
175
+ });
203
176
 
204
- 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"])));
177
+ 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"])));
205
178
 
206
- var BodyContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 1;\n display: flex;\n flex-direction: column;\n"])));
179
+ 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: 12px 16px;\n gap: 10px;\n width: 100%;\n background-color: #f2f2f2;\n user-select: none;\n z-index: 2;\n"])));
207
180
 
208
- var ContentContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex: 1 1 auto;\n align-items: flex-start;\n"])));
181
+ var HamburgerTrigger = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n border: 0px solid transparent;\n border-radius: 2px;\n padding: 3px;\n background-color: transparent;\n box-shadow: 0 0 0 2px transparent;\n cursor: pointer;\n\n :hover {\n background-color: #e6e6e6;\n }\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"])));
209
182
 
210
- 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"])));
183
+ var VisibilityToggleLabel = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: Open Sans, sans-serif;\n font-weight: 600;\n font-size: 14px;\n"])));
211
184
 
212
- var FooterContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n transition: margin 0.4s ease-in-out;\n"])), function (props) {
213
- return props.sideNav ? props.mode === "push" && !props.isSideNavVisible || props.mode === "overlay" ? "-300px" : "" : "";
214
- });
185
+ var BodyContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n flex: 1;\n"])));
215
186
 
216
- 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) {
217
- return props.sideNav ? props.mode === "push" && props.isSideNavVisible ? "" : "-297px" : "";
218
- });
187
+ var SidenavContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (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: fixed;\n top: 112px;\n }\n"])), _variables.responsiveSizes.medium);
219
188
 
220
- 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) {
221
- return props.isSideNavVisible ? "translateX(0)" : !props.isSideNavVisible ? "translateX(-100%)" : "";
222
- });
189
+ var MainContainer = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n width: 100%;\n"])));
223
190
 
224
- var ArrowContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n height: calc(100vh - 64px);\n left: 279px;\n"])));
225
-
226
- 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"])), function (props) {
227
- return "".concat(props.theme.arrowContainerColor);
228
- }, function (props) {
229
- return props.isSideNavVisible ? "rotate(-180deg)" : "rotate(0deg)";
230
- }, function (props) {
231
- return props.theme.arrowColor;
232
- });
191
+ var MainContentContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 1;\n"])));
233
192
 
193
+ DxcApplicationLayout.Header = Header;
194
+ DxcApplicationLayout.Main = Main;
195
+ DxcApplicationLayout.Footer = Footer;
196
+ DxcApplicationLayout.SideNav = Sidenav;
197
+ DxcApplicationLayout.useResponsiveSidenavVisibility = _SidenavContext.useResponsiveSidenavVisibility;
234
198
  var _default = DxcApplicationLayout;
235
199
  exports["default"] = _default;
@@ -0,0 +1,126 @@
1
+ import React from "react";
2
+ import DxcApplicationLayout from "./ApplicationLayout";
3
+ import DxcSidenav from "../sidenav/Sidenav";
4
+ import Title from "../../.storybook/components/Title";
5
+ import { INITIAL_VIEWPORTS } from "@storybook/addon-viewport";
6
+
7
+ export default {
8
+ title: "Application Layout ",
9
+ component: DxcApplicationLayout,
10
+ parameters: {
11
+ viewport: {
12
+ viewports: INITIAL_VIEWPORTS,
13
+ },
14
+ },
15
+ };
16
+
17
+ export const DefaultApplicationLayout = () => (
18
+ <>
19
+ <DxcApplicationLayout>
20
+ <DxcApplicationLayout.Main>
21
+ <Title title="Default application layout" theme="light" level={4} />
22
+ <p>Main Content</p>
23
+ <p>Main Content</p>
24
+ <p>Main Content</p>
25
+ <p>Main Content</p>
26
+ </DxcApplicationLayout.Main>
27
+ </DxcApplicationLayout>
28
+ </>
29
+ );
30
+
31
+ export const ApplicationLayoutWithDefaultSidenav = () => (
32
+ <>
33
+ <DxcApplicationLayout>
34
+ <DxcApplicationLayout.SideNav>
35
+ <DxcSidenav.Title>Application layout with sidenav</DxcSidenav.Title>
36
+ <p>SideNav Content</p>
37
+ <p>SideNav Content</p>
38
+ <p>SideNav Content</p>
39
+ <p>SideNav Content</p>
40
+ <p>SideNav Content</p>
41
+ </DxcApplicationLayout.SideNav>
42
+ <DxcApplicationLayout.Main>
43
+ <p>Main Content</p>
44
+ <p>Main Content</p>
45
+ <p>Main Content</p>
46
+ <p>Main Content</p>
47
+ </DxcApplicationLayout.Main>
48
+ </DxcApplicationLayout>
49
+ </>
50
+ );
51
+
52
+ export const ApplicationLayoutWithResponsiveSidenav = () => (
53
+ <>
54
+ <DxcApplicationLayout visibilityToggleLabel="Example">
55
+ <DxcApplicationLayout.SideNav>
56
+ <DxcSidenav.Title>Application layout with push sidenav</DxcSidenav.Title>
57
+ <p>SideNav Content</p>
58
+ <p>SideNav Content</p>
59
+ <p>SideNav Content</p>
60
+ <p>SideNav Content</p>
61
+ <p>SideNav Content</p>
62
+ </DxcApplicationLayout.SideNav>
63
+ <DxcApplicationLayout.Main>
64
+ <p>Main Content</p>
65
+ <p>Main Content</p>
66
+ <p>Main Content</p>
67
+ <p>Main Content</p>
68
+ </DxcApplicationLayout.Main>
69
+ </DxcApplicationLayout>
70
+ </>
71
+ );
72
+
73
+ ApplicationLayoutWithResponsiveSidenav.parameters = {
74
+ viewport: {
75
+ defaultViewport: "pixel",
76
+ },
77
+ };
78
+
79
+ export const ApplicationLayoutWithCustomHeader = () => (
80
+ <>
81
+ <DxcApplicationLayout>
82
+ <DxcApplicationLayout.Header>
83
+ {" "}
84
+ <p>Custom Header</p>{" "}
85
+ </DxcApplicationLayout.Header>
86
+ <DxcApplicationLayout.SideNav>
87
+ <DxcSidenav.Title>Application layout with custom header</DxcSidenav.Title>
88
+ <p>SideNav Content</p>
89
+ <p>SideNav Content</p>
90
+ <p>SideNav Content</p>
91
+ <p>SideNav Content</p>
92
+ <p>SideNav Content</p>
93
+ </DxcApplicationLayout.SideNav>
94
+ <DxcApplicationLayout.Main>
95
+ <p>Main Content</p>
96
+ <p>Main Content</p>
97
+ <p>Main Content</p>
98
+ <p>Main Content</p>
99
+ </DxcApplicationLayout.Main>
100
+ </DxcApplicationLayout>
101
+ </>
102
+ );
103
+
104
+ export const ApplicationLayoutWithCustomFooter = () => (
105
+ <>
106
+ <DxcApplicationLayout>
107
+ <DxcApplicationLayout.SideNav>
108
+ <DxcSidenav.Title>Application layout with custom footer</DxcSidenav.Title>
109
+ <p>SideNav Content</p>
110
+ <p>SideNav Content</p>
111
+ <p>SideNav Content</p>
112
+ <p>SideNav Content</p>
113
+ <p>SideNav Content</p>
114
+ </DxcApplicationLayout.SideNav>
115
+ <DxcApplicationLayout.Main>
116
+ <p>Main Content</p>
117
+ <p>Main Content</p>
118
+ <p>Main Content</p>
119
+ <p>Main Content</p>
120
+ </DxcApplicationLayout.Main>
121
+ <DxcApplicationLayout.Footer>
122
+ <p>Custom Footer</p>
123
+ </DxcApplicationLayout.Footer>
124
+ </DxcApplicationLayout>
125
+ </>
126
+ );
@@ -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;
@@ -0,0 +1,52 @@
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
+ };
17
+ export declare type AppLayoutMainPropsType = {
18
+ /**
19
+ * Everything between the tags will be displayed as the content of the main part of the application.
20
+ */
21
+ children: React.ReactNode;
22
+ };
23
+ export declare type AppLayoutFooterPropsType = {
24
+ /**
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.
27
+ */
28
+ children?: React.ReactNode;
29
+ };
30
+ export declare type AppLayoutSidenavPropsType = {
31
+ /**
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.
34
+ */
35
+ padding?: Space | Padding;
36
+ /**
37
+ * The area inside the sidenav. This area can be used to render custom content.
38
+ */
39
+ children: React.ReactNode;
40
+ };
41
+ declare type AppLayoutPropsType = {
42
+ /**
43
+ * Text to be placed next to the hamburger button that toggles the
44
+ * visibility of the sidenav.
45
+ */
46
+ visibilityToggleLabel?: string;
47
+ /**
48
+ * The area inside the sidenav. This area can be used to render custom content.
49
+ */
50
+ children: React.ReactElement<ChildrenType> | React.ReactElement<ChildrenType>[];
51
+ };
52
+ export default AppLayoutPropsType;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
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;