@dxc-technology/halstack-react 0.0.0-9b45027 → 0.0.0-9bd9511

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 (294) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -11
  3. package/HalstackContext.d.ts +13 -0
  4. package/HalstackContext.js +318 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +124 -179
  7. package/accordion/Accordion.stories.tsx +115 -27
  8. package/accordion/Accordion.test.js +56 -0
  9. package/accordion/types.d.ts +12 -11
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +28 -77
  12. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  13. package/accordion-group/AccordionGroup.test.js +108 -0
  14. package/accordion-group/types.d.ts +19 -12
  15. package/alert/Alert.js +18 -46
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +75 -0
  18. package/alert/types.d.ts +3 -3
  19. package/badge/Badge.d.ts +4 -0
  20. package/badge/Badge.js +6 -16
  21. package/badge/types.d.ts +5 -0
  22. package/bleed/Bleed.d.ts +2 -2
  23. package/bleed/Bleed.js +14 -55
  24. package/bleed/Bleed.stories.tsx +94 -95
  25. package/bleed/types.d.ts +26 -2
  26. package/box/Box.js +34 -63
  27. package/box/Box.stories.tsx +15 -0
  28. package/box/Box.test.js +13 -0
  29. package/box/types.d.ts +5 -4
  30. package/bulleted-list/BulletedList.d.ts +7 -0
  31. package/bulleted-list/BulletedList.js +98 -0
  32. package/bulleted-list/BulletedList.stories.tsx +200 -0
  33. package/bulleted-list/types.d.ts +11 -0
  34. package/bulleted-list/types.js +5 -0
  35. package/button/Button.js +61 -100
  36. package/button/Button.stories.tsx +159 -8
  37. package/button/Button.test.js +26 -0
  38. package/button/types.d.ts +8 -8
  39. package/card/Card.js +44 -70
  40. package/card/Card.test.js +39 -0
  41. package/card/types.d.ts +4 -3
  42. package/checkbox/Checkbox.d.ts +2 -2
  43. package/checkbox/Checkbox.js +115 -162
  44. package/checkbox/Checkbox.stories.tsx +198 -130
  45. package/checkbox/Checkbox.test.js +128 -0
  46. package/checkbox/types.d.ts +14 -6
  47. package/chip/Chip.d.ts +1 -1
  48. package/chip/Chip.js +29 -91
  49. package/chip/Chip.stories.tsx +98 -13
  50. package/chip/Chip.test.js +42 -0
  51. package/chip/types.d.ts +8 -16
  52. package/common/utils.js +1 -6
  53. package/common/variables.d.ts +1431 -0
  54. package/common/variables.js +480 -554
  55. package/date-input/Calendar.d.ts +4 -0
  56. package/date-input/Calendar.js +215 -0
  57. package/date-input/DateInput.js +164 -300
  58. package/date-input/DateInput.stories.tsx +199 -33
  59. package/date-input/DateInput.test.js +648 -0
  60. package/date-input/DatePicker.d.ts +4 -0
  61. package/date-input/DatePicker.js +116 -0
  62. package/date-input/Icons.d.ts +6 -0
  63. package/date-input/Icons.js +63 -0
  64. package/date-input/YearPicker.d.ts +4 -0
  65. package/date-input/YearPicker.js +101 -0
  66. package/date-input/types.d.ts +71 -13
  67. package/dialog/Dialog.js +52 -84
  68. package/dialog/Dialog.stories.tsx +99 -22
  69. package/dialog/Dialog.test.js +56 -0
  70. package/dialog/types.d.ts +4 -3
  71. package/dropdown/Dropdown.d.ts +1 -1
  72. package/dropdown/Dropdown.js +240 -323
  73. package/dropdown/Dropdown.stories.tsx +255 -64
  74. package/dropdown/Dropdown.test.js +479 -0
  75. package/dropdown/DropdownMenu.d.ts +4 -0
  76. package/dropdown/DropdownMenu.js +60 -0
  77. package/dropdown/DropdownMenuItem.d.ts +4 -0
  78. package/dropdown/DropdownMenuItem.js +70 -0
  79. package/dropdown/types.d.ts +30 -19
  80. package/file-input/FileInput.d.ts +2 -2
  81. package/file-input/FileInput.js +224 -351
  82. package/file-input/FileInput.stories.tsx +122 -11
  83. package/file-input/FileInput.test.js +445 -0
  84. package/file-input/FileItem.d.ts +4 -14
  85. package/file-input/FileItem.js +48 -97
  86. package/file-input/types.d.ts +24 -7
  87. package/flex/Flex.d.ts +4 -0
  88. package/flex/Flex.js +57 -0
  89. package/flex/Flex.stories.tsx +103 -0
  90. package/flex/types.d.ts +32 -0
  91. package/flex/types.js +5 -0
  92. package/footer/Footer.js +36 -143
  93. package/footer/Footer.stories.tsx +99 -1
  94. package/footer/Footer.test.js +92 -0
  95. package/footer/Icons.js +1 -5
  96. package/footer/types.d.ts +7 -6
  97. package/header/Header.js +112 -177
  98. package/header/Header.stories.tsx +189 -36
  99. package/header/Header.test.js +66 -0
  100. package/header/Icons.js +2 -6
  101. package/header/types.d.ts +4 -3
  102. package/heading/Heading.js +8 -29
  103. package/heading/Heading.test.js +169 -0
  104. package/heading/types.d.ts +3 -3
  105. package/inset/Inset.js +14 -55
  106. package/inset/Inset.stories.tsx +36 -36
  107. package/inset/types.d.ts +26 -2
  108. package/layout/ApplicationLayout.d.ts +16 -6
  109. package/layout/ApplicationLayout.js +71 -164
  110. package/layout/ApplicationLayout.stories.tsx +84 -93
  111. package/layout/Icons.d.ts +5 -0
  112. package/layout/Icons.js +11 -10
  113. package/layout/SidenavContext.d.ts +5 -0
  114. package/layout/SidenavContext.js +15 -0
  115. package/layout/types.d.ts +18 -33
  116. package/link/Link.d.ts +3 -2
  117. package/link/Link.js +61 -106
  118. package/link/Link.stories.tsx +159 -52
  119. package/link/Link.test.js +65 -0
  120. package/link/types.d.ts +9 -29
  121. package/main.d.ts +11 -15
  122. package/main.js +48 -121
  123. package/nav-tabs/NavTabs.d.ts +8 -0
  124. package/nav-tabs/NavTabs.js +95 -0
  125. package/nav-tabs/NavTabs.stories.tsx +260 -0
  126. package/nav-tabs/NavTabs.test.js +75 -0
  127. package/nav-tabs/Tab.d.ts +4 -0
  128. package/nav-tabs/Tab.js +120 -0
  129. package/nav-tabs/types.d.ts +53 -0
  130. package/nav-tabs/types.js +5 -0
  131. package/number-input/NumberInput.js +21 -38
  132. package/number-input/NumberInput.stories.tsx +5 -5
  133. package/number-input/NumberInput.test.js +406 -0
  134. package/number-input/NumberInputContext.js +0 -5
  135. package/number-input/numberInputContextTypes.d.ts +1 -1
  136. package/number-input/types.d.ts +21 -14
  137. package/package.json +22 -25
  138. package/paginator/Icons.d.ts +5 -0
  139. package/paginator/Icons.js +16 -38
  140. package/paginator/Paginator.js +31 -82
  141. package/paginator/Paginator.stories.tsx +24 -0
  142. package/paginator/Paginator.test.js +266 -0
  143. package/paginator/types.d.ts +1 -1
  144. package/paragraph/Paragraph.d.ts +6 -0
  145. package/paragraph/Paragraph.js +28 -0
  146. package/paragraph/Paragraph.stories.tsx +44 -0
  147. package/password-input/PasswordInput.js +28 -54
  148. package/password-input/PasswordInput.test.js +138 -0
  149. package/password-input/types.d.ts +18 -15
  150. package/progress-bar/ProgressBar.d.ts +2 -2
  151. package/progress-bar/ProgressBar.js +65 -84
  152. package/progress-bar/ProgressBar.stories.jsx +47 -12
  153. package/progress-bar/ProgressBar.test.js +93 -0
  154. package/progress-bar/types.d.ts +3 -4
  155. package/quick-nav/QuickNav.d.ts +4 -0
  156. package/quick-nav/QuickNav.js +95 -0
  157. package/quick-nav/QuickNav.stories.tsx +356 -0
  158. package/quick-nav/types.d.ts +21 -0
  159. package/quick-nav/types.js +5 -0
  160. package/radio-group/Radio.d.ts +1 -1
  161. package/radio-group/Radio.js +61 -66
  162. package/radio-group/RadioGroup.js +99 -129
  163. package/radio-group/RadioGroup.stories.tsx +171 -36
  164. package/radio-group/RadioGroup.test.js +620 -0
  165. package/radio-group/types.d.ts +85 -7
  166. package/resultsetTable/Icons.d.ts +7 -0
  167. package/resultsetTable/Icons.js +48 -0
  168. package/resultsetTable/ResultsetTable.js +66 -157
  169. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  170. package/resultsetTable/ResultsetTable.test.js +292 -0
  171. package/resultsetTable/types.d.ts +5 -5
  172. package/select/Icons.d.ts +10 -0
  173. package/select/Icons.js +90 -0
  174. package/select/Listbox.d.ts +4 -0
  175. package/select/Listbox.js +144 -0
  176. package/select/Option.d.ts +4 -0
  177. package/select/Option.js +81 -0
  178. package/select/Select.js +201 -485
  179. package/select/Select.stories.tsx +600 -201
  180. package/select/Select.test.js +1845 -0
  181. package/select/types.d.ts +62 -22
  182. package/sidenav/Sidenav.d.ts +6 -5
  183. package/sidenav/Sidenav.js +164 -74
  184. package/sidenav/Sidenav.stories.tsx +249 -149
  185. package/sidenav/Sidenav.test.js +37 -0
  186. package/sidenav/types.d.ts +50 -27
  187. package/slider/Slider.d.ts +2 -2
  188. package/slider/Slider.js +143 -164
  189. package/slider/Slider.stories.tsx +72 -9
  190. package/slider/Slider.test.js +222 -0
  191. package/slider/types.d.ts +11 -3
  192. package/spinner/Spinner.js +12 -41
  193. package/spinner/Spinner.stories.jsx +27 -1
  194. package/spinner/Spinner.test.js +55 -0
  195. package/spinner/types.d.ts +3 -3
  196. package/switch/Switch.d.ts +2 -2
  197. package/switch/Switch.js +148 -107
  198. package/switch/Switch.stories.tsx +53 -42
  199. package/switch/Switch.test.js +180 -0
  200. package/switch/types.d.ts +13 -5
  201. package/table/Table.js +5 -23
  202. package/table/Table.stories.jsx +80 -1
  203. package/table/Table.test.js +21 -0
  204. package/table/types.d.ts +3 -3
  205. package/tabs/Tab.d.ts +4 -0
  206. package/tabs/Tab.js +115 -0
  207. package/tabs/Tabs.d.ts +1 -1
  208. package/tabs/Tabs.js +318 -139
  209. package/tabs/Tabs.stories.tsx +119 -13
  210. package/tabs/Tabs.test.js +295 -0
  211. package/tabs/types.d.ts +21 -7
  212. package/tag/Tag.d.ts +1 -1
  213. package/tag/Tag.js +36 -75
  214. package/tag/Tag.stories.tsx +37 -27
  215. package/tag/Tag.test.js +49 -0
  216. package/tag/types.d.ts +25 -16
  217. package/text-input/Icons.d.ts +8 -0
  218. package/text-input/Icons.js +57 -0
  219. package/text-input/Suggestion.d.ts +4 -0
  220. package/text-input/Suggestion.js +68 -0
  221. package/text-input/Suggestions.d.ts +4 -0
  222. package/text-input/Suggestions.js +109 -0
  223. package/text-input/TextInput.js +232 -438
  224. package/text-input/TextInput.stories.tsx +310 -197
  225. package/text-input/TextInput.test.js +1404 -0
  226. package/text-input/types.d.ts +55 -17
  227. package/textarea/Textarea.js +53 -96
  228. package/textarea/Textarea.stories.jsx +93 -13
  229. package/textarea/Textarea.test.js +360 -0
  230. package/textarea/types.d.ts +22 -15
  231. package/toggle-group/ToggleGroup.d.ts +1 -1
  232. package/toggle-group/ToggleGroup.js +23 -57
  233. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  234. package/toggle-group/ToggleGroup.test.js +124 -0
  235. package/toggle-group/types.d.ts +19 -11
  236. package/translatedLabelsType.d.ts +82 -0
  237. package/translatedLabelsType.js +5 -0
  238. package/typography/Typography.d.ts +4 -0
  239. package/typography/Typography.js +119 -0
  240. package/typography/Typography.stories.tsx +198 -0
  241. package/typography/types.d.ts +18 -0
  242. package/typography/types.js +5 -0
  243. package/useTheme.d.ts +1 -1
  244. package/useTheme.js +3 -9
  245. package/useTranslatedLabels.d.ts +3 -0
  246. package/useTranslatedLabels.js +15 -0
  247. package/wizard/Wizard.d.ts +1 -1
  248. package/wizard/Wizard.js +68 -98
  249. package/wizard/Wizard.stories.tsx +48 -19
  250. package/wizard/Wizard.test.js +114 -0
  251. package/wizard/types.d.ts +12 -7
  252. package/ThemeContext.d.ts +0 -15
  253. package/ThemeContext.js +0 -243
  254. package/V3Select/V3Select.js +0 -455
  255. package/V3Select/index.d.ts +0 -27
  256. package/V3Textarea/V3Textarea.js +0 -260
  257. package/V3Textarea/index.d.ts +0 -27
  258. package/common/RequiredComponent.js +0 -32
  259. package/date/Date.js +0 -373
  260. package/date/index.d.ts +0 -27
  261. package/input-text/Icons.js +0 -22
  262. package/input-text/InputText.js +0 -611
  263. package/input-text/index.d.ts +0 -36
  264. package/list/List.d.ts +0 -8
  265. package/list/List.js +0 -47
  266. package/list/List.stories.tsx +0 -95
  267. package/radio/Radio.d.ts +0 -4
  268. package/radio/Radio.js +0 -174
  269. package/radio/Radio.stories.tsx +0 -192
  270. package/radio/types.d.ts +0 -54
  271. package/row/Row.d.ts +0 -11
  272. package/row/Row.js +0 -127
  273. package/row/Row.stories.tsx +0 -239
  274. package/stack/Stack.d.ts +0 -10
  275. package/stack/Stack.js +0 -97
  276. package/stack/Stack.stories.tsx +0 -166
  277. package/text/Text.d.ts +0 -7
  278. package/text/Text.js +0 -30
  279. package/text/Text.stories.tsx +0 -19
  280. package/toggle/Toggle.js +0 -186
  281. package/toggle/index.d.ts +0 -21
  282. package/upload/Upload.js +0 -201
  283. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  284. package/upload/buttons-upload/Icons.js +0 -40
  285. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  286. package/upload/dragAndDropArea/Icons.js +0 -39
  287. package/upload/file-upload/FileToUpload.js +0 -115
  288. package/upload/file-upload/Icons.js +0 -66
  289. package/upload/files-upload/FilesToUpload.js +0 -109
  290. package/upload/index.d.ts +0 -15
  291. package/upload/transaction/Icons.js +0 -160
  292. package/upload/transaction/Transaction.js +0 -104
  293. package/upload/transactions/Transactions.js +0 -94
  294. /package/{radio → badge}/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
+ 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
+ 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
  */
@@ -53,7 +53,7 @@ declare type CommonProps = {
53
53
  /**
54
54
  * An array of objects representing the selectable options.
55
55
  */
56
- options?: Option[] | OptionGroup[];
56
+ options: Option[] | OptionGroup[];
57
57
  /**
58
58
  * Helper text to be placed above the select.
59
59
  */
@@ -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
  /**
@@ -98,13 +101,17 @@ declare type CommonProps = {
98
101
  */
99
102
  tabIndex?: number;
100
103
  };
101
- declare type SingleSelect = CommonProps & {
104
+ type SingleSelect = CommonProps & {
102
105
  /**
103
106
  * If true, the select component will support multiple selected options.
104
107
  * In that case, value will be an array of strings with each selected
105
108
  * option value.
106
109
  */
107
110
  multiple?: false;
111
+ /**
112
+ * Initial value of the select, only when it is uncontrolled.
113
+ */
114
+ defaultValue?: string;
108
115
  /**
109
116
  * Value of the select. If undefined, the component will be uncontrolled
110
117
  * and the value will be managed internally by the component.
@@ -113,30 +120,34 @@ declare type SingleSelect = CommonProps & {
113
120
  /**
114
121
  * This function will be called when the user selects an option.
115
122
  * An object including the current value and the error (if the value entered is not valid)
116
- * 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.
117
124
  */
118
125
  onChange?: (val: {
119
126
  value: string;
120
- error: string;
127
+ error?: string;
121
128
  }) => void;
122
129
  /**
123
130
  * This function will be called when the select loses the focus. An
124
131
  * object including the value and the error (if the value
125
132
  * selected is not valid) will be passed to this function. If there is no error,
126
- * error will be null.
133
+ * error will not be defined.
127
134
  */
128
135
  onBlur?: (val: {
129
136
  value: string;
130
- error: string;
137
+ error?: string;
131
138
  }) => void;
132
139
  };
133
- declare type MultipleSelect = CommonProps & {
140
+ type MultipleSelect = CommonProps & {
134
141
  /**
135
142
  * If true, the select component will support multiple selected options.
136
143
  * In that case, value will be an array of strings with each selected
137
144
  * option value.
138
145
  */
139
146
  multiple: true;
147
+ /**
148
+ * Initial value of the select, only when it is uncontrolled.
149
+ */
150
+ defaultValue?: string[];
140
151
  /**
141
152
  * Value of the select. If undefined, the component will be uncontrolled
142
153
  * and the value will be managed internally by the component.
@@ -149,7 +160,7 @@ declare type MultipleSelect = CommonProps & {
149
160
  */
150
161
  onChange?: (val: {
151
162
  value: string[];
152
- error: string;
163
+ error?: string;
153
164
  }) => void;
154
165
  /**
155
166
  * This function will be called when the select loses the focus. An
@@ -159,12 +170,41 @@ declare type MultipleSelect = CommonProps & {
159
170
  */
160
171
  onBlur?: (val: {
161
172
  value: string[];
162
- error: string;
173
+ error?: string;
163
174
  }) => void;
164
175
  };
165
- declare type Props = SingleSelect | MultipleSelect;
176
+ type Props = SingleSelect | MultipleSelect;
177
+ /**
178
+ * Single option of the select component.
179
+ */
180
+ export type OptionProps = {
181
+ id: string;
182
+ option: Option;
183
+ onClick: (option: Option) => void;
184
+ multiple: boolean;
185
+ visualFocused: boolean;
186
+ isGroupedOption?: boolean;
187
+ isLastOption: boolean;
188
+ isSelected: boolean;
189
+ };
190
+ /**
191
+ * Listbox from the select component.
192
+ */
193
+ export 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
+ };
166
206
  /**
167
- * Reference to the component.
207
+ * Reference to the select component.
168
208
  */
169
- export declare type RefType = HTMLDivElement;
209
+ export type RefType = HTMLDivElement;
170
210
  export default Props;
@@ -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
+ ({ children, title }: SidenavPropsType): JSX.Element;
5
+ Section: ({ children }: SidenavSectionPropsType) => JSX.Element;
6
+ Group: ({ children, title, collapsable, icon }: 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,136 +1,226 @@
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
-
15
+ var _variables = require("../common/variables");
16
+ var _SidenavContext = require("../layout/SidenavContext");
20
17
  var _useTheme = _interopRequireDefault(require("../useTheme"));
21
-
22
18
  var _BackgroundColorContext = require("../BackgroundColorContext");
23
-
24
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
25
-
19
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
20
+ var _Bleed = _interopRequireDefault(require("../bleed/Bleed"));
21
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
22
+ var _excluded = ["href", "children", "newWindow", "selected", "icon", "tabIndex", "onClick"];
26
23
  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
-
28
24
  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
-
25
+ var collapsedIcon = /*#__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: "M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
36
+ }));
37
+ var collapsableIcon = /*#__PURE__*/_react["default"].createElement("svg", {
38
+ xmlns: "http://www.w3.org/2000/svg",
39
+ height: "24px",
40
+ viewBox: "0 0 24 24",
41
+ width: "24px",
42
+ fill: "currentColor"
43
+ }, /*#__PURE__*/_react["default"].createElement("path", {
44
+ d: "M0 0h24v24H0z",
45
+ fill: "none"
46
+ }), /*#__PURE__*/_react["default"].createElement("path", {
47
+ d: "M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"
48
+ }));
49
+ var externalLinkIcon = /*#__PURE__*/_react["default"].createElement("svg", {
50
+ xmlns: "http://www.w3.org/2000/svg",
51
+ height: "24",
52
+ viewBox: "0 0 24 24",
53
+ width: "24",
54
+ fill: "currentColor"
55
+ }, /*#__PURE__*/_react["default"].createElement("path", {
56
+ d: "M0 0h24v24H0z",
57
+ fill: "none"
58
+ }), /*#__PURE__*/_react["default"].createElement("path", {
59
+ 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"
60
+ }));
30
61
  var DxcSidenav = function DxcSidenav(_ref) {
31
- var padding = _ref.padding,
32
- children = _ref.children;
62
+ var children = _ref.children,
63
+ title = _ref.title;
33
64
  var colorsTheme = (0, _useTheme["default"])();
34
65
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
35
- theme: colorsTheme.sidenav
36
- }, /*#__PURE__*/_react["default"].createElement(SideNavContainer, {
37
- padding: padding
38
- }, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
39
- color: colorsTheme.sidenav.backgroundColor
40
- }, children)));
66
+ theme: colorsTheme["sidenav"]
67
+ }, /*#__PURE__*/_react["default"].createElement(SidenavContainer, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
68
+ color: colorsTheme["sidenav"].backgroundColor
69
+ }, title, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
70
+ direction: "column",
71
+ gap: "1rem"
72
+ }, _react["default"].Children.map(children, function (child, index) {
73
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, child, index !== _react["default"].Children.count(children) - 1 && /*#__PURE__*/_react["default"].createElement(Divider, null));
74
+ })))));
41
75
  };
42
-
43
76
  var Title = function Title(_ref2) {
44
77
  var children = _ref2.children;
45
- return /*#__PURE__*/_react["default"].createElement(SideNavMenuTitle, null, children);
78
+ return /*#__PURE__*/_react["default"].createElement(_Bleed["default"], {
79
+ horizontal: "1rem"
80
+ }, /*#__PURE__*/_react["default"].createElement(SidenavTitle, null, children));
46
81
  };
47
-
48
- var Subtitle = function Subtitle(_ref3) {
82
+ var Section = function Section(_ref3) {
49
83
  var children = _ref3.children;
50
- return /*#__PURE__*/_react["default"].createElement(SideNavMenuSubTitle, null, children);
84
+ return /*#__PURE__*/_react["default"].createElement(_Bleed["default"], {
85
+ horizontal: "1rem"
86
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
87
+ direction: "column"
88
+ }, children));
51
89
  };
52
-
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,
58
- children = _ref4.children;
59
- return /*#__PURE__*/_react["default"].createElement(SideNavMenuLink, {
60
- tabIndex: tabIndex,
61
- href: href,
62
- onClick: onClick
63
- }, children);
90
+ var Group = function Group(_ref4) {
91
+ var children = _ref4.children,
92
+ title = _ref4.title,
93
+ _ref4$collapsable = _ref4.collapsable,
94
+ collapsable = _ref4$collapsable === void 0 ? false : _ref4$collapsable,
95
+ icon = _ref4.icon;
96
+ var _useState = (0, _react.useState)(false),
97
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
98
+ collapsed = _useState2[0],
99
+ setCollapsed = _useState2[1];
100
+ var selectedGroup = (0, _react.useMemo)(function () {
101
+ return collapsed ? _react["default"].Children.toArray(children).some(function (child) {
102
+ var _child$props;
103
+ return (_child$props = child["props"]) === null || _child$props === void 0 ? void 0 : _child$props.selected;
104
+ }) : false;
105
+ }, [collapsed, children]);
106
+ return /*#__PURE__*/_react["default"].createElement(SidenavGroup, null, collapsable && title ? /*#__PURE__*/_react["default"].createElement(SidenavGroupTitleButton, {
107
+ role: "button",
108
+ "aria-expanded": !collapsed,
109
+ onClick: function onClick() {
110
+ return setCollapsed(!collapsed);
111
+ },
112
+ selectedGroup: selectedGroup
113
+ }, /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
114
+ src: icon
115
+ }) : icon, title), collapsed ? collapsedIcon : collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
116
+ src: icon
117
+ }) : icon, title), !collapsed && children);
64
118
  };
65
-
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) {
119
+ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
120
+ var href = _ref5.href,
121
+ children = _ref5.children,
122
+ _ref5$newWindow = _ref5.newWindow,
123
+ newWindow = _ref5$newWindow === void 0 ? false : _ref5$newWindow,
124
+ _ref5$selected = _ref5.selected,
125
+ selected = _ref5$selected === void 0 ? false : _ref5$selected,
126
+ icon = _ref5.icon,
127
+ _ref5$tabIndex = _ref5.tabIndex,
128
+ tabIndex = _ref5$tabIndex === void 0 ? 0 : _ref5$tabIndex,
129
+ onClick = _ref5.onClick,
130
+ otherProps = (0, _objectWithoutProperties2["default"])(_ref5, _excluded);
131
+ var setIsSidenavVisibleResponsive = (0, _SidenavContext.useResponsiveSidenavVisibility)();
132
+ var handleClick = function handleClick($event) {
133
+ onClick === null || onClick === void 0 ? void 0 : onClick($event);
134
+ setIsSidenavVisibleResponsive === null || setIsSidenavVisibleResponsive === void 0 ? void 0 : setIsSidenavVisibleResponsive(false);
135
+ };
136
+ return /*#__PURE__*/_react["default"].createElement(SidenavLink, (0, _extends2["default"])({
137
+ selected: selected,
138
+ href: href ? href : undefined,
139
+ target: href ? newWindow ? "_blank" : "_self" : undefined,
140
+ ref: ref,
141
+ tabIndex: tabIndex,
142
+ onClick: handleClick
143
+ }, otherProps), /*#__PURE__*/_react["default"].createElement(SidenavContent, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
144
+ src: icon
145
+ }) : icon, children), newWindow && externalLinkIcon);
146
+ });
147
+ 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) {
67
148
  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
- }, function (props) {
149
+ }, _variables.responsiveSizes.medium, function (props) {
73
150
  return props.theme.scrollBarTrackColor;
74
151
  }, function (props) {
75
152
  return props.theme.scrollBarThumbColor;
76
153
  });
77
-
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) {
154
+ 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) {
79
155
  return props.theme.titleFontFamily;
80
- }, function (props) {
81
- return props.theme.titleFontSize;
82
156
  }, function (props) {
83
157
  return props.theme.titleFontStyle;
84
158
  }, function (props) {
85
159
  return props.theme.titleFontWeight;
86
160
  }, function (props) {
87
- return props.theme.titleFontColor;
161
+ return props.theme.titleFontSize;
88
162
  }, function (props) {
89
- return props.theme.titleFontLetterSpacing;
163
+ return props.theme.titleFontColor;
90
164
  }, function (props) {
91
165
  return props.theme.titleFontTextTransform;
166
+ }, function (props) {
167
+ return props.theme.titleFontLetterSpacing;
92
168
  });
93
-
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;
169
+ var Divider = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n height: 1px;\n background-color: #999999;\n"])));
170
+ 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"])));
171
+ 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 width: 100%;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 18px;\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
172
+ return props.theme.groupTitleFontFamily;
96
173
  }, function (props) {
97
- return props.theme.subtitleFontSize;
174
+ return props.theme.groupTitleFontStyle;
98
175
  }, function (props) {
99
- return props.theme.subtitleFontStyle;
176
+ return props.theme.groupTitleFontWeight;
100
177
  }, function (props) {
101
- return props.theme.subtitleFontWeight;
178
+ return props.theme.groupTitleFontSize;
179
+ });
180
+ 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\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n cursor: pointer;\n\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\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
181
+ return props.theme.groupTitleFontFamily;
102
182
  }, function (props) {
103
- return props.theme.subtitleFontColor;
183
+ return props.theme.groupTitleFontStyle;
104
184
  }, function (props) {
105
- return props.theme.subtitleFontLetterSpacing;
185
+ return props.theme.groupTitleFontWeight;
106
186
  }, function (props) {
107
- return props.theme.subtitleFontTextTransform;
108
- });
109
-
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) {
111
- return props.theme.linkFontFamily;
187
+ return props.theme.groupTitleFontSize;
112
188
  }, function (props) {
113
- return props.theme.linkFontSize;
189
+ return props.theme.linkFocusColor;
114
190
  }, function (props) {
115
- return props.theme.linkFontStyle;
191
+ return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedHoverFontColor, "; background: ").concat(props.theme.groupTitleSelectedHoverBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background: ").concat(props.theme.groupTitleHoverBackgroundColor, ";");
116
192
  }, function (props) {
117
- return props.theme.linkFontWeight;
193
+ return props.theme.groupTitleActiveBackgroundColor;
118
194
  }, function (props) {
119
- return props.theme.linkFontColor;
195
+ return props.theme.groupTitleFontColor;
120
196
  }, function (props) {
197
+ return props.selectedGroup ? "color: ".concat(props.theme.groupTitleSelectedFontColor, "; background: ").concat(props.theme.groupTitleSelectedBackgroundColor, ";") : "color: ".concat(props.theme.groupTitleFontColor, "; background: transparent;");
198
+ });
199
+ 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 letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n line-height: 19px;\n\n ", "\n\n cursor: pointer;\n\n &:hover {\n ", "\n }\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:active {\n color: #ffffff;\n background: #4d4d4d;\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
121
200
  return props.theme.linkFontLetterSpacing;
122
201
  }, function (props) {
123
202
  return props.theme.linkFontTextTransform;
124
203
  }, function (props) {
125
204
  return props.theme.linkTextDecoration;
126
205
  }, function (props) {
127
- return "".concat(props.theme.linkMarginTop, " ").concat(props.theme.linkMarginRight, " ").concat(props.theme.linkMarginBottom, " ").concat(props.theme.linkMarginLeft);
206
+ return props.theme.linkFontFamily;
207
+ }, function (props) {
208
+ return props.theme.linkFontStyle;
209
+ }, function (props) {
210
+ return props.theme.linkFontWeight;
211
+ }, function (props) {
212
+ return props.theme.linkFontSize;
213
+ }, function (props) {
214
+ return props.selected ? "color: ".concat(props.theme.linkSelectedFontColor, "; background: ").concat(props.theme.linkSelectedBackgroundColor, ";") : "color: ".concat(props.theme.linkFontColor, "; background: transparent;");
215
+ }, function (props) {
216
+ return props.selected ? "color: ".concat(props.theme.linkSelectedHoverFontColor, "; background: ").concat(props.theme.linkSelectedHoverBackgroundColor, ";") : "color: ".concat(props.theme.linkFontColor, "; background: ").concat(props.theme.linkHoverBackgroundColor, ";");
128
217
  }, function (props) {
129
218
  return props.theme.linkFocusColor;
130
219
  });
131
-
132
- DxcSidenav.Title = Title;
133
- DxcSidenav.Subtitle = Subtitle;
220
+ var SidenavContent = _styledComponents["default"].span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])));
221
+ DxcSidenav.Section = Section;
222
+ DxcSidenav.Group = Group;
134
223
  DxcSidenav.Link = Link;
224
+ DxcSidenav.Title = Title;
135
225
  var _default = DxcSidenav;
136
226
  exports["default"] = _default;