@dxc-technology/halstack-react 0.0.0-28a98e5 → 0.0.0-293a019

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 (389) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +2 -5
  3. package/HalstackContext.d.ts +1336 -0
  4. package/HalstackContext.js +335 -0
  5. package/accordion/Accordion.d.ts +4 -0
  6. package/accordion/Accordion.js +120 -175
  7. package/accordion/Accordion.stories.tsx +395 -0
  8. package/accordion/Accordion.test.js +71 -0
  9. package/accordion/types.d.ts +69 -0
  10. package/accordion/types.js +5 -0
  11. package/accordion-group/AccordionGroup.d.ts +7 -0
  12. package/accordion-group/AccordionGroup.js +63 -98
  13. package/accordion-group/AccordionGroup.stories.tsx +251 -0
  14. package/accordion-group/AccordionGroup.test.js +126 -0
  15. package/accordion-group/types.d.ts +79 -0
  16. package/accordion-group/types.js +5 -0
  17. package/alert/Alert.d.ts +4 -0
  18. package/alert/Alert.js +10 -30
  19. package/alert/Alert.stories.tsx +198 -0
  20. package/alert/Alert.test.js +92 -0
  21. package/alert/types.d.ts +49 -0
  22. package/alert/types.js +5 -0
  23. package/badge/Badge.d.ts +4 -0
  24. package/badge/Badge.js +6 -4
  25. package/badge/types.d.ts +5 -0
  26. package/badge/types.js +5 -0
  27. package/bleed/Bleed.d.ts +3 -0
  28. package/bleed/Bleed.js +51 -0
  29. package/bleed/Bleed.stories.tsx +342 -0
  30. package/bleed/types.d.ts +37 -0
  31. package/bleed/types.js +5 -0
  32. package/box/Box.d.ts +4 -0
  33. package/box/Box.js +31 -69
  34. package/box/Box.stories.tsx +147 -0
  35. package/box/Box.test.js +18 -0
  36. package/box/types.d.ts +44 -0
  37. package/box/types.js +5 -0
  38. package/bulleted-list/BulletedList.d.ts +7 -0
  39. package/bulleted-list/BulletedList.js +125 -0
  40. package/bulleted-list/BulletedList.stories.tsx +206 -0
  41. package/bulleted-list/types.d.ts +38 -0
  42. package/bulleted-list/types.js +5 -0
  43. package/button/Button.d.ts +1 -1
  44. package/button/Button.js +59 -88
  45. package/button/Button.stories.tsx +403 -284
  46. package/button/Button.test.js +35 -0
  47. package/button/types.d.ts +12 -16
  48. package/card/Card.d.ts +4 -0
  49. package/card/Card.js +47 -87
  50. package/card/Card.stories.tsx +200 -0
  51. package/card/Card.test.js +50 -0
  52. package/card/ice-cream.jpg +0 -0
  53. package/card/types.d.ts +68 -0
  54. package/card/types.js +5 -0
  55. package/checkbox/Checkbox.d.ts +4 -0
  56. package/checkbox/Checkbox.js +108 -133
  57. package/checkbox/Checkbox.stories.tsx +260 -0
  58. package/checkbox/Checkbox.test.js +155 -0
  59. package/checkbox/types.d.ts +68 -0
  60. package/checkbox/types.js +5 -0
  61. package/chip/Chip.d.ts +4 -0
  62. package/chip/Chip.js +37 -118
  63. package/chip/Chip.stories.tsx +214 -0
  64. package/chip/Chip.test.js +54 -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 +146 -0
  69. package/common/coreTokens.js +167 -0
  70. package/common/utils.d.ts +1 -0
  71. package/common/utils.js +4 -4
  72. package/common/variables.d.ts +1482 -0
  73. package/common/variables.js +1100 -1306
  74. package/date-input/Calendar.d.ts +4 -0
  75. package/date-input/Calendar.js +258 -0
  76. package/date-input/DateInput.d.ts +4 -0
  77. package/date-input/DateInput.js +173 -300
  78. package/date-input/DateInput.stories.tsx +304 -0
  79. package/date-input/DateInput.test.js +835 -0
  80. package/date-input/DatePicker.d.ts +4 -0
  81. package/date-input/DatePicker.js +146 -0
  82. package/date-input/Icons.d.ts +6 -0
  83. package/date-input/Icons.js +75 -0
  84. package/date-input/YearPicker.d.ts +4 -0
  85. package/date-input/YearPicker.js +126 -0
  86. package/date-input/types.d.ts +158 -0
  87. package/date-input/types.js +5 -0
  88. package/dialog/Dialog.d.ts +4 -0
  89. package/dialog/Dialog.js +78 -113
  90. package/dialog/Dialog.stories.tsx +319 -0
  91. package/dialog/Dialog.test.js +369 -0
  92. package/dialog/types.d.ts +44 -0
  93. package/dialog/types.js +5 -0
  94. package/dropdown/Dropdown.d.ts +4 -0
  95. package/dropdown/Dropdown.js +244 -306
  96. package/dropdown/Dropdown.stories.tsx +438 -0
  97. package/dropdown/Dropdown.test.js +586 -0
  98. package/dropdown/DropdownMenu.d.ts +4 -0
  99. package/dropdown/DropdownMenu.js +74 -0
  100. package/dropdown/DropdownMenuItem.d.ts +4 -0
  101. package/dropdown/DropdownMenuItem.js +79 -0
  102. package/dropdown/types.d.ts +100 -0
  103. package/dropdown/types.js +5 -0
  104. package/file-input/FileInput.d.ts +4 -0
  105. package/file-input/FileInput.js +183 -168
  106. package/file-input/FileInput.stories.tsx +618 -0
  107. package/file-input/FileInput.test.js +457 -0
  108. package/file-input/FileItem.d.ts +4 -0
  109. package/file-input/FileItem.js +50 -81
  110. package/file-input/types.d.ts +129 -0
  111. package/file-input/types.js +5 -0
  112. package/flex/Flex.d.ts +4 -0
  113. package/flex/Flex.js +71 -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 +4 -0
  118. package/footer/Footer.js +37 -151
  119. package/footer/Footer.stories.tsx +228 -0
  120. package/footer/Footer.test.js +97 -0
  121. package/footer/Icons.d.ts +2 -0
  122. package/footer/Icons.js +4 -4
  123. package/footer/types.d.ts +66 -0
  124. package/footer/types.js +5 -0
  125. package/grid/Grid.d.ts +7 -0
  126. package/grid/Grid.js +91 -0
  127. package/grid/Grid.stories.tsx +219 -0
  128. package/grid/types.d.ts +115 -0
  129. package/grid/types.js +5 -0
  130. package/header/Header.d.ts +8 -0
  131. package/header/Header.js +127 -150
  132. package/header/Header.stories.tsx +315 -0
  133. package/header/Header.test.js +79 -0
  134. package/header/Icons.d.ts +2 -0
  135. package/header/Icons.js +4 -29
  136. package/header/types.d.ts +48 -0
  137. package/header/types.js +5 -0
  138. package/heading/Heading.d.ts +4 -0
  139. package/heading/Heading.js +8 -25
  140. package/heading/Heading.stories.tsx +54 -0
  141. package/heading/Heading.test.js +186 -0
  142. package/heading/types.d.ts +33 -0
  143. package/heading/types.js +5 -0
  144. package/inset/Inset.d.ts +3 -0
  145. package/inset/Inset.js +51 -0
  146. package/inset/Inset.stories.tsx +230 -0
  147. package/inset/types.d.ts +37 -0
  148. package/inset/types.js +5 -0
  149. package/layout/ApplicationLayout.d.ts +20 -0
  150. package/layout/ApplicationLayout.js +72 -136
  151. package/layout/ApplicationLayout.stories.tsx +162 -0
  152. package/layout/Icons.d.ts +5 -0
  153. package/layout/Icons.js +13 -2
  154. package/layout/SidenavContext.d.ts +5 -0
  155. package/layout/SidenavContext.js +19 -0
  156. package/layout/types.d.ts +41 -0
  157. package/layout/types.js +5 -0
  158. package/link/Link.d.ts +4 -0
  159. package/link/Link.js +62 -109
  160. package/link/Link.stories.tsx +253 -0
  161. package/link/Link.test.js +81 -0
  162. package/link/types.d.ts +54 -0
  163. package/link/types.js +5 -0
  164. package/main.d.ts +13 -12
  165. package/main.js +68 -54
  166. package/nav-tabs/NavTabs.d.ts +8 -0
  167. package/nav-tabs/NavTabs.js +125 -0
  168. package/nav-tabs/NavTabs.stories.tsx +260 -0
  169. package/nav-tabs/NavTabs.test.js +82 -0
  170. package/nav-tabs/Tab.d.ts +4 -0
  171. package/nav-tabs/Tab.js +150 -0
  172. package/nav-tabs/types.d.ts +53 -0
  173. package/nav-tabs/types.js +5 -0
  174. package/number-input/NumberInput.d.ts +4 -0
  175. package/number-input/NumberInput.js +16 -68
  176. package/number-input/NumberInput.stories.tsx +115 -0
  177. package/number-input/NumberInput.test.js +542 -0
  178. package/number-input/NumberInputContext.d.ts +4 -0
  179. package/number-input/NumberInputContext.js +5 -2
  180. package/number-input/numberInputContextTypes.d.ts +19 -0
  181. package/number-input/numberInputContextTypes.js +5 -0
  182. package/number-input/types.d.ts +124 -0
  183. package/number-input/types.js +5 -0
  184. package/package.json +23 -24
  185. package/paginator/Icons.d.ts +5 -0
  186. package/paginator/Icons.js +16 -28
  187. package/paginator/Paginator.d.ts +4 -0
  188. package/paginator/Paginator.js +21 -79
  189. package/paginator/Paginator.stories.tsx +87 -0
  190. package/paginator/Paginator.test.js +305 -0
  191. package/paginator/types.d.ts +38 -0
  192. package/paginator/types.js +5 -0
  193. package/paragraph/Paragraph.d.ts +5 -0
  194. package/paragraph/Paragraph.js +38 -0
  195. package/paragraph/Paragraph.stories.tsx +44 -0
  196. package/password-input/PasswordInput.d.ts +4 -0
  197. package/password-input/PasswordInput.js +24 -57
  198. package/password-input/PasswordInput.stories.tsx +131 -0
  199. package/password-input/PasswordInput.test.js +181 -0
  200. package/password-input/types.d.ts +110 -0
  201. package/password-input/types.js +5 -0
  202. package/progress-bar/ProgressBar.d.ts +4 -0
  203. package/progress-bar/ProgressBar.js +64 -76
  204. package/progress-bar/ProgressBar.stories.jsx +93 -0
  205. package/progress-bar/ProgressBar.test.js +110 -0
  206. package/progress-bar/types.d.ts +37 -0
  207. package/progress-bar/types.js +5 -0
  208. package/quick-nav/QuickNav.d.ts +4 -0
  209. package/quick-nav/QuickNav.js +117 -0
  210. package/quick-nav/QuickNav.stories.tsx +356 -0
  211. package/quick-nav/types.d.ts +21 -0
  212. package/quick-nav/types.js +5 -0
  213. package/radio-group/Radio.d.ts +4 -0
  214. package/radio-group/Radio.js +156 -0
  215. package/radio-group/RadioGroup.d.ts +4 -0
  216. package/radio-group/RadioGroup.js +283 -0
  217. package/radio-group/RadioGroup.stories.tsx +214 -0
  218. package/radio-group/RadioGroup.test.js +722 -0
  219. package/radio-group/types.d.ts +114 -0
  220. package/radio-group/types.js +5 -0
  221. package/resultsetTable/Icons.d.ts +7 -0
  222. package/resultsetTable/Icons.js +51 -0
  223. package/resultsetTable/ResultsetTable.d.ts +4 -0
  224. package/resultsetTable/ResultsetTable.js +54 -133
  225. package/resultsetTable/ResultsetTable.stories.tsx +300 -0
  226. package/resultsetTable/ResultsetTable.test.js +325 -0
  227. package/resultsetTable/types.d.ts +67 -0
  228. package/resultsetTable/types.js +5 -0
  229. package/select/Icons.d.ts +10 -0
  230. package/select/Icons.js +93 -0
  231. package/select/Listbox.d.ts +4 -0
  232. package/select/Listbox.js +169 -0
  233. package/select/Option.d.ts +4 -0
  234. package/select/Option.js +97 -0
  235. package/select/Select.d.ts +4 -0
  236. package/select/Select.js +255 -453
  237. package/select/Select.stories.tsx +971 -0
  238. package/select/Select.test.js +2228 -0
  239. package/select/types.d.ts +210 -0
  240. package/select/types.js +5 -0
  241. package/sidenav/Icons.d.ts +7 -0
  242. package/sidenav/Icons.js +51 -0
  243. package/sidenav/Sidenav.d.ts +10 -0
  244. package/sidenav/Sidenav.js +147 -54
  245. package/sidenav/Sidenav.stories.tsx +282 -0
  246. package/sidenav/Sidenav.test.js +44 -0
  247. package/sidenav/types.d.ts +76 -0
  248. package/sidenav/types.js +5 -0
  249. package/slider/Slider.d.ts +4 -0
  250. package/slider/Slider.js +160 -158
  251. package/slider/Slider.stories.tsx +240 -0
  252. package/slider/Slider.test.js +250 -0
  253. package/slider/types.d.ts +86 -0
  254. package/slider/types.js +5 -0
  255. package/spinner/Spinner.d.ts +4 -0
  256. package/spinner/Spinner.js +26 -49
  257. package/spinner/Spinner.stories.jsx +129 -0
  258. package/spinner/Spinner.test.js +64 -0
  259. package/spinner/types.d.ts +32 -0
  260. package/spinner/types.js +5 -0
  261. package/switch/Switch.d.ts +4 -0
  262. package/switch/Switch.js +156 -102
  263. package/switch/Switch.stories.tsx +171 -0
  264. package/switch/Switch.test.js +225 -0
  265. package/switch/types.d.ts +66 -0
  266. package/switch/types.js +5 -0
  267. package/table/Table.d.ts +4 -0
  268. package/table/Table.js +6 -6
  269. package/table/Table.stories.jsx +356 -0
  270. package/table/Table.test.js +26 -0
  271. package/table/types.d.ts +21 -0
  272. package/table/types.js +5 -0
  273. package/tabs/Tab.d.ts +4 -0
  274. package/tabs/Tab.js +132 -0
  275. package/tabs/Tabs.d.ts +4 -0
  276. package/tabs/Tabs.js +361 -159
  277. package/tabs/Tabs.stories.tsx +226 -0
  278. package/tabs/Tabs.test.js +350 -0
  279. package/tabs/types.d.ts +92 -0
  280. package/tabs/types.js +5 -0
  281. package/tag/Tag.d.ts +4 -0
  282. package/tag/Tag.js +38 -65
  283. package/tag/Tag.stories.tsx +155 -0
  284. package/tag/Tag.test.js +60 -0
  285. package/tag/types.d.ts +69 -0
  286. package/tag/types.js +5 -0
  287. package/text-input/Icons.d.ts +8 -0
  288. package/text-input/Icons.js +60 -0
  289. package/text-input/Suggestion.d.ts +4 -0
  290. package/text-input/Suggestion.js +84 -0
  291. package/text-input/Suggestions.d.ts +4 -0
  292. package/text-input/Suggestions.js +134 -0
  293. package/text-input/TextInput.d.ts +4 -0
  294. package/text-input/TextInput.js +259 -404
  295. package/text-input/TextInput.stories.tsx +569 -0
  296. package/text-input/TextInput.test.js +1723 -0
  297. package/text-input/types.d.ts +197 -0
  298. package/text-input/types.js +5 -0
  299. package/textarea/Textarea.d.ts +4 -0
  300. package/textarea/Textarea.js +41 -80
  301. package/textarea/Textarea.stories.jsx +216 -0
  302. package/textarea/Textarea.test.js +435 -0
  303. package/textarea/types.d.ts +137 -0
  304. package/textarea/types.js +5 -0
  305. package/toggle-group/ToggleGroup.d.ts +4 -0
  306. package/toggle-group/ToggleGroup.js +24 -49
  307. package/toggle-group/ToggleGroup.stories.tsx +215 -0
  308. package/toggle-group/ToggleGroup.test.js +156 -0
  309. package/toggle-group/types.d.ts +105 -0
  310. package/toggle-group/types.js +5 -0
  311. package/typography/Typography.d.ts +4 -0
  312. package/typography/Typography.js +32 -0
  313. package/typography/Typography.stories.tsx +198 -0
  314. package/typography/types.d.ts +18 -0
  315. package/typography/types.js +5 -0
  316. package/useTheme.d.ts +1235 -0
  317. package/useTheme.js +3 -3
  318. package/useTranslatedLabels.d.ts +85 -0
  319. package/useTranslatedLabels.js +20 -0
  320. package/utils/BaseTypography.d.ts +21 -0
  321. package/utils/BaseTypography.js +108 -0
  322. package/utils/FocusLock.d.ts +13 -0
  323. package/utils/FocusLock.js +139 -0
  324. package/wizard/Wizard.d.ts +4 -0
  325. package/wizard/Wizard.js +119 -105
  326. package/wizard/Wizard.stories.tsx +253 -0
  327. package/wizard/Wizard.test.js +141 -0
  328. package/wizard/types.d.ts +64 -0
  329. package/wizard/types.js +5 -0
  330. package/ThemeContext.js +0 -246
  331. package/V3Select/V3Select.js +0 -455
  332. package/V3Select/index.d.ts +0 -27
  333. package/V3Textarea/V3Textarea.js +0 -260
  334. package/V3Textarea/index.d.ts +0 -27
  335. package/accordion/index.d.ts +0 -28
  336. package/accordion-group/index.d.ts +0 -16
  337. package/alert/index.d.ts +0 -51
  338. package/box/index.d.ts +0 -25
  339. package/card/index.d.ts +0 -22
  340. package/checkbox/index.d.ts +0 -24
  341. package/chip/index.d.ts +0 -22
  342. package/common/RequiredComponent.js +0 -32
  343. package/date/Date.js +0 -373
  344. package/date/index.d.ts +0 -27
  345. package/date-input/index.d.ts +0 -95
  346. package/dialog/index.d.ts +0 -18
  347. package/dropdown/index.d.ts +0 -26
  348. package/file-input/index.d.ts +0 -81
  349. package/footer/index.d.ts +0 -25
  350. package/header/index.d.ts +0 -25
  351. package/heading/index.d.ts +0 -17
  352. package/input-text/Icons.js +0 -22
  353. package/input-text/InputText.js +0 -611
  354. package/input-text/index.d.ts +0 -36
  355. package/link/index.d.ts +0 -23
  356. package/number-input/index.d.ts +0 -113
  357. package/paginator/index.d.ts +0 -20
  358. package/password-input/index.d.ts +0 -94
  359. package/progress-bar/index.d.ts +0 -18
  360. package/radio/Radio.js +0 -195
  361. package/radio/index.d.ts +0 -23
  362. package/resultsetTable/index.d.ts +0 -19
  363. package/select/index.d.ts +0 -131
  364. package/sidenav/index.d.ts +0 -13
  365. package/slider/index.d.ts +0 -29
  366. package/spinner/index.d.ts +0 -17
  367. package/switch/index.d.ts +0 -24
  368. package/table/index.d.ts +0 -13
  369. package/tabs/index.d.ts +0 -19
  370. package/tag/index.d.ts +0 -24
  371. package/text-input/index.d.ts +0 -135
  372. package/textarea/index.d.ts +0 -117
  373. package/toggle/Toggle.js +0 -186
  374. package/toggle/index.d.ts +0 -21
  375. package/toggle-group/index.d.ts +0 -21
  376. package/upload/Upload.js +0 -201
  377. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  378. package/upload/buttons-upload/Icons.js +0 -40
  379. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  380. package/upload/dragAndDropArea/Icons.js +0 -39
  381. package/upload/file-upload/FileToUpload.js +0 -115
  382. package/upload/file-upload/Icons.js +0 -66
  383. package/upload/files-upload/FilesToUpload.js +0 -109
  384. package/upload/index.d.ts +0 -15
  385. package/upload/transaction/Icons.js +0 -160
  386. package/upload/transaction/Transaction.js +0 -104
  387. package/upload/transactions/Transactions.js +0 -94
  388. package/wizard/Icons.js +0 -65
  389. package/wizard/index.d.ts +0 -18
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
+
11
+ var _Checkbox = _interopRequireDefault(require("./Checkbox.tsx"));
12
+
13
+ describe("Checkbox component tests", function () {
14
+ test("Checkbox renders with correct aria-labelledby and aria-required", function () {
15
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
16
+ label: "Checkbox"
17
+ })),
18
+ getByText = _render.getByText,
19
+ getByRole = _render.getByRole;
20
+
21
+ var labelId = getByText("Checkbox").getAttribute("id");
22
+ expect(getByRole("checkbox").getAttribute("aria-labelledby")).toBe(labelId);
23
+ expect(getByRole("checkbox").getAttribute("aria-required")).toBe("true");
24
+ });
25
+ test("Optional checkbox renders with correct aria-required", function () {
26
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
27
+ label: "Checkbox",
28
+ optional: true
29
+ })),
30
+ getByRole = _render2.getByRole;
31
+
32
+ expect(getByRole("checkbox").getAttribute("aria-required")).toBe("false");
33
+ });
34
+ test("Calls correct function on click", function () {
35
+ var onChange = jest.fn();
36
+
37
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
38
+ label: "Checkbox",
39
+ onChange: onChange
40
+ })),
41
+ getByText = _render3.getByText;
42
+
43
+ _react2.fireEvent.click(getByText("Checkbox"));
44
+
45
+ expect(onChange).toHaveBeenCalled();
46
+ });
47
+ test("Uncontrolled checkbox", function () {
48
+ var onChange = jest.fn();
49
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
50
+ label: "Checkbox",
51
+ onChange: onChange,
52
+ name: "test"
53
+ }));
54
+ var visibleCheckbox = component.getByText("Checkbox");
55
+ var input = component.getByRole("checkbox");
56
+ var submitInput = component.container.querySelector("input[name=\"test\"]");
57
+ expect(input.getAttribute("aria-checked")).toBe("false");
58
+ expect(submitInput.checked).toBe(false);
59
+
60
+ _react2.fireEvent.click(visibleCheckbox);
61
+
62
+ expect(onChange).toHaveBeenCalled();
63
+ expect(onChange).toHaveBeenCalledWith(true);
64
+ expect(input.getAttribute("aria-checked")).toBe("true");
65
+ expect(submitInput.checked).toBe(true);
66
+ });
67
+ test("Controlled checkbox", function () {
68
+ var onChange = jest.fn();
69
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
70
+ label: "Checkbox",
71
+ checked: false,
72
+ onChange: onChange,
73
+ name: "test"
74
+ }));
75
+ var input = component.getByRole("checkbox");
76
+ var visibleCheckbox = component.getByText("Checkbox");
77
+ var submitInput = component.container.querySelector("input[name=\"test\"]");
78
+
79
+ _react2.fireEvent.click(visibleCheckbox);
80
+
81
+ expect(onChange).toHaveBeenCalled();
82
+ expect(onChange).toHaveBeenCalledWith(true);
83
+ expect(input.getAttribute("aria-checked")).toBe("false");
84
+ expect(submitInput.checked).toBe(false);
85
+ });
86
+ test("Renders with correct initial value and initial state when it is uncontrolled", function () {
87
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
88
+ label: "Default label",
89
+ defaultChecked: true,
90
+ value: "test-defaultChecked",
91
+ name: "test"
92
+ })),
93
+ getByRole = _render4.getByRole,
94
+ container = _render4.container;
95
+
96
+ var checkbox = getByRole("checkbox");
97
+ var submitInput = container.querySelector("input[name=\"test\"]");
98
+ expect(submitInput.value).toBe("test-defaultChecked");
99
+ expect(checkbox.getAttribute("aria-checked")).toBe("true");
100
+ expect(submitInput.checked).toBe(true);
101
+ });
102
+ test("Test disable keyboard and mouse interactions", function () {
103
+ var onChange = jest.fn();
104
+
105
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
106
+ label: "Checkbox",
107
+ onChange: onChange,
108
+ disabled: true,
109
+ name: "test"
110
+ })),
111
+ getByRole = _render5.getByRole,
112
+ getByText = _render5.getByText,
113
+ container = _render5.container;
114
+
115
+ var input = getByRole("checkbox");
116
+ var visibleCheckbox = getByText("Checkbox");
117
+ var submitInput = container.querySelector("input[name=\"test\"]");
118
+
119
+ _react2.fireEvent.click(visibleCheckbox);
120
+
121
+ expect(onChange).toHaveBeenCalledTimes(0);
122
+ expect(input.getAttribute("aria-checked")).toBe("false");
123
+ expect(input.getAttribute("aria-disabled")).toBe("true");
124
+ expect(submitInput.checked).toBe(false);
125
+
126
+ _userEvent["default"].tab();
127
+
128
+ expect(document.activeElement === input).toBeFalsy();
129
+ });
130
+ test("Test keyboard interactions", function () {
131
+ var onChange = jest.fn();
132
+
133
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
134
+ label: "Checkbox",
135
+ name: "test",
136
+ onChange: onChange
137
+ })),
138
+ getByRole = _render6.getByRole;
139
+
140
+ var checkbox = getByRole("checkbox");
141
+
142
+ _userEvent["default"].tab();
143
+
144
+ expect(document.activeElement === checkbox).toBeTruthy();
145
+
146
+ _react2.fireEvent.keyDown(checkbox, {
147
+ key: " ",
148
+ code: "Space",
149
+ keyCode: 32,
150
+ charCode: 32
151
+ });
152
+
153
+ expect(onChange).toHaveBeenCalledWith(true);
154
+ });
155
+ });
@@ -0,0 +1,68 @@
1
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
+ declare type Margin = {
3
+ top?: Space;
4
+ bottom?: Space;
5
+ left?: Space;
6
+ right?: Space;
7
+ };
8
+ declare type Props = {
9
+ /**
10
+ * Initial state of the checkbox, only when it is uncontrolled.
11
+ */
12
+ defaultChecked?: boolean;
13
+ /**
14
+ * If true, the component is checked. If undefined the component will be
15
+ * uncontrolled and the value will be managed internally by the component.
16
+ */
17
+ checked?: boolean;
18
+ /**
19
+ * Will be passed to the value attribute of the html input element.
20
+ * When inside a form, this value will be only submitted if the checkbox is checked.
21
+ */
22
+ value?: string;
23
+ /**
24
+ * Text to be placed next to the checkbox.
25
+ */
26
+ label?: string;
27
+ /**
28
+ * Whether the label should appear after or before the checkbox.
29
+ */
30
+ labelPosition?: "before" | "after";
31
+ /**
32
+ * Name attribute of the input element.
33
+ */
34
+ name?: string;
35
+ /**
36
+ * If true, the component will be disabled.
37
+ */
38
+ disabled?: boolean;
39
+ /**
40
+ * If true, the component will display '(Optional)' next to the label.
41
+ */
42
+ optional?: boolean;
43
+ /**
44
+ * This function will be called when the user clicks the checkbox.
45
+ * The new value will be passed as a parameter.
46
+ */
47
+ onChange?: (value: boolean) => void;
48
+ /**
49
+ * Size of the margin to be applied to the component
50
+ * ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
51
+ * You can pass an object with 'top', 'bottom', 'left' and 'right' properties
52
+ * in order to specify different margin sizes.
53
+ */
54
+ margin?: Space | Margin;
55
+ /**
56
+ * Size of the component.
57
+ */
58
+ size?: "small" | "medium" | "large" | "fillParent" | "fitContent";
59
+ /**
60
+ * Value of the tabindex.
61
+ */
62
+ tabIndex?: number;
63
+ };
64
+ /**
65
+ * Reference to the component.
66
+ */
67
+ export declare type RefType = HTMLDivElement;
68
+ export default Props;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/chip/Chip.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import ChipPropsType from "./types";
3
+ declare const DxcChip: ({ label, suffixIcon, prefixIcon, onClickSuffix, onClickPrefix, disabled, margin, tabIndex, }: ChipPropsType) => JSX.Element;
4
+ export default DxcChip;
package/chip/Chip.js CHANGED
@@ -9,25 +9,21 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
14
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
15
 
16
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
17
-
18
16
  var _react = _interopRequireDefault(require("react"));
19
17
 
20
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
19
 
22
- var _propTypes = _interopRequireDefault(require("prop-types"));
20
+ var _variables = require("../common/variables");
23
21
 
24
- var _variables = require("../common/variables.js");
22
+ var _utils = require("../common/utils");
25
23
 
26
- var _utils = require("../common/utils.js");
24
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
27
25
 
28
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
29
-
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
26
+ var _templateObject, _templateObject2, _templateObject3;
31
27
 
32
28
  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); }
33
29
 
@@ -37,9 +33,7 @@ var DxcChip = function DxcChip(_ref) {
37
33
  var label = _ref.label,
38
34
  suffixIcon = _ref.suffixIcon,
39
35
  prefixIcon = _ref.prefixIcon,
40
- suffixIconSrc = _ref.suffixIconSrc,
41
36
  onClickSuffix = _ref.onClickSuffix,
42
- prefixIconSrc = _ref.prefixIconSrc,
43
37
  onClickPrefix = _ref.onClickPrefix,
44
38
  disabled = _ref.disabled,
45
39
  margin = _ref.margin,
@@ -48,69 +42,42 @@ var DxcChip = function DxcChip(_ref) {
48
42
  var colorsTheme = (0, _useTheme["default"])();
49
43
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
50
44
  theme: colorsTheme.chip
51
- }, /*#__PURE__*/_react["default"].createElement(StyledDxcChip, {
45
+ }, /*#__PURE__*/_react["default"].createElement(Chip, {
52
46
  disabled: disabled,
53
47
  margin: margin
54
- }, prefixIcon ? /*#__PURE__*/_react["default"].createElement(IconContainer, {
55
- disabled: disabled,
56
- prefixIcon: true,
57
- label: label,
58
- mode: "prefix",
59
- tabIndex: typeof onClickPrefix === "function" && !disabled ? tabIndex : -1,
60
- onClick: function onClick() {
61
- return onClickPrefix && !disabled && onClickPrefix(label);
62
- },
63
- interactuable: typeof onClickPrefix === "function" && !disabled
64
- }, (0, _typeof2["default"])(prefixIcon) === "object" ? prefixIcon : /*#__PURE__*/_react["default"].createElement(prefixIcon)) : prefixIconSrc && /*#__PURE__*/_react["default"].createElement(PrefixIconContainer, {
48
+ }, prefixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
49
+ role: typeof onClickPrefix === "function" ? "button" : undefined,
65
50
  disabled: disabled,
66
- src: prefixIconSrc,
67
- label: label,
51
+ interactuable: typeof onClickPrefix === "function" && !disabled,
68
52
  tabIndex: typeof onClickPrefix === "function" && !disabled ? tabIndex : -1,
69
53
  onClick: function onClick() {
70
- return onClickPrefix && !disabled && onClickPrefix(label);
71
- },
72
- interactuable: typeof onClickPrefix === "function" && !disabled
73
- }), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
74
- disabled: disabled,
75
- prefixIconSrc: prefixIconSrc,
76
- suffixIconSrc: suffixIconSrc
77
- }, label), suffixIcon ? /*#__PURE__*/_react["default"].createElement(IconContainer, {
54
+ return onClickPrefix && !disabled && onClickPrefix();
55
+ }
56
+ }, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
57
+ src: prefixIcon
58
+ }) : prefixIcon), label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
59
+ disabled: disabled
60
+ }, label), suffixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
61
+ role: typeof onClickSuffix === "function" ? "button" : undefined,
78
62
  disabled: disabled,
79
- suffixIcon: true,
80
- mode: "suffix",
81
- label: label,
63
+ interactuable: typeof onClickSuffix === "function" && !disabled,
82
64
  tabIndex: typeof onClickSuffix === "function" && !disabled ? tabIndex : -1,
83
65
  onClick: function onClick() {
84
- return onClickSuffix && !disabled && onClickSuffix(label);
85
- },
86
- interactuable: typeof onClickSuffix === "function" && !disabled
87
- }, (0, _typeof2["default"])(suffixIcon) === "object" ? suffixIcon : /*#__PURE__*/_react["default"].createElement(suffixIcon)) : suffixIconSrc && /*#__PURE__*/_react["default"].createElement(SuffixIconContainer, {
88
- disabled: disabled,
89
- src: suffixIconSrc,
90
- label: label,
91
- tabIndex: typeof onClickSuffix === "function" && !disabled ? tabIndex : -1,
92
- onClick: function onClick() {
93
- return onClickSuffix && !disabled && onClickSuffix(label);
94
- },
95
- interactuable: typeof onClickSuffix === "function" && !disabled
96
- })));
66
+ return !disabled && (onClickSuffix === null || onClickSuffix === void 0 ? void 0 : onClickSuffix());
67
+ }
68
+ }, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
69
+ src: suffixIcon
70
+ }) : suffixIcon)));
97
71
  };
98
72
 
99
- var getCursor = function getCursor(interactuable, disabled) {
100
- if (disabled) {
101
- return "cursor:not-allowed;";
102
- }
103
-
104
- if (interactuable) {
105
- return "cursor:pointer;";
106
- }
107
-
108
- return "cursor:default; outline:none;";
73
+ var calculateWidth = function calculateWidth(margin) {
74
+ return "calc(100% - ".concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
109
75
  };
110
76
 
111
- var StyledDxcChip = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n min-height: 40px;\n max-width: ", ";\n background-color: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n"])), function (_ref2) {
112
- var margin = _ref2.margin;
113
- return "calc(100% - 40px - ".concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
77
+ var Chip = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n gap: ", ";\n min-height: 40px;\n max-width: ", ";\n background-color: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n"])), function (props) {
78
+ return props.theme.iconSpacing;
79
+ }, function (props) {
80
+ return calculateWidth(props.margin);
114
81
  }, function (props) {
115
82
  return props.disabled && props.theme.disabledBackgroundColor || props.theme.backgroundColor;
116
83
  }, function (props) {
@@ -139,12 +106,12 @@ var StyledDxcChip = _styledComponents["default"].div(_templateObject || (_templa
139
106
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
140
107
  }, function (props) {
141
108
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
142
- }, function (_ref3) {
143
- var disabled = _ref3.disabled;
109
+ }, function (_ref2) {
110
+ var disabled = _ref2.disabled;
144
111
  return disabled && "not-allowed";
145
112
  });
146
113
 
147
- var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n font-family: ", ";\n font-weight: ", ";\n font-style: ", ";\n color: ", ";\n cursor: ", ";\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n"])), function (props) {
114
+ var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n font-family: ", ";\n font-weight: ", ";\n font-style: ", ";\n color: ", ";\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n"])), function (props) {
148
115
  return props.theme.fontSize;
149
116
  }, function (props) {
150
117
  return props.theme.fontFamily;
@@ -154,68 +121,20 @@ var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_
154
121
  return props.theme.fontStyle;
155
122
  }, function (props) {
156
123
  return props.disabled ? props.theme.disabledFontColor : props.theme.fontColor;
157
- }, function (_ref4) {
158
- var disabled = _ref4.disabled;
159
- return disabled && "not-allowed" || "default";
160
- });
161
-
162
- var SuffixIconContainer = _styledComponents["default"].img(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n margin-left: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
163
- return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
164
- }, function (props) {
165
- return getCursor(props.interactuable, props.disabled);
166
- }, function (props) {
167
- return (props.label || props.suffixIconSrc) && props.theme.iconSpacing || props.prefixIconSrc && "5px";
168
- }, function (props) {
169
- return props.theme.iconSize;
170
- }, function (props) {
171
- return props.theme.iconSize;
172
124
  });
173
125
 
174
- var PrefixIconContainer = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n margin-right: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
126
+ var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n border-radius: 0.25rem;\n color: ", ";\n ", "\n\n ", "\n\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
175
127
  return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
128
+ }, function (_ref3) {
129
+ var interactuable = _ref3.interactuable;
130
+ return interactuable && "cursor: pointer;";
176
131
  }, function (props) {
177
- return getCursor(props.interactuable, props.disabled);
178
- }, function (props) {
179
- return (props.label || props.suffixIconSrc) && props.theme.iconSpacing || props.prefixIconSrc && "5px";
180
- }, function (props) {
181
- return props.theme.iconSize;
182
- }, function (props) {
183
- return props.theme.iconSize;
184
- });
185
-
186
- var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n ", "\n width: ", ";\n height: ", ";\n overflow: hidden;\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n &:focus {\n outline-color: ", ";\n outline-width: 2px;\n ", "\n }\n"])), function (props) {
187
- return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
188
- }, function (props) {
189
- return props.prefixIcon ? "margin-right: ".concat((props.label || props.suffixIcon || props.suffixIconSrc) && props.theme.iconSpacing || (props.prefixIcon || props.prefixIconSrc) && "0", ";") : "margin-left: ".concat((props.label || props.prefixIcon || props.prefixIconSrc) && props.theme.iconSpacing || (props.prefixIcon || props.prefixIconSrc) && "0", ";");
190
- }, function (props) {
191
- return getCursor(props.interactuable, props.disabled);
132
+ return props.interactuable && "\n &:hover {\n color: ".concat(props.theme.hoverIconColor, ";\n }\n &:focus,\n &:focus-visible {\n outline: ").concat(props.theme.focusBorderThickness, " solid ").concat(props.theme.focusColor, ";\n }\n &:active {\n color: ").concat(props.theme.activeIconColor, ";\n }\n ");
192
133
  }, function (props) {
193
134
  return props.theme.iconSize;
194
135
  }, function (props) {
195
136
  return props.theme.iconSize;
196
- }, function (props) {
197
- return props.theme.focusColor;
198
- }, function (props) {
199
- return props.disabled && "outline: none;";
200
137
  });
201
138
 
202
- DxcChip.propTypes = {
203
- label: _propTypes["default"].string,
204
- disabled: _propTypes["default"].bool,
205
- theme: _propTypes["default"].oneOf(["dark", "light"]),
206
- suffixIcon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
207
- prefixIcon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
208
- suffixIconSrc: _propTypes["default"].string,
209
- prefixIconSrc: _propTypes["default"].string,
210
- onClickSuffix: _propTypes["default"].func,
211
- onClickPrefix: _propTypes["default"].func,
212
- margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
213
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
214
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
215
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
216
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
217
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
218
- tabIndex: _propTypes["default"].number
219
- };
220
139
  var _default = DxcChip;
221
140
  exports["default"] = _default;