@dxc-technology/halstack-react 0.0.0-bd47c58 → 0.0.0-bdaadec

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 (329) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +4 -21
  3. package/HalstackContext.d.ts +43 -138
  4. package/HalstackContext.js +10 -35
  5. package/accordion/Accordion.accessibility.test.js +71 -0
  6. package/accordion/Accordion.js +31 -84
  7. package/accordion/Accordion.stories.tsx +5 -51
  8. package/accordion/Accordion.test.js +18 -33
  9. package/accordion/types.d.ts +6 -6
  10. package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
  11. package/accordion-group/AccordionGroup.d.ts +2 -3
  12. package/accordion-group/AccordionGroup.js +17 -44
  13. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  14. package/accordion-group/AccordionGroup.test.js +42 -60
  15. package/accordion-group/AccordionGroupAccordion.js +11 -23
  16. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  17. package/accordion-group/AccordionGroupContext.js +8 -0
  18. package/accordion-group/types.d.ts +7 -7
  19. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  20. package/action-icon/ActionIcon.d.ts +4 -0
  21. package/action-icon/ActionIcon.js +48 -0
  22. package/action-icon/ActionIcon.stories.tsx +41 -0
  23. package/action-icon/ActionIcon.test.js +64 -0
  24. package/action-icon/types.d.ts +26 -0
  25. package/alert/Alert.accessibility.test.js +95 -0
  26. package/alert/Alert.js +29 -118
  27. package/alert/Alert.test.js +28 -45
  28. package/alert/types.d.ts +5 -5
  29. package/badge/Badge.accessibility.test.js +129 -0
  30. package/badge/Badge.d.ts +1 -1
  31. package/badge/Badge.js +141 -43
  32. package/badge/Badge.stories.tsx +210 -0
  33. package/badge/Badge.test.js +30 -0
  34. package/badge/types.d.ts +52 -3
  35. package/bleed/Bleed.js +13 -21
  36. package/bleed/types.d.ts +2 -2
  37. package/box/Box.accessibility.test.js +33 -0
  38. package/box/Box.js +11 -33
  39. package/box/Box.test.js +1 -6
  40. package/box/types.d.ts +3 -3
  41. package/bulleted-list/BulletedList.accessibility.test.js +107 -0
  42. package/bulleted-list/BulletedList.js +22 -55
  43. package/bulleted-list/BulletedList.stories.tsx +2 -93
  44. package/bulleted-list/types.d.ts +5 -5
  45. package/button/Button.accessibility.test.js +127 -0
  46. package/button/Button.js +36 -59
  47. package/button/Button.stories.tsx +33 -133
  48. package/button/Button.test.js +13 -21
  49. package/button/types.d.ts +5 -5
  50. package/card/Card.accessibility.test.js +36 -0
  51. package/card/Card.js +21 -44
  52. package/card/Card.test.js +10 -21
  53. package/card/types.d.ts +5 -5
  54. package/checkbox/Checkbox.accessibility.test.js +87 -0
  55. package/checkbox/Checkbox.js +85 -120
  56. package/checkbox/Checkbox.stories.tsx +16 -54
  57. package/checkbox/Checkbox.test.js +107 -63
  58. package/checkbox/types.d.ts +8 -4
  59. package/chip/Chip.accessibility.test.js +67 -0
  60. package/chip/Chip.js +20 -36
  61. package/chip/Chip.stories.tsx +5 -24
  62. package/chip/Chip.test.js +17 -30
  63. package/chip/types.d.ts +4 -4
  64. package/common/coreTokens.d.ts +105 -14
  65. package/common/coreTokens.js +40 -23
  66. package/common/utils.js +2 -8
  67. package/common/variables.d.ts +44 -139
  68. package/common/variables.js +55 -157
  69. package/container/Container.d.ts +4 -0
  70. package/container/Container.js +194 -0
  71. package/container/Container.stories.tsx +214 -0
  72. package/container/types.d.ts +74 -0
  73. package/container/types.js +5 -0
  74. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  75. package/contextual-menu/ContextualMenu.d.ts +7 -0
  76. package/contextual-menu/ContextualMenu.js +71 -0
  77. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  78. package/contextual-menu/ContextualMenu.test.js +71 -0
  79. package/contextual-menu/MenuItemAction.d.ts +4 -0
  80. package/contextual-menu/MenuItemAction.js +46 -0
  81. package/contextual-menu/types.d.ts +22 -0
  82. package/contextual-menu/types.js +5 -0
  83. package/date-input/Calendar.js +13 -57
  84. package/date-input/DateInput.accessibility.test.js +216 -0
  85. package/date-input/DateInput.js +50 -96
  86. package/date-input/DateInput.stories.tsx +11 -30
  87. package/date-input/DateInput.test.js +674 -701
  88. package/date-input/DatePicker.js +11 -42
  89. package/date-input/Icons.d.ts +6 -6
  90. package/date-input/Icons.js +6 -23
  91. package/date-input/YearPicker.js +8 -34
  92. package/date-input/types.d.ts +28 -22
  93. package/dialog/Dialog.accessibility.test.js +69 -0
  94. package/dialog/Dialog.js +13 -40
  95. package/dialog/Dialog.stories.tsx +170 -0
  96. package/dialog/Dialog.test.js +126 -188
  97. package/dialog/types.d.ts +18 -13
  98. package/divider/Divider.accessibility.test.js +33 -0
  99. package/divider/Divider.d.ts +4 -0
  100. package/divider/Divider.js +36 -0
  101. package/divider/Divider.stories.tsx +223 -0
  102. package/divider/Divider.test.js +38 -0
  103. package/divider/types.d.ts +21 -0
  104. package/divider/types.js +5 -0
  105. package/dropdown/Dropdown.accessibility.test.js +180 -0
  106. package/dropdown/Dropdown.js +59 -128
  107. package/dropdown/Dropdown.stories.tsx +5 -16
  108. package/dropdown/Dropdown.test.js +391 -378
  109. package/dropdown/DropdownMenu.js +8 -19
  110. package/dropdown/DropdownMenuItem.js +11 -20
  111. package/dropdown/types.d.ts +20 -24
  112. package/file-input/FileInput.accessibility.test.js +160 -0
  113. package/file-input/FileInput.js +180 -284
  114. package/file-input/FileInput.stories.tsx +1 -1
  115. package/file-input/FileInput.test.js +279 -354
  116. package/file-input/FileItem.js +25 -66
  117. package/file-input/types.d.ts +9 -9
  118. package/flex/Flex.js +25 -39
  119. package/flex/types.d.ts +6 -6
  120. package/footer/Footer.accessibility.test.js +117 -0
  121. package/footer/Footer.d.ts +1 -1
  122. package/footer/Footer.js +43 -68
  123. package/footer/Footer.stories.tsx +54 -9
  124. package/footer/Footer.test.js +18 -32
  125. package/footer/Icons.d.ts +3 -2
  126. package/footer/Icons.js +66 -7
  127. package/footer/types.d.ts +17 -17
  128. package/grid/Grid.js +1 -16
  129. package/grid/types.d.ts +10 -10
  130. package/header/Header.accessibility.test.js +84 -0
  131. package/header/Header.d.ts +1 -1
  132. package/header/Header.js +28 -84
  133. package/header/Header.test.js +12 -25
  134. package/header/Icons.d.ts +2 -2
  135. package/header/Icons.js +2 -7
  136. package/header/types.d.ts +7 -8
  137. package/heading/Heading.accessibility.test.js +33 -0
  138. package/heading/Heading.js +9 -31
  139. package/heading/Heading.test.js +70 -87
  140. package/heading/types.d.ts +7 -7
  141. package/icon/Icon.accessibility.test.js +30 -0
  142. package/icon/Icon.d.ts +4 -0
  143. package/icon/Icon.js +33 -0
  144. package/icon/Icon.stories.tsx +28 -0
  145. package/icon/types.d.ts +4 -0
  146. package/icon/types.js +5 -0
  147. package/image/Image.accessibility.test.js +56 -0
  148. package/image/Image.d.ts +2 -2
  149. package/image/Image.js +17 -32
  150. package/image/Image.stories.tsx +3 -1
  151. package/image/types.d.ts +2 -2
  152. package/inset/Inset.js +13 -21
  153. package/inset/types.d.ts +2 -2
  154. package/layout/ApplicationLayout.d.ts +2 -2
  155. package/layout/ApplicationLayout.js +26 -66
  156. package/layout/ApplicationLayout.stories.tsx +1 -1
  157. package/layout/Icons.d.ts +8 -5
  158. package/layout/Icons.js +49 -59
  159. package/layout/types.d.ts +3 -3
  160. package/link/Link.accessibility.test.js +112 -0
  161. package/link/Link.js +28 -47
  162. package/link/Link.stories.tsx +2 -2
  163. package/link/Link.test.js +23 -41
  164. package/link/types.d.ts +14 -14
  165. package/main.d.ts +7 -4
  166. package/main.js +32 -60
  167. package/nav-tabs/NavTabs.accessibility.test.js +52 -0
  168. package/nav-tabs/NavTabs.d.ts +1 -2
  169. package/nav-tabs/NavTabs.js +19 -48
  170. package/nav-tabs/NavTabs.stories.tsx +7 -5
  171. package/nav-tabs/NavTabs.test.js +38 -44
  172. package/nav-tabs/NavTabsContext.d.ts +3 -0
  173. package/nav-tabs/NavTabsContext.js +8 -0
  174. package/nav-tabs/Tab.js +24 -52
  175. package/nav-tabs/types.d.ts +9 -9
  176. package/number-input/NumberInput.accessibility.test.js +228 -0
  177. package/number-input/NumberInput.d.ts +0 -7
  178. package/number-input/NumberInput.js +47 -39
  179. package/number-input/NumberInput.stories.tsx +42 -26
  180. package/number-input/NumberInput.test.js +839 -575
  181. package/number-input/NumberInputContext.d.ts +3 -0
  182. package/number-input/NumberInputContext.js +8 -0
  183. package/number-input/types.d.ts +17 -5
  184. package/package.json +39 -37
  185. package/paginator/Icons.d.ts +5 -5
  186. package/paginator/Icons.js +5 -19
  187. package/paginator/Paginator.accessibility.test.js +79 -0
  188. package/paginator/Paginator.js +15 -43
  189. package/paginator/Paginator.test.js +224 -207
  190. package/paginator/types.d.ts +3 -3
  191. package/paragraph/Paragraph.accessibility.test.js +28 -0
  192. package/paragraph/Paragraph.js +3 -19
  193. package/paragraph/Paragraph.stories.tsx +0 -17
  194. package/password-input/Icons.d.ts +3 -3
  195. package/password-input/Icons.js +1 -5
  196. package/password-input/PasswordInput.accessibility.test.js +153 -0
  197. package/password-input/PasswordInput.js +26 -48
  198. package/password-input/PasswordInput.stories.tsx +1 -34
  199. package/password-input/PasswordInput.test.js +153 -129
  200. package/password-input/types.d.ts +8 -7
  201. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  202. package/progress-bar/ProgressBar.js +21 -53
  203. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +1 -1
  204. package/progress-bar/ProgressBar.test.js +35 -52
  205. package/progress-bar/types.d.ts +3 -3
  206. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  207. package/quick-nav/QuickNav.js +4 -27
  208. package/quick-nav/QuickNav.stories.tsx +1 -1
  209. package/quick-nav/types.d.ts +10 -10
  210. package/radio-group/Radio.d.ts +1 -1
  211. package/radio-group/Radio.js +22 -54
  212. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  213. package/radio-group/RadioGroup.js +37 -83
  214. package/radio-group/RadioGroup.stories.tsx +10 -10
  215. package/radio-group/RadioGroup.test.js +504 -470
  216. package/radio-group/types.d.ts +8 -8
  217. package/resultset-table/Icons.d.ts +7 -0
  218. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  219. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  220. package/resultset-table/ResultsetTable.d.ts +7 -0
  221. package/{resultsetTable → resultset-table}/ResultsetTable.js +44 -69
  222. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +106 -5
  223. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +148 -92
  224. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  225. package/resultset-table/types.js +5 -0
  226. package/select/Icons.d.ts +7 -7
  227. package/select/Icons.js +1 -5
  228. package/select/Listbox.js +13 -39
  229. package/select/Option.js +17 -27
  230. package/select/Select.accessibility.test.js +217 -0
  231. package/select/Select.js +87 -163
  232. package/select/Select.stories.tsx +3 -4
  233. package/select/Select.test.js +1946 -1804
  234. package/select/types.d.ts +14 -15
  235. package/sidenav/Icons.d.ts +4 -4
  236. package/sidenav/Icons.js +1 -5
  237. package/sidenav/Sidenav.accessibility.test.js +59 -0
  238. package/sidenav/Sidenav.js +29 -70
  239. package/sidenav/Sidenav.stories.tsx +0 -1
  240. package/sidenav/Sidenav.test.js +3 -10
  241. package/{layout → sidenav}/SidenavContext.d.ts +1 -1
  242. package/{layout → sidenav}/SidenavContext.js +3 -9
  243. package/sidenav/types.d.ts +18 -18
  244. package/slider/Slider.accessibility.test.js +104 -0
  245. package/slider/Slider.js +68 -125
  246. package/slider/Slider.test.js +107 -103
  247. package/slider/types.d.ts +4 -4
  248. package/spinner/Spinner.accessibility.test.js +96 -0
  249. package/spinner/Spinner.js +16 -54
  250. package/spinner/Spinner.test.js +25 -34
  251. package/spinner/types.d.ts +3 -3
  252. package/status-light/StatusLight.accessibility.test.js +157 -0
  253. package/status-light/StatusLight.d.ts +4 -0
  254. package/status-light/StatusLight.js +51 -0
  255. package/status-light/StatusLight.stories.tsx +74 -0
  256. package/status-light/StatusLight.test.js +25 -0
  257. package/status-light/types.d.ts +17 -0
  258. package/status-light/types.js +5 -0
  259. package/switch/Switch.accessibility.test.js +89 -0
  260. package/switch/Switch.js +49 -97
  261. package/switch/Switch.stories.tsx +0 -34
  262. package/switch/Switch.test.js +51 -96
  263. package/switch/types.d.ts +4 -4
  264. package/table/DropdownTheme.js +62 -0
  265. package/table/Table.accessibility.test.js +82 -0
  266. package/table/Table.d.ts +6 -2
  267. package/table/Table.js +76 -33
  268. package/table/{Table.stories.jsx → Table.stories.tsx} +297 -2
  269. package/table/Table.test.js +93 -6
  270. package/table/types.d.ts +34 -6
  271. package/tabs/Tab.js +17 -33
  272. package/tabs/Tabs.accessibility.test.js +56 -0
  273. package/tabs/Tabs.js +52 -129
  274. package/tabs/Tabs.stories.tsx +1 -1
  275. package/tabs/Tabs.test.js +62 -118
  276. package/tabs/types.d.ts +19 -19
  277. package/tag/Tag.accessibility.test.js +69 -0
  278. package/tag/Tag.js +21 -51
  279. package/tag/Tag.test.js +19 -30
  280. package/tag/types.d.ts +7 -7
  281. package/text-input/Suggestion.js +9 -26
  282. package/text-input/Suggestions.d.ts +1 -1
  283. package/text-input/Suggestions.js +19 -67
  284. package/text-input/TextInput.accessibility.test.js +321 -0
  285. package/text-input/TextInput.js +197 -287
  286. package/text-input/TextInput.stories.tsx +49 -153
  287. package/text-input/TextInput.test.js +1227 -1194
  288. package/text-input/types.d.ts +25 -17
  289. package/textarea/Textarea.accessibility.test.js +155 -0
  290. package/textarea/Textarea.js +67 -109
  291. package/textarea/{Textarea.stories.jsx → Textarea.stories.tsx} +58 -100
  292. package/textarea/Textarea.test.js +150 -179
  293. package/textarea/types.d.ts +9 -5
  294. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  295. package/toggle-group/ToggleGroup.js +21 -61
  296. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  297. package/toggle-group/ToggleGroup.test.js +48 -81
  298. package/toggle-group/types.d.ts +10 -10
  299. package/typography/Typography.accessibility.test.js +339 -0
  300. package/typography/Typography.js +4 -13
  301. package/typography/types.d.ts +1 -1
  302. package/useTheme.d.ts +41 -136
  303. package/useTheme.js +1 -8
  304. package/useTranslatedLabels.js +1 -7
  305. package/utils/BaseTypography.d.ts +2 -2
  306. package/utils/BaseTypography.js +16 -30
  307. package/utils/FocusLock.js +25 -39
  308. package/wizard/Wizard.accessibility.test.js +55 -0
  309. package/wizard/Wizard.js +14 -49
  310. package/wizard/Wizard.test.js +53 -80
  311. package/wizard/types.d.ts +7 -7
  312. package/common/OpenSans.css +0 -69
  313. package/common/fonts/OpenSans-Bold.ttf +0 -0
  314. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  315. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  316. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  317. package/common/fonts/OpenSans-Italic.ttf +0 -0
  318. package/common/fonts/OpenSans-Light.ttf +0 -0
  319. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  320. package/common/fonts/OpenSans-Regular.ttf +0 -0
  321. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  322. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  323. package/resultsetTable/Icons.d.ts +0 -7
  324. package/resultsetTable/ResultsetTable.d.ts +0 -4
  325. package/slider/Slider.stories.tsx +0 -240
  326. package/text-input/Icons.d.ts +0 -8
  327. package/text-input/Icons.js +0 -60
  328. /package/{resultsetTable → action-icon}/types.js +0 -0
  329. /package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
@@ -1,10 +1,10 @@
1
1
  import React from "react";
2
2
  import DxcResultsetTable from "./ResultsetTable";
3
- import DxcButton from "../button/Button";
4
3
  import Title from "../../.storybook/components/Title";
5
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
5
  import { userEvent, within } from "@storybook/testing-library";
7
6
  import styled from "styled-components";
7
+ import { HalstackProvider } from "../HalstackContext";
8
8
 
9
9
  export default {
10
10
  title: "Resultset Table",
@@ -13,7 +13,7 @@ export default {
13
13
 
14
14
  const deleteIcon = (
15
15
  <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24">
16
- <path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" />
16
+ <path fill="currentColor" d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" />
17
17
  <path d="M0 0h24v24H0z" fill="none" />
18
18
  </svg>
19
19
  );
@@ -29,17 +29,77 @@ const rows = [
29
29
  [{ displayValue: "006" }, { displayValue: "Cris" }, { displayValue: "Paris" }],
30
30
  ];
31
31
 
32
+ const advancedTheme = {
33
+ table: {
34
+ actionIconColor: "#1B75BB",
35
+ hoverActionIconColor: "#1B75BB",
36
+ activeActionIconColor: "#1B75BB",
37
+ focusActionIconColor: "#1B75BB",
38
+ disabledActionIconColor: "#666666",
39
+ hoverButtonBackgroundColor: "#cccccc",
40
+ },
41
+ };
42
+
43
+ const actions = [
44
+ {
45
+ title: "icon",
46
+ onClick: (value?) => {
47
+ console.log(value);
48
+ },
49
+ options: [
50
+ {
51
+ value: "1",
52
+ label: "Amazon with a very long text",
53
+ },
54
+ {
55
+ value: "2",
56
+ label: "Ebay",
57
+ },
58
+ {
59
+ value: "3",
60
+ label: "Apple",
61
+ },
62
+ ],
63
+ },
64
+ {
65
+ icon: "filled_edit",
66
+ title: "icon",
67
+ onClick: () => {},
68
+ },
69
+ {
70
+ icon: deleteIcon,
71
+ title: "icon",
72
+ onClick: () => {},
73
+ disabled: true,
74
+ },
75
+ {
76
+ icon: deleteIcon,
77
+ title: "icon",
78
+ onClick: () => {},
79
+ },
80
+ ];
81
+
32
82
  const rowsIcon = [
33
83
  [
34
84
  { displayValue: "001", sortValue: "001" },
35
85
  { displayValue: "Peter" },
36
- { displayValue: <DxcButton icon={deleteIcon} /> },
86
+ {
87
+ displayValue: <DxcResultsetTable.ActionsCell actions={actions} />,
88
+ },
89
+ ],
90
+ [
91
+ { displayValue: "002", sortValue: "002" },
92
+ { displayValue: "Louis" },
93
+ {
94
+ displayValue: <DxcResultsetTable.ActionsCell actions={actions} />,
95
+ },
37
96
  ],
38
- [{ displayValue: "002", sortValue: "002" }, { displayValue: "Louis" }, { displayValue: "" }],
39
97
  [
40
98
  { displayValue: "003", sortValue: "003" },
41
99
  { displayValue: "Mark" },
42
- { displayValue: <DxcButton icon={deleteIcon} /> },
100
+ {
101
+ displayValue: <DxcResultsetTable.ActionsCell actions={actions} />,
102
+ },
43
103
  ],
44
104
  ];
45
105
 
@@ -200,12 +260,35 @@ export const Chromatic = () => (
200
260
  <Title title="Scroll resultset table" theme="light" level={4} />
201
261
  <DxcResultsetTable columns={longColumns} rows={longRows} />
202
262
  </ExampleContainer>
263
+ <ExampleContainer>
264
+ <Title title="Without paginator" theme="light" level={4} />
265
+ <DxcResultsetTable columns={columns} rows={rows} hidePaginator />
266
+ </ExampleContainer>
203
267
  <ExampleContainer>
204
268
  <SmallContainer>
205
269
  <Title title="Small container and text overflow" theme="light" level={4} />
206
270
  <DxcResultsetTable columns={columnsSortable} rows={longValues} />
207
271
  </SmallContainer>
208
272
  </ExampleContainer>
273
+ <ExampleContainer>
274
+ <Title title="Reduced sortable table" theme="light" level={4} />
275
+ <DxcResultsetTable columns={columnsSortable} rows={rowsSortable} mode="reduced" />
276
+ </ExampleContainer>
277
+ {/* PENDING SMALL ICON VERSION */}
278
+ <ExampleContainer>
279
+ <Title title="Reduced with items per page option" theme="light" level={4} />
280
+ <DxcResultsetTable columns={columns} rows={rows} itemsPerPage={2} itemsPerPageOptions={[2, 3]} mode="reduced" />
281
+ </ExampleContainer>
282
+ <ExampleContainer>
283
+ <Title title="Reduced scroll resultset table" theme="light" level={4} />
284
+ <DxcResultsetTable columns={longColumns} rows={longRows} mode="reduced" />
285
+ </ExampleContainer>
286
+ <ExampleContainer>
287
+ <SmallContainer>
288
+ <Title title="Reduced small container and text overflow" theme="light" level={4} />
289
+ <DxcResultsetTable columns={columnsSortable} rows={longValues} mode="reduced" />
290
+ </SmallContainer>
291
+ </ExampleContainer>
209
292
  <Title title="Margins" theme="light" level={2} />
210
293
  <ExampleContainer>
211
294
  <Title title="Xxsmall" theme="light" level={4} />
@@ -298,3 +381,21 @@ LastPage.play = async ({ canvasElement }) => {
298
381
  const nextButton = canvas.getAllByRole("button")[3];
299
382
  await userEvent.click(nextButton);
300
383
  };
384
+
385
+ const ResultsetActionsCellDropdown = () => (
386
+ <ExampleContainer>
387
+ <Title title="Dropdown Action" theme="light" level={4} />
388
+ <DxcResultsetTable columns={columns} rows={rowsIcon} itemsPerPage={2} />
389
+ <Title title="Custom theme actions cell" theme="light" level={4} />
390
+ <HalstackProvider advancedTheme={advancedTheme}>
391
+ <DxcResultsetTable columns={columns} rows={rowsIcon} itemsPerPage={2} />
392
+ </HalstackProvider>
393
+ </ExampleContainer>
394
+ );
395
+
396
+ export const DropdownAction = ResultsetActionsCellDropdown.bind({});
397
+ DropdownAction.play = async ({ canvasElement }) => {
398
+ const canvas = within(canvasElement);
399
+ const dropdown = canvas.getAllByRole("button")[5];
400
+ await userEvent.click(dropdown);
401
+ };
@@ -1,19 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
5
6
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
6
-
7
7
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
-
9
8
  var _react = _interopRequireDefault(require("react"));
10
-
11
9
  var _react2 = require("@testing-library/react");
12
-
13
10
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
14
-
15
11
  var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable.tsx"));
16
-
17
12
  // Mocking DOMRect for Radix Primitive Popover
18
13
  global.globalThis = global;
19
14
  global.DOMRect = {
@@ -28,12 +23,10 @@ global.DOMRect = {
28
23
  };
29
24
  }
30
25
  };
31
-
32
26
  global.ResizeObserver = /*#__PURE__*/function () {
33
27
  function ResizeObserver() {
34
28
  (0, _classCallCheck2["default"])(this, ResizeObserver);
35
29
  }
36
-
37
30
  (0, _createClass2["default"])(ResizeObserver, [{
38
31
  key: "observe",
39
32
  value: function observe() {}
@@ -46,7 +39,18 @@ global.ResizeObserver = /*#__PURE__*/function () {
46
39
  }]);
47
40
  return ResizeObserver;
48
41
  }();
49
-
42
+ var icon = /*#__PURE__*/_react["default"].createElement("svg", {
43
+ xmlns: "http://www.w3.org/2000/svg",
44
+ height: "24px",
45
+ viewBox: "0 0 24 24",
46
+ width: "24px",
47
+ fill: "currentColor"
48
+ }, /*#__PURE__*/_react["default"].createElement("path", {
49
+ d: "M0 0h24v24H0V0zm0 0h24v24H0V0z",
50
+ fill: "none"
51
+ }), /*#__PURE__*/_react["default"].createElement("path", {
52
+ d: "M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z"
53
+ }));
50
54
  var columns = [{
51
55
  displayValue: "Id",
52
56
  isSortable: false
@@ -181,92 +185,88 @@ var rows2 = [[{
181
185
  describe("Resultset table component tests", function () {
182
186
  test("Resultset table rendered correctly", function () {
183
187
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
184
- columns: columns,
185
- rows: rows,
186
- itemsPerPage: 3
187
- })),
188
- getByText = _render.getByText;
189
-
188
+ columns: columns,
189
+ rows: rows,
190
+ itemsPerPage: 3
191
+ })),
192
+ getByText = _render.getByText;
190
193
  expect(getByText("Peter")).toBeTruthy();
191
194
  });
192
195
  test("Resultset table shows as many rows as itemsPerPage", function () {
193
196
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
194
- columns: columns,
195
- rows: rows,
196
- itemsPerPage: 3
197
- })),
198
- getAllByRole = _render2.getAllByRole;
199
-
197
+ columns: columns,
198
+ rows: rows,
199
+ itemsPerPage: 3
200
+ })),
201
+ getAllByRole = _render2.getAllByRole;
200
202
  expect(getAllByRole("row").length - 1).toEqual(3);
201
203
  });
202
204
  test("Resultset table shows rows on second page", function () {
203
205
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
204
- columns: columns,
205
- rows: rows,
206
- itemsPerPage: 3
207
- })),
208
- getByText = _render3.getByText,
209
- getAllByRole = _render3.getAllByRole;
210
-
206
+ columns: columns,
207
+ rows: rows,
208
+ itemsPerPage: 3
209
+ })),
210
+ getByText = _render3.getByText,
211
+ getAllByRole = _render3.getAllByRole;
211
212
  expect(getByText("Peter")).toBeTruthy();
212
213
  expect(getByText("Louis")).toBeTruthy();
213
214
  expect(getByText("Lana")).toBeTruthy();
214
215
  expect(getAllByRole("row").length - 1).toEqual(3);
215
216
  var nextButton = getAllByRole("button")[3];
216
-
217
217
  _react2.fireEvent.click(nextButton);
218
-
219
- expect(getByText("4 to 6 of 10")).toBeTruthy();
220
- expect(getByText("Rick")).toBeTruthy();
221
- expect(getByText("Mark")).toBeTruthy();
222
- expect(getByText("Cris")).toBeTruthy();
223
- expect(getAllByRole("row").length - 1).toEqual(3);
224
- });
225
- test("Resultset table goToPage works as expected", function () {
226
- window.HTMLElement.prototype.scrollIntoView = function () {};
227
-
228
- window.HTMLElement.prototype.scrollTo = function () {};
229
-
230
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
231
- columns: columns,
232
- showGoToPage: true,
233
- rows: rows,
234
- itemsPerPage: 3
235
- })),
236
- getByText = _render4.getByText,
237
- getAllByRole = _render4.getAllByRole;
238
-
239
- expect(getByText("Peter")).toBeTruthy();
240
- expect(getByText("Louis")).toBeTruthy();
241
- expect(getByText("Lana")).toBeTruthy();
242
- expect(getAllByRole("row").length - 1).toEqual(3);
243
- var goToPageSelect = getAllByRole("button")[3];
244
-
245
- _userEvent["default"].click(goToPageSelect);
246
-
247
- var goToPageOption = getByText("2");
248
-
249
- _userEvent["default"].click(goToPageOption);
250
-
251
218
  expect(getByText("4 to 6 of 10")).toBeTruthy();
252
219
  expect(getByText("Rick")).toBeTruthy();
253
220
  expect(getByText("Mark")).toBeTruthy();
254
221
  expect(getByText("Cris")).toBeTruthy();
255
222
  expect(getAllByRole("row").length - 1).toEqual(3);
256
223
  });
224
+ test("Resultset table goToPage works as expected", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
225
+ var _render4, getByText, getAllByRole, goToPageSelect, goToPageOption;
226
+ return _regenerator["default"].wrap(function _callee$(_context) {
227
+ while (1) switch (_context.prev = _context.next) {
228
+ case 0:
229
+ window.HTMLElement.prototype.scrollIntoView = function () {};
230
+ window.HTMLElement.prototype.scrollTo = function () {};
231
+ _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
232
+ columns: columns,
233
+ showGoToPage: true,
234
+ rows: rows,
235
+ itemsPerPage: 3
236
+ })), getByText = _render4.getByText, getAllByRole = _render4.getAllByRole;
237
+ expect(getByText("Peter")).toBeTruthy();
238
+ expect(getByText("Louis")).toBeTruthy();
239
+ expect(getByText("Lana")).toBeTruthy();
240
+ expect(getAllByRole("row").length - 1).toEqual(3);
241
+ goToPageSelect = getAllByRole("button")[3];
242
+ _context.next = 10;
243
+ return _userEvent["default"].click(goToPageSelect);
244
+ case 10:
245
+ goToPageOption = getByText("2");
246
+ _context.next = 13;
247
+ return _userEvent["default"].click(goToPageOption);
248
+ case 13:
249
+ expect(getByText("4 to 6 of 10")).toBeTruthy();
250
+ expect(getByText("Rick")).toBeTruthy();
251
+ expect(getByText("Mark")).toBeTruthy();
252
+ expect(getByText("Cris")).toBeTruthy();
253
+ expect(getAllByRole("row").length - 1).toEqual(3);
254
+ case 18:
255
+ case "end":
256
+ return _context.stop();
257
+ }
258
+ }, _callee);
259
+ })));
257
260
  test("Resultset table going to the last page shows only one row", function () {
258
261
  var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
259
- columns: columns,
260
- rows: rows,
261
- itemsPerPage: 3
262
- })),
263
- getByText = _render5.getByText,
264
- getAllByRole = _render5.getAllByRole;
265
-
262
+ columns: columns,
263
+ rows: rows,
264
+ itemsPerPage: 3
265
+ })),
266
+ getByText = _render5.getByText,
267
+ getAllByRole = _render5.getAllByRole;
266
268
  var lastButton = getAllByRole("button")[4];
267
-
268
269
  _react2.fireEvent.click(lastButton);
269
-
270
270
  expect(getByText("10 to 10 of 10")).toBeTruthy();
271
271
  expect(getAllByRole("row")).toHaveLength(2);
272
272
  expect(getByText("Cosmin")).toBeTruthy();
@@ -278,26 +278,21 @@ describe("Resultset table component tests", function () {
278
278
  itemsPerPage: 3
279
279
  }));
280
280
  expect(component.queryByText("Peter")).toBeTruthy();
281
-
282
281
  _react2.fireEvent.click(component.queryByText("Name"));
283
-
284
282
  expect(component.queryByText("Tina")).not.toBeTruthy();
285
283
  expect(component.queryByText("Cosmin")).toBeTruthy();
286
-
287
284
  _react2.fireEvent.click(component.queryByText("Name"));
288
-
289
285
  expect(component.queryByText("Tina")).toBeTruthy();
290
286
  expect(component.queryByText("Cosmin")).not.toBeTruthy();
291
287
  });
292
288
  test("Resultset table change rows should go to first page", function () {
293
289
  var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
294
- columns: columns,
295
- rows: rows,
296
- itemsPerPage: 3
297
- })),
298
- queryByText = _render6.queryByText,
299
- rerender = _render6.rerender;
300
-
290
+ columns: columns,
291
+ rows: rows,
292
+ itemsPerPage: 3
293
+ })),
294
+ queryByText = _render6.queryByText,
295
+ rerender = _render6.rerender;
301
296
  expect(queryByText("Peter")).toBeTruthy();
302
297
  rerender( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
303
298
  columns: columns,
@@ -308,18 +303,79 @@ describe("Resultset table component tests", function () {
308
303
  });
309
304
  test("Resultset table change itemsPerPage should go to first page", function () {
310
305
  var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
311
- columns: columns,
312
- rows: rows,
313
- itemsPerPage: 3,
314
- itemsPerPageOptions: [2, 3]
315
- })),
316
- getAllByRole = _render7.getAllByRole;
317
-
306
+ columns: columns,
307
+ rows: rows,
308
+ itemsPerPage: 3,
309
+ itemsPerPageOptions: [2, 3]
310
+ })),
311
+ getAllByRole = _render7.getAllByRole;
318
312
  var lastButton = getAllByRole("button")[4];
319
313
  expect(getAllByRole("row").length - 1).toEqual(3);
320
-
321
314
  _react2.fireEvent.click(lastButton);
322
-
323
315
  expect(getAllByRole("row").length - 1).toEqual(1);
324
316
  });
317
+ test("Resultset table may not use the paginator", function () {
318
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
319
+ columns: columns,
320
+ rows: rows,
321
+ hidePaginator: true
322
+ })),
323
+ getAllByRole = _render8.getAllByRole;
324
+ var nextButton = getAllByRole("button")[3];
325
+ expect(nextButton).not.toBeTruthy();
326
+ });
327
+ test("Resultset table with ActionsCell", function () {
328
+ var onSelectOption = jest.fn();
329
+ var onClick = jest.fn();
330
+ var actions = [{
331
+ icon: icon,
332
+ title: "icon1",
333
+ onClick: onSelectOption,
334
+ options: [{
335
+ value: "1",
336
+ label: "Amazon"
337
+ }, {
338
+ value: "2",
339
+ label: "Ebay"
340
+ }, {
341
+ value: "3",
342
+ label: "Aliexpress"
343
+ }]
344
+ }, {
345
+ icon: icon,
346
+ title: "icon2",
347
+ onClick: onClick
348
+ }];
349
+ var actionRows = [[{
350
+ displayValue: "001",
351
+ sortValue: "001"
352
+ }, {
353
+ displayValue: "Peter",
354
+ sortValue: "Peter"
355
+ }, {
356
+ displayValue: /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"].ActionsCell, {
357
+ actions: actions
358
+ }),
359
+ sortValue: "Actions"
360
+ }]];
361
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
362
+ columns: columns,
363
+ rows: actionRows,
364
+ itemsPerPage: 3
365
+ })),
366
+ getAllByRole = _render9.getAllByRole,
367
+ getByRole = _render9.getByRole,
368
+ getByText = _render9.getByText;
369
+ var dropdown = getAllByRole("button")[2];
370
+ (0, _react2.act)(function () {
371
+ _userEvent["default"].click(dropdown);
372
+ });
373
+ expect(getByRole("menu")).toBeTruthy();
374
+ var option = getByText("Aliexpress");
375
+ _userEvent["default"].click(option);
376
+ expect(onSelectOption).toHaveBeenCalledWith("3");
377
+ var action = getAllByRole("button")[1];
378
+ _userEvent["default"].click(action);
379
+ expect(onClick).toHaveBeenCalled();
380
+ });
325
381
  });
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Margin = {
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
- export declare type Column = {
9
+ export type Column = {
10
10
  /**
11
11
  * Column display value.
12
12
  */
@@ -16,7 +16,7 @@ export declare type Column = {
16
16
  */
17
17
  isSortable?: boolean;
18
18
  };
19
- declare type Row = {
19
+ export type Row = {
20
20
  /**
21
21
  * Value to be displayed in the cell.
22
22
  */
@@ -27,7 +27,7 @@ declare type Row = {
27
27
  */
28
28
  sortValue?: string;
29
29
  };
30
- declare type Props = {
30
+ type CommonProps = {
31
31
  /**
32
32
  * An array of objects representing the columns of the table.
33
33
  */
@@ -37,6 +37,24 @@ declare type Props = {
37
37
  * as many objects as columns in the table.
38
38
  */
39
39
  rows: Row[][];
40
+ /**
41
+ * Size of the margin to be applied to the component. You can pass an object with 'top',
42
+ * 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
43
+ */
44
+ margin?: Space | Margin;
45
+ /**
46
+ * Value of the tabindex attribute applied to the sortable icon.
47
+ */
48
+ tabIndex?: number;
49
+ /**
50
+ * Determines the visual style and layout
51
+ * - "default": The default mode with big spacing
52
+ * - "reduced": A reduced mode with minimal spacing for dense tables
53
+ */
54
+ mode?: "default" | "reduced";
55
+ };
56
+ type PaginatedProps = CommonProps & {
57
+ hidePaginator?: false;
40
58
  /**
41
59
  * If true, a select component for navigation between pages will be displayed.
42
60
  */
@@ -53,15 +71,30 @@ declare type Props = {
53
71
  * This function will be called when the user selects an item per page
54
72
  * option. The value selected will be passed as a parameter.
55
73
  */
56
- itemsPerPageFunction?: (newValue: number) => void;
74
+ itemsPerPageFunction?: (value: number) => void;
75
+ };
76
+ type NonPaginatedProps = CommonProps & {
57
77
  /**
58
- * Size of the margin to be applied to the component. You can pass an object with 'top',
59
- * 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
78
+ * If true, paginator will not be displayed.
60
79
  */
61
- margin?: Space | Margin;
80
+ hidePaginator: true;
62
81
  /**
63
- * Value of the tabindex attribute given to the sortable icon.
82
+ * If true, a select component for navigation between pages will be displayed.
64
83
  */
65
- tabIndex?: number;
84
+ showGoToPage?: never;
85
+ /**
86
+ * Number of items per page.
87
+ */
88
+ itemsPerPage?: never;
89
+ /**
90
+ * An array of numbers representing the items per page options.
91
+ */
92
+ itemsPerPageOptions?: never;
93
+ /**
94
+ * This function will be called when the user selects an item per page
95
+ * option. The value selected will be passed as a parameter.
96
+ */
97
+ itemsPerPageFunction?: never;
66
98
  };
99
+ type Props = PaginatedProps | NonPaginatedProps;
67
100
  export default Props;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/select/Icons.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
2
  declare const selectIcons: {
3
- error: JSX.Element;
4
- arrowUp: JSX.Element;
5
- arrowDown: JSX.Element;
6
- clear: JSX.Element;
7
- selected: JSX.Element;
8
- searchOff: JSX.Element;
3
+ error: React.JSX.Element;
4
+ arrowUp: React.JSX.Element;
5
+ arrowDown: React.JSX.Element;
6
+ clear: React.JSX.Element;
7
+ selected: React.JSX.Element;
8
+ searchOff: React.JSX.Element;
9
9
  };
10
10
  export default selectIcons;
package/select/Icons.js CHANGED
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var selectIcons = {
13
10
  error: /*#__PURE__*/_react["default"].createElement("svg", {
14
11
  role: "img",
@@ -89,5 +86,4 @@ var selectIcons = {
89
86
  points: "6.47,10.82 4,13.29 1.53,10.82 0.82,11.53 3.29,14 0.82,16.47 1.53,17.18 4,14.71 6.47,17.18 7.18,16.47 4.71,14 7.18,11.53"
90
87
  }))))
91
88
  };
92
- var _default = selectIcons;
93
- exports["default"] = _default;
89
+ var _default = exports["default"] = selectIcons;