@dxc-technology/halstack-react 0.0.0-1c45756 → 0.0.0-1c9e3f9

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 (362) hide show
  1. package/BackgroundColorContext.d.ts +1 -0
  2. package/BackgroundColorContext.js +6 -26
  3. package/HalstackContext.d.ts +1237 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +118 -194
  8. package/accordion/Accordion.stories.tsx +283 -0
  9. package/accordion/Accordion.test.js +56 -0
  10. package/accordion/types.d.ts +12 -23
  11. package/accordion-group/AccordionGroup.d.ts +5 -4
  12. package/accordion-group/AccordionGroup.js +39 -108
  13. package/accordion-group/AccordionGroup.stories.tsx +252 -0
  14. package/accordion-group/AccordionGroup.test.js +98 -0
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +18 -23
  18. package/action-icon/ActionIcon.d.ts +4 -0
  19. package/action-icon/ActionIcon.js +47 -0
  20. package/action-icon/ActionIcon.stories.tsx +41 -0
  21. package/action-icon/ActionIcon.test.js +64 -0
  22. package/action-icon/types.d.ts +26 -0
  23. package/alert/Alert.js +24 -60
  24. package/alert/Alert.stories.tsx +28 -0
  25. package/alert/Alert.test.js +75 -0
  26. package/alert/types.d.ts +5 -5
  27. package/badge/Badge.d.ts +4 -0
  28. package/badge/Badge.js +141 -41
  29. package/badge/Badge.stories.tsx +210 -0
  30. package/badge/Badge.test.js +30 -0
  31. package/badge/types.d.ts +54 -0
  32. package/bleed/Bleed.d.ts +3 -0
  33. package/bleed/Bleed.js +43 -0
  34. package/bleed/Bleed.stories.tsx +342 -0
  35. package/bleed/types.d.ts +37 -0
  36. package/box/Box.d.ts +1 -1
  37. package/box/Box.js +31 -82
  38. package/box/Box.stories.tsx +38 -51
  39. package/box/Box.test.js +13 -0
  40. package/box/types.d.ts +3 -14
  41. package/bulleted-list/BulletedList.d.ts +7 -0
  42. package/bulleted-list/BulletedList.js +89 -0
  43. package/bulleted-list/BulletedList.stories.tsx +115 -0
  44. package/bulleted-list/types.d.ts +38 -0
  45. package/bulleted-list/types.js +5 -0
  46. package/button/Button.d.ts +1 -1
  47. package/button/Button.js +64 -123
  48. package/button/Button.stories.tsx +164 -96
  49. package/button/Button.test.js +38 -0
  50. package/button/types.d.ts +12 -12
  51. package/card/Card.d.ts +1 -1
  52. package/card/Card.js +59 -103
  53. package/card/Card.stories.tsx +13 -43
  54. package/card/Card.test.js +39 -0
  55. package/card/types.d.ts +6 -11
  56. package/checkbox/Checkbox.d.ts +2 -2
  57. package/checkbox/Checkbox.js +145 -183
  58. package/checkbox/Checkbox.stories.tsx +166 -136
  59. package/checkbox/Checkbox.test.js +199 -0
  60. package/checkbox/types.d.ts +19 -7
  61. package/chip/Chip.d.ts +4 -0
  62. package/chip/Chip.js +48 -148
  63. package/chip/Chip.stories.tsx +123 -30
  64. package/chip/Chip.test.js +41 -0
  65. package/chip/types.d.ts +45 -0
  66. package/chip/types.js +5 -0
  67. package/common/OpenSans.css +68 -80
  68. package/common/coreTokens.d.ts +237 -0
  69. package/common/coreTokens.js +184 -0
  70. package/common/utils.d.ts +1 -0
  71. package/common/utils.js +6 -12
  72. package/common/variables.d.ts +1383 -0
  73. package/common/variables.js +1021 -1344
  74. package/container/Container.d.ts +4 -0
  75. package/container/Container.js +194 -0
  76. package/container/Container.stories.tsx +214 -0
  77. package/container/types.d.ts +74 -0
  78. package/container/types.js +5 -0
  79. package/date-input/Calendar.d.ts +4 -0
  80. package/date-input/Calendar.js +214 -0
  81. package/date-input/DateInput.js +175 -313
  82. package/date-input/DateInput.stories.tsx +203 -56
  83. package/date-input/DateInput.test.js +808 -0
  84. package/date-input/DatePicker.d.ts +4 -0
  85. package/date-input/DatePicker.js +115 -0
  86. package/date-input/Icons.d.ts +6 -0
  87. package/date-input/Icons.js +58 -0
  88. package/date-input/YearPicker.d.ts +4 -0
  89. package/date-input/YearPicker.js +100 -0
  90. package/date-input/types.d.ts +86 -22
  91. package/dialog/Dialog.d.ts +1 -1
  92. package/dialog/Dialog.js +69 -130
  93. package/dialog/Dialog.stories.tsx +320 -167
  94. package/dialog/Dialog.test.js +307 -0
  95. package/dialog/types.d.ts +18 -25
  96. package/dropdown/Dropdown.d.ts +1 -1
  97. package/dropdown/Dropdown.js +250 -331
  98. package/dropdown/Dropdown.stories.tsx +438 -0
  99. package/dropdown/Dropdown.test.js +599 -0
  100. package/dropdown/DropdownMenu.d.ts +4 -0
  101. package/dropdown/DropdownMenu.js +63 -0
  102. package/dropdown/DropdownMenuItem.d.ts +4 -0
  103. package/dropdown/DropdownMenuItem.js +67 -0
  104. package/dropdown/types.d.ts +37 -28
  105. package/file-input/FileInput.d.ts +2 -2
  106. package/file-input/FileInput.js +267 -299
  107. package/file-input/FileInput.stories.tsx +618 -0
  108. package/file-input/FileInput.test.js +459 -0
  109. package/file-input/FileItem.d.ts +4 -14
  110. package/file-input/FileItem.js +52 -101
  111. package/file-input/types.d.ts +53 -11
  112. package/flex/Flex.d.ts +4 -0
  113. package/flex/Flex.js +57 -0
  114. package/flex/Flex.stories.tsx +112 -0
  115. package/flex/types.d.ts +97 -0
  116. package/flex/types.js +5 -0
  117. package/footer/Footer.d.ts +1 -1
  118. package/footer/Footer.js +73 -201
  119. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +57 -37
  120. package/footer/Footer.test.js +85 -0
  121. package/footer/Icons.d.ts +3 -0
  122. package/footer/Icons.js +67 -8
  123. package/footer/types.d.ts +40 -37
  124. package/grid/Grid.d.ts +7 -0
  125. package/grid/Grid.js +76 -0
  126. package/grid/Grid.stories.tsx +219 -0
  127. package/grid/types.d.ts +115 -0
  128. package/grid/types.js +5 -0
  129. package/header/Header.d.ts +4 -3
  130. package/header/Header.js +100 -204
  131. package/header/Header.stories.tsx +152 -63
  132. package/header/Header.test.js +66 -0
  133. package/header/Icons.d.ts +2 -0
  134. package/header/Icons.js +4 -9
  135. package/header/types.d.ts +5 -19
  136. package/heading/Heading.js +11 -33
  137. package/heading/Heading.stories.tsx +3 -2
  138. package/heading/Heading.test.js +169 -0
  139. package/heading/types.d.ts +7 -7
  140. package/image/Image.d.ts +4 -0
  141. package/image/Image.js +70 -0
  142. package/image/Image.stories.tsx +127 -0
  143. package/image/types.d.ts +72 -0
  144. package/image/types.js +5 -0
  145. package/inset/Inset.d.ts +3 -0
  146. package/inset/Inset.js +43 -0
  147. package/inset/Inset.stories.tsx +230 -0
  148. package/inset/types.d.ts +37 -0
  149. package/inset/types.js +5 -0
  150. package/layout/ApplicationLayout.d.ts +20 -0
  151. package/layout/ApplicationLayout.js +83 -184
  152. package/layout/ApplicationLayout.stories.tsx +162 -0
  153. package/layout/Icons.d.ts +8 -0
  154. package/layout/Icons.js +51 -48
  155. package/layout/SidenavContext.d.ts +5 -0
  156. package/layout/SidenavContext.js +13 -0
  157. package/layout/types.d.ts +41 -0
  158. package/layout/types.js +5 -0
  159. package/link/Link.d.ts +3 -2
  160. package/link/Link.js +65 -111
  161. package/link/Link.stories.tsx +159 -52
  162. package/link/Link.test.js +63 -0
  163. package/link/types.d.ts +15 -35
  164. package/main.d.ts +17 -14
  165. package/main.js +78 -98
  166. package/nav-tabs/NavTabs.d.ts +8 -0
  167. package/nav-tabs/NavTabs.js +93 -0
  168. package/nav-tabs/NavTabs.stories.tsx +276 -0
  169. package/nav-tabs/NavTabs.test.js +76 -0
  170. package/nav-tabs/Tab.d.ts +4 -0
  171. package/nav-tabs/Tab.js +118 -0
  172. package/nav-tabs/types.d.ts +52 -0
  173. package/nav-tabs/types.js +5 -0
  174. package/number-input/NumberInput.d.ts +7 -0
  175. package/number-input/NumberInput.js +28 -47
  176. package/number-input/NumberInput.stories.tsx +44 -28
  177. package/number-input/NumberInput.test.js +830 -0
  178. package/number-input/types.d.ts +28 -15
  179. package/package.json +46 -45
  180. package/paginator/Icons.d.ts +5 -0
  181. package/paginator/Icons.js +21 -47
  182. package/paginator/Paginator.js +35 -98
  183. package/paginator/Paginator.stories.tsx +24 -0
  184. package/paginator/Paginator.test.js +335 -0
  185. package/paginator/types.d.ts +3 -3
  186. package/paragraph/Paragraph.d.ts +5 -0
  187. package/paragraph/Paragraph.js +22 -0
  188. package/paragraph/Paragraph.stories.tsx +27 -0
  189. package/password-input/Icons.d.ts +6 -0
  190. package/password-input/Icons.js +35 -0
  191. package/password-input/PasswordInput.js +58 -125
  192. package/password-input/PasswordInput.stories.tsx +3 -35
  193. package/password-input/PasswordInput.test.js +198 -0
  194. package/password-input/types.d.ts +21 -17
  195. package/progress-bar/ProgressBar.js +66 -92
  196. package/progress-bar/ProgressBar.stories.tsx +93 -0
  197. package/progress-bar/ProgressBar.test.js +93 -0
  198. package/progress-bar/types.d.ts +3 -3
  199. package/quick-nav/QuickNav.d.ts +4 -0
  200. package/quick-nav/QuickNav.js +94 -0
  201. package/quick-nav/QuickNav.stories.tsx +356 -0
  202. package/quick-nav/types.d.ts +21 -0
  203. package/quick-nav/types.js +5 -0
  204. package/radio-group/Radio.d.ts +4 -0
  205. package/radio-group/Radio.js +124 -0
  206. package/radio-group/RadioGroup.d.ts +4 -0
  207. package/radio-group/RadioGroup.js +235 -0
  208. package/radio-group/RadioGroup.stories.tsx +214 -0
  209. package/radio-group/RadioGroup.test.js +756 -0
  210. package/radio-group/types.d.ts +114 -0
  211. package/radio-group/types.js +5 -0
  212. package/resultset-table/Icons.d.ts +7 -0
  213. package/resultset-table/Icons.js +47 -0
  214. package/resultset-table/ResultsetTable.d.ts +7 -0
  215. package/resultset-table/ResultsetTable.js +167 -0
  216. package/resultset-table/ResultsetTable.stories.tsx +381 -0
  217. package/resultset-table/ResultsetTable.test.js +371 -0
  218. package/{resultsetTable → resultset-table}/types.d.ts +15 -9
  219. package/resultset-table/types.js +5 -0
  220. package/select/Icons.d.ts +10 -0
  221. package/select/Icons.js +89 -0
  222. package/select/Listbox.d.ts +4 -0
  223. package/select/Listbox.js +143 -0
  224. package/select/Option.d.ts +4 -0
  225. package/select/Option.js +87 -0
  226. package/select/Select.d.ts +4 -0
  227. package/select/Select.js +240 -515
  228. package/select/Select.stories.tsx +603 -204
  229. package/select/Select.test.js +2370 -0
  230. package/select/types.d.ts +209 -0
  231. package/select/types.js +5 -0
  232. package/sidenav/Icons.d.ts +7 -0
  233. package/sidenav/Icons.js +47 -0
  234. package/sidenav/Sidenav.d.ts +6 -5
  235. package/sidenav/Sidenav.js +132 -72
  236. package/sidenav/Sidenav.stories.tsx +251 -134
  237. package/sidenav/Sidenav.test.js +37 -0
  238. package/sidenav/types.d.ts +52 -26
  239. package/slider/Slider.d.ts +2 -2
  240. package/slider/Slider.js +149 -181
  241. package/slider/Slider.test.js +254 -0
  242. package/slider/types.d.ts +11 -3
  243. package/spinner/Spinner.js +32 -76
  244. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -26
  245. package/spinner/Spinner.test.js +55 -0
  246. package/spinner/types.d.ts +3 -3
  247. package/status-light/StatusLight.d.ts +4 -0
  248. package/status-light/StatusLight.js +51 -0
  249. package/status-light/StatusLight.stories.tsx +74 -0
  250. package/status-light/StatusLight.test.js +25 -0
  251. package/status-light/types.d.ts +17 -0
  252. package/status-light/types.js +5 -0
  253. package/switch/Switch.d.ts +2 -2
  254. package/switch/Switch.js +150 -115
  255. package/switch/Switch.stories.tsx +45 -68
  256. package/switch/Switch.test.js +180 -0
  257. package/switch/types.d.ts +13 -5
  258. package/table/ActionsCell.d.ts +4 -0
  259. package/table/ActionsCell.js +55 -0
  260. package/table/DropdownTheme.js +57 -0
  261. package/table/Table.d.ts +4 -1
  262. package/table/Table.js +28 -33
  263. package/table/Table.stories.tsx +615 -0
  264. package/table/Table.test.js +113 -0
  265. package/table/types.d.ts +45 -6
  266. package/tabs/Tab.d.ts +4 -0
  267. package/tabs/Tab.js +116 -0
  268. package/tabs/Tabs.d.ts +1 -1
  269. package/tabs/Tabs.js +318 -147
  270. package/tabs/Tabs.stories.tsx +123 -18
  271. package/tabs/Tabs.test.js +294 -0
  272. package/tabs/types.d.ts +46 -24
  273. package/tag/Tag.d.ts +1 -1
  274. package/tag/Tag.js +44 -86
  275. package/tag/Tag.stories.tsx +38 -28
  276. package/tag/Tag.test.js +49 -0
  277. package/tag/types.d.ts +25 -16
  278. package/text-input/Icons.d.ts +8 -0
  279. package/text-input/Icons.js +56 -0
  280. package/text-input/Suggestion.d.ts +4 -0
  281. package/text-input/Suggestion.js +67 -0
  282. package/text-input/Suggestions.d.ts +4 -0
  283. package/text-input/Suggestions.js +84 -0
  284. package/text-input/TextInput.js +331 -545
  285. package/text-input/TextInput.stories.tsx +465 -0
  286. package/text-input/TextInput.test.js +1739 -0
  287. package/text-input/types.d.ts +71 -25
  288. package/textarea/Textarea.d.ts +4 -0
  289. package/textarea/Textarea.js +95 -177
  290. package/textarea/Textarea.stories.tsx +174 -0
  291. package/textarea/Textarea.test.js +406 -0
  292. package/textarea/types.d.ts +141 -0
  293. package/textarea/types.js +5 -0
  294. package/toggle-group/ToggleGroup.d.ts +2 -2
  295. package/toggle-group/ToggleGroup.js +97 -113
  296. package/toggle-group/ToggleGroup.stories.tsx +76 -36
  297. package/toggle-group/ToggleGroup.test.js +137 -0
  298. package/toggle-group/types.d.ts +67 -37
  299. package/typography/Typography.d.ts +4 -0
  300. package/typography/Typography.js +23 -0
  301. package/typography/Typography.stories.tsx +198 -0
  302. package/typography/types.d.ts +18 -0
  303. package/typography/types.js +5 -0
  304. package/useTheme.d.ts +1136 -0
  305. package/useTheme.js +4 -11
  306. package/useTranslatedLabels.d.ts +85 -0
  307. package/useTranslatedLabels.js +14 -0
  308. package/utils/BaseTypography.d.ts +21 -0
  309. package/utils/BaseTypography.js +94 -0
  310. package/utils/FocusLock.d.ts +13 -0
  311. package/utils/FocusLock.js +124 -0
  312. package/wizard/Wizard.d.ts +1 -1
  313. package/wizard/Wizard.js +123 -104
  314. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +48 -19
  315. package/wizard/Wizard.test.js +114 -0
  316. package/wizard/types.d.ts +14 -14
  317. package/ThemeContext.js +0 -246
  318. package/V3Select/V3Select.js +0 -455
  319. package/V3Select/index.d.ts +0 -27
  320. package/V3Textarea/V3Textarea.js +0 -260
  321. package/V3Textarea/index.d.ts +0 -27
  322. package/card/ice-cream.jpg +0 -0
  323. package/chip/index.d.ts +0 -22
  324. package/common/RequiredComponent.js +0 -32
  325. package/date/Date.js +0 -373
  326. package/date/index.d.ts +0 -27
  327. package/input-text/Icons.js +0 -22
  328. package/input-text/InputText.js +0 -611
  329. package/input-text/index.d.ts +0 -36
  330. package/number-input/NumberInputContext.d.ts +0 -4
  331. package/number-input/NumberInputContext.js +0 -19
  332. package/number-input/numberInputContextTypes.d.ts +0 -19
  333. package/progress-bar/ProgressBar.stories.jsx +0 -58
  334. package/radio/Radio.d.ts +0 -4
  335. package/radio/Radio.js +0 -174
  336. package/radio/Radio.stories.tsx +0 -192
  337. package/radio/types.d.ts +0 -54
  338. package/resultsetTable/ResultsetTable.d.ts +0 -4
  339. package/resultsetTable/ResultsetTable.js +0 -251
  340. package/select/index.d.ts +0 -131
  341. package/slider/Slider.stories.tsx +0 -177
  342. package/table/Table.stories.jsx +0 -276
  343. package/textarea/Textarea.stories.jsx +0 -135
  344. package/textarea/index.d.ts +0 -127
  345. package/toggle/Toggle.js +0 -186
  346. package/toggle/index.d.ts +0 -21
  347. package/upload/Upload.js +0 -201
  348. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  349. package/upload/buttons-upload/Icons.js +0 -40
  350. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  351. package/upload/dragAndDropArea/Icons.js +0 -39
  352. package/upload/file-upload/FileToUpload.js +0 -115
  353. package/upload/file-upload/Icons.js +0 -66
  354. package/upload/files-upload/FilesToUpload.js +0 -109
  355. package/upload/index.d.ts +0 -15
  356. package/upload/transaction/Icons.js +0 -160
  357. package/upload/transaction/Transaction.js +0 -104
  358. package/upload/transactions/Transactions.js +0 -94
  359. package/wizard/Icons.js +0 -65
  360. /package/{radio → action-icon}/types.js +0 -0
  361. /package/{resultsetTable → badge}/types.js +0 -0
  362. /package/{number-input/numberInputContextTypes.js → bleed/types.js} +0 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _react = _interopRequireDefault(require("react"));
5
+ var _react2 = require("@testing-library/react");
6
+ var _Switch = _interopRequireDefault(require("./Switch.tsx"));
7
+ describe("Switch component tests", function () {
8
+ test("Switch renders with correct text", function () {
9
+ var onChange = jest.fn(function (returnedValue) {
10
+ expect(returnedValue).toBe(true);
11
+ });
12
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
13
+ label: "SwitchComponent",
14
+ checked: false,
15
+ onChange: onChange
16
+ })),
17
+ getByText = _render.getByText;
18
+ expect(getByText("SwitchComponent")).toBeTruthy();
19
+ });
20
+ test("Calls correct function on click", function () {
21
+ var onChange = jest.fn();
22
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
23
+ label: "SwitchComponent",
24
+ checked: false,
25
+ onChange: onChange
26
+ })),
27
+ getByText = _render2.getByText;
28
+ _react2.fireEvent.click(getByText("SwitchComponent"));
29
+ expect(onChange).toHaveBeenCalled();
30
+ });
31
+ test("Calls correct function on key down", function () {
32
+ var onChange = jest.fn();
33
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
34
+ label: "SwitchComponent",
35
+ checked: false,
36
+ onChange: onChange
37
+ })),
38
+ getByText = _render3.getByText;
39
+ _react2.fireEvent.focus(getByText("SwitchComponent"));
40
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
41
+ key: "Enter"
42
+ });
43
+ expect(onChange).toHaveBeenCalled();
44
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
45
+ key: " "
46
+ });
47
+ expect(onChange).toHaveBeenCalled();
48
+ });
49
+ test("Everytime the user clicks the component the onchange function is called with the correct value CONTROLLED COMPONENT", function () {
50
+ var onChange = jest.fn();
51
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
52
+ label: "SwitchComponent",
53
+ checked: false,
54
+ onChange: onChange
55
+ })),
56
+ getByText = _render4.getByText;
57
+ _react2.fireEvent.click(getByText("SwitchComponent"));
58
+ _react2.fireEvent.click(getByText("SwitchComponent"));
59
+ expect(onChange.mock.calls[0][0]).toBe(true);
60
+ expect(onChange.mock.calls[1][0]).toBe(true);
61
+ });
62
+ test("Everytime the user use enter in the component, the onchange function is called with the correct value CONTROLLED COMPONENT", function () {
63
+ var onChange = jest.fn();
64
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
65
+ label: "SwitchComponent",
66
+ checked: false,
67
+ onChange: onChange
68
+ })),
69
+ getByText = _render5.getByText;
70
+ _react2.fireEvent.focus(getByText("SwitchComponent"));
71
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
72
+ key: "Enter"
73
+ });
74
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
75
+ key: "Enter"
76
+ });
77
+ expect(onChange.mock.calls[0][0]).toBe(true);
78
+ expect(onChange.mock.calls[1][0]).toBe(true);
79
+ });
80
+ test("Everytime the user use space in the component, the onchange function is called with the correct value CONTROLLED COMPONENT", function () {
81
+ var onChange = jest.fn();
82
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
83
+ label: "SwitchComponent",
84
+ checked: false,
85
+ onChange: onChange
86
+ })),
87
+ getByText = _render6.getByText;
88
+ _react2.fireEvent.focus(getByText("SwitchComponent"));
89
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
90
+ key: " "
91
+ });
92
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
93
+ key: " "
94
+ });
95
+ expect(onChange.mock.calls[0][0]).toBe(true);
96
+ expect(onChange.mock.calls[1][0]).toBe(true);
97
+ });
98
+ test("Everytime the user clicks the component the onchange function is called with the correct value UNCONTROLLED COMPONENT", function () {
99
+ var onChange = jest.fn();
100
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
101
+ label: "SwitchComponent",
102
+ onChange: onChange
103
+ })),
104
+ getByText = _render7.getByText;
105
+ _react2.fireEvent.click(getByText("SwitchComponent"));
106
+ _react2.fireEvent.click(getByText("SwitchComponent"));
107
+ expect(onChange.mock.calls[0][0]).toBe(true);
108
+ expect(onChange.mock.calls[1][0]).toBe(false);
109
+ });
110
+ test("Everytime the user use enter in the component, the onchange function is called with the correct value UNCONTROLLED COMPONENT", function () {
111
+ var onChange = jest.fn();
112
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
113
+ label: "SwitchComponent",
114
+ onChange: onChange
115
+ })),
116
+ getByText = _render8.getByText;
117
+ _react2.fireEvent.focus(getByText("SwitchComponent"));
118
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
119
+ key: "Enter"
120
+ });
121
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
122
+ key: "Enter"
123
+ });
124
+ expect(onChange.mock.calls[0][0]).toBe(true);
125
+ expect(onChange.mock.calls[1][0]).toBe(false);
126
+ });
127
+ test("Everytime the user use space in the component, the onchange function is called with the correct value UNCONTROLLED COMPONENT", function () {
128
+ var onChange = jest.fn();
129
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
130
+ label: "SwitchComponent",
131
+ onChange: onChange
132
+ })),
133
+ getByText = _render9.getByText;
134
+ _react2.fireEvent.focus(getByText("SwitchComponent"));
135
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
136
+ key: " "
137
+ });
138
+ _react2.fireEvent.keyDown(getByText("SwitchComponent"), {
139
+ key: " "
140
+ });
141
+ expect(onChange.mock.calls[0][0]).toBe(true);
142
+ expect(onChange.mock.calls[1][0]).toBe(false);
143
+ });
144
+ test("Renders with correct initial value and initial state when it is uncontrolled", function () {
145
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
146
+ label: "Default label",
147
+ defaultChecked: true,
148
+ value: "test-defaultChecked",
149
+ name: "test"
150
+ }));
151
+ var switchEl = component.getByRole("switch");
152
+ var inputEl = component.container.querySelector("input[name=\"test\"]");
153
+ expect(inputEl.value).toBe("test-defaultChecked");
154
+ expect(switchEl.getAttribute("aria-checked")).toBe("true");
155
+ });
156
+ test("Renders with correct aria attributes", function () {
157
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
158
+ label: "Default label"
159
+ })),
160
+ getByText = _render10.getByText,
161
+ getByRole = _render10.getByRole;
162
+ var switchEl = getByRole("switch");
163
+ var label = getByText("Default label");
164
+ expect(switchEl.getAttribute("aria-labelledby")).toBe(label.id);
165
+ expect(switchEl.getAttribute("aria-checked")).toBe("false");
166
+ });
167
+ test("Renders disabled switch correctly", function () {
168
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
169
+ label: "Default label",
170
+ disabled: true
171
+ })),
172
+ getByText = _render11.getByText,
173
+ getByRole = _render11.getByRole;
174
+ var switchEl = getByRole("switch");
175
+ var label = getByText("Default label");
176
+ expect(switchEl.getAttribute("aria-labelledby")).toBe(label.id);
177
+ expect(switchEl.getAttribute("aria-checked")).toBe("false");
178
+ expect(switchEl.getAttribute("aria-disabled")).toBe("true");
179
+ });
180
+ });
package/switch/types.d.ts CHANGED
@@ -1,11 +1,15 @@
1
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
- declare type Margin = {
1
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
+ type Margin = {
3
3
  top?: Space;
4
4
  bottom?: Space;
5
5
  left?: Space;
6
6
  right?: Space;
7
7
  };
8
- declare type Props = {
8
+ type Props = {
9
+ /**
10
+ * Initial state of the switch, only when it is uncontrolled.
11
+ */
12
+ defaultChecked?: boolean;
9
13
  /**
10
14
  * If true, the component is checked. If undefined, the component will be uncontrolled
11
15
  * and the checked attribute will be managed internally by the component.
@@ -38,9 +42,9 @@ declare type Props = {
38
42
  */
39
43
  onChange?: (checked: boolean) => void;
40
44
  /**
41
- * If true, the switch will change its appearence, showing that the value is required.
45
+ * If true, the component will display '(Optional)' next to the label.
42
46
  */
43
- required?: boolean;
47
+ optional?: boolean;
44
48
  /**
45
49
  * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
46
50
  * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
@@ -55,4 +59,8 @@ declare type Props = {
55
59
  */
56
60
  tabIndex?: number;
57
61
  };
62
+ /**
63
+ * Reference to the component.
64
+ */
65
+ export type RefType = HTMLDivElement;
58
66
  export default Props;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { ActionCellsPropsType } from "./types";
3
+ declare const DxcActionsCell: ({ actions }: ActionCellsPropsType) => JSX.Element;
4
+ export default DxcActionsCell;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _ActionIcon = _interopRequireDefault(require("../action-icon/ActionIcon"));
10
+ var _main = require("../main");
11
+ var _DropdownTheme = _interopRequireDefault(require("./DropdownTheme"));
12
+ var moreVertIcon = /*#__PURE__*/_react["default"].createElement("svg", {
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ height: "24",
15
+ viewBox: "0 -960 960 960",
16
+ width: "24",
17
+ fill: "currentColor"
18
+ }, /*#__PURE__*/_react["default"].createElement("path", {
19
+ d: "M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z"
20
+ }));
21
+ var DxcActionsCell = function DxcActionsCell(_ref) {
22
+ var actions = _ref.actions;
23
+ var actionIcons = actions.filter(function (action) {
24
+ return !action.options;
25
+ });
26
+ var actionDropdown = actions.find(function (action) {
27
+ return action.options;
28
+ });
29
+ var maxNumberOfActions = actionDropdown ? 2 : 3;
30
+ return /*#__PURE__*/_react["default"].createElement(_main.DxcFlex, {
31
+ gap: "0.5rem",
32
+ alignItems: "center"
33
+ }, actionIcons.map(function (action, index) {
34
+ var _action$disabled, _action$tabIndex;
35
+ return index < maxNumberOfActions && /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
36
+ icon: action.icon,
37
+ title: action.title,
38
+ onClick: action.onClick,
39
+ disabled: (_action$disabled = action.disabled) !== null && _action$disabled !== void 0 ? _action$disabled : false,
40
+ tabIndex: (_action$tabIndex = action.tabIndex) !== null && _action$tabIndex !== void 0 ? _action$tabIndex : 0,
41
+ key: "action-".concat(index)
42
+ });
43
+ }), actionDropdown && /*#__PURE__*/_react["default"].createElement(_main.HalstackProvider, {
44
+ advancedTheme: _DropdownTheme["default"],
45
+ key: "provider-dropdown"
46
+ }, /*#__PURE__*/_react["default"].createElement(_main.DxcDropdown, {
47
+ options: actionDropdown.options,
48
+ onSelectOption: actionDropdown.onClick,
49
+ disabled: actionDropdown.disabled,
50
+ icon: moreVertIcon,
51
+ tabIndex: actionDropdown.tabIndex,
52
+ caretHidden: true
53
+ })));
54
+ };
55
+ var _default = exports["default"] = DxcActionsCell;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _default = exports["default"] = {
8
+ dropdown: {
9
+ // Breadcrumbs tokens
10
+ buttonIconSize: "16px",
11
+ buttonPaddingTop: "4px",
12
+ buttonPaddingBottom: "4px",
13
+ buttonPaddingLeft: "4px",
14
+ buttonPaddingRight: "4px",
15
+ buttonHeight: "24px",
16
+ buttonBorderRadius: "2px",
17
+ buttonBorderColor: "transparent",
18
+ optionFontSize: "14px",
19
+ optionPaddingTop: "0px",
20
+ optionPaddingBottom: "0px",
21
+ optionPaddingLeft: "16px",
22
+ optionPaddingRight: "16px",
23
+ // Dropdown tokens
24
+ buttonBackgroundColor: "#ffffff",
25
+ hoverButtonBackgroundColor: "#f2f2f2",
26
+ activeButtonBackgroundColor: "#cccccc",
27
+ buttonFontFamily: "Open Sans, sans-serif",
28
+ buttonFontSize: "1rem",
29
+ buttonFontStyle: "normal",
30
+ buttonFontWeight: "400",
31
+ buttonFontColor: "#000000",
32
+ buttonIconSpacing: "10px",
33
+ buttonIconColor: "#5f249f",
34
+ disabledColor: "#999999",
35
+ disabledButtonBackgroundColor: "transparent",
36
+ disabledBorderColor: "transparent",
37
+ optionBackgroundColor: "#ffffff",
38
+ hoverOptionBackgroundColor: "#f2f2f2",
39
+ activeOptionBackgroundColor: "#cccccc",
40
+ optionFontFamily: "Open Sans, sans-serif",
41
+ optionFontStyle: "normal",
42
+ optionFontWeight: "400",
43
+ optionFontColor: "#000000",
44
+ optionIconSize: "20px",
45
+ optionIconSpacing: "10px",
46
+ optionIconColor: "#000000",
47
+ caretIconSize: "24px",
48
+ caretIconColor: "#000000",
49
+ caretIconSpacing: "12px",
50
+ borderRadius: "4px",
51
+ borderStyle: "none",
52
+ borderThickness: "0px",
53
+ borderColor: "transparent",
54
+ scrollBarThumbColor: "#666666",
55
+ scrollBarTrackColor: "#cccccc"
56
+ }
57
+ };
package/table/Table.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import TablePropsType from "./types";
3
- declare const DxcTable: ({ children, margin }: TablePropsType) => JSX.Element;
3
+ declare const DxcTable: {
4
+ ({ children, margin, mode }: TablePropsType): JSX.Element;
5
+ ActionsCell: ({ actions }: import("./types").ActionCellsPropsType) => JSX.Element;
6
+ };
4
7
  export default DxcTable;
package/table/Table.js CHANGED
@@ -1,53 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
11
  var _react = _interopRequireDefault(require("react"));
17
-
18
12
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
-
20
- var _variables = require("../common/variables.js");
21
-
22
- var _utils = require("../common/utils.js");
23
-
24
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
25
-
26
- var _BackgroundColorContext = require("../BackgroundColorContext.js");
27
-
13
+ var _variables = require("../common/variables");
14
+ var _utils = require("../common/utils");
15
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
16
+ var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
17
+ var _ActionsCell = _interopRequireDefault(require("./ActionsCell"));
28
18
  var _templateObject, _templateObject2;
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
34
21
  var DxcTable = function DxcTable(_ref) {
35
22
  var children = _ref.children,
36
- margin = _ref.margin;
23
+ margin = _ref.margin,
24
+ _ref$mode = _ref.mode,
25
+ mode = _ref$mode === void 0 ? "default" : _ref$mode;
37
26
  var colorsTheme = (0, _useTheme["default"])();
38
27
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
39
28
  theme: colorsTheme.table
40
29
  }, /*#__PURE__*/_react["default"].createElement(DxcTableContainer, {
41
30
  margin: margin
42
- }, /*#__PURE__*/_react["default"].createElement(DxcTableContent, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
43
- color: colorsTheme.table.dataBackgroundColor
44
- }, children))));
31
+ }, /*#__PURE__*/_react["default"].createElement(DxcTableContent, {
32
+ mode: mode
33
+ }, children)));
45
34
  };
46
-
47
35
  var calculateWidth = function calculateWidth(margin) {
48
36
  return "calc(100% - ".concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
49
37
  };
50
-
51
38
  var DxcTableContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n overflow: auto;\n &::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n &::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 6px;\n }\n &::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 6px;\n }\n"])), function (props) {
52
39
  return calculateWidth(props.margin);
53
40
  }, function (props) {
@@ -65,9 +52,10 @@ var DxcTableContainer = _styledComponents["default"].div(_templateObject || (_te
65
52
  }, function (props) {
66
53
  return props.theme.scrollBarTrackColor;
67
54
  });
68
-
69
- var DxcTableContent = _styledComponents["default"].table(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n border-collapse: collapse;\n width: 100%;\n\n & tr {\n border-bottom: ", ";\n }\n & td {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th:first-child {\n border-top-left-radius: ", ";\n }\n & th:last-child {\n border-top-right-radius: ", ";\n }\n"])), function (props) {
55
+ var DxcTableContent = _styledComponents["default"].table(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n border-collapse: collapse;\n width: 100%;\n\n & tr {\n border-bottom: ", ";\n height: ", ";\n }\n & td {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th:first-child {\n border-top-left-radius: ", ";\n padding-left: ", ";\n }\n & th:last-child {\n border-top-right-radius: ", ";\n padding-right: ", ";\n }\n & td:first-child {\n padding-left: ", ";\n }\n & td:last-child {\n padding-right: ", ";\n }\n"])), function (props) {
70
56
  return "".concat(props.theme.rowSeparatorThickness, " ").concat(props.theme.rowSeparatorStyle, " ").concat(props.theme.rowSeparatorColor);
57
+ }, function (props) {
58
+ return props.mode === "default" ? "60px" : "36px";
71
59
  }, function (props) {
72
60
  return props.theme.dataBackgroundColor;
73
61
  }, function (props) {
@@ -87,7 +75,7 @@ var DxcTableContent = _styledComponents["default"].table(_templateObject2 || (_t
87
75
  }, function (props) {
88
76
  return props.theme.dataTextLineHeight;
89
77
  }, function (props) {
90
- return "".concat(props.theme.dataPaddingTop, " ").concat(props.theme.dataPaddingRight, " ").concat(props.theme.dataPaddingBottom, " ").concat(props.theme.dataPaddingLeft);
78
+ return props.mode === "default" ? "".concat(props.theme.dataPaddingTop, " ").concat(props.theme.dataPaddingRight, " ").concat(props.theme.dataPaddingBottom, " ").concat(props.theme.dataPaddingLeft) : "".concat(_coreTokens["default"].spacing_8, " ").concat(_coreTokens["default"].spacing_16);
91
79
  }, function (props) {
92
80
  return props.theme.headerBackgroundColor;
93
81
  }, function (props) {
@@ -107,12 +95,19 @@ var DxcTableContent = _styledComponents["default"].table(_templateObject2 || (_t
107
95
  }, function (props) {
108
96
  return props.theme.headerTextLineHeight;
109
97
  }, function (props) {
110
- return "".concat(props.theme.headerPaddingTop, " ").concat(props.theme.headerPaddingRight, " ").concat(props.theme.headerPaddingBottom, " ").concat(props.theme.headerPaddingLeft);
98
+ return props.mode === "default" ? "".concat(props.theme.headerPaddingTop, " ").concat(props.theme.headerPaddingRight, " ").concat(props.theme.headerPaddingBottom, " ").concat(props.theme.headerPaddingLeft) : "".concat(_coreTokens["default"].spacing_8, " ").concat(_coreTokens["default"].spacing_16);
111
99
  }, function (props) {
112
100
  return props.theme.headerBorderRadius;
101
+ }, function (props) {
102
+ return props.mode === "default" ? _coreTokens["default"].spacing_24 : "20px";
113
103
  }, function (props) {
114
104
  return props.theme.headerBorderRadius;
105
+ }, function (props) {
106
+ return props.mode === "default" ? _coreTokens["default"].spacing_24 : "20px";
107
+ }, function (props) {
108
+ return props.mode === "default" ? _coreTokens["default"].spacing_24 : "20px";
109
+ }, function (props) {
110
+ return props.mode === "default" ? _coreTokens["default"].spacing_24 : "20px";
115
111
  });
116
-
117
- var _default = DxcTable;
118
- exports["default"] = _default;
112
+ DxcTable.ActionsCell = _ActionsCell["default"];
113
+ var _default = exports["default"] = DxcTable;