@dxc-technology/halstack-react 0.0.0-da90bf9 → 0.0.0-dcd93c4

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 (359) 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/button/Button.d.ts +4 -0
  39. package/button/Button.js +33 -97
  40. package/button/Button.stories.tsx +274 -0
  41. package/button/Button.test.js +35 -0
  42. package/button/types.d.ts +53 -0
  43. package/button/types.js +5 -0
  44. package/card/Card.d.ts +4 -0
  45. package/card/Card.js +44 -137
  46. package/card/Card.stories.tsx +201 -0
  47. package/card/Card.test.js +50 -0
  48. package/card/ice-cream.jpg +0 -0
  49. package/card/types.d.ts +67 -0
  50. package/card/types.js +5 -0
  51. package/checkbox/Checkbox.d.ts +4 -0
  52. package/checkbox/Checkbox.js +52 -94
  53. package/checkbox/Checkbox.stories.tsx +188 -0
  54. package/checkbox/Checkbox.test.js +78 -0
  55. package/checkbox/types.d.ts +64 -0
  56. package/checkbox/types.js +5 -0
  57. package/chip/Chip.d.ts +4 -0
  58. package/chip/Chip.js +26 -130
  59. package/chip/Chip.stories.tsx +119 -0
  60. package/chip/Chip.test.js +56 -0
  61. package/chip/types.d.ts +45 -0
  62. package/chip/types.js +5 -0
  63. package/common/RequiredComponent.js +3 -11
  64. package/common/variables.js +291 -387
  65. package/date-input/DateInput.d.ts +4 -0
  66. package/date-input/DateInput.js +80 -108
  67. package/date-input/DateInput.stories.tsx +138 -0
  68. package/date-input/DateInput.test.js +479 -0
  69. package/date-input/types.d.ts +107 -0
  70. package/date-input/types.js +5 -0
  71. package/dialog/Dialog.d.ts +4 -0
  72. package/dialog/Dialog.js +25 -105
  73. package/dialog/Dialog.stories.tsx +212 -0
  74. package/dialog/Dialog.test.js +40 -0
  75. package/dialog/types.d.ts +43 -0
  76. package/dialog/types.js +5 -0
  77. package/dropdown/Dropdown.d.ts +4 -0
  78. package/dropdown/Dropdown.js +54 -207
  79. package/dropdown/Dropdown.stories.tsx +249 -0
  80. package/dropdown/Dropdown.test.js +189 -0
  81. package/dropdown/types.d.ts +80 -0
  82. package/dropdown/types.js +5 -0
  83. package/file-input/FileInput.d.ts +4 -0
  84. package/file-input/FileInput.js +200 -251
  85. package/file-input/FileInput.stories.tsx +507 -0
  86. package/file-input/FileInput.test.js +457 -0
  87. package/file-input/FileItem.d.ts +14 -0
  88. package/file-input/FileItem.js +44 -145
  89. package/file-input/types.d.ts +112 -0
  90. package/file-input/types.js +5 -0
  91. package/footer/Footer.d.ts +4 -0
  92. package/footer/Footer.js +50 -286
  93. package/footer/Footer.stories.tsx +130 -0
  94. package/footer/Footer.test.js +109 -0
  95. package/footer/Icons.d.ts +2 -0
  96. package/footer/Icons.js +16 -16
  97. package/footer/types.d.ts +65 -0
  98. package/footer/types.js +5 -0
  99. package/header/Header.d.ts +7 -0
  100. package/header/Header.js +82 -249
  101. package/header/Header.stories.tsx +172 -0
  102. package/header/Header.test.js +79 -0
  103. package/header/Icons.d.ts +2 -0
  104. package/header/Icons.js +7 -32
  105. package/header/types.d.ts +47 -0
  106. package/header/types.js +5 -0
  107. package/heading/Heading.d.ts +4 -0
  108. package/heading/Heading.js +25 -96
  109. package/heading/Heading.stories.tsx +54 -0
  110. package/heading/Heading.test.js +186 -0
  111. package/heading/types.d.ts +33 -0
  112. package/heading/types.js +5 -0
  113. package/inline/Inline.d.ts +4 -0
  114. package/inline/Inline.js +60 -0
  115. package/inline/Inline.stories.tsx +319 -0
  116. package/inline/types.d.ts +36 -0
  117. package/inline/types.js +5 -0
  118. package/inset/Inset.d.ts +3 -0
  119. package/inset/Inset.js +51 -0
  120. package/inset/Inset.stories.tsx +229 -0
  121. package/inset/types.d.ts +37 -0
  122. package/inset/types.js +5 -0
  123. package/layout/ApplicationLayout.d.ts +11 -0
  124. package/layout/ApplicationLayout.js +90 -218
  125. package/layout/ApplicationLayout.stories.tsx +126 -0
  126. package/layout/Icons.d.ts +5 -0
  127. package/layout/Icons.js +19 -8
  128. package/layout/SidenavContext.d.ts +5 -0
  129. package/layout/SidenavContext.js +19 -0
  130. package/layout/types.d.ts +52 -0
  131. package/layout/types.js +5 -0
  132. package/link/Link.d.ts +4 -0
  133. package/link/Link.js +64 -165
  134. package/link/Link.stories.tsx +186 -0
  135. package/link/Link.test.js +83 -0
  136. package/link/types.d.ts +54 -0
  137. package/link/types.js +5 -0
  138. package/list/List.d.ts +4 -0
  139. package/list/List.js +47 -0
  140. package/list/List.stories.tsx +89 -0
  141. package/list/types.d.ts +7 -0
  142. package/list/types.js +5 -0
  143. package/main.d.ts +48 -40
  144. package/main.js +138 -96
  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/password-input/PasswordInput.d.ts +4 -0
  164. package/password-input/PasswordInput.js +40 -77
  165. package/password-input/PasswordInput.stories.tsx +131 -0
  166. package/password-input/PasswordInput.test.js +180 -0
  167. package/password-input/types.d.ts +110 -0
  168. package/password-input/types.js +5 -0
  169. package/progress-bar/ProgressBar.d.ts +4 -0
  170. package/progress-bar/ProgressBar.js +23 -95
  171. package/progress-bar/ProgressBar.stories.jsx +58 -0
  172. package/progress-bar/ProgressBar.test.js +65 -0
  173. package/progress-bar/types.d.ts +37 -0
  174. package/progress-bar/types.js +5 -0
  175. package/quick-nav/QuickNav.d.ts +4 -0
  176. package/quick-nav/QuickNav.js +116 -0
  177. package/quick-nav/QuickNav.stories.tsx +237 -0
  178. package/quick-nav/types.d.ts +21 -0
  179. package/quick-nav/types.js +5 -0
  180. package/radio-group/Radio.d.ts +4 -0
  181. package/radio-group/Radio.js +141 -0
  182. package/radio-group/RadioGroup.d.ts +4 -0
  183. package/radio-group/RadioGroup.js +283 -0
  184. package/radio-group/RadioGroup.stories.tsx +100 -0
  185. package/radio-group/RadioGroup.test.js +695 -0
  186. package/radio-group/types.d.ts +114 -0
  187. package/radio-group/types.js +5 -0
  188. package/resultsetTable/ResultsetTable.d.ts +4 -0
  189. package/resultsetTable/ResultsetTable.js +43 -147
  190. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  191. package/resultsetTable/ResultsetTable.test.js +348 -0
  192. package/resultsetTable/types.d.ts +67 -0
  193. package/resultsetTable/types.js +5 -0
  194. package/row/Row.d.ts +3 -0
  195. package/row/Row.js +127 -0
  196. package/row/Row.stories.tsx +237 -0
  197. package/row/types.d.ts +28 -0
  198. package/row/types.js +5 -0
  199. package/select/Icons.d.ts +10 -0
  200. package/select/Icons.js +93 -0
  201. package/select/Listbox.d.ts +4 -0
  202. package/select/Listbox.js +175 -0
  203. package/select/Option.d.ts +4 -0
  204. package/select/Option.js +110 -0
  205. package/select/Select.d.ts +4 -0
  206. package/select/Select.js +243 -719
  207. package/select/Select.stories.tsx +626 -0
  208. package/select/Select.test.js +2162 -0
  209. package/select/types.d.ts +212 -0
  210. package/select/types.js +5 -0
  211. package/sidenav/Sidenav.d.ts +9 -0
  212. package/sidenav/Sidenav.js +32 -64
  213. package/sidenav/Sidenav.stories.tsx +182 -0
  214. package/sidenav/Sidenav.test.js +56 -0
  215. package/sidenav/types.d.ts +50 -0
  216. package/sidenav/types.js +5 -0
  217. package/slider/Slider.d.ts +4 -0
  218. package/slider/Slider.js +76 -162
  219. package/slider/Slider.stories.tsx +177 -0
  220. package/slider/Slider.test.js +150 -0
  221. package/slider/types.d.ts +82 -0
  222. package/slider/types.js +5 -0
  223. package/spinner/Spinner.d.ts +4 -0
  224. package/spinner/Spinner.js +46 -177
  225. package/spinner/Spinner.stories.jsx +103 -0
  226. package/spinner/Spinner.test.js +64 -0
  227. package/spinner/types.d.ts +32 -0
  228. package/spinner/types.js +5 -0
  229. package/stack/Stack.d.ts +4 -0
  230. package/stack/Stack.js +56 -0
  231. package/stack/Stack.stories.tsx +263 -0
  232. package/stack/types.d.ts +32 -0
  233. package/stack/types.js +5 -0
  234. package/switch/Switch.d.ts +4 -0
  235. package/switch/Switch.js +55 -82
  236. package/switch/Switch.stories.tsx +160 -0
  237. package/switch/Switch.test.js +98 -0
  238. package/switch/types.d.ts +62 -0
  239. package/switch/types.js +5 -0
  240. package/table/Table.d.ts +4 -0
  241. package/table/Table.js +12 -26
  242. package/table/Table.stories.jsx +277 -0
  243. package/table/Table.test.js +26 -0
  244. package/table/types.d.ts +21 -0
  245. package/table/types.js +5 -0
  246. package/tabs/Tabs.d.ts +4 -0
  247. package/tabs/Tabs.js +43 -175
  248. package/tabs/Tabs.stories.tsx +112 -0
  249. package/tabs/Tabs.test.js +140 -0
  250. package/tabs/types.d.ts +82 -0
  251. package/tabs/types.js +5 -0
  252. package/tabs-nav/NavTabs.d.ts +8 -0
  253. package/tabs-nav/NavTabs.js +125 -0
  254. package/tabs-nav/NavTabs.stories.tsx +170 -0
  255. package/tabs-nav/NavTabs.test.js +82 -0
  256. package/tabs-nav/Tab.d.ts +4 -0
  257. package/tabs-nav/Tab.js +132 -0
  258. package/tabs-nav/types.d.ts +53 -0
  259. package/tabs-nav/types.js +5 -0
  260. package/tag/Tag.d.ts +4 -0
  261. package/tag/Tag.js +44 -143
  262. package/tag/Tag.stories.tsx +142 -0
  263. package/tag/Tag.test.js +60 -0
  264. package/tag/types.d.ts +69 -0
  265. package/tag/types.js +5 -0
  266. package/text/Text.d.ts +7 -0
  267. package/text/Text.js +30 -0
  268. package/text/Text.stories.tsx +19 -0
  269. package/text-input/Suggestion.d.ts +4 -0
  270. package/text-input/Suggestion.js +55 -0
  271. package/text-input/TextInput.d.ts +4 -0
  272. package/text-input/TextInput.js +169 -389
  273. package/text-input/TextInput.stories.tsx +474 -0
  274. package/text-input/TextInput.test.js +1712 -0
  275. package/text-input/types.d.ts +178 -0
  276. package/text-input/types.js +5 -0
  277. package/textarea/Textarea.d.ts +4 -0
  278. package/textarea/Textarea.js +50 -142
  279. package/textarea/Textarea.stories.jsx +157 -0
  280. package/textarea/Textarea.test.js +437 -0
  281. package/textarea/types.d.ts +137 -0
  282. package/textarea/types.js +5 -0
  283. package/toggle-group/ToggleGroup.d.ts +4 -0
  284. package/toggle-group/ToggleGroup.js +36 -148
  285. package/toggle-group/ToggleGroup.stories.tsx +173 -0
  286. package/toggle-group/ToggleGroup.test.js +156 -0
  287. package/toggle-group/types.d.ts +105 -0
  288. package/toggle-group/types.js +5 -0
  289. package/useTheme.d.ts +2 -0
  290. package/useTheme.js +2 -2
  291. package/useTranslatedLabels.d.ts +2 -0
  292. package/useTranslatedLabels.js +20 -0
  293. package/wizard/Wizard.d.ts +4 -0
  294. package/wizard/Wizard.js +131 -244
  295. package/wizard/Wizard.stories.tsx +214 -0
  296. package/wizard/Wizard.test.js +141 -0
  297. package/wizard/types.d.ts +64 -0
  298. package/wizard/types.js +5 -0
  299. package/ThemeContext.js +0 -250
  300. package/V3Select/V3Select.js +0 -549
  301. package/V3Select/index.d.ts +0 -27
  302. package/V3Textarea/V3Textarea.js +0 -264
  303. package/V3Textarea/index.d.ts +0 -27
  304. package/accordion/index.d.ts +0 -28
  305. package/accordion-group/index.d.ts +0 -16
  306. package/alert/index.d.ts +0 -51
  307. package/box/index.d.ts +0 -25
  308. package/button/Button.stories.js +0 -27
  309. package/button/index.d.ts +0 -24
  310. package/card/index.d.ts +0 -22
  311. package/checkbox/index.d.ts +0 -24
  312. package/chip/index.d.ts +0 -22
  313. package/date/Date.js +0 -379
  314. package/date/index.d.ts +0 -27
  315. package/date-input/index.d.ts +0 -95
  316. package/dialog/index.d.ts +0 -18
  317. package/dropdown/index.d.ts +0 -26
  318. package/file-input/index.d.ts +0 -81
  319. package/footer/index.d.ts +0 -25
  320. package/header/index.d.ts +0 -25
  321. package/heading/index.d.ts +0 -17
  322. package/input-text/Icons.js +0 -22
  323. package/input-text/InputText.js +0 -705
  324. package/input-text/index.d.ts +0 -36
  325. package/link/index.d.ts +0 -23
  326. package/number-input/index.d.ts +0 -113
  327. package/paginator/index.d.ts +0 -20
  328. package/password-input/index.d.ts +0 -94
  329. package/progress-bar/index.d.ts +0 -18
  330. package/radio/Radio.js +0 -209
  331. package/radio/index.d.ts +0 -23
  332. package/resultsetTable/index.d.ts +0 -19
  333. package/select/index.d.ts +0 -131
  334. package/sidenav/index.d.ts +0 -13
  335. package/slider/index.d.ts +0 -29
  336. package/spinner/index.d.ts +0 -17
  337. package/switch/index.d.ts +0 -24
  338. package/table/index.d.ts +0 -13
  339. package/tabs/index.d.ts +0 -19
  340. package/tag/index.d.ts +0 -24
  341. package/text-input/index.d.ts +0 -135
  342. package/textarea/index.d.ts +0 -117
  343. package/toggle/Toggle.js +0 -220
  344. package/toggle/index.d.ts +0 -21
  345. package/toggle-group/index.d.ts +0 -21
  346. package/upload/Upload.js +0 -205
  347. package/upload/buttons-upload/ButtonsUpload.js +0 -135
  348. package/upload/buttons-upload/Icons.js +0 -40
  349. package/upload/dragAndDropArea/DragAndDropArea.js +0 -329
  350. package/upload/dragAndDropArea/Icons.js +0 -39
  351. package/upload/file-upload/FileToUpload.js +0 -189
  352. package/upload/file-upload/Icons.js +0 -66
  353. package/upload/files-upload/FilesToUpload.js +0 -123
  354. package/upload/index.d.ts +0 -15
  355. package/upload/transaction/Icons.js +0 -160
  356. package/upload/transaction/Transaction.js +0 -148
  357. package/upload/transactions/Transactions.js +0 -138
  358. package/wizard/Icons.js +0 -65
  359. package/wizard/index.d.ts +0 -18
@@ -0,0 +1,52 @@
1
+ /// <reference types="react" />
2
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ declare type Padding = {
4
+ top?: Space;
5
+ bottom?: Space;
6
+ left?: Space;
7
+ right?: Space;
8
+ };
9
+ declare type ChildrenType = AppLayoutHeaderPropsType | AppLayoutMainPropsType | AppLayoutFooterPropsType | AppLayoutSidenavPropsType;
10
+ export declare type AppLayoutHeaderPropsType = {
11
+ /**
12
+ * Everything between this tags will be displayed as a header, at the top of the screen.
13
+ * This is optional and if it is not specified, the DxcHeader will be shown by default.
14
+ */
15
+ children?: React.ReactNode;
16
+ };
17
+ export declare type AppLayoutMainPropsType = {
18
+ /**
19
+ * Everything between the tags will be displayed as the content of the main part of the application.
20
+ */
21
+ children: React.ReactNode;
22
+ };
23
+ export declare type AppLayoutFooterPropsType = {
24
+ /**
25
+ * Everything between the tags will be displayed as a footer, at the bottom of the screen.
26
+ * This is optional and if it is not specified, the DxcFooter will be shown by default.
27
+ */
28
+ children?: React.ReactNode;
29
+ };
30
+ export declare type AppLayoutSidenavPropsType = {
31
+ /**
32
+ * Size of the padding to be applied to the custom area ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
33
+ * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
34
+ */
35
+ padding?: Space | Padding;
36
+ /**
37
+ * The area inside the sidenav. This area can be used to render custom content.
38
+ */
39
+ children: React.ReactNode;
40
+ };
41
+ declare type AppLayoutPropsType = {
42
+ /**
43
+ * Text to be placed next to the hamburger button that toggles the
44
+ * visibility of the sidenav.
45
+ */
46
+ visibilityToggleLabel?: string;
47
+ /**
48
+ * The area inside the sidenav. This area can be used to render custom content.
49
+ */
50
+ children: React.ReactElement<ChildrenType> | React.ReactElement<ChildrenType>[];
51
+ };
52
+ 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
+ });