@dxc-technology/halstack-react 0.0.0-c18d61a → 0.0.0-c1a6e05

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 (201) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1329 -5
  4. package/HalstackContext.js +117 -77
  5. package/accordion/Accordion.js +13 -24
  6. package/accordion/Accordion.stories.tsx +102 -13
  7. package/accordion/Accordion.test.js +1 -1
  8. package/accordion/types.d.ts +3 -3
  9. package/accordion-group/AccordionGroup.d.ts +4 -3
  10. package/accordion-group/AccordionGroup.js +23 -44
  11. package/accordion-group/AccordionGroup.test.js +1 -1
  12. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  13. package/accordion-group/AccordionGroupAccordion.js +43 -0
  14. package/accordion-group/types.d.ts +2 -2
  15. package/alert/Alert.js +4 -8
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +1 -1
  18. package/bleed/Bleed.stories.tsx +1 -0
  19. package/box/Box.js +3 -5
  20. package/box/Box.stories.tsx +15 -0
  21. package/box/Box.test.js +1 -1
  22. package/bulleted-list/BulletedList.js +4 -2
  23. package/bulleted-list/BulletedList.stories.tsx +7 -1
  24. package/bulleted-list/types.d.ts +31 -4
  25. package/button/Button.js +13 -16
  26. package/button/Button.stories.tsx +151 -9
  27. package/button/Button.test.js +1 -1
  28. package/button/types.d.ts +3 -3
  29. package/card/Card.js +12 -13
  30. package/card/Card.stories.tsx +12 -13
  31. package/card/Card.test.js +1 -1
  32. package/checkbox/Checkbox.d.ts +2 -2
  33. package/checkbox/Checkbox.js +18 -17
  34. package/checkbox/Checkbox.stories.tsx +131 -59
  35. package/checkbox/Checkbox.test.js +1 -1
  36. package/checkbox/types.d.ts +6 -2
  37. package/chip/Chip.js +28 -49
  38. package/chip/Chip.stories.tsx +121 -26
  39. package/chip/Chip.test.js +3 -5
  40. package/common/OpenSans.css +68 -80
  41. package/common/coreTokens.d.ts +146 -0
  42. package/common/coreTokens.js +167 -0
  43. package/common/utils.d.ts +1 -0
  44. package/common/utils.js +4 -4
  45. package/common/variables.d.ts +1482 -0
  46. package/common/variables.js +981 -1129
  47. package/date-input/Calendar.d.ts +4 -0
  48. package/date-input/Calendar.js +258 -0
  49. package/date-input/DateInput.js +134 -237
  50. package/date-input/DateInput.stories.tsx +199 -33
  51. package/date-input/DateInput.test.js +494 -138
  52. package/date-input/DatePicker.d.ts +4 -0
  53. package/date-input/DatePicker.js +146 -0
  54. package/date-input/Icons.d.ts +6 -0
  55. package/date-input/Icons.js +75 -0
  56. package/date-input/YearPicker.d.ts +4 -0
  57. package/date-input/YearPicker.js +126 -0
  58. package/date-input/types.d.ts +51 -0
  59. package/dialog/Dialog.js +61 -74
  60. package/dialog/Dialog.stories.tsx +211 -159
  61. package/dialog/Dialog.test.js +302 -3
  62. package/dialog/types.d.ts +2 -2
  63. package/dropdown/Dropdown.js +37 -37
  64. package/dropdown/Dropdown.stories.tsx +210 -84
  65. package/dropdown/Dropdown.test.js +20 -24
  66. package/dropdown/DropdownMenu.js +12 -18
  67. package/dropdown/DropdownMenuItem.js +4 -17
  68. package/dropdown/types.d.ts +3 -3
  69. package/file-input/FileInput.d.ts +2 -2
  70. package/file-input/FileInput.js +28 -52
  71. package/file-input/FileInput.stories.tsx +96 -17
  72. package/file-input/FileInput.test.js +14 -55
  73. package/file-input/FileItem.d.ts +2 -12
  74. package/file-input/FileItem.js +29 -41
  75. package/file-input/types.d.ts +17 -0
  76. package/flex/Flex.js +4 -2
  77. package/flex/Flex.stories.tsx +35 -26
  78. package/flex/types.d.ts +70 -5
  79. package/footer/Footer.js +6 -8
  80. package/footer/Footer.stories.tsx +91 -0
  81. package/footer/Footer.test.js +14 -26
  82. package/grid/Grid.d.ts +7 -0
  83. package/grid/Grid.js +91 -0
  84. package/grid/Grid.stories.tsx +219 -0
  85. package/grid/types.d.ts +115 -0
  86. package/header/Header.d.ts +3 -2
  87. package/header/Header.js +21 -23
  88. package/header/Header.stories.tsx +149 -6
  89. package/header/Header.test.js +2 -2
  90. package/header/types.d.ts +2 -2
  91. package/heading/Heading.js +1 -1
  92. package/heading/Heading.test.js +1 -1
  93. package/inset/Inset.stories.tsx +2 -1
  94. package/layout/ApplicationLayout.d.ts +3 -3
  95. package/layout/ApplicationLayout.js +1 -1
  96. package/layout/types.d.ts +2 -3
  97. package/link/Link.js +4 -4
  98. package/link/Link.stories.tsx +60 -0
  99. package/link/Link.test.js +2 -4
  100. package/link/types.d.ts +2 -2
  101. package/main.d.ts +3 -2
  102. package/main.js +9 -1
  103. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  104. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  105. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  106. package/{tabs-nav → nav-tabs}/Tab.js +37 -17
  107. package/nav-tabs/types.js +5 -0
  108. package/number-input/NumberInput.test.js +6 -7
  109. package/package.json +8 -13
  110. package/paginator/Icons.d.ts +5 -0
  111. package/paginator/Icons.js +16 -28
  112. package/paginator/Paginator.js +6 -14
  113. package/paginator/Paginator.stories.tsx +24 -0
  114. package/paginator/Paginator.test.js +44 -47
  115. package/paragraph/Paragraph.d.ts +3 -4
  116. package/paragraph/Paragraph.js +5 -5
  117. package/password-input/PasswordInput.test.js +1 -1
  118. package/progress-bar/ProgressBar.d.ts +2 -2
  119. package/progress-bar/ProgressBar.js +5 -5
  120. package/progress-bar/ProgressBar.stories.jsx +35 -2
  121. package/progress-bar/ProgressBar.test.js +1 -1
  122. package/progress-bar/types.d.ts +4 -3
  123. package/quick-nav/QuickNav.stories.tsx +14 -0
  124. package/radio-group/Radio.js +10 -10
  125. package/radio-group/RadioGroup.js +8 -10
  126. package/radio-group/RadioGroup.stories.tsx +131 -18
  127. package/radio-group/RadioGroup.test.js +1 -1
  128. package/resultsetTable/Icons.d.ts +7 -0
  129. package/resultsetTable/Icons.js +51 -0
  130. package/resultsetTable/ResultsetTable.js +49 -106
  131. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  132. package/resultsetTable/ResultsetTable.test.js +41 -64
  133. package/resultsetTable/types.d.ts +1 -1
  134. package/select/Listbox.d.ts +1 -1
  135. package/select/Listbox.js +5 -34
  136. package/select/Option.js +11 -24
  137. package/select/Select.js +56 -35
  138. package/select/Select.stories.tsx +494 -150
  139. package/select/Select.test.js +76 -81
  140. package/select/types.d.ts +2 -2
  141. package/sidenav/Icons.d.ts +7 -0
  142. package/sidenav/Icons.js +51 -0
  143. package/sidenav/Sidenav.d.ts +2 -2
  144. package/sidenav/Sidenav.js +66 -96
  145. package/sidenav/Sidenav.stories.tsx +165 -63
  146. package/sidenav/types.d.ts +21 -18
  147. package/slider/Slider.d.ts +2 -2
  148. package/slider/Slider.js +11 -11
  149. package/slider/Slider.stories.tsx +57 -0
  150. package/slider/Slider.test.js +1 -1
  151. package/slider/types.d.ts +6 -2
  152. package/spinner/Spinner.js +17 -23
  153. package/spinner/Spinner.stories.jsx +53 -27
  154. package/spinner/Spinner.test.js +1 -1
  155. package/switch/Switch.d.ts +3 -3
  156. package/switch/Switch.js +7 -6
  157. package/switch/Switch.stories.tsx +33 -0
  158. package/switch/Switch.test.js +1 -1
  159. package/switch/types.d.ts +8 -3
  160. package/table/Table.js +2 -2
  161. package/table/Table.stories.jsx +80 -1
  162. package/table/Table.test.js +2 -2
  163. package/tabs/Tab.js +12 -15
  164. package/tabs/Tabs.js +11 -17
  165. package/tabs/Tabs.stories.tsx +45 -5
  166. package/tabs/Tabs.test.js +4 -5
  167. package/tabs/types.d.ts +2 -2
  168. package/tag/Tag.js +7 -9
  169. package/tag/Tag.stories.tsx +14 -1
  170. package/tag/Tag.test.js +1 -1
  171. package/text-input/Suggestion.js +34 -7
  172. package/text-input/TextInput.js +11 -15
  173. package/text-input/TextInput.stories.tsx +93 -5
  174. package/text-input/TextInput.test.js +587 -635
  175. package/textarea/Textarea.js +3 -4
  176. package/textarea/Textarea.stories.jsx +60 -1
  177. package/textarea/Textarea.test.js +2 -4
  178. package/toggle-group/ToggleGroup.d.ts +2 -2
  179. package/toggle-group/ToggleGroup.js +7 -4
  180. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  181. package/toggle-group/ToggleGroup.test.js +1 -1
  182. package/toggle-group/types.d.ts +1 -1
  183. package/typography/Typography.d.ts +2 -2
  184. package/typography/Typography.js +14 -113
  185. package/typography/Typography.stories.tsx +1 -1
  186. package/useTheme.d.ts +1234 -1
  187. package/useTheme.js +1 -1
  188. package/useTranslatedLabels.d.ts +84 -1
  189. package/utils/BaseTypography.d.ts +21 -0
  190. package/utils/BaseTypography.js +108 -0
  191. package/utils/FocusLock.d.ts +13 -0
  192. package/utils/FocusLock.js +138 -0
  193. package/wizard/Wizard.js +2 -2
  194. package/wizard/Wizard.stories.tsx +20 -0
  195. package/wizard/Wizard.test.js +1 -1
  196. package/wizard/types.d.ts +5 -6
  197. package/common/RequiredComponent.js +0 -32
  198. /package/{tabs-nav → grid}/types.js +0 -0
  199. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  200. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  201. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
@@ -21,7 +21,7 @@ var _react = _interopRequireWildcard(require("react"));
21
21
 
22
22
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
23
 
24
- var _variables = require("../common/variables.js");
24
+ var _variables = require("../common/variables");
25
25
 
26
26
  var _SidenavContext = require("../layout/SidenavContext");
27
27
 
@@ -33,56 +33,19 @@ var _Flex = _interopRequireDefault(require("../flex/Flex"));
33
33
 
34
34
  var _Bleed = _interopRequireDefault(require("../bleed/Bleed"));
35
35
 
36
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
36
+ var _Icons = _interopRequireDefault(require("./Icons"));
37
37
 
38
- var _excluded = ["href", "children", "newWindow", "selected", "icon", "tabIndex", "onClick"];
38
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
39
+
40
+ var _excluded = ["href", "newWindow", "selected", "icon", "onClick", "tabIndex", "children"];
39
41
 
40
42
  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); }
41
43
 
42
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
45
 
44
- var collapsedIcon = /*#__PURE__*/_react["default"].createElement("svg", {
45
- xmlns: "http://www.w3.org/2000/svg",
46
- height: "24px",
47
- viewBox: "0 0 24 24",
48
- width: "24px",
49
- fill: "currentColor"
50
- }, /*#__PURE__*/_react["default"].createElement("path", {
51
- d: "M0 0h24v24H0z",
52
- fill: "none"
53
- }), /*#__PURE__*/_react["default"].createElement("path", {
54
- d: "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
55
- }));
56
-
57
- var collapsableIcon = /*#__PURE__*/_react["default"].createElement("svg", {
58
- xmlns: "http://www.w3.org/2000/svg",
59
- height: "24px",
60
- viewBox: "0 0 24 24",
61
- width: "24px",
62
- fill: "currentColor"
63
- }, /*#__PURE__*/_react["default"].createElement("path", {
64
- d: "M0 0h24v24H0z",
65
- fill: "none"
66
- }), /*#__PURE__*/_react["default"].createElement("path", {
67
- d: "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
68
- }));
69
-
70
- var externalLinkIcon = /*#__PURE__*/_react["default"].createElement("svg", {
71
- xmlns: "http://www.w3.org/2000/svg",
72
- height: "24",
73
- viewBox: "0 0 24 24",
74
- width: "24",
75
- fill: "currentColor"
76
- }, /*#__PURE__*/_react["default"].createElement("path", {
77
- d: "M0 0h24v24H0z",
78
- fill: "none"
79
- }), /*#__PURE__*/_react["default"].createElement("path", {
80
- d: "M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"
81
- }));
82
-
83
46
  var DxcSidenav = function DxcSidenav(_ref) {
84
- var children = _ref.children,
85
- title = _ref.title;
47
+ var title = _ref.title,
48
+ children = _ref.children;
86
49
  var colorsTheme = (0, _useTheme["default"])();
87
50
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
88
51
  theme: colorsTheme.sidenav
@@ -91,9 +54,7 @@ var DxcSidenav = function DxcSidenav(_ref) {
91
54
  }, title, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
92
55
  direction: "column",
93
56
  gap: "1rem"
94
- }, _react["default"].Children.map(children, function (child, index) {
95
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, child, index !== _react["default"].Children.count(children) - 1 && /*#__PURE__*/_react["default"].createElement(Divider, null));
96
- })))));
57
+ }, children))));
97
58
  };
98
59
 
99
60
  var Title = function Title(_ref2) {
@@ -105,58 +66,63 @@ var Title = function Title(_ref2) {
105
66
 
106
67
  var Section = function Section(_ref3) {
107
68
  var children = _ref3.children;
108
- return /*#__PURE__*/_react["default"].createElement(_Bleed["default"], {
69
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Bleed["default"], {
109
70
  horizontal: "1rem"
110
71
  }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
111
72
  direction: "column"
112
- }, children));
73
+ }, children)), /*#__PURE__*/_react["default"].createElement(Divider, null));
113
74
  };
114
75
 
76
+ var GroupContext = /*#__PURE__*/_react["default"].createContext(null);
77
+
115
78
  var Group = function Group(_ref4) {
116
- var children = _ref4.children,
117
- title = _ref4.title,
79
+ var title = _ref4.title,
118
80
  _ref4$collapsable = _ref4.collapsable,
119
81
  collapsable = _ref4$collapsable === void 0 ? false : _ref4$collapsable,
120
- icon = _ref4.icon;
82
+ icon = _ref4.icon,
83
+ children = _ref4.children;
121
84
 
122
85
  var _useState = (0, _react.useState)(false),
123
86
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
124
87
  collapsed = _useState2[0],
125
88
  setCollapsed = _useState2[1];
126
89
 
127
- var selectedGroup = (0, _react.useMemo)(function () {
128
- return collapsed ? _react["default"].Children.toArray(children).some(function (child) {
129
- var _child$props;
90
+ var _useState3 = (0, _react.useState)(false),
91
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
92
+ isSelected = _useState4[0],
93
+ changeIsSelected = _useState4[1];
130
94
 
131
- return (_child$props = child["props"]) === null || _child$props === void 0 ? void 0 : _child$props.selected;
132
- }) : false;
133
- }, [collapsed, children]);
134
- return /*#__PURE__*/_react["default"].createElement(SidenavGroup, null, collapsable && title ? /*#__PURE__*/_react["default"].createElement(SidenavGroupTitleButton, {
135
- role: "button",
95
+ return /*#__PURE__*/_react["default"].createElement(GroupContext.Provider, {
96
+ value: changeIsSelected
97
+ }, /*#__PURE__*/_react["default"].createElement(SidenavGroup, null, collapsable && title ? /*#__PURE__*/_react["default"].createElement(SidenavGroupTitleButton, {
136
98
  "aria-expanded": !collapsed,
137
99
  onClick: function onClick() {
138
100
  return setCollapsed(!collapsed);
139
101
  },
140
- selectedGroup: selectedGroup
141
- }, /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
102
+ selectedGroup: collapsed && isSelected
103
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
104
+ alignItems: "center",
105
+ gap: "0.5rem"
106
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
142
107
  src: icon
143
- }) : icon, title), collapsed ? collapsedIcon : collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
108
+ }) : icon, title), collapsed ? _Icons["default"].collapsedIcon : _Icons["default"].collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
144
109
  src: icon
145
- }) : icon, title), !collapsed && children);
110
+ }) : icon, title), !collapsed && children));
146
111
  };
147
112
 
148
113
  var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
149
114
  var href = _ref5.href,
150
- children = _ref5.children,
151
115
  _ref5$newWindow = _ref5.newWindow,
152
116
  newWindow = _ref5$newWindow === void 0 ? false : _ref5$newWindow,
153
117
  _ref5$selected = _ref5.selected,
154
118
  selected = _ref5$selected === void 0 ? false : _ref5$selected,
155
119
  icon = _ref5.icon,
120
+ onClick = _ref5.onClick,
156
121
  _ref5$tabIndex = _ref5.tabIndex,
157
122
  tabIndex = _ref5$tabIndex === void 0 ? 0 : _ref5$tabIndex,
158
- onClick = _ref5.onClick,
123
+ children = _ref5.children,
159
124
  otherProps = (0, _objectWithoutProperties2["default"])(_ref5, _excluded);
125
+ var changeIsGroupSelected = (0, _react.useContext)(GroupContext);
160
126
  var setIsSidenavVisibleResponsive = (0, _SidenavContext.useResponsiveSidenavVisibility)();
161
127
 
162
128
  var handleClick = function handleClick($event) {
@@ -164,6 +130,11 @@ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
164
130
  setIsSidenavVisibleResponsive === null || setIsSidenavVisibleResponsive === void 0 ? void 0 : setIsSidenavVisibleResponsive(false);
165
131
  };
166
132
 
133
+ (0, _react.useEffect)(function () {
134
+ changeIsGroupSelected === null || changeIsGroupSelected === void 0 ? void 0 : changeIsGroupSelected(function (isGroupSelected) {
135
+ return !isGroupSelected ? selected : isGroupSelected;
136
+ });
137
+ }, [selected, changeIsGroupSelected]);
167
138
  return /*#__PURE__*/_react["default"].createElement(SidenavLink, (0, _extends2["default"])({
168
139
  selected: selected,
169
140
  href: href ? href : undefined,
@@ -171,20 +142,23 @@ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
171
142
  ref: ref,
172
143
  tabIndex: tabIndex,
173
144
  onClick: handleClick
174
- }, otherProps), /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(SidenavIcon, {
145
+ }, otherProps), /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
146
+ alignItems: "center",
147
+ gap: "0.5rem"
148
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
175
149
  src: icon
176
- }) : icon, children), newWindow && externalLinkIcon);
150
+ }) : icon, children), newWindow && _Icons["default"].externalLinkIcon);
177
151
  });
178
152
 
179
- var SidenavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n background-color: ", ";\n box-sizing: border-box;\n width: 280px;\n @media (max-width: ", "rem) {\n width: 100vw;\n }\n\n height: 100%;\n padding: 2rem 1rem;\n\n overflow-y: auto;\n overflow-x: hidden;\n ::-webkit-scrollbar {\n width: 2px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n"])), function (props) {
153
+ var SidenavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 280px;\n @media (max-width: ", "rem) {\n width: 100vw;\n }\n padding: 2rem 1rem;\n background-color: ", ";\n\n overflow-y: auto;\n overflow-x: hidden;\n ::-webkit-scrollbar {\n width: 2px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n"])), _variables.responsiveSizes.medium, function (props) {
180
154
  return props.theme.backgroundColor;
181
- }, _variables.responsiveSizes.medium, function (props) {
155
+ }, function (props) {
182
156
  return props.theme.scrollBarTrackColor;
183
157
  }, function (props) {
184
158
  return props.theme.scrollBarThumbColor;
185
159
  });
186
160
 
187
- var SidenavTitle = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 27px;\n display: flex;\n align-items: center;\n color: ", ";\n text-transform: ", ";\n letter-spacing: ", ";\n padding: 0.5rem 1.2rem;\n\n svg {\n margin-right: 0.5rem;\n }\n"])), function (props) {
161
+ var SidenavTitle = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n color: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n"])), function (props) {
188
162
  return props.theme.titleFontFamily;
189
163
  }, function (props) {
190
164
  return props.theme.titleFontStyle;
@@ -194,17 +168,17 @@ var SidenavTitle = _styledComponents["default"].div(_templateObject2 || (_templa
194
168
  return props.theme.titleFontSize;
195
169
  }, function (props) {
196
170
  return props.theme.titleFontColor;
197
- }, function (props) {
198
- return props.theme.titleFontTextTransform;
199
171
  }, function (props) {
200
172
  return props.theme.titleFontLetterSpacing;
173
+ }, function (props) {
174
+ return props.theme.titleFontTextTransform;
201
175
  });
202
176
 
203
- var Divider = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n height: 1px;\n background-color: #999999;\n"])));
177
+ var Divider = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n height: 1px;\n background-color: #999999;\n\n &:last-child {\n display: none;\n }\n"])));
204
178
 
205
- var SidenavGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n a {\n padding: 0.5rem 1.2rem 0.5rem 2.25rem;\n }\n"])));
179
+ var SidenavGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n a {\n padding: 0.5rem 1.2rem 0.5rem 2.25rem;\n }\n"])));
206
180
 
207
- var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n box-sizing: border-box;\n width: 100%;\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 18px;\n\n display: flex;\n align-items: center;\n margin: 0px;\n padding: 0.5rem 1.2rem;\n"])), function (props) {
181
+ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
208
182
  return props.theme.groupTitleFontFamily;
209
183
  }, function (props) {
210
184
  return props.theme.groupTitleFontStyle;
@@ -214,7 +188,7 @@ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_
214
188
  return props.theme.groupTitleFontSize;
215
189
  });
216
190
 
217
- var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n cursor: pointer;\n justify-content: space-between;\n box-sizing: border-box;\n width: 100%;\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n display: flex;\n align-items: center;\n margin: 0px;\n padding: 0.5rem 1.2rem;\n &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n ", "\n svg {\n width: 18px;\n height: auto;\n }\n"])), function (props) {
191
+ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n }\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
218
192
  return props.theme.groupTitleFontFamily;
219
193
  }, function (props) {
220
194
  return props.theme.groupTitleFontStyle;
@@ -223,24 +197,16 @@ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObjec
223
197
  }, function (props) {
224
198
  return props.theme.groupTitleFontSize;
225
199
  }, function (props) {
226
- return props.theme.linkFocusColor;
227
- }, function (props) {
228
- return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedHoverFontColor, "; background: ").concat(props.theme.groupTitleSelectedHoverBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background: ").concat(props.theme.groupTitleHoverBackgroundColor, ";");
200
+ return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedFontColor, "; background-color: ").concat(props.theme.groupTitleSelectedBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background-color: transparent;");
229
201
  }, function (props) {
230
- return props.theme.groupTitleActiveBackgroundColor;
202
+ return props.theme.linkFocusColor;
231
203
  }, function (props) {
232
- return props.theme.groupTitleFontColor;
204
+ return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedHoverFontColor, "; background-color: ").concat(props.theme.groupTitleSelectedHoverBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background-color: ").concat(props.theme.groupTitleHoverBackgroundColor, ";");
233
205
  }, function (props) {
234
- return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedFontColor, "; background: ").concat(props.theme.groupTitleSelectedBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background: transparent;");
206
+ return props.selectedGroup ? "#333" : props.theme.groupTitleActiveBackgroundColor;
235
207
  });
236
208
 
237
- var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n letter-spacing: ", ";\n\n text-transform: ", ";\n text-decoration: ", ";\n\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n ", "\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n box-shadow: 0 0 0 2px transparent;\n\n padding: 0.5rem 1.2rem;\n\n cursor: pointer;\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n\n &:hover {\n ", "\n }\n\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n\n &:active {\n color: #ffffff;\n background: #4d4d4d;\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n"])), function (props) {
238
- return props.theme.linkFontLetterSpacing;
239
- }, function (props) {
240
- return props.theme.linkFontTextTransform;
241
- }, function (props) {
242
- return props.theme.linkTextDecoration;
243
- }, function (props) {
209
+ var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
244
210
  return props.theme.linkFontFamily;
245
211
  }, function (props) {
246
212
  return props.theme.linkFontStyle;
@@ -249,17 +215,21 @@ var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateO
249
215
  }, function (props) {
250
216
  return props.theme.linkFontSize;
251
217
  }, function (props) {
252
- return props.selected ? "color: ".concat(props.theme.linkSelectedFontColor, "; background: ").concat(props.theme.linkSelectedBackgroundColor, ";") : "color: ".concat(props.theme.linkFontColor, "; background: transparent;");
218
+ return props.theme.linkFontLetterSpacing;
219
+ }, function (props) {
220
+ return props.theme.linkFontTextTransform;
221
+ }, function (props) {
222
+ return props.theme.linkTextDecoration;
253
223
  }, function (props) {
254
- return props.selected ? "color: ".concat(props.theme.linkSelectedHoverFontColor, "; background: ").concat(props.theme.linkSelectedHoverBackgroundColor, ";") : "color: ".concat(props.theme.linkFontColor, "; background: ").concat(props.theme.linkHoverBackgroundColor, ";");
224
+ return props.selected ? "color: ".concat(props.theme.linkSelectedFontColor, "; background-color: ").concat(props.theme.linkSelectedBackgroundColor, ";") : "color: ".concat(props.theme.linkFontColor, "; background-color: transparent;");
255
225
  }, function (props) {
256
226
  return props.theme.linkFocusColor;
227
+ }, function (props) {
228
+ return props.selected ? "color: ".concat(props.theme.linkSelectedHoverFontColor, "; background-color: ").concat(props.theme.linkSelectedHoverBackgroundColor, ";") : "color: ".concat(props.theme.linkFontColor, "; background-color: ").concat(props.theme.linkHoverBackgroundColor, ";");
229
+ }, function (props) {
230
+ return props.selected ? "#333" : "#4d4d4d";
257
231
  });
258
232
 
259
- var SidenavContent = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n\n svg {\n width: 16px;\n margin-right: 0.5rem;\n }\n"])));
260
-
261
- var SidenavIcon = _styledComponents["default"].img(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n width: 16px;\n margin-right: 0.5rem;\n"])));
262
-
263
233
  DxcSidenav.Section = Section;
264
234
  DxcSidenav.Group = Group;
265
235
  DxcSidenav.Link = Link;
@@ -1,8 +1,11 @@
1
1
  import React from "react";
2
2
  import DxcSidenav from "./Sidenav";
3
+ import DxcSelect from "../select/Select";
4
+ import DxcInset from "../inset/Inset";
3
5
  import Title from "../../.storybook/components/Title";
4
6
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
7
  import { userEvent, within } from "@storybook/testing-library";
8
+ import { HalstackProvider } from "../HalstackContext";
6
9
 
7
10
  export default {
8
11
  title: "Sidenav",
@@ -10,9 +13,26 @@ export default {
10
13
  };
11
14
 
12
15
  const iconSVG = (
13
- <svg viewBox="0 0 24 24" fill="currentColor">
14
- <path d="M0 0h24v24H0z" fill="none" />
15
- <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
16
+ <svg
17
+ version="1.1"
18
+ id="Capa_1"
19
+ x="0px"
20
+ y="0px"
21
+ width="438.536px"
22
+ height="438.536px"
23
+ viewBox="0 0 438.536 438.536"
24
+ fill="currentColor"
25
+ >
26
+ <g>
27
+ <path
28
+ 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
29
+ 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
30
+ h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
31
+ C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
32
+ c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
33
+ c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
34
+ />
35
+ </g>
16
36
  </svg>
17
37
  );
18
38
 
@@ -20,11 +40,17 @@ const TitleComponent = () => {
20
40
  return <DxcSidenav.Title>Dxc technology</DxcSidenav.Title>;
21
41
  };
22
42
 
43
+ const opinionatedTheme = {
44
+ sidenav: {
45
+ baseColor: "#f2f2f2",
46
+ },
47
+ };
48
+
23
49
  export const Chromatic = () => (
24
50
  <>
25
51
  <ExampleContainer>
26
52
  <Title title="Default sidenav" theme="light" level={4} />
27
- <DxcSidenav title={<TitleComponent />}>
53
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
28
54
  <DxcSidenav.Section>
29
55
  <p>
30
56
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
@@ -41,12 +67,18 @@ export const Chromatic = () => (
41
67
  </DxcSidenav.Group>
42
68
  </DxcSidenav.Section>
43
69
  <DxcSidenav.Section>
44
- <DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
70
+ <DxcSidenav.Group
71
+ collapsable={true}
72
+ title="Section Group"
73
+ icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png"
74
+ >
45
75
  <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
46
76
  <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
47
77
  </DxcSidenav.Group>
48
- <DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
49
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
78
+ <DxcSidenav.Link icon="https://upload.wikimedia.org/wikipedia/commons/7/73/Flat_tick_icon.svg" newWindow>
79
+ Single Link
80
+ </DxcSidenav.Link>
81
+ <DxcSidenav.Link newWindow>Single Link</DxcSidenav.Link>
50
82
  <DxcSidenav.Group collapsable={false} title="Section Group">
51
83
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
52
84
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -55,53 +87,78 @@ export const Chromatic = () => (
55
87
  </DxcSidenav.Section>
56
88
  </DxcSidenav>
57
89
  </ExampleContainer>
90
+ <ExampleContainer pseudoState="pseudo-focus">
91
+ <Title title="Focused options sidenav" theme="light" level={4} />
92
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
93
+ <DxcSidenav.Section>
94
+ <p>
95
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
96
+ vitae lacinia libero.
97
+ </p>
98
+ </DxcSidenav.Section>
99
+ <DxcSidenav.Section>
100
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
101
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
102
+ <DxcSidenav.Link icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png">Group Link</DxcSidenav.Link>
103
+ </DxcSidenav.Group>
104
+ </DxcSidenav.Section>
105
+ <DxcSidenav.Section>
106
+ <DxcSidenav.Group collapsable={true} title="Collapsable Group">
107
+ <DxcSidenav.Link selected icon={iconSVG}>
108
+ Group Link
109
+ </DxcSidenav.Link>
110
+ </DxcSidenav.Group>
111
+ <DxcSidenav.Group collapsable={false} title="Section Group">
112
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
113
+ </DxcSidenav.Group>
114
+ </DxcSidenav.Section>
115
+ </DxcSidenav>
116
+ </ExampleContainer>
117
+ <Title title="Opinionated theme" theme="light" level={2} />
118
+ <ExampleContainer>
119
+ <HalstackProvider theme={opinionatedTheme}>
120
+ <DxcSidenav title={<TitleComponent />}>
121
+ <DxcSidenav.Section>
122
+ <p>
123
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse
124
+ vitae lacinia libero.
125
+ </p>
126
+ </DxcSidenav.Section>
127
+ <DxcSidenav.Section>
128
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
129
+ <DxcSidenav.Group collapsable={false} title="Single Group" icon={iconSVG}>
130
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
131
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
132
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
133
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
134
+ </DxcSidenav.Group>
135
+ </DxcSidenav.Section>
136
+ <DxcSidenav.Section>
137
+ <DxcSidenav.Group collapsable={true} title="Section Group" icon={iconSVG}>
138
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
139
+ <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
140
+ </DxcSidenav.Group>
141
+ <DxcSidenav.Link icon={iconSVG}>Single Link</DxcSidenav.Link>
142
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
143
+ <DxcSidenav.Group collapsable={false} title="Section Group">
144
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
145
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
146
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
147
+ </DxcSidenav.Group>
148
+ </DxcSidenav.Section>
149
+ </DxcSidenav>
150
+ </HalstackProvider>
151
+ </ExampleContainer>
58
152
  </>
59
153
  );
60
154
 
61
- export const FocusedSidenav = () => (
62
- <ExampleContainer pseudoState="pseudo-focus">
63
- <Title title="Default sidenav" theme="light" level={4} />
64
- <DxcSidenav title={<TitleComponent />}>
65
- <DxcSidenav.Section>
66
- <p>
67
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ullamcorper consectetur mollis. Suspendisse vitae
68
- lacinia libero.
69
- </p>
70
- </DxcSidenav.Section>
71
- <DxcSidenav.Section>
72
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
73
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
74
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
75
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
76
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
77
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
78
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
79
- </DxcSidenav.Group>
80
- </DxcSidenav.Section>
81
- <DxcSidenav.Section>
82
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
83
- <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
84
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
85
- </DxcSidenav.Group>
86
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
87
- <DxcSidenav.Link>Single Link</DxcSidenav.Link>
88
- <DxcSidenav.Group collapsable={false} title="Section Group">
89
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
90
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
91
- <DxcSidenav.Link>Group Link</DxcSidenav.Link>
92
- </DxcSidenav.Group>
93
- </DxcSidenav.Section>
94
- </DxcSidenav>
95
- </ExampleContainer>
96
- );
97
-
98
- const CollapsedGroup = () => (
155
+ const CollapsedGroupSidenav = () => (
99
156
  <>
100
157
  <ExampleContainer>
101
- <Title title="Default sidenav" theme="light" level={4} />
102
- <DxcSidenav title={<TitleComponent />}>
158
+ <Title title="Collapsed group with a selected link" theme="light" level={4} />
159
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
103
160
  <DxcSidenav.Section>
104
- <DxcSidenav.Group collapsable={true} title="Collapsable Group" icon={iconSVG}>
161
+ <DxcSidenav.Group collapsable={true} title="Collapsed Group" icon={iconSVG}>
105
162
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
106
163
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
107
164
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -109,11 +166,11 @@ const CollapsedGroup = () => (
109
166
  </DxcSidenav.Group>
110
167
  </DxcSidenav.Section>
111
168
  <DxcSidenav.Section>
112
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
113
- <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
169
+ <DxcSidenav.Group collapsable={true} title="Collapsed Group">
114
170
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
171
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
115
172
  </DxcSidenav.Group>
116
- <DxcSidenav.Group collapsable={false} title="Section Group">
173
+ <DxcSidenav.Group collapsable={true} title="Section Group">
117
174
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
118
175
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
119
176
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -124,14 +181,14 @@ const CollapsedGroup = () => (
124
181
  </>
125
182
  );
126
183
 
127
- const HoverSidenav = () => (
184
+ const HoveredGroupSidenav = () => (
128
185
  <ExampleContainer pseudoState="pseudo-hover">
129
- <Title title="Default sidenav" theme="light" level={4} />
130
- <DxcSidenav title={<TitleComponent />}>
186
+ <Title title="Hover state for groups (selected and not)" theme="light" level={4} />
187
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
131
188
  <DxcSidenav.Section>
132
189
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
133
190
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
134
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
191
+ <DxcSidenav.Group collapsable={true} title="Collapsed Group">
135
192
  <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
136
193
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
137
194
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
@@ -145,36 +202,81 @@ const HoverSidenav = () => (
145
202
  </DxcSidenav.Group>
146
203
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
147
204
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
148
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
205
+ <DxcSidenav.Group collapsable={true} title="Collapsed Group">
149
206
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
150
207
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
151
208
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
152
209
  </DxcSidenav.Group>
210
+ <DxcSidenav.Group collapsable={true} title="Collapsed Group">
211
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
212
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
213
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
214
+ </DxcSidenav.Group>
215
+ </DxcSidenav.Section>
216
+ </DxcSidenav>
217
+ </ExampleContainer>
218
+ );
153
219
 
154
- <DxcSidenav.Group collapsable={true} title="Collapsable Group">
220
+ const ActiveGroupSidenav = () => (
221
+ <ExampleContainer pseudoState="pseudo-active">
222
+ <Title title="Active state for groups (selected and not)" theme="light" level={4} />
223
+ <DxcSidenav title={<DxcSidenav.Title>Dxc technology</DxcSidenav.Title>}>
224
+ <DxcSidenav.Section>
225
+ <DxcInset space="1rem">
226
+ <DxcSelect
227
+ defaultValue="1"
228
+ options={[
229
+ { label: "v1.0.0", value: "1" },
230
+ { label: "v2.0.0", value: "2" },
231
+ { label: "v3.0.0", value: "3" },
232
+ { label: "v4.0.0", value: "4" },
233
+ ]}
234
+ size="fillParent"
235
+ />
236
+ </DxcInset>
237
+ </DxcSidenav.Section>
238
+ <DxcSidenav.Section>
239
+ <DxcSidenav.Group collapsable={true} title="Collapsed Group">
240
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
155
241
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
156
242
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
157
243
  <DxcSidenav.Link>Group Link</DxcSidenav.Link>
158
244
  </DxcSidenav.Group>
159
245
  </DxcSidenav.Section>
246
+ <DxcSidenav.Section>
247
+ <DxcSidenav.Group collapsable={true} title="Not Collapsed Group">
248
+ <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
249
+ <DxcSidenav.Link>Group Link</DxcSidenav.Link>
250
+ </DxcSidenav.Group>
251
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
252
+ <DxcSidenav.Link>Single Link</DxcSidenav.Link>
253
+ </DxcSidenav.Section>
160
254
  </DxcSidenav>
161
255
  </ExampleContainer>
162
256
  );
163
257
 
164
- export const CollapseGroup = CollapsedGroup.bind({});
165
- CollapseGroup.play = async ({ canvasElement }) => {
258
+ export const CollapsableGroup = CollapsedGroupSidenav.bind({});
259
+ CollapsableGroup.play = async ({ canvasElement }) => {
166
260
  const canvas = within(canvasElement);
167
- const collapsableGroups = canvas.getAllByText("Collapsable Group");
261
+ const collapsableGroups = canvas.getAllByText("Collapsed Group");
168
262
  collapsableGroups.forEach((group) => {
169
263
  userEvent.click(group);
170
264
  });
171
265
  };
172
266
 
173
- export const CollapseHoverGroup = HoverSidenav.bind({});
174
- CollapseHoverGroup.play = async ({ canvasElement }) => {
267
+ export const CollapsedHoverGroup = HoveredGroupSidenav.bind({});
268
+ CollapsedHoverGroup.play = async ({ canvasElement }) => {
175
269
  const canvas = within(canvasElement);
176
- const collapsableGroups = canvas.getAllByText("Collapsable Group");
270
+ const collapsableGroups = canvas.getAllByText("Collapsed Group");
177
271
  collapsableGroups.forEach((group) => {
178
272
  userEvent.click(group);
179
273
  });
274
+ await new Promise((resolve) => setTimeout(resolve, 1000));
180
275
  };
276
+
277
+ export const CollapsedActiveGroup = ActiveGroupSidenav.bind({});
278
+ CollapsedActiveGroup.play = async ({ canvasElement }) => {
279
+ const canvas = within(canvasElement);
280
+ const collapsableGroups = canvas.getAllByText("Collapsed Group");
281
+ userEvent.click(collapsableGroups[0]);
282
+ };