@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
package/slider/Slider.test.js
CHANGED
|
@@ -6,19 +6,26 @@ 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 _Slider = _interopRequireDefault(require("./Slider"));
|
|
10
12
|
|
|
11
13
|
describe("Slider component tests", function () {
|
|
12
|
-
test("Slider renders with correct text", function () {
|
|
14
|
+
test("Slider renders with correct text and label id", function () {
|
|
13
15
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
16
|
+
label: "label",
|
|
14
17
|
minValue: 0,
|
|
15
18
|
maxValue: 100,
|
|
16
19
|
showLimitsValues: true
|
|
17
20
|
})),
|
|
18
|
-
getByText = _render.getByText
|
|
21
|
+
getByText = _render.getByText,
|
|
22
|
+
getByRole = _render.getByRole;
|
|
19
23
|
|
|
20
24
|
expect(getByText("0")).toBeTruthy();
|
|
21
25
|
expect(getByText("100")).toBeTruthy();
|
|
26
|
+
var sliderId = getByText("label").getAttribute("id");
|
|
27
|
+
expect(getByRole("slider").getAttribute("aria-labelledby")).toBe(sliderId);
|
|
28
|
+
expect(getByRole("slider").getAttribute("aria-orientation")).toBe("horizontal");
|
|
22
29
|
});
|
|
23
30
|
test("Slider renders with correct initial value when it is uncontrolled", function () {
|
|
24
31
|
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
@@ -35,10 +42,37 @@ describe("Slider component tests", function () {
|
|
|
35
42
|
expect(slider.getAttribute("aria-valuenow")).toBe("30");
|
|
36
43
|
expect(input.value).toBe("30");
|
|
37
44
|
});
|
|
45
|
+
test("Slider correct limit values", function () {
|
|
46
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
47
|
+
defaultValue: 125,
|
|
48
|
+
minValue: 30,
|
|
49
|
+
maxValue: 125,
|
|
50
|
+
showLimitsValues: true
|
|
51
|
+
})),
|
|
52
|
+
getByRole = _render3.getByRole,
|
|
53
|
+
getByText = _render3.getByText;
|
|
54
|
+
|
|
55
|
+
var slider = getByRole("slider");
|
|
56
|
+
expect(slider.getAttribute("aria-valuemin")).toBe("30");
|
|
57
|
+
expect(slider.getAttribute("aria-valuemax")).toBe("125");
|
|
58
|
+
|
|
59
|
+
_userEvent["default"].tab();
|
|
60
|
+
|
|
61
|
+
_react2.fireEvent.keyDown(slider, {
|
|
62
|
+
key: "ArrowRight",
|
|
63
|
+
code: "ArrowRight",
|
|
64
|
+
keyCode: 39,
|
|
65
|
+
charCode: 39
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
expect(slider.getAttribute("aria-valuenow")).toBe("125");
|
|
69
|
+
expect(getByText("30")).toBeTruthy();
|
|
70
|
+
expect(getByText("125")).toBeTruthy();
|
|
71
|
+
});
|
|
38
72
|
test("Calls correct function onChange in controlled slider", function () {
|
|
39
73
|
var onChange = jest.fn();
|
|
40
74
|
|
|
41
|
-
var
|
|
75
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
42
76
|
minValue: 0,
|
|
43
77
|
maxValue: 100,
|
|
44
78
|
onChange: onChange,
|
|
@@ -46,7 +80,7 @@ describe("Slider component tests", function () {
|
|
|
46
80
|
value: 13,
|
|
47
81
|
showInput: true
|
|
48
82
|
})),
|
|
49
|
-
getByRole =
|
|
83
|
+
getByRole = _render4.getByRole;
|
|
50
84
|
|
|
51
85
|
expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("13");
|
|
52
86
|
expect(getByRole("textbox").value).toBe("13");
|
|
@@ -64,14 +98,14 @@ describe("Slider component tests", function () {
|
|
|
64
98
|
test("Calls correct function onChange in uncontrolled slider", function () {
|
|
65
99
|
var onChange = jest.fn();
|
|
66
100
|
|
|
67
|
-
var
|
|
101
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
68
102
|
minValue: 0,
|
|
69
103
|
maxValue: 100,
|
|
70
104
|
onChange: onChange,
|
|
71
105
|
showLimitsValues: true,
|
|
72
106
|
showInput: true
|
|
73
107
|
})),
|
|
74
|
-
getByRole =
|
|
108
|
+
getByRole = _render5.getByRole;
|
|
75
109
|
|
|
76
110
|
(0, _react2.act)(function () {
|
|
77
111
|
_react2.fireEvent.change(getByRole("textbox"), {
|
|
@@ -84,10 +118,10 @@ describe("Slider component tests", function () {
|
|
|
84
118
|
expect(getByRole("slider").getAttribute("aria-valuenow")).toBe("25");
|
|
85
119
|
expect(getByRole("textbox").value).toBe("25");
|
|
86
120
|
});
|
|
87
|
-
test("Disabled slider have disabled input", function () {
|
|
121
|
+
test("Disabled slider have disabled input and slider", function () {
|
|
88
122
|
var onChange = jest.fn();
|
|
89
123
|
|
|
90
|
-
var
|
|
124
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
91
125
|
minValue: 0,
|
|
92
126
|
maxValue: 100,
|
|
93
127
|
onChange: onChange,
|
|
@@ -96,7 +130,7 @@ describe("Slider component tests", function () {
|
|
|
96
130
|
showInput: true,
|
|
97
131
|
value: 13
|
|
98
132
|
})),
|
|
99
|
-
getByRole =
|
|
133
|
+
getByRole = _render6.getByRole;
|
|
100
134
|
|
|
101
135
|
(0, _react2.act)(function () {
|
|
102
136
|
_react2.fireEvent.change(getByRole("textbox"), {
|
|
@@ -107,33 +141,64 @@ describe("Slider component tests", function () {
|
|
|
107
141
|
});
|
|
108
142
|
expect(getByRole("textbox").hasAttribute("disabled")).toBeTruthy();
|
|
109
143
|
expect(getByRole("textbox").value).toBe("13");
|
|
144
|
+
expect(getByRole("slider").hasAttribute("disabled")).toBeTruthy();
|
|
110
145
|
});
|
|
111
|
-
test("Calls correct function onDragEnd", function () {
|
|
146
|
+
test("Calls correct function onDragEnd when it is uncontrolled", function () {
|
|
112
147
|
var onDragEnd = jest.fn();
|
|
113
148
|
|
|
114
|
-
var
|
|
149
|
+
var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
115
150
|
minValue: 0,
|
|
116
|
-
maxValue:
|
|
117
|
-
showLimitsValues: true,
|
|
118
|
-
showInput: true,
|
|
151
|
+
maxValue: 150,
|
|
119
152
|
onDragEnd: onDragEnd,
|
|
120
|
-
|
|
153
|
+
showInput: true
|
|
121
154
|
})),
|
|
122
|
-
getByRole =
|
|
155
|
+
getByRole = _render7.getByRole;
|
|
123
156
|
|
|
157
|
+
var slider = getByRole("slider");
|
|
158
|
+
(0, _react2.act)(function () {
|
|
159
|
+
_react2.fireEvent.mouseDown(slider);
|
|
160
|
+
});
|
|
124
161
|
(0, _react2.act)(function () {
|
|
125
|
-
_react2.fireEvent.
|
|
162
|
+
_react2.fireEvent.mouseUp(slider, {
|
|
163
|
+
target: {
|
|
164
|
+
value: 120
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
expect(onDragEnd).toHaveBeenCalledWith("120");
|
|
169
|
+
});
|
|
170
|
+
test("Calls correct function onDragEnd when it is controlled", function () {
|
|
171
|
+
var onDragEnd = jest.fn();
|
|
126
172
|
|
|
127
|
-
|
|
173
|
+
var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
174
|
+
minValue: 0,
|
|
175
|
+
maxValue: 150,
|
|
176
|
+
value: 50,
|
|
177
|
+
onDragEnd: onDragEnd,
|
|
178
|
+
showInput: true
|
|
179
|
+
})),
|
|
180
|
+
getByRole = _render8.getByRole;
|
|
181
|
+
|
|
182
|
+
var slider = getByRole("slider");
|
|
183
|
+
(0, _react2.act)(function () {
|
|
184
|
+
_react2.fireEvent.mouseDown(slider);
|
|
128
185
|
});
|
|
129
|
-
|
|
186
|
+
(0, _react2.act)(function () {
|
|
187
|
+
_react2.fireEvent.mouseUp(slider, {
|
|
188
|
+
target: {
|
|
189
|
+
value: 120
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
expect(onDragEnd).toHaveBeenCalledWith("120");
|
|
194
|
+
expect(slider.getAttribute("aria-valuenow")).toBe("50");
|
|
130
195
|
});
|
|
131
196
|
test("Calls correct function labelFormatCallback", function () {
|
|
132
197
|
var labelFormatCallback = jest.fn(function (x) {
|
|
133
198
|
return "".concat(x, "$");
|
|
134
199
|
});
|
|
135
200
|
|
|
136
|
-
var
|
|
201
|
+
var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
137
202
|
minValue: 0,
|
|
138
203
|
maxValue: 100,
|
|
139
204
|
showLimitsValues: true,
|
|
@@ -141,10 +206,45 @@ describe("Slider component tests", function () {
|
|
|
141
206
|
value: 25,
|
|
142
207
|
labelFormatCallback: labelFormatCallback
|
|
143
208
|
})),
|
|
144
|
-
getByText =
|
|
209
|
+
getByText = _render9.getByText;
|
|
145
210
|
|
|
146
211
|
expect(getByText("0$")).toBeTruthy();
|
|
147
212
|
expect(getByText("100$")).toBeTruthy();
|
|
148
213
|
expect(labelFormatCallback).toHaveBeenCalledTimes(2);
|
|
149
214
|
});
|
|
215
|
+
test("Change value correctly to 0 from external function", function () {
|
|
216
|
+
var onChange = jest.fn();
|
|
217
|
+
|
|
218
|
+
var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
219
|
+
minValue: 0,
|
|
220
|
+
maxValue: 100,
|
|
221
|
+
onChange: onChange,
|
|
222
|
+
showLimitsValues: true,
|
|
223
|
+
value: 13,
|
|
224
|
+
showInput: true
|
|
225
|
+
})),
|
|
226
|
+
rerender = _render10.rerender,
|
|
227
|
+
getByRole = _render10.getByRole;
|
|
228
|
+
|
|
229
|
+
var slider = getByRole("slider");
|
|
230
|
+
|
|
231
|
+
_userEvent["default"].tab();
|
|
232
|
+
|
|
233
|
+
_react2.fireEvent.keyDown(slider, {
|
|
234
|
+
key: "ArrowRight",
|
|
235
|
+
code: "ArrowRight",
|
|
236
|
+
keyCode: 39,
|
|
237
|
+
charCode: 39
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
rerender( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
241
|
+
minValue: 0,
|
|
242
|
+
maxValue: 100,
|
|
243
|
+
onChange: onChange,
|
|
244
|
+
showLimitsValues: true,
|
|
245
|
+
value: 0,
|
|
246
|
+
showInput: true
|
|
247
|
+
}));
|
|
248
|
+
expect(slider.getAttribute("aria-valuenow")).toBe("0");
|
|
249
|
+
});
|
|
150
250
|
});
|
package/slider/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/switch/Switch.js
CHANGED
|
@@ -31,15 +31,13 @@ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabel
|
|
|
31
31
|
|
|
32
32
|
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
|
|
33
33
|
|
|
34
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5
|
|
34
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
35
35
|
|
|
36
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); }
|
|
37
37
|
|
|
38
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; }
|
|
39
39
|
|
|
40
40
|
var DxcSwitch = function DxcSwitch(_ref) {
|
|
41
|
-
var _ref2;
|
|
42
|
-
|
|
43
41
|
var defaultChecked = _ref.defaultChecked,
|
|
44
42
|
checked = _ref.checked,
|
|
45
43
|
value = _ref.value,
|
|
@@ -71,10 +69,6 @@ var DxcSwitch = function DxcSwitch(_ref) {
|
|
|
71
69
|
innerChecked = _useState4[0],
|
|
72
70
|
setInnerChecked = _useState4[1];
|
|
73
71
|
|
|
74
|
-
var _useState5 = (0, _react.useState)((_ref2 = label !== "" && label !== null && label !== undefined) !== null && _ref2 !== void 0 ? _ref2 : false),
|
|
75
|
-
_useState6 = (0, _slicedToArray2["default"])(_useState5, 1),
|
|
76
|
-
hasLabel = _useState6[0];
|
|
77
|
-
|
|
78
72
|
var colorsTheme = (0, _useTheme["default"])();
|
|
79
73
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
80
74
|
var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
|
|
@@ -89,30 +83,16 @@ var DxcSwitch = function DxcSwitch(_ref) {
|
|
|
89
83
|
refTrack.current.focus();
|
|
90
84
|
var isChecked = !(checked !== null && checked !== void 0 ? checked : innerChecked);
|
|
91
85
|
setInnerChecked(isChecked);
|
|
92
|
-
|
|
93
|
-
if (typeof onChange === "function") {
|
|
94
|
-
onChange(isChecked);
|
|
95
|
-
}
|
|
96
|
-
|
|
86
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(isChecked);
|
|
97
87
|
break;
|
|
98
88
|
}
|
|
99
89
|
};
|
|
100
90
|
|
|
101
91
|
var handlerSwitchChange = function handlerSwitchChange(event) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
setInnerChecked(isChecked);
|
|
107
|
-
|
|
108
|
-
if (typeof onChange === "function") {
|
|
109
|
-
onChange(isChecked);
|
|
110
|
-
}
|
|
111
|
-
} else {
|
|
112
|
-
if (typeof onChange === "function") {
|
|
113
|
-
onChange(!checked);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
92
|
+
checked !== null && checked !== void 0 ? checked : setInnerChecked(function (innerChecked) {
|
|
93
|
+
return !innerChecked;
|
|
94
|
+
});
|
|
95
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(checked ? !checked : !innerChecked);
|
|
116
96
|
};
|
|
117
97
|
|
|
118
98
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
@@ -120,47 +100,38 @@ var DxcSwitch = function DxcSwitch(_ref) {
|
|
|
120
100
|
}, /*#__PURE__*/_react["default"].createElement(SwitchContainer, {
|
|
121
101
|
margin: margin,
|
|
122
102
|
size: size,
|
|
123
|
-
onKeyDown: handleOnKeyDown
|
|
124
|
-
|
|
103
|
+
onKeyDown: handleOnKeyDown,
|
|
104
|
+
disabled: disabled,
|
|
105
|
+
onClick: !disabled ? handlerSwitchChange : undefined
|
|
106
|
+
}, labelPosition === "before" && label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
|
|
125
107
|
id: labelId,
|
|
126
108
|
labelPosition: labelPosition,
|
|
127
|
-
onClick: !disabled ? handlerSwitchChange : undefined,
|
|
128
109
|
disabled: disabled,
|
|
129
110
|
backgroundType: backgroundType,
|
|
130
|
-
|
|
131
|
-
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, translatedLabels.formFields.optionalLabel)), /*#__PURE__*/_react["default"].createElement(
|
|
132
|
-
labelPosition: labelPosition,
|
|
133
|
-
hasLabel: hasLabel,
|
|
134
|
-
htmlFor: labelId,
|
|
135
|
-
onClick: disabled === true ? function () {} : handlerSwitchChange
|
|
136
|
-
}, /*#__PURE__*/_react["default"].createElement(SwitchInput, {
|
|
111
|
+
label: label
|
|
112
|
+
}, label, " ", optional && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, translatedLabels.formFields.optionalLabel)), /*#__PURE__*/_react["default"].createElement(ValueInput, {
|
|
137
113
|
type: "checkbox",
|
|
138
|
-
role: "switch",
|
|
139
114
|
name: name,
|
|
140
|
-
|
|
141
|
-
disabled: disabled,
|
|
115
|
+
"aria-hidden": true,
|
|
142
116
|
value: value,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}), disabled ? /*#__PURE__*/_react["default"].createElement(DisabledSwitchTrack, {
|
|
149
|
-
backgroundType: backgroundType,
|
|
150
|
-
"data-checked": checked !== null && checked !== void 0 ? checked : innerChecked ? innerChecked : undefined,
|
|
151
|
-
tabIndex: -1
|
|
152
|
-
}) : /*#__PURE__*/_react["default"].createElement(SwitchTrack, {
|
|
117
|
+
disabled: disabled,
|
|
118
|
+
checked: checked !== null && checked !== void 0 ? checked : innerChecked,
|
|
119
|
+
readOnly: true
|
|
120
|
+
}), /*#__PURE__*/_react["default"].createElement(SwitchBase, null, /*#__PURE__*/_react["default"].createElement(SwitchTrack, {
|
|
121
|
+
role: "switch",
|
|
153
122
|
backgroundType: backgroundType,
|
|
154
|
-
"
|
|
155
|
-
|
|
123
|
+
"aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked,
|
|
124
|
+
"aria-disabled": disabled,
|
|
125
|
+
disabled: disabled,
|
|
126
|
+
"aria-labelledby": labelId,
|
|
127
|
+
tabIndex: !disabled ? tabIndex : -1,
|
|
156
128
|
ref: refTrack
|
|
157
|
-
})), labelPosition === "after" &&
|
|
129
|
+
})), labelPosition === "after" && label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
|
|
158
130
|
id: labelId,
|
|
159
131
|
labelPosition: labelPosition,
|
|
160
|
-
onClick: !disabled ? handlerSwitchChange : undefined,
|
|
161
132
|
disabled: disabled,
|
|
162
133
|
backgroundType: backgroundType,
|
|
163
|
-
|
|
134
|
+
label: label
|
|
164
135
|
}, optional && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, translatedLabels.formFields.optionalLabel), " ", label)));
|
|
165
136
|
};
|
|
166
137
|
|
|
@@ -169,15 +140,67 @@ var sizes = {
|
|
|
169
140
|
medium: "240px",
|
|
170
141
|
large: "480px",
|
|
171
142
|
fillParent: "100%",
|
|
172
|
-
fitContent: "
|
|
143
|
+
fitContent: "fit-content"
|
|
173
144
|
};
|
|
174
145
|
|
|
175
146
|
var calculateWidth = function calculateWidth(margin, size) {
|
|
176
147
|
return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
|
|
177
148
|
};
|
|
178
149
|
|
|
179
|
-
var
|
|
150
|
+
var getDisabledColor = function getDisabledColor(props, element, subelement) {
|
|
151
|
+
switch (element) {
|
|
152
|
+
case "track":
|
|
153
|
+
switch (subelement) {
|
|
154
|
+
case "check":
|
|
155
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckedTrackBackgroundColorOnDark : props.theme.disabledCheckedTrackBackgroundColor;
|
|
156
|
+
|
|
157
|
+
case "uncheck":
|
|
158
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledUncheckedTrackBackgroundColorOnDark : props.theme.disabledUncheckedTrackBackgroundColor;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
case "thumb":
|
|
162
|
+
switch (subelement) {
|
|
163
|
+
case "check":
|
|
164
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckedThumbBackgroundColorOnDark : props.theme.disabledCheckedThumbBackgroundColor;
|
|
165
|
+
|
|
166
|
+
case "uncheck":
|
|
167
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledUncheckedThumbBackgroundColorOnDark : props.theme.disabledUncheckedThumbBackgroundColor;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
case "label":
|
|
171
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledLabelFontColorOnDark : props.theme.disabledLabelFontColor;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
var getNotDisabledColor = function getNotDisabledColor(props, element, subelement) {
|
|
176
|
+
switch (element) {
|
|
177
|
+
case "track":
|
|
178
|
+
switch (subelement) {
|
|
179
|
+
case "check":
|
|
180
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkedTrackBackgroundColorOnDark : props.theme.checkedTrackBackgroundColor;
|
|
181
|
+
|
|
182
|
+
case "uncheck":
|
|
183
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.uncheckedTrackBackgroundColorOnDark : props.theme.uncheckedTrackBackgroundColor;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
case "thumb":
|
|
187
|
+
switch (subelement) {
|
|
188
|
+
case "check":
|
|
189
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkedThumbBackgroundColorOnDark : props.theme.checkedThumbBackgroundColor;
|
|
190
|
+
|
|
191
|
+
case "uncheck":
|
|
192
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.uncheckedThumbBackgroundColorOnDark : props.theme.uncheckedThumbBackgroundColor;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
case "label":
|
|
196
|
+
return props.backgroundType && props.backgroundType === "dark" ? props.theme.labelFontColorOnDark : props.theme.labelFontColor;
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
var SwitchContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n width: ", ";\n height: 40px;\n cursor: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
|
|
180
201
|
return calculateWidth(props.margin, props.size);
|
|
202
|
+
}, function (props) {
|
|
203
|
+
return props.disabled === true ? "not-allowed" : "pointer";
|
|
181
204
|
}, function (props) {
|
|
182
205
|
return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
|
|
183
206
|
}, function (props) {
|
|
@@ -190,8 +213,8 @@ var SwitchContainer = _styledComponents["default"].div(_templateObject || (_temp
|
|
|
190
213
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
|
|
191
214
|
});
|
|
192
215
|
|
|
193
|
-
var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ", ";\n opacity: 1;\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n
|
|
194
|
-
return props.disabled ? props
|
|
216
|
+
var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ", ";\n opacity: 1;\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n\n ", ";\n\n ", "\n"])), function (props) {
|
|
217
|
+
return props.disabled ? getDisabledColor(props, "label") : getNotDisabledColor(props, "label");
|
|
195
218
|
}, function (props) {
|
|
196
219
|
return props.theme.labelFontFamily;
|
|
197
220
|
}, function (props) {
|
|
@@ -201,23 +224,21 @@ var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_tem
|
|
|
201
224
|
}, function (props) {
|
|
202
225
|
return props.theme.labelFontWeight;
|
|
203
226
|
}, function (props) {
|
|
204
|
-
return props.
|
|
205
|
-
}, function (props) {
|
|
206
|
-
return !props.hasLabel ? "margin: 0px;" : props.labelPosition === "after" ? "margin-left: ".concat(props.theme.spaceBetweenLabelSwitch, ";") : "margin-right: ".concat(props.theme.spaceBetweenLabelSwitch, ";");
|
|
227
|
+
return !props.label ? "margin: 0px;" : props.labelPosition === "after" ? "margin-left: ".concat(props.theme.spaceBetweenLabelSwitch, ";") : "margin-right: ".concat(props.theme.spaceBetweenLabelSwitch, ";");
|
|
207
228
|
}, function (props) {
|
|
208
229
|
return props.labelPosition === "before" && "order: -1";
|
|
209
230
|
});
|
|
210
231
|
|
|
211
|
-
var SwitchBase = _styledComponents["default"].label(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n margin:
|
|
212
|
-
return !props.hasLabel ? "0px 4px" : props.labelPosition === "before" ? "0 4px 0 12px" : "0 12px 0 4px";
|
|
213
|
-
});
|
|
232
|
+
var SwitchBase = _styledComponents["default"].label(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n margin: 0px 12px;\n"])));
|
|
214
233
|
|
|
215
|
-
var
|
|
234
|
+
var ValueInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
|
|
216
235
|
|
|
217
|
-
var SwitchTrack = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 15px;\n width: ", ";\n height: ", ";\n position: relative;\n
|
|
236
|
+
var SwitchTrack = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 15px;\n width: ", ";\n height: ", ";\n position: relative;\n cursor: ", ";\n\n &:focus-visible {\n outline: none;\n ::before {\n outline: ", ";\n outline-offset: 6px;\n }\n }\n\n /* Thumb element */\n ::before {\n content: \"\";\n transform: initial;\n position: absolute;\n width: ", ";\n height: ", ";\n border-radius: 50%;\n z-index: 1;\n box-shadow: 0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%);\n bottom: -6px;\n left: -4px;\n transform: translateX(0px);\n background-color: ", ";\n }\n\n /* Unchecked */\n background-color: ", ";\n\n /* Checked */\n &[aria-checked=\"true\"] {\n background-color: ", ";\n ::before {\n transform: translateX(", ");\n background-color: ", ";\n }\n }\n"])), function (props) {
|
|
218
237
|
return props.theme.trackWidth;
|
|
219
238
|
}, function (props) {
|
|
220
239
|
return props.theme.trackHeight;
|
|
240
|
+
}, function (props) {
|
|
241
|
+
return props.disabled ? "not-allowed" : "pointer";
|
|
221
242
|
}, function (props) {
|
|
222
243
|
return "".concat(props.backgroundType === "dark" ? props.theme.thumbFocusColorOnDark : props.theme.thumbFocusColor, " solid 2px");
|
|
223
244
|
}, function (props) {
|
|
@@ -225,27 +246,16 @@ var SwitchTrack = _styledComponents["default"].span(_templateObject5 || (_templa
|
|
|
225
246
|
}, function (props) {
|
|
226
247
|
return props.theme.thumbHeight;
|
|
227
248
|
}, function (props) {
|
|
228
|
-
return props.
|
|
249
|
+
return props.disabled ? getDisabledColor(props, "thumb", "uncheck") : getNotDisabledColor(props, "thumb", "uncheck");
|
|
229
250
|
}, function (props) {
|
|
230
|
-
return props.
|
|
251
|
+
return props.disabled ? getDisabledColor(props, "track", "uncheck") : getNotDisabledColor(props, "track", "uncheck");
|
|
231
252
|
}, function (props) {
|
|
232
|
-
return props.
|
|
253
|
+
return props.disabled ? getDisabledColor(props, "track", "check") : getNotDisabledColor(props, "track", "check");
|
|
233
254
|
}, function (props) {
|
|
234
255
|
return props.theme.thumbShift;
|
|
235
256
|
}, function (props) {
|
|
236
|
-
return props.
|
|
257
|
+
return props.disabled ? getDisabledColor(props, "thumb", "check") : getNotDisabledColor(props, "thumb", "check");
|
|
237
258
|
});
|
|
238
259
|
|
|
239
|
-
var DisabledSwitchTrack = (0, _styledComponents["default"])(SwitchTrack)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: not-allowed;\n\n /* Unchecked */\n background-color: ", ";\n\n ::before {\n background-color: ", ";\n }\n\n /* Checked */\n &[data-checked=\"true\"] {\n background-color: ", ";\n\n ::before {\n transform: translateX(", ");\n background-color: ", ";\n }\n }\n"])), function (props) {
|
|
240
|
-
return props.backgroundType === "dark" ? props.theme.disabledUncheckedTrackBackgroundColorOnDark : props.theme.disabledUncheckedTrackBackgroundColor;
|
|
241
|
-
}, function (props) {
|
|
242
|
-
return props.backgroundType === "dark" ? props.theme.disabledUncheckedThumbBackgroundColorOnDark : props.theme.disabledUncheckedThumbBackgroundColor;
|
|
243
|
-
}, function (props) {
|
|
244
|
-
return props.backgroundType === "dark" ? props.theme.disabledCheckedTrackBackgroundColorOnDark : props.theme.disabledCheckedTrackBackgroundColor;
|
|
245
|
-
}, function (props) {
|
|
246
|
-
return props.theme.thumbShift;
|
|
247
|
-
}, function (props) {
|
|
248
|
-
return props.backgroundType === "dark" ? props.theme.disabledCheckedThumbBackgroundColorOnDark : props.theme.disabledCheckedThumbBackgroundColor;
|
|
249
|
-
});
|
|
250
260
|
var _default = DxcSwitch;
|
|
251
261
|
exports["default"] = _default;
|
package/switch/Switch.test.js
CHANGED
|
@@ -185,28 +185,41 @@ describe("Switch component tests", function () {
|
|
|
185
185
|
expect(onChange.mock.calls[1][0]).toBe(false);
|
|
186
186
|
});
|
|
187
187
|
test("Renders with correct initial value and initial state when it is uncontrolled", function () {
|
|
188
|
-
var
|
|
188
|
+
var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
189
189
|
label: "Default label",
|
|
190
190
|
defaultChecked: true,
|
|
191
|
-
value: "test-defaultChecked"
|
|
191
|
+
value: "test-defaultChecked",
|
|
192
|
+
name: "test"
|
|
193
|
+
}));
|
|
194
|
+
var switchEl = component.getByRole("switch");
|
|
195
|
+
var inputEl = component.container.querySelector("input[name=\"test\"]");
|
|
196
|
+
expect(inputEl.value).toBe("test-defaultChecked");
|
|
197
|
+
expect(switchEl.getAttribute("aria-checked")).toBe("true");
|
|
198
|
+
});
|
|
199
|
+
test("Renders with correct aria attributes", function () {
|
|
200
|
+
var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
201
|
+
label: "Default label"
|
|
192
202
|
})),
|
|
203
|
+
getByText = _render10.getByText,
|
|
193
204
|
getByRole = _render10.getByRole;
|
|
194
205
|
|
|
195
|
-
var
|
|
196
|
-
|
|
197
|
-
expect(
|
|
198
|
-
expect(
|
|
206
|
+
var switchEl = getByRole("switch");
|
|
207
|
+
var label = getByText("Default label");
|
|
208
|
+
expect(switchEl.getAttribute("aria-labelledby")).toBe(label.id);
|
|
209
|
+
expect(switchEl.getAttribute("aria-checked")).toBe("false");
|
|
199
210
|
});
|
|
200
|
-
test("Renders
|
|
211
|
+
test("Renders disabled switch correctly", function () {
|
|
201
212
|
var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
202
|
-
label: "Default label"
|
|
213
|
+
label: "Default label",
|
|
214
|
+
disabled: true
|
|
203
215
|
})),
|
|
204
|
-
|
|
205
|
-
|
|
216
|
+
getByText = _render11.getByText,
|
|
217
|
+
getByRole = _render11.getByRole;
|
|
206
218
|
|
|
207
|
-
var
|
|
219
|
+
var switchEl = getByRole("switch");
|
|
208
220
|
var label = getByText("Default label");
|
|
209
|
-
expect(
|
|
210
|
-
expect(
|
|
221
|
+
expect(switchEl.getAttribute("aria-labelledby")).toBe(label.id);
|
|
222
|
+
expect(switchEl.getAttribute("aria-checked")).toBe("false");
|
|
223
|
+
expect(switchEl.getAttribute("aria-disabled")).toBe("true");
|
|
211
224
|
});
|
|
212
225
|
});
|
package/tabs/Tab.d.ts
ADDED