@dxc-technology/halstack-react 0.0.0-1e57e26 → 0.0.0-1e5db1e
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 +12 -0
- package/HalstackContext.js +295 -0
- 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 +19 -4
- 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 +24 -6
- package/accordion-group/types.d.ts +4 -0
- package/alert/Alert.js +4 -1
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +5 -3
- package/badge/types.d.ts +1 -0
- package/bleed/types.d.ts +24 -0
- package/box/Box.js +22 -32
- package/button/Button.js +14 -11
- package/card/Card.js +27 -28
- package/checkbox/Checkbox.d.ts +1 -1
- package/checkbox/Checkbox.js +43 -39
- package/checkbox/Checkbox.stories.tsx +124 -128
- package/checkbox/Checkbox.test.js +13 -0
- package/checkbox/types.d.ts +7 -3
- package/common/variables.js +181 -84
- package/date-input/DateInput.js +53 -39
- package/date-input/DateInput.stories.tsx +7 -7
- package/date-input/DateInput.test.js +69 -59
- package/date-input/types.d.ts +16 -9
- package/dialog/Dialog.js +4 -32
- package/dropdown/Dropdown.js +13 -17
- package/file-input/FileInput.js +9 -6
- package/file-input/FileItem.js +7 -5
- package/footer/Footer.js +15 -88
- package/header/Header.js +27 -48
- package/header/Header.stories.tsx +46 -36
- package/header/Header.test.js +18 -2
- package/inset/types.d.ts +24 -0
- package/layout/ApplicationLayout.d.ts +4 -3
- package/layout/ApplicationLayout.js +78 -114
- package/layout/ApplicationLayout.stories.tsx +14 -59
- package/layout/Icons.d.ts +5 -0
- package/layout/Icons.js +13 -2
- package/layout/SidenavContext.d.ts +5 -0
- package/layout/SidenavContext.js +19 -0
- package/layout/types.d.ts +4 -10
- package/link/Link.d.ts +3 -2
- package/link/Link.js +57 -74
- package/link/Link.stories.tsx +87 -52
- package/link/Link.test.js +7 -15
- package/link/types.d.ts +7 -23
- package/main.d.ts +4 -3
- package/main.js +23 -9
- package/number-input/NumberInput.js +11 -18
- package/number-input/NumberInput.stories.tsx +5 -5
- package/number-input/NumberInput.test.js +2 -4
- package/number-input/types.d.ts +17 -10
- package/package.json +6 -5
- package/paginator/Paginator.js +17 -38
- package/password-input/PasswordInput.js +7 -4
- package/password-input/PasswordInput.test.js +3 -6
- package/password-input/types.d.ts +14 -11
- package/progress-bar/ProgressBar.js +1 -1
- package/progress-bar/ProgressBar.stories.jsx +11 -11
- package/quick-nav/QuickNav.d.ts +4 -0
- package/quick-nav/QuickNav.js +112 -0
- package/quick-nav/QuickNav.stories.tsx +237 -0
- package/quick-nav/types.d.ts +21 -0
- package/{radio → quick-nav}/types.js +0 -0
- package/radio-group/Radio.js +1 -1
- package/radio-group/RadioGroup.js +8 -6
- package/row/types.d.ts +18 -0
- package/select/Listbox.d.ts +4 -0
- package/select/Listbox.js +152 -0
- package/select/Option.js +1 -1
- package/select/Select.js +66 -161
- package/select/Select.stories.tsx +14 -2
- package/select/Select.test.js +335 -231
- package/select/types.d.ts +33 -11
- package/sidenav/Sidenav.d.ts +1 -1
- package/sidenav/Sidenav.js +20 -9
- 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 +31 -10
- package/slider/types.d.ts +4 -0
- package/spinner/Spinner.js +1 -1
- package/switch/Switch.d.ts +1 -1
- package/switch/Switch.js +35 -19
- package/switch/Switch.stories.tsx +14 -14
- package/switch/Switch.test.js +25 -0
- package/switch/types.d.ts +6 -2
- 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 +26 -9
- package/tabs/types.d.ts +4 -0
- package/tabs-nav/NavTabs.d.ts +8 -0
- package/tabs-nav/NavTabs.js +125 -0
- package/tabs-nav/NavTabs.stories.tsx +170 -0
- package/tabs-nav/NavTabs.test.js +82 -0
- package/tabs-nav/Tab.d.ts +4 -0
- package/tabs-nav/Tab.js +132 -0
- package/tabs-nav/types.d.ts +53 -0
- package/tabs-nav/types.js +5 -0
- package/tag/Tag.js +5 -8
- package/text-input/Suggestion.d.ts +4 -0
- package/text-input/Suggestion.js +55 -0
- package/text-input/TextInput.js +48 -76
- package/text-input/TextInput.test.js +22 -35
- package/text-input/types.d.ts +27 -12
- package/textarea/Textarea.js +12 -23
- package/textarea/Textarea.test.js +10 -20
- package/textarea/types.d.ts +14 -11
- 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 +35 -4
- package/toggle-group/types.d.ts +8 -0
- package/useTheme.js +2 -2
- package/useTranslatedLabels.d.ts +2 -0
- package/useTranslatedLabels.js +20 -0
- package/wizard/Wizard.d.ts +1 -1
- package/wizard/Wizard.js +55 -44
- package/wizard/Wizard.stories.tsx +13 -23
- package/wizard/Wizard.test.js +36 -23
- package/wizard/types.d.ts +6 -2
- package/ThemeContext.d.ts +0 -10
- package/ThemeContext.js +0 -243
- package/radio/Radio.d.ts +0 -4
- package/radio/Radio.js +0 -174
- package/radio/Radio.stories.tsx +0 -192
- package/radio/Radio.test.js +0 -71
- package/radio/types.d.ts +0 -54
|
@@ -37,7 +37,7 @@ describe("DateInput component tests", function () {
|
|
|
37
37
|
|
|
38
38
|
expect(input.value).toBe("");
|
|
39
39
|
});
|
|
40
|
-
test("Renders with
|
|
40
|
+
test("Renders with custom error", function () {
|
|
41
41
|
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
42
42
|
error: "Personalized error."
|
|
43
43
|
})),
|
|
@@ -45,6 +45,29 @@ describe("DateInput component tests", function () {
|
|
|
45
45
|
|
|
46
46
|
expect(getByText("Personalized error.")).toBeTruthy();
|
|
47
47
|
});
|
|
48
|
+
test("Renders with an initial value when it is uncontrolled", function () {
|
|
49
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
50
|
+
label: "Default label",
|
|
51
|
+
placeholder: "Placeholder",
|
|
52
|
+
defaultValue: "21-10-2015"
|
|
53
|
+
})),
|
|
54
|
+
getByText = _render3.getByText,
|
|
55
|
+
getByRole = _render3.getByRole;
|
|
56
|
+
|
|
57
|
+
var input = getByRole("textbox");
|
|
58
|
+
var calendarAction = getByRole("button");
|
|
59
|
+
var d = new Date(2015, 9, 21);
|
|
60
|
+
var options = {
|
|
61
|
+
weekday: "short",
|
|
62
|
+
month: "short",
|
|
63
|
+
day: "numeric"
|
|
64
|
+
};
|
|
65
|
+
expect(input.value).toBe("21-10-2015");
|
|
66
|
+
|
|
67
|
+
_userEvent["default"].click(calendarAction);
|
|
68
|
+
|
|
69
|
+
expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
|
|
70
|
+
});
|
|
48
71
|
test("Renders with correct format: user typed date but it's invalid, onBlur error", function () {
|
|
49
72
|
var onBlur = jest.fn(function (_ref) {
|
|
50
73
|
var value = _ref.value,
|
|
@@ -53,12 +76,12 @@ describe("DateInput component tests", function () {
|
|
|
53
76
|
expect(error).toBe("Invalid date.");
|
|
54
77
|
});
|
|
55
78
|
|
|
56
|
-
var
|
|
79
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
57
80
|
label: "With format MM/dd/yyyy",
|
|
58
81
|
format: "MM/dd/yyyy",
|
|
59
82
|
onBlur: onBlur
|
|
60
83
|
})),
|
|
61
|
-
getByRole =
|
|
84
|
+
getByRole = _render4.getByRole;
|
|
62
85
|
|
|
63
86
|
var input = getByRole("textbox");
|
|
64
87
|
|
|
@@ -69,12 +92,12 @@ describe("DateInput component tests", function () {
|
|
|
69
92
|
test("Renders with correct format: user typed date but it's invalid, onChange error", function () {
|
|
70
93
|
var onChange = jest.fn();
|
|
71
94
|
|
|
72
|
-
var
|
|
95
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
73
96
|
label: "With format MM/dd/yyyy",
|
|
74
97
|
format: "MM/dd/yyyy",
|
|
75
98
|
onChange: onChange
|
|
76
99
|
})),
|
|
77
|
-
getByRole =
|
|
100
|
+
getByRole = _render5.getByRole;
|
|
78
101
|
|
|
79
102
|
var input = getByRole("textbox");
|
|
80
103
|
|
|
@@ -83,14 +106,13 @@ describe("DateInput component tests", function () {
|
|
|
83
106
|
expect(onChange).toHaveBeenCalledTimes(10);
|
|
84
107
|
expect(onChange).toHaveBeenCalledWith({
|
|
85
108
|
value: "10/90/2010",
|
|
86
|
-
error: "Invalid date."
|
|
87
|
-
date: null
|
|
109
|
+
error: "Invalid date."
|
|
88
110
|
});
|
|
89
111
|
});
|
|
90
112
|
test("Calendar renders with correct date: today's date", function () {
|
|
91
|
-
var
|
|
92
|
-
getByText =
|
|
93
|
-
getByRole =
|
|
113
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
|
|
114
|
+
getByText = _render6.getByText,
|
|
115
|
+
getByRole = _render6.getByRole;
|
|
94
116
|
|
|
95
117
|
var calendarAction = getByRole("button");
|
|
96
118
|
var d = new Date();
|
|
@@ -105,11 +127,11 @@ describe("DateInput component tests", function () {
|
|
|
105
127
|
expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
|
|
106
128
|
});
|
|
107
129
|
test("Calendar renders with correct date: value prop", function () {
|
|
108
|
-
var
|
|
130
|
+
var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
109
131
|
value: "20-10-2019"
|
|
110
132
|
})),
|
|
111
|
-
getByText =
|
|
112
|
-
getByRole =
|
|
133
|
+
getByText = _render7.getByText,
|
|
134
|
+
getByRole = _render7.getByRole;
|
|
113
135
|
|
|
114
136
|
var calendarAction = getByRole("button");
|
|
115
137
|
var d = new Date(2019, 9, 20);
|
|
@@ -124,9 +146,9 @@ describe("DateInput component tests", function () {
|
|
|
124
146
|
expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
|
|
125
147
|
});
|
|
126
148
|
test("Calendar renders with correct date: user typed value", function () {
|
|
127
|
-
var
|
|
128
|
-
getByText =
|
|
129
|
-
getByRole =
|
|
149
|
+
var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
|
|
150
|
+
getByText = _render8.getByText,
|
|
151
|
+
getByRole = _render8.getByRole;
|
|
130
152
|
|
|
131
153
|
var calendarAction = getByRole("button");
|
|
132
154
|
var d = new Date(2010, 0, 1);
|
|
@@ -146,11 +168,11 @@ describe("DateInput component tests", function () {
|
|
|
146
168
|
test("Calendar renders with correct date: invalid date, renders with today's date", function () {
|
|
147
169
|
var onBlur = jest.fn();
|
|
148
170
|
|
|
149
|
-
var
|
|
171
|
+
var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
150
172
|
onBlur: onBlur
|
|
151
173
|
})),
|
|
152
|
-
getByText =
|
|
153
|
-
getByRole =
|
|
174
|
+
getByText = _render9.getByText,
|
|
175
|
+
getByRole = _render9.getByRole;
|
|
154
176
|
|
|
155
177
|
var calendarAction = getByRole("button");
|
|
156
178
|
var d = new Date();
|
|
@@ -168,8 +190,7 @@ describe("DateInput component tests", function () {
|
|
|
168
190
|
expect(onBlur).toHaveBeenCalled();
|
|
169
191
|
expect(onBlur).toHaveBeenCalledWith({
|
|
170
192
|
value: "01-01-xxxx",
|
|
171
|
-
error: "Invalid date."
|
|
172
|
-
date: null
|
|
193
|
+
error: "Invalid date."
|
|
173
194
|
});
|
|
174
195
|
|
|
175
196
|
_userEvent["default"].click(calendarAction);
|
|
@@ -177,12 +198,12 @@ describe("DateInput component tests", function () {
|
|
|
177
198
|
expect(getByText(d.toLocaleString("en-US", options))).toBeTruthy();
|
|
178
199
|
});
|
|
179
200
|
test("Selecting a date from the calendar with an specific format", function () {
|
|
180
|
-
var
|
|
201
|
+
var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
181
202
|
label: "With format M-dd-yyyy",
|
|
182
203
|
format: "M-dd-yyyy"
|
|
183
204
|
})),
|
|
184
|
-
getByText =
|
|
185
|
-
getByRole =
|
|
205
|
+
getByText = _render10.getByText,
|
|
206
|
+
getByRole = _render10.getByRole;
|
|
186
207
|
|
|
187
208
|
var input = getByRole("textbox");
|
|
188
209
|
var calendarAction = getByRole("button");
|
|
@@ -212,8 +233,8 @@ describe("DateInput component tests", function () {
|
|
|
212
233
|
expect(input.value).toBe("".concat(d.getMonth() + 1, "-10-").concat(d.getFullYear()));
|
|
213
234
|
});
|
|
214
235
|
test("Selecting a date from the calendar (using keyboard presses)", function () {
|
|
215
|
-
var
|
|
216
|
-
getByRole =
|
|
236
|
+
var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], null)),
|
|
237
|
+
getByRole = _render11.getByRole;
|
|
217
238
|
|
|
218
239
|
var calendarAction = getByRole("button");
|
|
219
240
|
var input = getByRole("textbox");
|
|
@@ -263,11 +284,11 @@ describe("DateInput component tests", function () {
|
|
|
263
284
|
var onBlur = jest.fn();
|
|
264
285
|
var onChange = jest.fn();
|
|
265
286
|
|
|
266
|
-
var
|
|
287
|
+
var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
267
288
|
onChange: onChange,
|
|
268
289
|
onBlur: onBlur
|
|
269
290
|
})),
|
|
270
|
-
getByRole =
|
|
291
|
+
getByRole = _render12.getByRole;
|
|
271
292
|
|
|
272
293
|
var input = getByRole("textbox");
|
|
273
294
|
var d = new Date(2011, 9, 10);
|
|
@@ -278,7 +299,6 @@ describe("DateInput component tests", function () {
|
|
|
278
299
|
expect(onChange).toHaveBeenCalledTimes(10);
|
|
279
300
|
expect(onChange).toHaveBeenCalledWith({
|
|
280
301
|
value: "10-10-2011",
|
|
281
|
-
error: null,
|
|
282
302
|
date: d
|
|
283
303
|
});
|
|
284
304
|
|
|
@@ -287,7 +307,6 @@ describe("DateInput component tests", function () {
|
|
|
287
307
|
expect(onBlur).toHaveBeenCalled();
|
|
288
308
|
expect(onBlur).toHaveBeenCalledWith({
|
|
289
309
|
value: "10-10-2011",
|
|
290
|
-
error: null,
|
|
291
310
|
date: d
|
|
292
311
|
});
|
|
293
312
|
});
|
|
@@ -295,11 +314,11 @@ describe("DateInput component tests", function () {
|
|
|
295
314
|
var onBlur = jest.fn();
|
|
296
315
|
var onChange = jest.fn();
|
|
297
316
|
|
|
298
|
-
var
|
|
317
|
+
var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
299
318
|
onChange: onChange,
|
|
300
319
|
onBlur: onBlur
|
|
301
320
|
})),
|
|
302
|
-
getByRole =
|
|
321
|
+
getByRole = _render13.getByRole;
|
|
303
322
|
|
|
304
323
|
var input = getByRole("textbox");
|
|
305
324
|
|
|
@@ -309,8 +328,7 @@ describe("DateInput component tests", function () {
|
|
|
309
328
|
expect(onChange).toHaveBeenCalledTimes(6);
|
|
310
329
|
expect(onChange).toHaveBeenCalledWith({
|
|
311
330
|
value: "10-10-",
|
|
312
|
-
error: "Invalid date."
|
|
313
|
-
date: null
|
|
331
|
+
error: "Invalid date."
|
|
314
332
|
});
|
|
315
333
|
|
|
316
334
|
_react2.fireEvent.blur(input);
|
|
@@ -318,17 +336,16 @@ describe("DateInput component tests", function () {
|
|
|
318
336
|
expect(onBlur).toHaveBeenCalled();
|
|
319
337
|
expect(onBlur).toHaveBeenCalledWith({
|
|
320
338
|
value: "10-10-",
|
|
321
|
-
error: "Invalid date."
|
|
322
|
-
date: null
|
|
339
|
+
error: "Invalid date."
|
|
323
340
|
});
|
|
324
341
|
});
|
|
325
342
|
test("onBlur function removes the error when it is fixed", function () {
|
|
326
343
|
var onBlur = jest.fn();
|
|
327
344
|
|
|
328
|
-
var
|
|
345
|
+
var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
329
346
|
onBlur: onBlur
|
|
330
347
|
})),
|
|
331
|
-
getByRole =
|
|
348
|
+
getByRole = _render14.getByRole;
|
|
332
349
|
|
|
333
350
|
var input = getByRole("textbox");
|
|
334
351
|
var d = new Date(2002, 1, 20);
|
|
@@ -342,8 +359,7 @@ describe("DateInput component tests", function () {
|
|
|
342
359
|
expect(onBlur).toHaveBeenCalled();
|
|
343
360
|
expect(onBlur).toHaveBeenCalledWith({
|
|
344
361
|
value: "test",
|
|
345
|
-
error: "Invalid date."
|
|
346
|
-
date: null
|
|
362
|
+
error: "Invalid date."
|
|
347
363
|
});
|
|
348
364
|
|
|
349
365
|
_userEvent["default"].clear(input);
|
|
@@ -357,18 +373,17 @@ describe("DateInput component tests", function () {
|
|
|
357
373
|
expect(onBlur).toHaveBeenCalled();
|
|
358
374
|
expect(onBlur).toHaveBeenCalledWith({
|
|
359
375
|
value: "20-02-2002",
|
|
360
|
-
error: null,
|
|
361
376
|
date: d
|
|
362
377
|
});
|
|
363
378
|
});
|
|
364
379
|
test("onBlur function removes the error when the input is empty", function () {
|
|
365
380
|
var onBlur = jest.fn();
|
|
366
381
|
|
|
367
|
-
var
|
|
382
|
+
var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
368
383
|
onBlur: onBlur,
|
|
369
384
|
optional: true
|
|
370
385
|
})),
|
|
371
|
-
getByRole =
|
|
386
|
+
getByRole = _render15.getByRole;
|
|
372
387
|
|
|
373
388
|
var input = getByRole("textbox");
|
|
374
389
|
|
|
@@ -381,8 +396,7 @@ describe("DateInput component tests", function () {
|
|
|
381
396
|
expect(onBlur).toHaveBeenCalled();
|
|
382
397
|
expect(onBlur).toHaveBeenCalledWith({
|
|
383
398
|
value: "test",
|
|
384
|
-
error: "Invalid date."
|
|
385
|
-
date: null
|
|
399
|
+
error: "Invalid date."
|
|
386
400
|
});
|
|
387
401
|
|
|
388
402
|
_userEvent["default"].clear(input);
|
|
@@ -391,20 +405,18 @@ describe("DateInput component tests", function () {
|
|
|
391
405
|
|
|
392
406
|
expect(onBlur).toHaveBeenCalled();
|
|
393
407
|
expect(onBlur).toHaveBeenCalledWith({
|
|
394
|
-
value: ""
|
|
395
|
-
error: null,
|
|
396
|
-
date: null
|
|
408
|
+
value: ""
|
|
397
409
|
});
|
|
398
410
|
});
|
|
399
411
|
test("onBlur & onChange functions error: required field (not optional)", function () {
|
|
400
412
|
var onBlur = jest.fn();
|
|
401
413
|
var onChange = jest.fn();
|
|
402
414
|
|
|
403
|
-
var
|
|
415
|
+
var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
404
416
|
onBlur: onBlur,
|
|
405
417
|
onChange: onChange
|
|
406
418
|
})),
|
|
407
|
-
getByRole =
|
|
419
|
+
getByRole = _render16.getByRole;
|
|
408
420
|
|
|
409
421
|
var date = getByRole("textbox");
|
|
410
422
|
|
|
@@ -419,22 +431,20 @@ describe("DateInput component tests", function () {
|
|
|
419
431
|
expect(onBlur).toHaveBeenCalled();
|
|
420
432
|
expect(onBlur).toHaveBeenCalledWith({
|
|
421
433
|
value: "",
|
|
422
|
-
error: "This field is required. Please, enter a value."
|
|
423
|
-
date: null
|
|
434
|
+
error: "This field is required. Please, enter a value."
|
|
424
435
|
});
|
|
425
436
|
expect(onChange).toHaveBeenCalled();
|
|
426
437
|
expect(onChange).toHaveBeenCalledWith({
|
|
427
438
|
value: "",
|
|
428
|
-
error: "This field is required. Please, enter a value."
|
|
429
|
-
date: null
|
|
439
|
+
error: "This field is required. Please, enter a value."
|
|
430
440
|
});
|
|
431
441
|
});
|
|
432
442
|
test("Disabled date input (calendar action must be shown but not clickable)", function () {
|
|
433
|
-
var
|
|
443
|
+
var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
434
444
|
disabled: true
|
|
435
445
|
})),
|
|
436
|
-
getByRole =
|
|
437
|
-
queryByText =
|
|
446
|
+
getByRole = _render17.getByRole,
|
|
447
|
+
queryByText = _render17.queryByText;
|
|
438
448
|
|
|
439
449
|
var calendarAction = getByRole("button");
|
|
440
450
|
var d = new Date();
|
|
@@ -450,10 +460,10 @@ describe("DateInput component tests", function () {
|
|
|
450
460
|
expect(queryByText(d.toLocaleString("en-US", options))).toBeFalsy();
|
|
451
461
|
});
|
|
452
462
|
test("Input has correct accesibility attributes", function () {
|
|
453
|
-
var
|
|
463
|
+
var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
454
464
|
label: "Date input label"
|
|
455
465
|
})),
|
|
456
|
-
getByRole =
|
|
466
|
+
getByRole = _render18.getByRole;
|
|
457
467
|
|
|
458
468
|
var input = getByRole("textbox");
|
|
459
469
|
expect(input.getAttribute("aria-autocomplete")).toBeNull();
|
package/date-input/types.d.ts
CHANGED
|
@@ -14,6 +14,10 @@ declare type Props = {
|
|
|
14
14
|
* Name attribute of the input element.
|
|
15
15
|
*/
|
|
16
16
|
name?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Initial value of the input element, only when it is uncontrolled.
|
|
19
|
+
*/
|
|
20
|
+
defaultValue?: string;
|
|
17
21
|
/**
|
|
18
22
|
* Value of the input element. If undefined, the component will be uncontrolled and the value will be managed internally by the component.
|
|
19
23
|
*/
|
|
@@ -50,28 +54,31 @@ declare type Props = {
|
|
|
50
54
|
* element of the component. An object including the string value, the
|
|
51
55
|
* error and the date value will be passed to this function.
|
|
52
56
|
* If the string value is a valid date, error will
|
|
53
|
-
* be
|
|
57
|
+
* be undefined. Also, if the string value is not a valid date, date will be undefined.
|
|
54
58
|
*/
|
|
55
59
|
onChange?: (val: {
|
|
56
60
|
value: string;
|
|
57
|
-
error
|
|
58
|
-
date
|
|
61
|
+
error?: string;
|
|
62
|
+
date?: Date;
|
|
59
63
|
}) => void;
|
|
60
64
|
/**
|
|
61
65
|
* This function will be called when the input element loses the focus.
|
|
62
66
|
* An object including the string value, the error and the date value
|
|
63
67
|
* will be passed to this function. If the string value is a valid date, error will
|
|
64
|
-
* be
|
|
68
|
+
* be undefined. Also, if the string value is not a valid date, date will be undefined.
|
|
65
69
|
*/
|
|
66
70
|
onBlur?: (val: {
|
|
67
71
|
value: string;
|
|
68
|
-
error
|
|
69
|
-
date
|
|
72
|
+
error?: string;
|
|
73
|
+
date?: Date;
|
|
70
74
|
}) => void;
|
|
71
75
|
/**
|
|
72
|
-
* If it is defined
|
|
73
|
-
* the error below the date input
|
|
74
|
-
*
|
|
76
|
+
* If it is a defined value and also a truthy string, the component will
|
|
77
|
+
* change its appearance, showing the error below the date input
|
|
78
|
+
* component. If the defined value is an empty string, it will reserve a
|
|
79
|
+
* space below the component for a future error, but it would not change
|
|
80
|
+
* its look. In case of being undefined or null, both the appearance and
|
|
81
|
+
* the space for the error message would not be modified.
|
|
75
82
|
*/
|
|
76
83
|
error?: string;
|
|
77
84
|
/**
|
package/dialog/Dialog.js
CHANGED
|
@@ -13,9 +13,7 @@ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
|
13
13
|
|
|
14
14
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
19
17
|
|
|
20
18
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
21
19
|
|
|
@@ -45,12 +43,6 @@ var DxcDialog = function DxcDialog(_ref) {
|
|
|
45
43
|
padding = _ref$padding === void 0 ? "small" : _ref$padding,
|
|
46
44
|
_ref$tabIndex = _ref.tabIndex,
|
|
47
45
|
tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
|
|
48
|
-
|
|
49
|
-
var _useState = (0, _react.useState)(false),
|
|
50
|
-
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
51
|
-
isResponsive = _useState2[0],
|
|
52
|
-
setIsResponsive = _useState2[1];
|
|
53
|
-
|
|
54
46
|
var colorsTheme = (0, _useTheme["default"])();
|
|
55
47
|
|
|
56
48
|
var handleClose = function handleClose() {
|
|
@@ -61,21 +53,6 @@ var DxcDialog = function DxcDialog(_ref) {
|
|
|
61
53
|
onBackgroundClick === null || onBackgroundClick === void 0 ? void 0 : onBackgroundClick();
|
|
62
54
|
};
|
|
63
55
|
|
|
64
|
-
var handleResize = function handleResize(width) {
|
|
65
|
-
setIsResponsive(width && width <= _variables.responsiveSizes.tablet);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
var handleEventListener = function handleEventListener() {
|
|
69
|
-
handleResize(window.innerWidth);
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
(0, _react.useEffect)(function () {
|
|
73
|
-
window.addEventListener("resize", handleEventListener);
|
|
74
|
-
handleResize(window.innerWidth);
|
|
75
|
-
return function () {
|
|
76
|
-
window.removeEventListener("resize", handleEventListener);
|
|
77
|
-
};
|
|
78
|
-
}, []);
|
|
79
56
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
80
57
|
theme: colorsTheme.dialog
|
|
81
58
|
}, /*#__PURE__*/_react["default"].createElement(DialogContainer, {
|
|
@@ -83,8 +60,7 @@ var DxcDialog = function DxcDialog(_ref) {
|
|
|
83
60
|
isCloseVisible: isCloseVisible,
|
|
84
61
|
onClose: handleOverlayClick,
|
|
85
62
|
overlay: overlay,
|
|
86
|
-
padding: padding
|
|
87
|
-
isResponsive: isResponsive
|
|
63
|
+
padding: padding
|
|
88
64
|
}, isCloseVisible && /*#__PURE__*/_react["default"].createElement(CloseIconContainer, {
|
|
89
65
|
onClick: handleClose,
|
|
90
66
|
tabIndex: tabIndex
|
|
@@ -104,7 +80,7 @@ var DxcDialog = function DxcDialog(_ref) {
|
|
|
104
80
|
}, children))));
|
|
105
81
|
};
|
|
106
82
|
|
|
107
|
-
var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n overflow: unset;\n font-family: ", ";\n\n .MuiBackdrop-root {\n background-color: ", ";\n opacity: ", " !important;\n }\n .MuiDialog-paperWidthSm {\n background-color: ", ";\n
|
|
83
|
+
var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n overflow: unset;\n font-family: ", ";\n\n .MuiBackdrop-root {\n background-color: ", ";\n opacity: ", " !important;\n }\n .MuiDialog-paperWidthSm {\n background-color: ", ";\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\n box-sizing: border-box;\n min-height: ", ";\n box-shadow: ", ";\n\n padding: ", ";\n padding-top: ", ";\n padding-right: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n }\n"])), function (props) {
|
|
108
84
|
return props.theme.fontFamily;
|
|
109
85
|
}, function (props) {
|
|
110
86
|
return props.overlay === true ? props.theme.overlayColor : "transparent";
|
|
@@ -112,11 +88,7 @@ var DialogContainer = (0, _styledComponents["default"])(_Dialog["default"])(_tem
|
|
|
112
88
|
return props.overlay === true && props.theme.overlayOpacity;
|
|
113
89
|
}, function (props) {
|
|
114
90
|
return props.theme.backgroundColor;
|
|
115
|
-
}, function (props) {
|
|
116
|
-
return props.isResponsive ? "92%" : "80%";
|
|
117
|
-
}, function (props) {
|
|
118
|
-
return props.isResponsive ? "92%" : "800px";
|
|
119
|
-
}, function (props) {
|
|
91
|
+
}, _variables.responsiveSizes.medium, _variables.responsiveSizes.medium, function (props) {
|
|
120
92
|
return props.isCloseVisible ? "72px" : "";
|
|
121
93
|
}, function (props) {
|
|
122
94
|
return "".concat(props.theme.boxShadowOffsetX, " ").concat(props.theme.boxShadowOffsetY, " ").concat(props.theme.boxShadowBlur, " ").concat(props.theme.boxShadowColor);
|
package/dropdown/Dropdown.js
CHANGED
|
@@ -138,6 +138,11 @@ var DxcDropdown = function DxcDropdown(_ref) {
|
|
|
138
138
|
}));
|
|
139
139
|
};
|
|
140
140
|
|
|
141
|
+
var labelComponent = /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, {
|
|
142
|
+
iconPosition: iconPosition,
|
|
143
|
+
label: label
|
|
144
|
+
}, label);
|
|
145
|
+
|
|
141
146
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
142
147
|
theme: colorsTheme.dropdown
|
|
143
148
|
}, /*#__PURE__*/_react["default"].createElement(DXCDropdownContainer, {
|
|
@@ -160,18 +165,14 @@ var DxcDropdown = function DxcDropdown(_ref) {
|
|
|
160
165
|
ref: ref,
|
|
161
166
|
tabIndex: tabIndex
|
|
162
167
|
}, /*#__PURE__*/_react["default"].createElement(DropdownTriggerContainer, {
|
|
163
|
-
iconPosition: iconPosition,
|
|
164
168
|
caretHidden: caretHidden
|
|
165
|
-
}, icon && /*#__PURE__*/_react["default"].createElement(ButtonIconContainer, {
|
|
169
|
+
}, iconPosition === "after" && labelComponent, icon && /*#__PURE__*/_react["default"].createElement(ButtonIconContainer, {
|
|
166
170
|
label: label,
|
|
167
171
|
iconPosition: iconPosition,
|
|
168
172
|
disabled: disabled
|
|
169
173
|
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(ButtonIcon, {
|
|
170
174
|
src: icon
|
|
171
|
-
}) : icon), /*#__PURE__*/_react["default"].createElement(
|
|
172
|
-
iconPosition: iconPosition,
|
|
173
|
-
label: label
|
|
174
|
-
}, label)), /*#__PURE__*/_react["default"].createElement(CaretIconContainer, {
|
|
175
|
+
}) : icon), iconPosition === "before" && labelComponent), /*#__PURE__*/_react["default"].createElement(CaretIconContainer, {
|
|
175
176
|
caretHidden: caretHidden,
|
|
176
177
|
disabled: disabled
|
|
177
178
|
}, !caretHidden && (anchorEl === null ? /*#__PURE__*/_react["default"].createElement(DownArrowIcon, null) : /*#__PURE__*/_react["default"].createElement(UpArrowIcon, null)))), /*#__PURE__*/_react["default"].createElement(DXCMenu, {
|
|
@@ -187,7 +188,6 @@ var DxcDropdown = function DxcDropdown(_ref) {
|
|
|
187
188
|
vertical: "top",
|
|
188
189
|
horizontal: "left"
|
|
189
190
|
},
|
|
190
|
-
optionsIconPosition: optionsIconPosition,
|
|
191
191
|
size: size,
|
|
192
192
|
width: width,
|
|
193
193
|
role: undefined,
|
|
@@ -209,12 +209,14 @@ var DxcDropdown = function DxcDropdown(_ref) {
|
|
|
209
209
|
onClick: function onClick(event) {
|
|
210
210
|
return handleMenuItemClick(option);
|
|
211
211
|
}
|
|
212
|
-
},
|
|
212
|
+
}, optionsIconPosition === "after" && /*#__PURE__*/_react["default"].createElement("span", {
|
|
213
|
+
className: "optionLabel"
|
|
214
|
+
}, option.label), option.icon && /*#__PURE__*/_react["default"].createElement(ListIconContainer, {
|
|
213
215
|
label: option.label,
|
|
214
216
|
iconPosition: optionsIconPosition
|
|
215
217
|
}, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(ListIcon, {
|
|
216
218
|
src: option.icon
|
|
217
|
-
}) : option.icon), /*#__PURE__*/_react["default"].createElement("span", {
|
|
219
|
+
}) : option.icon), optionsIconPosition === "before" && /*#__PURE__*/_react["default"].createElement("span", {
|
|
218
220
|
className: "optionLabel"
|
|
219
221
|
}, option.label));
|
|
220
222
|
})))));
|
|
@@ -251,7 +253,7 @@ var DXCDropdownContainer = _styledComponents["default"].div(_templateObject || (
|
|
|
251
253
|
return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
|
|
252
254
|
});
|
|
253
255
|
|
|
254
|
-
var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1;\n\n .MuiMenuItem-gutters {\n width: ", ";\n }\n .MuiMenuItem-root {\n min-height: 36px;\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n height: auto;\n }\n .MuiPaper-root {\n min-width: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-bottom-left-radius: ", ";\n border-bottom-right-radius: ", ";\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n max-height: 230px;\n overflow-y: auto;\n\n ::-webkit-scrollbar {\n width: 3px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n\n .MuiList-padding {\n padding-top: 0px;\n padding-bottom: 0px;\n }\n .MuiListItem-button {\n display: flex;\n
|
|
256
|
+
var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1;\n\n .MuiMenuItem-gutters {\n width: ", ";\n }\n .MuiMenuItem-root {\n min-height: 36px;\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n height: auto;\n }\n .MuiPaper-root {\n min-width: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-bottom-left-radius: ", ";\n border-bottom-right-radius: ", ";\n border-top-left-radius: 0px;\n border-top-right-radius: 0px;\n max-height: 230px;\n overflow-y: auto;\n\n ::-webkit-scrollbar {\n width: 3px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n\n .MuiList-padding {\n padding-top: 0px;\n padding-bottom: 0px;\n }\n .MuiListItem-button {\n display: flex;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n cursor: pointer;\n }\n .MuiListItem-button:focus {\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n .MuiListItem-button:hover {\n background-color: ", ";\n }\n .MuiListItem-button:active {\n background-color: ", ";\n outline: ", " solid 2px;\n outline-offset: -2px;\n }\n }\n"])), function (props) {
|
|
255
257
|
return calculateWidth(props.margin, props.size);
|
|
256
258
|
}, function (props) {
|
|
257
259
|
return props.theme.optionPaddingTop;
|
|
@@ -277,10 +279,6 @@ var DXCMenu = (0, _styledComponents["default"])(_Popper["default"])(_templateObj
|
|
|
277
279
|
return props.theme.scrollBarTrackColor;
|
|
278
280
|
}, function (props) {
|
|
279
281
|
return props.theme.scrollBarThumbColor;
|
|
280
|
-
}, function (props) {
|
|
281
|
-
return props.optionsIconPosition === "after" && "row-reverse" || "row";
|
|
282
|
-
}, function (props) {
|
|
283
|
-
return props.optionsIconPosition === "after" && "flex-end" || "";
|
|
284
282
|
}, function (props) {
|
|
285
283
|
return props.theme.optionBackgroundColor;
|
|
286
284
|
}, function (props) {
|
|
@@ -345,9 +343,7 @@ var DropdownTrigger = _styledComponents["default"].button(_templateObject3 || (_
|
|
|
345
343
|
|
|
346
344
|
var DropdownTriggerLabel = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n text-align: left;\n text-overflow: ellipsis;\n overflow: hidden;\n"])));
|
|
347
345
|
|
|
348
|
-
var DropdownTriggerContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n
|
|
349
|
-
return props.iconPosition === "after" && "row-reverse" || "row";
|
|
350
|
-
}, function (props) {
|
|
346
|
+
var DropdownTriggerContainer = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n margin-left: 0px;\n margin-right: 0px;\n width: ", ";\n white-space: nowrap;\n"])), function (props) {
|
|
351
347
|
return props.caretHidden ? "100%" : "calc(100% - 36px)";
|
|
352
348
|
});
|
|
353
349
|
|
package/file-input/FileInput.js
CHANGED
|
@@ -33,6 +33,8 @@ var _variables = require("../common/variables.js");
|
|
|
33
33
|
|
|
34
34
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
35
35
|
|
|
36
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
37
|
+
|
|
36
38
|
var _Button = _interopRequireDefault(require("../button/Button"));
|
|
37
39
|
|
|
38
40
|
var _FileItem = _interopRequireDefault(require("./FileItem"));
|
|
@@ -127,6 +129,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
127
129
|
fileInputId = _useState6[0];
|
|
128
130
|
|
|
129
131
|
var colorsTheme = (0, _useTheme["default"])();
|
|
132
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
130
133
|
(0, _react.useEffect)(function () {
|
|
131
134
|
var getFiles = /*#__PURE__*/function () {
|
|
132
135
|
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
@@ -204,11 +207,11 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
204
207
|
|
|
205
208
|
var checkFileSize = function checkFileSize(file) {
|
|
206
209
|
if (file.size < minSize) {
|
|
207
|
-
return
|
|
210
|
+
return translatedLabels.fileInput.fileSizeGreaterThanErrorMessage;
|
|
208
211
|
}
|
|
209
212
|
|
|
210
213
|
if (file.size > maxSize) {
|
|
211
|
-
return
|
|
214
|
+
return translatedLabels.fileInput.fileSizeLessThanErrorMessage;
|
|
212
215
|
}
|
|
213
216
|
};
|
|
214
217
|
|
|
@@ -410,7 +413,7 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
410
413
|
onChange: selectFiles
|
|
411
414
|
}), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
412
415
|
mode: "secondary",
|
|
413
|
-
label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ?
|
|
416
|
+
label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : multiple ? translatedLabels.fileInput.multipleButtonLabelDefault : translatedLabels.fileInput.singleButtonLabelDefault,
|
|
414
417
|
onClick: handleClick,
|
|
415
418
|
disabled: disabled,
|
|
416
419
|
size: "medium",
|
|
@@ -450,15 +453,15 @@ var DxcFileInput = function DxcFileInput(_ref) {
|
|
|
450
453
|
mode: mode
|
|
451
454
|
}, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
452
455
|
mode: "secondary",
|
|
453
|
-
label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel :
|
|
456
|
+
label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : translatedLabels.fileInput.dropAreaButtonLabelDefault,
|
|
454
457
|
onClick: handleClick,
|
|
455
458
|
disabled: disabled,
|
|
456
459
|
size: "fitContent"
|
|
457
460
|
})), mode === "dropzone" ? /*#__PURE__*/_react["default"].createElement(DropzoneLabel, {
|
|
458
461
|
disabled: disabled
|
|
459
|
-
}, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ?
|
|
462
|
+
}, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault) : /*#__PURE__*/_react["default"].createElement(FiledropLabel, {
|
|
460
463
|
disabled: disabled
|
|
461
|
-
}, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ?
|
|
464
|
+
}, dropAreaLabel !== null && dropAreaLabel !== void 0 ? dropAreaLabel : multiple ? translatedLabels.fileInput.multipleDropAreaLabelDefault : translatedLabels.fileInput.singleDropAreaLabelDefault)), files.map(function (file) {
|
|
462
465
|
return /*#__PURE__*/_react["default"].createElement(FileItemContainer, {
|
|
463
466
|
mode: mode,
|
|
464
467
|
multiple: multiple,
|