@dxc-technology/halstack-react 4.0.0 → 6.0.0

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 (354) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +7 -6
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +295 -0
  5. package/accordion/Accordion.d.ts +4 -0
  6. package/accordion/Accordion.js +35 -162
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +68 -0
  10. package/accordion/types.js +5 -0
  11. package/accordion-group/AccordionGroup.d.ts +7 -0
  12. package/accordion-group/AccordionGroup.js +68 -85
  13. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  14. package/accordion-group/AccordionGroup.test.js +151 -0
  15. package/accordion-group/types.d.ts +72 -0
  16. package/accordion-group/types.js +5 -0
  17. package/alert/Alert.d.ts +4 -0
  18. package/alert/Alert.js +43 -153
  19. package/alert/Alert.stories.tsx +170 -0
  20. package/alert/Alert.test.js +92 -0
  21. package/alert/types.d.ts +49 -0
  22. package/alert/types.js +5 -0
  23. package/badge/Badge.d.ts +4 -0
  24. package/badge/Badge.js +15 -17
  25. package/badge/types.d.ts +5 -0
  26. package/badge/types.js +5 -0
  27. package/bleed/Bleed.d.ts +3 -0
  28. package/bleed/Bleed.js +51 -0
  29. package/bleed/Bleed.stories.tsx +341 -0
  30. package/bleed/types.d.ts +37 -0
  31. package/bleed/types.js +5 -0
  32. package/box/Box.d.ts +4 -0
  33. package/box/Box.js +36 -76
  34. package/box/Box.stories.tsx +132 -0
  35. package/box/Box.test.js +18 -0
  36. package/box/types.d.ts +43 -0
  37. package/box/types.js +5 -0
  38. package/bulleted-list/BulletedList.d.ts +7 -0
  39. package/bulleted-list/BulletedList.js +123 -0
  40. package/bulleted-list/BulletedList.stories.tsx +200 -0
  41. package/bulleted-list/types.d.ts +11 -0
  42. package/bulleted-list/types.js +5 -0
  43. package/button/Button.d.ts +4 -0
  44. package/button/Button.js +33 -97
  45. package/button/Button.stories.tsx +274 -0
  46. package/button/Button.test.js +35 -0
  47. package/button/types.d.ts +53 -0
  48. package/button/types.js +5 -0
  49. package/card/Card.d.ts +4 -0
  50. package/card/Card.js +44 -137
  51. package/card/Card.stories.tsx +201 -0
  52. package/card/Card.test.js +50 -0
  53. package/card/ice-cream.jpg +0 -0
  54. package/card/types.d.ts +67 -0
  55. package/card/types.js +5 -0
  56. package/checkbox/Checkbox.d.ts +4 -0
  57. package/checkbox/Checkbox.js +52 -94
  58. package/checkbox/Checkbox.stories.tsx +188 -0
  59. package/checkbox/Checkbox.test.js +78 -0
  60. package/checkbox/types.d.ts +64 -0
  61. package/checkbox/types.js +5 -0
  62. package/chip/Chip.d.ts +4 -0
  63. package/chip/Chip.js +26 -130
  64. package/chip/Chip.stories.tsx +119 -0
  65. package/chip/Chip.test.js +56 -0
  66. package/chip/types.d.ts +45 -0
  67. package/chip/types.js +5 -0
  68. package/common/RequiredComponent.js +3 -11
  69. package/common/variables.js +301 -373
  70. package/date-input/DateInput.d.ts +4 -0
  71. package/date-input/DateInput.js +80 -108
  72. package/date-input/DateInput.stories.tsx +138 -0
  73. package/date-input/DateInput.test.js +479 -0
  74. package/date-input/types.d.ts +107 -0
  75. package/date-input/types.js +5 -0
  76. package/dialog/Dialog.d.ts +4 -0
  77. package/dialog/Dialog.js +25 -105
  78. package/dialog/Dialog.stories.tsx +212 -0
  79. package/dialog/Dialog.test.js +40 -0
  80. package/dialog/types.d.ts +43 -0
  81. package/dialog/types.js +5 -0
  82. package/dropdown/Dropdown.d.ts +4 -0
  83. package/dropdown/Dropdown.js +54 -207
  84. package/dropdown/Dropdown.stories.tsx +249 -0
  85. package/dropdown/Dropdown.test.js +189 -0
  86. package/dropdown/types.d.ts +80 -0
  87. package/dropdown/types.js +5 -0
  88. package/file-input/FileInput.d.ts +4 -0
  89. package/file-input/FileInput.js +200 -251
  90. package/file-input/FileInput.stories.tsx +507 -0
  91. package/file-input/FileInput.test.js +457 -0
  92. package/file-input/FileItem.d.ts +14 -0
  93. package/file-input/FileItem.js +44 -145
  94. package/file-input/types.d.ts +112 -0
  95. package/file-input/types.js +5 -0
  96. package/flex/Flex.d.ts +4 -0
  97. package/flex/Flex.js +57 -0
  98. package/flex/Flex.stories.tsx +103 -0
  99. package/flex/types.d.ts +21 -0
  100. package/flex/types.js +5 -0
  101. package/footer/Footer.d.ts +4 -0
  102. package/footer/Footer.js +50 -286
  103. package/footer/Footer.stories.tsx +130 -0
  104. package/footer/Footer.test.js +109 -0
  105. package/footer/Icons.d.ts +2 -0
  106. package/footer/Icons.js +16 -16
  107. package/footer/types.d.ts +65 -0
  108. package/footer/types.js +5 -0
  109. package/header/Header.d.ts +7 -0
  110. package/header/Header.js +82 -249
  111. package/header/Header.stories.tsx +172 -0
  112. package/header/Header.test.js +79 -0
  113. package/header/Icons.d.ts +2 -0
  114. package/header/Icons.js +7 -32
  115. package/header/types.d.ts +47 -0
  116. package/header/types.js +5 -0
  117. package/heading/Heading.d.ts +4 -0
  118. package/heading/Heading.js +25 -96
  119. package/heading/Heading.stories.tsx +54 -0
  120. package/heading/Heading.test.js +186 -0
  121. package/heading/types.d.ts +33 -0
  122. package/heading/types.js +5 -0
  123. package/inset/Inset.d.ts +3 -0
  124. package/inset/Inset.js +51 -0
  125. package/inset/Inset.stories.tsx +229 -0
  126. package/inset/types.d.ts +37 -0
  127. package/inset/types.js +5 -0
  128. package/layout/ApplicationLayout.d.ts +20 -0
  129. package/layout/ApplicationLayout.js +76 -232
  130. package/layout/ApplicationLayout.stories.tsx +161 -0
  131. package/layout/Icons.d.ts +5 -0
  132. package/layout/Icons.js +19 -8
  133. package/layout/SidenavContext.d.ts +5 -0
  134. package/layout/SidenavContext.js +19 -0
  135. package/layout/types.d.ts +42 -0
  136. package/layout/types.js +5 -0
  137. package/link/Link.d.ts +4 -0
  138. package/link/Link.js +64 -165
  139. package/link/Link.stories.tsx +186 -0
  140. package/link/Link.test.js +83 -0
  141. package/link/types.d.ts +54 -0
  142. package/link/types.js +5 -0
  143. package/main.d.ts +44 -40
  144. package/main.js +114 -104
  145. package/number-input/NumberInput.d.ts +4 -0
  146. package/number-input/NumberInput.js +21 -81
  147. package/number-input/NumberInput.stories.tsx +115 -0
  148. package/number-input/NumberInput.test.js +506 -0
  149. package/number-input/NumberInputContext.d.ts +4 -0
  150. package/number-input/NumberInputContext.js +5 -2
  151. package/number-input/numberInputContextTypes.d.ts +19 -0
  152. package/number-input/numberInputContextTypes.js +5 -0
  153. package/number-input/types.d.ts +124 -0
  154. package/number-input/types.js +5 -0
  155. package/package.json +23 -16
  156. package/paginator/Icons.js +9 -9
  157. package/paginator/Paginator.d.ts +4 -0
  158. package/paginator/Paginator.js +32 -166
  159. package/paginator/Paginator.stories.tsx +63 -0
  160. package/paginator/Paginator.test.js +308 -0
  161. package/paginator/types.d.ts +38 -0
  162. package/paginator/types.js +5 -0
  163. package/paragraph/Paragraph.d.ts +6 -0
  164. package/paragraph/Paragraph.js +38 -0
  165. package/paragraph/Paragraph.stories.tsx +44 -0
  166. package/password-input/PasswordInput.d.ts +4 -0
  167. package/password-input/PasswordInput.js +40 -77
  168. package/password-input/PasswordInput.stories.tsx +131 -0
  169. package/password-input/PasswordInput.test.js +180 -0
  170. package/password-input/types.d.ts +110 -0
  171. package/password-input/types.js +5 -0
  172. package/progress-bar/ProgressBar.d.ts +4 -0
  173. package/progress-bar/ProgressBar.js +23 -95
  174. package/progress-bar/ProgressBar.stories.jsx +58 -0
  175. package/progress-bar/ProgressBar.test.js +65 -0
  176. package/progress-bar/types.d.ts +37 -0
  177. package/progress-bar/types.js +5 -0
  178. package/quick-nav/QuickNav.d.ts +4 -0
  179. package/quick-nav/QuickNav.js +118 -0
  180. package/quick-nav/QuickNav.stories.tsx +264 -0
  181. package/quick-nav/types.d.ts +21 -0
  182. package/quick-nav/types.js +5 -0
  183. package/radio-group/Radio.d.ts +4 -0
  184. package/radio-group/Radio.js +141 -0
  185. package/radio-group/RadioGroup.d.ts +4 -0
  186. package/radio-group/RadioGroup.js +283 -0
  187. package/radio-group/RadioGroup.stories.tsx +100 -0
  188. package/radio-group/RadioGroup.test.js +695 -0
  189. package/radio-group/types.d.ts +114 -0
  190. package/radio-group/types.js +5 -0
  191. package/resultsetTable/ResultsetTable.d.ts +4 -0
  192. package/resultsetTable/ResultsetTable.js +43 -147
  193. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  194. package/resultsetTable/ResultsetTable.test.js +348 -0
  195. package/resultsetTable/types.d.ts +67 -0
  196. package/resultsetTable/types.js +5 -0
  197. package/select/Icons.d.ts +10 -0
  198. package/select/Icons.js +93 -0
  199. package/select/Listbox.d.ts +4 -0
  200. package/select/Listbox.js +175 -0
  201. package/select/Option.d.ts +4 -0
  202. package/select/Option.js +110 -0
  203. package/select/Select.d.ts +4 -0
  204. package/select/Select.js +231 -709
  205. package/select/Select.stories.tsx +626 -0
  206. package/select/Select.test.js +2162 -0
  207. package/select/types.d.ts +212 -0
  208. package/select/types.js +5 -0
  209. package/sidenav/Sidenav.d.ts +10 -0
  210. package/sidenav/Sidenav.js +182 -105
  211. package/sidenav/Sidenav.stories.tsx +180 -0
  212. package/sidenav/Sidenav.test.js +44 -0
  213. package/sidenav/types.d.ts +73 -0
  214. package/sidenav/types.js +5 -0
  215. package/slider/Slider.d.ts +4 -0
  216. package/slider/Slider.js +76 -162
  217. package/slider/Slider.stories.tsx +177 -0
  218. package/slider/Slider.test.js +150 -0
  219. package/slider/types.d.ts +82 -0
  220. package/slider/types.js +5 -0
  221. package/spinner/Spinner.d.ts +4 -0
  222. package/spinner/Spinner.js +46 -177
  223. package/spinner/Spinner.stories.jsx +103 -0
  224. package/spinner/Spinner.test.js +64 -0
  225. package/spinner/types.d.ts +32 -0
  226. package/spinner/types.js +5 -0
  227. package/switch/Switch.d.ts +4 -0
  228. package/switch/Switch.js +55 -82
  229. package/switch/Switch.stories.tsx +160 -0
  230. package/switch/Switch.test.js +98 -0
  231. package/switch/types.d.ts +62 -0
  232. package/switch/types.js +5 -0
  233. package/table/Table.d.ts +4 -0
  234. package/table/Table.js +12 -26
  235. package/table/Table.stories.jsx +277 -0
  236. package/table/Table.test.js +26 -0
  237. package/table/types.d.ts +21 -0
  238. package/table/types.js +5 -0
  239. package/tabs/Tabs.d.ts +4 -0
  240. package/tabs/Tabs.js +43 -175
  241. package/tabs/Tabs.stories.tsx +112 -0
  242. package/tabs/Tabs.test.js +140 -0
  243. package/tabs/types.d.ts +82 -0
  244. package/tabs/types.js +5 -0
  245. package/tabs-nav/NavTabs.d.ts +8 -0
  246. package/tabs-nav/NavTabs.js +125 -0
  247. package/tabs-nav/NavTabs.stories.tsx +170 -0
  248. package/tabs-nav/NavTabs.test.js +82 -0
  249. package/tabs-nav/Tab.d.ts +4 -0
  250. package/tabs-nav/Tab.js +132 -0
  251. package/tabs-nav/types.d.ts +53 -0
  252. package/tabs-nav/types.js +5 -0
  253. package/tag/Tag.d.ts +4 -0
  254. package/tag/Tag.js +44 -143
  255. package/tag/Tag.stories.tsx +142 -0
  256. package/tag/Tag.test.js +60 -0
  257. package/tag/types.d.ts +69 -0
  258. package/tag/types.js +5 -0
  259. package/text-input/Suggestion.d.ts +4 -0
  260. package/text-input/Suggestion.js +55 -0
  261. package/text-input/TextInput.d.ts +4 -0
  262. package/text-input/TextInput.js +169 -391
  263. package/text-input/TextInput.stories.tsx +474 -0
  264. package/text-input/TextInput.test.js +1712 -0
  265. package/text-input/types.d.ts +178 -0
  266. package/text-input/types.js +5 -0
  267. package/textarea/Textarea.d.ts +4 -0
  268. package/textarea/Textarea.js +50 -142
  269. package/textarea/Textarea.stories.jsx +157 -0
  270. package/textarea/Textarea.test.js +437 -0
  271. package/textarea/types.d.ts +137 -0
  272. package/textarea/types.js +5 -0
  273. package/toggle-group/ToggleGroup.d.ts +4 -0
  274. package/toggle-group/ToggleGroup.js +36 -148
  275. package/toggle-group/ToggleGroup.stories.tsx +173 -0
  276. package/toggle-group/ToggleGroup.test.js +156 -0
  277. package/toggle-group/types.d.ts +105 -0
  278. package/toggle-group/types.js +5 -0
  279. package/typography/Typography.d.ts +4 -0
  280. package/typography/Typography.js +131 -0
  281. package/typography/Typography.stories.tsx +198 -0
  282. package/typography/types.d.ts +18 -0
  283. package/typography/types.js +5 -0
  284. package/useTheme.d.ts +2 -0
  285. package/useTheme.js +2 -2
  286. package/useTranslatedLabels.d.ts +2 -0
  287. package/useTranslatedLabels.js +20 -0
  288. package/wizard/Wizard.d.ts +4 -0
  289. package/wizard/Wizard.js +132 -252
  290. package/wizard/Wizard.stories.tsx +233 -0
  291. package/wizard/Wizard.test.js +141 -0
  292. package/wizard/types.d.ts +65 -0
  293. package/wizard/types.js +5 -0
  294. package/ThemeContext.js +0 -250
  295. package/V3Select/V3Select.js +0 -549
  296. package/V3Select/index.d.ts +0 -27
  297. package/V3Textarea/V3Textarea.js +0 -264
  298. package/V3Textarea/index.d.ts +0 -27
  299. package/accordion/index.d.ts +0 -28
  300. package/accordion-group/index.d.ts +0 -16
  301. package/alert/index.d.ts +0 -51
  302. package/box/index.d.ts +0 -25
  303. package/button/Button.stories.js +0 -27
  304. package/button/index.d.ts +0 -24
  305. package/card/index.d.ts +0 -22
  306. package/checkbox/index.d.ts +0 -24
  307. package/chip/index.d.ts +0 -22
  308. package/date/Date.js +0 -379
  309. package/date/index.d.ts +0 -27
  310. package/date-input/index.d.ts +0 -95
  311. package/dialog/index.d.ts +0 -18
  312. package/dropdown/index.d.ts +0 -26
  313. package/file-input/index.d.ts +0 -81
  314. package/footer/index.d.ts +0 -25
  315. package/header/index.d.ts +0 -25
  316. package/heading/index.d.ts +0 -17
  317. package/input-text/Icons.js +0 -22
  318. package/input-text/InputText.js +0 -705
  319. package/input-text/index.d.ts +0 -36
  320. package/link/index.d.ts +0 -23
  321. package/number-input/index.d.ts +0 -113
  322. package/paginator/index.d.ts +0 -20
  323. package/password-input/index.d.ts +0 -94
  324. package/progress-bar/index.d.ts +0 -18
  325. package/radio/Radio.js +0 -209
  326. package/radio/index.d.ts +0 -23
  327. package/resultsetTable/index.d.ts +0 -19
  328. package/select/index.d.ts +0 -131
  329. package/sidenav/index.d.ts +0 -13
  330. package/slider/index.d.ts +0 -29
  331. package/spinner/index.d.ts +0 -17
  332. package/switch/index.d.ts +0 -24
  333. package/table/index.d.ts +0 -13
  334. package/tabs/index.d.ts +0 -19
  335. package/tag/index.d.ts +0 -24
  336. package/text-input/index.d.ts +0 -135
  337. package/textarea/index.d.ts +0 -117
  338. package/toggle/Toggle.js +0 -220
  339. package/toggle/index.d.ts +0 -21
  340. package/toggle-group/index.d.ts +0 -21
  341. package/upload/Upload.js +0 -205
  342. package/upload/buttons-upload/ButtonsUpload.js +0 -135
  343. package/upload/buttons-upload/Icons.js +0 -40
  344. package/upload/dragAndDropArea/DragAndDropArea.js +0 -329
  345. package/upload/dragAndDropArea/Icons.js +0 -39
  346. package/upload/file-upload/FileToUpload.js +0 -189
  347. package/upload/file-upload/Icons.js +0 -66
  348. package/upload/files-upload/FilesToUpload.js +0 -123
  349. package/upload/index.d.ts +0 -15
  350. package/upload/transaction/Icons.js +0 -160
  351. package/upload/transaction/Transaction.js +0 -148
  352. package/upload/transactions/Transactions.js +0 -138
  353. package/wizard/Icons.js +0 -65
  354. package/wizard/index.d.ts +0 -18
@@ -0,0 +1,42 @@
1
+ /// <reference types="react" />
2
+ declare type ChildrenType = AppLayoutMainPropsType | AppLayoutSidenavPropsType;
3
+ export declare type AppLayoutMainPropsType = {
4
+ /**
5
+ * Everything between the tags will be displayed as the content of the main part of the application.
6
+ */
7
+ children: React.ReactNode;
8
+ };
9
+ export declare type AppLayoutSidenavPropsType = {
10
+ /**
11
+ * The area inside the sidenav. This area can be used to render the content inside the sidenav.
12
+ */
13
+ children: React.ReactNode;
14
+ /**
15
+ * The area assigned to render the sidenav title. It is highly recommended to use the sidenav title.
16
+ */
17
+ title?: React.ReactNode;
18
+ };
19
+ declare type AppLayoutPropsType = {
20
+ /**
21
+ * Text to be placed next to the hamburger button that toggles the
22
+ * visibility of the sidenav.
23
+ */
24
+ visibilityToggleLabel?: string;
25
+ /**
26
+ * Header content.
27
+ */
28
+ header?: React.ReactNode;
29
+ /**
30
+ * Sidenav content
31
+ */
32
+ sidenav?: React.ReactNode;
33
+ /**
34
+ * Footer content
35
+ */
36
+ footer?: React.ReactNode;
37
+ /**
38
+ * The area inside the sidenav. This area can be used to render custom content.
39
+ */
40
+ children: React.ReactElement<ChildrenType> | React.ReactElement<ChildrenType>[];
41
+ };
42
+ export default AppLayoutPropsType;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/link/Link.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { LinkProps } from "./types";
3
+ declare const DxcLink: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>>;
4
+ export default DxcLink;
package/link/Link.js CHANGED
@@ -1,141 +1,88 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
5
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
6
+
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
14
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
15
 
16
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
16
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
17
 
18
- var _react = _interopRequireDefault(require("react"));
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
19
 
20
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
20
+ var _react = _interopRequireWildcard(require("react"));
21
21
 
22
- var _propTypes = _interopRequireDefault(require("prop-types"));
22
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
23
 
24
24
  var _variables = require("../common/variables.js");
25
25
 
26
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
27
-
28
- function _templateObject6() {
29
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n ", ";\n overflow: hidden;\n \n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"]);
30
-
31
- _templateObject6 = function _templateObject6() {
32
- return data;
33
- };
34
-
35
- return data;
36
- }
37
-
38
- function _templateObject5() {
39
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n ", ";\n"]);
40
-
41
- _templateObject5 = function _templateObject5() {
42
- return data;
43
- };
44
-
45
- return data;
46
- }
47
-
48
- function _templateObject4() {
49
- var data = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n font-weight: ", ";\n font-style: ", ";\n font-family: ", ";\n display: inline-flex;\n flex-direction: ", ";\n justify-content: ", ";\n align-items: center;\n max-width: 100%;\n"]);
50
-
51
- _templateObject4 = function _templateObject4() {
52
- return data;
53
- };
54
-
55
- return data;
56
- }
57
-
58
- function _templateObject3() {
59
- var data = (0, _taggedTemplateLiteral2["default"])(["\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font-family: inherit;\n text-decoration-color: transparent;\n\n ", "\n ", "\n color: ", ";\n ", "\n\n &:hover {\n ", "\n }\n &:focus {\n outline-color: ", ";\n outline-width: 2px;\n outline-offset: 1px;\n ", "\n }\n &:active {\n ", "\n }\n"]);
60
-
61
- _templateObject3 = function _templateObject3() {
62
- return data;
63
- };
64
-
65
- return data;
66
- }
26
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
67
27
 
68
- function _templateObject2() {
69
- var data = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n\n text-decoration-color: transparent;\n ", "\n\n &:visited {\n color: ", ";\n &:hover {\n ", "\n }\n }\n &:hover {\n ", "\n }\n &:focus {\n outline-color: ", ";\n outline-width: 2px;\n ", "\n }\n &:active {\n ", "\n }\n"]);
28
+ var _templateObject, _templateObject2, _templateObject3;
70
29
 
71
- _templateObject2 = function _templateObject2() {
72
- return data;
73
- };
30
+ var _excluded = ["inheritColor", "disabled", "icon", "iconPosition", "href", "newWindow", "onClick", "margin", "tabIndex", "children"];
74
31
 
75
- return data;
76
- }
32
+ 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); }
77
33
 
78
- function _templateObject() {
79
- var data = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"]);
34
+ 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; }
80
35
 
81
- _templateObject = function _templateObject() {
82
- return data;
83
- };
84
-
85
- return data;
86
- }
87
-
88
- var DxcLink = function DxcLink(_ref) {
89
- var _ref$inheritColor = _ref.inheritColor,
90
- inheritColor = _ref$inheritColor === void 0 ? false : _ref$inheritColor,
91
- _ref$disabled = _ref.disabled,
92
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
93
- iconSrc = _ref.iconSrc,
36
+ var LinkContent = /*#__PURE__*/_react["default"].memo(function (_ref) {
37
+ var iconPosition = _ref.iconPosition,
94
38
  icon = _ref.icon,
95
- _ref$iconPosition = _ref.iconPosition,
96
- iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
97
- _ref$href = _ref.href,
98
- href = _ref$href === void 0 ? "" : _ref$href,
99
- _ref$newWindow = _ref.newWindow,
100
- newWindow = _ref$newWindow === void 0 ? false : _ref$newWindow,
101
- onClick = _ref.onClick,
102
- _ref$text = _ref.text,
103
- text = _ref$text === void 0 ? "" : _ref$text,
104
- margin = _ref.margin,
105
- _ref$tabIndex = _ref.tabIndex,
106
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
107
- var colorsTheme = (0, _useTheme["default"])();
108
-
109
- var linkContent = _react["default"].createElement(LinkText, {
110
- iconPosition: iconPosition
111
- }, text, icon ? _react["default"].createElement(LinkIconContainer, {
39
+ children = _ref.children;
40
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, iconPosition === "after" && children, icon && /*#__PURE__*/_react["default"].createElement(LinkIconContainer, {
112
41
  iconPosition: iconPosition
113
- }, (0, _typeof2["default"])(icon) === "object" ? icon : _react["default"].createElement(icon)) : iconSrc && _react["default"].createElement(LinkIcon, {
114
- src: iconSrc,
115
- iconPosition: iconPosition
116
- }));
42
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(LinkIcon, {
43
+ src: icon
44
+ }) : icon), iconPosition === "before" && children);
45
+ });
117
46
 
118
- return _react["default"].createElement(_styledComponents.ThemeProvider, {
47
+ var DxcLink = /*#__PURE__*/(0, _react.forwardRef)(function (_ref2, ref) {
48
+ var _ref2$inheritColor = _ref2.inheritColor,
49
+ inheritColor = _ref2$inheritColor === void 0 ? false : _ref2$inheritColor,
50
+ _ref2$disabled = _ref2.disabled,
51
+ disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
52
+ icon = _ref2.icon,
53
+ _ref2$iconPosition = _ref2.iconPosition,
54
+ iconPosition = _ref2$iconPosition === void 0 ? "before" : _ref2$iconPosition,
55
+ _ref2$href = _ref2.href,
56
+ href = _ref2$href === void 0 ? "" : _ref2$href,
57
+ _ref2$newWindow = _ref2.newWindow,
58
+ newWindow = _ref2$newWindow === void 0 ? false : _ref2$newWindow,
59
+ onClick = _ref2.onClick,
60
+ margin = _ref2.margin,
61
+ _ref2$tabIndex = _ref2.tabIndex,
62
+ tabIndex = _ref2$tabIndex === void 0 ? 0 : _ref2$tabIndex,
63
+ children = _ref2.children,
64
+ otherProps = (0, _objectWithoutProperties2["default"])(_ref2, _excluded);
65
+ var colorsTheme = (0, _useTheme["default"])();
66
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
119
67
  theme: colorsTheme.link
120
- }, _react["default"].createElement(DxcLinkContainer, {
121
- margin: margin
122
- }, onClick ? _react["default"].createElement(StyledButton, {
123
- type: "button",
68
+ }, /*#__PURE__*/_react["default"].createElement(StyledLink, (0, _extends2["default"])({
69
+ as: href ? "a" : "button",
70
+ tabIndex: tabIndex,
124
71
  onClick: !disabled && onClick,
125
- margin: margin,
72
+ href: !disabled && href ? href : undefined,
73
+ target: href ? newWindow ? "_blank" : "_self" : undefined,
126
74
  disabled: disabled,
127
- inheritColor: inheritColor
128
- }, linkContent) : _react["default"].createElement(StyledLink, {
129
- tabIndex: tabIndex,
130
- href: !disabled && href,
131
- target: newWindow ? "_blank" : "_self",
75
+ inheritColor: inheritColor,
132
76
  margin: margin,
133
- disabled: disabled,
134
- inheritColor: inheritColor
135
- }, linkContent)));
136
- };
77
+ ref: ref
78
+ }, otherProps), /*#__PURE__*/_react["default"].createElement(LinkContent, {
79
+ iconPosition: iconPosition,
80
+ icon: icon,
81
+ children: children
82
+ })));
83
+ });
137
84
 
138
- var DxcLinkContainer = _styledComponents["default"].div(_templateObject(), function (props) {
85
+ var StyledLink = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n font-size: ", ";\n font-weight: ", ";\n font-style: ", ";\n font-family: ", ";\n text-decoration-color: transparent;\n width: fit-content;\n\n ", "\n ", "\n color: ", ";\n ", "\n\n &:visited {\n color: ", ";\n &:hover {\n ", "\n }\n }\n &:hover {\n ", "\n }\n &:focus {\n border-radius: 2px;\n outline: 2px solid ", ";\n ", "\n }\n &:active {\n ", "\n }\n"])), function (props) {
139
86
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
140
87
  }, function (props) {
141
88
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
@@ -145,29 +92,15 @@ var DxcLinkContainer = _styledComponents["default"].div(_templateObject(), funct
145
92
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
146
93
  }, function (props) {
147
94
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
148
- });
149
-
150
- var StyledLink = _styledComponents["default"].a(_templateObject2(), function (props) {
151
- return props.inheritColor ? "inherit" : !props.disabled ? props.theme.fontColor : props.theme.disabledColor;
152
- }, function (props) {
153
- return props.disabled ? "pointer-events: none;" : "";
154
- }, function (props) {
155
- return "padding-bottom: ".concat(props.theme.underlineSpacing, ";\n border-bottom: ").concat(props.theme.underlineThickness, " ").concat(props.theme.underlineStyle, " transparent;");
156
95
  }, function (props) {
157
- return !props.inheritColor ? props.theme.visitedFontColor : "";
158
- }, function (props) {
159
- return "color: ".concat(props.theme.visitedFontColor, ";\n border-bottom-color: ").concat(props.theme.visitedUnderlineColor, ";");
96
+ return props.theme.fontSize;
160
97
  }, function (props) {
161
- return "color: ".concat(props.theme.hoverFontColor, ";\n border-bottom-color: ").concat(props.theme.hoverUnderlineColor, ";\n cursor: pointer;");
98
+ return props.theme.fontWeight;
162
99
  }, function (props) {
163
- return props.theme.focusColor;
100
+ return props.theme.fontStyle;
164
101
  }, function (props) {
165
- return props.disabled && "outline: none";
102
+ return props.theme.fontFamily;
166
103
  }, function (props) {
167
- return "color: ".concat(props.theme.activeFontColor, " !important;\n border-bottom-color: ").concat(props.theme.activeUnderlineColor, " !important;");
168
- });
169
-
170
- var StyledButton = _styledComponents["default"].button(_templateObject3(), function (props) {
171
104
  return "padding-bottom: ".concat(props.theme.underlineSpacing, ";\n border-bottom: ").concat(props.theme.underlineThickness, " ").concat(props.theme.underlineStyle, " transparent;");
172
105
  }, function (props) {
173
106
  return props.disabled && "cursor: default;";
@@ -175,6 +108,10 @@ var StyledButton = _styledComponents["default"].button(_templateObject3(), funct
175
108
  return props.inheritColor ? "inherit" : !props.disabled ? props.theme.fontColor : props.theme.disabledColor;
176
109
  }, function (props) {
177
110
  return props.disabled ? "pointer-events: none;" : "";
111
+ }, function (props) {
112
+ return !props.inheritColor && !props.disabled ? props.theme.visitedFontColor : "";
113
+ }, function (props) {
114
+ return "color: ".concat(props.theme.visitedFontColor, ";\n border-bottom-color: ").concat(props.theme.visitedUnderlineColor, ";");
178
115
  }, function (props) {
179
116
  return "color: ".concat(props.theme.hoverFontColor, ";\n border-bottom-color: ").concat(props.theme.hoverUnderlineColor, ";\n cursor: pointer;");
180
117
  }, function (props) {
@@ -185,29 +122,9 @@ var StyledButton = _styledComponents["default"].button(_templateObject3(), funct
185
122
  return "color: ".concat(props.theme.activeFontColor, " !important;\n border-bottom-color: ").concat(props.theme.activeUnderlineColor, " !important;");
186
123
  });
187
124
 
188
- var LinkText = _styledComponents["default"].div(_templateObject4(), function (props) {
189
- return props.theme.fontSize;
190
- }, function (props) {
191
- return props.theme.fontWeight;
192
- }, function (props) {
193
- return props.theme.fontStyle;
194
- }, function (props) {
195
- return props.theme.fontFamily;
196
- }, function (props) {
197
- return props.iconPosition === "after" ? "row" : "row-reverse";
198
- }, function (props) {
199
- return props.iconPosition === "after" ? "flex-start" : "flex-end";
200
- });
201
-
202
- var LinkIcon = _styledComponents["default"].img(_templateObject5(), function (props) {
203
- return props.theme.iconSize;
204
- }, function (props) {
205
- return props.theme.iconSize;
206
- }, function (props) {
207
- return "".concat(props.iconPosition === "before" ? "margin-right" : "margin-left", ": ").concat(props.theme.iconSpacing);
208
- });
125
+ var LinkIcon = _styledComponents["default"].img(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])([""])));
209
126
 
210
- var LinkIconContainer = _styledComponents["default"].div(_templateObject6(), function (props) {
127
+ var LinkIconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n ", ";\n overflow: hidden;\n align-self: center;\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
211
128
  return props.theme.iconSize;
212
129
  }, function (props) {
213
130
  return props.theme.iconSize;
@@ -215,23 +132,5 @@ var LinkIconContainer = _styledComponents["default"].div(_templateObject6(), fun
215
132
  return "".concat(props.iconPosition === "before" ? "margin-right" : "margin-left", ": ").concat(props.theme.iconSpacing);
216
133
  });
217
134
 
218
- DxcLink.propTypes = {
219
- inheritColor: _propTypes["default"].bool,
220
- disabled: _propTypes["default"].bool,
221
- icon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
222
- iconSrc: _propTypes["default"].string,
223
- iconPosition: _propTypes["default"].oneOf(["after", "before"]),
224
- href: _propTypes["default"].string,
225
- onClick: _propTypes["default"].func,
226
- margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
227
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
228
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
229
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
230
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
231
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
232
- newWindow: _propTypes["default"].bool,
233
- text: _propTypes["default"].string,
234
- tabIndex: _propTypes["default"].number
235
- };
236
135
  var _default = DxcLink;
237
136
  exports["default"] = _default;
@@ -0,0 +1,186 @@
1
+ import React from "react";
2
+ import DxcLink from "./Link";
3
+ import Title from "../../.storybook/components/Title";
4
+ import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
+
6
+ export default {
7
+ title: "Link",
8
+ component: DxcLink,
9
+ };
10
+
11
+ const icon = (
12
+ <svg viewBox="0 0 24 24" enableBackground="new 0 0 24 24" fill="currentColor">
13
+ <g id="Bounding_Box">
14
+ <rect fill="none" width="24" height="24" />
15
+ </g>
16
+ <g id="Master">
17
+ <path d="M19,9.3V4h-3v2.6L12,3L2,12h3v8h5v-6h4v6h5v-8h3L19,9.3z M10,10c0-1.1,0.9-2,2-2s2,0.9,2,2H10z" />
18
+ </g>
19
+ </svg>
20
+ );
21
+
22
+ export const Chromatic = () => (
23
+ <>
24
+ <Title title="With anchor" theme="light" level={2} />
25
+ <ExampleContainer>
26
+ <Title title="Disabled" theme="light" level={4} />
27
+ <DxcLink disabled>Test</DxcLink>
28
+ <Title title="Icon before" theme="light" level={4} />
29
+ <DxcLink href="https://www.google.com" icon={icon} iconPosition="before">
30
+ Test
31
+ </DxcLink>
32
+ <Title title="Icon after" theme="light" level={4} />
33
+ <DxcLink
34
+ href="https://www.youtube.com/"
35
+ icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png"
36
+ iconPosition="after"
37
+ >
38
+ Test
39
+ </DxcLink>
40
+ </ExampleContainer>
41
+ <ExampleContainer pseudoState="pseudo-hover">
42
+ <Title title="With link hovered" theme="light" level={4} />
43
+ <DxcLink href="https://www.dxc.com">Test</DxcLink>
44
+ </ExampleContainer>
45
+ <ExampleContainer pseudoState="pseudo-focus">
46
+ <Title title="With link focused" theme="light" level={4} />
47
+ <DxcLink href="https://www.dxc.com">Test</DxcLink>
48
+ </ExampleContainer>
49
+ <ExampleContainer pseudoState="pseudo-active">
50
+ <Title title="With link active" theme="light" level={4} />
51
+ <DxcLink href="https://www.dxc.com">Test</DxcLink>
52
+ </ExampleContainer>
53
+ <ExampleContainer pseudoState="pseudo-visited">
54
+ <Title title="With link visited" theme="light" level={4} />
55
+ <DxcLink href="https://www.amazon.com">Test</DxcLink>
56
+ </ExampleContainer>
57
+ <ExampleContainer>
58
+ <Title title="Inherit color" theme="light" level={4} />
59
+ This is a <DxcLink inheritColor>Test</DxcLink>.
60
+ </ExampleContainer>
61
+ <ExampleContainer pseudoState="pseudo-focus">
62
+ <Title title="With brackets and focus" theme="light" level={4} />
63
+ This is a (
64
+ <DxcLink inheritColor href="https://www.google.com">
65
+ Test
66
+ </DxcLink>
67
+ ).
68
+ </ExampleContainer>
69
+ <ExampleContainer pseudoState="pseudo-hover">
70
+ <Title title="Long text with hover" theme="light" level={4} />
71
+ Lorem <DxcLink href="https://www.google.com">Test</DxcLink> ipsum dolor sit amet, consectetur adipiscing elit, sed
72
+ do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
73
+ ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
74
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
75
+ officia deserunt mollit anim id est laborum.
76
+ </ExampleContainer>
77
+ <ExampleContainer pseudoState="pseudo-focus">
78
+ <Title title="Long text with focus" theme="light" level={4} />
79
+ Lorem <DxcLink href="https://www.google.com">Test</DxcLink> ipsum dolor sit amet, consectetur adipiscing elit, sed
80
+ do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation
81
+ ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
82
+ esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
83
+ officia deserunt mollit anim id est laborum.
84
+ </ExampleContainer>
85
+ <Title title="With button" theme="light" level={2} />
86
+ <ExampleContainer>
87
+ <Title title="Disabled" theme="light" level={4} />
88
+ <DxcLink onClick={() => {}} disabled>
89
+ Test
90
+ </DxcLink>
91
+ <Title title="Icon before" theme="light" level={4} />
92
+ <DxcLink onClick={() => {}} icon={icon} iconPosition="before">
93
+ Test
94
+ </DxcLink>
95
+ <Title title="Icon after" theme="light" level={4} />
96
+ <DxcLink onClick={() => {}} icon={icon} iconPosition="after">
97
+ Test
98
+ </DxcLink>
99
+ </ExampleContainer>
100
+ <ExampleContainer pseudoState="pseudo-hover">
101
+ <Title title="With link hovered" theme="light" level={4} />
102
+ <DxcLink onClick={() => {}}>Test</DxcLink>
103
+ </ExampleContainer>
104
+ <ExampleContainer pseudoState="pseudo-focus">
105
+ <Title title="With link focused" theme="light" level={4} />
106
+ <DxcLink onClick={() => {}}>Test</DxcLink>
107
+ </ExampleContainer>
108
+ <ExampleContainer pseudoState="pseudo-active">
109
+ <Title title="With link active" theme="light" level={4} />
110
+ <DxcLink onClick={() => {}}>Test</DxcLink>
111
+ </ExampleContainer>
112
+ <ExampleContainer pseudoState="pseudo-visited">
113
+ <Title title="With link visited" theme="light" level={4} />
114
+ <DxcLink onClick={() => {}}>Test</DxcLink>
115
+ </ExampleContainer>
116
+ <ExampleContainer>
117
+ <Title title="Inherit color" theme="light" level={4} />
118
+ This is a{" "}
119
+ <DxcLink onClick={() => {}} inheritColor>
120
+ Test
121
+ </DxcLink>
122
+ .
123
+ </ExampleContainer>
124
+ <ExampleContainer pseudoState="pseudo-focus">
125
+ <Title title="With brackets and focus" theme="light" level={4} />
126
+ This is a (
127
+ <DxcLink onClick={() => {}} inheritColor>
128
+ Test
129
+ </DxcLink>
130
+ ).
131
+ </ExampleContainer>
132
+ <ExampleContainer pseudoState="pseudo-hover">
133
+ <Title title="Long text with hover" theme="light" level={4} />
134
+ Lorem{" "}
135
+ <DxcLink onClick={() => {}} href="https://www.google.com">
136
+ Test
137
+ </DxcLink>{" "}
138
+ ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
139
+ aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
140
+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
141
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
142
+ </ExampleContainer>
143
+ <ExampleContainer pseudoState="pseudo-focus">
144
+ <Title title="Long text with focus" theme="light" level={4} />
145
+ Lorem{" "}
146
+ <DxcLink onClick={() => {}} href="https://www.google.com">
147
+ Test
148
+ </DxcLink>{" "}
149
+ ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
150
+ aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
151
+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
152
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
153
+ </ExampleContainer>
154
+ <Title title="Margins" theme="light" level={2} />
155
+ <ExampleContainer>
156
+ <Title title="Xxsmall margin" theme="light" level={4} />
157
+ <DxcLink margin="xxsmall" href="https://www.facebook.com/">
158
+ Test
159
+ </DxcLink>
160
+ <Title title="Xsmall margin" theme="light" level={4} />
161
+ <DxcLink margin="xsmall" href="https://www.linkedin.com/">
162
+ Test
163
+ </DxcLink>
164
+ <Title title="Small margin" theme="light" level={4} />
165
+ <DxcLink margin="small" href="https://www.linkedin.com/">
166
+ Test
167
+ </DxcLink>
168
+ <Title title="Medium margin" theme="light" level={4} />
169
+ <DxcLink margin="medium" href="https://www.linkedin.com/">
170
+ Test
171
+ </DxcLink>
172
+ <Title title="Large margin" theme="light" level={4} />
173
+ <DxcLink margin="large" href="https://www.linkedin.com/">
174
+ Test
175
+ </DxcLink>
176
+ <Title title="Xlarge margin" theme="light" level={4} />
177
+ <DxcLink margin="xlarge" href="https://www.linkedin.com/">
178
+ Test
179
+ </DxcLink>
180
+ <Title title="Xxlarge margin" theme="light" level={4} />
181
+ <DxcLink margin="xxlarge" href="https://www.linkedin.com/">
182
+ Test
183
+ </DxcLink>
184
+ </ExampleContainer>
185
+ </>
186
+ );
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@testing-library/react");
8
+
9
+ var _Link = _interopRequireDefault(require("./Link"));
10
+
11
+ describe("Link component tests", function () {
12
+ test("Link renders with correct text", function () {
13
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Link["default"], null, "Link")),
14
+ getByText = _render.getByText;
15
+
16
+ expect(getByText("Link")).toBeTruthy();
17
+ });
18
+ test("Link renders with correct href", function () {
19
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Link["default"], {
20
+ href: "/testPage"
21
+ }, "Link")),
22
+ getByRole = _render2.getByRole;
23
+
24
+ expect(getByRole("link").getAttribute("href")).toEqual("/testPage");
25
+ });
26
+ test("Link renders with correct disabled state", function () {
27
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Link["default"], {
28
+ href: "/testPage",
29
+ disabled: true
30
+ }, "Link")),
31
+ getByText = _render3.getByText;
32
+
33
+ expect(getByText("Link").hasAttribute("href")).toBeFalsy();
34
+
35
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Link["default"], {
36
+ onClick: function onClick() {
37
+ return console.log("Andorra");
38
+ },
39
+ disabled: true
40
+ }, "LinkButton")),
41
+ getByTextLinkButton = _render4.getByText;
42
+
43
+ expect(getByTextLinkButton("LinkButton").hasAttribute("onclick")).toBeFalsy();
44
+ });
45
+ test("Link open new tab", function () {
46
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Link["default"], {
47
+ href: "/testPage",
48
+ newWindow: true
49
+ }, "Link")),
50
+ getByRole = _render5.getByRole;
51
+
52
+ expect(getByRole("link").getAttribute("target")).toEqual("_blank");
53
+ });
54
+ test("Link onClick called", function () {
55
+ var onClick = jest.fn();
56
+
57
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Link["default"], {
58
+ onClick: onClick
59
+ }, "Link")),
60
+ getByText = _render6.getByText;
61
+
62
+ var link = getByText("Link");
63
+
64
+ _react2.fireEvent.click(link);
65
+
66
+ expect(onClick).toHaveBeenCalled();
67
+ });
68
+ test("Disabled link onClick not called", function () {
69
+ var onClick = jest.fn();
70
+
71
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Link["default"], {
72
+ onClick: onClick,
73
+ disabled: true
74
+ }, "Link")),
75
+ getByText = _render7.getByText;
76
+
77
+ var link = getByText("Link");
78
+
79
+ _react2.fireEvent.click(link);
80
+
81
+ expect(onClick).toHaveBeenCalledTimes(0);
82
+ });
83
+ });