@dxc-technology/halstack-react 0.0.0-b9523dd → 0.0.0-b98c25c

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 (315) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/HalstackContext.d.ts +12 -0
  4. package/HalstackContext.js +295 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +124 -137
  7. package/accordion/Accordion.stories.tsx +306 -0
  8. package/accordion/Accordion.test.js +71 -0
  9. package/accordion/types.d.ts +12 -11
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +16 -37
  12. package/accordion-group/AccordionGroup.stories.tsx +251 -0
  13. package/accordion-group/AccordionGroup.test.js +126 -0
  14. package/accordion-group/types.d.ts +17 -10
  15. package/alert/Alert.js +7 -4
  16. package/alert/Alert.stories.tsx +170 -0
  17. package/alert/Alert.test.js +92 -0
  18. package/alert/types.d.ts +1 -1
  19. package/badge/Badge.d.ts +4 -0
  20. package/badge/Badge.js +6 -4
  21. package/badge/types.d.ts +5 -0
  22. package/{radio → badge}/types.js +0 -0
  23. package/bleed/Bleed.d.ts +3 -0
  24. package/bleed/Bleed.js +51 -0
  25. package/bleed/Bleed.stories.tsx +341 -0
  26. package/bleed/types.d.ts +37 -0
  27. package/bleed/types.js +5 -0
  28. package/box/Box.d.ts +4 -0
  29. package/box/Box.js +29 -65
  30. package/box/{Box.stories.jsx → Box.stories.tsx} +0 -0
  31. package/box/Box.test.js +18 -0
  32. package/box/types.d.ts +44 -0
  33. package/box/types.js +5 -0
  34. package/bulleted-list/BulletedList.d.ts +7 -0
  35. package/bulleted-list/BulletedList.js +123 -0
  36. package/bulleted-list/BulletedList.stories.tsx +200 -0
  37. package/bulleted-list/types.d.ts +11 -0
  38. package/bulleted-list/types.js +5 -0
  39. package/button/Button.d.ts +1 -1
  40. package/button/Button.js +62 -83
  41. package/button/Button.stories.tsx +231 -241
  42. package/button/Button.test.js +35 -0
  43. package/button/types.d.ts +10 -14
  44. package/card/Card.js +26 -30
  45. package/card/Card.stories.tsx +201 -0
  46. package/card/Card.test.js +50 -0
  47. package/card/ice-cream.jpg +0 -0
  48. package/card/types.d.ts +5 -6
  49. package/checkbox/Checkbox.d.ts +1 -1
  50. package/checkbox/Checkbox.js +104 -108
  51. package/checkbox/Checkbox.stories.tsx +124 -128
  52. package/checkbox/Checkbox.test.js +155 -0
  53. package/checkbox/types.d.ts +11 -7
  54. package/chip/Chip.d.ts +4 -0
  55. package/chip/Chip.js +16 -76
  56. package/chip/Chip.stories.tsx +119 -0
  57. package/chip/Chip.test.js +56 -0
  58. package/chip/types.d.ts +45 -0
  59. package/chip/types.js +5 -0
  60. package/common/variables.js +319 -380
  61. package/date-input/DateInput.js +66 -55
  62. package/date-input/DateInput.stories.tsx +138 -0
  63. package/date-input/DateInput.test.js +479 -0
  64. package/date-input/types.d.ts +16 -9
  65. package/dialog/Dialog.js +50 -53
  66. package/dialog/Dialog.stories.tsx +267 -0
  67. package/dialog/Dialog.test.js +70 -0
  68. package/dialog/types.d.ts +3 -2
  69. package/dropdown/Dropdown.d.ts +1 -1
  70. package/dropdown/Dropdown.js +243 -273
  71. package/dropdown/Dropdown.stories.tsx +312 -0
  72. package/dropdown/Dropdown.test.js +591 -0
  73. package/dropdown/DropdownMenu.d.ts +4 -0
  74. package/dropdown/DropdownMenu.js +80 -0
  75. package/dropdown/DropdownMenuItem.d.ts +4 -0
  76. package/dropdown/DropdownMenuItem.js +92 -0
  77. package/dropdown/types.d.ts +30 -19
  78. package/file-input/FileInput.d.ts +4 -0
  79. package/file-input/FileInput.js +172 -111
  80. package/file-input/FileInput.stories.tsx +507 -0
  81. package/file-input/FileInput.test.js +457 -0
  82. package/file-input/FileItem.d.ts +14 -0
  83. package/file-input/FileItem.js +16 -23
  84. package/file-input/types.d.ts +112 -0
  85. package/file-input/types.js +5 -0
  86. package/flex/Flex.d.ts +4 -0
  87. package/flex/Flex.js +57 -0
  88. package/flex/Flex.stories.tsx +103 -0
  89. package/flex/types.d.ts +21 -0
  90. package/flex/types.js +5 -0
  91. package/footer/Footer.d.ts +1 -1
  92. package/footer/Footer.js +32 -113
  93. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +5 -19
  94. package/footer/Footer.test.js +109 -0
  95. package/footer/Icons.d.ts +2 -0
  96. package/footer/Icons.js +4 -4
  97. package/footer/types.d.ts +23 -18
  98. package/header/Header.js +97 -116
  99. package/header/Header.stories.tsx +172 -0
  100. package/header/Header.test.js +79 -0
  101. package/header/Icons.d.ts +2 -0
  102. package/header/Icons.js +2 -2
  103. package/header/types.d.ts +7 -4
  104. package/heading/Heading.d.ts +4 -0
  105. package/heading/Heading.js +7 -24
  106. package/heading/Heading.stories.tsx +54 -0
  107. package/heading/Heading.test.js +186 -0
  108. package/heading/types.d.ts +33 -0
  109. package/heading/types.js +5 -0
  110. package/inset/Inset.d.ts +3 -0
  111. package/inset/Inset.js +51 -0
  112. package/inset/Inset.stories.tsx +229 -0
  113. package/inset/types.d.ts +37 -0
  114. package/inset/types.js +5 -0
  115. package/layout/ApplicationLayout.d.ts +20 -0
  116. package/layout/ApplicationLayout.js +71 -135
  117. package/layout/ApplicationLayout.stories.tsx +162 -0
  118. package/layout/Icons.d.ts +5 -0
  119. package/layout/Icons.js +13 -2
  120. package/layout/SidenavContext.d.ts +5 -0
  121. package/layout/SidenavContext.js +19 -0
  122. package/layout/types.d.ts +42 -0
  123. package/layout/types.js +5 -0
  124. package/link/Link.d.ts +4 -0
  125. package/link/Link.js +60 -107
  126. package/link/Link.stories.tsx +193 -0
  127. package/link/Link.test.js +83 -0
  128. package/link/types.d.ts +54 -0
  129. package/link/types.js +5 -0
  130. package/main.d.ts +12 -12
  131. package/main.js +64 -58
  132. package/number-input/NumberInput.d.ts +4 -0
  133. package/number-input/NumberInput.js +16 -68
  134. package/number-input/{NumberInput.stories.jsx → NumberInput.stories.tsx} +5 -5
  135. package/number-input/NumberInput.test.js +506 -0
  136. package/number-input/NumberInputContext.d.ts +4 -0
  137. package/number-input/NumberInputContext.js +5 -2
  138. package/number-input/numberInputContextTypes.d.ts +19 -0
  139. package/number-input/numberInputContextTypes.js +5 -0
  140. package/number-input/types.d.ts +124 -0
  141. package/number-input/types.js +5 -0
  142. package/package.json +16 -12
  143. package/paginator/Paginator.js +19 -46
  144. package/paginator/Paginator.test.js +308 -0
  145. package/paragraph/Paragraph.d.ts +6 -0
  146. package/paragraph/Paragraph.js +38 -0
  147. package/paragraph/Paragraph.stories.tsx +44 -0
  148. package/password-input/PasswordInput.d.ts +4 -0
  149. package/password-input/PasswordInput.js +22 -55
  150. package/password-input/{PasswordInput.stories.jsx → PasswordInput.stories.tsx} +3 -3
  151. package/password-input/PasswordInput.test.js +180 -0
  152. package/password-input/types.d.ts +110 -0
  153. package/password-input/types.js +5 -0
  154. package/progress-bar/ProgressBar.d.ts +2 -2
  155. package/progress-bar/ProgressBar.js +59 -53
  156. package/progress-bar/ProgressBar.stories.jsx +60 -0
  157. package/progress-bar/ProgressBar.test.js +110 -0
  158. package/progress-bar/types.d.ts +3 -4
  159. package/quick-nav/QuickNav.d.ts +4 -0
  160. package/quick-nav/QuickNav.js +115 -0
  161. package/quick-nav/QuickNav.stories.tsx +300 -0
  162. package/quick-nav/types.d.ts +21 -0
  163. package/quick-nav/types.js +5 -0
  164. package/radio-group/Radio.d.ts +4 -0
  165. package/radio-group/Radio.js +156 -0
  166. package/radio-group/RadioGroup.d.ts +4 -0
  167. package/radio-group/RadioGroup.js +279 -0
  168. package/radio-group/RadioGroup.stories.tsx +101 -0
  169. package/radio-group/RadioGroup.test.js +665 -0
  170. package/radio-group/types.d.ts +114 -0
  171. package/radio-group/types.js +5 -0
  172. package/resultsetTable/ResultsetTable.d.ts +4 -0
  173. package/resultsetTable/ResultsetTable.js +9 -29
  174. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  175. package/resultsetTable/ResultsetTable.test.js +348 -0
  176. package/resultsetTable/types.d.ts +67 -0
  177. package/resultsetTable/types.js +5 -0
  178. package/select/Icons.d.ts +10 -0
  179. package/select/Icons.js +93 -0
  180. package/select/Listbox.d.ts +4 -0
  181. package/select/Listbox.js +198 -0
  182. package/select/Option.d.ts +4 -0
  183. package/select/Option.js +110 -0
  184. package/select/Select.d.ts +4 -0
  185. package/select/Select.js +158 -380
  186. package/select/Select.stories.tsx +627 -0
  187. package/select/Select.test.js +2175 -0
  188. package/select/types.d.ts +210 -0
  189. package/select/types.js +5 -0
  190. package/sidenav/Sidenav.d.ts +10 -0
  191. package/sidenav/Sidenav.js +186 -63
  192. package/sidenav/Sidenav.stories.tsx +180 -0
  193. package/sidenav/Sidenav.test.js +44 -0
  194. package/sidenav/types.d.ts +73 -0
  195. package/sidenav/types.js +5 -0
  196. package/slider/Slider.d.ts +1 -1
  197. package/slider/Slider.js +145 -109
  198. package/slider/Slider.stories.tsx +183 -0
  199. package/slider/Slider.test.js +250 -0
  200. package/slider/types.d.ts +8 -9
  201. package/spinner/Spinner.js +3 -3
  202. package/spinner/Spinner.stories.jsx +1 -0
  203. package/spinner/Spinner.test.js +64 -0
  204. package/switch/Switch.d.ts +2 -2
  205. package/switch/Switch.js +149 -67
  206. package/switch/Switch.stories.tsx +138 -0
  207. package/switch/Switch.test.js +225 -0
  208. package/switch/types.d.ts +9 -6
  209. package/table/Table.js +3 -3
  210. package/table/Table.stories.jsx +2 -1
  211. package/table/Table.test.js +26 -0
  212. package/tabs/Tab.d.ts +4 -0
  213. package/tabs/Tab.js +135 -0
  214. package/tabs/Tabs.d.ts +1 -1
  215. package/tabs/Tabs.js +364 -108
  216. package/tabs/Tabs.stories.tsx +186 -0
  217. package/tabs/Tabs.test.js +351 -0
  218. package/tabs/types.d.ts +41 -20
  219. package/tabs-nav/NavTabs.d.ts +8 -0
  220. package/tabs-nav/NavTabs.js +125 -0
  221. package/tabs-nav/NavTabs.stories.tsx +170 -0
  222. package/tabs-nav/NavTabs.test.js +82 -0
  223. package/tabs-nav/Tab.d.ts +4 -0
  224. package/tabs-nav/Tab.js +130 -0
  225. package/tabs-nav/types.d.ts +53 -0
  226. package/tabs-nav/types.js +5 -0
  227. package/tag/Tag.d.ts +4 -0
  228. package/tag/Tag.js +21 -52
  229. package/tag/{Tag.stories.jsx → Tag.stories.tsx} +26 -29
  230. package/tag/Tag.test.js +60 -0
  231. package/tag/types.d.ts +69 -0
  232. package/tag/types.js +5 -0
  233. package/text-input/Icons.d.ts +8 -0
  234. package/text-input/Icons.js +60 -0
  235. package/text-input/Suggestion.d.ts +4 -0
  236. package/text-input/Suggestion.js +57 -0
  237. package/text-input/Suggestions.d.ts +4 -0
  238. package/text-input/Suggestions.js +134 -0
  239. package/text-input/TextInput.d.ts +4 -0
  240. package/text-input/TextInput.js +166 -328
  241. package/text-input/TextInput.stories.tsx +481 -0
  242. package/text-input/TextInput.test.js +1713 -0
  243. package/text-input/types.d.ts +192 -0
  244. package/text-input/types.js +5 -0
  245. package/textarea/Textarea.d.ts +4 -0
  246. package/textarea/Textarea.js +39 -79
  247. package/textarea/Textarea.stories.jsx +37 -15
  248. package/textarea/Textarea.test.js +437 -0
  249. package/textarea/types.d.ts +137 -0
  250. package/textarea/types.js +5 -0
  251. package/toggle-group/ToggleGroup.d.ts +4 -0
  252. package/toggle-group/ToggleGroup.js +18 -46
  253. package/toggle-group/ToggleGroup.stories.tsx +173 -0
  254. package/toggle-group/ToggleGroup.test.js +156 -0
  255. package/toggle-group/types.d.ts +105 -0
  256. package/toggle-group/types.js +5 -0
  257. package/typography/Typography.d.ts +4 -0
  258. package/typography/Typography.js +131 -0
  259. package/typography/Typography.stories.tsx +198 -0
  260. package/typography/types.d.ts +18 -0
  261. package/typography/types.js +5 -0
  262. package/useTheme.d.ts +2 -0
  263. package/useTheme.js +2 -2
  264. package/useTranslatedLabels.d.ts +2 -0
  265. package/useTranslatedLabels.js +20 -0
  266. package/wizard/Wizard.d.ts +4 -0
  267. package/wizard/Wizard.js +118 -104
  268. package/wizard/Wizard.stories.tsx +233 -0
  269. package/wizard/Wizard.test.js +141 -0
  270. package/wizard/types.d.ts +65 -0
  271. package/wizard/types.js +5 -0
  272. package/ThemeContext.js +0 -246
  273. package/V3Select/V3Select.js +0 -455
  274. package/V3Select/index.d.ts +0 -27
  275. package/V3Textarea/V3Textarea.js +0 -260
  276. package/V3Textarea/index.d.ts +0 -27
  277. package/box/index.d.ts +0 -25
  278. package/chip/index.d.ts +0 -22
  279. package/date/Date.js +0 -373
  280. package/date/index.d.ts +0 -27
  281. package/file-input/index.d.ts +0 -81
  282. package/heading/index.d.ts +0 -17
  283. package/input-text/Icons.js +0 -22
  284. package/input-text/InputText.js +0 -611
  285. package/input-text/index.d.ts +0 -36
  286. package/link/index.d.ts +0 -23
  287. package/number-input/index.d.ts +0 -113
  288. package/password-input/index.d.ts +0 -94
  289. package/radio/Radio.d.ts +0 -4
  290. package/radio/Radio.js +0 -174
  291. package/radio/Radio.stories.tsx +0 -192
  292. package/radio/types.d.ts +0 -54
  293. package/resultsetTable/index.d.ts +0 -19
  294. package/select/index.d.ts +0 -131
  295. package/sidenav/index.d.ts +0 -13
  296. package/tag/index.d.ts +0 -24
  297. package/text-input/index.d.ts +0 -135
  298. package/textarea/index.d.ts +0 -117
  299. package/toggle/Toggle.js +0 -186
  300. package/toggle/index.d.ts +0 -21
  301. package/toggle-group/index.d.ts +0 -21
  302. package/upload/Upload.js +0 -201
  303. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  304. package/upload/buttons-upload/Icons.js +0 -40
  305. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  306. package/upload/dragAndDropArea/Icons.js +0 -39
  307. package/upload/file-upload/FileToUpload.js +0 -115
  308. package/upload/file-upload/Icons.js +0 -66
  309. package/upload/files-upload/FilesToUpload.js +0 -109
  310. package/upload/index.d.ts +0 -15
  311. package/upload/transaction/Icons.js +0 -160
  312. package/upload/transaction/Transaction.js +0 -104
  313. package/upload/transactions/Transactions.js +0 -94
  314. package/wizard/Icons.js +0 -65
  315. package/wizard/index.d.ts +0 -18
package/tag/Tag.js CHANGED
@@ -9,29 +9,25 @@ Object.defineProperty(exports, "__esModule", {
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"));
17
-
18
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
17
 
20
18
  var _react = _interopRequireWildcard(require("react"));
21
19
 
22
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
21
 
24
- var _propTypes = _interopRequireDefault(require("prop-types"));
25
-
26
22
  var _variables = require("../common/variables.js");
27
23
 
28
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
24
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
29
25
 
30
26
  var _utils = require("../common/utils.js");
31
27
 
32
28
  var _Box = _interopRequireDefault(require("../box/Box"));
33
29
 
34
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
30
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
35
31
 
36
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); }
37
33
 
@@ -39,9 +35,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
39
35
 
40
36
  var DxcTag = function DxcTag(_ref) {
41
37
  var icon = _ref.icon,
42
- iconSrc = _ref.iconSrc,
43
- label = _ref.label,
44
- margin = _ref.margin,
38
+ _ref$label = _ref.label,
39
+ label = _ref$label === void 0 ? "" : _ref$label,
45
40
  linkHref = _ref.linkHref,
46
41
  onClick = _ref.onClick,
47
42
  _ref$iconBgColor = _ref.iconBgColor,
@@ -50,6 +45,7 @@ var DxcTag = function DxcTag(_ref) {
50
45
  labelPosition = _ref$labelPosition === void 0 ? "after" : _ref$labelPosition,
51
46
  _ref$newWindow = _ref.newWindow,
52
47
  newWindow = _ref$newWindow === void 0 ? false : _ref$newWindow,
48
+ margin = _ref.margin,
53
49
  _ref$size = _ref.size,
54
50
  size = _ref$size === void 0 ? "fitContent" : _ref$size,
55
51
  _ref$tabIndex = _ref.tabIndex,
@@ -70,11 +66,11 @@ var DxcTag = function DxcTag(_ref) {
70
66
  shadowDepth: isHovered && (onClick || linkHref) && 2 || 1
71
67
  }, /*#__PURE__*/_react["default"].createElement(TagContent, {
72
68
  labelPosition: labelPosition
73
- }, /*#__PURE__*/_react["default"].createElement(IconContainer, {
69
+ }, labelPosition === "before" && size !== "small" && label && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
74
70
  iconBgColor: iconBgColor
75
- }, icon ? /*#__PURE__*/_react["default"].createElement(TagIconContainer, null, (0, _typeof2["default"])(icon) === "object" ? icon : /*#__PURE__*/_react["default"].createElement(icon)) : /*#__PURE__*/_react["default"].createElement(TagIcon, {
76
- src: iconSrc
77
- })), size !== "small" && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label)));
71
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(TagIcon, {
72
+ src: icon
73
+ }) : icon), labelPosition === "after" && size !== "small" && label && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label)));
78
74
 
79
75
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
80
76
  theme: colorsTheme.tag
@@ -103,7 +99,7 @@ var sizes = {
103
99
  medium: "240px",
104
100
  large: "480px",
105
101
  fillParent: "100%",
106
- fitContent: "unset"
102
+ fitContent: "fit-content"
107
103
  };
108
104
 
109
105
  var calculateWidth = function calculateWidth(margin, size) {
@@ -134,10 +130,7 @@ var StyledDxcTag = _styledComponents["default"].div(_templateObject || (_templat
134
130
  return props.theme.height;
135
131
  });
136
132
 
137
- var TagContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n flex-direction: ", ";\n width: 100%;\n height: ", ";\n"])), function (_ref8) {
138
- var labelPosition = _ref8.labelPosition;
139
- return labelPosition === "before" && "row-reverse" || "row";
140
- }, function (props) {
133
+ var TagContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n width: 100%;\n height: ", ";\n"])), function (props) {
141
134
  return props.theme.height;
142
135
  });
143
136
 
@@ -149,20 +142,8 @@ var StyledButton = _styledComponents["default"].button(_templateObject4 || (_tem
149
142
  return props.theme.focusColor;
150
143
  });
151
144
 
152
- var TagIcon = _styledComponents["default"].img(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n width: ", ";\n height: ", ";\n"])), function (props) {
153
- return props.theme.iconWidth;
154
- }, function (props) {
155
- return props.theme.iconHeight;
156
- });
157
-
158
- var TagIconContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
159
- return props.theme.iconWidth;
160
- }, function (props) {
161
- return props.theme.iconHeight;
162
- });
163
-
164
- var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n background: ", ";\n width: ", ";\n height: 100%;\n justify-content: center;\n align-items: center;\n color: ", ";\n min-width: ", ";\n"])), function (_ref9) {
165
- var iconBgColor = _ref9.iconBgColor;
145
+ var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n background: ", ";\n width: ", ";\n height: 100%;\n justify-content: center;\n align-items: center;\n color: ", ";\n min-width: ", ";\n overflow: hidden;\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (_ref8) {
146
+ var iconBgColor = _ref8.iconBgColor;
166
147
  return iconBgColor;
167
148
  }, function (props) {
168
149
  return props.theme.iconSectionWidth;
@@ -170,9 +151,15 @@ var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templ
170
151
  return props.theme.iconColor;
171
152
  }, function (props) {
172
153
  return props.theme.iconSectionWidth;
154
+ }, function (props) {
155
+ return props.theme.iconWidth;
156
+ }, function (props) {
157
+ return props.theme.iconHeight;
173
158
  });
174
159
 
175
- var TagLabel = _styledComponents["default"].div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n flex-grow: 1;\n text-align: center;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n"])), function (props) {
160
+ var TagIcon = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])([""])));
161
+
162
+ var TagLabel = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n flex-grow: 1;\n text-align: center;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n"])), function (props) {
176
163
  return props.theme.fontFamily;
177
164
  }, function (props) {
178
165
  return props.theme.fontSize;
@@ -192,23 +179,5 @@ var TagLabel = _styledComponents["default"].div(_templateObject8 || (_templateOb
192
179
  return props.theme.labelPaddingRight;
193
180
  });
194
181
 
195
- DxcTag.propTypes = {
196
- size: _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(sizes))),
197
- icon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
198
- iconSrc: _propTypes["default"].string,
199
- iconBgColor: _propTypes["default"].string,
200
- label: _propTypes["default"].string,
201
- labelPosition: _propTypes["default"].oneOf(["before", "after"]),
202
- linkHref: _propTypes["default"].string,
203
- onClick: _propTypes["default"].func,
204
- newWindow: _propTypes["default"].bool,
205
- margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
206
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
207
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
208
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
209
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
210
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
211
- tabIndex: _propTypes["default"].number
212
- };
213
182
  var _default = DxcTag;
214
183
  exports["default"] = _default;
@@ -9,29 +9,22 @@ export default {
9
9
  component: DxcTag,
10
10
  };
11
11
 
12
- const icon = () => {
13
- return (
14
- <svg viewBox="0 0 24 24" fill="currentColor">
15
- <path d="M0 0h24v24H0z" fill="none" />
16
- <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
17
- </svg>
18
- );
19
- };
20
- const largeIcon = () => {
21
- return (
22
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 0 24 24" width="48px" fill="currentColor">
23
- <path d="M0 0h24v24H0V0z" fill="none" />
24
- <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z" />
25
- </svg>
26
- );
27
- };
12
+ const icon = (
13
+ <svg viewBox="0 0 24 24" fill="currentColor">
14
+ <path d="M0 0h24v24H0z" fill="none" />
15
+ <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
16
+ </svg>
17
+ );
18
+
19
+ const largeIcon = (
20
+ <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 0 24 24" width="48px" fill="currentColor">
21
+ <path d="M0 0h24v24H0V0z" fill="none" />
22
+ <path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z" />
23
+ </svg>
24
+ );
28
25
 
29
26
  export const Chromatic = () => (
30
27
  <>
31
- <ExampleContainer>
32
- <Title title="Without label" theme="light" level={4} />
33
- <DxcTag />
34
- </ExampleContainer>
35
28
  <ExampleContainer>
36
29
  <Title title="With icon" theme="light" level={4} />
37
30
  <DxcTag icon={icon} />
@@ -46,7 +39,10 @@ export const Chromatic = () => (
46
39
  </ExampleContainer>
47
40
  <ExampleContainer>
48
41
  <Title title="With label and icon" theme="light" level={4} />
49
- <DxcTag label="Tag" icon={icon} />
42
+ <DxcTag
43
+ label="Tag"
44
+ icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png"
45
+ />
50
46
  </ExampleContainer>
51
47
  <ExampleContainer>
52
48
  <Title title="With right icon" theme="light" level={4} />
@@ -102,37 +98,38 @@ export const Chromatic = () => (
102
98
  <Title title="Sizes" theme="light" level={2} />
103
99
  <ExampleContainer>
104
100
  <Title title="Small size" theme="light" level={4} />
105
- <DxcTag label="Small" size="small" />
101
+ <DxcTag label="Small" size="small" icon={icon} />
106
102
  </ExampleContainer>
107
103
  <ExampleContainer>
108
104
  <Title title="Medium size" theme="light" level={4} />
109
- <DxcTag label="Medium size medium s" size="medium" />
105
+ <DxcTag label="Medium size medium s" size="medium" icon={icon} />
110
106
  </ExampleContainer>
111
107
  <ExampleContainer>
112
108
  <Title title="Medium size with ellipsis" theme="light" level={4} />
113
- <DxcTag label="Medium size medium si medium" size="medium" />
109
+ <DxcTag label="Medium size medium si medium" size="medium" icon={icon} />
114
110
  </ExampleContainer>
115
111
  <ExampleContainer>
116
112
  <Title title="Large size" theme="light" level={4} />
117
- <DxcTag label="Large size large size large size large size large size" size="large" />
113
+ <DxcTag label="Large size large size large size large size large size" size="large" icon={icon} />
118
114
  </ExampleContainer>
119
115
  <ExampleContainer>
120
116
  <Title title="Large size with ellipsis" theme="light" level={4} />
121
- <DxcTag label="Large size large size large size large size large size large size" size="large" />
117
+ <DxcTag label="Large size large size large size large size large size large size" size="large" icon={icon} />
122
118
  </ExampleContainer>
123
119
  <ExampleContainer>
124
120
  <Title title="FillParent size" theme="light" level={4} />
125
- <DxcTag label="FillParent" size="fillParent" />
121
+ <DxcTag label="FillParent" size="fillParent" icon={icon} />
126
122
  </ExampleContainer>
127
123
  <ExampleContainer>
128
124
  <Title title="FitContent size" theme="light" level={4} />
129
- <DxcTag label="FitContent" size="fitContent" />
125
+ <DxcTag label="FitContent" size="fitContent" icon={icon} />
130
126
  </ExampleContainer>
127
+ <hr />
131
128
  </>
132
129
  );
133
130
 
134
131
  const LinkTag = () => (
135
- <ExampleContainer>
132
+ <ExampleContainer expanded>
136
133
  <Title title="Hover link tag" theme="light" level={4} />
137
134
  <DxcTag label="Tag" icon={icon} linkHref="https://www.dxc.com" />
138
135
  </ExampleContainer>
@@ -0,0 +1,60 @@
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 _Tag = _interopRequireDefault(require("./Tag"));
10
+
11
+ describe("Tag component tests", function () {
12
+ test("Tag renders with correct label", function () {
13
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
14
+ label: "tag-test"
15
+ })),
16
+ getByText = _render.getByText;
17
+
18
+ expect(getByText("tag-test")).toBeTruthy();
19
+ });
20
+ test("Tag renders with correct label before", function () {
21
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
22
+ label: "tag-test",
23
+ labelPosition: "before"
24
+ })),
25
+ getByText = _render2.getByText;
26
+
27
+ expect(getByText("tag-test")).toBeTruthy();
28
+ });
29
+ test("Tag renders with correct icon", function () {
30
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
31
+ label: "tag-test",
32
+ icon: "/test-icon.jpg"
33
+ })),
34
+ getByRole = _render3.getByRole;
35
+
36
+ expect(getByRole("img").getAttribute("src")).toBe("/test-icon.jpg");
37
+ });
38
+ test("Tag renders with link href", function () {
39
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
40
+ label: "tag-test",
41
+ linkHref: "/test/page"
42
+ })),
43
+ getByRole = _render4.getByRole;
44
+
45
+ expect(getByRole("link").getAttribute("href")).toBe("/test/page");
46
+ });
47
+ test("Call correct function on click", function () {
48
+ var onClick = jest.fn();
49
+
50
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tag["default"], {
51
+ label: "tag-test",
52
+ onClick: onClick
53
+ })),
54
+ getByText = _render5.getByText;
55
+
56
+ _react2.fireEvent.click(getByText("tag-test"));
57
+
58
+ expect(onClick).toHaveBeenCalled();
59
+ });
60
+ });
package/tag/types.d.ts ADDED
@@ -0,0 +1,69 @@
1
+ /// <reference types="react" />
2
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ declare type Margin = {
4
+ top?: Space;
5
+ bottom?: Space;
6
+ left?: Space;
7
+ right?: Space;
8
+ };
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
+ declare type TagCommonProps = {
11
+ /**
12
+ * If defined, the tag will be displayed as an anchor, using this prop as "href".
13
+ * Component will show some visual feedback on hover.
14
+ */
15
+ linkHref?: string;
16
+ /**
17
+ * If defined, the tag will be displayed as a button. This function will
18
+ * be called when the user clicks the tag. Component will show some
19
+ * visual feedback on hover.
20
+ */
21
+ onClick?: () => void;
22
+ /**
23
+ * Background color of the icon section of the tag.
24
+ */
25
+ iconBgColor?: string;
26
+ /**
27
+ * Whether the label should appear after or before the icon.
28
+ */
29
+ labelPosition?: "before" | "after";
30
+ /**
31
+ * If true, the page is opened in a new browser tab.
32
+ */
33
+ newWindow?: boolean;
34
+ /**
35
+ * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
36
+ * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
37
+ */
38
+ margin?: Space | Margin;
39
+ /**
40
+ * Size of the component.
41
+ */
42
+ size?: "small" | "medium" | "large" | "fillParent" | "fitContent";
43
+ /**
44
+ * Value of the tabindex attribute.
45
+ */
46
+ tabIndex?: number;
47
+ };
48
+ declare type TagLabelProps = TagCommonProps & {
49
+ /**
50
+ * Element or path used as the icon that will be placed next to the label.
51
+ */
52
+ icon?: string | SVG;
53
+ /**
54
+ * Text to be placed next inside the tag.
55
+ */
56
+ label: string;
57
+ };
58
+ declare type TagIconProps = TagCommonProps & {
59
+ /**
60
+ * Element or path used as the icon that will be placed next to the label.
61
+ */
62
+ icon: string | SVG;
63
+ /**
64
+ * Text to be placed next inside the tag.
65
+ */
66
+ label?: string;
67
+ };
68
+ declare type Props = TagLabelProps | TagIconProps;
69
+ export default Props;
package/tag/types.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ declare const icons: {
3
+ error: JSX.Element;
4
+ clear: JSX.Element;
5
+ increment: JSX.Element;
6
+ decrement: JSX.Element;
7
+ };
8
+ export default icons;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var icons = {
13
+ error: /*#__PURE__*/_react["default"].createElement("svg", {
14
+ xmlns: "http://www.w3.org/2000/svg",
15
+ height: "24px",
16
+ viewBox: "0 0 24 24",
17
+ width: "24px",
18
+ fill: "currentColor"
19
+ }, /*#__PURE__*/_react["default"].createElement("path", {
20
+ d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"
21
+ })),
22
+ clear: /*#__PURE__*/_react["default"].createElement("svg", {
23
+ xmlns: "http://www.w3.org/2000/svg",
24
+ width: "24",
25
+ height: "24",
26
+ viewBox: "0 0 24 24",
27
+ fill: "currentColor"
28
+ }, /*#__PURE__*/_react["default"].createElement("path", {
29
+ d: "M0 0h24v24H0V0z",
30
+ fill: "none"
31
+ }), /*#__PURE__*/_react["default"].createElement("path", {
32
+ d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
33
+ })),
34
+ increment: /*#__PURE__*/_react["default"].createElement("svg", {
35
+ xmlns: "http://www.w3.org/2000/svg",
36
+ height: "24px",
37
+ viewBox: "0 0 24 24",
38
+ width: "24px",
39
+ fill: "currentColor"
40
+ }, /*#__PURE__*/_react["default"].createElement("path", {
41
+ d: "M0 0h24v24H0z",
42
+ fill: "none"
43
+ }), /*#__PURE__*/_react["default"].createElement("path", {
44
+ d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
45
+ })),
46
+ decrement: /*#__PURE__*/_react["default"].createElement("svg", {
47
+ xmlns: "http://www.w3.org/2000/svg",
48
+ height: "24px",
49
+ viewBox: "0 0 24 24",
50
+ width: "24px",
51
+ fill: "currentColor"
52
+ }, /*#__PURE__*/_react["default"].createElement("path", {
53
+ d: "M0 0h24v24H0z",
54
+ fill: "none"
55
+ }), /*#__PURE__*/_react["default"].createElement("path", {
56
+ d: "M19 13H5v-2h14v2z"
57
+ }))
58
+ };
59
+ var _default = icons;
60
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { SuggestionProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ id, value, onClick, suggestion, isLast, visuallyFocused, highlighted, }: SuggestionProps) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
15
+
16
+ var _templateObject, _templateObject2;
17
+
18
+ var Suggestion = function Suggestion(_ref) {
19
+ var id = _ref.id,
20
+ value = _ref.value,
21
+ _onClick = _ref.onClick,
22
+ suggestion = _ref.suggestion,
23
+ isLast = _ref.isLast,
24
+ visuallyFocused = _ref.visuallyFocused,
25
+ highlighted = _ref.highlighted;
26
+ var regEx = new RegExp(value, "i");
27
+ var matchedWords = suggestion.match(regEx);
28
+ var noMatchedWords = suggestion.replace(regEx, "");
29
+ return /*#__PURE__*/_react["default"].createElement(SuggestionContainer, {
30
+ id: id,
31
+ onClick: function onClick() {
32
+ _onClick(suggestion);
33
+ },
34
+ visuallyFocused: visuallyFocused,
35
+ role: "option",
36
+ "aria-selected": visuallyFocused ? true : undefined
37
+ }, /*#__PURE__*/_react["default"].createElement(StyledSuggestion, {
38
+ last: isLast,
39
+ visuallyFocused: visuallyFocused
40
+ }, highlighted ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("strong", null, matchedWords), noMatchedWords) : suggestion));
41
+ };
42
+
43
+ var SuggestionContainer = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0 0.5rem;\n line-height: 1.715em;\n cursor: pointer;\n box-shadow: inset 0 0 0 2px\n ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
44
+ return props.visuallyFocused ? props.theme.focusListOptionBorderColor : "transparent";
45
+ }, function (props) {
46
+ return props.theme.hoverListOptionBackgroundColor;
47
+ }, function (props) {
48
+ return props.theme.activeListOptionBackgroundColor;
49
+ });
50
+
51
+ var StyledSuggestion = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: 0.25rem 0.5rem 0.188rem 0.5rem;\n ", ";\n"])), function (props) {
52
+ return props.last || props.visuallyFocused ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
53
+ });
54
+
55
+ var _default = /*#__PURE__*/_react["default"].memo(Suggestion);
56
+
57
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { SuggestionsProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ id, value, suggestions, visualFocusIndex, highlightedSuggestions, searchHasErrors, isSearching, suggestionOnClick, getTextInputWidth, }: SuggestionsProps) => JSX.Element>;
4
+ export default _default;