@dxc-technology/halstack-react 0.0.0-ff43881 → 0.0.0-ff5083e

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 (209) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +295 -0
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +7 -28
  5. package/accordion/Accordion.stories.tsx +11 -11
  6. package/accordion/Accordion.test.js +72 -0
  7. package/accordion/types.d.ts +4 -0
  8. package/accordion-group/AccordionGroup.d.ts +1 -1
  9. package/accordion-group/AccordionGroup.js +13 -15
  10. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  11. package/accordion-group/AccordionGroup.test.js +151 -0
  12. package/accordion-group/types.d.ts +4 -0
  13. package/alert/Alert.js +4 -1
  14. package/alert/Alert.test.js +92 -0
  15. package/badge/Badge.d.ts +1 -1
  16. package/badge/Badge.js +5 -3
  17. package/badge/types.d.ts +1 -0
  18. package/bleed/Bleed.js +1 -34
  19. package/bleed/Bleed.stories.tsx +31 -32
  20. package/bleed/types.d.ts +25 -1
  21. package/box/Box.js +22 -32
  22. package/box/Box.test.js +18 -0
  23. package/bulleted-list/BulletedList.d.ts +7 -0
  24. package/bulleted-list/BulletedList.js +120 -0
  25. package/bulleted-list/BulletedList.stories.tsx +203 -0
  26. package/bulleted-list/types.d.ts +11 -0
  27. package/{list → bulleted-list}/types.js +0 -0
  28. package/button/Button.js +14 -11
  29. package/button/Button.test.js +35 -0
  30. package/card/Card.js +24 -27
  31. package/card/Card.test.js +50 -0
  32. package/checkbox/Checkbox.d.ts +1 -1
  33. package/checkbox/Checkbox.js +43 -39
  34. package/checkbox/Checkbox.stories.tsx +124 -128
  35. package/checkbox/Checkbox.test.js +78 -0
  36. package/checkbox/types.d.ts +7 -3
  37. package/chip/Chip.test.js +56 -0
  38. package/common/variables.js +197 -322
  39. package/date-input/DateInput.js +53 -39
  40. package/date-input/DateInput.stories.tsx +7 -7
  41. package/date-input/DateInput.test.js +479 -0
  42. package/date-input/types.d.ts +16 -9
  43. package/dialog/Dialog.js +4 -32
  44. package/dialog/Dialog.test.js +40 -0
  45. package/dropdown/Dropdown.js +13 -17
  46. package/dropdown/Dropdown.test.js +189 -0
  47. package/file-input/FileInput.js +9 -6
  48. package/file-input/FileInput.test.js +457 -0
  49. package/file-input/FileItem.js +7 -5
  50. package/footer/Footer.js +15 -88
  51. package/footer/Footer.test.js +109 -0
  52. package/header/Header.js +27 -48
  53. package/header/Header.stories.tsx +46 -36
  54. package/header/Header.test.js +79 -0
  55. package/heading/Heading.test.js +186 -0
  56. package/inset/Inset.js +1 -34
  57. package/inset/Inset.stories.tsx +32 -32
  58. package/inset/types.d.ts +25 -1
  59. package/layout/ApplicationLayout.d.ts +4 -3
  60. package/layout/ApplicationLayout.js +82 -114
  61. package/layout/ApplicationLayout.stories.tsx +14 -59
  62. package/layout/Icons.d.ts +5 -0
  63. package/layout/Icons.js +13 -2
  64. package/layout/SidenavContext.d.ts +5 -0
  65. package/layout/SidenavContext.js +19 -0
  66. package/layout/types.d.ts +5 -10
  67. package/link/Link.d.ts +3 -2
  68. package/link/Link.js +57 -74
  69. package/link/Link.stories.tsx +87 -52
  70. package/link/Link.test.js +83 -0
  71. package/link/types.d.ts +7 -23
  72. package/main.d.ts +7 -10
  73. package/main.js +33 -51
  74. package/number-input/NumberInput.js +11 -18
  75. package/number-input/NumberInput.stories.tsx +5 -5
  76. package/number-input/NumberInput.test.js +506 -0
  77. package/number-input/types.d.ts +17 -10
  78. package/package.json +6 -5
  79. package/paginator/Paginator.js +17 -38
  80. package/paginator/Paginator.test.js +266 -0
  81. package/paragraph/Paragraph.d.ts +6 -0
  82. package/paragraph/Paragraph.js +38 -0
  83. package/paragraph/Paragraph.stories.tsx +44 -0
  84. package/password-input/PasswordInput.js +7 -4
  85. package/password-input/PasswordInput.test.js +180 -0
  86. package/password-input/types.d.ts +14 -11
  87. package/progress-bar/ProgressBar.js +1 -1
  88. package/progress-bar/ProgressBar.stories.jsx +11 -11
  89. package/progress-bar/ProgressBar.test.js +65 -0
  90. package/quick-nav/QuickNav.d.ts +4 -0
  91. package/quick-nav/QuickNav.js +112 -0
  92. package/quick-nav/QuickNav.stories.tsx +237 -0
  93. package/quick-nav/types.d.ts +21 -0
  94. package/{radio → quick-nav}/types.js +0 -0
  95. package/radio-group/Radio.d.ts +1 -1
  96. package/radio-group/Radio.js +25 -24
  97. package/radio-group/RadioGroup.js +46 -37
  98. package/radio-group/RadioGroup.stories.tsx +60 -39
  99. package/radio-group/RadioGroup.test.js +530 -83
  100. package/radio-group/types.d.ts +80 -2
  101. package/resultsetTable/ResultsetTable.test.js +306 -0
  102. package/row/types.d.ts +18 -0
  103. package/select/Icons.d.ts +10 -0
  104. package/select/Icons.js +93 -0
  105. package/select/Listbox.d.ts +4 -0
  106. package/select/Listbox.js +152 -0
  107. package/select/Option.d.ts +4 -0
  108. package/select/Option.js +110 -0
  109. package/select/Select.js +109 -327
  110. package/select/Select.stories.tsx +103 -81
  111. package/select/Select.test.js +2120 -0
  112. package/select/types.d.ts +54 -11
  113. package/sidenav/Sidenav.d.ts +1 -1
  114. package/sidenav/Sidenav.js +20 -9
  115. package/sidenav/Sidenav.test.js +56 -0
  116. package/slider/Slider.d.ts +1 -1
  117. package/slider/Slider.js +2 -1
  118. package/slider/Slider.stories.tsx +8 -8
  119. package/slider/Slider.test.js +150 -0
  120. package/slider/types.d.ts +4 -0
  121. package/spinner/Spinner.js +1 -1
  122. package/spinner/Spinner.test.js +64 -0
  123. package/stack/types.d.ts +15 -0
  124. package/switch/Switch.d.ts +1 -1
  125. package/switch/Switch.js +35 -19
  126. package/switch/Switch.stories.tsx +14 -14
  127. package/switch/Switch.test.js +98 -0
  128. package/switch/types.d.ts +6 -2
  129. package/table/Table.test.js +26 -0
  130. package/tabs/Tabs.d.ts +1 -1
  131. package/tabs/Tabs.js +9 -11
  132. package/tabs/Tabs.stories.tsx +0 -8
  133. package/tabs/Tabs.test.js +140 -0
  134. package/tabs/types.d.ts +4 -0
  135. package/tabs-nav/NavTabs.d.ts +8 -0
  136. package/tabs-nav/NavTabs.js +125 -0
  137. package/tabs-nav/NavTabs.stories.tsx +170 -0
  138. package/tabs-nav/NavTabs.test.js +82 -0
  139. package/tabs-nav/Tab.d.ts +4 -0
  140. package/tabs-nav/Tab.js +132 -0
  141. package/tabs-nav/types.d.ts +53 -0
  142. package/tabs-nav/types.js +5 -0
  143. package/tag/Tag.js +14 -19
  144. package/tag/Tag.stories.tsx +12 -8
  145. package/tag/Tag.test.js +60 -0
  146. package/text-input/Suggestion.d.ts +4 -0
  147. package/text-input/Suggestion.js +55 -0
  148. package/text-input/TextInput.js +56 -80
  149. package/text-input/TextInput.stories.tsx +30 -12
  150. package/text-input/TextInput.test.js +1712 -0
  151. package/text-input/types.d.ts +31 -12
  152. package/textarea/Textarea.js +20 -27
  153. package/textarea/Textarea.stories.jsx +33 -12
  154. package/textarea/Textarea.test.js +437 -0
  155. package/textarea/types.d.ts +18 -11
  156. package/toggle-group/ToggleGroup.d.ts +1 -1
  157. package/toggle-group/ToggleGroup.js +5 -4
  158. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  159. package/toggle-group/ToggleGroup.test.js +156 -0
  160. package/toggle-group/types.d.ts +8 -0
  161. package/typography/Typography.d.ts +4 -0
  162. package/typography/Typography.js +131 -0
  163. package/typography/Typography.stories.tsx +175 -0
  164. package/typography/types.d.ts +18 -0
  165. package/typography/types.js +5 -0
  166. package/typography/typographyContextTypes.d.ts +16 -0
  167. package/typography/typographyContextTypes.js +5 -0
  168. package/useTheme.js +2 -2
  169. package/useTranslatedLabels.d.ts +2 -0
  170. package/useTranslatedLabels.js +20 -0
  171. package/wizard/Wizard.d.ts +1 -1
  172. package/wizard/Wizard.js +55 -44
  173. package/wizard/Wizard.stories.tsx +13 -23
  174. package/wizard/Wizard.test.js +141 -0
  175. package/wizard/types.d.ts +6 -2
  176. package/ThemeContext.d.ts +0 -15
  177. package/ThemeContext.js +0 -243
  178. package/V3Select/V3Select.js +0 -455
  179. package/V3Select/index.d.ts +0 -27
  180. package/V3Textarea/V3Textarea.js +0 -260
  181. package/V3Textarea/index.d.ts +0 -27
  182. package/date/Date.js +0 -373
  183. package/date/index.d.ts +0 -27
  184. package/input-text/Icons.js +0 -22
  185. package/input-text/InputText.js +0 -611
  186. package/input-text/index.d.ts +0 -36
  187. package/list/List.d.ts +0 -4
  188. package/list/List.js +0 -47
  189. package/list/List.stories.tsx +0 -95
  190. package/list/types.d.ts +0 -7
  191. package/radio/Radio.d.ts +0 -4
  192. package/radio/Radio.js +0 -174
  193. package/radio/Radio.stories.tsx +0 -192
  194. package/radio/types.d.ts +0 -54
  195. package/text/Text.d.ts +0 -7
  196. package/text/Text.js +0 -30
  197. package/text/Text.stories.tsx +0 -19
  198. package/upload/Upload.js +0 -201
  199. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  200. package/upload/buttons-upload/Icons.js +0 -40
  201. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  202. package/upload/dragAndDropArea/Icons.js +0 -39
  203. package/upload/file-upload/FileToUpload.js +0 -115
  204. package/upload/file-upload/Icons.js +0 -66
  205. package/upload/files-upload/FilesToUpload.js +0 -109
  206. package/upload/index.d.ts +0 -15
  207. package/upload/transaction/Icons.js +0 -160
  208. package/upload/transaction/Transaction.js +0 -104
  209. package/upload/transactions/Transactions.js +0 -94
@@ -21,14 +21,16 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
22
  var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
23
23
 
24
- var _RequiredComponent = _interopRequireDefault(require("../common/RequiredComponent"));
25
-
26
24
  var _variables = require("../common/variables.js");
27
25
 
28
26
  var _utils = require("../common/utils.js");
29
27
 
28
+ var _uuid = require("uuid");
29
+
30
30
  var _useTheme = _interopRequireDefault(require("../useTheme"));
31
31
 
32
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
33
+
32
34
  var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
33
35
 
34
36
  var _templateObject, _templateObject2, _templateObject3;
@@ -39,6 +41,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
39
41
 
40
42
  var DxcCheckbox = function DxcCheckbox(_ref) {
41
43
  var checked = _ref.checked,
44
+ _ref$defaultChecked = _ref.defaultChecked,
45
+ defaultChecked = _ref$defaultChecked === void 0 ? false : _ref$defaultChecked,
42
46
  value = _ref.value,
43
47
  _ref$label = _ref.label,
44
48
  label = _ref$label === void 0 ? "" : _ref$label,
@@ -48,27 +52,34 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
48
52
  name = _ref$name === void 0 ? "" : _ref$name,
49
53
  _ref$disabled = _ref.disabled,
50
54
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
55
+ _ref$optional = _ref.optional,
56
+ optional = _ref$optional === void 0 ? false : _ref$optional,
51
57
  onChange = _ref.onChange,
52
- _ref$required = _ref.required,
53
- required = _ref$required === void 0 ? false : _ref$required,
54
58
  margin = _ref.margin,
55
59
  _ref$size = _ref.size,
56
60
  size = _ref$size === void 0 ? "fitContent" : _ref$size,
57
61
  _ref$tabIndex = _ref.tabIndex,
58
62
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
59
63
 
60
- var _useState = (0, _react.useState)(false),
61
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
62
- innerChecked = _useState2[0],
63
- setInnerChecked = _useState2[1];
64
+ var _useState = (0, _react.useState)("checkbox-".concat((0, _uuid.v4)())),
65
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
66
+ switchId = _useState2[0];
64
67
 
65
- var _useState3 = (0, _react.useState)(false),
68
+ var labelId = "label-".concat(switchId);
69
+
70
+ var _useState3 = (0, _react.useState)(defaultChecked),
66
71
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
67
- isLabelHovered = _useState4[0],
68
- setIsLabelHovered = _useState4[1];
72
+ innerChecked = _useState4[0],
73
+ setInnerChecked = _useState4[1];
74
+
75
+ var _useState5 = (0, _react.useState)(false),
76
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
77
+ isLabelHovered = _useState6[0],
78
+ setIsLabelHovered = _useState6[1];
69
79
 
70
80
  var colorsTheme = (0, _useTheme["default"])();
71
81
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
82
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
72
83
 
73
84
  var handlerCheckboxChange = function handlerCheckboxChange(checkboxValue) {
74
85
  if (checked === undefined) {
@@ -89,6 +100,17 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
89
100
  setIsLabelHovered(!isLabelHovered);
90
101
  };
91
102
 
103
+ var labelComponent = /*#__PURE__*/_react["default"].createElement(LabelContainer, {
104
+ id: labelId,
105
+ labelPosition: labelPosition,
106
+ onClick: disabled === true ? function () {} : handlerCheckboxChange,
107
+ disabled: disabled,
108
+ className: "labelContainer",
109
+ backgroundType: backgroundType,
110
+ onMouseOver: handleLabelHover,
111
+ onMouseOut: handleLabelHover
112
+ }, labelPosition === "before" ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, label, " ", optional && /*#__PURE__*/_react["default"].createElement("span", null, translatedLabels.formFields.optionalLabel)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, optional && /*#__PURE__*/_react["default"].createElement("span", null, "(Optional)"), " ", label));
113
+
92
114
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
93
115
  theme: colorsTheme.checkbox
94
116
  }, /*#__PURE__*/_react["default"].createElement(CheckboxContainer, {
@@ -101,13 +123,13 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
101
123
  size: size,
102
124
  backgroundType: backgroundType,
103
125
  isLabelHovered: isLabelHovered
104
- }, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
105
- checked: checked != undefined ? checked : innerChecked,
126
+ }, label && labelPosition === "before" && labelComponent, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
127
+ checked: checked !== null && checked !== void 0 ? checked : innerChecked,
106
128
  inputProps: {
107
129
  name: name,
108
- "aria-label": label,
130
+ "aria-labelledby": labelId,
109
131
  role: "checkbox",
110
- "aria-checked": checked != undefined ? checked : innerChecked
132
+ "aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked
111
133
  },
112
134
  onChange: handlerCheckboxChange,
113
135
  value: value,
@@ -118,17 +140,9 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
118
140
  }), /*#__PURE__*/_react["default"].createElement(CheckboxBlackBack, {
119
141
  labelPosition: labelPosition,
120
142
  disabled: disabled,
121
- checked: checked != undefined ? checked : innerChecked,
143
+ checked: checked !== null && checked !== void 0 ? checked : innerChecked,
122
144
  backgroundType: backgroundType
123
- }), required && /*#__PURE__*/_react["default"].createElement(_RequiredComponent["default"], null), label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
124
- labelPosition: labelPosition,
125
- onClick: disabled === true ? function (e) {} : handlerCheckboxChange,
126
- disabled: disabled,
127
- className: "labelContainer",
128
- backgroundType: backgroundType,
129
- onMouseOver: handleLabelHover,
130
- onMouseOut: handleLabelHover
131
- }, label)));
145
+ }), label && labelPosition === "after" && labelComponent));
132
146
  };
133
147
 
134
148
  var sizes = {
@@ -151,19 +165,15 @@ var getDisabledColor = function getDisabledColor(props, element) {
151
165
  switch (element) {
152
166
  case "check":
153
167
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckColorOnDark : props.theme.disabledCheckColor;
154
- break;
155
168
 
156
169
  case "background":
157
170
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBackgroundColorCheckedOnDark : props.theme.disabledBackgroundColorChecked;
158
- break;
159
171
 
160
172
  case "border":
161
173
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;
162
- break;
163
174
 
164
175
  case "label":
165
176
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledFontColorOnDark : props.theme.disabledFontColor;
166
- break;
167
177
  }
168
178
  };
169
179
 
@@ -171,35 +181,31 @@ var getNotDisabledColor = function getNotDisabledColor(props, element) {
171
181
  switch (element) {
172
182
  case "check":
173
183
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkColorOnDark : props.theme.checkColor;
174
- break;
175
184
 
176
185
  case "background":
177
186
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.backgroundColorCheckedOnDark : props.theme.backgroundColorChecked;
178
- break;
179
187
 
180
188
  case "border":
181
189
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.borderColorOnDark : props.theme.borderColor;
182
- break;
183
190
 
184
191
  case "label":
185
192
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
186
- break;
187
193
  }
188
194
  };
189
195
 
190
- var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n cursor: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
196
+ var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n cursor: ", ";\n"])), function (props) {
191
197
  return props.disabled ? getDisabledColor(props, "label") : getNotDisabledColor(props, "label");
192
- }, function (props) {
193
- return props.disabled ? "not-allowed" : "pointer";
194
198
  }, function (props) {
195
199
  return props.theme.fontFamily;
196
200
  }, function (props) {
197
201
  return props.theme.fontSize;
198
202
  }, function (props) {
199
203
  return props.theme.fontWeight;
204
+ }, function (props) {
205
+ return props.disabled ? "not-allowed" : "pointer";
200
206
  });
201
207
 
202
- var CheckboxContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n width: ", ";\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n position: relative;\n flex-direction: ", ";\n .MuiCheckbox-colorSecondary {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n &.Mui-disabled {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n opacity: 0.34;\n }\n }\n }\n &.Mui-checked {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n\n &:hover {\n background-color: transparent;\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n background-color: transparent;\n color: ", ";\n }\n }\n }\n }\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n width: 24px;\n height: 24px;\n }\n }\n }\n\n .MuiIconButton-colorSecondary {\n &:hover {\n background-color: transparent;\n }\n }\n .MuiButtonBase-root {\n &:hover {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n }\n\n &.Mui-focusVisible {\n .MuiIconButton-label {\n box-shadow: 0 0 0 2px\n ", ";\n }\n }\n z-index: 1;\n margin-left: ", ";\n margin-right: ", ";\n padding: 0px;\n left: ", ";\n right: ", ";\n }\n"])), function (props) {
208
+ var CheckboxContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n width: ", ";\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n position: relative;\n .MuiCheckbox-colorSecondary {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n &.Mui-disabled {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n opacity: 0.34;\n }\n }\n }\n &.Mui-checked {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n\n &:hover {\n background-color: transparent;\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n background-color: transparent;\n color: ", ";\n }\n }\n }\n }\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n width: 24px;\n height: 24px;\n }\n }\n }\n\n .MuiIconButton-colorSecondary {\n &:hover {\n background-color: transparent;\n }\n }\n .MuiButtonBase-root {\n &:hover {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n }\n\n &.Mui-focusVisible {\n .MuiIconButton-label {\n border-radius: 2px;\n outline: 2px solid\n ", ";\n outline-offset: -1px;\n }\n }\n z-index: 1;\n margin-left: ", ";\n margin-right: ", ";\n padding: 0px;\n left: ", ";\n right: ", ";\n }\n"])), function (props) {
203
209
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
204
210
  }, function (props) {
205
211
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
@@ -213,8 +219,6 @@ var CheckboxContainer = _styledComponents["default"].span(_templateObject2 || (_
213
219
  return calculateWidth(props.margin, props.size);
214
220
  }, function (props) {
215
221
  return props.disabled ? "not-allowed" : "pointer";
216
- }, function (props) {
217
- return props.labelPosition === "before" ? "row-reverse" : "row";
218
222
  }, function (props) {
219
223
  return props.isLabelHovered ? props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor : getNotDisabledColor(props, "border");
220
224
  }, function (props) {
@@ -4,7 +4,7 @@ import { BackgroundColorProvider } from "../BackgroundColorContext";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DarkContainer from "../../.storybook/components/DarkSection";
7
- import { userEvent, within } from "@storybook/testing-library";
7
+ import { userEvent } from "@storybook/testing-library";
8
8
 
9
9
  export default {
10
10
  title: "Checkbox",
@@ -13,128 +13,124 @@ export default {
13
13
 
14
14
  const Checkbox = () => (
15
15
  <>
16
- <>
17
- <ExampleContainer>
18
- <Title title="Default" theme="light" level={4} />
19
- <DxcCheckbox label="Checkbox" />
20
- </ExampleContainer>
21
- <ExampleContainer>
22
- <Title title="Focused" theme="light" level={4} />
23
- <DxcCheckbox label="Focused" />
24
- </ExampleContainer>
25
- <ExampleContainer>
26
- <Title title="Checked" theme="light" level={4} />
27
- <DxcCheckbox label="Checkbox" checked />
28
- </ExampleContainer>
29
- <ExampleContainer>
30
- <Title title="Required" theme="light" level={4} />
31
- <DxcCheckbox label="Checkbox" required />
32
- </ExampleContainer>
33
- <ExampleContainer>
34
- <Title title="Disabled and checked" theme="light" level={4} />
35
- <DxcCheckbox label="Checkbox" disabled checked />
36
- </ExampleContainer>
37
- <ExampleContainer>
38
- <Title title="Disabled and required" theme="light" level={4} />
39
- <DxcCheckbox label="Checkbox" disabled required />
40
- </ExampleContainer>
41
- <ExampleContainer>
42
- <Title title="Disabled, required and checked" theme="light" level={4} />
43
- <DxcCheckbox label="Checkbox" disabled required checked />
44
- </ExampleContainer>
45
- <ExampleContainer>
46
- <Title title="Label after" theme="light" level={4} />
47
- <DxcCheckbox label="Checkbox" labelPosition="after" />
48
- </ExampleContainer>
49
- <ExampleContainer>
50
- <Title title="Checked with label after" theme="light" level={4} />
51
- <DxcCheckbox label="Checkbox" checked labelPosition="after" />
52
- </ExampleContainer>
53
- <ExampleContainer>
54
- <Title title="Required with label after" theme="light" level={4} />
55
- <DxcCheckbox label="Checkbox" required labelPosition="after" />
56
- </ExampleContainer>
57
- <ExampleContainer>
58
- <Title title="Disabled and checked with label after" theme="light" level={4} />
59
- <DxcCheckbox label="Checkbox" disabled checked labelPosition="after" />
60
- </ExampleContainer>
61
- <ExampleContainer>
62
- <Title title="Disabled and required with label after" theme="light" level={4} />
63
- <DxcCheckbox label="Checkbox" disabled required labelPosition="after" />
64
- </ExampleContainer>
65
- <ExampleContainer>
66
- <Title title="Disabled, required and checked with label after" theme="light" level={4} />
67
- <DxcCheckbox label="Checkbox" disabled required checked labelPosition="after" />
68
- </ExampleContainer>
69
- <ExampleContainer pseudoState="pseudo-hover">
70
- <Title title="Hovered" theme="light" level={4} />
71
- <DxcCheckbox label="Hovered" />
72
- </ExampleContainer>
73
- <ExampleContainer pseudoState="pseudo-hover">
74
- <Title title="Hovered and checked" theme="light" level={4} />
75
- <DxcCheckbox label="Hovered" checked />
76
- </ExampleContainer>
77
- </>
16
+ <ExampleContainer>
17
+ <Title title="Default" theme="light" level={4} />
18
+ <DxcCheckbox label="Checkbox" />
19
+ </ExampleContainer>
20
+ <ExampleContainer>
21
+ <Title title="Focused" theme="light" level={4} />
22
+ <DxcCheckbox label="Focused" />
23
+ </ExampleContainer>
24
+ <ExampleContainer>
25
+ <Title title="Checked" theme="light" level={4} />
26
+ <DxcCheckbox label="Checkbox" defaultChecked />
27
+ </ExampleContainer>
28
+ <ExampleContainer>
29
+ <Title title="Optional" theme="light" level={4} />
30
+ <DxcCheckbox label="Checkbox" optional />
31
+ </ExampleContainer>
32
+ <ExampleContainer>
33
+ <Title title="Disabled and checked" theme="light" level={4} />
34
+ <DxcCheckbox label="Checkbox" disabled defaultChecked />
35
+ </ExampleContainer>
36
+ <ExampleContainer>
37
+ <Title title="Disabled and optional" theme="light" level={4} />
38
+ <DxcCheckbox label="Checkbox" disabled optional />
39
+ </ExampleContainer>
40
+ <ExampleContainer>
41
+ <Title title="Disabled, optional and checked" theme="light" level={4} />
42
+ <DxcCheckbox label="Checkbox" disabled optional defaultChecked />
43
+ </ExampleContainer>
44
+ <ExampleContainer>
45
+ <Title title="Label after" theme="light" level={4} />
46
+ <DxcCheckbox label="Checkbox" labelPosition="after" />
47
+ </ExampleContainer>
48
+ <ExampleContainer>
49
+ <Title title="Checked with label after" theme="light" level={4} />
50
+ <DxcCheckbox label="Checkbox" defaultChecked labelPosition="after" />
51
+ </ExampleContainer>
52
+ <ExampleContainer>
53
+ <Title title="Optional with label after" theme="light" level={4} />
54
+ <DxcCheckbox label="Checkbox" optional labelPosition="after" />
55
+ </ExampleContainer>
56
+ <ExampleContainer>
57
+ <Title title="Disabled and checked with label after" theme="light" level={4} />
58
+ <DxcCheckbox label="Checkbox" disabled defaultChecked labelPosition="after" />
59
+ </ExampleContainer>
60
+ <ExampleContainer>
61
+ <Title title="Disabled and optional with label after" theme="light" level={4} />
62
+ <DxcCheckbox label="Checkbox" disabled optional labelPosition="after" />
63
+ </ExampleContainer>
64
+ <ExampleContainer>
65
+ <Title title="Disabled, optional and checked with label after" theme="light" level={4} />
66
+ <DxcCheckbox label="Checkbox" disabled optional defaultChecked labelPosition="after" />
67
+ </ExampleContainer>
68
+ <ExampleContainer pseudoState="pseudo-hover">
69
+ <Title title="Hovered" theme="light" level={4} />
70
+ <DxcCheckbox label="Hovered" />
71
+ </ExampleContainer>
72
+ <ExampleContainer pseudoState="pseudo-hover">
73
+ <Title title="Hovered and checked" theme="light" level={4} />
74
+ <DxcCheckbox label="Hovered" defaultChecked />
75
+ </ExampleContainer>
78
76
  <BackgroundColorProvider color="#333333">
79
77
  <DarkContainer>
80
- <>
81
- <ExampleContainer>
82
- <Title title="Default" theme="dark" level={4} />
83
- <DxcCheckbox label="Checkbox" />
84
- </ExampleContainer>
85
- <ExampleContainer>
86
- <Title title="Checked" theme="dark" level={4} />
87
- <DxcCheckbox label="Checkbox" checked />
88
- </ExampleContainer>
89
- <ExampleContainer>
90
- <Title title="Required" theme="dark" level={4} />
91
- <DxcCheckbox label="Checkbox" required />
92
- </ExampleContainer>
93
- <ExampleContainer>
94
- <Title title="Disabled and checked" theme="dark" level={4} />
95
- <DxcCheckbox label="Checkbox" disabled checked />
96
- </ExampleContainer>
97
- <ExampleContainer>
98
- <Title title="Disabled and required" theme="dark" level={4} />
99
- <DxcCheckbox label="Checkbox" disabled required />
100
- </ExampleContainer>
101
- <ExampleContainer>
102
- <Title title="Disabled, required and checked" theme="dark" level={4} />
103
- <DxcCheckbox label="Checkbox" disabled required checked />
104
- </ExampleContainer>
105
- <ExampleContainer>
106
- <Title title="Label after" theme="dark" level={4} />
107
- <DxcCheckbox label="Checkbox" labelPosition="after" />
108
- </ExampleContainer>
109
- <ExampleContainer>
110
- <Title title="Checked with label after" theme="dark" level={4} />
111
- <DxcCheckbox label="Checkbox" checked labelPosition="after" />
112
- </ExampleContainer>
113
- <ExampleContainer>
114
- <Title title="Required with label after" theme="dark" level={4} />
115
- <DxcCheckbox label="Checkbox" required labelPosition="after" />
116
- </ExampleContainer>
117
- <ExampleContainer>
118
- <Title title="Disabled and checked with label after" theme="dark" level={4} />
119
- <DxcCheckbox label="Checkbox" disabled checked labelPosition="after" />
120
- </ExampleContainer>
121
- <ExampleContainer>
122
- <Title title="Disabled and required with label after" theme="dark" level={4} />
123
- <DxcCheckbox label="Checkbox" disabled required labelPosition="after" />
124
- </ExampleContainer>
125
- <ExampleContainer>
126
- <Title title="Disabled, required and checked with label after" theme="dark" level={4} />
127
- <DxcCheckbox label="Checkbox" disabled required checked labelPosition="after" />
128
- </ExampleContainer>
129
- <ExampleContainer pseudoState="pseudo-hover">
130
- <Title title="Hovered" theme="dark" level={4} />
131
- <DxcCheckbox label="Hovered" />
132
- </ExampleContainer>
133
- <ExampleContainer pseudoState="pseudo-hover">
134
- <Title title="Hovered and checked" theme="dark" level={4} />
135
- <DxcCheckbox label="Hovered" checked />
136
- </ExampleContainer>
137
- </>
78
+ <ExampleContainer>
79
+ <Title title="Default" theme="dark" level={4} />
80
+ <DxcCheckbox label="Checkbox" />
81
+ </ExampleContainer>
82
+ <ExampleContainer>
83
+ <Title title="Checked" theme="dark" level={4} />
84
+ <DxcCheckbox label="Checkbox" defaultChecked />
85
+ </ExampleContainer>
86
+ <ExampleContainer>
87
+ <Title title="Optional" theme="dark" level={4} />
88
+ <DxcCheckbox label="Checkbox" optional />
89
+ </ExampleContainer>
90
+ <ExampleContainer>
91
+ <Title title="Disabled and checked" theme="dark" level={4} />
92
+ <DxcCheckbox label="Checkbox" disabled defaultChecked />
93
+ </ExampleContainer>
94
+ <ExampleContainer>
95
+ <Title title="Disabled and optional" theme="dark" level={4} />
96
+ <DxcCheckbox label="Checkbox" disabled optional />
97
+ </ExampleContainer>
98
+ <ExampleContainer>
99
+ <Title title="Disabled, optional and checked" theme="dark" level={4} />
100
+ <DxcCheckbox label="Checkbox" disabled optional defaultChecked />
101
+ </ExampleContainer>
102
+ <ExampleContainer>
103
+ <Title title="Label after" theme="dark" level={4} />
104
+ <DxcCheckbox label="Checkbox" labelPosition="after" />
105
+ </ExampleContainer>
106
+ <ExampleContainer>
107
+ <Title title="Checked with label after" theme="dark" level={4} />
108
+ <DxcCheckbox label="Checkbox" defaultChecked labelPosition="after" />
109
+ </ExampleContainer>
110
+ <ExampleContainer>
111
+ <Title title="Optional with label after" theme="dark" level={4} />
112
+ <DxcCheckbox label="Checkbox" optional labelPosition="after" />
113
+ </ExampleContainer>
114
+ <ExampleContainer>
115
+ <Title title="Disabled and checked with label after" theme="dark" level={4} />
116
+ <DxcCheckbox label="Checkbox" disabled defaultChecked labelPosition="after" />
117
+ </ExampleContainer>
118
+ <ExampleContainer>
119
+ <Title title="Disabled and optional with label after" theme="dark" level={4} />
120
+ <DxcCheckbox label="Checkbox" disabled optional labelPosition="after" />
121
+ </ExampleContainer>
122
+ <ExampleContainer>
123
+ <Title title="Disabled, optional and checked with label after" theme="dark" level={4} />
124
+ <DxcCheckbox label="Checkbox" disabled optional defaultChecked labelPosition="after" />
125
+ </ExampleContainer>
126
+ <ExampleContainer pseudoState="pseudo-hover">
127
+ <Title title="Hovered" theme="dark" level={4} />
128
+ <DxcCheckbox label="Hovered" />
129
+ </ExampleContainer>
130
+ <ExampleContainer pseudoState="pseudo-hover">
131
+ <Title title="Hovered and checked" theme="dark" level={4} />
132
+ <DxcCheckbox label="Hovered" defaultChecked />
133
+ </ExampleContainer>
138
134
  </DarkContainer>
139
135
  </BackgroundColorProvider>
140
136
  <Title title="Sizes" theme="light" level={2} />
@@ -156,31 +152,31 @@ const Checkbox = () => (
156
152
  <Title title="Margins" theme="light" level={2} />
157
153
  <ExampleContainer>
158
154
  <Title title="Xxsmall" theme="light" level={4} />
159
- <DxcCheckbox label="Xxsmall" margin={"xxsmall"} />
155
+ <DxcCheckbox label="Xxsmall" margin="xxsmall" />
160
156
  </ExampleContainer>
161
157
  <ExampleContainer>
162
158
  <Title title="Xsmall" theme="light" level={4} />
163
- <DxcCheckbox label="Xsmall" margin={"xsmall"} />
159
+ <DxcCheckbox label="Xsmall" margin="xsmall" />
164
160
  </ExampleContainer>
165
161
  <ExampleContainer>
166
162
  <Title title="Small" theme="light" level={4} />
167
- <DxcCheckbox label="Small" margin={"small"} />
163
+ <DxcCheckbox label="Small" margin="small" />
168
164
  </ExampleContainer>
169
165
  <ExampleContainer>
170
166
  <Title title="Medium" theme="light" level={4} />
171
- <DxcCheckbox label="Medium" margin={"medium"} />
167
+ <DxcCheckbox label="Medium" margin="medium" />
172
168
  </ExampleContainer>
173
169
  <ExampleContainer>
174
170
  <Title title="Large" theme="light" level={4} />
175
- <DxcCheckbox label="Large" margin={"large"} />
171
+ <DxcCheckbox label="Large" margin="large" />
176
172
  </ExampleContainer>
177
173
  <ExampleContainer>
178
174
  <Title title="Xlarge" theme="light" level={4} />
179
- <DxcCheckbox label="Xlarge" margin={"xlarge"} />
175
+ <DxcCheckbox label="Xlarge" margin="xlarge" />
180
176
  </ExampleContainer>
181
177
  <ExampleContainer>
182
178
  <Title title="Xxlarge" theme="light" level={4} />
183
- <DxcCheckbox label="Xxlarge" margin={"xxlarge"} />
179
+ <DxcCheckbox label="Xxlarge" margin="xxlarge" />
184
180
  </ExampleContainer>
185
181
  </>
186
182
  );
@@ -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.
@@ -33,14 +37,14 @@ declare type Props = {
33
37
  */
34
38
  disabled?: boolean;
35
39
  /**
36
- * If true, the checkbox will change its appearence, showing that the value is required.
40
+ * If true, the component will display '(Optional)' next to the label.
37
41
  */
38
- required?: boolean;
42
+ optional?: boolean;
39
43
  /**
40
44
  * This function will be called when the user clicks the checkbox.
41
45
  * The new value will be passed as a parameter.
42
46
  */
43
- onChange?: (val: boolean) => void;
47
+ onChange?: (value: boolean) => void;
44
48
  /**
45
49
  * Size of the margin to be applied to the component
46
50
  * ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').