@dxc-technology/halstack-react 0.0.0-c680086 → 0.0.0-c713b1b
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.
- package/HalstackContext.d.ts +10 -0
- package/{ThemeContext.js → HalstackContext.js} +37 -37
- package/accordion/Accordion.d.ts +1 -1
- package/accordion/Accordion.js +7 -28
- package/accordion/Accordion.stories.tsx +11 -11
- package/accordion/Accordion.test.js +72 -0
- package/accordion/types.d.ts +4 -0
- package/accordion-group/AccordionGroup.d.ts +1 -1
- package/accordion-group/AccordionGroup.js +13 -15
- package/accordion-group/AccordionGroup.stories.tsx +1 -1
- package/accordion-group/AccordionGroup.test.js +151 -0
- package/accordion-group/types.d.ts +4 -0
- package/alert/Alert.test.js +92 -0
- package/badge/Badge.d.ts +4 -0
- package/badge/types.d.ts +4 -0
- package/badge/types.js +5 -0
- package/bleed/types.d.ts +24 -0
- package/box/Box.test.js +18 -0
- package/button/Button.js +14 -11
- package/button/Button.test.js +35 -0
- package/card/Card.js +27 -28
- package/card/Card.test.js +50 -0
- package/checkbox/Checkbox.d.ts +1 -1
- package/checkbox/Checkbox.js +40 -39
- package/checkbox/Checkbox.stories.tsx +124 -128
- package/checkbox/Checkbox.test.js +78 -0
- package/checkbox/types.d.ts +7 -3
- package/chip/Chip.test.js +56 -0
- package/common/variables.js +19 -254
- package/date-input/DateInput.js +50 -39
- package/date-input/DateInput.stories.tsx +7 -7
- package/date-input/DateInput.test.js +479 -0
- package/date-input/types.d.ts +16 -9
- package/dialog/Dialog.js +4 -32
- package/dialog/Dialog.test.js +40 -0
- package/dropdown/Dropdown.js +13 -17
- package/dropdown/Dropdown.test.js +189 -0
- package/file-input/FileInput.test.js +457 -0
- package/file-input/FileItem.js +7 -5
- package/footer/Footer.js +10 -85
- package/footer/Footer.test.js +109 -0
- package/header/Header.js +20 -44
- package/header/Header.stories.tsx +46 -36
- package/header/Header.test.js +79 -0
- package/heading/Heading.test.js +186 -0
- package/inset/types.d.ts +24 -0
- package/layout/ApplicationLayout.js +6 -13
- package/link/Link.d.ts +3 -2
- package/link/Link.js +65 -56
- package/link/Link.stories.tsx +87 -52
- package/link/Link.test.js +83 -0
- package/link/types.d.ts +8 -23
- package/main.d.ts +5 -7
- package/main.js +25 -41
- package/number-input/NumberInput.js +11 -18
- package/number-input/NumberInput.stories.tsx +5 -5
- package/number-input/NumberInput.test.js +506 -0
- package/number-input/types.d.ts +16 -9
- package/package.json +6 -5
- package/paginator/Paginator.test.js +266 -0
- package/password-input/PasswordInput.test.js +181 -0
- package/password-input/types.d.ts +13 -10
- package/progress-bar/ProgressBar.test.js +65 -0
- package/quick-nav/QuickNav.d.ts +4 -0
- package/quick-nav/QuickNav.js +64 -0
- package/quick-nav/QuickNav.stories.tsx +237 -0
- package/quick-nav/types.d.ts +21 -0
- package/quick-nav/types.js +5 -0
- package/radio/Radio.js +10 -11
- package/radio/Radio.test.js +71 -0
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +24 -23
- package/radio-group/RadioGroup.js +39 -32
- package/radio-group/RadioGroup.stories.tsx +60 -39
- package/radio-group/RadioGroup.test.js +530 -83
- package/radio-group/types.d.ts +80 -2
- package/resultsetTable/ResultsetTable.test.js +306 -0
- package/row/types.d.ts +18 -0
- package/select/Icons.d.ts +10 -0
- package/select/Icons.js +93 -0
- package/select/Listbox.d.ts +4 -0
- package/select/Listbox.js +148 -0
- package/select/Option.d.ts +4 -0
- package/select/Option.js +110 -0
- package/select/Select.js +89 -297
- package/select/Select.stories.tsx +91 -81
- package/select/Select.test.js +2057 -0
- package/select/types.d.ts +54 -11
- package/sidenav/Sidenav.test.js +56 -0
- package/slider/Slider.d.ts +1 -1
- package/slider/Slider.js +2 -1
- package/slider/Slider.stories.tsx +8 -8
- package/slider/Slider.test.js +150 -0
- package/slider/types.d.ts +4 -0
- package/spinner/Spinner.test.js +64 -0
- package/stack/types.d.ts +15 -0
- package/switch/Switch.d.ts +1 -1
- package/switch/Switch.js +32 -19
- package/switch/Switch.stories.tsx +14 -14
- package/switch/Switch.test.js +98 -0
- package/switch/types.d.ts +6 -2
- package/table/Table.test.js +26 -0
- package/tabs/Tabs.d.ts +1 -1
- package/tabs/Tabs.js +9 -11
- package/tabs/Tabs.stories.tsx +0 -8
- package/tabs/Tabs.test.js +140 -0
- package/tabs/types.d.ts +4 -0
- package/tag/Tag.js +14 -19
- package/tag/Tag.stories.tsx +12 -8
- package/tag/Tag.test.js +60 -0
- package/text-input/TextInput.js +10 -8
- package/text-input/TextInput.stories.tsx +30 -12
- package/text-input/TextInput.test.js +1712 -0
- package/text-input/types.d.ts +17 -10
- package/textarea/Textarea.js +10 -8
- package/textarea/Textarea.stories.jsx +33 -12
- package/textarea/Textarea.test.js +437 -0
- package/textarea/types.d.ts +17 -10
- package/toggle-group/ToggleGroup.d.ts +1 -1
- package/toggle-group/ToggleGroup.js +5 -4
- package/toggle-group/ToggleGroup.stories.tsx +4 -4
- package/toggle-group/ToggleGroup.test.js +156 -0
- package/toggle-group/types.d.ts +8 -0
- package/useTheme.js +2 -2
- package/wizard/Wizard.d.ts +1 -1
- package/wizard/Wizard.js +28 -19
- package/wizard/Wizard.stories.tsx +13 -23
- package/wizard/Wizard.test.js +141 -0
- package/wizard/types.d.ts +6 -2
- package/ThemeContext.d.ts +0 -15
- package/V3Select/V3Select.js +0 -455
- package/V3Select/index.d.ts +0 -27
- package/V3Textarea/V3Textarea.js +0 -260
- package/V3Textarea/index.d.ts +0 -27
- package/date/Date.js +0 -373
- package/date/index.d.ts +0 -27
- package/input-text/Icons.js +0 -22
- package/input-text/InputText.js +0 -611
- package/input-text/index.d.ts +0 -36
- package/toggle/Toggle.js +0 -186
- package/toggle/index.d.ts +0 -21
- package/upload/Upload.js +0 -201
- package/upload/buttons-upload/ButtonsUpload.js +0 -111
- package/upload/buttons-upload/Icons.js +0 -40
- package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
- package/upload/dragAndDropArea/Icons.js +0 -39
- package/upload/file-upload/FileToUpload.js +0 -115
- package/upload/file-upload/Icons.js +0 -66
- package/upload/files-upload/FilesToUpload.js +0 -109
- package/upload/index.d.ts +0 -15
- package/upload/transaction/Icons.js +0 -160
- package/upload/transaction/Transaction.js +0 -104
- package/upload/transactions/Transactions.js +0 -94
package/checkbox/Checkbox.js
CHANGED
|
@@ -21,12 +21,12 @@ 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
32
|
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
|
|
@@ -39,6 +39,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
39
39
|
|
|
40
40
|
var DxcCheckbox = function DxcCheckbox(_ref) {
|
|
41
41
|
var checked = _ref.checked,
|
|
42
|
+
_ref$defaultChecked = _ref.defaultChecked,
|
|
43
|
+
defaultChecked = _ref$defaultChecked === void 0 ? false : _ref$defaultChecked,
|
|
42
44
|
value = _ref.value,
|
|
43
45
|
_ref$label = _ref.label,
|
|
44
46
|
label = _ref$label === void 0 ? "" : _ref$label,
|
|
@@ -48,24 +50,30 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
|
|
|
48
50
|
name = _ref$name === void 0 ? "" : _ref$name,
|
|
49
51
|
_ref$disabled = _ref.disabled,
|
|
50
52
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
53
|
+
_ref$optional = _ref.optional,
|
|
54
|
+
optional = _ref$optional === void 0 ? false : _ref$optional,
|
|
51
55
|
onChange = _ref.onChange,
|
|
52
|
-
_ref$required = _ref.required,
|
|
53
|
-
required = _ref$required === void 0 ? false : _ref$required,
|
|
54
56
|
margin = _ref.margin,
|
|
55
57
|
_ref$size = _ref.size,
|
|
56
58
|
size = _ref$size === void 0 ? "fitContent" : _ref$size,
|
|
57
59
|
_ref$tabIndex = _ref.tabIndex,
|
|
58
60
|
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
59
61
|
|
|
60
|
-
var _useState = (0, _react.useState)(
|
|
61
|
-
_useState2 = (0, _slicedToArray2["default"])(_useState,
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
var _useState = (0, _react.useState)("checkbox-".concat((0, _uuid.v4)())),
|
|
63
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
64
|
+
switchId = _useState2[0];
|
|
65
|
+
|
|
66
|
+
var labelId = "label-".concat(switchId);
|
|
64
67
|
|
|
65
|
-
var _useState3 = (0, _react.useState)(
|
|
68
|
+
var _useState3 = (0, _react.useState)(defaultChecked),
|
|
66
69
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
innerChecked = _useState4[0],
|
|
71
|
+
setInnerChecked = _useState4[1];
|
|
72
|
+
|
|
73
|
+
var _useState5 = (0, _react.useState)(false),
|
|
74
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
75
|
+
isLabelHovered = _useState6[0],
|
|
76
|
+
setIsLabelHovered = _useState6[1];
|
|
69
77
|
|
|
70
78
|
var colorsTheme = (0, _useTheme["default"])();
|
|
71
79
|
var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
|
|
@@ -89,6 +97,17 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
|
|
|
89
97
|
setIsLabelHovered(!isLabelHovered);
|
|
90
98
|
};
|
|
91
99
|
|
|
100
|
+
var labelComponent = /*#__PURE__*/_react["default"].createElement(LabelContainer, {
|
|
101
|
+
id: labelId,
|
|
102
|
+
labelPosition: labelPosition,
|
|
103
|
+
onClick: disabled === true ? function () {} : handlerCheckboxChange,
|
|
104
|
+
disabled: disabled,
|
|
105
|
+
className: "labelContainer",
|
|
106
|
+
backgroundType: backgroundType,
|
|
107
|
+
onMouseOver: handleLabelHover,
|
|
108
|
+
onMouseOut: handleLabelHover
|
|
109
|
+
}, labelPosition === "before" ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, label, " ", optional && /*#__PURE__*/_react["default"].createElement("span", null, "(Optional)")) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, optional && /*#__PURE__*/_react["default"].createElement("span", null, "(Optional)"), " ", label));
|
|
110
|
+
|
|
92
111
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
93
112
|
theme: colorsTheme.checkbox
|
|
94
113
|
}, /*#__PURE__*/_react["default"].createElement(CheckboxContainer, {
|
|
@@ -101,13 +120,13 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
|
|
|
101
120
|
size: size,
|
|
102
121
|
backgroundType: backgroundType,
|
|
103
122
|
isLabelHovered: isLabelHovered
|
|
104
|
-
}, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
105
|
-
checked: checked
|
|
123
|
+
}, label && labelPosition === "before" && labelComponent, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
124
|
+
checked: checked !== null && checked !== void 0 ? checked : innerChecked,
|
|
106
125
|
inputProps: {
|
|
107
126
|
name: name,
|
|
108
|
-
"aria-
|
|
127
|
+
"aria-labelledby": labelId,
|
|
109
128
|
role: "checkbox",
|
|
110
|
-
"aria-checked": checked
|
|
129
|
+
"aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked
|
|
111
130
|
},
|
|
112
131
|
onChange: handlerCheckboxChange,
|
|
113
132
|
value: value,
|
|
@@ -118,17 +137,9 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
|
|
|
118
137
|
}), /*#__PURE__*/_react["default"].createElement(CheckboxBlackBack, {
|
|
119
138
|
labelPosition: labelPosition,
|
|
120
139
|
disabled: disabled,
|
|
121
|
-
checked: checked
|
|
140
|
+
checked: checked !== null && checked !== void 0 ? checked : innerChecked,
|
|
122
141
|
backgroundType: backgroundType
|
|
123
|
-
}),
|
|
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)));
|
|
142
|
+
}), label && labelPosition === "after" && labelComponent));
|
|
132
143
|
};
|
|
133
144
|
|
|
134
145
|
var sizes = {
|
|
@@ -151,19 +162,15 @@ var getDisabledColor = function getDisabledColor(props, element) {
|
|
|
151
162
|
switch (element) {
|
|
152
163
|
case "check":
|
|
153
164
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckColorOnDark : props.theme.disabledCheckColor;
|
|
154
|
-
break;
|
|
155
165
|
|
|
156
166
|
case "background":
|
|
157
167
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBackgroundColorCheckedOnDark : props.theme.disabledBackgroundColorChecked;
|
|
158
|
-
break;
|
|
159
168
|
|
|
160
169
|
case "border":
|
|
161
170
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;
|
|
162
|
-
break;
|
|
163
171
|
|
|
164
172
|
case "label":
|
|
165
173
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledFontColorOnDark : props.theme.disabledFontColor;
|
|
166
|
-
break;
|
|
167
174
|
}
|
|
168
175
|
};
|
|
169
176
|
|
|
@@ -171,35 +178,31 @@ var getNotDisabledColor = function getNotDisabledColor(props, element) {
|
|
|
171
178
|
switch (element) {
|
|
172
179
|
case "check":
|
|
173
180
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkColorOnDark : props.theme.checkColor;
|
|
174
|
-
break;
|
|
175
181
|
|
|
176
182
|
case "background":
|
|
177
183
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.backgroundColorCheckedOnDark : props.theme.backgroundColorChecked;
|
|
178
|
-
break;
|
|
179
184
|
|
|
180
185
|
case "border":
|
|
181
186
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.borderColorOnDark : props.theme.borderColor;
|
|
182
|
-
break;
|
|
183
187
|
|
|
184
188
|
case "label":
|
|
185
189
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
|
|
186
|
-
break;
|
|
187
190
|
}
|
|
188
191
|
};
|
|
189
192
|
|
|
190
|
-
var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n
|
|
193
|
+
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
194
|
return props.disabled ? getDisabledColor(props, "label") : getNotDisabledColor(props, "label");
|
|
192
|
-
}, function (props) {
|
|
193
|
-
return props.disabled ? "not-allowed" : "pointer";
|
|
194
195
|
}, function (props) {
|
|
195
196
|
return props.theme.fontFamily;
|
|
196
197
|
}, function (props) {
|
|
197
198
|
return props.theme.fontSize;
|
|
198
199
|
}, function (props) {
|
|
199
200
|
return props.theme.fontWeight;
|
|
201
|
+
}, function (props) {
|
|
202
|
+
return props.disabled ? "not-allowed" : "pointer";
|
|
200
203
|
});
|
|
201
204
|
|
|
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
|
|
205
|
+
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
206
|
return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
|
|
204
207
|
}, function (props) {
|
|
205
208
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
|
|
@@ -213,8 +216,6 @@ var CheckboxContainer = _styledComponents["default"].span(_templateObject2 || (_
|
|
|
213
216
|
return calculateWidth(props.margin, props.size);
|
|
214
217
|
}, function (props) {
|
|
215
218
|
return props.disabled ? "not-allowed" : "pointer";
|
|
216
|
-
}, function (props) {
|
|
217
|
-
return props.labelPosition === "before" ? "row-reverse" : "row";
|
|
218
219
|
}, function (props) {
|
|
219
220
|
return props.isLabelHovered ? props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor : getNotDisabledColor(props, "border");
|
|
220
221
|
}, 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
|
|
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
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
<
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
<
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
<
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
<
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
<
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
<
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
<
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
<
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
<
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
<
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
<
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
<
|
|
134
|
-
|
|
135
|
-
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
+
});
|
package/checkbox/types.d.ts
CHANGED
|
@@ -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
|
|
40
|
+
* If true, the component will display '(Optional)' next to the label.
|
|
37
41
|
*/
|
|
38
|
-
|
|
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?: (
|
|
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').
|