@dxc-technology/halstack-react 0.0.0-5aa300b → 0.0.0-5b15506

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 (364) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1243 -6
  4. package/HalstackContext.js +122 -106
  5. package/README.md +47 -0
  6. package/accordion/Accordion.accessibility.test.js +71 -0
  7. package/accordion/Accordion.d.ts +1 -1
  8. package/accordion/Accordion.js +41 -109
  9. package/accordion/Accordion.stories.tsx +53 -148
  10. package/accordion/Accordion.test.js +19 -34
  11. package/accordion/types.d.ts +6 -18
  12. package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
  13. package/accordion-group/AccordionGroup.d.ts +2 -2
  14. package/accordion-group/AccordionGroup.js +29 -77
  15. package/accordion-group/AccordionGroup.stories.tsx +78 -77
  16. package/accordion-group/AccordionGroup.test.js +44 -72
  17. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  18. package/accordion-group/AccordionGroupAccordion.js +31 -0
  19. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  20. package/accordion-group/AccordionGroupContext.js +8 -0
  21. package/accordion-group/types.d.ts +7 -19
  22. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  23. package/action-icon/ActionIcon.d.ts +4 -0
  24. package/action-icon/ActionIcon.js +48 -0
  25. package/action-icon/ActionIcon.stories.tsx +41 -0
  26. package/action-icon/ActionIcon.test.js +64 -0
  27. package/action-icon/types.d.ts +26 -0
  28. package/alert/Alert.accessibility.test.js +95 -0
  29. package/alert/Alert.js +31 -124
  30. package/alert/Alert.stories.tsx +28 -0
  31. package/alert/Alert.test.js +29 -46
  32. package/alert/types.d.ts +5 -5
  33. package/badge/Badge.accessibility.test.js +129 -0
  34. package/badge/Badge.d.ts +1 -1
  35. package/badge/Badge.js +142 -42
  36. package/badge/Badge.stories.tsx +210 -0
  37. package/badge/Badge.test.js +30 -0
  38. package/badge/types.d.ts +52 -3
  39. package/bleed/Bleed.js +13 -21
  40. package/bleed/Bleed.stories.tsx +1 -0
  41. package/bleed/types.d.ts +2 -2
  42. package/box/Box.accessibility.test.js +33 -0
  43. package/box/Box.d.ts +1 -1
  44. package/box/Box.js +18 -59
  45. package/box/Box.stories.tsx +38 -51
  46. package/box/Box.test.js +2 -7
  47. package/box/types.d.ts +3 -15
  48. package/bulleted-list/BulletedList.accessibility.test.js +107 -0
  49. package/bulleted-list/BulletedList.js +22 -53
  50. package/bulleted-list/BulletedList.stories.tsx +8 -93
  51. package/bulleted-list/types.d.ts +32 -5
  52. package/button/Button.accessibility.test.js +127 -0
  53. package/button/Button.d.ts +1 -1
  54. package/button/Button.js +70 -103
  55. package/button/Button.stories.tsx +105 -114
  56. package/button/Button.test.js +20 -17
  57. package/button/types.d.ts +9 -5
  58. package/card/Card.accessibility.test.js +36 -0
  59. package/card/Card.d.ts +1 -1
  60. package/card/Card.js +48 -89
  61. package/card/Card.stories.tsx +12 -42
  62. package/card/Card.test.js +11 -22
  63. package/card/types.d.ts +6 -12
  64. package/checkbox/Checkbox.accessibility.test.js +87 -0
  65. package/checkbox/Checkbox.js +87 -122
  66. package/checkbox/Checkbox.stories.tsx +68 -54
  67. package/checkbox/Checkbox.test.js +108 -64
  68. package/checkbox/types.d.ts +8 -4
  69. package/chip/Chip.accessibility.test.js +67 -0
  70. package/chip/Chip.js +42 -67
  71. package/chip/Chip.stories.tsx +73 -29
  72. package/chip/Chip.test.js +18 -33
  73. package/chip/types.d.ts +4 -4
  74. package/common/coreTokens.d.ts +237 -0
  75. package/common/coreTokens.js +184 -0
  76. package/common/utils.d.ts +1 -0
  77. package/common/utils.js +6 -12
  78. package/common/variables.d.ts +1395 -0
  79. package/common/variables.js +899 -1144
  80. package/container/Container.d.ts +4 -0
  81. package/container/Container.js +194 -0
  82. package/container/Container.stories.tsx +214 -0
  83. package/container/types.d.ts +74 -0
  84. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  85. package/contextual-menu/ContextualMenu.d.ts +7 -0
  86. package/contextual-menu/ContextualMenu.js +71 -0
  87. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  88. package/contextual-menu/ContextualMenu.test.js +71 -0
  89. package/contextual-menu/MenuItemAction.d.ts +4 -0
  90. package/contextual-menu/MenuItemAction.js +46 -0
  91. package/contextual-menu/types.d.ts +22 -0
  92. package/date-input/Calendar.d.ts +1 -1
  93. package/date-input/Calendar.js +52 -96
  94. package/date-input/DateInput.accessibility.test.js +216 -0
  95. package/date-input/DateInput.js +102 -107
  96. package/date-input/DateInput.stories.tsx +194 -60
  97. package/date-input/DateInput.test.js +676 -620
  98. package/date-input/DatePicker.js +53 -92
  99. package/date-input/YearPicker.d.ts +1 -1
  100. package/date-input/YearPicker.js +29 -44
  101. package/date-input/types.d.ts +32 -28
  102. package/dialog/Dialog.accessibility.test.js +69 -0
  103. package/dialog/Dialog.d.ts +1 -1
  104. package/dialog/Dialog.js +61 -119
  105. package/dialog/Dialog.stories.tsx +310 -212
  106. package/dialog/Dialog.test.js +270 -33
  107. package/dialog/types.d.ts +18 -26
  108. package/divider/Divider.accessibility.test.js +33 -0
  109. package/divider/Divider.d.ts +4 -0
  110. package/divider/Divider.js +36 -0
  111. package/divider/Divider.stories.tsx +223 -0
  112. package/divider/Divider.test.js +38 -0
  113. package/divider/types.d.ts +21 -0
  114. package/divider/types.js +5 -0
  115. package/dropdown/Dropdown.accessibility.test.js +180 -0
  116. package/dropdown/Dropdown.js +61 -131
  117. package/dropdown/Dropdown.stories.tsx +205 -98
  118. package/dropdown/Dropdown.test.js +393 -379
  119. package/dropdown/DropdownMenu.js +20 -37
  120. package/dropdown/DropdownMenuItem.js +15 -37
  121. package/dropdown/types.d.ts +20 -24
  122. package/file-input/FileInput.accessibility.test.js +160 -0
  123. package/file-input/FileInput.js +184 -292
  124. package/file-input/FileInput.stories.tsx +86 -3
  125. package/file-input/FileInput.test.js +279 -395
  126. package/file-input/FileItem.js +27 -67
  127. package/file-input/types.d.ts +10 -10
  128. package/flex/Flex.js +27 -39
  129. package/flex/Flex.stories.tsx +35 -26
  130. package/flex/types.d.ts +74 -9
  131. package/footer/Footer.accessibility.test.js +117 -0
  132. package/footer/Footer.d.ts +1 -1
  133. package/footer/Footer.js +73 -118
  134. package/footer/Footer.stories.tsx +82 -23
  135. package/footer/Footer.test.js +33 -57
  136. package/footer/Icons.d.ts +3 -2
  137. package/footer/Icons.js +66 -7
  138. package/footer/types.d.ts +26 -28
  139. package/grid/Grid.d.ts +7 -0
  140. package/grid/Grid.js +76 -0
  141. package/grid/Grid.stories.tsx +219 -0
  142. package/grid/types.d.ts +115 -0
  143. package/grid/types.js +5 -0
  144. package/header/Header.accessibility.test.js +84 -0
  145. package/header/Header.d.ts +4 -3
  146. package/header/Header.js +53 -149
  147. package/header/Header.stories.tsx +115 -36
  148. package/header/Header.test.js +13 -26
  149. package/header/Icons.d.ts +2 -2
  150. package/header/Icons.js +2 -7
  151. package/header/types.d.ts +7 -22
  152. package/heading/Heading.accessibility.test.js +33 -0
  153. package/heading/Heading.js +10 -32
  154. package/heading/Heading.test.js +71 -88
  155. package/heading/types.d.ts +7 -7
  156. package/icon/Icon.accessibility.test.js +30 -0
  157. package/icon/Icon.d.ts +4 -0
  158. package/icon/Icon.js +33 -0
  159. package/icon/Icon.stories.tsx +28 -0
  160. package/icon/types.d.ts +4 -0
  161. package/icon/types.js +5 -0
  162. package/image/Image.accessibility.test.js +56 -0
  163. package/image/Image.d.ts +4 -0
  164. package/image/Image.js +70 -0
  165. package/image/Image.stories.tsx +129 -0
  166. package/image/types.d.ts +72 -0
  167. package/image/types.js +5 -0
  168. package/inset/Inset.js +13 -21
  169. package/inset/Inset.stories.tsx +2 -1
  170. package/inset/types.d.ts +2 -2
  171. package/layout/ApplicationLayout.d.ts +5 -5
  172. package/layout/ApplicationLayout.js +30 -67
  173. package/layout/ApplicationLayout.stories.tsx +1 -1
  174. package/layout/Icons.d.ts +8 -5
  175. package/layout/Icons.js +49 -59
  176. package/layout/types.d.ts +5 -6
  177. package/link/Link.accessibility.test.js +112 -0
  178. package/link/Link.js +31 -50
  179. package/link/Link.stories.tsx +62 -2
  180. package/link/Link.test.js +24 -44
  181. package/link/types.d.ts +14 -14
  182. package/main.d.ts +10 -5
  183. package/main.js +47 -59
  184. package/nav-tabs/NavTabs.accessibility.test.js +44 -0
  185. package/nav-tabs/NavTabs.d.ts +7 -0
  186. package/{tabs-nav → nav-tabs}/NavTabs.js +25 -57
  187. package/nav-tabs/NavTabs.stories.tsx +279 -0
  188. package/{tabs-nav → nav-tabs}/NavTabs.test.js +39 -46
  189. package/nav-tabs/NavTabsContext.d.ts +3 -0
  190. package/nav-tabs/NavTabsContext.js +8 -0
  191. package/nav-tabs/Tab.js +117 -0
  192. package/{tabs-nav → nav-tabs}/types.d.ts +15 -16
  193. package/nav-tabs/types.js +5 -0
  194. package/number-input/NumberInput.accessibility.test.js +228 -0
  195. package/number-input/NumberInput.js +46 -36
  196. package/number-input/NumberInput.stories.tsx +42 -26
  197. package/number-input/NumberInput.test.js +860 -413
  198. package/number-input/NumberInputContext.d.ts +3 -4
  199. package/number-input/NumberInputContext.js +3 -14
  200. package/number-input/types.d.ts +17 -5
  201. package/package.json +41 -39
  202. package/paginator/Icons.d.ts +5 -5
  203. package/paginator/Icons.js +5 -19
  204. package/paginator/Paginator.accessibility.test.js +79 -0
  205. package/paginator/Paginator.js +17 -47
  206. package/paginator/Paginator.stories.tsx +24 -0
  207. package/paginator/Paginator.test.js +252 -225
  208. package/paginator/types.d.ts +3 -3
  209. package/paragraph/Paragraph.accessibility.test.js +28 -0
  210. package/paragraph/Paragraph.d.ts +3 -4
  211. package/paragraph/Paragraph.js +6 -22
  212. package/paragraph/Paragraph.stories.tsx +0 -17
  213. package/password-input/PasswordInput.accessibility.test.js +153 -0
  214. package/password-input/PasswordInput.js +56 -126
  215. package/password-input/PasswordInput.stories.tsx +1 -33
  216. package/password-input/PasswordInput.test.js +158 -141
  217. package/password-input/types.d.ts +8 -7
  218. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  219. package/progress-bar/ProgressBar.d.ts +2 -2
  220. package/progress-bar/ProgressBar.js +23 -55
  221. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
  222. package/progress-bar/ProgressBar.test.js +36 -53
  223. package/progress-bar/types.d.ts +4 -3
  224. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  225. package/quick-nav/QuickNav.js +4 -27
  226. package/quick-nav/QuickNav.stories.tsx +15 -1
  227. package/quick-nav/types.d.ts +10 -10
  228. package/radio-group/Radio.d.ts +1 -1
  229. package/radio-group/Radio.js +31 -63
  230. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  231. package/radio-group/RadioGroup.js +45 -93
  232. package/radio-group/RadioGroup.stories.tsx +131 -18
  233. package/radio-group/RadioGroup.test.js +505 -471
  234. package/radio-group/types.d.ts +8 -8
  235. package/resultset-table/Icons.d.ts +7 -0
  236. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  237. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  238. package/resultset-table/ResultsetTable.d.ts +7 -0
  239. package/{resultsetTable → resultset-table}/ResultsetTable.js +46 -71
  240. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +106 -5
  241. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +165 -114
  242. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  243. package/resultset-table/types.js +5 -0
  244. package/select/Listbox.d.ts +1 -1
  245. package/select/Listbox.js +22 -75
  246. package/select/Option.js +28 -48
  247. package/select/Select.accessibility.test.js +217 -0
  248. package/select/Select.js +134 -181
  249. package/select/Select.stories.tsx +488 -264
  250. package/select/Select.test.js +1950 -1907
  251. package/select/types.d.ts +17 -18
  252. package/sidenav/Sidenav.accessibility.test.js +59 -0
  253. package/sidenav/Sidenav.d.ts +2 -2
  254. package/sidenav/Sidenav.js +90 -155
  255. package/sidenav/Sidenav.stories.tsx +113 -25
  256. package/sidenav/Sidenav.test.js +3 -10
  257. package/{layout → sidenav}/SidenavContext.d.ts +1 -1
  258. package/{layout → sidenav}/SidenavContext.js +3 -9
  259. package/sidenav/types.d.ts +33 -30
  260. package/slider/Slider.accessibility.test.js +104 -0
  261. package/slider/Slider.js +70 -128
  262. package/slider/Slider.test.js +108 -104
  263. package/slider/types.d.ts +4 -4
  264. package/spinner/Spinner.accessibility.test.js +96 -0
  265. package/spinner/Spinner.js +29 -73
  266. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  267. package/spinner/Spinner.test.js +26 -35
  268. package/spinner/types.d.ts +3 -3
  269. package/status-light/StatusLight.accessibility.test.js +157 -0
  270. package/status-light/StatusLight.d.ts +4 -0
  271. package/status-light/StatusLight.js +51 -0
  272. package/status-light/StatusLight.stories.tsx +74 -0
  273. package/status-light/StatusLight.test.js +25 -0
  274. package/status-light/types.d.ts +17 -0
  275. package/status-light/types.js +5 -0
  276. package/switch/Switch.accessibility.test.js +89 -0
  277. package/switch/Switch.js +51 -99
  278. package/switch/Switch.stories.tsx +33 -34
  279. package/switch/Switch.test.js +52 -97
  280. package/switch/types.d.ts +4 -4
  281. package/table/DropdownTheme.js +62 -0
  282. package/table/Table.accessibility.test.js +82 -0
  283. package/table/Table.d.ts +6 -2
  284. package/table/Table.js +78 -35
  285. package/table/Table.stories.tsx +651 -0
  286. package/table/Table.test.js +94 -7
  287. package/table/types.d.ts +34 -6
  288. package/tabs/Tab.js +27 -43
  289. package/tabs/Tabs.accessibility.test.js +56 -0
  290. package/tabs/Tabs.js +69 -163
  291. package/tabs/Tabs.stories.tsx +40 -4
  292. package/tabs/Tabs.test.js +61 -136
  293. package/tabs/types.d.ts +21 -21
  294. package/tag/Tag.accessibility.test.js +69 -0
  295. package/tag/Tag.js +34 -66
  296. package/tag/Tag.stories.tsx +18 -8
  297. package/tag/Tag.test.js +18 -37
  298. package/tag/types.d.ts +9 -9
  299. package/text-input/Suggestion.js +11 -28
  300. package/text-input/Suggestions.d.ts +1 -1
  301. package/text-input/Suggestions.js +19 -67
  302. package/text-input/TextInput.accessibility.test.js +321 -0
  303. package/text-input/TextInput.js +223 -329
  304. package/text-input/TextInput.stories.tsx +118 -153
  305. package/text-input/TextInput.test.js +1228 -1196
  306. package/text-input/types.d.ts +25 -17
  307. package/textarea/Textarea.accessibility.test.js +155 -0
  308. package/textarea/Textarea.js +70 -113
  309. package/textarea/Textarea.stories.tsx +174 -0
  310. package/textarea/Textarea.test.js +152 -183
  311. package/textarea/types.d.ts +9 -5
  312. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  313. package/toggle-group/ToggleGroup.d.ts +2 -2
  314. package/toggle-group/ToggleGroup.js +94 -107
  315. package/toggle-group/ToggleGroup.stories.tsx +52 -7
  316. package/toggle-group/ToggleGroup.test.js +69 -88
  317. package/toggle-group/types.d.ts +28 -19
  318. package/typography/Typography.accessibility.test.js +339 -0
  319. package/typography/Typography.d.ts +2 -2
  320. package/typography/Typography.js +15 -123
  321. package/typography/Typography.stories.tsx +1 -1
  322. package/typography/types.d.ts +1 -1
  323. package/useTheme.d.ts +1147 -1
  324. package/useTheme.js +2 -9
  325. package/useTranslatedLabels.d.ts +84 -1
  326. package/useTranslatedLabels.js +1 -7
  327. package/utils/BaseTypography.d.ts +21 -0
  328. package/utils/BaseTypography.js +94 -0
  329. package/utils/FocusLock.d.ts +13 -0
  330. package/utils/FocusLock.js +124 -0
  331. package/wizard/Wizard.accessibility.test.js +55 -0
  332. package/wizard/Wizard.js +29 -67
  333. package/wizard/Wizard.stories.tsx +39 -0
  334. package/wizard/Wizard.test.js +54 -81
  335. package/wizard/types.d.ts +10 -11
  336. package/card/ice-cream.jpg +0 -0
  337. package/common/OpenSans.css +0 -81
  338. package/common/fonts/OpenSans-Bold.ttf +0 -0
  339. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  340. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  341. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  342. package/common/fonts/OpenSans-Italic.ttf +0 -0
  343. package/common/fonts/OpenSans-Light.ttf +0 -0
  344. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  345. package/common/fonts/OpenSans-Regular.ttf +0 -0
  346. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  347. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  348. package/number-input/numberInputContextTypes.d.ts +0 -19
  349. package/resultsetTable/Icons.d.ts +0 -7
  350. package/resultsetTable/ResultsetTable.d.ts +0 -4
  351. package/select/Icons.d.ts +0 -10
  352. package/select/Icons.js +0 -93
  353. package/slider/Slider.stories.tsx +0 -183
  354. package/table/Table.stories.jsx +0 -277
  355. package/tabs-nav/NavTabs.d.ts +0 -8
  356. package/tabs-nav/NavTabs.stories.tsx +0 -172
  357. package/tabs-nav/Tab.js +0 -128
  358. package/text-input/Icons.d.ts +0 -8
  359. package/text-input/Icons.js +0 -60
  360. package/textarea/Textarea.stories.jsx +0 -157
  361. /package/{resultsetTable → action-icon}/types.js +0 -0
  362. /package/{tabs-nav → container}/types.js +0 -0
  363. /package/{number-input/numberInputContextTypes.js → contextual-menu/types.js} +0 -0
  364. /package/{tabs-nav → nav-tabs}/Tab.d.ts +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,45 +1,16 @@
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
- var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable"));
16
-
11
+ var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable.tsx"));
17
12
  // Mocking DOMRect for Radix Primitive Popover
18
13
  global.globalThis = global;
19
-
20
- global.ResizeObserver = /*#__PURE__*/function () {
21
- function ResizeObserver(cb) {
22
- (0, _classCallCheck2["default"])(this, ResizeObserver);
23
- this.cb = cb;
24
- }
25
-
26
- (0, _createClass2["default"])(ResizeObserver, [{
27
- key: "observe",
28
- value: function observe() {
29
- this.cb([{
30
- borderBoxSize: {
31
- inlineSize: 0,
32
- blockSize: 0
33
- }
34
- }]);
35
- }
36
- }, {
37
- key: "unobserve",
38
- value: function unobserve() {}
39
- }]);
40
- return ResizeObserver;
41
- }();
42
-
43
14
  global.DOMRect = {
44
15
  fromRect: function fromRect() {
45
16
  return {
@@ -52,6 +23,34 @@ global.DOMRect = {
52
23
  };
53
24
  }
54
25
  };
26
+ global.ResizeObserver = /*#__PURE__*/function () {
27
+ function ResizeObserver() {
28
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
29
+ }
30
+ (0, _createClass2["default"])(ResizeObserver, [{
31
+ key: "observe",
32
+ value: function observe() {}
33
+ }, {
34
+ key: "unobserve",
35
+ value: function unobserve() {}
36
+ }, {
37
+ key: "disconnect",
38
+ value: function disconnect() {}
39
+ }]);
40
+ return ResizeObserver;
41
+ }();
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
+ }));
55
54
  var columns = [{
56
55
  displayValue: "Id",
57
56
  isSortable: false
@@ -186,92 +185,88 @@ var rows2 = [[{
186
185
  describe("Resultset table component tests", function () {
187
186
  test("Resultset table rendered correctly", function () {
188
187
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
189
- columns: columns,
190
- rows: rows,
191
- itemsPerPage: 3
192
- })),
193
- getByText = _render.getByText;
194
-
188
+ columns: columns,
189
+ rows: rows,
190
+ itemsPerPage: 3
191
+ })),
192
+ getByText = _render.getByText;
195
193
  expect(getByText("Peter")).toBeTruthy();
196
194
  });
197
195
  test("Resultset table shows as many rows as itemsPerPage", function () {
198
196
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
199
- columns: columns,
200
- rows: rows,
201
- itemsPerPage: 3
202
- })),
203
- getAllByRole = _render2.getAllByRole;
204
-
197
+ columns: columns,
198
+ rows: rows,
199
+ itemsPerPage: 3
200
+ })),
201
+ getAllByRole = _render2.getAllByRole;
205
202
  expect(getAllByRole("row").length - 1).toEqual(3);
206
203
  });
207
204
  test("Resultset table shows rows on second page", function () {
208
205
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
209
- columns: columns,
210
- rows: rows,
211
- itemsPerPage: 3
212
- })),
213
- getByText = _render3.getByText,
214
- getAllByRole = _render3.getAllByRole;
215
-
206
+ columns: columns,
207
+ rows: rows,
208
+ itemsPerPage: 3
209
+ })),
210
+ getByText = _render3.getByText,
211
+ getAllByRole = _render3.getAllByRole;
216
212
  expect(getByText("Peter")).toBeTruthy();
217
213
  expect(getByText("Louis")).toBeTruthy();
218
214
  expect(getByText("Lana")).toBeTruthy();
219
215
  expect(getAllByRole("row").length - 1).toEqual(3);
220
216
  var nextButton = getAllByRole("button")[3];
221
-
222
217
  _react2.fireEvent.click(nextButton);
223
-
224
- expect(getByText("4 to 6 of 10")).toBeTruthy();
225
- expect(getByText("Rick")).toBeTruthy();
226
- expect(getByText("Mark")).toBeTruthy();
227
- expect(getByText("Cris")).toBeTruthy();
228
- expect(getAllByRole("row").length - 1).toEqual(3);
229
- });
230
- test("Resultset table goToPage works as expected", function () {
231
- window.HTMLElement.prototype.scrollIntoView = function () {};
232
-
233
- window.HTMLElement.prototype.scrollTo = function () {};
234
-
235
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
236
- columns: columns,
237
- showGoToPage: true,
238
- rows: rows,
239
- itemsPerPage: 3
240
- })),
241
- getByText = _render4.getByText,
242
- getAllByRole = _render4.getAllByRole;
243
-
244
- expect(getByText("Peter")).toBeTruthy();
245
- expect(getByText("Louis")).toBeTruthy();
246
- expect(getByText("Lana")).toBeTruthy();
247
- expect(getAllByRole("row").length - 1).toEqual(3);
248
- var goToPageSelect = getAllByRole("button")[3];
249
-
250
- _userEvent["default"].click(goToPageSelect);
251
-
252
- var goToPageOption = getByText("2");
253
-
254
- _userEvent["default"].click(goToPageOption);
255
-
256
218
  expect(getByText("4 to 6 of 10")).toBeTruthy();
257
219
  expect(getByText("Rick")).toBeTruthy();
258
220
  expect(getByText("Mark")).toBeTruthy();
259
221
  expect(getByText("Cris")).toBeTruthy();
260
222
  expect(getAllByRole("row").length - 1).toEqual(3);
261
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
+ })));
262
260
  test("Resultset table going to the last page shows only one row", function () {
263
261
  var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
264
- columns: columns,
265
- rows: rows,
266
- itemsPerPage: 3
267
- })),
268
- getByText = _render5.getByText,
269
- getAllByRole = _render5.getAllByRole;
270
-
262
+ columns: columns,
263
+ rows: rows,
264
+ itemsPerPage: 3
265
+ })),
266
+ getByText = _render5.getByText,
267
+ getAllByRole = _render5.getAllByRole;
271
268
  var lastButton = getAllByRole("button")[4];
272
-
273
269
  _react2.fireEvent.click(lastButton);
274
-
275
270
  expect(getByText("10 to 10 of 10")).toBeTruthy();
276
271
  expect(getAllByRole("row")).toHaveLength(2);
277
272
  expect(getByText("Cosmin")).toBeTruthy();
@@ -283,26 +278,21 @@ describe("Resultset table component tests", function () {
283
278
  itemsPerPage: 3
284
279
  }));
285
280
  expect(component.queryByText("Peter")).toBeTruthy();
286
-
287
281
  _react2.fireEvent.click(component.queryByText("Name"));
288
-
289
282
  expect(component.queryByText("Tina")).not.toBeTruthy();
290
283
  expect(component.queryByText("Cosmin")).toBeTruthy();
291
-
292
284
  _react2.fireEvent.click(component.queryByText("Name"));
293
-
294
285
  expect(component.queryByText("Tina")).toBeTruthy();
295
286
  expect(component.queryByText("Cosmin")).not.toBeTruthy();
296
287
  });
297
288
  test("Resultset table change rows should go to first page", function () {
298
289
  var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
299
- columns: columns,
300
- rows: rows,
301
- itemsPerPage: 3
302
- })),
303
- queryByText = _render6.queryByText,
304
- rerender = _render6.rerender;
305
-
290
+ columns: columns,
291
+ rows: rows,
292
+ itemsPerPage: 3
293
+ })),
294
+ queryByText = _render6.queryByText,
295
+ rerender = _render6.rerender;
306
296
  expect(queryByText("Peter")).toBeTruthy();
307
297
  rerender( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
308
298
  columns: columns,
@@ -313,18 +303,79 @@ describe("Resultset table component tests", function () {
313
303
  });
314
304
  test("Resultset table change itemsPerPage should go to first page", function () {
315
305
  var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
316
- columns: columns,
317
- rows: rows,
318
- itemsPerPage: 3,
319
- itemsPerPageOptions: [2, 3]
320
- })),
321
- getAllByRole = _render7.getAllByRole;
322
-
306
+ columns: columns,
307
+ rows: rows,
308
+ itemsPerPage: 3,
309
+ itemsPerPageOptions: [2, 3]
310
+ })),
311
+ getAllByRole = _render7.getAllByRole;
323
312
  var lastButton = getAllByRole("button")[4];
324
313
  expect(getAllByRole("row").length - 1).toEqual(3);
325
-
326
314
  _react2.fireEvent.click(lastButton);
327
-
328
315
  expect(getAllByRole("row").length - 1).toEqual(1);
329
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
+ });
330
381
  });
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- export 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
- declare type Column = {
9
+ export type Column = {
10
10
  /**
11
11
  * Column display value.
12
12
  */
@@ -16,7 +16,7 @@ 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
+ });
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { ListboxProps } from "./types";
3
- declare const _default: React.MemoExoticComponent<({ id, currentValue, options, visualFocusIndex, lastOptionIndex, multiple, optional, optionalItem, searchable, handleOptionOnClick, getSelectWidth, }: ListboxProps) => JSX.Element>;
3
+ declare const _default: React.MemoExoticComponent<({ id, currentValue, options, visualFocusIndex, lastOptionIndex, multiple, optional, optionalItem, searchable, handleOptionOnClick, styles, }: ListboxProps) => JSX.Element>;
4
4
  export default _default;