@dxc-technology/halstack-react 0.0.0-4448bdb → 0.0.0-450165

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 (392) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1249 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +104 -193
  8. package/accordion/Accordion.stories.tsx +86 -141
  9. package/accordion/Accordion.test.js +56 -0
  10. package/accordion/types.d.ts +11 -22
  11. package/accordion-group/AccordionGroup.d.ts +3 -3
  12. package/accordion-group/AccordionGroup.js +38 -107
  13. package/accordion-group/AccordionGroup.stories.tsx +95 -68
  14. package/accordion-group/AccordionGroup.test.js +98 -0
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  18. package/accordion-group/AccordionGroupContext.js +8 -0
  19. package/accordion-group/types.d.ts +17 -22
  20. package/action-icon/ActionIcon.d.ts +4 -0
  21. package/action-icon/ActionIcon.js +47 -0
  22. package/action-icon/ActionIcon.stories.tsx +41 -0
  23. package/action-icon/ActionIcon.test.js +64 -0
  24. package/action-icon/types.d.ts +26 -0
  25. package/alert/Alert.js +23 -59
  26. package/alert/Alert.stories.tsx +28 -0
  27. package/alert/Alert.test.js +75 -0
  28. package/alert/types.d.ts +5 -5
  29. package/badge/Badge.d.ts +4 -0
  30. package/badge/Badge.js +141 -41
  31. package/badge/Badge.stories.tsx +210 -0
  32. package/badge/Badge.test.js +30 -0
  33. package/badge/types.d.ts +54 -0
  34. package/bleed/Bleed.d.ts +3 -0
  35. package/bleed/Bleed.js +43 -0
  36. package/bleed/Bleed.stories.tsx +342 -0
  37. package/bleed/types.d.ts +37 -0
  38. package/box/Box.d.ts +1 -1
  39. package/box/Box.js +30 -81
  40. package/box/Box.stories.tsx +38 -51
  41. package/box/Box.test.js +13 -0
  42. package/box/types.d.ts +3 -14
  43. package/bulleted-list/BulletedList.d.ts +7 -0
  44. package/bulleted-list/BulletedList.js +89 -0
  45. package/bulleted-list/BulletedList.stories.tsx +115 -0
  46. package/bulleted-list/types.d.ts +38 -0
  47. package/bulleted-list/types.js +5 -0
  48. package/button/Button.d.ts +1 -1
  49. package/button/Button.js +64 -122
  50. package/button/Button.stories.tsx +156 -106
  51. package/button/Button.test.js +38 -0
  52. package/button/types.d.ts +12 -12
  53. package/card/Card.d.ts +1 -1
  54. package/card/Card.js +58 -102
  55. package/card/Card.stories.tsx +12 -42
  56. package/card/Card.test.js +39 -0
  57. package/card/types.d.ts +6 -11
  58. package/checkbox/Checkbox.d.ts +2 -2
  59. package/checkbox/Checkbox.js +144 -182
  60. package/checkbox/Checkbox.stories.tsx +166 -136
  61. package/checkbox/Checkbox.test.js +199 -0
  62. package/checkbox/types.d.ts +18 -6
  63. package/chip/Chip.d.ts +1 -1
  64. package/chip/Chip.js +46 -124
  65. package/chip/Chip.stories.tsx +123 -30
  66. package/chip/Chip.test.js +41 -0
  67. package/chip/types.d.ts +8 -16
  68. package/common/coreTokens.d.ts +237 -0
  69. package/common/coreTokens.js +184 -0
  70. package/common/utils.d.ts +1 -0
  71. package/common/utils.js +6 -12
  72. package/common/variables.d.ts +1395 -0
  73. package/common/variables.js +1030 -1375
  74. package/container/Container.d.ts +4 -0
  75. package/container/Container.js +194 -0
  76. package/container/Container.stories.tsx +214 -0
  77. package/container/types.d.ts +74 -0
  78. package/container/types.js +5 -0
  79. package/contextual-menu/ContextualMenu.d.ts +7 -0
  80. package/contextual-menu/ContextualMenu.js +71 -0
  81. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  82. package/contextual-menu/ContextualMenu.test.js +71 -0
  83. package/contextual-menu/MenuItemAction.d.ts +4 -0
  84. package/contextual-menu/MenuItemAction.js +46 -0
  85. package/contextual-menu/types.d.ts +22 -0
  86. package/contextual-menu/types.js +5 -0
  87. package/date-input/Calendar.d.ts +4 -0
  88. package/date-input/Calendar.js +214 -0
  89. package/date-input/DateInput.js +173 -308
  90. package/date-input/DateInput.stories.tsx +203 -56
  91. package/date-input/DateInput.test.js +808 -0
  92. package/date-input/DatePicker.d.ts +4 -0
  93. package/date-input/DatePicker.js +115 -0
  94. package/date-input/Icons.d.ts +6 -0
  95. package/date-input/Icons.js +58 -0
  96. package/date-input/YearPicker.d.ts +4 -0
  97. package/date-input/YearPicker.js +100 -0
  98. package/date-input/types.d.ts +86 -22
  99. package/dialog/Dialog.d.ts +1 -1
  100. package/dialog/Dialog.js +68 -130
  101. package/dialog/Dialog.stories.tsx +320 -167
  102. package/dialog/Dialog.test.js +307 -0
  103. package/dialog/types.d.ts +18 -25
  104. package/divider/Divider.d.ts +4 -0
  105. package/divider/Divider.js +36 -0
  106. package/divider/Divider.stories.tsx +223 -0
  107. package/divider/Divider.test.js +38 -0
  108. package/divider/types.d.ts +21 -0
  109. package/divider/types.js +5 -0
  110. package/dropdown/Dropdown.d.ts +1 -1
  111. package/dropdown/Dropdown.js +231 -329
  112. package/dropdown/Dropdown.stories.tsx +244 -64
  113. package/dropdown/Dropdown.test.js +599 -0
  114. package/dropdown/DropdownMenu.d.ts +4 -0
  115. package/dropdown/DropdownMenu.js +63 -0
  116. package/dropdown/DropdownMenuItem.d.ts +4 -0
  117. package/dropdown/DropdownMenuItem.js +70 -0
  118. package/dropdown/types.d.ts +37 -30
  119. package/file-input/FileInput.d.ts +2 -2
  120. package/file-input/FileInput.js +246 -357
  121. package/file-input/FileInput.stories.tsx +123 -12
  122. package/file-input/FileInput.test.js +459 -0
  123. package/file-input/FileItem.d.ts +4 -14
  124. package/file-input/FileItem.js +50 -99
  125. package/file-input/types.d.ts +25 -8
  126. package/flex/Flex.d.ts +4 -0
  127. package/flex/Flex.js +57 -0
  128. package/flex/Flex.stories.tsx +112 -0
  129. package/flex/types.d.ts +97 -0
  130. package/flex/types.js +5 -0
  131. package/footer/Footer.d.ts +1 -1
  132. package/footer/Footer.js +70 -192
  133. package/footer/Footer.stories.tsx +60 -19
  134. package/footer/Footer.test.js +85 -0
  135. package/footer/Icons.d.ts +3 -2
  136. package/footer/Icons.js +67 -8
  137. package/footer/types.d.ts +25 -26
  138. package/grid/Grid.d.ts +7 -0
  139. package/grid/Grid.js +76 -0
  140. package/grid/Grid.stories.tsx +219 -0
  141. package/grid/types.d.ts +115 -0
  142. package/grid/types.js +5 -0
  143. package/header/Header.d.ts +4 -3
  144. package/header/Header.js +99 -203
  145. package/header/Header.stories.tsx +152 -63
  146. package/header/Header.test.js +66 -0
  147. package/header/Icons.d.ts +2 -2
  148. package/header/Icons.js +4 -9
  149. package/header/types.d.ts +7 -21
  150. package/heading/Heading.js +10 -32
  151. package/heading/Heading.test.js +169 -0
  152. package/heading/types.d.ts +7 -7
  153. package/icon/Icon.d.ts +4 -0
  154. package/icon/Icon.js +33 -0
  155. package/icon/Icon.stories.tsx +28 -0
  156. package/icon/types.d.ts +4 -0
  157. package/icon/types.js +5 -0
  158. package/image/Image.d.ts +4 -0
  159. package/image/Image.js +70 -0
  160. package/image/Image.stories.tsx +129 -0
  161. package/image/types.d.ts +72 -0
  162. package/image/types.js +5 -0
  163. package/inset/Inset.d.ts +3 -0
  164. package/inset/Inset.js +43 -0
  165. package/inset/Inset.stories.tsx +230 -0
  166. package/inset/types.d.ts +37 -0
  167. package/inset/types.js +5 -0
  168. package/layout/ApplicationLayout.d.ts +16 -6
  169. package/layout/ApplicationLayout.js +83 -174
  170. package/layout/ApplicationLayout.stories.tsx +85 -94
  171. package/layout/Icons.d.ts +8 -0
  172. package/layout/Icons.js +51 -48
  173. package/layout/types.d.ts +19 -35
  174. package/link/Link.d.ts +3 -2
  175. package/link/Link.js +64 -110
  176. package/link/Link.stories.tsx +159 -52
  177. package/link/Link.test.js +63 -0
  178. package/link/types.d.ts +15 -35
  179. package/main.d.ts +19 -18
  180. package/main.js +82 -120
  181. package/nav-tabs/NavTabs.d.ts +7 -0
  182. package/nav-tabs/NavTabs.js +93 -0
  183. package/nav-tabs/NavTabs.stories.tsx +276 -0
  184. package/nav-tabs/NavTabs.test.js +76 -0
  185. package/nav-tabs/NavTabsContext.d.ts +3 -0
  186. package/nav-tabs/NavTabsContext.js +8 -0
  187. package/nav-tabs/Tab.d.ts +4 -0
  188. package/nav-tabs/Tab.js +118 -0
  189. package/nav-tabs/types.d.ts +52 -0
  190. package/nav-tabs/types.js +5 -0
  191. package/number-input/NumberInput.js +47 -44
  192. package/number-input/NumberInput.stories.tsx +44 -28
  193. package/number-input/NumberInput.test.js +989 -0
  194. package/number-input/NumberInputContext.d.ts +3 -4
  195. package/number-input/NumberInputContext.js +3 -14
  196. package/number-input/types.d.ts +34 -15
  197. package/package.json +46 -47
  198. package/paginator/Icons.d.ts +5 -0
  199. package/paginator/Icons.js +21 -47
  200. package/paginator/Paginator.js +34 -91
  201. package/paginator/Paginator.stories.tsx +24 -0
  202. package/paginator/Paginator.test.js +335 -0
  203. package/paginator/types.d.ts +3 -3
  204. package/paragraph/Paragraph.d.ts +5 -0
  205. package/paragraph/Paragraph.js +22 -0
  206. package/paragraph/Paragraph.stories.tsx +27 -0
  207. package/password-input/Icons.d.ts +6 -0
  208. package/password-input/Icons.js +35 -0
  209. package/password-input/PasswordInput.js +57 -123
  210. package/password-input/PasswordInput.stories.tsx +1 -33
  211. package/password-input/PasswordInput.test.js +198 -0
  212. package/password-input/types.d.ts +21 -17
  213. package/progress-bar/ProgressBar.js +65 -91
  214. package/progress-bar/ProgressBar.stories.tsx +93 -0
  215. package/progress-bar/ProgressBar.test.js +93 -0
  216. package/progress-bar/types.d.ts +3 -3
  217. package/quick-nav/QuickNav.d.ts +4 -0
  218. package/quick-nav/QuickNav.js +94 -0
  219. package/quick-nav/QuickNav.stories.tsx +356 -0
  220. package/quick-nav/types.d.ts +21 -0
  221. package/quick-nav/types.js +5 -0
  222. package/radio-group/Radio.d.ts +1 -1
  223. package/radio-group/Radio.js +67 -73
  224. package/radio-group/RadioGroup.js +108 -141
  225. package/radio-group/RadioGroup.stories.tsx +171 -36
  226. package/radio-group/RadioGroup.test.js +756 -0
  227. package/radio-group/types.d.ts +88 -10
  228. package/resultset-table/Icons.d.ts +7 -0
  229. package/resultset-table/Icons.js +47 -0
  230. package/resultset-table/ResultsetTable.d.ts +7 -0
  231. package/resultset-table/ResultsetTable.js +166 -0
  232. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +157 -37
  233. package/resultset-table/ResultsetTable.test.js +371 -0
  234. package/{resultsetTable → resultset-table}/types.d.ts +13 -7
  235. package/resultset-table/types.js +5 -0
  236. package/select/Icons.d.ts +10 -0
  237. package/select/Icons.js +89 -0
  238. package/select/Listbox.d.ts +4 -0
  239. package/select/Listbox.js +143 -0
  240. package/select/Option.d.ts +4 -0
  241. package/select/Option.js +87 -0
  242. package/select/Select.js +229 -502
  243. package/select/Select.stories.tsx +603 -204
  244. package/select/Select.test.js +2370 -0
  245. package/select/types.d.ts +64 -25
  246. package/sidenav/Icons.d.ts +7 -0
  247. package/sidenav/Icons.js +47 -0
  248. package/sidenav/Sidenav.d.ts +6 -5
  249. package/sidenav/Sidenav.js +132 -71
  250. package/sidenav/Sidenav.stories.tsx +251 -151
  251. package/sidenav/Sidenav.test.js +37 -0
  252. package/sidenav/SidenavContext.d.ts +5 -0
  253. package/sidenav/SidenavContext.js +13 -0
  254. package/sidenav/types.d.ts +52 -26
  255. package/slider/Slider.d.ts +2 -2
  256. package/slider/Slider.js +148 -180
  257. package/slider/Slider.test.js +254 -0
  258. package/slider/types.d.ts +11 -3
  259. package/spinner/Spinner.js +31 -75
  260. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  261. package/spinner/Spinner.test.js +55 -0
  262. package/spinner/types.d.ts +3 -3
  263. package/status-light/StatusLight.d.ts +4 -0
  264. package/status-light/StatusLight.js +51 -0
  265. package/status-light/StatusLight.stories.tsx +74 -0
  266. package/status-light/StatusLight.test.js +25 -0
  267. package/status-light/types.d.ts +17 -0
  268. package/status-light/types.js +5 -0
  269. package/switch/Switch.d.ts +2 -2
  270. package/switch/Switch.js +149 -114
  271. package/switch/Switch.stories.tsx +44 -67
  272. package/switch/Switch.test.js +180 -0
  273. package/switch/types.d.ts +13 -5
  274. package/table/DropdownTheme.js +62 -0
  275. package/table/Table.d.ts +6 -2
  276. package/table/Table.js +87 -35
  277. package/table/Table.stories.tsx +658 -0
  278. package/table/Table.test.js +113 -0
  279. package/table/types.d.ts +48 -6
  280. package/tabs/Tab.d.ts +4 -0
  281. package/tabs/Tab.js +116 -0
  282. package/tabs/Tabs.d.ts +1 -1
  283. package/tabs/Tabs.js +317 -146
  284. package/tabs/Tabs.stories.tsx +123 -19
  285. package/tabs/Tabs.test.js +294 -0
  286. package/tabs/types.d.ts +46 -24
  287. package/tag/Tag.d.ts +1 -1
  288. package/tag/Tag.js +43 -85
  289. package/tag/Tag.stories.tsx +37 -27
  290. package/tag/Tag.test.js +49 -0
  291. package/tag/types.d.ts +25 -16
  292. package/text-input/Icons.d.ts +8 -0
  293. package/text-input/Icons.js +56 -0
  294. package/text-input/Suggestion.d.ts +4 -0
  295. package/text-input/Suggestion.js +67 -0
  296. package/text-input/Suggestions.d.ts +4 -0
  297. package/text-input/Suggestions.js +84 -0
  298. package/text-input/TextInput.js +326 -547
  299. package/text-input/TextInput.stories.tsx +281 -272
  300. package/text-input/TextInput.test.js +1756 -0
  301. package/text-input/types.d.ts +71 -25
  302. package/textarea/Textarea.js +85 -135
  303. package/textarea/Textarea.stories.tsx +174 -0
  304. package/textarea/Textarea.test.js +406 -0
  305. package/textarea/types.d.ts +27 -16
  306. package/toggle-group/ToggleGroup.d.ts +2 -2
  307. package/toggle-group/ToggleGroup.js +92 -105
  308. package/toggle-group/ToggleGroup.stories.tsx +53 -8
  309. package/toggle-group/ToggleGroup.test.js +137 -0
  310. package/toggle-group/types.d.ts +34 -17
  311. package/typography/Typography.d.ts +4 -0
  312. package/typography/Typography.js +23 -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 +1147 -1
  317. package/useTheme.js +4 -11
  318. package/useTranslatedLabels.d.ts +85 -0
  319. package/useTranslatedLabels.js +14 -0
  320. package/utils/BaseTypography.d.ts +21 -0
  321. package/utils/BaseTypography.js +94 -0
  322. package/utils/FocusLock.d.ts +13 -0
  323. package/utils/FocusLock.js +124 -0
  324. package/wizard/Wizard.d.ts +1 -1
  325. package/wizard/Wizard.js +70 -101
  326. package/wizard/Wizard.stories.tsx +48 -19
  327. package/wizard/Wizard.test.js +114 -0
  328. package/wizard/types.d.ts +13 -9
  329. package/ThemeContext.d.ts +0 -15
  330. package/ThemeContext.js +0 -243
  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/card/ice-cream.jpg +0 -0
  336. package/common/OpenSans.css +0 -81
  337. package/common/RequiredComponent.js +0 -32
  338. package/common/fonts/OpenSans-Bold.ttf +0 -0
  339. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  340. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  341. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  342. package/common/fonts/OpenSans-Italic.ttf +0 -0
  343. package/common/fonts/OpenSans-Light.ttf +0 -0
  344. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  345. package/common/fonts/OpenSans-Regular.ttf +0 -0
  346. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  347. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  348. package/date/Date.js +0 -373
  349. package/date/index.d.ts +0 -27
  350. package/input-text/Icons.js +0 -22
  351. package/input-text/InputText.js +0 -611
  352. package/input-text/index.d.ts +0 -36
  353. package/list/List.d.ts +0 -8
  354. package/list/List.js +0 -47
  355. package/list/List.stories.tsx +0 -95
  356. package/number-input/numberInputContextTypes.d.ts +0 -19
  357. package/progress-bar/ProgressBar.stories.jsx +0 -58
  358. package/radio/Radio.d.ts +0 -4
  359. package/radio/Radio.js +0 -174
  360. package/radio/Radio.stories.tsx +0 -192
  361. package/radio/types.d.ts +0 -54
  362. package/resultsetTable/ResultsetTable.d.ts +0 -4
  363. package/resultsetTable/ResultsetTable.js +0 -251
  364. package/row/Row.d.ts +0 -11
  365. package/row/Row.js +0 -127
  366. package/row/Row.stories.tsx +0 -239
  367. package/slider/Slider.stories.tsx +0 -177
  368. package/stack/Stack.d.ts +0 -10
  369. package/stack/Stack.js +0 -97
  370. package/stack/Stack.stories.tsx +0 -166
  371. package/table/Table.stories.jsx +0 -277
  372. package/text/Text.d.ts +0 -7
  373. package/text/Text.js +0 -30
  374. package/text/Text.stories.tsx +0 -19
  375. package/textarea/Textarea.stories.jsx +0 -136
  376. package/toggle/Toggle.js +0 -186
  377. package/toggle/index.d.ts +0 -21
  378. package/upload/Upload.js +0 -201
  379. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  380. package/upload/buttons-upload/Icons.js +0 -40
  381. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  382. package/upload/dragAndDropArea/Icons.js +0 -39
  383. package/upload/file-upload/FileToUpload.js +0 -115
  384. package/upload/file-upload/Icons.js +0 -66
  385. package/upload/files-upload/FilesToUpload.js +0 -109
  386. package/upload/index.d.ts +0 -15
  387. package/upload/transaction/Icons.js +0 -160
  388. package/upload/transaction/Transaction.js +0 -104
  389. package/upload/transactions/Transactions.js +0 -94
  390. /package/{radio → action-icon}/types.js +0 -0
  391. /package/{resultsetTable → badge}/types.js +0 -0
  392. /package/{number-input/numberInputContextTypes.js → bleed/types.js} +0 -0
@@ -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;
package/alert/Alert.js CHANGED
@@ -1,36 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
11
  var _react = _interopRequireDefault(require("react"));
17
-
18
12
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
19
-
20
- var _variables = require("../common/variables.js");
21
-
22
- var _utils = require("../common/utils.js");
23
-
13
+ var _variables = require("../common/variables");
14
+ var _utils = require("../common/utils");
24
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
-
26
- var _BackgroundColorContext = require("../BackgroundColorContext");
27
-
16
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
28
17
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
-
18
+ 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); }
19
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
34
20
  var alertIcons = {
35
21
  close: /*#__PURE__*/_react["default"].createElement("svg", {
36
22
  xmlns: "http://www.w3.org/2000/svg",
@@ -94,26 +80,24 @@ var alertIcons = {
94
80
  fill: "none"
95
81
  }))
96
82
  };
97
-
98
83
  var DxcAlert = function DxcAlert(_ref) {
99
84
  var _ref$type = _ref.type,
100
- type = _ref$type === void 0 ? "info" : _ref$type,
101
- _ref$mode = _ref.mode,
102
- mode = _ref$mode === void 0 ? "inline" : _ref$mode,
103
- _ref$inlineText = _ref.inlineText,
104
- inlineText = _ref$inlineText === void 0 ? "" : _ref$inlineText,
105
- onClose = _ref.onClose,
106
- children = _ref.children,
107
- margin = _ref.margin,
108
- _ref$size = _ref.size,
109
- size = _ref$size === void 0 ? "fitContent" : _ref$size,
110
- tabIndex = _ref.tabIndex;
85
+ type = _ref$type === void 0 ? "info" : _ref$type,
86
+ _ref$mode = _ref.mode,
87
+ mode = _ref$mode === void 0 ? "inline" : _ref$mode,
88
+ _ref$inlineText = _ref.inlineText,
89
+ inlineText = _ref$inlineText === void 0 ? "" : _ref$inlineText,
90
+ onClose = _ref.onClose,
91
+ children = _ref.children,
92
+ margin = _ref.margin,
93
+ _ref$size = _ref.size,
94
+ size = _ref$size === void 0 ? "fitContent" : _ref$size,
95
+ tabIndex = _ref.tabIndex;
111
96
  var colorsTheme = (0, _useTheme["default"])();
112
-
97
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
113
98
  var getTypeText = function getTypeText() {
114
- return type === "info" ? "information" : type === "confirm" ? "success" : type === "warning" ? "warning" : "error";
99
+ return type === "info" ? translatedLabels.alert.infoTitleText : type === "confirm" ? translatedLabels.alert.successTitleText : type === "warning" ? translatedLabels.alert.warningTitleText : translatedLabels.alert.errorTitleText;
115
100
  };
116
-
117
101
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
118
102
  theme: colorsTheme.alert
119
103
  }, /*#__PURE__*/_react["default"].createElement(AlertModal, {
@@ -128,28 +112,21 @@ var DxcAlert = function DxcAlert(_ref) {
128
112
  size: size
129
113
  }, /*#__PURE__*/_react["default"].createElement(AlertInfo, null, /*#__PURE__*/_react["default"].createElement(AlertIcon, {
130
114
  type: type
131
- }, type === "info" && alertIcons.info || type === "confirm" && alertIcons.success || type === "warning" && alertIcons.warning || type === "error" && alertIcons.error), /*#__PURE__*/_react["default"].createElement(AlertText, null, /*#__PURE__*/_react["default"].createElement(AlertTitle, {
132
- type: type
133
- }, getTypeText()), inlineText && inlineText !== "" && "-", /*#__PURE__*/_react["default"].createElement(AlertInlineText, null, inlineText)), onClose && /*#__PURE__*/_react["default"].createElement(AlertCloseAction, {
115
+ }, type === "info" && alertIcons.info || type === "confirm" && alertIcons.success || type === "warning" && alertIcons.warning || type === "error" && alertIcons.error), /*#__PURE__*/_react["default"].createElement(AlertText, null, /*#__PURE__*/_react["default"].createElement(AlertTitle, null, getTypeText()), inlineText && inlineText !== "" && "-", /*#__PURE__*/_react["default"].createElement(AlertInlineText, null, inlineText)), onClose && /*#__PURE__*/_react["default"].createElement(AlertCloseAction, {
134
116
  onClick: onClose,
135
117
  tabIndex: tabIndex
136
- }, alertIcons.close)), children && /*#__PURE__*/_react["default"].createElement(AlertContent, null, /*#__PURE__*/_react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
137
- color: type === "info" && colorsTheme.alert.infoBackgroundColor || type === "confirm" && colorsTheme.alert.successBackgroundColor || type === "warning" && colorsTheme.alert.warningBackgroundColor || type === "error" && colorsTheme.alert.errorBackgroundColor
138
- }, children)))));
118
+ }, alertIcons.close)), children && /*#__PURE__*/_react["default"].createElement(AlertContent, null, children))));
139
119
  };
140
-
141
120
  var sizes = {
142
121
  small: "280px",
143
122
  medium: "480px",
144
123
  large: "820px",
145
124
  fillParent: "100%",
146
- fitContent: "auto"
125
+ fitContent: "fit-content"
147
126
  };
148
-
149
127
  var calculateWidth = function calculateWidth(margin, size) {
150
128
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
151
129
  };
152
-
153
130
  var AlertModal = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n width: ", ";\n height: ", ";\n justify-content: ", ";\n align-items: ", ";\n top: ", ";\n left: ", ";\n position: ", ";\n display: ", ";\n z-index: ", ";\n"])), function (props) {
154
131
  return props.theme.fontSizeBase;
155
132
  }, function (props) {
@@ -171,7 +148,6 @@ var AlertModal = _styledComponents["default"].div(_templateObject || (_templateO
171
148
  }, function (props) {
172
149
  return props.mode === "modal" ? "1200" : "";
173
150
  });
174
-
175
151
  var OverlayContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n position: ", ";\n top: ", ";\n bottom: ", ";\n left: ", ";\n right: ", ";\n"])), function (props) {
176
152
  return props.mode === "modal" ? "".concat(props.theme.overlayColor) : "transparent";
177
153
  }, function (props) {
@@ -185,7 +161,6 @@ var OverlayContainer = _styledComponents["default"].div(_templateObject2 || (_te
185
161
  }, function (props) {
186
162
  return props.mode === "modal" ? "0" : "";
187
163
  });
188
-
189
164
  var AlertContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n display: ", ";\n overflow: hidden;\n box-sizing: border-box;\n\n background-color: ", ";\n\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n\n padding-left: 12px;\n padding-right: 12px;\n justify-content: ", ";\n align-items: ", ";\n max-width: ", ";\n width: ", ";\n z-index: ", ";\n"])), function (props) {
190
165
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
191
166
  }, function (props) {
@@ -219,11 +194,9 @@ var AlertContainer = _styledComponents["default"].div(_templateObject3 || (_temp
219
194
  }, function (props) {
220
195
  return props.mode === "modal" ? "1300" : "";
221
196
  });
222
-
223
197
  var AlertInfo = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n height: calc(48px - calc(", " * 2));\n align-items: center;\n width: 100%;\n"])), function (props) {
224
198
  return props.theme.borderThickness;
225
199
  });
226
-
227
200
  var AlertTitle = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n margin-right: 8px;\n padding-right: ", ";\n padding-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n"])), function (props) {
228
201
  return props.theme.titlePaddingRight;
229
202
  }, function (props) {
@@ -241,7 +214,6 @@ var AlertTitle = _styledComponents["default"].div(_templateObject5 || (_template
241
214
  }, function (props) {
242
215
  return props.theme.titleTextTransform;
243
216
  });
244
-
245
217
  var AlertInlineText = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: 8px;\n padding-right: ", ";\n padding-left: ", ";\n flex-grow: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n"])), function (props) {
246
218
  return props.theme.inlineTextPaddingRight;
247
219
  }, function (props) {
@@ -257,7 +229,6 @@ var AlertInlineText = _styledComponents["default"].div(_templateObject6 || (_tem
257
229
  }, function (props) {
258
230
  return props.theme.inlineTextFontColor;
259
231
  });
260
-
261
232
  var AlertIcon = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n margin-right: 12px;\n padding-right: ", ";\n padding-left: ", ";\n\n color: ", ";\n\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
262
233
  return props.theme.iconPaddingRight;
263
234
  }, function (props) {
@@ -269,22 +240,15 @@ var AlertIcon = _styledComponents["default"].span(_templateObject7 || (_template
269
240
  }, function (props) {
270
241
  return props.theme.iconSize;
271
242
  });
272
-
273
243
  var AlertText = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n align-items: center;\n overflow: hidden;\n"])));
274
-
275
244
  var AlertContent = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 1 1 auto;\n padding: ", ";\n overflow-y: auto;\n"])), function (props) {
276
245
  return "".concat(props.theme.contentPaddingTop, " ").concat(props.theme.contentPaddingRight, " ").concat(props.theme.contentPaddingBottom, " ").concat(props.theme.contentPaddingLeft);
277
246
  });
278
-
279
- var AlertCloseAction = _styledComponents["default"].button(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n border: 1px solid transparent;\n border-radius: 2px;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n margin-left: 12px;\n background-color: transparent;\n color: #000000;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
247
+ var AlertCloseAction = _styledComponents["default"].button(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n border: 1px solid transparent;\n border-radius: 2px;\n box-shadow: 0 0 0 2px transparent;\n padding: 3px;\n margin-left: 12px;\n background-color: transparent;\n color: #000000;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus,\n &:focus-visible {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
280
248
  return props.theme.hoverActionBackgroundColor;
281
249
  }, function (props) {
282
250
  return props.theme.focusActionBorderColor;
283
- }, function (props) {
284
- return props.theme.focusActionBorderColor;
285
251
  }, function (props) {
286
252
  return props.theme.activeActionBackgroundColor;
287
253
  });
288
-
289
- var _default = DxcAlert;
290
- exports["default"] = _default;
254
+ var _default = exports["default"] = DxcAlert;
@@ -2,12 +2,21 @@ import React from "react";
2
2
  import DxcAlert from "./Alert";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+ import { HalstackProvider } from "../HalstackContext";
5
6
 
6
7
  export default {
7
8
  title: "Alert",
8
9
  component: DxcAlert,
9
10
  };
10
11
 
12
+ const opinionatedTheme = {
13
+ alert: {
14
+ baseColor: "#e6f4ff",
15
+ accentColor: "#0067b3",
16
+ overlayColor: "#000000b3",
17
+ },
18
+ };
19
+
11
20
  export const Chromatic = () => (
12
21
  <>
13
22
  <ExampleContainer>
@@ -155,6 +164,12 @@ export const Chromatic = () => (
155
164
  </div>
156
165
  </DxcAlert>
157
166
  </ExampleContainer>
167
+ <Title title="Opinionated theme" theme="light" level={2} />
168
+ <ExampleContainer>
169
+ <HalstackProvider theme={opinionatedTheme}>
170
+ <DxcAlert inlineText="Info type alert with inline text." />
171
+ </HalstackProvider>
172
+ </ExampleContainer>
158
173
  </>
159
174
  );
160
175
 
@@ -168,3 +183,16 @@ export const ModalAlert = () => (
168
183
  </DxcAlert>
169
184
  </ExampleContainer>
170
185
  );
186
+
187
+ export const ModalAlertOpinionated = () => (
188
+ <ExampleContainer>
189
+ <HalstackProvider theme={opinionatedTheme}>
190
+ <DxcAlert inlineText="Modal alert." mode="modal" onClose={() => {}}>
191
+ <div>
192
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo
193
+ lobortis eget.
194
+ </div>
195
+ </DxcAlert>
196
+ </HalstackProvider>
197
+ </ExampleContainer>
198
+ );
@@ -0,0 +1,75 @@
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 _Alert = _interopRequireDefault(require("./Alert.tsx"));
7
+ describe("Alert component tests", function () {
8
+ test("Info alert renders with correct text", function () {
9
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Alert["default"], {
10
+ type: "info",
11
+ inlineText: "info-alert-text"
12
+ })),
13
+ getByText = _render.getByText;
14
+ expect(getByText("information")).toBeTruthy();
15
+ expect(getByText("info-alert-text")).toBeTruthy();
16
+ });
17
+ test("Confirm alert renders with correct text", function () {
18
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Alert["default"], {
19
+ type: "confirm",
20
+ inlineText: "confirm-alert-text"
21
+ })),
22
+ getByText = _render2.getByText;
23
+ expect(getByText("success")).toBeTruthy();
24
+ expect(getByText("confirm-alert-text")).toBeTruthy();
25
+ });
26
+ test("Warning alert renders with correct text", function () {
27
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Alert["default"], {
28
+ type: "warning",
29
+ inlineText: "warning-alert-text"
30
+ })),
31
+ getByText = _render3.getByText;
32
+ expect(getByText("warning")).toBeTruthy();
33
+ expect(getByText("warning-alert-text")).toBeTruthy();
34
+ });
35
+ test("Error alert renders with correct text", function () {
36
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Alert["default"], {
37
+ type: "error",
38
+ inlineText: "error-alert-text"
39
+ })),
40
+ getByText = _render4.getByText;
41
+ expect(getByText("error")).toBeTruthy();
42
+ expect(getByText("error-alert-text")).toBeTruthy();
43
+ });
44
+ test("Alert renders with correct children", function () {
45
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Alert["default"], {
46
+ inlineText: "alert-text"
47
+ }, /*#__PURE__*/_react["default"].createElement("p", null, "sample-children"))),
48
+ getByText = _render5.getByText;
49
+ expect(getByText("alert-text")).toBeTruthy();
50
+ expect(getByText("sample-children")).toBeTruthy();
51
+ });
52
+ test("Calls correct function on close", function () {
53
+ var onClose = jest.fn();
54
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Alert["default"], {
55
+ onClose: onClose,
56
+ inlineText: "info-alert-text"
57
+ })),
58
+ getByRole = _render6.getByRole;
59
+ var closeButton = getByRole("button");
60
+ _react2.fireEvent.click(closeButton);
61
+ expect(onClose).toHaveBeenCalled();
62
+ });
63
+ test("Modal alert calls correct function on close", function () {
64
+ var onClose = jest.fn();
65
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Alert["default"], {
66
+ onClose: onClose,
67
+ mode: "modal",
68
+ inlineText: "info-alert-text"
69
+ })),
70
+ getByRole = _render7.getByRole;
71
+ var closeButton = getByRole("button");
72
+ _react2.fireEvent.click(closeButton);
73
+ expect(onClose).toHaveBeenCalled();
74
+ });
75
+ });
package/alert/types.d.ts CHANGED
@@ -1,12 +1,12 @@
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 Props = {
9
+ type Props = {
10
10
  /**
11
11
  * Uses on of the available alert types.
12
12
  */
@@ -17,7 +17,7 @@ declare type Props = {
17
17
  * There is no overlay layer. Position should be decided by the user.
18
18
  * 'modal': The alert will be displayed in the middle of the screen with an overlay layer behind.
19
19
  * The onClose function will be executed when the X button or the overlay is clicked. d
20
- * The user has the responsibility of hidding the modal in the onClose function, otherwise the modal will remain visible.
20
+ * The user has the responsibility of hiding the modal in the onClose function, otherwise the modal will remain visible.
21
21
  */
22
22
  mode?: "inline" | "modal";
23
23
  /**
@@ -42,7 +42,7 @@ declare type Props = {
42
42
  */
43
43
  size?: "small" | "medium" | "large" | "fillParent" | "fitContent";
44
44
  /**
45
- * Tabindex value given to the close button.
45
+ * Value of the tabindex attribute applied to the close button.
46
46
  */
47
47
  tabIndex?: number;
48
48
  };
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import BadgePropsType from "./types";
3
+ declare const DxcBadge: ({ label, title, mode, color, icon, notificationLimit, size, }: BadgePropsType) => JSX.Element;
4
+ export default DxcBadge;
package/badge/Badge.js CHANGED
@@ -1,59 +1,159 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
4
  Object.defineProperty(exports, "__esModule", {
8
5
  value: true
9
6
  });
10
7
  exports["default"] = void 0;
11
-
12
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
9
  var _react = _interopRequireDefault(require("react"));
15
-
16
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
-
18
- var _useTheme = _interopRequireDefault(require("../useTheme"));
19
-
20
- var _templateObject;
21
-
22
- 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); }
23
-
24
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
- var DxcBadge = function DxcBadge(_ref) {
27
- var notificationText = _ref.notificationText;
28
- var colorsTheme = (0, _useTheme["default"])();
29
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
30
- theme: colorsTheme.tabs
31
- }, /*#__PURE__*/_react["default"].createElement(StyledDxcBadge, {
32
- notificationText: notificationText
33
- }, /*#__PURE__*/_react["default"].createElement("span", null, notificationText)));
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
12
+ var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
13
+ var _templateObject, _templateObject2, _templateObject3;
14
+ var contextualColorMap = {
15
+ grey: {
16
+ background: _coreTokens["default"].color_grey_200,
17
+ text: _coreTokens["default"].color_grey_900
18
+ },
19
+ blue: {
20
+ background: _coreTokens["default"].color_blue_200,
21
+ text: _coreTokens["default"].color_blue_900
22
+ },
23
+ green: {
24
+ background: _coreTokens["default"].color_green_200,
25
+ text: _coreTokens["default"].color_green_900
26
+ },
27
+ orange: {
28
+ background: _coreTokens["default"].color_orange_200,
29
+ text: _coreTokens["default"].color_orange_900
30
+ },
31
+ red: {
32
+ background: _coreTokens["default"].color_red_200,
33
+ text: _coreTokens["default"].color_red_900
34
+ },
35
+ yellow: {
36
+ background: _coreTokens["default"].color_yellow_200,
37
+ text: _coreTokens["default"].color_yellow_900
38
+ },
39
+ purple: {
40
+ background: _coreTokens["default"].color_purple_200,
41
+ text: _coreTokens["default"].color_purple_900
42
+ }
34
43
  };
35
-
36
- var StyledDxcBadge = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n letter-spacing: ", ";\n width: ", ";\n height: ", ";\n border-radius: ", ";\n display: flex;\n padding-bottom: 1px;\n padding-right: 1px;\n flex-wrap: wrap;\n box-sizing: border-box;\n align-items: center;\n line-height: 1;\n align-content: center;\n flex-direction: row;\n justify-content: center;\n"])), function (props) {
37
- return props.theme.badgeBackgroundColor;
38
- }, function (props) {
39
- return props.theme.badgeFontFamily;
40
- }, function (props) {
41
- return props.theme.badgeFontSize;
44
+ var sizeMap = {
45
+ small: {
46
+ height: "20px",
47
+ width: "20px",
48
+ minWidth: "20px",
49
+ fontSize: _coreTokens["default"].type_scale_01,
50
+ borderRadius: _coreTokens["default"].spacing_12,
51
+ iconSize: "14px",
52
+ padding: {
53
+ contextual: "".concat(_coreTokens["default"].spacing_4),
54
+ notification: "".concat(_coreTokens["default"].spacing_0, " ").concat(_coreTokens["default"].spacing_4)
55
+ }
56
+ },
57
+ medium: {
58
+ height: "24px",
59
+ width: "24px",
60
+ minWidth: "24px",
61
+ fontSize: _coreTokens["default"].type_scale_02,
62
+ borderRadius: _coreTokens["default"].spacing_12,
63
+ iconSize: "16px",
64
+ padding: {
65
+ contextual: "".concat(_coreTokens["default"].spacing_4, " ").concat(_coreTokens["default"].spacing_8),
66
+ notification: "".concat(_coreTokens["default"].spacing_0, " ").concat(_coreTokens["default"].spacing_4)
67
+ }
68
+ },
69
+ large: {
70
+ height: "32px",
71
+ width: "32px",
72
+ minWidth: "32px",
73
+ fontSize: _coreTokens["default"].type_scale_04,
74
+ borderRadius: _coreTokens["default"].spacing_24,
75
+ iconSize: "24px",
76
+ padding: {
77
+ contextual: "".concat(_coreTokens["default"].spacing_4, " ").concat(_coreTokens["default"].spacing_8),
78
+ notification: "".concat(_coreTokens["default"].spacing_0, " ").concat(_coreTokens["default"].spacing_8)
79
+ }
80
+ }
81
+ };
82
+ var Label = function Label(_ref) {
83
+ var label = _ref.label,
84
+ notificationLimit = _ref.notificationLimit,
85
+ size = _ref.size;
86
+ return /*#__PURE__*/_react["default"].createElement(LabelContainer, {
87
+ size: size
88
+ }, typeof label === "number" ? label > notificationLimit ? "+" + notificationLimit : label : label);
89
+ };
90
+ var DxcBadge = function DxcBadge(_ref2) {
91
+ var label = _ref2.label,
92
+ title = _ref2.title,
93
+ _ref2$mode = _ref2.mode,
94
+ mode = _ref2$mode === void 0 ? "contextual" : _ref2$mode,
95
+ _ref2$color = _ref2.color,
96
+ color = _ref2$color === void 0 ? "grey" : _ref2$color,
97
+ icon = _ref2.icon,
98
+ _ref2$notificationLim = _ref2.notificationLimit,
99
+ notificationLimit = _ref2$notificationLim === void 0 ? 99 : _ref2$notificationLim,
100
+ _ref2$size = _ref2.size,
101
+ size = _ref2$size === void 0 ? "medium" : _ref2$size;
102
+ return /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
103
+ label: label,
104
+ mode: mode,
105
+ color: mode === "contextual" && color || undefined,
106
+ size: size,
107
+ title: title,
108
+ "aria-label": title
109
+ }, mode === "contextual" && /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
110
+ gap: "0.125rem",
111
+ alignItems: "center"
112
+ }, icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
113
+ size: size
114
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
115
+ src: icon,
116
+ alt: title
117
+ }) : icon), /*#__PURE__*/_react["default"].createElement(Label, {
118
+ label: label,
119
+ notificationLimit: notificationLimit,
120
+ size: size
121
+ })) || /*#__PURE__*/_react["default"].createElement(Label, {
122
+ label: label,
123
+ notificationLimit: notificationLimit,
124
+ size: size
125
+ }));
126
+ };
127
+ var getColor = function getColor(mode, color) {
128
+ return mode === "contextual" ? contextualColorMap[color].text : _coreTokens["default"].color_white;
129
+ };
130
+ var getBackgroundColor = function getBackgroundColor(mode, color) {
131
+ return mode === "contextual" ? contextualColorMap[color].background : _coreTokens["default"].color_red_700;
132
+ };
133
+ var getPadding = function getPadding(mode, size) {
134
+ return mode === "contextual" ? sizeMap[size].padding.contextual : sizeMap[size].padding.notification;
135
+ };
136
+ var BadgeContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n background-color: ", ";\n border-radius: ", ";\n width: ", ";\n min-width: ", ";\n height: ", ";\n padding: ", ";\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n"])), function (props) {
137
+ return getColor(props.mode, props.color);
42
138
  }, function (props) {
43
- return props.theme.badgeFontStyle;
139
+ return getBackgroundColor(props.mode, props.color);
44
140
  }, function (props) {
45
- return props.theme.badgeFontWeight;
141
+ return sizeMap[props.size].borderRadius;
46
142
  }, function (props) {
47
- return props.theme.badgeFontColor;
143
+ return !props.label && props.mode === "notification" ? sizeMap[props.size].width : "fit-content";
48
144
  }, function (props) {
49
- return props.theme.badgeLetterSpacing;
145
+ return props.mode === "notification" && sizeMap[props.size].minWidth;
50
146
  }, function (props) {
51
- return props.notificationText === true ? props.theme.badgeWidth : props.theme.badgeWidthWithNotificationNumber;
147
+ return sizeMap[props.size].height;
52
148
  }, function (props) {
53
- return props.notificationText === true ? props.theme.badgeHeight : props.theme.badgeHeightWithNotificationNumber;
149
+ return props.label ? getPadding(props.mode, props.size) : "";
150
+ });
151
+ var IconContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n img,\n svg {\n height: ", ";\n width: ", ";\n }\n"])), function (props) {
152
+ return sizeMap[props.size].iconSize;
54
153
  }, function (props) {
55
- return props.notificationText === true ? props.theme.badgeRadius : props.theme.badgeRadiusWithNotificationNumber;
154
+ return sizeMap[props.size].iconSize;
56
155
  });
57
-
58
- var _default = DxcBadge;
59
- exports["default"] = _default;
156
+ var LabelContainer = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n white-space: nowrap;\n"])), _coreTokens["default"].type_sans, function (props) {
157
+ return sizeMap[props.size].fontSize;
158
+ }, _coreTokens["default"].type_semibold);
159
+ var _default = exports["default"] = DxcBadge;