@dxc-technology/halstack-react 0.0.0-0271b6e → 0.0.0-0276e5a

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 (276) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1336 -0
  4. package/HalstackContext.js +335 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +108 -134
  7. package/accordion/Accordion.stories.tsx +108 -118
  8. package/accordion/Accordion.test.js +10 -11
  9. package/accordion/types.d.ts +1 -12
  10. package/accordion-group/AccordionGroup.d.ts +5 -4
  11. package/accordion-group/AccordionGroup.js +34 -76
  12. package/accordion-group/AccordionGroup.stories.tsx +94 -67
  13. package/accordion-group/AccordionGroup.test.js +33 -50
  14. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  15. package/accordion-group/AccordionGroupAccordion.js +43 -0
  16. package/accordion-group/types.d.ts +11 -12
  17. package/alert/Alert.js +9 -10
  18. package/alert/Alert.stories.tsx +28 -0
  19. package/alert/Alert.test.js +1 -1
  20. package/badge/Badge.d.ts +1 -1
  21. package/badge/Badge.js +5 -3
  22. package/badge/types.d.ts +1 -0
  23. package/bleed/Bleed.js +1 -34
  24. package/bleed/Bleed.stories.tsx +95 -95
  25. package/bleed/types.d.ts +1 -1
  26. package/box/Box.d.ts +1 -1
  27. package/box/Box.js +19 -48
  28. package/box/Box.stories.tsx +38 -51
  29. package/box/Box.test.js +1 -1
  30. package/box/types.d.ts +0 -11
  31. package/bulleted-list/BulletedList.d.ts +7 -0
  32. package/bulleted-list/BulletedList.js +125 -0
  33. package/bulleted-list/BulletedList.stories.tsx +206 -0
  34. package/bulleted-list/types.d.ts +38 -0
  35. package/button/Button.js +52 -70
  36. package/button/Button.stories.tsx +159 -8
  37. package/button/Button.test.js +1 -1
  38. package/button/types.d.ts +5 -5
  39. package/card/Card.d.ts +1 -1
  40. package/card/Card.js +37 -58
  41. package/card/Card.stories.tsx +12 -42
  42. package/card/Card.test.js +1 -1
  43. package/card/types.d.ts +1 -6
  44. package/checkbox/Checkbox.d.ts +2 -2
  45. package/checkbox/Checkbox.js +104 -101
  46. package/checkbox/Checkbox.stories.tsx +198 -130
  47. package/checkbox/Checkbox.test.js +94 -17
  48. package/checkbox/types.d.ts +7 -3
  49. package/chip/Chip.js +28 -49
  50. package/chip/Chip.stories.tsx +121 -26
  51. package/chip/Chip.test.js +3 -5
  52. package/chip/types.d.ts +1 -1
  53. package/common/OpenSans.css +68 -80
  54. package/common/coreTokens.d.ts +146 -0
  55. package/common/coreTokens.js +167 -0
  56. package/common/utils.d.ts +1 -0
  57. package/common/utils.js +4 -4
  58. package/common/variables.d.ts +1482 -0
  59. package/common/variables.js +1100 -1112
  60. package/date-input/Calendar.d.ts +4 -0
  61. package/date-input/Calendar.js +258 -0
  62. package/date-input/DateInput.js +155 -240
  63. package/date-input/DateInput.stories.tsx +199 -33
  64. package/date-input/DateInput.test.js +502 -159
  65. package/date-input/DatePicker.d.ts +4 -0
  66. package/date-input/DatePicker.js +146 -0
  67. package/date-input/Icons.d.ts +6 -0
  68. package/date-input/Icons.js +75 -0
  69. package/date-input/YearPicker.d.ts +4 -0
  70. package/date-input/YearPicker.js +126 -0
  71. package/date-input/types.d.ts +63 -9
  72. package/dialog/Dialog.d.ts +1 -1
  73. package/dialog/Dialog.js +68 -103
  74. package/dialog/Dialog.stories.tsx +154 -171
  75. package/dialog/Dialog.test.js +334 -5
  76. package/dialog/types.d.ts +0 -12
  77. package/dropdown/Dropdown.d.ts +1 -1
  78. package/dropdown/Dropdown.js +246 -253
  79. package/dropdown/Dropdown.stories.tsx +245 -56
  80. package/dropdown/Dropdown.test.js +507 -110
  81. package/dropdown/DropdownMenu.d.ts +4 -0
  82. package/dropdown/DropdownMenu.js +74 -0
  83. package/dropdown/DropdownMenuItem.d.ts +4 -0
  84. package/dropdown/DropdownMenuItem.js +79 -0
  85. package/dropdown/types.d.ts +23 -3
  86. package/file-input/FileInput.d.ts +2 -2
  87. package/file-input/FileInput.js +180 -223
  88. package/file-input/FileInput.stories.tsx +122 -11
  89. package/file-input/FileInput.test.js +14 -14
  90. package/file-input/FileItem.d.ts +4 -14
  91. package/file-input/FileItem.js +44 -66
  92. package/file-input/types.d.ts +18 -1
  93. package/flex/Flex.d.ts +4 -0
  94. package/flex/Flex.js +71 -0
  95. package/flex/Flex.stories.tsx +112 -0
  96. package/flex/types.d.ts +97 -0
  97. package/footer/Footer.d.ts +1 -1
  98. package/footer/Footer.js +49 -142
  99. package/footer/Footer.stories.tsx +37 -16
  100. package/footer/Footer.test.js +16 -26
  101. package/footer/Icons.js +1 -1
  102. package/footer/types.d.ts +11 -12
  103. package/grid/Grid.d.ts +7 -0
  104. package/grid/Grid.js +91 -0
  105. package/grid/Grid.stories.tsx +219 -0
  106. package/grid/types.d.ts +115 -0
  107. package/header/Header.d.ts +4 -3
  108. package/header/Header.js +102 -150
  109. package/header/Header.stories.tsx +152 -63
  110. package/header/Header.test.js +20 -4
  111. package/header/Icons.js +2 -2
  112. package/header/types.d.ts +0 -13
  113. package/heading/Heading.js +1 -1
  114. package/heading/Heading.test.js +1 -1
  115. package/inset/Inset.js +1 -34
  116. package/inset/Inset.stories.tsx +37 -36
  117. package/inset/types.d.ts +25 -1
  118. package/layout/ApplicationLayout.d.ts +16 -6
  119. package/layout/ApplicationLayout.js +78 -135
  120. package/layout/ApplicationLayout.stories.tsx +84 -93
  121. package/layout/Icons.d.ts +5 -0
  122. package/layout/Icons.js +13 -2
  123. package/layout/SidenavContext.d.ts +5 -0
  124. package/layout/SidenavContext.js +19 -0
  125. package/layout/types.d.ts +19 -35
  126. package/link/Link.d.ts +3 -2
  127. package/link/Link.js +60 -77
  128. package/link/Link.stories.tsx +155 -53
  129. package/link/Link.test.js +9 -19
  130. package/link/types.d.ts +5 -21
  131. package/main.d.ts +8 -10
  132. package/main.js +47 -57
  133. package/nav-tabs/NavTabs.d.ts +8 -0
  134. package/nav-tabs/NavTabs.js +122 -0
  135. package/nav-tabs/NavTabs.stories.tsx +274 -0
  136. package/nav-tabs/NavTabs.test.js +82 -0
  137. package/nav-tabs/Tab.d.ts +4 -0
  138. package/nav-tabs/Tab.js +146 -0
  139. package/nav-tabs/types.d.ts +52 -0
  140. package/number-input/NumberInput.test.js +46 -12
  141. package/number-input/types.d.ts +13 -10
  142. package/package.json +19 -23
  143. package/paginator/Icons.d.ts +5 -0
  144. package/paginator/Icons.js +16 -28
  145. package/paginator/Paginator.js +20 -49
  146. package/paginator/Paginator.stories.tsx +24 -0
  147. package/paginator/Paginator.test.js +91 -39
  148. package/paragraph/Paragraph.d.ts +5 -0
  149. package/paragraph/Paragraph.js +38 -0
  150. package/paragraph/Paragraph.stories.tsx +44 -0
  151. package/password-input/PasswordInput.js +7 -4
  152. package/password-input/PasswordInput.test.js +17 -19
  153. package/password-input/types.d.ts +14 -11
  154. package/progress-bar/ProgressBar.js +61 -55
  155. package/progress-bar/ProgressBar.stories.jsx +47 -12
  156. package/progress-bar/ProgressBar.test.js +68 -23
  157. package/quick-nav/QuickNav.js +77 -26
  158. package/quick-nav/QuickNav.stories.tsx +145 -26
  159. package/quick-nav/types.d.ts +4 -4
  160. package/radio-group/Radio.d.ts +1 -1
  161. package/radio-group/Radio.js +46 -31
  162. package/radio-group/RadioGroup.js +37 -36
  163. package/radio-group/RadioGroup.stories.tsx +132 -18
  164. package/radio-group/RadioGroup.test.js +124 -97
  165. package/radio-group/types.d.ts +2 -2
  166. package/resultsetTable/Icons.d.ts +7 -0
  167. package/resultsetTable/Icons.js +51 -0
  168. package/resultsetTable/ResultsetTable.js +49 -108
  169. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  170. package/resultsetTable/ResultsetTable.test.js +61 -42
  171. package/resultsetTable/types.d.ts +1 -1
  172. package/select/Listbox.d.ts +4 -0
  173. package/select/Listbox.js +169 -0
  174. package/select/Option.js +11 -24
  175. package/select/Select.js +150 -224
  176. package/select/Select.stories.tsx +522 -133
  177. package/select/Select.test.js +551 -339
  178. package/select/types.d.ts +32 -13
  179. package/sidenav/Icons.d.ts +7 -0
  180. package/sidenav/Icons.js +51 -0
  181. package/sidenav/Sidenav.d.ts +6 -5
  182. package/sidenav/Sidenav.js +146 -44
  183. package/sidenav/Sidenav.stories.tsx +251 -151
  184. package/sidenav/Sidenav.test.js +25 -37
  185. package/sidenav/types.d.ts +52 -26
  186. package/slider/Slider.d.ts +2 -2
  187. package/slider/Slider.js +121 -97
  188. package/slider/Slider.stories.tsx +64 -1
  189. package/slider/Slider.test.js +122 -22
  190. package/slider/types.d.ts +4 -0
  191. package/spinner/Spinner.js +18 -24
  192. package/spinner/Spinner.stories.jsx +53 -27
  193. package/spinner/Spinner.test.js +1 -1
  194. package/switch/Switch.d.ts +2 -2
  195. package/switch/Switch.js +138 -68
  196. package/switch/Switch.stories.tsx +49 -38
  197. package/switch/Switch.test.js +145 -18
  198. package/switch/types.d.ts +6 -2
  199. package/table/Table.js +3 -3
  200. package/table/Table.stories.jsx +80 -1
  201. package/table/Table.test.js +2 -2
  202. package/tabs/Tab.d.ts +4 -0
  203. package/tabs/Tab.js +132 -0
  204. package/tabs/Tabs.d.ts +1 -1
  205. package/tabs/Tabs.js +360 -112
  206. package/tabs/Tabs.stories.tsx +119 -13
  207. package/tabs/Tabs.test.js +244 -17
  208. package/tabs/types.d.ts +17 -3
  209. package/tag/Tag.js +12 -17
  210. package/tag/Tag.stories.tsx +14 -1
  211. package/tag/Tag.test.js +1 -1
  212. package/tag/types.d.ts +1 -1
  213. package/text-input/Icons.d.ts +8 -0
  214. package/text-input/Icons.js +60 -0
  215. package/text-input/Suggestion.d.ts +4 -0
  216. package/text-input/Suggestion.js +84 -0
  217. package/text-input/Suggestions.d.ts +4 -0
  218. package/text-input/Suggestions.js +134 -0
  219. package/text-input/TextInput.js +221 -346
  220. package/text-input/TextInput.stories.tsx +280 -185
  221. package/text-input/TextInput.test.js +756 -758
  222. package/text-input/types.d.ts +46 -12
  223. package/textarea/Textarea.js +13 -23
  224. package/textarea/Textarea.stories.jsx +60 -1
  225. package/textarea/Textarea.test.js +2 -4
  226. package/textarea/types.d.ts +10 -7
  227. package/toggle-group/ToggleGroup.d.ts +2 -2
  228. package/toggle-group/ToggleGroup.js +12 -8
  229. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  230. package/toggle-group/ToggleGroup.test.js +36 -5
  231. package/toggle-group/types.d.ts +10 -2
  232. package/typography/Typography.d.ts +4 -0
  233. package/typography/Typography.js +32 -0
  234. package/typography/Typography.stories.tsx +198 -0
  235. package/typography/types.d.ts +18 -0
  236. package/typography/types.js +5 -0
  237. package/useTheme.d.ts +1234 -1
  238. package/useTheme.js +3 -3
  239. package/useTranslatedLabels.d.ts +85 -0
  240. package/useTranslatedLabels.js +20 -0
  241. package/utils/BaseTypography.d.ts +21 -0
  242. package/utils/BaseTypography.js +108 -0
  243. package/utils/FocusLock.d.ts +13 -0
  244. package/utils/FocusLock.js +138 -0
  245. package/wizard/Wizard.js +44 -45
  246. package/wizard/Wizard.stories.tsx +40 -1
  247. package/wizard/Wizard.test.js +1 -1
  248. package/wizard/types.d.ts +3 -3
  249. package/ThemeContext.d.ts +0 -10
  250. package/ThemeContext.js +0 -243
  251. package/card/ice-cream.jpg +0 -0
  252. package/common/RequiredComponent.js +0 -32
  253. package/list/List.d.ts +0 -4
  254. package/list/List.js +0 -47
  255. package/list/List.stories.tsx +0 -95
  256. package/list/types.d.ts +0 -7
  257. package/radio/Radio.d.ts +0 -4
  258. package/radio/Radio.js +0 -174
  259. package/radio/Radio.stories.tsx +0 -192
  260. package/radio/Radio.test.js +0 -71
  261. package/radio/types.d.ts +0 -54
  262. package/row/Row.d.ts +0 -3
  263. package/row/Row.js +0 -127
  264. package/row/Row.stories.tsx +0 -237
  265. package/row/types.d.ts +0 -28
  266. package/stack/Stack.d.ts +0 -3
  267. package/stack/Stack.js +0 -97
  268. package/stack/Stack.stories.tsx +0 -164
  269. package/stack/types.d.ts +0 -24
  270. package/text/Text.d.ts +0 -7
  271. package/text/Text.js +0 -30
  272. package/text/Text.stories.tsx +0 -19
  273. /package/{list → bulleted-list}/types.js +0 -0
  274. /package/{radio → flex}/types.js +0 -0
  275. /package/{row → grid}/types.js +0 -0
  276. /package/{stack → nav-tabs}/types.js +0 -0
package/select/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
3
  declare type Margin = {
4
4
  top?: Space;
@@ -6,7 +6,7 @@ declare type Margin = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement>;
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
10
  declare type OptionGroup = {
11
11
  /**
12
12
  * Label of the group to be shown in the select's listbox.
@@ -79,9 +79,12 @@ declare type CommonProps = {
79
79
  */
80
80
  searchable?: boolean;
81
81
  /**
82
- * If it is defined, the component will change its appearance, showing
83
- * the error below the select component. If it is not defined, the error
84
- * messages will be managed internally, but never displayed on its own.
82
+ * If it is a defined value and also a truthy string, the component will
83
+ * change its appearance, showing the error below the select component.
84
+ * If the defined value is an empty string, it will reserve a space below
85
+ * the component for a future error, but it would not change its look. In
86
+ * case of being undefined or null, both the appearance and the space for
87
+ * the error message would not be modified.
85
88
  */
86
89
  error?: string;
87
90
  /**
@@ -117,21 +120,21 @@ declare type SingleSelect = CommonProps & {
117
120
  /**
118
121
  * This function will be called when the user selects an option.
119
122
  * An object including the current value and the error (if the value entered is not valid)
120
- * will be passed to this function. If there is no error, error will be null.
123
+ * will be passed to this function. If there is no error, error will not be defined.
121
124
  */
122
125
  onChange?: (val: {
123
126
  value: string;
124
- error: string;
127
+ error?: string;
125
128
  }) => void;
126
129
  /**
127
130
  * This function will be called when the select loses the focus. An
128
131
  * object including the value and the error (if the value
129
132
  * selected is not valid) will be passed to this function. If there is no error,
130
- * error will be null.
133
+ * error will not be defined.
131
134
  */
132
135
  onBlur?: (val: {
133
136
  value: string;
134
- error: string;
137
+ error?: string;
135
138
  }) => void;
136
139
  };
137
140
  declare type MultipleSelect = CommonProps & {
@@ -157,7 +160,7 @@ declare type MultipleSelect = CommonProps & {
157
160
  */
158
161
  onChange?: (val: {
159
162
  value: string[];
160
- error: string;
163
+ error?: string;
161
164
  }) => void;
162
165
  /**
163
166
  * This function will be called when the select loses the focus. An
@@ -167,7 +170,7 @@ declare type MultipleSelect = CommonProps & {
167
170
  */
168
171
  onBlur?: (val: {
169
172
  value: string[];
170
- error: string;
173
+ error?: string;
171
174
  }) => void;
172
175
  };
173
176
  declare type Props = SingleSelect | MultipleSelect;
@@ -180,12 +183,28 @@ export declare type OptionProps = {
180
183
  onClick: (option: Option) => void;
181
184
  multiple: boolean;
182
185
  visualFocused: boolean;
183
- isGroupedOption: boolean;
186
+ isGroupedOption?: boolean;
184
187
  isLastOption: boolean;
185
188
  isSelected: boolean;
186
189
  };
187
190
  /**
188
- * Reference to the component.
191
+ * Listbox from the select component.
192
+ */
193
+ export declare type ListboxProps = {
194
+ id: string;
195
+ currentValue: string | string[];
196
+ options: Option[] | OptionGroup[];
197
+ visualFocusIndex: number;
198
+ lastOptionIndex: number;
199
+ multiple: boolean;
200
+ optional: boolean;
201
+ optionalItem: Option;
202
+ searchable: boolean;
203
+ handleOptionOnClick: (option: Option) => void;
204
+ styles: React.CSSProperties;
205
+ };
206
+ /**
207
+ * Reference to the select component.
189
208
  */
190
209
  export declare type RefType = HTMLDivElement;
191
210
  export default Props;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ declare const icons: {
3
+ collapsedIcon: JSX.Element;
4
+ collapsableIcon: JSX.Element;
5
+ externalLinkIcon: JSX.Element;
6
+ };
7
+ export default icons;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var icons = {
13
+ collapsedIcon: /*#__PURE__*/_react["default"].createElement("svg", {
14
+ xmlns: "http://www.w3.org/2000/svg",
15
+ height: "24px",
16
+ viewBox: "0 0 24 24",
17
+ width: "24px",
18
+ fill: "currentColor"
19
+ }, /*#__PURE__*/_react["default"].createElement("path", {
20
+ d: "M0 0h24v24H0z",
21
+ fill: "none"
22
+ }), /*#__PURE__*/_react["default"].createElement("path", {
23
+ d: "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
24
+ })),
25
+ collapsableIcon: /*#__PURE__*/_react["default"].createElement("svg", {
26
+ xmlns: "http://www.w3.org/2000/svg",
27
+ height: "24px",
28
+ viewBox: "0 0 24 24",
29
+ width: "24px",
30
+ fill: "currentColor"
31
+ }, /*#__PURE__*/_react["default"].createElement("path", {
32
+ d: "M0 0h24v24H0z",
33
+ fill: "none"
34
+ }), /*#__PURE__*/_react["default"].createElement("path", {
35
+ d: "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
36
+ })),
37
+ externalLinkIcon: /*#__PURE__*/_react["default"].createElement("svg", {
38
+ xmlns: "http://www.w3.org/2000/svg",
39
+ height: "24",
40
+ viewBox: "0 0 24 24",
41
+ width: "24",
42
+ fill: "currentColor"
43
+ }, /*#__PURE__*/_react["default"].createElement("path", {
44
+ d: "M0 0h24v24H0z",
45
+ fill: "none"
46
+ }), /*#__PURE__*/_react["default"].createElement("path", {
47
+ 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"
48
+ }))
49
+ };
50
+ var _default = icons;
51
+ exports["default"] = _default;
@@ -1,9 +1,10 @@
1
- /// <reference types="react" />
2
- import SidenavPropsType, { SidenavTitlePropsType, SidenavSubtitlePropsType, SidenavLinkPropsType } from "./types.js";
1
+ import React from "react";
2
+ import SidenavPropsType, { SidenavGroupPropsType, SidenavLinkPropsType, SidenavSectionPropsType, SidenavTitlePropsType } from "./types.js";
3
3
  declare const DxcSidenav: {
4
- ({ padding, children }: SidenavPropsType): JSX.Element;
4
+ ({ title, children }: SidenavPropsType): JSX.Element;
5
+ Section: ({ children }: SidenavSectionPropsType) => JSX.Element;
6
+ Group: ({ title, collapsable, icon, children }: SidenavGroupPropsType) => JSX.Element;
7
+ Link: React.ForwardRefExoticComponent<SidenavLinkPropsType & React.RefAttributes<HTMLAnchorElement>>;
5
8
  Title: ({ children }: SidenavTitlePropsType) => JSX.Element;
6
- Subtitle: ({ children }: SidenavSubtitlePropsType) => JSX.Element;
7
- Link: ({ tabIndex, href, onClick, children }: SidenavLinkPropsType) => JSX.Element;
8
9
  };
9
10
  export default DxcSidenav;
@@ -11,78 +11,161 @@ exports["default"] = void 0;
11
11
 
12
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
13
 
14
- var _react = _interopRequireDefault(require("react"));
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
+
16
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
+
18
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
15
21
 
16
22
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
23
 
18
- var _variables = require("../common/variables.js");
24
+ var _variables = require("../common/variables");
25
+
26
+ var _SidenavContext = require("../layout/SidenavContext");
19
27
 
20
28
  var _useTheme = _interopRequireDefault(require("../useTheme"));
21
29
 
22
30
  var _BackgroundColorContext = require("../BackgroundColorContext");
23
31
 
24
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
32
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
33
+
34
+ var _Bleed = _interopRequireDefault(require("../bleed/Bleed"));
35
+
36
+ var _Icons = _interopRequireDefault(require("./Icons"));
37
+
38
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
39
+
40
+ var _excluded = ["href", "newWindow", "selected", "icon", "onClick", "tabIndex", "children"];
25
41
 
26
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); }
27
43
 
28
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; }
29
45
 
30
46
  var DxcSidenav = function DxcSidenav(_ref) {
31
- var padding = _ref.padding,
47
+ var title = _ref.title,
32
48
  children = _ref.children;
33
49
  var colorsTheme = (0, _useTheme["default"])();
34
50
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
35
51
  theme: colorsTheme.sidenav
36
- }, /*#__PURE__*/_react["default"].createElement(SideNavContainer, {
37
- padding: padding
38
- }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
52
+ }, /*#__PURE__*/_react["default"].createElement(SidenavContainer, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
39
53
  color: colorsTheme.sidenav.backgroundColor
40
- }, children)));
54
+ }, title, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
55
+ direction: "column",
56
+ gap: "1rem"
57
+ }, children))));
41
58
  };
42
59
 
43
60
  var Title = function Title(_ref2) {
44
61
  var children = _ref2.children;
45
- return /*#__PURE__*/_react["default"].createElement(SideNavMenuTitle, null, children);
62
+ return /*#__PURE__*/_react["default"].createElement(_Bleed["default"], {
63
+ horizontal: "1rem"
64
+ }, /*#__PURE__*/_react["default"].createElement(SidenavTitle, null, children));
46
65
  };
47
66
 
48
- var Subtitle = function Subtitle(_ref3) {
67
+ var Section = function Section(_ref3) {
49
68
  var children = _ref3.children;
50
- return /*#__PURE__*/_react["default"].createElement(SideNavMenuSubTitle, null, children);
69
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Bleed["default"], {
70
+ horizontal: "1rem"
71
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
72
+ direction: "column"
73
+ }, children)), /*#__PURE__*/_react["default"].createElement(Divider, null));
51
74
  };
52
75
 
53
- var Link = function Link(_ref4) {
54
- var _ref4$tabIndex = _ref4.tabIndex,
55
- tabIndex = _ref4$tabIndex === void 0 ? 0 : _ref4$tabIndex,
56
- href = _ref4.href,
57
- onClick = _ref4.onClick,
76
+ var GroupContext = /*#__PURE__*/_react["default"].createContext(null);
77
+
78
+ var Group = function Group(_ref4) {
79
+ var title = _ref4.title,
80
+ _ref4$collapsable = _ref4.collapsable,
81
+ collapsable = _ref4$collapsable === void 0 ? false : _ref4$collapsable,
82
+ icon = _ref4.icon,
58
83
  children = _ref4.children;
59
- return /*#__PURE__*/_react["default"].createElement(SideNavMenuLink, {
60
- tabIndex: tabIndex,
61
- href: href,
62
- onClick: onClick
63
- }, children);
84
+
85
+ var _useState = (0, _react.useState)(false),
86
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
87
+ collapsed = _useState2[0],
88
+ setCollapsed = _useState2[1];
89
+
90
+ var _useState3 = (0, _react.useState)(false),
91
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
92
+ isSelected = _useState4[0],
93
+ changeIsSelected = _useState4[1];
94
+
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, {
98
+ "aria-expanded": !collapsed,
99
+ onClick: function onClick() {
100
+ return setCollapsed(!collapsed);
101
+ },
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", {
107
+ src: icon
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", {
109
+ src: icon
110
+ }) : icon, title), !collapsed && children));
64
111
  };
65
112
 
66
- var SideNavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n background-color: ", ";\n max-width: 300px;\n width: ", ";\n padding: ", ";\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) {
113
+ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
114
+ var href = _ref5.href,
115
+ _ref5$newWindow = _ref5.newWindow,
116
+ newWindow = _ref5$newWindow === void 0 ? false : _ref5$newWindow,
117
+ _ref5$selected = _ref5.selected,
118
+ selected = _ref5$selected === void 0 ? false : _ref5$selected,
119
+ icon = _ref5.icon,
120
+ onClick = _ref5.onClick,
121
+ _ref5$tabIndex = _ref5.tabIndex,
122
+ tabIndex = _ref5$tabIndex === void 0 ? 0 : _ref5$tabIndex,
123
+ children = _ref5.children,
124
+ otherProps = (0, _objectWithoutProperties2["default"])(_ref5, _excluded);
125
+ var changeIsGroupSelected = (0, _react.useContext)(GroupContext);
126
+ var setIsSidenavVisibleResponsive = (0, _SidenavContext.useResponsiveSidenavVisibility)();
127
+
128
+ var handleClick = function handleClick($event) {
129
+ onClick === null || onClick === void 0 ? void 0 : onClick($event);
130
+ setIsSidenavVisibleResponsive === null || setIsSidenavVisibleResponsive === void 0 ? void 0 : setIsSidenavVisibleResponsive(false);
131
+ };
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]);
138
+ return /*#__PURE__*/_react["default"].createElement(SidenavLink, (0, _extends2["default"])({
139
+ selected: selected,
140
+ href: href ? href : undefined,
141
+ target: href ? newWindow ? "_blank" : "_self" : undefined,
142
+ ref: ref,
143
+ tabIndex: tabIndex,
144
+ onClick: handleClick
145
+ }, otherProps), /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
146
+ alignItems: "center",
147
+ gap: "0.5rem"
148
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
149
+ src: icon
150
+ }) : icon, children), newWindow && _Icons["default"].externalLinkIcon);
151
+ });
152
+
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) {
67
154
  return props.theme.backgroundColor;
68
- }, function (props) {
69
- return props.padding ? "calc(300px - ".concat(_variables.spaces[props.padding], " - ").concat(_variables.spaces[props.padding], ")") : "300px";
70
- }, function (props) {
71
- return props.padding ? _variables.spaces[props.padding] : "";
72
155
  }, function (props) {
73
156
  return props.theme.scrollBarTrackColor;
74
157
  }, function (props) {
75
158
  return props.theme.scrollBarThumbColor;
76
159
  });
77
160
 
78
- var SideNavMenuTitle = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n margin-bottom: 16px;\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) {
79
162
  return props.theme.titleFontFamily;
80
- }, function (props) {
81
- return props.theme.titleFontSize;
82
163
  }, function (props) {
83
164
  return props.theme.titleFontStyle;
84
165
  }, function (props) {
85
166
  return props.theme.titleFontWeight;
167
+ }, function (props) {
168
+ return props.theme.titleFontSize;
86
169
  }, function (props) {
87
170
  return props.theme.titleFontColor;
88
171
  }, function (props) {
@@ -91,32 +174,46 @@ var SideNavMenuTitle = _styledComponents["default"].div(_templateObject2 || (_te
91
174
  return props.theme.titleFontTextTransform;
92
175
  });
93
176
 
94
- var SideNavMenuSubTitle = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n margin-bottom: 4px;\n"])), function (props) {
95
- return props.theme.subtitleFontFamily;
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"])));
178
+
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"])));
180
+
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) {
182
+ return props.theme.groupTitleFontFamily;
183
+ }, function (props) {
184
+ return props.theme.groupTitleFontStyle;
185
+ }, function (props) {
186
+ return props.theme.groupTitleFontWeight;
187
+ }, function (props) {
188
+ return props.theme.groupTitleFontSize;
189
+ });
190
+
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) {
192
+ return props.theme.groupTitleFontFamily;
96
193
  }, function (props) {
97
- return props.theme.subtitleFontSize;
194
+ return props.theme.groupTitleFontStyle;
98
195
  }, function (props) {
99
- return props.theme.subtitleFontStyle;
196
+ return props.theme.groupTitleFontWeight;
100
197
  }, function (props) {
101
- return props.theme.subtitleFontWeight;
198
+ return props.theme.groupTitleFontSize;
102
199
  }, function (props) {
103
- return props.theme.subtitleFontColor;
200
+ return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedFontColor, "; background-color: ").concat(props.theme.groupTitleSelectedBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background-color: transparent;");
104
201
  }, function (props) {
105
- return props.theme.subtitleFontLetterSpacing;
202
+ return props.theme.linkFocusColor;
203
+ }, function (props) {
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, ";");
106
205
  }, function (props) {
107
- return props.theme.subtitleFontTextTransform;
206
+ return props.selectedGroup ? "#333" : props.theme.groupTitleActiveBackgroundColor;
108
207
  });
109
208
 
110
- var SideNavMenuLink = _styledComponents["default"].a(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n margin: ", ";\n cursor: pointer;\n\n :focus-visible {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n"])), 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) {
111
210
  return props.theme.linkFontFamily;
112
- }, function (props) {
113
- return props.theme.linkFontSize;
114
211
  }, function (props) {
115
212
  return props.theme.linkFontStyle;
116
213
  }, function (props) {
117
214
  return props.theme.linkFontWeight;
118
215
  }, function (props) {
119
- return props.theme.linkFontColor;
216
+ return props.theme.linkFontSize;
120
217
  }, function (props) {
121
218
  return props.theme.linkFontLetterSpacing;
122
219
  }, function (props) {
@@ -124,13 +221,18 @@ var SideNavMenuLink = _styledComponents["default"].a(_templateObject4 || (_templ
124
221
  }, function (props) {
125
222
  return props.theme.linkTextDecoration;
126
223
  }, function (props) {
127
- return "".concat(props.theme.linkMarginTop, " ").concat(props.theme.linkMarginRight, " ").concat(props.theme.linkMarginBottom, " ").concat(props.theme.linkMarginLeft);
224
+ return props.selected ? "color: ".concat(props.theme.linkSelectedFontColor, "; background-color: ").concat(props.theme.linkSelectedBackgroundColor, ";") : "color: ".concat(props.theme.linkFontColor, "; background-color: transparent;");
128
225
  }, function (props) {
129
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";
130
231
  });
131
232
 
132
- DxcSidenav.Title = Title;
133
- DxcSidenav.Subtitle = Subtitle;
233
+ DxcSidenav.Section = Section;
234
+ DxcSidenav.Group = Group;
134
235
  DxcSidenav.Link = Link;
236
+ DxcSidenav.Title = Title;
135
237
  var _default = DxcSidenav;
136
238
  exports["default"] = _default;