@dxc-technology/halstack-react 0.0.0-3716032 → 0.0.0-38267fd

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 (291) hide show
  1. package/BackgroundColorContext.js +0 -1
  2. package/HalstackContext.d.ts +12 -0
  3. package/HalstackContext.js +343 -0
  4. package/accordion/Accordion.d.ts +1 -1
  5. package/accordion/Accordion.js +117 -136
  6. package/accordion/Accordion.stories.tsx +114 -19
  7. package/accordion/Accordion.test.js +71 -0
  8. package/accordion/types.d.ts +11 -10
  9. package/accordion-group/AccordionGroup.d.ts +1 -1
  10. package/accordion-group/AccordionGroup.js +15 -36
  11. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  12. package/accordion-group/AccordionGroup.test.js +126 -0
  13. package/accordion-group/types.d.ts +16 -9
  14. package/alert/Alert.js +5 -2
  15. package/alert/Alert.stories.tsx +28 -0
  16. package/alert/Alert.test.js +92 -0
  17. package/badge/Badge.d.ts +4 -0
  18. package/badge/Badge.js +5 -3
  19. package/badge/types.d.ts +5 -0
  20. package/bleed/Bleed.d.ts +3 -0
  21. package/bleed/Bleed.js +51 -0
  22. package/bleed/Bleed.stories.tsx +341 -0
  23. package/bleed/types.d.ts +37 -0
  24. package/bleed/types.js +5 -0
  25. package/box/Box.js +23 -35
  26. package/box/Box.stories.tsx +15 -0
  27. package/box/Box.test.js +18 -0
  28. package/box/types.d.ts +1 -0
  29. package/bulleted-list/BulletedList.d.ts +7 -0
  30. package/bulleted-list/BulletedList.js +123 -0
  31. package/bulleted-list/BulletedList.stories.tsx +200 -0
  32. package/bulleted-list/types.d.ts +11 -0
  33. package/bulleted-list/types.js +5 -0
  34. package/button/Button.d.ts +1 -1
  35. package/button/Button.js +54 -79
  36. package/button/Button.stories.tsx +163 -14
  37. package/button/Button.test.js +35 -0
  38. package/button/types.d.ts +8 -12
  39. package/card/Card.js +24 -27
  40. package/card/Card.stories.tsx +1 -1
  41. package/card/Card.test.js +50 -0
  42. package/card/types.d.ts +1 -0
  43. package/checkbox/Checkbox.d.ts +2 -2
  44. package/checkbox/Checkbox.js +106 -109
  45. package/checkbox/Checkbox.stories.tsx +198 -130
  46. package/checkbox/Checkbox.test.js +155 -0
  47. package/checkbox/types.d.ts +13 -5
  48. package/chip/Chip.d.ts +1 -1
  49. package/chip/Chip.js +20 -64
  50. package/chip/Chip.stories.tsx +98 -13
  51. package/chip/Chip.test.js +56 -0
  52. package/chip/types.d.ts +5 -13
  53. package/common/variables.js +514 -584
  54. package/date-input/Calendar.d.ts +4 -0
  55. package/date-input/Calendar.js +258 -0
  56. package/date-input/DateInput.js +171 -260
  57. package/date-input/DateInput.stories.tsx +199 -33
  58. package/date-input/DateInput.test.js +835 -0
  59. package/date-input/DatePicker.d.ts +4 -0
  60. package/date-input/DatePicker.js +146 -0
  61. package/date-input/Icons.d.ts +6 -0
  62. package/date-input/Icons.js +75 -0
  63. package/date-input/YearPicker.d.ts +4 -0
  64. package/date-input/YearPicker.js +126 -0
  65. package/date-input/types.d.ts +67 -9
  66. package/dialog/Dialog.js +75 -92
  67. package/dialog/Dialog.stories.tsx +230 -123
  68. package/dialog/Dialog.test.js +369 -0
  69. package/dialog/types.d.ts +3 -2
  70. package/dropdown/Dropdown.d.ts +1 -1
  71. package/dropdown/Dropdown.js +248 -277
  72. package/dropdown/Dropdown.stories.tsx +255 -64
  73. package/dropdown/Dropdown.test.js +585 -0
  74. package/dropdown/DropdownMenu.d.ts +4 -0
  75. package/dropdown/DropdownMenu.js +70 -0
  76. package/dropdown/DropdownMenuItem.d.ts +4 -0
  77. package/dropdown/DropdownMenuItem.js +81 -0
  78. package/dropdown/types.d.ts +29 -18
  79. package/file-input/FileInput.d.ts +2 -2
  80. package/file-input/FileInput.js +180 -222
  81. package/file-input/FileInput.stories.tsx +122 -10
  82. package/file-input/FileInput.test.js +457 -0
  83. package/file-input/FileItem.d.ts +4 -14
  84. package/file-input/FileItem.js +44 -66
  85. package/file-input/types.d.ts +17 -0
  86. package/flex/Flex.d.ts +4 -0
  87. package/flex/Flex.js +69 -0
  88. package/flex/Flex.stories.tsx +103 -0
  89. package/flex/types.d.ts +32 -0
  90. package/flex/types.js +5 -0
  91. package/footer/Footer.js +24 -99
  92. package/footer/Footer.stories.tsx +99 -1
  93. package/footer/Footer.test.js +109 -0
  94. package/footer/Icons.js +1 -1
  95. package/footer/types.d.ts +2 -1
  96. package/header/Header.js +107 -128
  97. package/header/Header.stories.tsx +189 -36
  98. package/header/Header.test.js +79 -0
  99. package/header/Icons.js +2 -2
  100. package/header/types.d.ts +3 -2
  101. package/heading/Heading.stories.tsx +3 -2
  102. package/heading/Heading.test.js +186 -0
  103. package/inset/Inset.d.ts +3 -0
  104. package/inset/Inset.js +51 -0
  105. package/inset/Inset.stories.tsx +229 -0
  106. package/inset/types.d.ts +37 -0
  107. package/inset/types.js +5 -0
  108. package/layout/ApplicationLayout.d.ts +16 -6
  109. package/layout/ApplicationLayout.js +71 -125
  110. package/layout/ApplicationLayout.stories.tsx +84 -93
  111. package/layout/Icons.d.ts +5 -0
  112. package/layout/Icons.js +13 -2
  113. package/layout/SidenavContext.d.ts +5 -0
  114. package/layout/SidenavContext.js +19 -0
  115. package/layout/types.d.ts +18 -33
  116. package/link/Link.d.ts +3 -2
  117. package/link/Link.js +61 -86
  118. package/link/Link.stories.tsx +159 -52
  119. package/link/Link.test.js +83 -0
  120. package/link/types.d.ts +9 -29
  121. package/main.d.ts +11 -15
  122. package/main.js +53 -79
  123. package/nav-tabs/NavTabs.d.ts +8 -0
  124. package/nav-tabs/NavTabs.js +125 -0
  125. package/nav-tabs/NavTabs.stories.tsx +260 -0
  126. package/nav-tabs/NavTabs.test.js +82 -0
  127. package/nav-tabs/Tab.d.ts +4 -0
  128. package/nav-tabs/Tab.js +150 -0
  129. package/nav-tabs/types.d.ts +53 -0
  130. package/nav-tabs/types.js +5 -0
  131. package/number-input/NumberInput.js +11 -18
  132. package/number-input/NumberInput.stories.tsx +5 -5
  133. package/number-input/NumberInput.test.js +542 -0
  134. package/number-input/types.d.ts +17 -10
  135. package/package.json +21 -22
  136. package/paginator/Icons.d.ts +5 -0
  137. package/paginator/Icons.js +16 -28
  138. package/paginator/Paginator.js +19 -46
  139. package/paginator/Paginator.stories.tsx +24 -0
  140. package/paginator/Paginator.test.js +315 -0
  141. package/paragraph/Paragraph.d.ts +6 -0
  142. package/paragraph/Paragraph.js +38 -0
  143. package/paragraph/Paragraph.stories.tsx +44 -0
  144. package/password-input/PasswordInput.js +7 -4
  145. package/password-input/PasswordInput.stories.tsx +3 -3
  146. package/password-input/PasswordInput.test.js +181 -0
  147. package/password-input/types.d.ts +14 -11
  148. package/progress-bar/ProgressBar.d.ts +2 -2
  149. package/progress-bar/ProgressBar.js +60 -54
  150. package/progress-bar/ProgressBar.stories.jsx +47 -12
  151. package/progress-bar/ProgressBar.test.js +110 -0
  152. package/progress-bar/types.d.ts +3 -4
  153. package/quick-nav/QuickNav.d.ts +4 -0
  154. package/quick-nav/QuickNav.js +117 -0
  155. package/quick-nav/QuickNav.stories.tsx +356 -0
  156. package/quick-nav/types.d.ts +21 -0
  157. package/quick-nav/types.js +5 -0
  158. package/radio-group/Radio.d.ts +4 -0
  159. package/radio-group/Radio.js +156 -0
  160. package/radio-group/RadioGroup.d.ts +4 -0
  161. package/radio-group/RadioGroup.js +283 -0
  162. package/radio-group/RadioGroup.stories.tsx +214 -0
  163. package/radio-group/RadioGroup.test.js +722 -0
  164. package/radio-group/types.d.ts +114 -0
  165. package/radio-group/types.js +5 -0
  166. package/resultsetTable/Icons.d.ts +7 -0
  167. package/resultsetTable/Icons.js +51 -0
  168. package/resultsetTable/ResultsetTable.js +49 -105
  169. package/resultsetTable/ResultsetTable.stories.tsx +56 -32
  170. package/resultsetTable/ResultsetTable.test.js +325 -0
  171. package/resultsetTable/types.d.ts +2 -2
  172. package/select/Icons.d.ts +10 -0
  173. package/select/Icons.js +93 -0
  174. package/select/Listbox.d.ts +4 -0
  175. package/select/Listbox.js +169 -0
  176. package/select/Option.d.ts +4 -0
  177. package/select/Option.js +97 -0
  178. package/select/Select.js +183 -382
  179. package/select/Select.stories.tsx +600 -201
  180. package/select/Select.test.js +2228 -0
  181. package/select/types.d.ts +53 -13
  182. package/sidenav/Sidenav.d.ts +6 -5
  183. package/sidenav/Sidenav.js +182 -52
  184. package/sidenav/Sidenav.stories.tsx +249 -132
  185. package/sidenav/Sidenav.test.js +44 -0
  186. package/sidenav/types.d.ts +50 -27
  187. package/slider/Slider.d.ts +2 -2
  188. package/slider/Slider.js +122 -96
  189. package/slider/Slider.stories.tsx +72 -9
  190. package/slider/Slider.test.js +250 -0
  191. package/slider/types.d.ts +10 -2
  192. package/spinner/Spinner.js +3 -3
  193. package/spinner/Spinner.stories.jsx +27 -0
  194. package/spinner/Spinner.test.js +64 -0
  195. package/switch/Switch.d.ts +2 -2
  196. package/switch/Switch.js +150 -67
  197. package/switch/Switch.stories.tsx +54 -43
  198. package/switch/Switch.test.js +225 -0
  199. package/switch/types.d.ts +12 -4
  200. package/table/Table.js +1 -1
  201. package/table/Table.stories.jsx +81 -1
  202. package/table/Table.test.js +26 -0
  203. package/tabs/Tab.d.ts +4 -0
  204. package/tabs/Tab.js +133 -0
  205. package/tabs/Tabs.d.ts +1 -1
  206. package/tabs/Tabs.js +364 -110
  207. package/tabs/Tabs.stories.tsx +122 -17
  208. package/tabs/Tabs.test.js +351 -0
  209. package/tabs/types.d.ts +39 -17
  210. package/tag/Tag.d.ts +1 -1
  211. package/tag/Tag.js +18 -28
  212. package/tag/Tag.stories.tsx +38 -28
  213. package/tag/Tag.test.js +60 -0
  214. package/tag/types.d.ts +23 -14
  215. package/text-input/Icons.d.ts +8 -0
  216. package/text-input/Icons.js +60 -0
  217. package/text-input/Suggestion.d.ts +4 -0
  218. package/text-input/Suggestion.js +84 -0
  219. package/text-input/Suggestions.d.ts +4 -0
  220. package/text-input/Suggestions.js +134 -0
  221. package/text-input/TextInput.js +219 -332
  222. package/text-input/TextInput.stories.tsx +309 -196
  223. package/text-input/TextInput.test.js +1724 -0
  224. package/text-input/types.d.ts +51 -13
  225. package/textarea/Textarea.js +20 -27
  226. package/textarea/Textarea.stories.jsx +96 -15
  227. package/textarea/Textarea.test.js +437 -0
  228. package/textarea/types.d.ts +18 -11
  229. package/toggle-group/ToggleGroup.d.ts +1 -1
  230. package/toggle-group/ToggleGroup.js +5 -4
  231. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  232. package/toggle-group/ToggleGroup.test.js +156 -0
  233. package/toggle-group/types.d.ts +9 -1
  234. package/typography/Typography.d.ts +4 -0
  235. package/typography/Typography.js +131 -0
  236. package/typography/Typography.stories.tsx +198 -0
  237. package/typography/types.d.ts +18 -0
  238. package/typography/types.js +5 -0
  239. package/useTheme.js +2 -2
  240. package/useTranslatedLabels.d.ts +2 -0
  241. package/useTranslatedLabels.js +20 -0
  242. package/utils/FocusLock.d.ts +13 -0
  243. package/utils/FocusLock.js +139 -0
  244. package/wizard/Wizard.d.ts +1 -1
  245. package/wizard/Wizard.js +58 -54
  246. package/wizard/Wizard.stories.tsx +48 -19
  247. package/wizard/Wizard.test.js +141 -0
  248. package/wizard/types.d.ts +10 -5
  249. package/ThemeContext.d.ts +0 -15
  250. package/ThemeContext.js +0 -243
  251. package/V3Select/V3Select.js +0 -455
  252. package/V3Select/index.d.ts +0 -27
  253. package/V3Textarea/V3Textarea.js +0 -260
  254. package/V3Textarea/index.d.ts +0 -27
  255. package/common/RequiredComponent.js +0 -32
  256. package/date/Date.js +0 -373
  257. package/date/index.d.ts +0 -27
  258. package/input-text/Icons.js +0 -22
  259. package/input-text/InputText.js +0 -611
  260. package/input-text/index.d.ts +0 -36
  261. package/list/List.d.ts +0 -8
  262. package/list/List.js +0 -47
  263. package/list/List.stories.tsx +0 -85
  264. package/radio/Radio.d.ts +0 -4
  265. package/radio/Radio.js +0 -174
  266. package/radio/Radio.stories.tsx +0 -192
  267. package/radio/types.d.ts +0 -54
  268. package/row/Row.d.ts +0 -11
  269. package/row/Row.js +0 -124
  270. package/row/Row.stories.tsx +0 -223
  271. package/stack/Stack.d.ts +0 -10
  272. package/stack/Stack.js +0 -94
  273. package/stack/Stack.stories.tsx +0 -150
  274. package/text/Text.d.ts +0 -7
  275. package/text/Text.js +0 -30
  276. package/text/Text.stories.tsx +0 -19
  277. package/toggle/Toggle.js +0 -186
  278. package/toggle/index.d.ts +0 -21
  279. package/upload/Upload.js +0 -201
  280. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  281. package/upload/buttons-upload/Icons.js +0 -40
  282. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  283. package/upload/dragAndDropArea/Icons.js +0 -39
  284. package/upload/file-upload/FileToUpload.js +0 -115
  285. package/upload/file-upload/Icons.js +0 -66
  286. package/upload/files-upload/FilesToUpload.js +0 -109
  287. package/upload/index.d.ts +0 -15
  288. package/upload/transaction/Icons.js +0 -160
  289. package/upload/transaction/Transaction.js +0 -104
  290. package/upload/transactions/Transactions.js +0 -94
  291. /package/{radio → badge}/types.js +0 -0
package/chip/Chip.js CHANGED
@@ -9,10 +9,10 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
13
 
14
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
+
16
16
  var _react = _interopRequireDefault(require("react"));
17
17
 
18
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
@@ -23,7 +23,7 @@ var _utils = require("../common/utils.js");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
26
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
26
+ var _templateObject, _templateObject2, _templateObject3;
27
27
 
28
28
  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); }
29
29
 
@@ -33,9 +33,7 @@ var DxcChip = function DxcChip(_ref) {
33
33
  var label = _ref.label,
34
34
  suffixIcon = _ref.suffixIcon,
35
35
  prefixIcon = _ref.prefixIcon,
36
- suffixIconSrc = _ref.suffixIconSrc,
37
36
  onClickSuffix = _ref.onClickSuffix,
38
- prefixIconSrc = _ref.prefixIconSrc,
39
37
  onClickPrefix = _ref.onClickPrefix,
40
38
  disabled = _ref.disabled,
41
39
  margin = _ref.margin,
@@ -47,7 +45,7 @@ var DxcChip = function DxcChip(_ref) {
47
45
  }, /*#__PURE__*/_react["default"].createElement(StyledDxcChip, {
48
46
  disabled: disabled,
49
47
  margin: margin
50
- }, prefixIcon ? /*#__PURE__*/_react["default"].createElement(IconContainer, {
48
+ }, prefixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
51
49
  disabled: disabled,
52
50
  prefixIcon: true,
53
51
  label: label,
@@ -57,20 +55,11 @@ var DxcChip = function DxcChip(_ref) {
57
55
  return onClickPrefix && !disabled && onClickPrefix();
58
56
  },
59
57
  interactuable: typeof onClickPrefix === "function" && !disabled
60
- }, (0, _typeof2["default"])(prefixIcon) === "object" ? prefixIcon : /*#__PURE__*/_react["default"].createElement(prefixIcon)) : prefixIconSrc && /*#__PURE__*/_react["default"].createElement(PrefixIconContainer, {
61
- disabled: disabled,
62
- src: prefixIconSrc,
63
- label: label,
64
- tabIndex: typeof onClickPrefix === "function" && !disabled ? tabIndex : -1,
65
- onClick: function onClick() {
66
- return onClickPrefix && !disabled && onClickPrefix();
67
- },
68
- interactuable: typeof onClickPrefix === "function" && !disabled
69
- }), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
70
- disabled: disabled,
71
- prefixIconSrc: prefixIconSrc,
72
- suffixIconSrc: suffixIconSrc
73
- }, label), suffixIcon ? /*#__PURE__*/_react["default"].createElement(IconContainer, {
58
+ }, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
59
+ src: prefixIcon
60
+ }) : prefixIcon), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
61
+ disabled: disabled
62
+ }, label), suffixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
74
63
  disabled: disabled,
75
64
  suffixIcon: true,
76
65
  mode: "suffix",
@@ -80,28 +69,13 @@ var DxcChip = function DxcChip(_ref) {
80
69
  return onClickSuffix && !disabled && onClickSuffix();
81
70
  },
82
71
  interactuable: typeof onClickSuffix === "function" && !disabled
83
- }, (0, _typeof2["default"])(suffixIcon) === "object" ? suffixIcon : /*#__PURE__*/_react["default"].createElement(suffixIcon)) : suffixIconSrc && /*#__PURE__*/_react["default"].createElement(SuffixIconContainer, {
84
- disabled: disabled,
85
- src: suffixIconSrc,
86
- label: label,
87
- tabIndex: typeof onClickSuffix === "function" && !disabled ? tabIndex : -1,
88
- onClick: function onClick() {
89
- return onClickSuffix && !disabled && onClickSuffix();
90
- },
91
- interactuable: typeof onClickSuffix === "function" && !disabled
92
- })));
72
+ }, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
73
+ src: suffixIcon
74
+ }) : suffixIcon)));
93
75
  };
94
76
 
95
77
  var getCursor = function getCursor(interactuable, disabled) {
96
- if (disabled) {
97
- return "cursor:not-allowed;";
98
- }
99
-
100
- if (interactuable) {
101
- return "cursor:pointer;";
102
- }
103
-
104
- return "cursor:default; outline:none;";
78
+ if (disabled) return "cursor: not-allowed;";else if (interactuable) return "cursor: pointer;";else return "cursor: default; outline:none;";
105
79
  };
106
80
 
107
81
  var StyledDxcChip = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n min-height: 40px;\n max-width: ", ";\n background-color: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n"])), function (_ref2) {
@@ -155,44 +129,26 @@ var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_
155
129
  return disabled && "not-allowed" || "default";
156
130
  });
157
131
 
158
- var SuffixIconContainer = _styledComponents["default"].img(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n margin-left: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
159
- return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
160
- }, function (props) {
161
- return getCursor(props.interactuable, props.disabled);
162
- }, function (props) {
163
- return (props.label || props.suffixIconSrc) && props.theme.iconSpacing || props.prefixIconSrc && "5px";
132
+ var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n color: ", ";\n ", "\n\n &:hover {\n color: ", ";\n }\n &:focus {\n outline-color: ", ";\n outline-width: ", ";\n ", "\n }\n &:active {\n color: ", ";\n }\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
133
+ return props.prefixIcon ? "margin-right: ".concat((props.label || props.suffixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";") : "margin-left: ".concat((props.label || props.prefixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";");
164
134
  }, function (props) {
165
- return props.theme.iconSize;
166
- }, function (props) {
167
- return props.theme.iconSize;
168
- });
169
-
170
- var PrefixIconContainer = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n margin-right: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
171
135
  return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
172
136
  }, function (props) {
173
137
  return getCursor(props.interactuable, props.disabled);
174
138
  }, function (props) {
175
- return (props.label || props.suffixIconSrc) && props.theme.iconSpacing || props.prefixIconSrc && "5px";
139
+ return !props.disabled && props.theme.hoverIconColor;
176
140
  }, function (props) {
177
- return props.theme.iconSize;
141
+ return !props.disabled && props.theme.focusColor;
178
142
  }, function (props) {
179
- return props.theme.iconSize;
180
- });
181
-
182
- var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n ", "\n width: ", ";\n height: ", ";\n overflow: hidden;\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n &:focus {\n outline-color: ", ";\n outline-width: 2px;\n ", "\n }\n"])), function (props) {
183
- return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
143
+ return !props.disabled && props.theme.focusBorderThickness;
184
144
  }, function (props) {
185
- return props.prefixIcon ? "margin-right: ".concat((props.label || props.suffixIcon || props.suffixIconSrc) && props.theme.iconSpacing || (props.prefixIcon || props.prefixIconSrc) && "0", ";") : "margin-left: ".concat((props.label || props.prefixIcon || props.prefixIconSrc) && props.theme.iconSpacing || (props.prefixIcon || props.prefixIconSrc) && "0", ";");
145
+ return props.disabled && "outline: none;";
186
146
  }, function (props) {
187
- return getCursor(props.interactuable, props.disabled);
147
+ return !props.disabled && props.theme.activeIconColor;
188
148
  }, function (props) {
189
149
  return props.theme.iconSize;
190
150
  }, function (props) {
191
151
  return props.theme.iconSize;
192
- }, function (props) {
193
- return props.theme.focusColor;
194
- }, function (props) {
195
- return props.disabled && "outline: none;";
196
152
  });
197
153
 
198
154
  var _default = DxcChip;
@@ -3,19 +3,49 @@ import { userEvent, within } from "@storybook/testing-library";
3
3
  import DxcChip from "./Chip";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
+ import { HalstackProvider } from "../HalstackContext";
6
7
 
7
8
  export default {
8
9
  title: "Chip",
9
10
  component: DxcChip,
10
11
  };
11
12
 
12
- const iconSVG = () => {
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
- );
13
+ const iconSVG = (
14
+ <svg
15
+ version="1.1"
16
+ id="Capa_1"
17
+ x="0px"
18
+ y="0px"
19
+ width="438.536px"
20
+ height="438.536px"
21
+ viewBox="0 0 438.536 438.536"
22
+ fill="currentColor"
23
+ >
24
+ <g>
25
+ <path
26
+ d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
27
+ C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
28
+ h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
29
+ C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
30
+ c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
31
+ c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
32
+ />
33
+ </g>
34
+ </svg>
35
+ );
36
+
37
+ const smallIconSVG = (
38
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" height="20" width="20">
39
+ <path d="m10 17-1.042-.938q-2.083-1.854-3.437-3.177-1.354-1.323-2.136-2.354Q2.604 9.5 2.302 8.646 2 7.792 2 6.896q0-1.854 1.271-3.125T6.396 2.5q1.021 0 1.979.438.958.437 1.625 1.229.667-.792 1.625-1.229.958-.438 1.979-.438 1.854 0 3.125 1.271T18 6.896q0 .896-.292 1.729-.291.833-1.073 1.854-.781 1.021-2.145 2.365-1.365 1.344-3.49 3.26Zm0-2.021q1.938-1.729 3.188-2.948 1.25-1.219 1.989-2.125.74-.906 1.031-1.614.292-.709.292-1.396 0-1.229-.833-2.063Q14.833 4 13.604 4q-.729 0-1.364.302-.636.302-1.094.844L10.417 6h-.834l-.729-.854q-.458-.542-1.114-.844Q7.083 4 6.396 4q-1.229 0-2.063.833-.833.834-.833 2.063 0 .687.271 1.364.271.678.989 1.573.719.896 1.98 2.125Q8 13.188 10 14.979Zm0-5.5Z" />
40
+ </svg>
41
+ );
42
+
43
+ const opinionatedTheme = {
44
+ chip: {
45
+ baseColor: "#e6e6e6",
46
+ fontColor: "#000000",
47
+ iconColor: "#4d4d4d",
48
+ },
19
49
  };
20
50
 
21
51
  export const Chromatic = () => (
@@ -25,20 +55,29 @@ export const Chromatic = () => (
25
55
  <DxcChip label="Default Chip" />
26
56
  </ExampleContainer>
27
57
  <ExampleContainer>
28
- <Title title="Chip with prefix" theme="light" level={4} />
29
- <DxcChip label="Chip with prefix" prefixIcon={iconSVG} />
58
+ <Title title="Chip with prefix SVG (small icon)" theme="light" level={4} />
59
+ <DxcChip label="Chip with prefix" prefixIcon={smallIconSVG} />
30
60
  </ExampleContainer>
31
61
  <ExampleContainer>
32
- <Title title="Chip with suffix" theme="light" level={4} />
62
+ <Title title="Chip with suffix SVG (large icon)" theme="light" level={4} />
33
63
  <DxcChip label="Chip with suffix" suffixIcon={iconSVG} />
34
64
  </ExampleContainer>
35
65
  <ExampleContainer>
36
- <Title title="Chip with prefix and suffix" theme="light" level={4} />
37
- <DxcChip label="Chip with prefix and suffix" prefixIcon={iconSVG} suffixIcon={iconSVG} />
66
+ <Title title="Chip with prefix (SVG) and suffix (URL)" theme="light" level={4} />
67
+ <DxcChip
68
+ label="Chip with prefix and suffix"
69
+ prefixIcon={iconSVG}
70
+ suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
71
+ />
38
72
  </ExampleContainer>
39
73
  <ExampleContainer>
40
74
  <Title title="Disabled chip" theme="light" level={4} />
41
- <DxcChip label="Disabled" disabled prefixIcon={iconSVG} suffixIcon={iconSVG} />
75
+ <DxcChip
76
+ label="Disabled"
77
+ disabled
78
+ prefixIcon={iconSVG}
79
+ suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
80
+ />
42
81
  </ExampleContainer>
43
82
  <ExampleContainer>
44
83
  <Title title="Chip with ellipsis" theme="light" level={4} />
@@ -95,6 +134,52 @@ export const Chromatic = () => (
95
134
  <Title title="Xxlarge margin" theme="light" level={4} />
96
135
  <DxcChip label="xxlarge" margin="xxlarge" />
97
136
  </ExampleContainer>
137
+ <Title title="Opinionated theme" theme="light" level={2} />
138
+ <ExampleContainer>
139
+ <Title title="Chip with prefix and suffix" theme="light" level={4} />
140
+ <HalstackProvider theme={opinionatedTheme}>
141
+ <DxcChip
142
+ label="Chip"
143
+ prefixIcon={iconSVG}
144
+ suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
145
+ />
146
+ </HalstackProvider>
147
+ </ExampleContainer>
148
+ <ExampleContainer>
149
+ <Title title="Chip with prefix and suffix" theme="light" level={4} />
150
+ <HalstackProvider theme={opinionatedTheme}>
151
+ <DxcChip
152
+ label="Chip"
153
+ disabled
154
+ prefixIcon={iconSVG}
155
+ suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
156
+ />
157
+ </HalstackProvider>
158
+ </ExampleContainer>
159
+ <ExampleContainer pseudoState="pseudo-hover">
160
+ <Title title="Hovered" theme="light" level={4} />
161
+ <HalstackProvider theme={opinionatedTheme}>
162
+ <DxcChip
163
+ label="Chip"
164
+ prefixIcon={iconSVG}
165
+ suffixIcon={iconSVG}
166
+ onClickPrefix={() => {}}
167
+ onClickSuffix={() => {}}
168
+ />
169
+ </HalstackProvider>
170
+ </ExampleContainer>
171
+ <ExampleContainer pseudoState="pseudo-active">
172
+ <Title title="Actived" theme="light" level={4} />
173
+ <HalstackProvider theme={opinionatedTheme}>
174
+ <DxcChip
175
+ label="Chip"
176
+ prefixIcon={iconSVG}
177
+ suffixIcon={iconSVG}
178
+ onClickPrefix={() => {}}
179
+ onClickSuffix={() => {}}
180
+ />
181
+ </HalstackProvider>
182
+ </ExampleContainer>
98
183
  </>
99
184
  );
100
185
  const ChipPrefixFocused = () => (
@@ -0,0 +1,56 @@
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 _Chip = _interopRequireDefault(require("./Chip"));
10
+
11
+ var _invision = _interopRequireDefault(require("../../app/src/images/invision.svg"));
12
+
13
+ describe("Chip component tests", function () {
14
+ test("Chip renders with correct text", function () {
15
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
16
+ label: "Chip"
17
+ })),
18
+ getByText = _render.getByText;
19
+
20
+ expect(getByText("Chip")).toBeTruthy();
21
+ });
22
+ test("Calls correct function when clicking on prefix icon", function () {
23
+ var onClick = jest.fn();
24
+
25
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
26
+ label: "Chip",
27
+ prefixIcon: _invision["default"],
28
+ onClickPrefix: onClick
29
+ })),
30
+ getByText = _render2.getByText,
31
+ getByRole = _render2.getByRole;
32
+
33
+ expect(getByText("Chip")).toBeTruthy();
34
+
35
+ _react2.fireEvent.click(getByRole("img"));
36
+
37
+ expect(onClick).toHaveBeenCalled();
38
+ });
39
+ test("Calls correct function when clicking on suffix icon", function () {
40
+ var onClick = jest.fn();
41
+
42
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
43
+ label: "Chip",
44
+ suffixIcon: _invision["default"],
45
+ onClickSuffix: onClick
46
+ })),
47
+ getByText = _render3.getByText,
48
+ getByRole = _render3.getByRole;
49
+
50
+ expect(getByText("Chip")).toBeTruthy();
51
+
52
+ _react2.fireEvent.click(getByRole("img"));
53
+
54
+ expect(onClick).toHaveBeenCalled();
55
+ });
56
+ });
package/chip/types.d.ts CHANGED
@@ -6,32 +6,24 @@ declare type Margin = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement> | React.FunctionComponent<React.SVGProps<SVGSVGElement>>;
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
10
  declare type Props = {
11
11
  /**
12
12
  * Text to be placed on the chip.
13
13
  */
14
14
  label?: string;
15
15
  /**
16
- * Element used as icon to be placed after the chip label.
16
+ * Element or path used as icon to be placed after the chip label.
17
17
  */
18
- suffixIcon?: SVG;
18
+ suffixIcon?: string | SVG;
19
19
  /**
20
- * Element used as icon to be placed before the chip label.
20
+ * Element or path used as icon to be placed before the chip label.
21
21
  */
22
- prefixIcon?: SVG;
23
- /**
24
- * @deprecated Path of the icon to be placed after the chip label.
25
- */
26
- suffixIconSrc?: string;
22
+ prefixIcon?: string | SVG;
27
23
  /**
28
24
  * This function will be called when the suffix is clicked.
29
25
  */
30
26
  onClickSuffix?: () => void;
31
- /**
32
- * @deprecated Path of the icon to be placed before the chip label.
33
- */
34
- prefixIconSrc?: string;
35
27
  /**
36
28
  * This function will be called when the prefix is clicked.
37
29
  */