@dxc-technology/halstack-react 0.0.0-8719165 → 0.0.0-87e1151
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/accordion/Accordion.js +122 -103
- package/accordion/Accordion.stories.tsx +1 -2
- package/accordion/Accordion.test.js +9 -10
- package/accordion/types.d.ts +4 -3
- package/accordion-group/AccordionGroup.js +1 -21
- package/accordion-group/AccordionGroup.stories.tsx +27 -1
- package/accordion-group/AccordionGroup.test.js +20 -45
- package/accordion-group/types.d.ts +9 -2
- package/alert/Alert.js +1 -1
- package/box/Box.js +1 -1
- package/box/types.d.ts +1 -0
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.js +87 -95
- package/checkbox/Checkbox.test.js +93 -16
- package/checkbox/types.d.ts +2 -2
- package/common/variables.js +12 -4
- package/dialog/Dialog.js +4 -4
- package/dialog/Dialog.stories.tsx +56 -0
- package/dialog/types.d.ts +1 -0
- package/dropdown/Dropdown.js +6 -5
- package/dropdown/Dropdown.test.js +2 -3
- package/dropdown/DropdownMenuItem.js +1 -1
- package/footer/Footer.stories.tsx +8 -1
- package/footer/types.d.ts +1 -0
- package/header/Header.js +74 -72
- package/header/Header.stories.tsx +4 -4
- package/header/Icons.js +2 -2
- package/header/types.d.ts +3 -2
- package/layout/ApplicationLayout.stories.tsx +1 -0
- package/number-input/NumberInput.test.js +1 -1
- package/package.json +8 -8
- package/password-input/PasswordInput.test.js +13 -12
- package/quick-nav/QuickNav.js +11 -12
- package/quick-nav/QuickNav.stories.tsx +97 -19
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +43 -28
- package/radio-group/RadioGroup.js +18 -20
- package/radio-group/RadioGroup.stories.tsx +1 -0
- package/radio-group/RadioGroup.test.js +28 -58
- package/radio-group/types.d.ts +2 -2
- package/select/Listbox.js +0 -1
- package/select/Select.js +2 -1
- package/slider/Slider.js +116 -92
- package/slider/Slider.stories.tsx +7 -1
- package/slider/Slider.test.js +121 -21
- package/slider/types.d.ts +2 -2
- package/switch/Switch.js +91 -81
- package/switch/Switch.test.js +26 -13
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +135 -0
- package/tabs/Tabs.js +360 -104
- package/tabs/Tabs.stories.tsx +74 -0
- package/tabs/Tabs.test.js +217 -6
- package/tabs/types.d.ts +14 -4
- package/tabs-nav/Tab.js +1 -1
- package/tag/Tag.js +1 -1
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +60 -0
- package/text-input/Suggestion.js +7 -5
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +170 -258
- package/text-input/TextInput.stories.tsx +189 -181
- package/text-input/TextInput.test.js +165 -163
- package/text-input/types.d.ts +21 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
3
|
-
declare type Margin = {
|
|
2
|
+
export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
3
|
+
export declare type Margin = {
|
|
4
4
|
top?: Space;
|
|
5
5
|
bottom?: Space;
|
|
6
6
|
left?: Space;
|
|
@@ -31,6 +31,7 @@ export declare type AccordionPropsType = {
|
|
|
31
31
|
*/
|
|
32
32
|
disabled?: boolean;
|
|
33
33
|
/**
|
|
34
|
+
* @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
|
|
34
35
|
* Size of the padding to be applied to the custom area ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
|
|
35
36
|
* You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
|
|
36
37
|
*/
|
|
@@ -69,4 +70,10 @@ declare type Props = {
|
|
|
69
70
|
*/
|
|
70
71
|
children: React.ReactElement<AccordionPropsType>[] | React.ReactElement<AccordionPropsType>;
|
|
71
72
|
};
|
|
73
|
+
export declare type AccordionGroupAccordionContextProps = {
|
|
74
|
+
activeIndex: number;
|
|
75
|
+
handlerActiveChange: (index: number) => void;
|
|
76
|
+
disabled: boolean;
|
|
77
|
+
index: number;
|
|
78
|
+
};
|
|
72
79
|
export default Props;
|
package/alert/Alert.js
CHANGED
package/box/Box.js
CHANGED
package/box/types.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ declare type Props = {
|
|
|
31
31
|
*/
|
|
32
32
|
margin?: Space | Margin;
|
|
33
33
|
/**
|
|
34
|
+
* @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
|
|
34
35
|
* Size of the padding to be applied to the custom area ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
|
|
35
36
|
* You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
|
|
36
37
|
*/
|
package/card/types.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ declare type Props = {
|
|
|
47
47
|
*/
|
|
48
48
|
margin?: Space | Size;
|
|
49
49
|
/**
|
|
50
|
+
* @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
|
|
50
51
|
* Size of the padding to be applied to the content area ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
|
|
51
52
|
* You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
|
|
52
53
|
*/
|
package/checkbox/Checkbox.js
CHANGED
|
@@ -19,8 +19,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
19
19
|
|
|
20
20
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
21
21
|
|
|
22
|
-
var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
|
|
23
|
-
|
|
24
22
|
var _variables = require("../common/variables.js");
|
|
25
23
|
|
|
26
24
|
var _utils = require("../common/utils.js");
|
|
@@ -33,12 +31,21 @@ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabel
|
|
|
33
31
|
|
|
34
32
|
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
|
|
35
33
|
|
|
36
|
-
var _templateObject, _templateObject2, _templateObject3;
|
|
34
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
37
35
|
|
|
38
36
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
37
|
|
|
40
38
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
41
39
|
|
|
40
|
+
var checkedIcon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
41
|
+
fill: "currentColor",
|
|
42
|
+
focusable: "false",
|
|
43
|
+
"aria-hidden": "true",
|
|
44
|
+
viewBox: "0 0 24 24"
|
|
45
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
46
|
+
d: "M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
|
|
47
|
+
}));
|
|
48
|
+
|
|
42
49
|
var DxcCheckbox = function DxcCheckbox(_ref) {
|
|
43
50
|
var checked = _ref.checked,
|
|
44
51
|
_ref$defaultChecked = _ref.defaultChecked,
|
|
@@ -61,88 +68,77 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
|
|
|
61
68
|
_ref$tabIndex = _ref.tabIndex,
|
|
62
69
|
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
63
70
|
|
|
64
|
-
var _useState = (0, _react.useState)("checkbox-".concat((0, _uuid.v4)())),
|
|
71
|
+
var _useState = (0, _react.useState)("label-checkbox-".concat((0, _uuid.v4)())),
|
|
65
72
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var labelId = "label-".concat(switchId);
|
|
73
|
+
labelId = _useState2[0];
|
|
69
74
|
|
|
70
75
|
var _useState3 = (0, _react.useState)(defaultChecked),
|
|
71
76
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
72
77
|
innerChecked = _useState4[0],
|
|
73
78
|
setInnerChecked = _useState4[1];
|
|
74
79
|
|
|
75
|
-
var
|
|
76
|
-
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
77
|
-
isLabelHovered = _useState6[0],
|
|
78
|
-
setIsLabelHovered = _useState6[1];
|
|
79
|
-
|
|
80
|
+
var checkboxRef = (0, _react.useRef)(null);
|
|
80
81
|
var colorsTheme = (0, _useTheme["default"])();
|
|
81
82
|
var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
|
|
82
83
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
83
84
|
|
|
84
|
-
var
|
|
85
|
-
|
|
86
|
-
var isChecked = checkboxValue.target.checked === undefined ? !innerChecked : checkboxValue.target.checked;
|
|
87
|
-
setInnerChecked(isChecked);
|
|
88
|
-
|
|
89
|
-
if (typeof onChange === "function") {
|
|
90
|
-
onChange(isChecked);
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
if (typeof onChange === "function") {
|
|
94
|
-
onChange(!checked);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
};
|
|
85
|
+
var handleCheckboxChange = function handleCheckboxChange() {
|
|
86
|
+
var _checkboxRef$current;
|
|
98
87
|
|
|
99
|
-
|
|
100
|
-
|
|
88
|
+
document.activeElement !== (checkboxRef === null || checkboxRef === void 0 ? void 0 : checkboxRef.current) && (checkboxRef === null || checkboxRef === void 0 ? void 0 : (_checkboxRef$current = checkboxRef.current) === null || _checkboxRef$current === void 0 ? void 0 : _checkboxRef$current.focus());
|
|
89
|
+
var newChecked = checked !== null && checked !== void 0 ? checked : innerChecked;
|
|
90
|
+
checked !== null && checked !== void 0 ? checked : setInnerChecked(function (innerChecked) {
|
|
91
|
+
return !innerChecked;
|
|
92
|
+
});
|
|
93
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(!newChecked);
|
|
101
94
|
};
|
|
102
95
|
|
|
103
|
-
var
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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));
|
|
96
|
+
var handleKeyboard = function handleKeyboard(event) {
|
|
97
|
+
switch (event.key) {
|
|
98
|
+
case " ":
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
handleCheckboxChange();
|
|
101
|
+
}
|
|
102
|
+
};
|
|
113
103
|
|
|
114
104
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
115
105
|
theme: colorsTheme.checkbox
|
|
116
|
-
}, /*#__PURE__*/_react["default"].createElement(
|
|
117
|
-
id: name,
|
|
118
|
-
brightness: _variables.componentTokens,
|
|
119
|
-
label: label,
|
|
120
|
-
labelPosition: labelPosition,
|
|
106
|
+
}, /*#__PURE__*/_react["default"].createElement(MainContainer, {
|
|
121
107
|
disabled: disabled,
|
|
108
|
+
onClick: disabled ? undefined : handleCheckboxChange,
|
|
122
109
|
margin: margin,
|
|
123
110
|
size: size,
|
|
124
|
-
backgroundType: backgroundType,
|
|
125
|
-
isLabelHovered: isLabelHovered
|
|
126
|
-
}, label && labelPosition === "before" && labelComponent, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
127
111
|
checked: checked !== null && checked !== void 0 ? checked : innerChecked,
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
role: "checkbox",
|
|
132
|
-
"aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked
|
|
133
|
-
},
|
|
134
|
-
onChange: handlerCheckboxChange,
|
|
135
|
-
value: value,
|
|
112
|
+
backgroundType: backgroundType
|
|
113
|
+
}, label && labelPosition === "before" && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
|
|
114
|
+
id: labelId,
|
|
136
115
|
disabled: disabled,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
116
|
+
backgroundType: backgroundType
|
|
117
|
+
}, label, optional && " ".concat(translatedLabels.formFields.optionalLabel)), /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
118
|
+
type: "checkbox",
|
|
119
|
+
checked: checked !== null && checked !== void 0 ? checked : innerChecked,
|
|
120
|
+
name: name,
|
|
121
|
+
"aria-hidden": "true",
|
|
122
|
+
value: value,
|
|
142
123
|
disabled: disabled,
|
|
124
|
+
readOnly: true
|
|
125
|
+
}), /*#__PURE__*/_react["default"].createElement(CheckboxContainer, null, /*#__PURE__*/_react["default"].createElement(Checkbox, {
|
|
126
|
+
onKeyDown: handleKeyboard,
|
|
127
|
+
role: "checkbox",
|
|
128
|
+
tabIndex: disabled ? -1 : tabIndex,
|
|
129
|
+
"aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked,
|
|
130
|
+
"aria-disabled": disabled,
|
|
131
|
+
"aria-required": !disabled && !optional,
|
|
132
|
+
"aria-labelledby": labelId,
|
|
133
|
+
backgroundType: backgroundType,
|
|
143
134
|
checked: checked !== null && checked !== void 0 ? checked : innerChecked,
|
|
135
|
+
disabled: disabled,
|
|
136
|
+
ref: checkboxRef
|
|
137
|
+
}, (checked !== null && checked !== void 0 ? checked : innerChecked) && checkedIcon)), label && labelPosition === "after" && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
|
|
138
|
+
id: labelId,
|
|
139
|
+
disabled: disabled,
|
|
144
140
|
backgroundType: backgroundType
|
|
145
|
-
}
|
|
141
|
+
}, optional && "".concat(translatedLabels.formFields.optionalLabel, " "), label)));
|
|
146
142
|
};
|
|
147
143
|
|
|
148
144
|
var sizes = {
|
|
@@ -150,7 +146,7 @@ var sizes = {
|
|
|
150
146
|
medium: "240px",
|
|
151
147
|
large: "480px",
|
|
152
148
|
fillParent: "100%",
|
|
153
|
-
fitContent: "
|
|
149
|
+
fitContent: "fit-content"
|
|
154
150
|
};
|
|
155
151
|
|
|
156
152
|
var calculateWidth = function calculateWidth(margin, size) {
|
|
@@ -185,15 +181,21 @@ var getNotDisabledColor = function getNotDisabledColor(props, element) {
|
|
|
185
181
|
case "background":
|
|
186
182
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.backgroundColorCheckedOnDark : props.theme.backgroundColorChecked;
|
|
187
183
|
|
|
184
|
+
case "hoverBackground":
|
|
185
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.hoverBackgroundColorCheckedOnDark : props.theme.hoverBackgroundColorChecked;
|
|
186
|
+
|
|
188
187
|
case "border":
|
|
189
188
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.borderColorOnDark : props.theme.borderColor;
|
|
190
189
|
|
|
190
|
+
case "hoverBorder":
|
|
191
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor;
|
|
192
|
+
|
|
191
193
|
case "label":
|
|
192
194
|
return props.backgroundType && props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
|
|
193
195
|
}
|
|
194
196
|
};
|
|
195
197
|
|
|
196
|
-
var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n
|
|
198
|
+
var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
|
|
197
199
|
return props.disabled ? getDisabledColor(props, "label") : getNotDisabledColor(props, "label");
|
|
198
200
|
}, function (props) {
|
|
199
201
|
return props.theme.fontFamily;
|
|
@@ -201,11 +203,27 @@ var LabelContainer = _styledComponents["default"].span(_templateObject || (_temp
|
|
|
201
203
|
return props.theme.fontSize;
|
|
202
204
|
}, function (props) {
|
|
203
205
|
return props.theme.fontWeight;
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
var ValueInput = _styledComponents["default"].input(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
|
|
209
|
+
|
|
210
|
+
var CheckboxContainer = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
|
|
211
|
+
|
|
212
|
+
var Checkbox = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 18px;\n width: 18px;\n border: solid 2px\n ", ";\n border-radius: 2px;\n background-color: ", ";\n color: ", ";\n\n &:focus {\n outline: 2px solid\n ", ";\n outline-offset: 2px;\n }\n svg {\n position: absolute;\n width: 22px;\n height: 22px;\n }\n ", "\n"])), function (props) {
|
|
213
|
+
return props.disabled ? getDisabledColor(props, "border") : getNotDisabledColor(props, "border");
|
|
204
214
|
}, function (props) {
|
|
205
|
-
return props.disabled ? "
|
|
215
|
+
return props.checked ? props.disabled ? getDisabledColor(props, "check") : getNotDisabledColor(props, "check") : "transparent";
|
|
216
|
+
}, function (props) {
|
|
217
|
+
return props.disabled ? getDisabledColor(props, "background") : getNotDisabledColor(props, "background");
|
|
218
|
+
}, function (props) {
|
|
219
|
+
return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
|
|
220
|
+
}, function (props) {
|
|
221
|
+
return props.disabled && "pointer-events: none;";
|
|
206
222
|
});
|
|
207
223
|
|
|
208
|
-
var
|
|
224
|
+
var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n gap: ", ";\n\n &:hover ", " {\n border: 2px solid\n ", ";\n background-color: ", ";\n color: ", ";\n }\n"])), function (props) {
|
|
225
|
+
return calculateWidth(props.margin, props.size);
|
|
226
|
+
}, function (props) {
|
|
209
227
|
return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
|
|
210
228
|
}, function (props) {
|
|
211
229
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
|
|
@@ -215,42 +233,16 @@ var CheckboxContainer = _styledComponents["default"].span(_templateObject2 || (_
|
|
|
215
233
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
|
|
216
234
|
}, function (props) {
|
|
217
235
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
|
|
218
|
-
}, function (props) {
|
|
219
|
-
return calculateWidth(props.margin, props.size);
|
|
220
236
|
}, function (props) {
|
|
221
237
|
return props.disabled ? "not-allowed" : "pointer";
|
|
222
238
|
}, function (props) {
|
|
223
|
-
return props.
|
|
224
|
-
}, function (props) {
|
|
225
|
-
return getDisabledColor(props, "border");
|
|
226
|
-
}, function (props) {
|
|
227
|
-
return props.disabled ? getDisabledColor(props, "background") : getNotDisabledColor(props, "background");
|
|
228
|
-
}, function (props) {
|
|
229
|
-
return props.backgroundType === "dark" ? props.theme.hoverBackgroundColorCheckedOnDark : props.theme.hoverBackgroundColorChecked;
|
|
230
|
-
}, function (props) {
|
|
231
|
-
return props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor;
|
|
232
|
-
}, function (props) {
|
|
233
|
-
return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
|
|
234
|
-
}, function (props) {
|
|
235
|
-
return props.labelPosition === "before" && props.label ? props.theme.checkLabelSpacing : "0";
|
|
236
|
-
}, function (props) {
|
|
237
|
-
return props.labelPosition === "after" && props.label ? props.theme.checkLabelSpacing : "0";
|
|
238
|
-
}, function (props) {
|
|
239
|
-
return props.labelPosition === "before" ? "unset" : "1px";
|
|
240
|
-
}, function (props) {
|
|
241
|
-
return props.labelPosition === "before" ? "1px" : "unset";
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
var CheckboxBlackBack = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: 16px;\n height: 16px;\n position: absolute;\n left: ", ";\n right: ", ";\n z-index: 0;\n margin-left: ", ";\n margin-right: ", ";\n"])), function (props) {
|
|
245
|
-
return !props.checked ? "transparent" : props.disabled ? getDisabledColor(props, "check") : getNotDisabledColor(props, "check");
|
|
246
|
-
}, function (props) {
|
|
247
|
-
return props.labelPosition === "before" ? "unset" : "5px";
|
|
248
|
-
}, function (props) {
|
|
249
|
-
return props.labelPosition === "before" ? "5px" : "unset";
|
|
239
|
+
return props.theme.checkLabelSpacing;
|
|
240
|
+
}, Checkbox, function (props) {
|
|
241
|
+
return props.disabled ? getDisabledColor(props, "border") : getNotDisabledColor(props, "hoverBorder");
|
|
250
242
|
}, function (props) {
|
|
251
|
-
return props.
|
|
243
|
+
return props.checked ? props.disabled ? getDisabledColor(props, "check") : getNotDisabledColor(props, "check") : "transparent";
|
|
252
244
|
}, function (props) {
|
|
253
|
-
return props.
|
|
245
|
+
return props.disabled ? getDisabledColor(props, "background") : getNotDisabledColor(props, "hoverBackground");
|
|
254
246
|
});
|
|
255
247
|
|
|
256
248
|
var _default = DxcCheckbox;
|
|
@@ -6,25 +6,39 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
6
6
|
|
|
7
7
|
var _react2 = require("@testing-library/react");
|
|
8
8
|
|
|
9
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
10
|
+
|
|
9
11
|
var _Checkbox = _interopRequireDefault(require("./Checkbox"));
|
|
10
12
|
|
|
11
13
|
describe("Checkbox component tests", function () {
|
|
12
|
-
test("Checkbox renders with correct
|
|
14
|
+
test("Checkbox renders with correct aria-labelledby and aria-required", function () {
|
|
13
15
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
14
16
|
label: "Checkbox"
|
|
15
17
|
})),
|
|
16
|
-
getByText = _render.getByText
|
|
18
|
+
getByText = _render.getByText,
|
|
19
|
+
getByRole = _render.getByRole;
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
var labelId = getByText("Checkbox").getAttribute("id");
|
|
22
|
+
expect(getByRole("checkbox").getAttribute("aria-labelledby")).toBe(labelId);
|
|
23
|
+
expect(getByRole("checkbox").getAttribute("aria-required")).toBe("true");
|
|
24
|
+
});
|
|
25
|
+
test("Optional checkbox renders with correct aria-required", function () {
|
|
26
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
27
|
+
label: "Checkbox",
|
|
28
|
+
optional: true
|
|
29
|
+
})),
|
|
30
|
+
getByRole = _render2.getByRole;
|
|
31
|
+
|
|
32
|
+
expect(getByRole("checkbox").getAttribute("aria-required")).toBe("false");
|
|
19
33
|
});
|
|
20
34
|
test("Calls correct function on click", function () {
|
|
21
35
|
var onChange = jest.fn();
|
|
22
36
|
|
|
23
|
-
var
|
|
37
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
24
38
|
label: "Checkbox",
|
|
25
39
|
onChange: onChange
|
|
26
40
|
})),
|
|
27
|
-
getByText =
|
|
41
|
+
getByText = _render3.getByText;
|
|
28
42
|
|
|
29
43
|
_react2.fireEvent.click(getByText("Checkbox"));
|
|
30
44
|
|
|
@@ -34,45 +48,108 @@ describe("Checkbox component tests", function () {
|
|
|
34
48
|
var onChange = jest.fn();
|
|
35
49
|
var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
36
50
|
label: "Checkbox",
|
|
37
|
-
onChange: onChange
|
|
51
|
+
onChange: onChange,
|
|
52
|
+
name: "test"
|
|
38
53
|
}));
|
|
39
54
|
var visibleCheckbox = component.getByText("Checkbox");
|
|
40
55
|
var input = component.getByRole("checkbox");
|
|
41
|
-
|
|
56
|
+
var submitInput = component.container.querySelector("input[name=\"test\"]");
|
|
57
|
+
expect(input.getAttribute("aria-checked")).toBe("false");
|
|
58
|
+
expect(submitInput.checked).toBe(false);
|
|
42
59
|
|
|
43
60
|
_react2.fireEvent.click(visibleCheckbox);
|
|
44
61
|
|
|
45
62
|
expect(onChange).toHaveBeenCalled();
|
|
46
63
|
expect(onChange).toHaveBeenCalledWith(true);
|
|
47
|
-
expect(input.checked).toBe(true);
|
|
64
|
+
expect(input.getAttribute("aria-checked")).toBe("true");
|
|
65
|
+
expect(submitInput.checked).toBe(true);
|
|
48
66
|
});
|
|
49
67
|
test("Controlled checkbox", function () {
|
|
50
68
|
var onChange = jest.fn();
|
|
51
69
|
var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
52
70
|
label: "Checkbox",
|
|
53
71
|
checked: false,
|
|
54
|
-
onChange: onChange
|
|
72
|
+
onChange: onChange,
|
|
73
|
+
name: "test"
|
|
55
74
|
}));
|
|
56
75
|
var input = component.getByRole("checkbox");
|
|
57
76
|
var visibleCheckbox = component.getByText("Checkbox");
|
|
77
|
+
var submitInput = component.container.querySelector("input[name=\"test\"]");
|
|
58
78
|
|
|
59
79
|
_react2.fireEvent.click(visibleCheckbox);
|
|
60
80
|
|
|
61
81
|
expect(onChange).toHaveBeenCalled();
|
|
62
82
|
expect(onChange).toHaveBeenCalledWith(true);
|
|
63
|
-
expect(input.checked).toBe(false);
|
|
83
|
+
expect(input.getAttribute("aria-checked")).toBe("false");
|
|
84
|
+
expect(submitInput.checked).toBe(false);
|
|
64
85
|
});
|
|
65
86
|
test("Renders with correct initial value and initial state when it is uncontrolled", function () {
|
|
66
|
-
var
|
|
87
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
67
88
|
label: "Default label",
|
|
68
89
|
defaultChecked: true,
|
|
69
|
-
value: "test-defaultChecked"
|
|
90
|
+
value: "test-defaultChecked",
|
|
91
|
+
name: "test"
|
|
92
|
+
})),
|
|
93
|
+
getByRole = _render4.getByRole,
|
|
94
|
+
container = _render4.container;
|
|
95
|
+
|
|
96
|
+
var checkbox = getByRole("checkbox");
|
|
97
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
98
|
+
expect(submitInput.value).toBe("test-defaultChecked");
|
|
99
|
+
expect(checkbox.getAttribute("aria-checked")).toBe("true");
|
|
100
|
+
expect(submitInput.checked).toBe(true);
|
|
101
|
+
});
|
|
102
|
+
test("Test disable keyboard and mouse interactions", function () {
|
|
103
|
+
var onChange = jest.fn();
|
|
104
|
+
|
|
105
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
106
|
+
label: "Checkbox",
|
|
107
|
+
onChange: onChange,
|
|
108
|
+
disabled: true,
|
|
109
|
+
name: "test"
|
|
70
110
|
})),
|
|
71
|
-
getByRole =
|
|
111
|
+
getByRole = _render5.getByRole,
|
|
112
|
+
getByText = _render5.getByText,
|
|
113
|
+
container = _render5.container;
|
|
72
114
|
|
|
73
115
|
var input = getByRole("checkbox");
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
116
|
+
var visibleCheckbox = getByText("Checkbox");
|
|
117
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
118
|
+
|
|
119
|
+
_react2.fireEvent.click(visibleCheckbox);
|
|
120
|
+
|
|
121
|
+
expect(onChange).toHaveBeenCalledTimes(0);
|
|
122
|
+
expect(input.getAttribute("aria-checked")).toBe("false");
|
|
123
|
+
expect(input.getAttribute("aria-disabled")).toBe("true");
|
|
124
|
+
expect(submitInput.checked).toBe(false);
|
|
125
|
+
|
|
126
|
+
_userEvent["default"].tab();
|
|
127
|
+
|
|
128
|
+
expect(document.activeElement === input).toBeFalsy();
|
|
129
|
+
});
|
|
130
|
+
test("Test keyboard interactions", function () {
|
|
131
|
+
var onChange = jest.fn();
|
|
132
|
+
|
|
133
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
134
|
+
label: "Checkbox",
|
|
135
|
+
name: "test",
|
|
136
|
+
onChange: onChange
|
|
137
|
+
})),
|
|
138
|
+
getByRole = _render6.getByRole;
|
|
139
|
+
|
|
140
|
+
var checkbox = getByRole("checkbox");
|
|
141
|
+
|
|
142
|
+
_userEvent["default"].tab();
|
|
143
|
+
|
|
144
|
+
expect(document.activeElement === checkbox).toBeTruthy();
|
|
145
|
+
|
|
146
|
+
_react2.fireEvent.keyDown(checkbox, {
|
|
147
|
+
key: " ",
|
|
148
|
+
code: "Space",
|
|
149
|
+
keyCode: 32,
|
|
150
|
+
charCode: 32
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
expect(onChange).toHaveBeenCalledWith(true);
|
|
77
154
|
});
|
|
78
155
|
});
|
package/checkbox/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
2
|
-
declare type Margin = {
|
|
1
|
+
export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
2
|
+
export declare type Margin = {
|
|
3
3
|
top?: Space;
|
|
4
4
|
bottom?: Space;
|
|
5
5
|
left?: Space;
|
package/common/variables.js
CHANGED
|
@@ -179,13 +179,13 @@ var componentTokens = {
|
|
|
179
179
|
titleLabelFontStyle: globalTokens.type_normal,
|
|
180
180
|
titleLabelFontColor: globalTokens.hal_black,
|
|
181
181
|
disabledTitleLabelFontColor: globalTokens.hal_grey_l_60,
|
|
182
|
-
titleLabelPaddingLeft: "0px",
|
|
183
|
-
titleLabelPaddingRight: "16px",
|
|
184
182
|
titleLabelPaddingTop: "0px",
|
|
185
183
|
titleLabelPaddingBottom: "0px",
|
|
184
|
+
titleLabelPaddingLeft: "0px",
|
|
185
|
+
titleLabelPaddingRight: "16px",
|
|
186
|
+
focusBorderColor: globalTokens.hal_blue_l_50,
|
|
186
187
|
focusBorderStyle: "solid",
|
|
187
188
|
focusBorderThickness: "2px",
|
|
188
|
-
focusBorderColor: globalTokens.hal_blue_l_50,
|
|
189
189
|
borderRadius: "4px",
|
|
190
190
|
boxShadowOffsetX: "0px",
|
|
191
191
|
boxShadowOffsetY: "6px",
|
|
@@ -354,7 +354,7 @@ var componentTokens = {
|
|
|
354
354
|
backgroundColorChecked: globalTokens.hal_blue_s_35,
|
|
355
355
|
backgroundColorCheckedOnDark: globalTokens.hal_grey_l_90,
|
|
356
356
|
hoverBackgroundColorChecked: globalTokens.hal_blue_d_20,
|
|
357
|
-
hoverBackgroundColorCheckedOnDark:
|
|
357
|
+
hoverBackgroundColorCheckedOnDark: globalTokens.hal_white,
|
|
358
358
|
disabledBackgroundColorChecked: globalTokens.hal_grey_l_60,
|
|
359
359
|
disabledBackgroundColorCheckedOnDark: globalTokens.color_grey_800,
|
|
360
360
|
borderColor: globalTokens.hal_blue_s_35,
|
|
@@ -1447,6 +1447,10 @@ var defaultTranslatedComponentLabels = {
|
|
|
1447
1447
|
return "\xA9 DXC Technology ".concat(year, ". All rights reserved.");
|
|
1448
1448
|
}
|
|
1449
1449
|
},
|
|
1450
|
+
header: {
|
|
1451
|
+
closeIcon: "Close menu",
|
|
1452
|
+
hamburguerTitle: "Menu"
|
|
1453
|
+
},
|
|
1450
1454
|
numberInput: {
|
|
1451
1455
|
valueGreaterThanOrEqualToErrorMessage: function valueGreaterThanOrEqualToErrorMessage(value) {
|
|
1452
1456
|
return "Value must be greater than or equal to ".concat(value, ".");
|
|
@@ -1482,6 +1486,10 @@ var defaultTranslatedComponentLabels = {
|
|
|
1482
1486
|
actionClearSelectionTitle: "Clear selection",
|
|
1483
1487
|
actionClearSearchTitle: "Clear search"
|
|
1484
1488
|
},
|
|
1489
|
+
tabs: {
|
|
1490
|
+
scrollLeft: "Scroll left",
|
|
1491
|
+
scrollRight: "Scroll right"
|
|
1492
|
+
},
|
|
1485
1493
|
textInput: {
|
|
1486
1494
|
clearFieldActionTitle: "Clear field",
|
|
1487
1495
|
searchingMessage: "Searching...",
|
package/dialog/Dialog.js
CHANGED
|
@@ -108,7 +108,7 @@ var Overlay = _styledComponents["default"].div(_templateObject3 || (_templateObj
|
|
|
108
108
|
return props.theme.overlayOpacity;
|
|
109
109
|
});
|
|
110
110
|
|
|
111
|
-
var Dialog = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n z-index: 1300;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n ", "\n box-sizing: border-box;\n box-shadow: ", ";\n border-radius: 4px;\n\n @media (min-width: ", "rem) {\n max-width: 80%;\n min-width: 800px;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 92%;\n min-width: 92%;\n }\n"])), function (props) {
|
|
111
|
+
var Dialog = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n z-index: 1300;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n ", "\n box-sizing: border-box;\n box-shadow: ", ";\n border-radius: 4px;\n position: relative;\n\n @media (min-width: ", "rem) {\n max-width: 80%;\n min-width: 800px;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 92%;\n min-width: 92%;\n }\n"])), function (props) {
|
|
112
112
|
return props.theme.backgroundColor;
|
|
113
113
|
}, function (props) {
|
|
114
114
|
return props.theme.fontFamily;
|
|
@@ -117,12 +117,12 @@ var Dialog = _styledComponents["default"].div(_templateObject4 || (_templateObje
|
|
|
117
117
|
}, function (props) {
|
|
118
118
|
return props.theme.fontWeight;
|
|
119
119
|
}, function (props) {
|
|
120
|
-
return props.isCloseVisible && "min-height: 72px;";
|
|
120
|
+
return props.isCloseVisible && "min-height: 72px; padding-top: 24px;";
|
|
121
121
|
}, function (props) {
|
|
122
122
|
return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
|
|
123
123
|
}, _variables.responsiveSizes.medium, _variables.responsiveSizes.medium);
|
|
124
124
|
|
|
125
|
-
var Children = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n
|
|
125
|
+
var Children = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n"])), function (props) {
|
|
126
126
|
return props.padding && (0, _typeof2["default"])(props.padding) !== "object" ? _variables.spaces[props.padding] : _variables.spaces["small"];
|
|
127
127
|
}, function (props) {
|
|
128
128
|
return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.top ? _variables.spaces[props.padding.top] : "";
|
|
@@ -134,7 +134,7 @@ var Children = _styledComponents["default"].div(_templateObject5 || (_templateOb
|
|
|
134
134
|
return props.padding && (0, _typeof2["default"])(props.padding) === "object" && props.padding.left ? _variables.spaces[props.padding.left] : "";
|
|
135
135
|
});
|
|
136
136
|
|
|
137
|
-
var CloseIconContainer = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n position:
|
|
137
|
+
var CloseIconContainer = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n position: absolute;\n top: 20px;\n right: 20px;\n color: ", ";\n width: ", ";\n height: ", ";\n"])), function (props) {
|
|
138
138
|
return props.theme.closeIconColor;
|
|
139
139
|
}, function (props) {
|
|
140
140
|
return props.theme.closeIconWidth;
|