@dxc-technology/halstack-react 0.0.0-0bd2807 → 0.0.0-0d4367e

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 (251) hide show
  1. package/BackgroundColorContext.d.ts +10 -0
  2. package/BackgroundColorContext.js +1 -4
  3. package/ThemeContext.d.ts +10 -0
  4. package/ThemeContext.js +26 -29
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +13 -23
  7. package/accordion/Accordion.stories.tsx +307 -0
  8. package/accordion/Accordion.test.js +72 -0
  9. package/accordion/types.d.ts +8 -8
  10. package/accordion-group/AccordionGroup.js +2 -2
  11. package/accordion-group/AccordionGroup.stories.tsx +225 -0
  12. package/accordion-group/AccordionGroup.test.js +133 -0
  13. package/accordion-group/types.d.ts +4 -8
  14. package/alert/Alert.js +2 -2
  15. package/alert/Alert.test.js +92 -0
  16. package/alert/types.d.ts +1 -1
  17. package/badge/Badge.d.ts +4 -0
  18. package/badge/Badge.js +1 -1
  19. package/badge/types.d.ts +4 -0
  20. package/badge/types.js +5 -0
  21. package/bleed/Bleed.d.ts +3 -0
  22. package/bleed/Bleed.js +84 -0
  23. package/bleed/Bleed.stories.tsx +342 -0
  24. package/bleed/types.d.ts +37 -0
  25. package/bleed/types.js +5 -0
  26. package/box/Box.js +2 -2
  27. package/box/Box.test.js +18 -0
  28. package/button/Button.d.ts +1 -1
  29. package/button/Button.js +13 -19
  30. package/button/Button.stories.tsx +6 -8
  31. package/button/Button.test.js +35 -0
  32. package/button/types.d.ts +5 -9
  33. package/card/Card.js +5 -6
  34. package/card/Card.stories.tsx +201 -0
  35. package/card/Card.test.js +50 -0
  36. package/card/ice-cream.jpg +0 -0
  37. package/card/types.d.ts +4 -6
  38. package/checkbox/Checkbox.d.ts +1 -1
  39. package/checkbox/Checkbox.js +9 -15
  40. package/checkbox/Checkbox.stories.tsx +14 -14
  41. package/checkbox/Checkbox.test.js +78 -0
  42. package/checkbox/types.d.ts +6 -2
  43. package/chip/Chip.d.ts +4 -0
  44. package/chip/Chip.js +16 -76
  45. package/chip/Chip.stories.tsx +6 -8
  46. package/chip/Chip.test.js +56 -0
  47. package/chip/types.d.ts +45 -0
  48. package/chip/types.js +5 -0
  49. package/common/variables.js +56 -260
  50. package/date-input/DateInput.js +54 -46
  51. package/date-input/DateInput.stories.tsx +7 -7
  52. package/date-input/DateInput.test.js +479 -0
  53. package/date-input/types.d.ts +16 -9
  54. package/dialog/Dialog.js +4 -3
  55. package/dialog/Dialog.test.js +40 -0
  56. package/dropdown/Dropdown.d.ts +1 -1
  57. package/dropdown/Dropdown.js +13 -35
  58. package/dropdown/Dropdown.stories.tsx +249 -0
  59. package/dropdown/Dropdown.test.js +189 -0
  60. package/dropdown/types.d.ts +6 -15
  61. package/file-input/FileInput.d.ts +4 -0
  62. package/file-input/FileInput.js +167 -109
  63. package/file-input/FileInput.stories.tsx +507 -0
  64. package/file-input/FileInput.test.js +457 -0
  65. package/file-input/FileItem.d.ts +14 -0
  66. package/file-input/FileItem.js +12 -21
  67. package/file-input/types.d.ts +112 -0
  68. package/file-input/types.js +5 -0
  69. package/footer/Footer.d.ts +1 -1
  70. package/footer/Footer.js +28 -36
  71. package/footer/{Footer.stories.jsx → Footer.stories.tsx} +1 -22
  72. package/footer/Footer.test.js +109 -0
  73. package/footer/Icons.d.ts +2 -0
  74. package/footer/Icons.js +3 -3
  75. package/footer/types.d.ts +21 -17
  76. package/header/Header.js +2 -2
  77. package/header/Header.stories.tsx +162 -0
  78. package/header/Header.test.js +63 -0
  79. package/header/Icons.d.ts +2 -0
  80. package/header/types.d.ts +4 -2
  81. package/heading/Heading.js +1 -1
  82. package/heading/Heading.stories.tsx +54 -0
  83. package/heading/Heading.test.js +186 -0
  84. package/inset/Inset.d.ts +3 -0
  85. package/inset/Inset.js +84 -0
  86. package/inset/Inset.stories.tsx +229 -0
  87. package/inset/types.d.ts +37 -0
  88. package/inset/types.js +5 -0
  89. package/layout/ApplicationLayout.d.ts +10 -0
  90. package/layout/ApplicationLayout.js +17 -21
  91. package/layout/ApplicationLayout.stories.tsx +171 -0
  92. package/layout/types.d.ts +57 -0
  93. package/layout/types.js +5 -0
  94. package/link/Link.js +10 -18
  95. package/link/Link.stories.tsx +82 -1
  96. package/link/Link.test.js +91 -0
  97. package/link/types.d.ts +5 -9
  98. package/list/List.d.ts +4 -0
  99. package/list/List.js +47 -0
  100. package/list/List.stories.tsx +95 -0
  101. package/list/types.d.ts +7 -0
  102. package/list/types.js +5 -0
  103. package/main.d.ts +11 -8
  104. package/main.js +62 -38
  105. package/number-input/NumberInput.js +14 -24
  106. package/number-input/NumberInput.stories.tsx +5 -5
  107. package/number-input/NumberInput.test.js +508 -0
  108. package/number-input/NumberInputContext.d.ts +4 -0
  109. package/number-input/NumberInputContext.js +5 -2
  110. package/number-input/numberInputContextTypes.d.ts +19 -0
  111. package/number-input/numberInputContextTypes.js +5 -0
  112. package/number-input/types.d.ts +4 -0
  113. package/package.json +5 -2
  114. package/paginator/Paginator.js +2 -8
  115. package/paginator/Paginator.test.js +266 -0
  116. package/password-input/PasswordInput.js +19 -18
  117. package/password-input/PasswordInput.stories.tsx +3 -3
  118. package/password-input/PasswordInput.test.js +183 -0
  119. package/password-input/types.d.ts +17 -10
  120. package/progress-bar/ProgressBar.js +4 -4
  121. package/progress-bar/ProgressBar.test.js +65 -0
  122. package/quick-nav/QuickNav.d.ts +4 -0
  123. package/quick-nav/QuickNav.js +66 -0
  124. package/quick-nav/QuickNav.stories.tsx +237 -0
  125. package/quick-nav/types.d.ts +21 -0
  126. package/quick-nav/types.js +5 -0
  127. package/radio/Radio.js +2 -2
  128. package/radio/Radio.test.js +71 -0
  129. package/radio/types.d.ts +2 -2
  130. package/radio-group/Radio.d.ts +4 -0
  131. package/radio-group/Radio.js +141 -0
  132. package/radio-group/RadioGroup.d.ts +4 -0
  133. package/radio-group/RadioGroup.js +280 -0
  134. package/radio-group/RadioGroup.stories.tsx +100 -0
  135. package/radio-group/RadioGroup.test.js +695 -0
  136. package/radio-group/types.d.ts +114 -0
  137. package/radio-group/types.js +5 -0
  138. package/resultsetTable/ResultsetTable.d.ts +4 -0
  139. package/resultsetTable/ResultsetTable.js +9 -29
  140. package/resultsetTable/ResultsetTable.stories.tsx +275 -0
  141. package/resultsetTable/ResultsetTable.test.js +306 -0
  142. package/resultsetTable/types.d.ts +67 -0
  143. package/resultsetTable/types.js +5 -0
  144. package/row/Row.d.ts +3 -0
  145. package/row/Row.js +127 -0
  146. package/row/Row.stories.tsx +237 -0
  147. package/row/types.d.ts +28 -0
  148. package/row/types.js +5 -0
  149. package/select/Icons.d.ts +10 -0
  150. package/select/Icons.js +93 -0
  151. package/select/Option.d.ts +4 -0
  152. package/select/Option.js +110 -0
  153. package/select/Select.d.ts +4 -0
  154. package/select/Select.js +116 -249
  155. package/select/Select.stories.tsx +91 -81
  156. package/select/Select.test.js +2057 -0
  157. package/select/types.d.ts +194 -0
  158. package/select/types.js +5 -0
  159. package/sidenav/Sidenav.js +2 -2
  160. package/sidenav/Sidenav.stories.tsx +182 -0
  161. package/sidenav/Sidenav.test.js +56 -0
  162. package/slider/Slider.d.ts +1 -1
  163. package/slider/Slider.js +6 -5
  164. package/slider/Slider.stories.tsx +8 -8
  165. package/slider/Slider.test.js +150 -0
  166. package/slider/types.d.ts +4 -0
  167. package/spinner/Spinner.js +2 -2
  168. package/spinner/Spinner.stories.jsx +1 -0
  169. package/spinner/Spinner.test.js +64 -0
  170. package/stack/Stack.d.ts +3 -0
  171. package/stack/Stack.js +97 -0
  172. package/stack/Stack.stories.tsx +164 -0
  173. package/stack/types.d.ts +24 -0
  174. package/stack/types.js +5 -0
  175. package/switch/Switch.d.ts +1 -1
  176. package/switch/Switch.js +21 -8
  177. package/switch/Switch.stories.tsx +7 -7
  178. package/switch/Switch.test.js +98 -0
  179. package/switch/types.d.ts +4 -0
  180. package/table/Table.js +3 -3
  181. package/table/Table.stories.jsx +2 -1
  182. package/table/Table.test.js +26 -0
  183. package/tabs/Tabs.d.ts +1 -1
  184. package/tabs/Tabs.js +20 -20
  185. package/tabs/Tabs.stories.tsx +118 -0
  186. package/tabs/Tabs.test.js +140 -0
  187. package/tabs/types.d.ts +29 -18
  188. package/tag/Tag.d.ts +1 -1
  189. package/tag/Tag.js +16 -23
  190. package/tag/Tag.stories.tsx +26 -29
  191. package/tag/Tag.test.js +60 -0
  192. package/tag/types.d.ts +23 -14
  193. package/text/Text.d.ts +7 -0
  194. package/text/Text.js +30 -0
  195. package/text/Text.stories.tsx +19 -0
  196. package/text-input/TextInput.d.ts +4 -0
  197. package/text-input/TextInput.js +62 -89
  198. package/text-input/TextInput.stories.tsx +474 -0
  199. package/text-input/TextInput.test.js +1725 -0
  200. package/text-input/types.d.ts +163 -0
  201. package/text-input/types.js +5 -0
  202. package/textarea/Textarea.d.ts +4 -0
  203. package/textarea/Textarea.js +37 -68
  204. package/textarea/Textarea.stories.jsx +37 -15
  205. package/textarea/Textarea.test.js +437 -0
  206. package/textarea/types.d.ts +134 -0
  207. package/textarea/types.js +5 -0
  208. package/toggle-group/ToggleGroup.d.ts +4 -0
  209. package/toggle-group/ToggleGroup.js +18 -46
  210. package/toggle-group/ToggleGroup.stories.tsx +27 -32
  211. package/toggle-group/ToggleGroup.test.js +156 -0
  212. package/toggle-group/types.d.ts +105 -0
  213. package/toggle-group/types.js +5 -0
  214. package/useTheme.d.ts +2 -0
  215. package/useTheme.js +1 -1
  216. package/wizard/Wizard.d.ts +1 -1
  217. package/wizard/Wizard.js +73 -18
  218. package/wizard/{Wizard.stories.jsx → Wizard.stories.tsx} +13 -23
  219. package/wizard/Wizard.test.js +141 -0
  220. package/wizard/types.d.ts +9 -9
  221. package/V3Select/V3Select.js +0 -455
  222. package/V3Select/index.d.ts +0 -27
  223. package/V3Textarea/V3Textarea.js +0 -260
  224. package/V3Textarea/index.d.ts +0 -27
  225. package/chip/index.d.ts +0 -22
  226. package/date/Date.js +0 -373
  227. package/date/index.d.ts +0 -27
  228. package/file-input/index.d.ts +0 -81
  229. package/input-text/Icons.js +0 -22
  230. package/input-text/InputText.js +0 -611
  231. package/input-text/index.d.ts +0 -36
  232. package/resultsetTable/index.d.ts +0 -19
  233. package/select/index.d.ts +0 -131
  234. package/text-input/index.d.ts +0 -135
  235. package/textarea/index.d.ts +0 -117
  236. package/toggle/Toggle.js +0 -186
  237. package/toggle/index.d.ts +0 -21
  238. package/toggle-group/index.d.ts +0 -21
  239. package/upload/Upload.js +0 -201
  240. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  241. package/upload/buttons-upload/Icons.js +0 -40
  242. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  243. package/upload/dragAndDropArea/Icons.js +0 -39
  244. package/upload/file-upload/FileToUpload.js +0 -115
  245. package/upload/file-upload/Icons.js +0 -66
  246. package/upload/files-upload/FilesToUpload.js +0 -109
  247. package/upload/index.d.ts +0 -15
  248. package/upload/transaction/Icons.js +0 -160
  249. package/upload/transaction/Transaction.js +0 -104
  250. package/upload/transactions/Transactions.js +0 -94
  251. package/wizard/Icons.js +0 -65
@@ -0,0 +1,78 @@
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 _Checkbox = _interopRequireDefault(require("./Checkbox"));
10
+
11
+ describe("Checkbox component tests", function () {
12
+ test("Checkbox renders with correct text", function () {
13
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
14
+ label: "Checkbox"
15
+ })),
16
+ getByText = _render.getByText;
17
+
18
+ expect(getByText("Checkbox")).toBeTruthy();
19
+ });
20
+ test("Calls correct function on click", function () {
21
+ var onChange = jest.fn();
22
+
23
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
24
+ label: "Checkbox",
25
+ onChange: onChange
26
+ })),
27
+ getByText = _render2.getByText;
28
+
29
+ _react2.fireEvent.click(getByText("Checkbox"));
30
+
31
+ expect(onChange).toHaveBeenCalled();
32
+ });
33
+ test("Uncontrolled checkbox", function () {
34
+ var onChange = jest.fn();
35
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
36
+ label: "Checkbox",
37
+ onChange: onChange
38
+ }));
39
+ var visibleCheckbox = component.getByText("Checkbox");
40
+ var input = component.getByRole("checkbox");
41
+ expect(input.checked).toBe(false);
42
+
43
+ _react2.fireEvent.click(visibleCheckbox);
44
+
45
+ expect(onChange).toHaveBeenCalled();
46
+ expect(onChange).toHaveBeenCalledWith(true);
47
+ expect(input.checked).toBe(true);
48
+ });
49
+ test("Controlled checkbox", function () {
50
+ var onChange = jest.fn();
51
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
52
+ label: "Checkbox",
53
+ checked: false,
54
+ onChange: onChange
55
+ }));
56
+ var input = component.getByRole("checkbox");
57
+ var visibleCheckbox = component.getByText("Checkbox");
58
+
59
+ _react2.fireEvent.click(visibleCheckbox);
60
+
61
+ expect(onChange).toHaveBeenCalled();
62
+ expect(onChange).toHaveBeenCalledWith(true);
63
+ expect(input.checked).toBe(false);
64
+ });
65
+ test("Renders with correct initial value and initial state when it is uncontrolled", function () {
66
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
67
+ label: "Default label",
68
+ defaultChecked: true,
69
+ value: "test-defaultChecked"
70
+ })),
71
+ getByRole = _render3.getByRole;
72
+
73
+ var input = getByRole("checkbox");
74
+ expect(input.checked).toBe(true);
75
+ expect(input.value).toBe("test-defaultChecked");
76
+ expect(input.getAttribute("aria-checked")).toBe("true");
77
+ });
78
+ });
@@ -6,6 +6,10 @@ declare type Margin = {
6
6
  right?: Space;
7
7
  };
8
8
  declare type Props = {
9
+ /**
10
+ * Initial state of the checkbox, only when it is uncontrolled.
11
+ */
12
+ defaultChecked?: boolean;
9
13
  /**
10
14
  * If true, the component is checked. If undefined the component will be
11
15
  * uncontrolled and the value will be managed internally by the component.
@@ -19,7 +23,7 @@ declare type Props = {
19
23
  /**
20
24
  * Text to be placed next to the checkbox.
21
25
  */
22
- label: string;
26
+ label?: string;
23
27
  /**
24
28
  * Whether the label should appear after or before the checkbox.
25
29
  */
@@ -49,7 +53,7 @@ declare type Props = {
49
53
  */
50
54
  margin?: Space | Margin;
51
55
  /**
52
- * Size of the component ('small' | 'medium' | 'large' | 'fillParent' | 'fitContent').
56
+ * Size of the component.
53
57
  */
54
58
  size?: "small" | "medium" | "large" | "fillParent" | "fitContent";
55
59
  /**
package/chip/Chip.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import ChipPropsType from "./types";
3
+ declare const DxcChip: ({ label, suffixIcon, prefixIcon, onClickSuffix, onClickPrefix, disabled, margin, tabIndex, }: ChipPropsType) => JSX.Element;
4
+ export default DxcChip;
package/chip/Chip.js CHANGED
@@ -9,23 +9,19 @@ 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 _react = _interopRequireDefault(require("react"));
19
17
 
20
18
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
19
 
22
- var _propTypes = _interopRequireDefault(require("prop-types"));
23
-
24
20
  var _variables = require("../common/variables.js");
25
21
 
26
22
  var _utils = require("../common/utils.js");
27
23
 
28
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
24
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
29
25
 
30
26
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
31
27
 
@@ -37,9 +33,7 @@ var DxcChip = function DxcChip(_ref) {
37
33
  var label = _ref.label,
38
34
  suffixIcon = _ref.suffixIcon,
39
35
  prefixIcon = _ref.prefixIcon,
40
- suffixIconSrc = _ref.suffixIconSrc,
41
36
  onClickSuffix = _ref.onClickSuffix,
42
- prefixIconSrc = _ref.prefixIconSrc,
43
37
  onClickPrefix = _ref.onClickPrefix,
44
38
  disabled = _ref.disabled,
45
39
  margin = _ref.margin,
@@ -51,49 +45,33 @@ var DxcChip = function DxcChip(_ref) {
51
45
  }, /*#__PURE__*/_react["default"].createElement(StyledDxcChip, {
52
46
  disabled: disabled,
53
47
  margin: margin
54
- }, prefixIcon ? /*#__PURE__*/_react["default"].createElement(IconContainer, {
48
+ }, prefixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
55
49
  disabled: disabled,
56
50
  prefixIcon: true,
57
51
  label: label,
58
52
  mode: "prefix",
59
53
  tabIndex: typeof onClickPrefix === "function" && !disabled ? tabIndex : -1,
60
54
  onClick: function onClick() {
61
- return onClickPrefix && !disabled && onClickPrefix(label);
62
- },
63
- interactuable: typeof onClickPrefix === "function" && !disabled
64
- }, (0, _typeof2["default"])(prefixIcon) === "object" ? prefixIcon : /*#__PURE__*/_react["default"].createElement(prefixIcon)) : prefixIconSrc && /*#__PURE__*/_react["default"].createElement(PrefixIconContainer, {
65
- disabled: disabled,
66
- src: prefixIconSrc,
67
- label: label,
68
- tabIndex: typeof onClickPrefix === "function" && !disabled ? tabIndex : -1,
69
- onClick: function onClick() {
70
- return onClickPrefix && !disabled && onClickPrefix(label);
55
+ return onClickPrefix && !disabled && onClickPrefix();
71
56
  },
72
57
  interactuable: typeof onClickPrefix === "function" && !disabled
73
- }), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
74
- disabled: disabled,
75
- prefixIconSrc: prefixIconSrc,
76
- suffixIconSrc: suffixIconSrc
77
- }, label), suffixIcon ? /*#__PURE__*/_react["default"].createElement(IconContainer, {
58
+ }, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement(PrefixIconContainer, {
59
+ src: prefixIcon
60
+ }) : prefixIcon), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
61
+ disabled: disabled
62
+ }, label), suffixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
78
63
  disabled: disabled,
79
64
  suffixIcon: true,
80
65
  mode: "suffix",
81
66
  label: label,
82
67
  tabIndex: typeof onClickSuffix === "function" && !disabled ? tabIndex : -1,
83
68
  onClick: function onClick() {
84
- return onClickSuffix && !disabled && onClickSuffix(label);
69
+ return onClickSuffix && !disabled && onClickSuffix();
85
70
  },
86
71
  interactuable: typeof onClickSuffix === "function" && !disabled
87
- }, (0, _typeof2["default"])(suffixIcon) === "object" ? suffixIcon : /*#__PURE__*/_react["default"].createElement(suffixIcon)) : suffixIconSrc && /*#__PURE__*/_react["default"].createElement(SuffixIconContainer, {
88
- disabled: disabled,
89
- src: suffixIconSrc,
90
- label: label,
91
- tabIndex: typeof onClickSuffix === "function" && !disabled ? tabIndex : -1,
92
- onClick: function onClick() {
93
- return onClickSuffix && !disabled && onClickSuffix(label);
94
- },
95
- interactuable: typeof onClickSuffix === "function" && !disabled
96
- })));
72
+ }, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement(SuffixIconContainer, {
73
+ src: suffixIcon
74
+ }) : suffixIcon)));
97
75
  };
98
76
 
99
77
  var getCursor = function getCursor(interactuable, disabled) {
@@ -159,34 +137,14 @@ var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_
159
137
  return disabled && "not-allowed" || "default";
160
138
  });
161
139
 
162
- var SuffixIconContainer = _styledComponents["default"].img(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n margin-left: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
163
- return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
164
- }, function (props) {
165
- return getCursor(props.interactuable, props.disabled);
166
- }, function (props) {
167
- return (props.label || props.suffixIconSrc) && props.theme.iconSpacing || props.prefixIconSrc && "5px";
168
- }, function (props) {
169
- return props.theme.iconSize;
170
- }, function (props) {
171
- return props.theme.iconSize;
172
- });
140
+ var SuffixIconContainer = _styledComponents["default"].img(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])([""])));
173
141
 
174
- var PrefixIconContainer = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n margin-right: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
175
- return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
176
- }, function (props) {
177
- return getCursor(props.interactuable, props.disabled);
178
- }, function (props) {
179
- return (props.label || props.suffixIconSrc) && props.theme.iconSpacing || props.prefixIconSrc && "5px";
180
- }, function (props) {
181
- return props.theme.iconSize;
182
- }, function (props) {
183
- return props.theme.iconSize;
184
- });
142
+ var PrefixIconContainer = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])([""])));
185
143
 
186
144
  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) {
187
145
  return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
188
146
  }, function (props) {
189
- 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", ";");
147
+ 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", ";");
190
148
  }, function (props) {
191
149
  return getCursor(props.interactuable, props.disabled);
192
150
  }, function (props) {
@@ -199,23 +157,5 @@ var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templ
199
157
  return props.disabled && "outline: none;";
200
158
  });
201
159
 
202
- DxcChip.propTypes = {
203
- label: _propTypes["default"].string,
204
- disabled: _propTypes["default"].bool,
205
- theme: _propTypes["default"].oneOf(["dark", "light"]),
206
- suffixIcon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
207
- prefixIcon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
208
- suffixIconSrc: _propTypes["default"].string,
209
- prefixIconSrc: _propTypes["default"].string,
210
- onClickSuffix: _propTypes["default"].func,
211
- onClickPrefix: _propTypes["default"].func,
212
- margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
213
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
214
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
215
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
216
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
217
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
218
- tabIndex: _propTypes["default"].number
219
- };
220
160
  var _default = DxcChip;
221
161
  exports["default"] = _default;
@@ -9,14 +9,12 @@ export default {
9
9
  component: DxcChip,
10
10
  };
11
11
 
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
- );
19
- };
12
+ const iconSVG = (
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
+ );
20
18
 
21
19
  export const Chromatic = () => (
22
20
  <>
@@ -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
+ });
@@ -0,0 +1,45 @@
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.SVGProps<SVGSVGElement>;
10
+ declare type Props = {
11
+ /**
12
+ * Text to be placed on the chip.
13
+ */
14
+ label?: string;
15
+ /**
16
+ * Element or path used as icon to be placed after the chip label.
17
+ */
18
+ suffixIcon?: string | SVG;
19
+ /**
20
+ * Element or path used as icon to be placed before the chip label.
21
+ */
22
+ prefixIcon?: string | SVG;
23
+ /**
24
+ * This function will be called when the suffix is clicked.
25
+ */
26
+ onClickSuffix?: () => void;
27
+ /**
28
+ * This function will be called when the prefix is clicked.
29
+ */
30
+ onClickPrefix?: () => void;
31
+ /**
32
+ * If true, the component will be disabled.
33
+ */
34
+ disabled?: boolean;
35
+ /**
36
+ * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
37
+ * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
38
+ */
39
+ margin?: Space | Margin;
40
+ /**
41
+ * Value of the tabindex attribute.
42
+ */
43
+ tabIndex?: number;
44
+ };
45
+ export default Props;
package/chip/types.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });