@dxc-technology/halstack-react 0.0.0-6c8ea9f → 0.0.0-6d25405

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 (403) 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 +126 -114
  5. package/README.md +47 -0
  6. package/accordion/Accordion.accessibility.test.js +71 -0
  7. package/accordion/Accordion.d.ts +1 -1
  8. package/accordion/Accordion.js +104 -161
  9. package/accordion/Accordion.stories.tsx +84 -140
  10. package/accordion/Accordion.test.js +25 -41
  11. package/accordion/types.d.ts +6 -17
  12. package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
  13. package/accordion-group/AccordionGroup.d.ts +2 -2
  14. package/accordion-group/AccordionGroup.js +31 -98
  15. package/accordion-group/AccordionGroup.stories.tsx +94 -67
  16. package/accordion-group/AccordionGroup.test.js +52 -105
  17. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  18. package/accordion-group/AccordionGroupAccordion.js +31 -0
  19. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  20. package/accordion-group/AccordionGroupContext.js +8 -0
  21. package/accordion-group/types.d.ts +12 -17
  22. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  23. package/action-icon/ActionIcon.d.ts +4 -0
  24. package/action-icon/ActionIcon.js +48 -0
  25. package/action-icon/ActionIcon.stories.tsx +41 -0
  26. package/action-icon/ActionIcon.test.js +64 -0
  27. package/action-icon/types.d.ts +26 -0
  28. package/alert/Alert.accessibility.test.js +95 -0
  29. package/alert/Alert.js +32 -125
  30. package/alert/Alert.stories.tsx +28 -0
  31. package/alert/Alert.test.js +29 -46
  32. package/alert/types.d.ts +5 -5
  33. package/badge/Badge.accessibility.test.js +129 -0
  34. package/badge/Badge.d.ts +1 -1
  35. package/badge/Badge.js +142 -40
  36. package/badge/Badge.stories.tsx +210 -0
  37. package/badge/Badge.test.js +30 -0
  38. package/badge/types.d.ts +52 -2
  39. package/bleed/Bleed.js +14 -55
  40. package/bleed/Bleed.stories.tsx +95 -95
  41. package/bleed/types.d.ts +2 -2
  42. package/box/Box.accessibility.test.js +33 -0
  43. package/box/Box.d.ts +1 -1
  44. package/box/Box.js +30 -81
  45. package/box/Box.stories.tsx +38 -51
  46. package/box/Box.test.js +2 -7
  47. package/box/types.d.ts +3 -14
  48. package/bulleted-list/BulletedList.accessibility.test.js +107 -0
  49. package/bulleted-list/BulletedList.d.ts +7 -0
  50. package/bulleted-list/BulletedList.js +92 -0
  51. package/bulleted-list/BulletedList.stories.tsx +115 -0
  52. package/bulleted-list/types.d.ts +38 -0
  53. package/button/Button.accessibility.test.js +127 -0
  54. package/button/Button.d.ts +1 -1
  55. package/button/Button.js +64 -117
  56. package/button/Button.stories.tsx +151 -100
  57. package/button/Button.test.js +20 -17
  58. package/button/types.d.ts +12 -8
  59. package/card/Card.accessibility.test.js +36 -0
  60. package/card/Card.d.ts +1 -1
  61. package/card/Card.js +64 -107
  62. package/card/Card.stories.tsx +12 -42
  63. package/card/Card.test.js +11 -22
  64. package/card/types.d.ts +6 -11
  65. package/checkbox/Checkbox.accessibility.test.js +87 -0
  66. package/checkbox/Checkbox.d.ts +2 -2
  67. package/checkbox/Checkbox.js +140 -182
  68. package/checkbox/Checkbox.stories.tsx +128 -94
  69. package/checkbox/Checkbox.test.js +160 -39
  70. package/checkbox/types.d.ts +11 -3
  71. package/chip/Chip.accessibility.test.js +67 -0
  72. package/chip/Chip.js +43 -80
  73. package/chip/Chip.stories.tsx +102 -26
  74. package/chip/Chip.test.js +18 -33
  75. package/chip/types.d.ts +4 -4
  76. package/common/coreTokens.d.ts +237 -0
  77. package/common/coreTokens.js +184 -0
  78. package/common/utils.d.ts +1 -0
  79. package/common/utils.js +6 -12
  80. package/common/variables.d.ts +1395 -0
  81. package/common/variables.js +942 -1159
  82. package/container/Container.d.ts +4 -0
  83. package/container/Container.js +194 -0
  84. package/container/Container.stories.tsx +214 -0
  85. package/container/types.d.ts +74 -0
  86. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  87. package/contextual-menu/ContextualMenu.d.ts +7 -0
  88. package/contextual-menu/ContextualMenu.js +71 -0
  89. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  90. package/contextual-menu/ContextualMenu.test.js +71 -0
  91. package/contextual-menu/MenuItemAction.d.ts +4 -0
  92. package/contextual-menu/MenuItemAction.js +46 -0
  93. package/contextual-menu/types.d.ts +22 -0
  94. package/date-input/Calendar.d.ts +4 -0
  95. package/date-input/Calendar.js +214 -0
  96. package/date-input/DateInput.accessibility.test.js +216 -0
  97. package/date-input/DateInput.js +150 -299
  98. package/date-input/DateInput.stories.tsx +203 -56
  99. package/date-input/DateInput.test.js +700 -371
  100. package/date-input/DatePicker.d.ts +4 -0
  101. package/date-input/DatePicker.js +115 -0
  102. package/date-input/Icons.d.ts +6 -0
  103. package/date-input/Icons.js +58 -0
  104. package/date-input/YearPicker.d.ts +4 -0
  105. package/date-input/YearPicker.js +100 -0
  106. package/date-input/types.d.ts +72 -15
  107. package/dialog/Dialog.accessibility.test.js +69 -0
  108. package/dialog/Dialog.d.ts +1 -1
  109. package/dialog/Dialog.js +73 -107
  110. package/dialog/Dialog.stories.tsx +320 -167
  111. package/dialog/Dialog.test.js +287 -20
  112. package/dialog/types.d.ts +18 -25
  113. package/divider/Divider.accessibility.test.js +33 -0
  114. package/divider/Divider.d.ts +4 -0
  115. package/divider/Divider.js +36 -0
  116. package/divider/Divider.stories.tsx +223 -0
  117. package/divider/Divider.test.js +38 -0
  118. package/divider/types.d.ts +21 -0
  119. package/dropdown/Dropdown.accessibility.test.js +180 -0
  120. package/dropdown/Dropdown.d.ts +1 -1
  121. package/dropdown/Dropdown.js +231 -303
  122. package/dropdown/Dropdown.stories.tsx +235 -57
  123. package/dropdown/Dropdown.test.js +575 -165
  124. package/dropdown/DropdownMenu.d.ts +4 -0
  125. package/dropdown/DropdownMenu.js +63 -0
  126. package/dropdown/DropdownMenuItem.d.ts +4 -0
  127. package/dropdown/DropdownMenuItem.js +70 -0
  128. package/dropdown/types.d.ts +35 -19
  129. package/file-input/FileInput.accessibility.test.js +160 -0
  130. package/file-input/FileInput.d.ts +2 -2
  131. package/file-input/FileInput.js +241 -391
  132. package/file-input/FileInput.stories.tsx +123 -12
  133. package/file-input/FileInput.test.js +292 -367
  134. package/file-input/FileItem.d.ts +4 -14
  135. package/file-input/FileItem.js +52 -117
  136. package/file-input/types.d.ts +25 -8
  137. package/flex/Flex.d.ts +4 -0
  138. package/flex/Flex.js +57 -0
  139. package/flex/Flex.stories.tsx +112 -0
  140. package/flex/types.d.ts +97 -0
  141. package/footer/Footer.accessibility.test.js +117 -0
  142. package/footer/Footer.d.ts +1 -1
  143. package/footer/Footer.js +73 -118
  144. package/footer/Footer.stories.tsx +87 -21
  145. package/footer/Footer.test.js +33 -57
  146. package/footer/Icons.d.ts +3 -2
  147. package/footer/Icons.js +67 -8
  148. package/footer/types.d.ts +26 -27
  149. package/grid/Grid.d.ts +7 -0
  150. package/grid/Grid.js +76 -0
  151. package/grid/Grid.stories.tsx +219 -0
  152. package/grid/types.d.ts +115 -0
  153. package/grid/types.js +5 -0
  154. package/header/Header.accessibility.test.js +84 -0
  155. package/header/Header.d.ts +4 -3
  156. package/header/Header.js +88 -182
  157. package/header/Header.stories.tsx +118 -39
  158. package/header/Header.test.js +13 -26
  159. package/header/Icons.d.ts +2 -2
  160. package/header/Icons.js +4 -9
  161. package/header/types.d.ts +7 -21
  162. package/heading/Heading.accessibility.test.js +33 -0
  163. package/heading/Heading.js +10 -32
  164. package/heading/Heading.test.js +71 -88
  165. package/heading/types.d.ts +7 -7
  166. package/icon/Icon.accessibility.test.js +30 -0
  167. package/icon/Icon.d.ts +4 -0
  168. package/icon/Icon.js +33 -0
  169. package/icon/Icon.stories.tsx +28 -0
  170. package/icon/types.d.ts +4 -0
  171. package/icon/types.js +5 -0
  172. package/image/Image.accessibility.test.js +56 -0
  173. package/image/Image.d.ts +4 -0
  174. package/image/Image.js +70 -0
  175. package/image/Image.stories.tsx +129 -0
  176. package/image/types.d.ts +72 -0
  177. package/image/types.js +5 -0
  178. package/inset/Inset.js +14 -55
  179. package/inset/Inset.stories.tsx +37 -36
  180. package/inset/types.d.ts +2 -2
  181. package/layout/ApplicationLayout.d.ts +16 -6
  182. package/layout/ApplicationLayout.js +82 -166
  183. package/layout/ApplicationLayout.stories.tsx +85 -94
  184. package/layout/Icons.d.ts +8 -0
  185. package/layout/Icons.js +49 -48
  186. package/layout/types.d.ts +19 -35
  187. package/link/Link.accessibility.test.js +112 -0
  188. package/link/Link.d.ts +2 -2
  189. package/link/Link.js +46 -91
  190. package/link/Link.stories.tsx +74 -7
  191. package/link/Link.test.js +24 -44
  192. package/link/types.d.ts +14 -15
  193. package/main.d.ts +14 -12
  194. package/main.js +65 -101
  195. package/nav-tabs/NavTabs.accessibility.test.js +52 -0
  196. package/nav-tabs/NavTabs.d.ts +7 -0
  197. package/nav-tabs/NavTabs.js +93 -0
  198. package/nav-tabs/NavTabs.stories.tsx +276 -0
  199. package/nav-tabs/NavTabs.test.js +76 -0
  200. package/nav-tabs/NavTabsContext.d.ts +3 -0
  201. package/nav-tabs/NavTabsContext.js +8 -0
  202. package/nav-tabs/Tab.d.ts +4 -0
  203. package/nav-tabs/Tab.js +118 -0
  204. package/nav-tabs/types.d.ts +52 -0
  205. package/nav-tabs/types.js +5 -0
  206. package/number-input/NumberInput.accessibility.test.js +228 -0
  207. package/number-input/NumberInput.js +46 -36
  208. package/number-input/NumberInput.stories.tsx +42 -26
  209. package/number-input/NumberInput.test.js +860 -377
  210. package/number-input/NumberInputContext.d.ts +3 -4
  211. package/number-input/NumberInputContext.js +3 -14
  212. package/number-input/types.d.ts +17 -5
  213. package/package.json +49 -51
  214. package/paginator/Icons.d.ts +5 -0
  215. package/paginator/Icons.js +21 -47
  216. package/paginator/Paginator.accessibility.test.js +79 -0
  217. package/paginator/Paginator.js +23 -59
  218. package/paginator/Paginator.stories.tsx +24 -0
  219. package/paginator/Paginator.test.js +280 -211
  220. package/paginator/types.d.ts +3 -3
  221. package/paragraph/Paragraph.accessibility.test.js +28 -0
  222. package/paragraph/Paragraph.d.ts +5 -0
  223. package/paragraph/Paragraph.js +22 -0
  224. package/paragraph/Paragraph.stories.tsx +27 -0
  225. package/password-input/Icons.d.ts +6 -0
  226. package/password-input/Icons.js +35 -0
  227. package/password-input/PasswordInput.accessibility.test.js +153 -0
  228. package/password-input/PasswordInput.js +57 -126
  229. package/password-input/PasswordInput.stories.tsx +1 -33
  230. package/password-input/PasswordInput.test.js +160 -142
  231. package/password-input/types.d.ts +8 -7
  232. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  233. package/progress-bar/ProgressBar.js +65 -91
  234. package/progress-bar/ProgressBar.stories.tsx +93 -0
  235. package/progress-bar/ProgressBar.test.js +72 -44
  236. package/progress-bar/types.d.ts +3 -3
  237. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  238. package/quick-nav/QuickNav.js +32 -48
  239. package/quick-nav/QuickNav.stories.tsx +146 -27
  240. package/quick-nav/types.d.ts +10 -10
  241. package/radio-group/Radio.d.ts +1 -1
  242. package/radio-group/Radio.js +59 -76
  243. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  244. package/radio-group/RadioGroup.js +67 -114
  245. package/radio-group/RadioGroup.stories.tsx +132 -18
  246. package/radio-group/RadioGroup.test.js +518 -457
  247. package/radio-group/types.d.ts +10 -10
  248. package/resultset-table/Icons.d.ts +7 -0
  249. package/resultset-table/Icons.js +47 -0
  250. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  251. package/resultset-table/ResultsetTable.d.ts +7 -0
  252. package/resultset-table/ResultsetTable.js +170 -0
  253. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +156 -30
  254. package/resultset-table/ResultsetTable.test.js +381 -0
  255. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  256. package/resultset-table/types.js +5 -0
  257. package/select/Icons.d.ts +7 -7
  258. package/select/Icons.js +1 -5
  259. package/select/Listbox.d.ts +1 -1
  260. package/select/Listbox.js +42 -51
  261. package/select/Option.js +27 -50
  262. package/select/Select.accessibility.test.js +217 -0
  263. package/select/Select.js +173 -237
  264. package/select/Select.stories.tsx +515 -139
  265. package/select/Select.test.js +2009 -1696
  266. package/select/types.d.ts +16 -20
  267. package/sidenav/Icons.d.ts +7 -0
  268. package/sidenav/Icons.js +47 -0
  269. package/sidenav/Sidenav.accessibility.test.js +59 -0
  270. package/sidenav/Sidenav.d.ts +6 -5
  271. package/sidenav/Sidenav.js +132 -71
  272. package/sidenav/Sidenav.stories.tsx +250 -151
  273. package/sidenav/Sidenav.test.js +26 -45
  274. package/sidenav/SidenavContext.d.ts +5 -0
  275. package/sidenav/SidenavContext.js +13 -0
  276. package/sidenav/types.d.ts +52 -26
  277. package/slider/Slider.accessibility.test.js +104 -0
  278. package/slider/Slider.d.ts +2 -2
  279. package/slider/Slider.js +148 -181
  280. package/slider/Slider.test.js +185 -81
  281. package/slider/types.d.ts +7 -3
  282. package/spinner/Spinner.accessibility.test.js +96 -0
  283. package/spinner/Spinner.js +31 -75
  284. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  285. package/spinner/Spinner.test.js +26 -35
  286. package/spinner/types.d.ts +3 -3
  287. package/status-light/StatusLight.accessibility.test.js +157 -0
  288. package/status-light/StatusLight.d.ts +4 -0
  289. package/status-light/StatusLight.js +51 -0
  290. package/status-light/StatusLight.stories.tsx +74 -0
  291. package/status-light/StatusLight.test.js +25 -0
  292. package/status-light/types.d.ts +17 -0
  293. package/status-light/types.js +5 -0
  294. package/switch/Switch.accessibility.test.js +89 -0
  295. package/switch/Switch.d.ts +2 -2
  296. package/switch/Switch.js +145 -126
  297. package/switch/Switch.stories.tsx +37 -60
  298. package/switch/Switch.test.js +138 -56
  299. package/switch/types.d.ts +7 -3
  300. package/table/DropdownTheme.js +62 -0
  301. package/table/Table.accessibility.test.js +82 -0
  302. package/table/Table.d.ts +6 -2
  303. package/table/Table.js +78 -35
  304. package/table/Table.stories.tsx +651 -0
  305. package/table/Table.test.js +95 -8
  306. package/table/types.d.ts +34 -6
  307. package/tabs/Tab.d.ts +4 -0
  308. package/tabs/Tab.js +116 -0
  309. package/tabs/Tabs.accessibility.test.js +56 -0
  310. package/tabs/Tabs.js +314 -141
  311. package/tabs/Tabs.stories.tsx +120 -6
  312. package/tabs/Tabs.test.js +223 -69
  313. package/tabs/types.d.ts +28 -18
  314. package/tag/Tag.accessibility.test.js +69 -0
  315. package/tag/Tag.js +29 -61
  316. package/tag/Tag.stories.tsx +14 -1
  317. package/tag/Tag.test.js +20 -31
  318. package/tag/types.d.ts +7 -7
  319. package/text-input/Suggestion.js +40 -28
  320. package/text-input/Suggestions.d.ts +4 -0
  321. package/text-input/Suggestions.js +86 -0
  322. package/text-input/TextInput.accessibility.test.js +321 -0
  323. package/text-input/TextInput.js +311 -514
  324. package/text-input/TextInput.stories.tsx +266 -275
  325. package/text-input/TextInput.test.js +1419 -1375
  326. package/text-input/types.d.ts +43 -16
  327. package/textarea/Textarea.accessibility.test.js +155 -0
  328. package/textarea/Textarea.js +70 -113
  329. package/textarea/Textarea.stories.tsx +174 -0
  330. package/textarea/Textarea.test.js +152 -183
  331. package/textarea/types.d.ts +9 -5
  332. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  333. package/toggle-group/ToggleGroup.d.ts +2 -2
  334. package/toggle-group/ToggleGroup.js +92 -106
  335. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  336. package/toggle-group/ToggleGroup.test.js +69 -88
  337. package/toggle-group/types.d.ts +26 -17
  338. package/typography/Typography.accessibility.test.js +339 -0
  339. package/typography/Typography.d.ts +4 -0
  340. package/typography/Typography.js +23 -0
  341. package/typography/Typography.stories.tsx +198 -0
  342. package/typography/types.d.ts +18 -0
  343. package/typography/types.js +5 -0
  344. package/useTheme.d.ts +1147 -1
  345. package/useTheme.js +2 -9
  346. package/useTranslatedLabels.d.ts +84 -1
  347. package/useTranslatedLabels.js +1 -7
  348. package/utils/BaseTypography.d.ts +21 -0
  349. package/utils/BaseTypography.js +94 -0
  350. package/utils/FocusLock.d.ts +13 -0
  351. package/utils/FocusLock.js +124 -0
  352. package/wizard/Wizard.accessibility.test.js +55 -0
  353. package/wizard/Wizard.js +24 -66
  354. package/wizard/Wizard.stories.tsx +40 -1
  355. package/wizard/Wizard.test.js +54 -81
  356. package/wizard/types.d.ts +8 -8
  357. package/card/ice-cream.jpg +0 -0
  358. package/common/OpenSans.css +0 -81
  359. package/common/RequiredComponent.js +0 -32
  360. package/common/fonts/OpenSans-Bold.ttf +0 -0
  361. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  362. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  363. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  364. package/common/fonts/OpenSans-Italic.ttf +0 -0
  365. package/common/fonts/OpenSans-Light.ttf +0 -0
  366. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  367. package/common/fonts/OpenSans-Regular.ttf +0 -0
  368. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  369. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  370. package/list/List.d.ts +0 -4
  371. package/list/List.js +0 -47
  372. package/list/List.stories.tsx +0 -95
  373. package/list/types.d.ts +0 -7
  374. package/number-input/numberInputContextTypes.d.ts +0 -19
  375. package/progress-bar/ProgressBar.stories.jsx +0 -58
  376. package/radio/Radio.d.ts +0 -4
  377. package/radio/Radio.js +0 -173
  378. package/radio/Radio.stories.tsx +0 -192
  379. package/radio/Radio.test.js +0 -71
  380. package/radio/types.d.ts +0 -54
  381. package/resultsetTable/ResultsetTable.d.ts +0 -4
  382. package/resultsetTable/ResultsetTable.js +0 -254
  383. package/resultsetTable/ResultsetTable.test.js +0 -306
  384. package/row/Row.d.ts +0 -3
  385. package/row/Row.js +0 -127
  386. package/row/Row.stories.tsx +0 -237
  387. package/row/types.d.ts +0 -28
  388. package/slider/Slider.stories.tsx +0 -177
  389. package/stack/Stack.d.ts +0 -3
  390. package/stack/Stack.js +0 -97
  391. package/stack/Stack.stories.tsx +0 -164
  392. package/stack/types.d.ts +0 -24
  393. package/table/Table.stories.jsx +0 -277
  394. package/text/Text.d.ts +0 -7
  395. package/text/Text.js +0 -30
  396. package/text/Text.stories.tsx +0 -19
  397. package/textarea/Textarea.stories.jsx +0 -157
  398. /package/{list → action-icon}/types.js +0 -0
  399. /package/{radio → bulleted-list}/types.js +0 -0
  400. /package/{resultsetTable → container}/types.js +0 -0
  401. /package/{row → contextual-menu}/types.js +0 -0
  402. /package/{stack → divider}/types.js +0 -0
  403. /package/{number-input/numberInputContextTypes.js → flex/types.js} +0 -0
@@ -1,111 +1,66 @@
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
- test("Uncontrolled accordion group renders with children", function () {
13
- var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], null, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
14
- label: "Accordion1",
15
- padding: "medium"
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
- padding: "medium"
19
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget.")))),
20
- getByText = _render.getByText,
21
- getAllByRole = _render.getAllByRole;
22
-
23
- expect(getByText("Accordion1")).toBeTruthy();
24
- expect(getByText("Accordion2")).toBeTruthy();
25
- expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
26
- expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
27
- });
28
- test("Uncontrolled accordion group renders with only one children", function () {
29
- var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], null, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
30
- label: "Accordion1",
31
- padding: "medium"
32
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget.")))),
33
- getByText = _render2.getByText,
34
- getAllByRole = _render2.getAllByRole;
35
-
36
- expect(getByText("Accordion1")).toBeTruthy();
37
- expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
38
- });
39
8
  test("Uncontrolled accordion group calls correct function on click", function () {
40
9
  var onActiveChange = jest.fn();
41
-
42
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
43
- margin: "large",
44
- onActiveChange: onActiveChange
45
- }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
46
- label: "Accordion1",
47
- padding: "medium",
48
- margin: "large"
49
- }, /*#__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, {
50
- label: "Accordion2",
51
- padding: "medium"
52
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget.")))),
53
- getByText = _render3.getByText,
54
- getAllByRole = _render3.getAllByRole;
55
-
10
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
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;
56
21
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
57
22
  expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
58
-
59
23
  _react2.fireEvent.click(getByText("Accordion1"));
60
-
61
24
  expect(onActiveChange).toHaveBeenCalled();
62
25
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("true");
63
26
  expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
64
27
  });
65
- test("Uncontrolled accordion group renders initially with an accordion expanded", function () {
66
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
67
- defaultIndexActive: 1
68
- }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
69
- label: "Accordion1",
70
- padding: "medium"
71
- }, /*#__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, {
72
- label: "Accordion2",
73
- padding: "medium"
74
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget.")))),
75
- getByText = _render4.getByText,
76
- getAllByRole = _render4.getAllByRole;
77
-
78
- expect(getByText("Accordion1")).toBeTruthy();
79
- expect(getByText("Accordion2")).toBeTruthy();
28
+ test("Uncontrolled accordion group renders initially with an accordion expanded using defaultIndexActive", function () {
29
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
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;
80
39
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
81
40
  expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("true");
41
+ expect(getByText("Second accordion")).toBeTruthy();
42
+ expect(queryByText("First accordion")).toBeFalsy();
82
43
  });
83
44
  test("Controlled accordion with indexActive change", function () {
84
45
  var onActiveChange = jest.fn();
85
-
86
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
87
- margin: "large",
88
- indexActive: 1,
89
- onActiveChange: onActiveChange
90
- }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
91
- label: "Accordion1",
92
- padding: "medium",
93
- margin: "large"
94
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Text1")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
95
- label: "Accordion2",
96
- padding: "medium"
97
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Text2")))),
98
- getByText = _render5.getByText,
99
- getAllByRole = _render5.getAllByRole,
100
- rerender = _render5.rerender;
101
-
102
- expect(getByText("Text1")).toBeTruthy();
46
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
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;
60
+ expect(queryByText("Text1")).toBeFalsy();
103
61
  expect(getByText("Text2")).toBeTruthy();
104
-
105
62
  _react2.fireEvent.click(getByText("Accordion1"));
106
-
107
63
  _react2.fireEvent.click(getByText("Accordion2"));
108
-
109
64
  expect(onActiveChange.mock.calls[0][0]).toBe(0);
110
65
  expect(onActiveChange.mock.calls[1][0]).toBe(1);
111
66
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("false");
@@ -116,36 +71,28 @@ describe("Accordion component tests", function () {
116
71
  onActiveChange: onActiveChange
117
72
  }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
118
73
  label: "Accordion1",
119
- padding: "medium",
120
74
  margin: "large"
121
75
  }, /*#__PURE__*/_react["default"].createElement("div", null, "Text1")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
122
- label: "Accordion2",
123
- padding: "medium"
76
+ label: "Accordion2"
124
77
  }, /*#__PURE__*/_react["default"].createElement("div", null, "Text2"))));
125
78
  expect(getAllByRole("button")[0].getAttribute("aria-expanded")).toBe("true");
126
79
  expect(getAllByRole("button")[1].getAttribute("aria-expanded")).toBe("false");
127
80
  });
128
81
  test("Disabled uncontrolled accordion group", function () {
129
82
  var onActiveChange = jest.fn();
130
-
131
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
132
- margin: "large",
133
- onActiveChange: onActiveChange,
134
- disabled: true
135
- }, /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
136
- label: "Accordion1",
137
- padding: "medium",
138
- margin: "large"
139
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Text1")), /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"].Accordion, {
140
- label: "Accordion2",
141
- padding: "medium"
142
- }, /*#__PURE__*/_react["default"].createElement("div", null, "Text2")))),
143
- getByText = _render6.getByText;
144
-
83
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_AccordionGroup["default"], {
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;
145
94
  _react2.fireEvent.click(getByText("Accordion1"));
146
-
147
95
  _react2.fireEvent.click(getByText("Accordion2"));
148
-
149
96
  expect(onActiveChange).toHaveBeenCalledTimes(0);
150
97
  });
151
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 _AccordionGroupContext = require("./AccordionGroupContext");
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)(_AccordionGroupContext.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;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { AccordionGroupAccordionContextProps } from "./types";
3
+ export declare const AccordionGroupAccordionContext: import("react").Context<AccordionGroupAccordionContextProps>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AccordionGroupAccordionContext = void 0;
7
+ var _react = require("react");
8
+ var AccordionGroupAccordionContext = exports.AccordionGroupAccordionContext = /*#__PURE__*/(0, _react.createContext)(null);
@@ -1,25 +1,19 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Margin = {
2
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type Padding = {
10
- top?: Space;
11
- bottom?: Space;
12
- left?: Space;
13
- right?: Space;
14
- };
15
- declare type SVG = 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
  */
20
14
  label: string;
21
15
  /**
22
- * Element or path used as the icon that will be placed next to panel label.
16
+ * Material Symbol name or SVG element used as the icon that will be placed next to panel label.
23
17
  */
24
18
  icon?: string | SVG;
25
19
  /**
@@ -30,18 +24,13 @@ export declare type AccordionPropsType = {
30
24
  * If true, the component will be disabled.
31
25
  */
32
26
  disabled?: boolean;
33
- /**
34
- * Size of the padding to be applied to the custom area ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
35
- * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
36
- */
37
- padding?: Space | Padding;
38
27
  /**
39
28
  * The expanded panel of the accordion. This area can be used to render
40
29
  * custom content.
41
30
  */
42
31
  children: React.ReactNode;
43
32
  };
44
- declare type Props = {
33
+ type Props = {
45
34
  /**
46
35
  * Initially active accordion, only when it is uncontrolled.
47
36
  */
@@ -69,4 +58,10 @@ declare type Props = {
69
58
  */
70
59
  children: React.ReactElement<AccordionPropsType>[] | React.ReactElement<AccordionPropsType>;
71
60
  };
61
+ export type AccordionGroupAccordionContextProps = {
62
+ activeIndex: number;
63
+ handlerActiveChange: (index: number) => void;
64
+ disabled: boolean;
65
+ index: number;
66
+ };
72
67
  export default Props;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _ActionIcon = _interopRequireDefault(require("./ActionIcon.tsx"));
9
+ var _jestAxe = require("jest-axe");
10
+ var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
11
+ width: "24px",
12
+ height: "24px",
13
+ viewBox: "0 0 24 24",
14
+ fill: "currentColor"
15
+ }, /*#__PURE__*/_react["default"].createElement("path", {
16
+ d: "M0 0h24v24H0z",
17
+ fill: "none"
18
+ }), /*#__PURE__*/_react["default"].createElement("path", {
19
+ 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"
20
+ }));
21
+ describe("Action icon component accessibility tests", function () {
22
+ it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
23
+ var _render, container, results;
24
+ return _regenerator["default"].wrap(function _callee$(_context) {
25
+ while (1) switch (_context.prev = _context.next) {
26
+ case 0:
27
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
28
+ icon: iconSVG,
29
+ title: "favourite"
30
+ })), container = _render.container;
31
+ _context.next = 3;
32
+ return (0, _jestAxe.axe)(container);
33
+ case 3:
34
+ results = _context.sent;
35
+ expect(results).toHaveNoViolations();
36
+ case 5:
37
+ case "end":
38
+ return _context.stop();
39
+ }
40
+ }, _callee);
41
+ })));
42
+ it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
43
+ var _render2, container, results;
44
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
45
+ while (1) switch (_context2.prev = _context2.next) {
46
+ case 0:
47
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
48
+ icon: iconSVG,
49
+ title: "disabled",
50
+ disabled: true
51
+ })), container = _render2.container;
52
+ _context2.next = 3;
53
+ return (0, _jestAxe.axe)(container);
54
+ case 3:
55
+ results = _context2.sent;
56
+ expect(results).toHaveNoViolations();
57
+ case 5:
58
+ case "end":
59
+ return _context2.stop();
60
+ }
61
+ }, _callee2);
62
+ })));
63
+ });
@@ -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,48 @@
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 _Icon = _interopRequireDefault(require("../icon/Icon"));
13
+ var _templateObject;
14
+ var DxcActionIcon = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
15
+ var _ref$disabled = _ref.disabled,
16
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
17
+ title = _ref.title,
18
+ icon = _ref.icon,
19
+ onClick = _ref.onClick,
20
+ tabIndex = _ref.tabIndex;
21
+ return /*#__PURE__*/_react["default"].createElement(ActionIcon, {
22
+ "aria-label": title,
23
+ disabled: disabled,
24
+ onClick: onClick,
25
+ onMouseDown: function onMouseDown(event) {
26
+ event.stopPropagation();
27
+ },
28
+ tabIndex: tabIndex,
29
+ title: title,
30
+ type: "button",
31
+ ref: ref
32
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
33
+ icon: icon
34
+ }) : icon);
35
+ });
36
+ 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 font-size: 16px;\n padding: 0px;\n ", "\n\n box-shadow: 0 0 0 2px transparent;\n background-color: ", ";\n color: ", ";\n\n ", "\n\n svg {\n width: 16px;\n height: 16px;\n }\n"])), function (props) {
37
+ return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
38
+ }, function (props) {
39
+ var _props$theme$disabled, _props$theme$actionBa;
40
+ 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;
41
+ }, function (props) {
42
+ var _props$theme$disabled2, _props$theme$actionIc;
43
+ 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;
44
+ }, function (props) {
45
+ var _props$theme$focusAct, _props$theme$focusAct2, _props$theme$hoverAct, _props$theme$hoverAct2, _props$theme$activeAc, _props$theme$activeAc2;
46
+ 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 ");
47
+ });
48
+ 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="favorite" title="Favourite" />
23
+ </ExampleContainer>
24
+ <Title title="Disabled" theme="light" level={2} />
25
+ <ExampleContainer>
26
+ <DxcActionIcon icon="favorite" title="Favourite" disabled />
27
+ </ExampleContainer>
28
+ <Title title="Hover" theme="light" level={2} />
29
+ <ExampleContainer pseudoState="pseudo-hover">
30
+ <DxcActionIcon icon="filled_favorite" 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
+ * Material Symbol name or SVG element 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;