@dxc-technology/halstack-react 0.0.0-0f1b72b → 0.0.0-100df21

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 (304) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1229 -6
  4. package/HalstackContext.js +125 -110
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +116 -160
  8. package/accordion/Accordion.stories.tsx +102 -126
  9. package/accordion/Accordion.test.js +25 -41
  10. package/accordion/types.d.ts +5 -16
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +31 -98
  13. package/accordion-group/AccordionGroup.stories.tsx +94 -67
  14. package/accordion-group/AccordionGroup.test.js +52 -105
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +11 -16
  18. package/alert/Alert.js +20 -59
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +29 -46
  21. package/alert/types.d.ts +5 -5
  22. package/badge/Badge.js +4 -17
  23. package/badge/types.d.ts +1 -1
  24. package/bleed/Bleed.js +13 -21
  25. package/bleed/Bleed.stories.tsx +64 -63
  26. package/bleed/types.d.ts +2 -2
  27. package/box/Box.d.ts +1 -1
  28. package/box/Box.js +19 -60
  29. package/box/Box.stories.tsx +38 -51
  30. package/box/Box.test.js +2 -7
  31. package/box/types.d.ts +3 -14
  32. package/bulleted-list/BulletedList.d.ts +7 -0
  33. package/bulleted-list/BulletedList.js +89 -0
  34. package/bulleted-list/BulletedList.stories.tsx +115 -0
  35. package/bulleted-list/types.d.ts +38 -0
  36. package/button/Button.d.ts +1 -1
  37. package/button/Button.js +63 -117
  38. package/button/Button.stories.tsx +160 -90
  39. package/button/Button.test.js +18 -17
  40. package/button/types.d.ts +12 -8
  41. package/card/Card.d.ts +1 -1
  42. package/card/Card.js +48 -89
  43. package/card/Card.stories.tsx +12 -42
  44. package/card/Card.test.js +11 -22
  45. package/card/types.d.ts +6 -11
  46. package/checkbox/Checkbox.d.ts +2 -2
  47. package/checkbox/Checkbox.js +140 -182
  48. package/checkbox/Checkbox.stories.tsx +128 -94
  49. package/checkbox/Checkbox.test.js +160 -39
  50. package/checkbox/types.d.ts +11 -3
  51. package/chip/Chip.js +39 -79
  52. package/chip/Chip.stories.tsx +121 -26
  53. package/chip/Chip.test.js +16 -31
  54. package/chip/types.d.ts +4 -4
  55. package/common/OpenSans.css +68 -80
  56. package/common/coreTokens.d.ts +237 -0
  57. package/common/coreTokens.js +184 -0
  58. package/common/utils.d.ts +1 -0
  59. package/common/utils.js +6 -12
  60. package/common/variables.d.ts +1381 -0
  61. package/common/variables.js +914 -1131
  62. package/container/Container.d.ts +4 -0
  63. package/container/Container.js +194 -0
  64. package/container/Container.stories.tsx +214 -0
  65. package/container/types.d.ts +74 -0
  66. package/date-input/Calendar.d.ts +4 -0
  67. package/date-input/Calendar.js +214 -0
  68. package/date-input/DateInput.js +150 -299
  69. package/date-input/DateInput.stories.tsx +203 -56
  70. package/date-input/DateInput.test.js +700 -371
  71. package/date-input/DatePicker.d.ts +4 -0
  72. package/date-input/DatePicker.js +115 -0
  73. package/date-input/Icons.d.ts +6 -0
  74. package/date-input/Icons.js +58 -0
  75. package/date-input/YearPicker.d.ts +4 -0
  76. package/date-input/YearPicker.js +100 -0
  77. package/date-input/types.d.ts +72 -15
  78. package/dialog/Dialog.d.ts +1 -1
  79. package/dialog/Dialog.js +73 -107
  80. package/dialog/Dialog.stories.tsx +320 -167
  81. package/dialog/Dialog.test.js +287 -20
  82. package/dialog/types.d.ts +18 -25
  83. package/dropdown/Dropdown.d.ts +1 -1
  84. package/dropdown/Dropdown.js +243 -300
  85. package/dropdown/Dropdown.stories.tsx +245 -56
  86. package/dropdown/Dropdown.test.js +575 -165
  87. package/dropdown/DropdownMenu.d.ts +4 -0
  88. package/dropdown/DropdownMenu.js +63 -0
  89. package/dropdown/DropdownMenuItem.d.ts +4 -0
  90. package/dropdown/DropdownMenuItem.js +67 -0
  91. package/dropdown/types.d.ts +32 -14
  92. package/file-input/FileInput.d.ts +2 -2
  93. package/file-input/FileInput.js +241 -355
  94. package/file-input/FileInput.stories.tsx +123 -12
  95. package/file-input/FileInput.test.js +369 -367
  96. package/file-input/FileItem.d.ts +4 -14
  97. package/file-input/FileItem.js +45 -96
  98. package/file-input/types.d.ts +25 -8
  99. package/flex/Flex.d.ts +4 -0
  100. package/flex/Flex.js +57 -0
  101. package/flex/Flex.stories.tsx +112 -0
  102. package/flex/types.d.ts +97 -0
  103. package/footer/Footer.d.ts +1 -1
  104. package/footer/Footer.js +55 -115
  105. package/footer/Footer.stories.tsx +41 -19
  106. package/footer/Footer.test.js +33 -57
  107. package/footer/Icons.d.ts +2 -2
  108. package/footer/Icons.js +3 -8
  109. package/footer/types.d.ts +21 -28
  110. package/grid/Grid.d.ts +7 -0
  111. package/grid/Grid.js +76 -0
  112. package/grid/Grid.stories.tsx +219 -0
  113. package/grid/types.d.ts +115 -0
  114. package/header/Header.d.ts +4 -3
  115. package/header/Header.js +85 -168
  116. package/header/Header.stories.tsx +118 -39
  117. package/header/Header.test.js +13 -26
  118. package/header/Icons.d.ts +2 -2
  119. package/header/Icons.js +4 -9
  120. package/header/types.d.ts +5 -19
  121. package/heading/Heading.js +10 -32
  122. package/heading/Heading.test.js +71 -88
  123. package/heading/types.d.ts +7 -7
  124. package/image/Image.d.ts +4 -0
  125. package/image/Image.js +70 -0
  126. package/image/Image.stories.tsx +127 -0
  127. package/image/types.d.ts +72 -0
  128. package/inset/Inset.js +13 -21
  129. package/inset/Inset.stories.tsx +5 -4
  130. package/inset/types.d.ts +2 -2
  131. package/layout/ApplicationLayout.d.ts +15 -6
  132. package/layout/ApplicationLayout.js +51 -116
  133. package/layout/ApplicationLayout.stories.tsx +81 -45
  134. package/layout/Icons.d.ts +8 -5
  135. package/layout/Icons.js +51 -59
  136. package/layout/SidenavContext.d.ts +1 -1
  137. package/layout/SidenavContext.js +3 -9
  138. package/layout/types.d.ts +21 -32
  139. package/link/Link.js +25 -46
  140. package/link/Link.stories.tsx +73 -6
  141. package/link/Link.test.js +24 -44
  142. package/link/types.d.ts +14 -14
  143. package/main.d.ts +10 -12
  144. package/main.js +41 -106
  145. package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
  146. package/{tabs-nav → nav-tabs}/NavTabs.js +22 -57
  147. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +111 -7
  148. package/{tabs-nav → nav-tabs}/NavTabs.test.js +37 -44
  149. package/nav-tabs/Tab.js +117 -0
  150. package/{tabs-nav → nav-tabs}/types.d.ts +14 -15
  151. package/number-input/NumberInput.d.ts +7 -0
  152. package/number-input/NumberInput.js +26 -35
  153. package/number-input/NumberInput.stories.tsx +42 -26
  154. package/number-input/NumberInput.test.js +701 -377
  155. package/number-input/types.d.ts +11 -5
  156. package/package.json +43 -46
  157. package/paginator/Icons.d.ts +5 -0
  158. package/paginator/Icons.js +21 -47
  159. package/paginator/Paginator.js +23 -59
  160. package/paginator/Paginator.stories.tsx +24 -0
  161. package/paginator/Paginator.test.js +253 -226
  162. package/paginator/types.d.ts +3 -3
  163. package/paragraph/Paragraph.d.ts +5 -0
  164. package/paragraph/Paragraph.js +22 -0
  165. package/paragraph/Paragraph.stories.tsx +27 -0
  166. package/password-input/Icons.d.ts +6 -0
  167. package/password-input/Icons.js +35 -0
  168. package/password-input/PasswordInput.js +57 -126
  169. package/password-input/PasswordInput.stories.tsx +1 -33
  170. package/password-input/PasswordInput.test.js +160 -142
  171. package/password-input/types.d.ts +8 -7
  172. package/progress-bar/ProgressBar.js +65 -91
  173. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +39 -4
  174. package/progress-bar/ProgressBar.test.js +72 -44
  175. package/progress-bar/types.d.ts +3 -3
  176. package/quick-nav/QuickNav.js +27 -45
  177. package/quick-nav/QuickNav.stories.tsx +146 -27
  178. package/quick-nav/types.d.ts +10 -10
  179. package/radio-group/Radio.d.ts +1 -1
  180. package/radio-group/Radio.js +59 -76
  181. package/radio-group/RadioGroup.js +67 -114
  182. package/radio-group/RadioGroup.stories.tsx +132 -18
  183. package/radio-group/RadioGroup.test.js +518 -457
  184. package/radio-group/types.d.ts +10 -10
  185. package/resultset-table/Icons.d.ts +7 -0
  186. package/resultset-table/Icons.js +47 -0
  187. package/resultset-table/ResultsetTable.js +159 -0
  188. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +50 -25
  189. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +101 -144
  190. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  191. package/select/Icons.d.ts +7 -7
  192. package/select/Icons.js +1 -5
  193. package/select/Listbox.js +17 -49
  194. package/select/Option.js +20 -50
  195. package/select/Select.js +119 -198
  196. package/select/Select.stories.tsx +497 -152
  197. package/select/Select.test.js +1966 -1758
  198. package/select/types.d.ts +16 -19
  199. package/sidenav/Icons.d.ts +7 -0
  200. package/sidenav/Icons.js +47 -0
  201. package/sidenav/Sidenav.d.ts +6 -5
  202. package/sidenav/Sidenav.js +127 -78
  203. package/sidenav/Sidenav.stories.tsx +251 -151
  204. package/sidenav/Sidenav.test.js +26 -45
  205. package/sidenav/types.d.ts +52 -26
  206. package/slider/Slider.d.ts +2 -2
  207. package/slider/Slider.js +148 -181
  208. package/slider/Slider.test.js +185 -81
  209. package/slider/types.d.ts +7 -3
  210. package/spinner/Spinner.js +31 -75
  211. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  212. package/spinner/Spinner.test.js +26 -35
  213. package/spinner/types.d.ts +3 -3
  214. package/switch/Switch.d.ts +2 -2
  215. package/switch/Switch.js +145 -126
  216. package/switch/Switch.stories.tsx +37 -60
  217. package/switch/Switch.test.js +138 -56
  218. package/switch/types.d.ts +7 -3
  219. package/table/Table.js +8 -30
  220. package/table/{Table.stories.jsx → Table.stories.tsx} +80 -1
  221. package/table/Table.test.js +3 -8
  222. package/table/types.d.ts +8 -8
  223. package/tabs/Tab.d.ts +4 -0
  224. package/tabs/Tab.js +113 -0
  225. package/tabs/Tabs.js +315 -141
  226. package/tabs/Tabs.stories.tsx +119 -5
  227. package/tabs/Tabs.test.js +223 -69
  228. package/tabs/types.d.ts +28 -18
  229. package/tag/Tag.js +29 -61
  230. package/tag/Tag.stories.tsx +14 -1
  231. package/tag/Tag.test.js +20 -31
  232. package/tag/types.d.ts +7 -7
  233. package/text-input/Icons.d.ts +8 -0
  234. package/text-input/Icons.js +56 -0
  235. package/text-input/Suggestion.js +40 -28
  236. package/text-input/Suggestions.d.ts +4 -0
  237. package/text-input/Suggestions.js +84 -0
  238. package/text-input/TextInput.js +291 -483
  239. package/text-input/TextInput.stories.tsx +266 -275
  240. package/text-input/TextInput.test.js +1402 -1375
  241. package/text-input/types.d.ts +43 -16
  242. package/textarea/Textarea.js +70 -113
  243. package/textarea/Textarea.stories.tsx +174 -0
  244. package/textarea/Textarea.test.js +152 -183
  245. package/textarea/types.d.ts +9 -5
  246. package/toggle-group/ToggleGroup.d.ts +2 -2
  247. package/toggle-group/ToggleGroup.js +92 -106
  248. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  249. package/toggle-group/ToggleGroup.test.js +69 -88
  250. package/toggle-group/types.d.ts +26 -17
  251. package/typography/Typography.d.ts +4 -0
  252. package/typography/Typography.js +23 -0
  253. package/typography/Typography.stories.tsx +198 -0
  254. package/typography/types.d.ts +18 -0
  255. package/typography/types.js +5 -0
  256. package/useTheme.d.ts +1133 -1
  257. package/useTheme.js +2 -9
  258. package/useTranslatedLabels.d.ts +84 -1
  259. package/useTranslatedLabels.js +1 -7
  260. package/utils/BaseTypography.d.ts +21 -0
  261. package/utils/BaseTypography.js +94 -0
  262. package/utils/FocusLock.d.ts +13 -0
  263. package/utils/FocusLock.js +121 -0
  264. package/wizard/Wizard.js +24 -66
  265. package/wizard/Wizard.stories.tsx +40 -1
  266. package/wizard/Wizard.test.js +54 -81
  267. package/wizard/types.d.ts +7 -7
  268. package/card/ice-cream.jpg +0 -0
  269. package/common/RequiredComponent.js +0 -32
  270. package/inline/Inline.d.ts +0 -4
  271. package/inline/Inline.js +0 -54
  272. package/inline/Inline.stories.tsx +0 -240
  273. package/inline/types.d.ts +0 -32
  274. package/list/List.d.ts +0 -4
  275. package/list/List.js +0 -47
  276. package/list/List.stories.tsx +0 -95
  277. package/list/types.d.ts +0 -7
  278. package/number-input/NumberInputContext.d.ts +0 -4
  279. package/number-input/NumberInputContext.js +0 -19
  280. package/number-input/numberInputContextTypes.d.ts +0 -19
  281. package/resultsetTable/ResultsetTable.js +0 -254
  282. package/row/Row.d.ts +0 -3
  283. package/row/Row.js +0 -127
  284. package/row/Row.stories.tsx +0 -237
  285. package/row/types.d.ts +0 -28
  286. package/slider/Slider.stories.tsx +0 -177
  287. package/stack/Stack.d.ts +0 -3
  288. package/stack/Stack.js +0 -97
  289. package/stack/Stack.stories.tsx +0 -164
  290. package/stack/types.d.ts +0 -24
  291. package/tabs-nav/Tab.js +0 -132
  292. package/text/Text.d.ts +0 -7
  293. package/text/Text.js +0 -30
  294. package/text/Text.stories.tsx +0 -19
  295. package/textarea/Textarea.stories.jsx +0 -157
  296. /package/{inline → bulleted-list}/types.js +0 -0
  297. /package/{list → container}/types.js +0 -0
  298. /package/{resultsetTable → flex}/types.js +0 -0
  299. /package/{row → grid}/types.js +0 -0
  300. /package/{stack → image}/types.js +0 -0
  301. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  302. /package/{tabs-nav → nav-tabs}/types.js +0 -0
  303. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
  304. /package/{number-input/numberInputContextTypes.js → resultset-table/types.js} +0 -0
package/select/types.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Margin = {
1
+ import React from "react";
2
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement>;
10
- declare type OptionGroup = {
9
+ type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
+ export type OptionGroup = {
11
11
  /**
12
12
  * Label of the group to be shown in the select's listbox.
13
13
  */
@@ -17,7 +17,7 @@ declare type OptionGroup = {
17
17
  */
18
18
  options: Option[];
19
19
  };
20
- declare type Option = {
20
+ export type Option = {
21
21
  /**
22
22
  * Element used as the icon that will be placed before the option label.
23
23
  * It can be a url of an image or an inline SVG. If the url option
@@ -36,7 +36,7 @@ declare type Option = {
36
36
  */
37
37
  value: string;
38
38
  };
39
- declare type CommonProps = {
39
+ type CommonProps = {
40
40
  /**
41
41
  * Text to be placed above the select.
42
42
  */
@@ -45,9 +45,8 @@ declare type CommonProps = {
45
45
  * Name attribute of the input element. This attribute will allow users
46
46
  * to find the component's value during the submit event. In this event,
47
47
  * the component's value will always be a regular string, for both single
48
- * and multiple selection modes, been in the first one a single option
49
- * value and in the multiple variant more than one option value,
50
- * separated by commas.
48
+ * and multiple selection modes, being a single option value in the first case
49
+ * and more than one value when multiple selection is available, separated by commas.
51
50
  */
52
51
  name?: string;
53
52
  /**
@@ -101,7 +100,7 @@ declare type CommonProps = {
101
100
  */
102
101
  tabIndex?: number;
103
102
  };
104
- declare type SingleSelect = CommonProps & {
103
+ type SingleSelect = CommonProps & {
105
104
  /**
106
105
  * If true, the select component will support multiple selected options.
107
106
  * In that case, value will be an array of strings with each selected
@@ -137,7 +136,7 @@ declare type SingleSelect = CommonProps & {
137
136
  error?: string;
138
137
  }) => void;
139
138
  };
140
- declare type MultipleSelect = CommonProps & {
139
+ type MultipleSelect = CommonProps & {
141
140
  /**
142
141
  * If true, the select component will support multiple selected options.
143
142
  * In that case, value will be an array of strings with each selected
@@ -173,11 +172,11 @@ declare type MultipleSelect = CommonProps & {
173
172
  error?: string;
174
173
  }) => void;
175
174
  };
176
- declare type Props = SingleSelect | MultipleSelect;
175
+ type Props = SingleSelect | MultipleSelect;
177
176
  /**
178
177
  * Single option of the select component.
179
178
  */
180
- export declare type OptionProps = {
179
+ export type OptionProps = {
181
180
  id: string;
182
181
  option: Option;
183
182
  onClick: (option: Option) => void;
@@ -190,7 +189,7 @@ export declare type OptionProps = {
190
189
  /**
191
190
  * Listbox from the select component.
192
191
  */
193
- export declare type ListboxProps = {
192
+ export type ListboxProps = {
194
193
  id: string;
195
194
  currentValue: string | string[];
196
195
  options: Option[] | OptionGroup[];
@@ -201,12 +200,10 @@ export declare type ListboxProps = {
201
200
  optionalItem: Option;
202
201
  searchable: boolean;
203
202
  handleOptionOnClick: (option: Option) => void;
204
- styles: {
205
- width: number;
206
- };
203
+ styles: React.CSSProperties;
207
204
  };
208
205
  /**
209
206
  * Reference to the select component.
210
207
  */
211
- export declare type RefType = HTMLDivElement;
208
+ export type RefType = HTMLDivElement;
212
209
  export default Props;
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ declare const icons: {
3
+ collapsedIcon: React.JSX.Element;
4
+ collapsableIcon: React.JSX.Element;
5
+ externalLinkIcon: React.JSX.Element;
6
+ };
7
+ export default icons;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var icons = {
10
+ collapsedIcon: /*#__PURE__*/_react["default"].createElement("svg", {
11
+ xmlns: "http://www.w3.org/2000/svg",
12
+ height: "24px",
13
+ viewBox: "0 0 24 24",
14
+ width: "24px",
15
+ fill: "currentColor"
16
+ }, /*#__PURE__*/_react["default"].createElement("path", {
17
+ d: "M0 0h24v24H0z",
18
+ fill: "none"
19
+ }), /*#__PURE__*/_react["default"].createElement("path", {
20
+ d: "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
21
+ })),
22
+ collapsableIcon: /*#__PURE__*/_react["default"].createElement("svg", {
23
+ xmlns: "http://www.w3.org/2000/svg",
24
+ height: "24px",
25
+ viewBox: "0 0 24 24",
26
+ width: "24px",
27
+ fill: "currentColor"
28
+ }, /*#__PURE__*/_react["default"].createElement("path", {
29
+ d: "M0 0h24v24H0z",
30
+ fill: "none"
31
+ }), /*#__PURE__*/_react["default"].createElement("path", {
32
+ d: "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
33
+ })),
34
+ externalLinkIcon: /*#__PURE__*/_react["default"].createElement("svg", {
35
+ xmlns: "http://www.w3.org/2000/svg",
36
+ height: "24",
37
+ viewBox: "0 0 24 24",
38
+ width: "24",
39
+ fill: "currentColor"
40
+ }, /*#__PURE__*/_react["default"].createElement("path", {
41
+ d: "M0 0h24v24H0z",
42
+ fill: "none"
43
+ }), /*#__PURE__*/_react["default"].createElement("path", {
44
+ 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"
45
+ }))
46
+ };
47
+ var _default = exports["default"] = icons;
@@ -1,9 +1,10 @@
1
- /// <reference types="react" />
2
- import SidenavPropsType, { SidenavTitlePropsType, SidenavSubtitlePropsType, SidenavLinkPropsType } from "./types";
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;
@@ -1,99 +1,136 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
- var _react = _interopRequireDefault(require("react"));
15
-
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _react = _interopRequireWildcard(require("react"));
16
14
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
-
18
- var _variables = require("../common/variables.js");
19
-
20
- var _useTheme = _interopRequireDefault(require("../useTheme"));
21
-
22
- var _BackgroundColorContext = require("../BackgroundColorContext");
23
-
15
+ var _variables = require("../common/variables");
24
16
  var _SidenavContext = require("../layout/SidenavContext");
25
-
26
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
27
-
28
- 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); }
29
-
30
- 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; }
31
-
17
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
18
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
19
+ var _Bleed = _interopRequireDefault(require("../bleed/Bleed"));
20
+ var _Icons = _interopRequireDefault(require("./Icons"));
21
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
22
+ var _excluded = ["href", "newWindow", "selected", "icon", "onClick", "tabIndex", "children"];
23
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
32
25
  var DxcSidenav = function DxcSidenav(_ref) {
33
- var padding = _ref.padding,
34
- children = _ref.children;
26
+ var title = _ref.title,
27
+ children = _ref.children;
35
28
  var colorsTheme = (0, _useTheme["default"])();
36
29
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
37
30
  theme: colorsTheme.sidenav
38
- }, /*#__PURE__*/_react["default"].createElement(SidenavContainer, {
39
- padding: padding
40
- }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
41
- color: colorsTheme.sidenav.backgroundColor
31
+ }, /*#__PURE__*/_react["default"].createElement(SidenavContainer, null, title, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
32
+ direction: "column",
33
+ gap: "1rem"
42
34
  }, children)));
43
35
  };
44
-
45
36
  var Title = function Title(_ref2) {
46
37
  var children = _ref2.children;
47
- return /*#__PURE__*/_react["default"].createElement(SidenavMenuTitle, null, children);
38
+ return /*#__PURE__*/_react["default"].createElement(_Bleed["default"], {
39
+ horizontal: "1rem"
40
+ }, /*#__PURE__*/_react["default"].createElement(SidenavTitle, null, children));
48
41
  };
49
-
50
- var Subtitle = function Subtitle(_ref3) {
42
+ var Section = function Section(_ref3) {
51
43
  var children = _ref3.children;
52
- return /*#__PURE__*/_react["default"].createElement(SidenavMenuSubTitle, null, children);
44
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Bleed["default"], {
45
+ horizontal: "1rem"
46
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
47
+ direction: "column"
48
+ }, children)), /*#__PURE__*/_react["default"].createElement(Divider, null));
53
49
  };
54
-
55
- var Link = function Link(_ref4) {
56
- var _ref4$tabIndex = _ref4.tabIndex,
57
- tabIndex = _ref4$tabIndex === void 0 ? 0 : _ref4$tabIndex,
58
- href = _ref4.href,
59
- onClick = _ref4.onClick,
60
- children = _ref4.children;
50
+ var GroupContext = /*#__PURE__*/_react["default"].createContext(null);
51
+ var Group = function Group(_ref4) {
52
+ var title = _ref4.title,
53
+ _ref4$collapsable = _ref4.collapsable,
54
+ collapsable = _ref4$collapsable === void 0 ? false : _ref4$collapsable,
55
+ icon = _ref4.icon,
56
+ children = _ref4.children;
57
+ var _useState = (0, _react.useState)(false),
58
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
59
+ collapsed = _useState2[0],
60
+ setCollapsed = _useState2[1];
61
+ var _useState3 = (0, _react.useState)(false),
62
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
63
+ isSelected = _useState4[0],
64
+ changeIsSelected = _useState4[1];
65
+ return /*#__PURE__*/_react["default"].createElement(GroupContext.Provider, {
66
+ value: changeIsSelected
67
+ }, /*#__PURE__*/_react["default"].createElement(SidenavGroup, null, collapsable && title ? /*#__PURE__*/_react["default"].createElement(SidenavGroupTitleButton, {
68
+ "aria-expanded": !collapsed,
69
+ onClick: function onClick() {
70
+ return setCollapsed(!collapsed);
71
+ },
72
+ selectedGroup: collapsed && isSelected
73
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
74
+ alignItems: "center",
75
+ gap: "0.5rem"
76
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
77
+ src: icon
78
+ }) : icon, title), collapsed ? _Icons["default"].collapsedIcon : _Icons["default"].collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
79
+ src: icon
80
+ }) : icon, title), !collapsed && children));
81
+ };
82
+ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
83
+ var href = _ref5.href,
84
+ _ref5$newWindow = _ref5.newWindow,
85
+ newWindow = _ref5$newWindow === void 0 ? false : _ref5$newWindow,
86
+ _ref5$selected = _ref5.selected,
87
+ selected = _ref5$selected === void 0 ? false : _ref5$selected,
88
+ icon = _ref5.icon,
89
+ onClick = _ref5.onClick,
90
+ _ref5$tabIndex = _ref5.tabIndex,
91
+ tabIndex = _ref5$tabIndex === void 0 ? 0 : _ref5$tabIndex,
92
+ children = _ref5.children,
93
+ otherProps = (0, _objectWithoutProperties2["default"])(_ref5, _excluded);
94
+ var changeIsGroupSelected = (0, _react.useContext)(GroupContext);
61
95
  var setIsSidenavVisibleResponsive = (0, _SidenavContext.useResponsiveSidenavVisibility)();
62
-
63
- var handleClick = function handleClick() {
64
- onClick === null || onClick === void 0 ? void 0 : onClick();
96
+ var handleClick = function handleClick($event) {
97
+ onClick === null || onClick === void 0 ? void 0 : onClick($event);
65
98
  setIsSidenavVisibleResponsive === null || setIsSidenavVisibleResponsive === void 0 ? void 0 : setIsSidenavVisibleResponsive(false);
66
99
  };
67
-
68
- return /*#__PURE__*/_react["default"].createElement(SidenavMenuLink, {
100
+ (0, _react.useEffect)(function () {
101
+ changeIsGroupSelected === null || changeIsGroupSelected === void 0 ? void 0 : changeIsGroupSelected(function (isGroupSelected) {
102
+ return !isGroupSelected ? selected : isGroupSelected;
103
+ });
104
+ }, [selected, changeIsGroupSelected]);
105
+ return /*#__PURE__*/_react["default"].createElement(SidenavLink, (0, _extends2["default"])({
106
+ selected: selected,
107
+ href: href ? href : undefined,
108
+ target: href ? newWindow ? "_blank" : "_self" : undefined,
109
+ ref: ref,
69
110
  tabIndex: tabIndex,
70
- href: href,
71
111
  onClick: handleClick
72
- }, children);
73
- };
74
-
75
- var SidenavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n background-color: ", ";\n\n @media (max-width: ", "rem) {\n width: ", ";\n }\n\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) {
112
+ }, otherProps), /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
113
+ alignItems: "center",
114
+ gap: "0.5rem"
115
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
116
+ src: icon
117
+ }) : icon, children), newWindow && _Icons["default"].externalLinkIcon);
118
+ });
119
+ 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) {
76
120
  return props.theme.backgroundColor;
77
- }, _variables.responsiveSizes.medium, function (props) {
78
- return props.padding ? "calc(100vw - ".concat(_variables.spaces[props.padding], " - ").concat(_variables.spaces[props.padding], ")") : "100vw";
79
- }, function (props) {
80
- return props.padding ? "calc(300px - ".concat(_variables.spaces[props.padding], " - ").concat(_variables.spaces[props.padding], ")") : "300px";
81
- }, function (props) {
82
- return props.padding ? _variables.spaces[props.padding] : "";
83
121
  }, function (props) {
84
122
  return props.theme.scrollBarTrackColor;
85
123
  }, function (props) {
86
124
  return props.theme.scrollBarThumbColor;
87
125
  });
88
-
89
- 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) {
126
+ 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) {
90
127
  return props.theme.titleFontFamily;
91
- }, function (props) {
92
- return props.theme.titleFontSize;
93
128
  }, function (props) {
94
129
  return props.theme.titleFontStyle;
95
130
  }, function (props) {
96
131
  return props.theme.titleFontWeight;
132
+ }, function (props) {
133
+ return props.theme.titleFontSize;
97
134
  }, function (props) {
98
135
  return props.theme.titleFontColor;
99
136
  }, function (props) {
@@ -101,33 +138,42 @@ var SidenavMenuTitle = _styledComponents["default"].div(_templateObject2 || (_te
101
138
  }, function (props) {
102
139
  return props.theme.titleFontTextTransform;
103
140
  });
104
-
105
- 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) {
106
- return props.theme.subtitleFontFamily;
141
+ 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"])));
142
+ var SidenavGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n a {\n padding: 0.5rem 1.2rem 0.5rem 2.25rem;\n }\n"])));
143
+ 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) {
144
+ return props.theme.groupTitleFontFamily;
145
+ }, function (props) {
146
+ return props.theme.groupTitleFontStyle;
107
147
  }, function (props) {
108
- return props.theme.subtitleFontSize;
148
+ return props.theme.groupTitleFontWeight;
109
149
  }, function (props) {
110
- return props.theme.subtitleFontStyle;
150
+ return props.theme.groupTitleFontSize;
151
+ });
152
+ 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) {
153
+ return props.theme.groupTitleFontFamily;
154
+ }, function (props) {
155
+ return props.theme.groupTitleFontStyle;
111
156
  }, function (props) {
112
- return props.theme.subtitleFontWeight;
157
+ return props.theme.groupTitleFontWeight;
113
158
  }, function (props) {
114
- return props.theme.subtitleFontColor;
159
+ return props.theme.groupTitleFontSize;
115
160
  }, function (props) {
116
- return props.theme.subtitleFontLetterSpacing;
161
+ return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedFontColor, "; background-color: ").concat(props.theme.groupTitleSelectedBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background-color: transparent;");
117
162
  }, function (props) {
118
- return props.theme.subtitleFontTextTransform;
163
+ return props.theme.linkFocusColor;
164
+ }, function (props) {
165
+ 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, ";");
166
+ }, function (props) {
167
+ return props.selectedGroup ? "#333" : props.theme.groupTitleActiveBackgroundColor;
119
168
  });
120
-
121
- 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) {
169
+ 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) {
122
170
  return props.theme.linkFontFamily;
123
- }, function (props) {
124
- return props.theme.linkFontSize;
125
171
  }, function (props) {
126
172
  return props.theme.linkFontStyle;
127
173
  }, function (props) {
128
174
  return props.theme.linkFontWeight;
129
175
  }, function (props) {
130
- return props.theme.linkFontColor;
176
+ return props.theme.linkFontSize;
131
177
  }, function (props) {
132
178
  return props.theme.linkFontLetterSpacing;
133
179
  }, function (props) {
@@ -135,13 +181,16 @@ var SidenavMenuLink = _styledComponents["default"].a(_templateObject4 || (_templ
135
181
  }, function (props) {
136
182
  return props.theme.linkTextDecoration;
137
183
  }, function (props) {
138
- return "".concat(props.theme.linkMarginTop, " ").concat(props.theme.linkMarginRight, " ").concat(props.theme.linkMarginBottom, " ").concat(props.theme.linkMarginLeft);
184
+ return props.selected ? "color: ".concat(props.theme.linkSelectedFontColor, "; background-color: ").concat(props.theme.linkSelectedBackgroundColor, ";") : "color: ".concat(props.theme.linkFontColor, "; background-color: transparent;");
139
185
  }, function (props) {
140
186
  return props.theme.linkFocusColor;
187
+ }, function (props) {
188
+ 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, ";");
189
+ }, function (props) {
190
+ return props.selected ? "#333" : "#4d4d4d";
141
191
  });
142
-
143
- DxcSidenav.Title = Title;
144
- DxcSidenav.Subtitle = Subtitle;
192
+ DxcSidenav.Section = Section;
193
+ DxcSidenav.Group = Group;
145
194
  DxcSidenav.Link = Link;
146
- var _default = DxcSidenav;
147
- exports["default"] = _default;
195
+ DxcSidenav.Title = Title;
196
+ var _default = exports["default"] = DxcSidenav;