@dxc-technology/halstack-react 0.0.0-59b9187 → 0.0.0-5a4d834

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 (328) hide show
  1. package/BackgroundColorContext.js +1 -1
  2. package/HalstackContext.d.ts +41 -3
  3. package/HalstackContext.js +28 -18
  4. package/accordion/Accordion.accessibility.test.d.ts +1 -0
  5. package/accordion/Accordion.accessibility.test.js +4 -4
  6. package/accordion/Accordion.js +6 -9
  7. package/accordion/Accordion.stories.tsx +4 -14
  8. package/accordion/Accordion.test.d.ts +1 -0
  9. package/accordion/Accordion.test.js +3 -3
  10. package/accordion-group/AccordionGroup.accessibility.test.d.ts +1 -0
  11. package/accordion-group/AccordionGroup.accessibility.test.js +11 -17
  12. package/accordion-group/AccordionGroup.js +1 -1
  13. package/accordion-group/AccordionGroup.stories.tsx +23 -23
  14. package/accordion-group/AccordionGroup.test.d.ts +1 -0
  15. package/accordion-group/AccordionGroup.test.js +5 -9
  16. package/accordion-group/AccordionGroupAccordion.js +1 -1
  17. package/action-icon/ActionIcon.accessibility.test.d.ts +1 -0
  18. package/action-icon/ActionIcon.accessibility.test.js +4 -4
  19. package/action-icon/ActionIcon.test.d.ts +1 -0
  20. package/action-icon/ActionIcon.test.js +1 -1
  21. package/alert/Alert.accessibility.test.d.ts +1 -0
  22. package/alert/Alert.accessibility.test.js +6 -6
  23. package/alert/Alert.js +7 -4
  24. package/alert/Alert.test.d.ts +1 -0
  25. package/alert/Alert.test.js +1 -1
  26. package/badge/Badge.accessibility.test.d.ts +1 -0
  27. package/badge/Badge.accessibility.test.js +5 -5
  28. package/badge/Badge.test.d.ts +1 -0
  29. package/badge/Badge.test.js +2 -2
  30. package/bar-chart/BarChart.d.ts +4 -0
  31. package/bar-chart/BarChart.js +152 -0
  32. package/bar-chart/BarChart.stories.tsx +281 -0
  33. package/bar-chart/BarChart.test.d.ts +1 -0
  34. package/bar-chart/BarChart.test.js +194 -0
  35. package/bar-chart/theme.d.ts +3 -0
  36. package/bar-chart/theme.js +31 -0
  37. package/bar-chart/types.d.ts +137 -0
  38. package/bar-chart/types.js +5 -0
  39. package/bleed/Bleed.stories.tsx +0 -1
  40. package/box/Box.accessibility.test.d.ts +1 -0
  41. package/box/Box.accessibility.test.js +3 -3
  42. package/box/Box.js +1 -1
  43. package/box/Box.test.d.ts +1 -0
  44. package/box/Box.test.js +1 -1
  45. package/breadcrumbs/Breadcrumbs.accessibility.test.d.ts +1 -0
  46. package/breadcrumbs/Breadcrumbs.accessibility.test.js +96 -0
  47. package/breadcrumbs/Breadcrumbs.d.ts +4 -0
  48. package/breadcrumbs/Breadcrumbs.js +79 -0
  49. package/breadcrumbs/Breadcrumbs.stories.tsx +194 -0
  50. package/breadcrumbs/Breadcrumbs.test.d.ts +1 -0
  51. package/breadcrumbs/Breadcrumbs.test.js +168 -0
  52. package/breadcrumbs/Item.d.ts +4 -0
  53. package/breadcrumbs/Item.js +52 -0
  54. package/breadcrumbs/dropdownTheme.d.ts +53 -0
  55. package/breadcrumbs/dropdownTheme.js +62 -0
  56. package/breadcrumbs/types.d.ts +40 -0
  57. package/breadcrumbs/types.js +5 -0
  58. package/bulleted-list/BulletedList.accessibility.test.d.ts +1 -0
  59. package/bulleted-list/BulletedList.accessibility.test.js +18 -6
  60. package/bulleted-list/BulletedList.js +1 -1
  61. package/button/Button.accessibility.test.d.ts +1 -0
  62. package/button/Button.accessibility.test.js +6 -6
  63. package/button/Button.js +1 -1
  64. package/button/Button.stories.tsx +3 -3
  65. package/button/Button.test.d.ts +1 -0
  66. package/button/Button.test.js +1 -1
  67. package/card/Card.accessibility.test.d.ts +1 -0
  68. package/card/Card.accessibility.test.js +3 -3
  69. package/card/Card.js +3 -2
  70. package/card/Card.stories.tsx +1 -1
  71. package/card/Card.test.d.ts +1 -0
  72. package/card/Card.test.js +1 -1
  73. package/checkbox/Checkbox.accessibility.test.d.ts +1 -0
  74. package/checkbox/Checkbox.accessibility.test.js +5 -5
  75. package/checkbox/Checkbox.js +10 -13
  76. package/checkbox/Checkbox.test.d.ts +1 -0
  77. package/checkbox/Checkbox.test.js +1 -1
  78. package/chip/Chip.accessibility.test.d.ts +1 -0
  79. package/chip/Chip.accessibility.test.js +4 -4
  80. package/chip/Chip.js +3 -1
  81. package/chip/Chip.stories.tsx +1 -1
  82. package/chip/Chip.test.d.ts +1 -0
  83. package/chip/Chip.test.js +1 -1
  84. package/common/coreTokens.d.ts +0 -1
  85. package/common/coreTokens.js +3 -4
  86. package/common/variables.d.ts +47 -3
  87. package/common/variables.js +109 -71
  88. package/container/Container.stories.tsx +3 -3
  89. package/container/types.d.ts +113 -11
  90. package/contextual-menu/ContextualMenu.accessibility.test.d.ts +1 -0
  91. package/contextual-menu/ContextualMenu.accessibility.test.js +15 -3
  92. package/contextual-menu/ContextualMenu.d.ts +3 -5
  93. package/contextual-menu/ContextualMenu.js +118 -53
  94. package/contextual-menu/ContextualMenu.stories.tsx +124 -75
  95. package/contextual-menu/ContextualMenu.test.d.ts +1 -0
  96. package/contextual-menu/ContextualMenu.test.js +200 -24
  97. package/contextual-menu/GroupItem.d.ts +4 -0
  98. package/contextual-menu/GroupItem.js +67 -0
  99. package/contextual-menu/ItemAction.d.ts +4 -0
  100. package/contextual-menu/ItemAction.js +88 -0
  101. package/contextual-menu/MenuItem.d.ts +4 -0
  102. package/contextual-menu/MenuItem.js +29 -0
  103. package/contextual-menu/SingleItem.d.ts +4 -0
  104. package/contextual-menu/SingleItem.js +38 -0
  105. package/contextual-menu/types.d.ts +54 -11
  106. package/date-input/Calendar.js +47 -31
  107. package/date-input/DateInput.accessibility.test.d.ts +1 -0
  108. package/date-input/DateInput.accessibility.test.js +24 -11
  109. package/date-input/DateInput.js +27 -21
  110. package/date-input/DateInput.stories.tsx +18 -12
  111. package/date-input/DateInput.test.d.ts +1 -0
  112. package/date-input/DateInput.test.js +39 -39
  113. package/date-input/DatePicker.js +1 -1
  114. package/date-input/YearPicker.js +10 -5
  115. package/dialog/Dialog.accessibility.test.d.ts +1 -0
  116. package/dialog/Dialog.accessibility.test.js +5 -5
  117. package/dialog/Dialog.js +3 -2
  118. package/dialog/Dialog.stories.tsx +8 -4
  119. package/dialog/Dialog.test.d.ts +1 -0
  120. package/dialog/Dialog.test.js +111 -48
  121. package/divider/Divider.accessibility.test.d.ts +1 -0
  122. package/divider/Divider.accessibility.test.js +2 -2
  123. package/divider/Divider.stories.tsx +2 -1
  124. package/divider/Divider.test.d.ts +1 -0
  125. package/dropdown/Dropdown.accessibility.test.d.ts +1 -0
  126. package/dropdown/Dropdown.accessibility.test.js +12 -9
  127. package/dropdown/Dropdown.js +19 -37
  128. package/dropdown/Dropdown.stories.tsx +11 -11
  129. package/dropdown/Dropdown.test.d.ts +1 -0
  130. package/dropdown/Dropdown.test.js +101 -72
  131. package/dropdown/DropdownMenu.js +4 -4
  132. package/dropdown/DropdownMenuItem.js +2 -1
  133. package/file-input/FileInput.accessibility.test.d.ts +1 -0
  134. package/file-input/FileInput.accessibility.test.js +30 -23
  135. package/file-input/FileInput.js +3 -8
  136. package/file-input/FileInput.test.d.ts +1 -0
  137. package/file-input/FileInput.test.js +44 -22
  138. package/file-input/FileItem.js +7 -3
  139. package/file-input/types.d.ts +0 -4
  140. package/footer/Footer.accessibility.test.d.ts +1 -0
  141. package/footer/Footer.accessibility.test.js +13 -5
  142. package/footer/Footer.js +1 -1
  143. package/footer/Footer.stories.tsx +12 -0
  144. package/footer/Footer.test.d.ts +1 -0
  145. package/footer/Footer.test.js +1 -1
  146. package/footer/Icons.js +2 -30
  147. package/grid/Grid.stories.tsx +3 -1
  148. package/header/Header.accessibility.test.d.ts +1 -0
  149. package/header/Header.accessibility.test.js +16 -6
  150. package/header/Header.js +3 -2
  151. package/header/Header.stories.tsx +17 -1
  152. package/header/Header.test.d.ts +1 -0
  153. package/header/Header.test.js +1 -1
  154. package/header/Icons.js +1 -6
  155. package/heading/Heading.accessibility.test.d.ts +1 -0
  156. package/heading/Heading.accessibility.test.js +3 -3
  157. package/heading/Heading.js +1 -1
  158. package/heading/Heading.test.d.ts +1 -0
  159. package/heading/Heading.test.js +1 -14
  160. package/icon/Icon.accessibility.test.d.ts +1 -0
  161. package/icon/Icon.accessibility.test.js +2 -2
  162. package/icon/Icon.js +1 -1
  163. package/icon/Icon.stories.tsx +1 -1
  164. package/image/Image.accessibility.test.d.ts +1 -0
  165. package/image/Image.accessibility.test.js +3 -3
  166. package/image/Image.js +1 -1
  167. package/layout/ApplicationLayout.js +4 -4
  168. package/link/Link.accessibility.test.d.ts +1 -0
  169. package/link/Link.accessibility.test.js +8 -12
  170. package/link/Link.js +1 -1
  171. package/link/Link.stories.tsx +2 -2
  172. package/link/Link.test.d.ts +1 -0
  173. package/link/Link.test.js +1 -1
  174. package/main.d.ts +3 -1
  175. package/main.js +15 -1
  176. package/nav-tabs/NavTabs.accessibility.test.d.ts +1 -0
  177. package/nav-tabs/NavTabs.accessibility.test.js +3 -3
  178. package/nav-tabs/NavTabs.js +19 -4
  179. package/nav-tabs/NavTabs.stories.tsx +18 -3
  180. package/nav-tabs/NavTabs.test.d.ts +1 -0
  181. package/nav-tabs/NavTabs.test.js +9 -7
  182. package/nav-tabs/Tab.js +7 -7
  183. package/number-input/NumberInput.accessibility.test.d.ts +1 -0
  184. package/number-input/NumberInput.accessibility.test.js +9 -10
  185. package/number-input/NumberInput.js +6 -3
  186. package/number-input/NumberInput.stories.tsx +11 -16
  187. package/number-input/NumberInput.test.d.ts +1 -0
  188. package/number-input/NumberInput.test.js +6 -7
  189. package/package.json +27 -21
  190. package/paginator/Paginator.accessibility.test.d.ts +1 -0
  191. package/paginator/Paginator.accessibility.test.js +4 -5
  192. package/paginator/Paginator.js +9 -5
  193. package/paginator/Paginator.test.d.ts +1 -0
  194. package/paginator/Paginator.test.js +2 -3
  195. package/paragraph/Paragraph.accessibility.test.d.ts +1 -0
  196. package/paragraph/Paragraph.accessibility.test.js +2 -2
  197. package/password-input/PasswordInput.accessibility.test.d.ts +1 -0
  198. package/password-input/PasswordInput.accessibility.test.js +7 -8
  199. package/password-input/PasswordInput.js +11 -7
  200. package/password-input/PasswordInput.stories.tsx +10 -1
  201. package/password-input/PasswordInput.test.d.ts +1 -0
  202. package/password-input/PasswordInput.test.js +6 -7
  203. package/progress-bar/ProgressBar.accessibility.test.d.ts +1 -0
  204. package/progress-bar/ProgressBar.accessibility.test.js +3 -3
  205. package/progress-bar/ProgressBar.js +6 -4
  206. package/progress-bar/ProgressBar.test.d.ts +1 -0
  207. package/progress-bar/ProgressBar.test.js +1 -1
  208. package/quick-nav/QuickNav.accessibility.test.d.ts +1 -0
  209. package/quick-nav/QuickNav.accessibility.test.js +2 -2
  210. package/quick-nav/QuickNav.js +1 -1
  211. package/radio-group/Radio.js +6 -9
  212. package/radio-group/RadioGroup.accessibility.test.d.ts +1 -0
  213. package/radio-group/RadioGroup.accessibility.test.js +4 -4
  214. package/radio-group/RadioGroup.js +14 -16
  215. package/radio-group/RadioGroup.test.d.ts +1 -0
  216. package/radio-group/RadioGroup.test.js +3 -5
  217. package/resultset-table/ResultsetTable.accessibility.test.d.ts +1 -0
  218. package/resultset-table/ResultsetTable.accessibility.test.js +16 -6
  219. package/resultset-table/ResultsetTable.js +41 -13
  220. package/resultset-table/ResultsetTable.stories.tsx +14 -2
  221. package/resultset-table/ResultsetTable.test.d.ts +1 -0
  222. package/resultset-table/ResultsetTable.test.js +103 -34
  223. package/resultset-table/types.d.ts +4 -3
  224. package/select/Listbox.d.ts +3 -3
  225. package/select/Listbox.js +29 -27
  226. package/select/Option.d.ts +3 -3
  227. package/select/Option.js +13 -8
  228. package/select/Select.accessibility.test.d.ts +1 -0
  229. package/select/Select.accessibility.test.js +18 -8
  230. package/select/Select.js +75 -190
  231. package/select/Select.stories.tsx +41 -20
  232. package/select/Select.test.d.ts +1 -0
  233. package/select/Select.test.js +42 -150
  234. package/select/selectUtils.d.ts +41 -0
  235. package/select/selectUtils.js +129 -0
  236. package/sidenav/Sidenav.accessibility.test.d.ts +1 -0
  237. package/sidenav/Sidenav.accessibility.test.js +3 -3
  238. package/sidenav/Sidenav.js +1 -1
  239. package/sidenav/Sidenav.stories.tsx +1 -1
  240. package/sidenav/Sidenav.test.d.ts +1 -0
  241. package/sidenav/Sidenav.test.js +1 -1
  242. package/slider/Slider.accessibility.test.d.ts +1 -0
  243. package/slider/Slider.accessibility.test.js +5 -6
  244. package/slider/Slider.js +11 -13
  245. package/slider/Slider.stories.tsx +180 -0
  246. package/slider/Slider.test.d.ts +1 -0
  247. package/slider/Slider.test.js +13 -11
  248. package/spinner/Spinner.accessibility.test.d.ts +1 -0
  249. package/spinner/Spinner.accessibility.test.js +6 -6
  250. package/spinner/Spinner.d.ts +1 -1
  251. package/spinner/Spinner.js +32 -47
  252. package/spinner/Spinner.test.d.ts +1 -0
  253. package/spinner/Spinner.test.js +1 -1
  254. package/status-light/StatusLight.accessibility.test.d.ts +1 -0
  255. package/status-light/StatusLight.accessibility.test.js +8 -8
  256. package/status-light/StatusLight.test.d.ts +1 -0
  257. package/status-light/StatusLight.test.js +1 -1
  258. package/switch/Switch.accessibility.test.d.ts +1 -0
  259. package/switch/Switch.accessibility.test.js +14 -5
  260. package/switch/Switch.js +6 -9
  261. package/switch/Switch.stories.tsx +12 -0
  262. package/switch/Switch.test.d.ts +1 -0
  263. package/switch/Switch.test.js +1 -1
  264. package/table/Table.accessibility.test.d.ts +1 -0
  265. package/table/Table.accessibility.test.js +16 -6
  266. package/table/Table.js +1 -1
  267. package/table/Table.stories.tsx +13 -1
  268. package/table/Table.test.d.ts +1 -0
  269. package/table/Table.test.js +2 -4
  270. package/tabs/Tab.js +1 -1
  271. package/tabs/Tabs.accessibility.test.d.ts +1 -0
  272. package/tabs/Tabs.accessibility.test.js +3 -3
  273. package/tabs/Tabs.js +1 -1
  274. package/tabs/Tabs.stories.tsx +7 -1
  275. package/tabs/Tabs.test.d.ts +1 -0
  276. package/tabs/Tabs.test.js +1 -1
  277. package/tag/Tag.accessibility.test.d.ts +1 -0
  278. package/tag/Tag.accessibility.test.js +4 -4
  279. package/tag/Tag.js +1 -1
  280. package/tag/Tag.stories.tsx +1 -1
  281. package/tag/Tag.test.d.ts +1 -0
  282. package/tag/Tag.test.js +1 -1
  283. package/text-input/Suggestion.js +1 -1
  284. package/text-input/Suggestions.js +14 -6
  285. package/text-input/TextInput.accessibility.test.d.ts +1 -0
  286. package/text-input/TextInput.accessibility.test.js +11 -12
  287. package/text-input/TextInput.js +49 -68
  288. package/text-input/TextInput.stories.tsx +19 -7
  289. package/text-input/TextInput.test.d.ts +1 -0
  290. package/text-input/TextInput.test.js +2 -3
  291. package/textarea/Textarea.accessibility.test.d.ts +1 -0
  292. package/textarea/Textarea.accessibility.test.js +7 -7
  293. package/textarea/Textarea.js +14 -13
  294. package/textarea/Textarea.test.d.ts +1 -0
  295. package/textarea/Textarea.test.js +1 -1
  296. package/toggle-group/ToggleGroup.accessibility.test.d.ts +1 -0
  297. package/toggle-group/ToggleGroup.accessibility.test.js +5 -5
  298. package/toggle-group/ToggleGroup.js +6 -9
  299. package/toggle-group/ToggleGroup.stories.tsx +1 -1
  300. package/toggle-group/ToggleGroup.test.d.ts +1 -0
  301. package/toggle-group/ToggleGroup.test.js +1 -1
  302. package/tooltip/Tooltip.accessibility.test.d.ts +1 -0
  303. package/tooltip/Tooltip.accessibility.test.js +144 -0
  304. package/tooltip/Tooltip.d.ts +4 -0
  305. package/tooltip/Tooltip.js +50 -0
  306. package/tooltip/Tooltip.stories.tsx +111 -0
  307. package/tooltip/Tooltip.test.d.ts +1 -0
  308. package/tooltip/Tooltip.test.js +112 -0
  309. package/tooltip/types.d.ts +16 -0
  310. package/tooltip/types.js +5 -0
  311. package/typography/Typography.accessibility.test.d.ts +1 -0
  312. package/typography/Typography.accessibility.test.js +12 -12
  313. package/typography/Typography.stories.tsx +1 -3
  314. package/typography/Typography.test.js +23 -0
  315. package/useTheme.d.ts +30 -3
  316. package/useTranslatedLabels.d.ts +11 -0
  317. package/utils/BaseTypography.js +45 -41
  318. package/utils/FocusLock.js +3 -2
  319. package/utils/useWidth.d.ts +2 -0
  320. package/utils/useWidth.js +30 -0
  321. package/wizard/Wizard.accessibility.test.d.ts +1 -0
  322. package/wizard/Wizard.accessibility.test.js +3 -3
  323. package/wizard/Wizard.js +1 -9
  324. package/wizard/Wizard.stories.tsx +1 -1
  325. package/wizard/Wizard.test.d.ts +1 -0
  326. package/wizard/Wizard.test.js +1 -1
  327. package/contextual-menu/MenuItemAction.d.ts +0 -4
  328. package/contextual-menu/MenuItemAction.js +0 -46
@@ -0,0 +1,281 @@
1
+ import React from "react";
2
+ import Title from "../../.storybook/components/Title";
3
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
4
+ import DxcBarChart from "./BarChart";
5
+ import { userEvent, within } from "@storybook/test";
6
+
7
+ export default {
8
+ title: "Bar Chart",
9
+ component: DxcBarChart,
10
+ };
11
+
12
+ const series = [
13
+ {
14
+ title: "Series 1",
15
+ type: "bar",
16
+ data: [
17
+ { x: 0, y: 100000 },
18
+ { x: 1, y: 200000 },
19
+ { x: 2, y: 300000 },
20
+ { x: 3, y: 400000 },
21
+ { x: 4, y: 500000 },
22
+ ],
23
+ },
24
+ {
25
+ title: "Series 2",
26
+ type: "bar",
27
+ data: [
28
+ { x: 0, y: 50000 },
29
+ { x: 1, y: 100000 },
30
+ { x: 2, y: 150000 },
31
+ { x: 3, y: 200000 },
32
+ { x: 4, y: 250000 },
33
+ ],
34
+ },
35
+ {
36
+ title: "Series 3",
37
+ type: "bar",
38
+ data: [
39
+ { x: 0, y: 200000 },
40
+ { x: 1, y: 400000 },
41
+ { x: 2, y: 600000 },
42
+ { x: 3, y: 800000 },
43
+ { x: 4, y: 1000000 },
44
+ ],
45
+ },
46
+ {
47
+ title: "Series 4",
48
+ type: "bar",
49
+ data: [
50
+ { x: 0, y: 100000 },
51
+ { x: 1, y: 200000 },
52
+ { x: 2, y: 400000 },
53
+ { x: 3, y: 700000 },
54
+ { x: 4, y: 900000 },
55
+ ],
56
+ },
57
+ {
58
+ title: "Series 5",
59
+ type: "bar",
60
+ data: [
61
+ { x: 0, y: 50000 },
62
+ { x: 1, y: 500000 },
63
+ { x: 2, y: 800000 },
64
+ { x: 3, y: 900000 },
65
+ { x: 4, y: 100000 },
66
+ ],
67
+ },
68
+ {
69
+ title: "Series 6",
70
+ type: "bar",
71
+ data: [
72
+ { x: 0, y: 10000 },
73
+ { x: 1, y: 250000 },
74
+ { x: 2, y: 550000 },
75
+ { x: 3, y: 750000 },
76
+ { x: 4, y: 950000 },
77
+ ],
78
+ },
79
+ {
80
+ title: "Average",
81
+ type: "threshold",
82
+ y: 400000,
83
+ },
84
+ ];
85
+
86
+ const BarChart = () => (
87
+ <>
88
+ <Title title="Basic bar chart" theme="light" level={4} />
89
+ <ExampleContainer>
90
+ <DxcBarChart
91
+ series={[
92
+ {
93
+ title: "Series 1",
94
+ type: "bar",
95
+ data: [
96
+ { x: 0, y: 100000 },
97
+ { x: 1, y: 200000 },
98
+ { x: 2, y: 300000 },
99
+ { x: 3, y: 400000 },
100
+ { x: 4, y: 500000 },
101
+ ],
102
+ },
103
+ {
104
+ title: "Average",
105
+ type: "threshold",
106
+ y: 300000,
107
+ },
108
+ ]}
109
+ xDomain={[0, 1, 2, 3, 4]}
110
+ yDomain={[0, 600000]}
111
+ />
112
+ </ExampleContainer>
113
+ <Title title="Horizontal bar chart" theme="light" level={4} />
114
+ <ExampleContainer>
115
+ <DxcBarChart
116
+ series={[
117
+ {
118
+ title: "Series 1",
119
+ type: "bar",
120
+ data: [
121
+ { x: 0, y: 100000 },
122
+ { x: 1, y: 200000 },
123
+ { x: 2, y: 300000 },
124
+ ],
125
+ },
126
+ {
127
+ title: "Series 2",
128
+ type: "bar",
129
+ data: [
130
+ { x: 0, y: 50000 },
131
+ { x: 1, y: 100000 },
132
+ { x: 2, y: 150000 },
133
+ ],
134
+ },
135
+ ]}
136
+ xDomain={[0, 1, 2]}
137
+ yDomain={[0, 600000]}
138
+ horizontalBars
139
+ />
140
+ </ExampleContainer>
141
+ <Title title="Stacked bar chart" theme="light" level={4} />
142
+ <ExampleContainer>
143
+ <DxcBarChart series={series as any} xDomain={[0, 1, 2, 3, 4]} yDomain={[0, 5000000]} stackedBars />
144
+ </ExampleContainer>
145
+ <Title title="Stacked & horizontal bar chart" theme="light" level={4} />
146
+ <ExampleContainer>
147
+ <DxcBarChart series={series as any} xDomain={[0, 1, 2, 3, 4]} yDomain={[0, 5000000]} stackedBars horizontalBars />
148
+ </ExampleContainer>
149
+ <Title title="Complete bar chart" theme="light" level={4} />
150
+ <ExampleContainer>
151
+ <DxcBarChart
152
+ chartTitle="Bar Chart"
153
+ series={series as any}
154
+ xDomain={[0, 1, 2, 3, 4]}
155
+ yDomain={[0, 1000000]}
156
+ xTitle="X Axis"
157
+ yTitle="Y Axis"
158
+ showFilter
159
+ showLegend
160
+ legendTitle="Legend"
161
+ />
162
+ </ExampleContainer>
163
+ <Title title="Error state" theme="light" level={4} />
164
+ <ExampleContainer>
165
+ <DxcBarChart series={[]} error="Error loading data." />
166
+ </ExampleContainer>
167
+ <Title title="Error state with 'Retry' action" theme="light" level={4} />
168
+ <ExampleContainer>
169
+ <DxcBarChart series={[]} error="Error loading data." onRetry={() => {}} />
170
+ </ExampleContainer>
171
+ <Title title="Loading state" theme="light" level={4} />
172
+ <ExampleContainer>
173
+ <DxcBarChart series={[]} loading />
174
+ </ExampleContainer>
175
+ <Title title="No data" theme="light" level={4} />
176
+ <ExampleContainer>
177
+ <DxcBarChart series={[]} />
178
+ </ExampleContainer>
179
+ <Title title="No matching data" theme="light" level={4} />
180
+ <ExampleContainer>
181
+ <DxcBarChart
182
+ series={[
183
+ {
184
+ title: "Series 1",
185
+ type: "bar",
186
+ data: [
187
+ { x: 0, y: 100000 },
188
+ { x: 1, y: 200000 },
189
+ { x: 2, y: 300000 },
190
+ { x: 3, y: 400000 },
191
+ { x: 4, y: 500000 },
192
+ ],
193
+ },
194
+ {
195
+ title: "Series 2",
196
+ type: "bar",
197
+ data: [
198
+ { x: 0, y: 50000 },
199
+ { x: 1, y: 100000 },
200
+ { x: 2, y: 150000 },
201
+ { x: 3, y: 200000 },
202
+ { x: 4, y: 250000 },
203
+ ],
204
+ },
205
+ {
206
+ title: "Series 3",
207
+ type: "bar",
208
+ data: [
209
+ { x: 0, y: 200000 },
210
+ { x: 1, y: 400000 },
211
+ { x: 2, y: 600000 },
212
+ { x: 3, y: 800000 },
213
+ { x: 4, y: 1000000 },
214
+ ],
215
+ },
216
+ {
217
+ title: "Series 4",
218
+ type: "bar",
219
+ data: [
220
+ { x: 0, y: 100000 },
221
+ { x: 1, y: 200000 },
222
+ { x: 2, y: 400000 },
223
+ { x: 3, y: 700000 },
224
+ { x: 4, y: 900000 },
225
+ ],
226
+ },
227
+ {
228
+ title: "Series 5",
229
+ type: "bar",
230
+ data: [
231
+ { x: 0, y: 50000 },
232
+ { x: 1, y: 500000 },
233
+ { x: 2, y: 800000 },
234
+ { x: 3, y: 900000 },
235
+ { x: 4, y: 100000 },
236
+ ],
237
+ },
238
+ {
239
+ title: "Series 6",
240
+ type: "bar",
241
+ data: [
242
+ { x: 0, y: 10000 },
243
+ { x: 1, y: 250000 },
244
+ { x: 2, y: 550000 },
245
+ { x: 3, y: 750000 },
246
+ { x: 4, y: 950000 },
247
+ ],
248
+ },
249
+ {
250
+ title: "Series 7",
251
+ type: "bar",
252
+ data: [
253
+ { x: 0, y: 20000 },
254
+ { x: 1, y: 150000 },
255
+ { x: 2, y: 350000 },
256
+ { x: 3, y: 450000 },
257
+ { x: 4, y: 750000 },
258
+ ],
259
+ },
260
+ {
261
+ title: "Average",
262
+ type: "threshold",
263
+ y: 400000,
264
+ },
265
+ ]}
266
+ xDomain={[0, 1, 2, 3, 4]}
267
+ yDomain={[0, 1000000]}
268
+ showFilter
269
+ xTitle="X Axis"
270
+ yTitle="Y Axis"
271
+ legendTitle="Legend"
272
+ />
273
+ </ExampleContainer>
274
+ </>
275
+ );
276
+
277
+ export const Chromatic = BarChart.bind({});
278
+ Chromatic.play = async ({ canvasElement }) => {
279
+ const canvas = within(canvasElement);
280
+ await userEvent.click(canvas.getAllByTitle("Clear selection")[1]);
281
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
7
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _react2 = require("@testing-library/react");
10
+ var _BarChart = _interopRequireDefault(require("./BarChart"));
11
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
12
+ // Mocking applyTheme function to avoid issues with Cloudscape theming
13
+ jest.mock("@cloudscape-design/components/theming", function () {
14
+ return {
15
+ applyTheme: jest.fn()
16
+ };
17
+ });
18
+
19
+ // Mocking DOMRect for Radix Primitive Popover
20
+ global.globalThis = global;
21
+ global.DOMRect = {
22
+ fromRect: function fromRect() {
23
+ return {
24
+ top: 0,
25
+ left: 0,
26
+ bottom: 0,
27
+ right: 0,
28
+ width: 0,
29
+ height: 0
30
+ };
31
+ }
32
+ };
33
+ global.ResizeObserver = /*#__PURE__*/function () {
34
+ function ResizeObserver() {
35
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
36
+ }
37
+ return (0, _createClass2["default"])(ResizeObserver, [{
38
+ key: "observe",
39
+ value: function observe() {}
40
+ }, {
41
+ key: "unobserve",
42
+ value: function unobserve() {}
43
+ }, {
44
+ key: "disconnect",
45
+ value: function disconnect() {}
46
+ }]);
47
+ }();
48
+ describe("Bar Chart component tests", function () {
49
+ test("onFilterChange is called when the value of the select is changed", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
50
+ var onFilterChange, _render, getByText, getByRole, getAllByRole;
51
+ return _regenerator["default"].wrap(function _callee$(_context) {
52
+ while (1) switch (_context.prev = _context.next) {
53
+ case 0:
54
+ onFilterChange = jest.fn();
55
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_BarChart["default"], {
56
+ showFilter: true,
57
+ onFilterChange: onFilterChange,
58
+ chartTitle: "Bar Chart",
59
+ series: [{
60
+ title: "Series 1",
61
+ type: "bar",
62
+ data: [{
63
+ x: 0,
64
+ y: 100000
65
+ }, {
66
+ x: 1,
67
+ y: 200000
68
+ }, {
69
+ x: 2,
70
+ y: 300000
71
+ }, {
72
+ x: 3,
73
+ y: 400000
74
+ }, {
75
+ x: 4,
76
+ y: 500000
77
+ }]
78
+ }, {
79
+ title: "Average",
80
+ type: "threshold",
81
+ y: 300000
82
+ }]
83
+ })), getByText = _render.getByText, getByRole = _render.getByRole, getAllByRole = _render.getAllByRole;
84
+ expect(getByText("Bar Chart")).toBeTruthy();
85
+ expect(getByText("Filter displayed data")).toBeTruthy();
86
+ _context.next = 6;
87
+ return _userEvent["default"].click(getByRole("combobox"));
88
+ case 6:
89
+ expect(getByText("Series 1")).toBeTruthy();
90
+ expect(getByText("Average")).toBeTruthy();
91
+ _context.next = 10;
92
+ return _userEvent["default"].click(getAllByRole("option")[1]);
93
+ case 10:
94
+ expect(onFilterChange).toHaveBeenCalled();
95
+ expect(onFilterChange).toHaveBeenCalledWith(["Series 1"]);
96
+ case 12:
97
+ case "end":
98
+ return _context.stop();
99
+ }
100
+ }, _callee);
101
+ })));
102
+ test("onHighlightChange is called when a legend's series is hovered/clicked", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
103
+ var onHighlightChange, _render2, getByText;
104
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
105
+ while (1) switch (_context2.prev = _context2.next) {
106
+ case 0:
107
+ onHighlightChange = jest.fn();
108
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_BarChart["default"], {
109
+ showLegend: true,
110
+ legendTitle: "Legend",
111
+ onHighlightChange: onHighlightChange,
112
+ series: [{
113
+ title: "Series 1",
114
+ type: "bar",
115
+ data: [{
116
+ x: 0,
117
+ y: 100000
118
+ }, {
119
+ x: 1,
120
+ y: 200000
121
+ }, {
122
+ x: 2,
123
+ y: 300000
124
+ }, {
125
+ x: 3,
126
+ y: 400000
127
+ }, {
128
+ x: 4,
129
+ y: 500000
130
+ }]
131
+ }, {
132
+ title: "Average",
133
+ type: "threshold",
134
+ y: 300000
135
+ }]
136
+ })), getByText = _render2.getByText;
137
+ expect(getByText("Legend")).toBeTruthy();
138
+ _context2.next = 5;
139
+ return _userEvent["default"].hover(getByText("Series 1"));
140
+ case 5:
141
+ expect(onHighlightChange).toHaveBeenCalled();
142
+ expect(onHighlightChange).toHaveBeenCalledWith("Series 1");
143
+ case 7:
144
+ case "end":
145
+ return _context2.stop();
146
+ }
147
+ }, _callee2);
148
+ })));
149
+ test("onRetry is called when the retry button is clicked", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
150
+ var onRetry, _render3, getByText, getByRole;
151
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
152
+ while (1) switch (_context3.prev = _context3.next) {
153
+ case 0:
154
+ onRetry = jest.fn();
155
+ _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_BarChart["default"], {
156
+ onRetry: onRetry,
157
+ error: "Error",
158
+ series: [{
159
+ title: "Series 1",
160
+ type: "bar",
161
+ data: [{
162
+ x: 0,
163
+ y: 100000
164
+ }, {
165
+ x: 1,
166
+ y: 200000
167
+ }, {
168
+ x: 2,
169
+ y: 300000
170
+ }, {
171
+ x: 3,
172
+ y: 400000
173
+ }, {
174
+ x: 4,
175
+ y: 500000
176
+ }]
177
+ }, {
178
+ title: "Average",
179
+ type: "threshold",
180
+ y: 300000
181
+ }]
182
+ })), getByText = _render3.getByText, getByRole = _render3.getByRole;
183
+ expect(getByText("Error")).toBeTruthy();
184
+ _context3.next = 5;
185
+ return _userEvent["default"].click(getByRole("button"));
186
+ case 5:
187
+ expect(onRetry).toHaveBeenCalled();
188
+ case 6:
189
+ case "end":
190
+ return _context3.stop();
191
+ }
192
+ }, _callee3);
193
+ })));
194
+ });
@@ -0,0 +1,3 @@
1
+ import { Theme } from "@cloudscape-design/components/theming";
2
+ declare const theme: Theme;
3
+ export default theme;
@@ -0,0 +1,31 @@
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 _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
9
+ var theme = {
10
+ tokens: {
11
+ colorChartsPaletteCategorical1: _coreTokens["default"].color_purple_500,
12
+ colorChartsPaletteCategorical2: _coreTokens["default"].color_blue_600,
13
+ colorChartsPaletteCategorical3: _coreTokens["default"].color_green_700,
14
+ colorChartsPaletteCategorical4: _coreTokens["default"].color_red_500,
15
+ colorChartsPaletteCategorical5: _coreTokens["default"].color_orange_700,
16
+ colorChartsPaletteCategorical6: _coreTokens["default"].color_yellow_800,
17
+ colorChartsPaletteCategorical7: _coreTokens["default"].color_purple_600,
18
+ colorChartsPaletteCategorical8: _coreTokens["default"].color_blue_800,
19
+ colorChartsPaletteCategorical9: _coreTokens["default"].color_green_900,
20
+ colorChartsPaletteCategorical10: _coreTokens["default"].color_red_700,
21
+ colorChartsPaletteCategorical11: _coreTokens["default"].color_orange_800,
22
+ colorChartsPaletteCategorical12: _coreTokens["default"].color_yellow_900,
23
+ colorChartsThresholdNeutral: _coreTokens["default"].color_grey_700,
24
+ fontFamilyBase: "Open Sans, sans-serif",
25
+ fontSizeBodyS: "12px",
26
+ colorTextBodySecondary: _coreTokens["default"].color_grey_700,
27
+ fontSizeBodyM: "14px",
28
+ colorTextBodyDefault: _coreTokens["default"].color_grey_900
29
+ }
30
+ };
31
+ var _default = exports["default"] = theme;
@@ -0,0 +1,137 @@
1
+ /// <reference types="react" />
2
+ type DataTypes = string | number;
3
+ type ThresholdSeries<X> = {
4
+ /**
5
+ * Title of the series.
6
+ */
7
+ title: string;
8
+ /**
9
+ * Type of the series. It can be either "threshold" or "bar".
10
+ */
11
+ type: "threshold";
12
+ /**
13
+ * Value of the y axis.
14
+ */
15
+ y?: number;
16
+ /**
17
+ * Value of the x axis. It can be a string or a number.
18
+ */
19
+ x?: X;
20
+ };
21
+ type BarDataSeries<X> = {
22
+ /**
23
+ * Title of the series.
24
+ */
25
+ title: string;
26
+ /**
27
+ * Type of the series. It can be either "threshold" or "bar".
28
+ */
29
+ type: "bar";
30
+ /**
31
+ * Data points of the series. Each data point is represented by an object with an x value and a y value.
32
+ */
33
+ data: {
34
+ x: X;
35
+ y: number;
36
+ }[];
37
+ };
38
+ type BarChartSeries<X> = ThresholdSeries<X> | BarDataSeries<X>;
39
+ type BarChartProps<X extends DataTypes> = {
40
+ /**
41
+ * Title of the chart.
42
+ */
43
+ chartTitle?: string;
44
+ /**
45
+ * Error state of the chart. If set, the chart will display an error message with a retry action.
46
+ */
47
+ error?: string;
48
+ /**
49
+ * When set to true, the x and y axes are swapped, resulting in bars
50
+ * being displayed horizontally rather than vertically. This feature is
51
+ * applicable only when the chart contains exclusively bar series.
52
+ */
53
+ horizontalBars?: boolean;
54
+ /**
55
+ * Title of the chart legend.
56
+ */
57
+ legendTitle?: string;
58
+ /**
59
+ * If true, activates the loading state of the component.
60
+ */
61
+ loading?: boolean;
62
+ /**
63
+ * This function will be called when the user changes the displayed
64
+ * data series with the default filter. This event is only triggered
65
+ * when 'showFilter' is set to 'true'.
66
+ */
67
+ onFilterChange?: (visibleSeries: string[]) => void;
68
+ /**
69
+ * This function will be called when the user hovers over a data series
70
+ * through the chart legend. This event is only triggered when
71
+ * 'showLegend' is set to 'true'.
72
+ */
73
+ onHighlightChange?: (highlightedSeries?: string) => void;
74
+ /**
75
+ * This function will be called when the user clicks the retry action
76
+ * in the error state. A 'DxcButton' component will be
77
+ * displayed if this prop is defined to perform the action.
78
+ */
79
+ onRetry?: () => void;
80
+ /**
81
+ * An array of objects representing the data series to be displayed in
82
+ * the chart.
83
+ */
84
+ series: BarChartSeries<X>[];
85
+ /**
86
+ * If true, the chart will display a filter to allow the user to change
87
+ * the displayed data series.
88
+ */
89
+ showFilter?: boolean;
90
+ /**
91
+ * If true, the chart will display a legend with the data series
92
+ * information.
93
+ */
94
+ showLegend?: boolean;
95
+ /**
96
+ * If true, bars in the same data point are stacked instead of being
97
+ * grouped next to each other.
98
+ */
99
+ stackedBars?: boolean;
100
+ /**
101
+ * Specifies the x-axis domain, defining the visible range. For
102
+ * numerical data, use a tuple: [minValue, maxValue]. For categorical
103
+ * data, use an array of category strings. Explicitly setting this is
104
+ * recommended. If not set, the component will auto-fit all data
105
+ * points.
106
+ */
107
+ xDomain?: X[];
108
+ /**
109
+ * Function to format the displayed label of an x-axis mark.
110
+ */
111
+ xFormatter?: (value: X) => string;
112
+ /**
113
+ * Title of the x axis.
114
+ */
115
+ xTitle?: string;
116
+ /**
117
+ * Specifies the y-axis domain, defining the visible range. The domain
118
+ * is defined by a tuple: [minValue, maxValue]. Explicitly setting this
119
+ * is recommended. If not set, the component will auto-fit all data
120
+ * points.
121
+ */
122
+ yDomain?: [number, number];
123
+ /**
124
+ * Function to format the displayed label of an y-axis mark.
125
+ */
126
+ yFormatter?: (value: number) => string;
127
+ /**
128
+ * Title of the y axis.
129
+ */
130
+ yTitle?: string;
131
+ };
132
+ type InsetWrapperProps = {
133
+ condition: boolean;
134
+ children: React.ReactNode;
135
+ };
136
+ export default BarChartProps;
137
+ export type { DataTypes, InsetWrapperProps };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -111,7 +111,6 @@ export const Chromatic = () => (
111
111
  <Placeholder></Placeholder>
112
112
  </DxcFlex>
113
113
  </Container>
114
-
115
114
  <Title title="Horizontal = none" theme="light" level={4} />
116
115
  <Container>
117
116
  <DxcFlex direction="column" gap="1.5rem">
@@ -0,0 +1 @@
1
+ export {};
@@ -5,8 +5,8 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
5
5
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
6
  var _react = _interopRequireDefault(require("react"));
7
7
  var _react2 = require("@testing-library/react");
8
- var _jestAxe = require("jest-axe");
9
- var _Box = _interopRequireDefault(require("../box/Box.tsx"));
8
+ var _axeHelper = require("../../test/accessibility/axe-helper.js");
9
+ var _Box = _interopRequireDefault(require("../box/Box"));
10
10
  describe("Box component accessibility tests", function () {
11
11
  it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
12
12
  var _render, container, results;
@@ -20,7 +20,7 @@ describe("Box component accessibility tests", function () {
20
20
  display: "flex"
21
21
  }, "Box")), container = _render.container;
22
22
  _context.next = 3;
23
- return (0, _jestAxe.axe)(container);
23
+ return (0, _axeHelper.axe)(container);
24
24
  case 3:
25
25
  results = _context.sent;
26
26
  expect(results).toHaveNoViolations();