@dxc-technology/halstack-react 0.0.0-f54247d → 0.0.0-f6290b3

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 (304) 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 +121 -105
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +37 -100
  8. package/accordion/Accordion.stories.tsx +101 -124
  9. package/accordion/Accordion.test.js +19 -34
  10. package/accordion/types.d.ts +5 -17
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +29 -77
  13. package/accordion-group/AccordionGroup.stories.tsx +78 -77
  14. package/accordion-group/AccordionGroup.test.js +44 -72
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +6 -18
  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 +19 -58
  24. package/alert/Alert.stories.tsx +28 -0
  25. package/alert/Alert.test.js +29 -46
  26. package/alert/types.d.ts +5 -5
  27. package/badge/Badge.d.ts +1 -1
  28. package/badge/Badge.js +141 -43
  29. package/badge/Badge.stories.tsx +210 -0
  30. package/badge/Badge.test.js +30 -0
  31. package/badge/types.d.ts +52 -3
  32. package/bleed/Bleed.js +13 -21
  33. package/bleed/Bleed.stories.tsx +1 -0
  34. package/bleed/types.d.ts +2 -2
  35. package/box/Box.d.ts +1 -1
  36. package/box/Box.js +18 -59
  37. package/box/Box.stories.tsx +38 -51
  38. package/box/Box.test.js +2 -7
  39. package/box/types.d.ts +3 -15
  40. package/bulleted-list/BulletedList.js +19 -53
  41. package/bulleted-list/BulletedList.stories.tsx +8 -93
  42. package/bulleted-list/types.d.ts +32 -5
  43. package/button/Button.d.ts +1 -1
  44. package/button/Button.js +69 -105
  45. package/button/Button.stories.tsx +152 -91
  46. package/button/Button.test.js +20 -17
  47. package/button/types.d.ts +8 -4
  48. package/card/Card.d.ts +1 -1
  49. package/card/Card.js +48 -89
  50. package/card/Card.stories.tsx +12 -42
  51. package/card/Card.test.js +11 -22
  52. package/card/types.d.ts +6 -12
  53. package/checkbox/Checkbox.js +87 -122
  54. package/checkbox/Checkbox.stories.tsx +68 -54
  55. package/checkbox/Checkbox.test.js +108 -64
  56. package/checkbox/types.d.ts +8 -4
  57. package/chip/Chip.js +39 -79
  58. package/chip/Chip.stories.tsx +121 -26
  59. package/chip/Chip.test.js +16 -31
  60. package/chip/types.d.ts +4 -4
  61. package/common/OpenSans.css +68 -80
  62. package/common/coreTokens.d.ts +237 -0
  63. package/common/coreTokens.js +184 -0
  64. package/common/utils.d.ts +1 -0
  65. package/common/utils.js +6 -12
  66. package/common/variables.d.ts +1395 -0
  67. package/common/variables.js +910 -1155
  68. package/container/Container.d.ts +4 -0
  69. package/container/Container.js +194 -0
  70. package/container/Container.stories.tsx +214 -0
  71. package/container/types.d.ts +74 -0
  72. package/contextual-menu/ContextualMenu.d.ts +7 -0
  73. package/contextual-menu/ContextualMenu.js +71 -0
  74. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  75. package/contextual-menu/ContextualMenu.test.js +71 -0
  76. package/contextual-menu/MenuItemAction.d.ts +4 -0
  77. package/contextual-menu/MenuItemAction.js +46 -0
  78. package/contextual-menu/types.d.ts +22 -0
  79. package/date-input/Calendar.d.ts +1 -1
  80. package/date-input/Calendar.js +52 -96
  81. package/date-input/DateInput.js +103 -107
  82. package/date-input/DateInput.stories.tsx +194 -60
  83. package/date-input/DateInput.test.js +676 -620
  84. package/date-input/DatePicker.js +47 -92
  85. package/date-input/Icons.d.ts +6 -0
  86. package/date-input/Icons.js +58 -0
  87. package/date-input/YearPicker.d.ts +1 -1
  88. package/date-input/YearPicker.js +29 -44
  89. package/date-input/types.d.ts +32 -28
  90. package/dialog/Dialog.d.ts +1 -1
  91. package/dialog/Dialog.js +61 -119
  92. package/dialog/Dialog.stories.tsx +310 -212
  93. package/dialog/Dialog.test.js +269 -32
  94. package/dialog/types.d.ts +18 -26
  95. package/divider/Divider.d.ts +4 -0
  96. package/divider/Divider.js +36 -0
  97. package/divider/Divider.stories.tsx +223 -0
  98. package/divider/Divider.test.js +38 -0
  99. package/divider/types.d.ts +19 -0
  100. package/divider/types.js +5 -0
  101. package/dropdown/Dropdown.js +53 -108
  102. package/dropdown/Dropdown.stories.tsx +210 -84
  103. package/dropdown/Dropdown.test.js +393 -379
  104. package/dropdown/DropdownMenu.js +20 -37
  105. package/dropdown/DropdownMenuItem.js +9 -34
  106. package/dropdown/types.d.ts +18 -20
  107. package/file-input/FileInput.js +184 -256
  108. package/file-input/FileInput.stories.tsx +86 -3
  109. package/file-input/FileInput.test.js +356 -395
  110. package/file-input/FileItem.js +15 -41
  111. package/file-input/types.d.ts +10 -10
  112. package/flex/Flex.js +27 -39
  113. package/flex/Flex.stories.tsx +35 -26
  114. package/flex/types.d.ts +74 -9
  115. package/footer/Footer.d.ts +1 -1
  116. package/footer/Footer.js +70 -117
  117. package/footer/Footer.stories.tsx +55 -21
  118. package/footer/Footer.test.js +33 -57
  119. package/footer/Icons.d.ts +3 -2
  120. package/footer/Icons.js +66 -7
  121. package/footer/types.d.ts +25 -27
  122. package/grid/Grid.d.ts +7 -0
  123. package/grid/Grid.js +76 -0
  124. package/grid/Grid.stories.tsx +219 -0
  125. package/grid/types.d.ts +115 -0
  126. package/grid/types.js +5 -0
  127. package/header/Header.d.ts +4 -3
  128. package/header/Header.js +48 -133
  129. package/header/Header.stories.tsx +115 -36
  130. package/header/Header.test.js +13 -26
  131. package/header/Icons.d.ts +2 -2
  132. package/header/Icons.js +2 -7
  133. package/header/types.d.ts +7 -22
  134. package/heading/Heading.js +10 -32
  135. package/heading/Heading.test.js +71 -88
  136. package/heading/types.d.ts +7 -7
  137. package/image/Image.d.ts +4 -0
  138. package/image/Image.js +70 -0
  139. package/image/Image.stories.tsx +129 -0
  140. package/image/types.d.ts +72 -0
  141. package/image/types.js +5 -0
  142. package/inset/Inset.js +13 -21
  143. package/inset/Inset.stories.tsx +2 -1
  144. package/inset/types.d.ts +2 -2
  145. package/layout/ApplicationLayout.d.ts +5 -5
  146. package/layout/ApplicationLayout.js +29 -66
  147. package/layout/ApplicationLayout.stories.tsx +1 -1
  148. package/layout/Icons.d.ts +8 -5
  149. package/layout/Icons.js +51 -59
  150. package/layout/SidenavContext.d.ts +1 -1
  151. package/layout/SidenavContext.js +3 -9
  152. package/layout/types.d.ts +5 -6
  153. package/link/Link.js +24 -45
  154. package/link/Link.stories.tsx +60 -0
  155. package/link/Link.test.js +24 -44
  156. package/link/types.d.ts +14 -14
  157. package/main.d.ts +9 -5
  158. package/main.js +40 -59
  159. package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
  160. package/{tabs-nav → nav-tabs}/NavTabs.js +23 -55
  161. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +115 -9
  162. package/{tabs-nav → nav-tabs}/NavTabs.test.js +39 -45
  163. package/nav-tabs/Tab.js +118 -0
  164. package/{tabs-nav → nav-tabs}/types.d.ts +14 -15
  165. package/nav-tabs/types.js +5 -0
  166. package/number-input/NumberInput.d.ts +7 -0
  167. package/number-input/NumberInput.js +47 -37
  168. package/number-input/NumberInput.stories.tsx +42 -26
  169. package/number-input/NumberInput.test.js +860 -413
  170. package/number-input/types.d.ts +11 -5
  171. package/package.json +31 -29
  172. package/paginator/Icons.d.ts +5 -0
  173. package/paginator/Icons.js +21 -47
  174. package/paginator/Paginator.js +22 -58
  175. package/paginator/Paginator.stories.tsx +24 -0
  176. package/paginator/Paginator.test.js +252 -225
  177. package/paginator/types.d.ts +3 -3
  178. package/paragraph/Paragraph.d.ts +3 -4
  179. package/paragraph/Paragraph.js +6 -22
  180. package/paragraph/Paragraph.stories.tsx +0 -17
  181. package/password-input/Icons.d.ts +6 -0
  182. package/password-input/Icons.js +35 -0
  183. package/password-input/PasswordInput.js +57 -126
  184. package/password-input/PasswordInput.stories.tsx +1 -33
  185. package/password-input/PasswordInput.test.js +158 -141
  186. package/password-input/types.d.ts +8 -7
  187. package/progress-bar/ProgressBar.d.ts +2 -2
  188. package/progress-bar/ProgressBar.js +23 -55
  189. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
  190. package/progress-bar/ProgressBar.test.js +36 -53
  191. package/progress-bar/types.d.ts +4 -3
  192. package/quick-nav/QuickNav.js +4 -27
  193. package/quick-nav/QuickNav.stories.tsx +15 -1
  194. package/quick-nav/types.d.ts +10 -10
  195. package/radio-group/Radio.d.ts +1 -1
  196. package/radio-group/Radio.js +31 -63
  197. package/radio-group/RadioGroup.js +45 -93
  198. package/radio-group/RadioGroup.stories.tsx +131 -18
  199. package/radio-group/RadioGroup.test.js +505 -471
  200. package/radio-group/types.d.ts +8 -8
  201. package/resultset-table/Icons.d.ts +7 -0
  202. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  203. package/resultset-table/ResultsetTable.d.ts +7 -0
  204. package/{resultsetTable → resultset-table}/ResultsetTable.js +37 -66
  205. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +102 -5
  206. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +155 -114
  207. package/{resultsetTable → resultset-table}/types.d.ts +13 -7
  208. package/resultset-table/types.js +5 -0
  209. package/select/Icons.d.ts +7 -7
  210. package/select/Icons.js +1 -5
  211. package/select/Listbox.d.ts +1 -1
  212. package/select/Listbox.js +17 -72
  213. package/select/Option.js +27 -50
  214. package/select/Select.js +120 -175
  215. package/select/Select.stories.tsx +495 -148
  216. package/select/Select.test.js +1974 -1837
  217. package/select/types.d.ts +16 -17
  218. package/sidenav/Icons.d.ts +7 -0
  219. package/sidenav/Icons.js +47 -0
  220. package/sidenav/Sidenav.d.ts +2 -2
  221. package/sidenav/Sidenav.js +82 -153
  222. package/sidenav/Sidenav.stories.tsx +165 -63
  223. package/sidenav/Sidenav.test.js +3 -10
  224. package/sidenav/types.d.ts +31 -28
  225. package/slider/Slider.js +73 -131
  226. package/slider/Slider.test.js +108 -104
  227. package/slider/types.d.ts +4 -4
  228. package/spinner/Spinner.js +31 -75
  229. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  230. package/spinner/Spinner.test.js +26 -35
  231. package/spinner/types.d.ts +3 -3
  232. package/status-light/StatusLight.d.ts +4 -0
  233. package/status-light/StatusLight.js +51 -0
  234. package/status-light/StatusLight.stories.tsx +74 -0
  235. package/status-light/StatusLight.test.js +25 -0
  236. package/status-light/types.d.ts +17 -0
  237. package/status-light/types.js +5 -0
  238. package/switch/Switch.js +52 -100
  239. package/switch/Switch.stories.tsx +33 -34
  240. package/switch/Switch.test.js +52 -97
  241. package/switch/types.d.ts +4 -4
  242. package/table/DropdownTheme.js +62 -0
  243. package/table/Table.d.ts +6 -2
  244. package/table/Table.js +87 -35
  245. package/table/Table.stories.tsx +658 -0
  246. package/table/Table.test.js +94 -7
  247. package/table/types.d.ts +48 -6
  248. package/tabs/Tab.js +26 -45
  249. package/tabs/Tabs.js +62 -145
  250. package/tabs/Tabs.stories.tsx +46 -6
  251. package/tabs/Tabs.test.js +66 -123
  252. package/tabs/types.d.ts +19 -19
  253. package/tag/Tag.js +28 -60
  254. package/tag/Tag.stories.tsx +14 -1
  255. package/tag/Tag.test.js +20 -31
  256. package/tag/types.d.ts +7 -7
  257. package/text-input/Icons.d.ts +5 -5
  258. package/text-input/Icons.js +1 -5
  259. package/text-input/Suggestion.js +35 -25
  260. package/text-input/Suggestions.d.ts +1 -1
  261. package/text-input/Suggestions.js +15 -65
  262. package/text-input/TextInput.js +220 -332
  263. package/text-input/TextInput.stories.tsx +139 -155
  264. package/text-input/TextInput.test.js +1289 -1157
  265. package/text-input/types.d.ts +25 -17
  266. package/textarea/Textarea.js +70 -113
  267. package/textarea/Textarea.stories.tsx +174 -0
  268. package/textarea/Textarea.test.js +152 -183
  269. package/textarea/types.d.ts +9 -5
  270. package/toggle-group/ToggleGroup.d.ts +2 -2
  271. package/toggle-group/ToggleGroup.js +92 -106
  272. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  273. package/toggle-group/ToggleGroup.test.js +69 -88
  274. package/toggle-group/types.d.ts +26 -17
  275. package/typography/Typography.d.ts +2 -2
  276. package/typography/Typography.js +15 -123
  277. package/typography/Typography.stories.tsx +1 -1
  278. package/typography/types.d.ts +1 -1
  279. package/useTheme.d.ts +1147 -1
  280. package/useTheme.js +2 -9
  281. package/useTranslatedLabels.d.ts +84 -1
  282. package/useTranslatedLabels.js +1 -7
  283. package/utils/BaseTypography.d.ts +21 -0
  284. package/utils/BaseTypography.js +94 -0
  285. package/utils/FocusLock.d.ts +13 -0
  286. package/utils/FocusLock.js +124 -0
  287. package/wizard/Wizard.js +16 -51
  288. package/wizard/Wizard.stories.tsx +20 -0
  289. package/wizard/Wizard.test.js +54 -81
  290. package/wizard/types.d.ts +9 -10
  291. package/card/ice-cream.jpg +0 -0
  292. package/number-input/NumberInputContext.d.ts +0 -4
  293. package/number-input/NumberInputContext.js +0 -19
  294. package/number-input/numberInputContextTypes.d.ts +0 -19
  295. package/resultsetTable/Icons.d.ts +0 -7
  296. package/resultsetTable/ResultsetTable.d.ts +0 -4
  297. package/slider/Slider.stories.tsx +0 -183
  298. package/table/Table.stories.jsx +0 -277
  299. package/tabs-nav/Tab.js +0 -130
  300. package/textarea/Textarea.stories.jsx +0 -157
  301. /package/{resultsetTable → action-icon}/types.js +0 -0
  302. /package/{tabs-nav → container}/types.js +0 -0
  303. /package/{number-input/numberInputContextTypes.js → contextual-menu/types.js} +0 -0
  304. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
@@ -1,54 +1,41 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _react = _interopRequireDefault(require("react"));
6
-
7
5
  var _react2 = require("@testing-library/react");
8
-
9
- var _AccordionGroup = _interopRequireDefault(require("./AccordionGroup"));
10
-
6
+ var _AccordionGroup = _interopRequireDefault(require("./AccordionGroup.tsx"));
11
7
  describe("Accordion component tests", function () {
12
8
  test("Uncontrolled accordion group calls correct function on click", function () {
13
9
  var onActiveChange = jest.fn();
14
-
15
10
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
16
- margin: "large",
17
- onActiveChange: onActiveChange
18
- }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
19
- label: "Accordion1",
20
- padding: "medium",
21
- margin: "large"
22
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget.")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
23
- label: "Accordion2",
24
- padding: "medium"
25
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget.")))),
26
- getByText = _render.getByText,
27
- getAllByRole = _render.getAllByRole;
28
-
11
+ margin: "large",
12
+ onActiveChange: onActiveChange
13
+ }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
14
+ label: "Accordion1",
15
+ margin: "large"
16
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget.")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
17
+ label: "Accordion2"
18
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget.")))),
19
+ getByText = _render.getByText,
20
+ getAllByRole = _render.getAllByRole;
29
21
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
30
22
  expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
31
-
32
23
  _react2.fireEvent.click(getByText("Accordion1"));
33
-
34
24
  expect(onActiveChange).toHaveBeenCalled();
35
25
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("true");
36
26
  expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
37
27
  });
38
28
  test("Uncontrolled accordion group renders initially with an accordion expanded using defaultIndexActive", function () {
39
29
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
40
- defaultIndexActive: 1
41
- }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
42
- label: "Accordion1",
43
- padding: "medium"
44
- }, /*#__PURE__*/_react["default"].createElement("div", null, "First accordion")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
45
- label: "Accordion2",
46
- padding: "medium"
47
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Second accordion")))),
48
- queryByText = _render2.queryByText,
49
- getByText = _render2.getByText,
50
- getAllByRole = _render2.getAllByRole;
51
-
30
+ defaultIndexActive: 1
31
+ }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
32
+ label: "Accordion1"
33
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "First accordion")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
34
+ label: "Accordion2"
35
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Second accordion")))),
36
+ queryByText = _render2.queryByText,
37
+ getByText = _render2.getByText,
38
+ getAllByRole = _render2.getAllByRole;
52
39
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
53
40
  expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("true");
54
41
  expect(getByText("Second accordion")).toBeTruthy();
@@ -56,31 +43,24 @@ describe("Accordion component tests", function () {
56
43
  });
57
44
  test("Controlled accordion with indexActive change", function () {
58
45
  var onActiveChange = jest.fn();
59
-
60
46
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
61
- margin: "large",
62
- indexActive: 1,
63
- onActiveChange: onActiveChange
64
- }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
65
- label: "Accordion1",
66
- padding: "medium",
67
- margin: "large"
68
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Text1")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
69
- label: "Accordion2",
70
- padding: "medium"
71
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Text2")))),
72
- queryByText = _render3.queryByText,
73
- getByText = _render3.getByText,
74
- getAllByRole = _render3.getAllByRole,
75
- rerender = _render3.rerender;
76
-
47
+ margin: "large",
48
+ indexActive: 1,
49
+ onActiveChange: onActiveChange
50
+ }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
51
+ label: "Accordion1",
52
+ margin: "large"
53
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Text1")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
54
+ label: "Accordion2"
55
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Text2")))),
56
+ queryByText = _render3.queryByText,
57
+ getByText = _render3.getByText,
58
+ getAllByRole = _render3.getAllByRole,
59
+ rerender = _render3.rerender;
77
60
  expect(queryByText("Text1")).toBeFalsy();
78
61
  expect(getByText("Text2")).toBeTruthy();
79
-
80
62
  _react2.fireEvent.click(getByText("Accordion1"));
81
-
82
63
  _react2.fireEvent.click(getByText("Accordion2"));
83
-
84
64
  expect(onActiveChange.mock.calls[0][0]).toBe(0);
85
65
  expect(onActiveChange.mock.calls[1][0]).toBe(1);
86
66
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
@@ -91,36 +71,28 @@ describe("Accordion component tests", function () {
91
71
  onActiveChange: onActiveChange
92
72
  }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
93
73
  label: "Accordion1",
94
- padding: "medium",
95
74
  margin: "large"
96
75
  }, /*#__PURE__*/_react["default"].createElement("div", null, "Text1")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
97
- label: "Accordion2",
98
- padding: "medium"
76
+ label: "Accordion2"
99
77
  }, /*#__PURE__*/_react["default"].createElement("div", null, "Text2"))));
100
78
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("true");
101
79
  expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
102
80
  });
103
81
  test("Disabled uncontrolled accordion group", function () {
104
82
  var onActiveChange = jest.fn();
105
-
106
83
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
107
- margin: "large",
108
- onActiveChange: onActiveChange,
109
- disabled: true
110
- }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
111
- label: "Accordion1",
112
- padding: "medium",
113
- margin: "large"
114
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Text1")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
115
- label: "Accordion2",
116
- padding: "medium"
117
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Text2")))),
118
- getByText = _render4.getByText;
119
-
84
+ margin: "large",
85
+ onActiveChange: onActiveChange,
86
+ disabled: true
87
+ }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
88
+ label: "Accordion1",
89
+ margin: "large"
90
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Text1")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
91
+ label: "Accordion2"
92
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Text2")))),
93
+ getByText = _render4.getByText;
120
94
  _react2.fireEvent.click(getByText("Accordion1"));
121
-
122
95
  _react2.fireEvent.click(getByText("Accordion2"));
123
-
124
96
  expect(onActiveChange).toHaveBeenCalledTimes(0);
125
97
  });
126
98
  });
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { AccordionPropsType } from "./types";
3
+ declare const AccordionGroupAccordion: ({ ...childProps }: AccordionPropsType) => JSX.Element;
4
+ export default AccordionGroupAccordion;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _Accordion = _interopRequireDefault(require("../accordion/Accordion"));
13
+ var _AccordionGroup = require("./AccordionGroup");
14
+ 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); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(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; }
16
+ var AccordionGroupAccordion = function AccordionGroupAccordion(_ref) {
17
+ var childProps = (0, _extends2["default"])({}, ((0, _objectDestructuringEmpty2["default"])(_ref), _ref));
18
+ var _useContext = (0, _react.useContext)(_AccordionGroup.AccordionGroupAccordionContext),
19
+ activeIndex = _useContext.activeIndex,
20
+ handlerActiveChange = _useContext.handlerActiveChange,
21
+ disabled = _useContext.disabled,
22
+ index = _useContext.index;
23
+ return /*#__PURE__*/_react["default"].createElement(_Accordion["default"], (0, _extends2["default"])({
24
+ isExpanded: activeIndex === index,
25
+ onChange: function onChange() {
26
+ handlerActiveChange(index);
27
+ },
28
+ disabled: disabled
29
+ }, childProps), childProps.children);
30
+ };
31
+ var _default = exports["default"] = AccordionGroupAccordion;
@@ -1,19 +1,13 @@
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 Padding = {
10
- top?: Space;
11
- bottom?: Space;
12
- left?: Space;
13
- right?: Space;
14
- };
15
- declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
16
- export declare type AccordionPropsType = {
9
+ type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
+ export type AccordionPropsType = {
17
11
  /**
18
12
  * The panel label.
19
13
  */
@@ -30,19 +24,13 @@ export declare type AccordionPropsType = {
30
24
  * If true, the component will be disabled.
31
25
  */
32
26
  disabled?: boolean;
33
- /**
34
- * @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
35
- * Size of the padding to be applied to the custom area ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
36
- * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
37
- */
38
- padding?: Space | Padding;
39
27
  /**
40
28
  * The expanded panel of the accordion. This area can be used to render
41
29
  * custom content.
42
30
  */
43
31
  children: React.ReactNode;
44
32
  };
45
- declare type Props = {
33
+ type Props = {
46
34
  /**
47
35
  * Initially active accordion, only when it is uncontrolled.
48
36
  */
@@ -70,7 +58,7 @@ declare type Props = {
70
58
  */
71
59
  children: React.ReactElement<AccordionPropsType>[] | React.ReactElement<AccordionPropsType>;
72
60
  };
73
- export declare type AccordionGroupAccordionContextProps = {
61
+ export type AccordionGroupAccordionContextProps = {
74
62
  activeIndex: number;
75
63
  handlerActiveChange: (index: number) => void;
76
64
  disabled: boolean;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import ActionIconPropsTypes from "./types";
3
+ declare const DxcActionIcon: React.ForwardRefExoticComponent<ActionIconPropsTypes & React.RefAttributes<HTMLButtonElement>>;
4
+ export default DxcActionIcon;
@@ -0,0 +1,47 @@
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 _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+ var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
12
+ var _templateObject;
13
+ var DxcActionIcon = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
14
+ var _ref$disabled = _ref.disabled,
15
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
16
+ title = _ref.title,
17
+ icon = _ref.icon,
18
+ onClick = _ref.onClick,
19
+ tabIndex = _ref.tabIndex;
20
+ return /*#__PURE__*/_react["default"].createElement(ActionIcon, {
21
+ "aria-label": title,
22
+ disabled: disabled,
23
+ onClick: onClick,
24
+ onMouseDown: function onMouseDown(event) {
25
+ event.stopPropagation();
26
+ },
27
+ tabIndex: tabIndex,
28
+ title: title,
29
+ type: "button",
30
+ ref: ref
31
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
32
+ src: icon
33
+ }) : icon);
34
+ });
35
+ var ActionIcon = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n border: none;\n border-radius: 2px;\n width: 24px;\n height: 24px;\n padding: 0px;\n ", "\n\n box-shadow: 0 0 0 2px transparent;\n background-color: ", ";\n color: ", ";\n\n ", "\n\n img, svg {\n width: 16px;\n height: 16px;\n }\n"])), function (props) {
36
+ return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
37
+ }, function (props) {
38
+ var _props$theme$disabled, _props$theme$actionBa;
39
+ return props.disabled ? (_props$theme$disabled = props.theme.disabledActionBackgroundColor) !== null && _props$theme$disabled !== void 0 ? _props$theme$disabled : _coreTokens["default"].color_transparent : (_props$theme$actionBa = props.theme.actionBackgroundColor) !== null && _props$theme$actionBa !== void 0 ? _props$theme$actionBa : _coreTokens["default"].color_transparent;
40
+ }, function (props) {
41
+ var _props$theme$disabled2, _props$theme$actionIc;
42
+ return props.disabled ? (_props$theme$disabled2 = props.theme.disabledActionIconColor) !== null && _props$theme$disabled2 !== void 0 ? _props$theme$disabled2 : _coreTokens["default"].color_grey_500 : (_props$theme$actionIc = props.theme.actionIconColor) !== null && _props$theme$actionIc !== void 0 ? _props$theme$actionIc : _coreTokens["default"].color_black;
43
+ }, function (props) {
44
+ var _props$theme$focusAct, _props$theme$focusAct2, _props$theme$hoverAct, _props$theme$hoverAct2, _props$theme$activeAc, _props$theme$activeAc2;
45
+ return !props.disabled && "\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ".concat((_props$theme$focusAct = props.theme.focusActionBorderColor) !== null && _props$theme$focusAct !== void 0 ? _props$theme$focusAct : _coreTokens["default"].color_blue_600, ";\n color: ").concat((_props$theme$focusAct2 = props.theme.focusActionIconColor) !== null && _props$theme$focusAct2 !== void 0 ? _props$theme$focusAct2 : _coreTokens["default"].color_black, ";\n }\n &:hover {\n background-color: ").concat((_props$theme$hoverAct = props.theme.hoverActionBackgroundColor) !== null && _props$theme$hoverAct !== void 0 ? _props$theme$hoverAct : _coreTokens["default"].color_grey_100, ";\n color: ").concat((_props$theme$hoverAct2 = props.theme.hoverActionIconColor) !== null && _props$theme$hoverAct2 !== void 0 ? _props$theme$hoverAct2 : _coreTokens["default"].color_black, ";\n }\n &:active {\n background-color: ").concat((_props$theme$activeAc = props.theme.activeActionBackgroundColor) !== null && _props$theme$activeAc !== void 0 ? _props$theme$activeAc : _coreTokens["default"].color_grey_300, ";\n color: ").concat((_props$theme$activeAc2 = props.theme.activeActionIconColor) !== null && _props$theme$activeAc2 !== void 0 ? _props$theme$activeAc2 : _coreTokens["default"].color_black, ";\n }\n ");
46
+ });
47
+ var _default = exports["default"] = DxcActionIcon;
@@ -0,0 +1,41 @@
1
+ import React from "react";
2
+ import Title from "../../.storybook/components/Title";
3
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
4
+ import DxcActionIcon from "./ActionIcon";
5
+
6
+ export default {
7
+ title: "Action Icon ",
8
+ component: DxcActionIcon,
9
+ };
10
+
11
+ const iconSVG = (
12
+ <svg width="24px" height="24px" viewBox="0 0 24 24" fill="currentColor">
13
+ <path d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
15
+ </svg>
16
+ );
17
+
18
+ export const Chromatic = () => (
19
+ <>
20
+ <Title title="Default" theme="light" level={2} />
21
+ <ExampleContainer>
22
+ <DxcActionIcon icon={"https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"} title="Favourite" />
23
+ </ExampleContainer>
24
+ <Title title="Disabled" theme="light" level={2} />
25
+ <ExampleContainer>
26
+ <DxcActionIcon icon={iconSVG} title="Favourite" disabled />
27
+ </ExampleContainer>
28
+ <Title title="Hover" theme="light" level={2} />
29
+ <ExampleContainer pseudoState="pseudo-hover">
30
+ <DxcActionIcon icon={iconSVG} title="Favourite" />
31
+ </ExampleContainer>
32
+ <Title title="Focus" theme="light" level={2} />
33
+ <ExampleContainer pseudoState="pseudo-focus">
34
+ <DxcActionIcon icon={iconSVG} title="Favourite" />
35
+ </ExampleContainer>
36
+ <Title title="Active" theme="light" level={2} />
37
+ <ExampleContainer pseudoState="pseudo-active">
38
+ <DxcActionIcon icon={iconSVG} title="Favourite" />
39
+ </ExampleContainer>
40
+ </>
41
+ );
@@ -0,0 +1,64 @@
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 _ActionIcon = _interopRequireDefault(require("./ActionIcon.tsx"));
7
+ var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
8
+ width: "24px",
9
+ height: "24px",
10
+ viewBox: "0 0 24 24",
11
+ fill: "currentColor"
12
+ }, /*#__PURE__*/_react["default"].createElement("path", {
13
+ d: "M0 0h24v24H0z",
14
+ fill: "none"
15
+ }), /*#__PURE__*/_react["default"].createElement("path", {
16
+ d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
17
+ }));
18
+ describe("Action icon component tests", function () {
19
+ test("Action icon renders with correct text", function () {
20
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
21
+ icon: iconSVG,
22
+ title: "favourite"
23
+ })),
24
+ getByTitle = _render.getByTitle;
25
+ expect(getByTitle("favourite")).toBeTruthy();
26
+ });
27
+ test("Calls correct function on click", function () {
28
+ var onClick = jest.fn();
29
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
30
+ icon: iconSVG,
31
+ title: "favourite",
32
+ onClick: onClick
33
+ })),
34
+ getByTitle = _render2.getByTitle;
35
+ var action = getByTitle("favourite");
36
+ _react2.fireEvent.click(action);
37
+ expect(onClick).toHaveBeenCalled();
38
+ });
39
+ test("On click is not called when disabled", function () {
40
+ var onClick = jest.fn();
41
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
42
+ disabled: true,
43
+ icon: iconSVG,
44
+ title: "favourite",
45
+ onClick: onClick
46
+ })),
47
+ getByTitle = _render3.getByTitle;
48
+ var action = getByTitle("favourite");
49
+ _react2.fireEvent.click(action);
50
+ expect(onClick).toHaveBeenCalledTimes(0);
51
+ });
52
+ test("Renders with correct accessibility attributes", function () {
53
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
54
+ icon: iconSVG,
55
+ title: "favourite",
56
+ tabIndex: 1
57
+ })),
58
+ getByRole = _render4.getByRole;
59
+ var button = getByRole("button");
60
+ expect(button.getAttribute("aria-label")).toBe("favourite");
61
+ expect(button.getAttribute("title")).toBe("favourite");
62
+ expect(button.getAttribute("tabindex")).toBe("1");
63
+ });
64
+ });
@@ -0,0 +1,26 @@
1
+ /// <reference types="react" />
2
+ type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
3
+ type Props = {
4
+ /**
5
+ * If true, the component will be disabled.
6
+ */
7
+ disabled?: boolean;
8
+ /**
9
+ * Value for the HTML properties title and aria-label.
10
+ */
11
+ title: string;
12
+ /**
13
+ * Element or path used as the icon that will be placed next to the label.
14
+ */
15
+ icon: string | SVG;
16
+ /**
17
+ * This function will be called when the user clicks the button.
18
+ */
19
+ onClick?: () => void;
20
+ /**
21
+ * Value of the tabindex attribute.
22
+ */
23
+ tabIndex?: number;
24
+ };
25
+ export type RefType = HTMLButtonElement;
26
+ export default Props;