@dxc-technology/halstack-react 0.0.0-090152f → 0.0.0-0a9608a
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.js +7 -8
- package/accordion/Accordion.js +7 -13
- package/accordion/Accordion.stories.tsx +52 -12
- package/accordion/types.d.ts +1 -0
- package/accordion-group/types.d.ts +1 -0
- package/box/types.d.ts +1 -0
- package/button/Button.js +11 -13
- package/button/Button.stories.tsx +58 -1
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +16 -15
- package/checkbox/Checkbox.stories.tsx +79 -59
- package/checkbox/types.d.ts +4 -0
- package/chip/Chip.js +11 -23
- package/chip/Chip.stories.tsx +41 -9
- package/common/variables.js +130 -126
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +246 -0
- package/date-input/DateInput.js +134 -237
- package/date-input/DateInput.stories.tsx +137 -38
- package/date-input/DateInput.test.js +494 -138
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +132 -0
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +75 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +116 -0
- package/date-input/types.d.ts +51 -0
- package/dialog/types.d.ts +1 -0
- package/dropdown/Dropdown.js +38 -37
- package/dropdown/Dropdown.stories.tsx +175 -94
- package/dropdown/Dropdown.test.js +18 -24
- package/dropdown/DropdownMenu.js +8 -18
- package/dropdown/DropdownMenuItem.js +4 -15
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +177 -219
- package/file-input/FileInput.stories.tsx +38 -10
- package/file-input/FileInput.test.js +53 -12
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +38 -63
- package/file-input/types.d.ts +17 -0
- package/flex/Flex.d.ts +1 -1
- package/flex/Flex.js +31 -19
- package/flex/types.d.ts +14 -3
- package/footer/types.d.ts +1 -0
- package/header/Header.js +18 -20
- package/header/Header.stories.tsx +34 -1
- package/header/types.d.ts +1 -0
- package/link/Link.js +1 -1
- package/number-input/NumberInput.test.js +43 -7
- package/package.json +7 -12
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +6 -12
- package/paginator/Paginator.test.js +18 -11
- 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/RadioGroup.js +9 -5
- package/radio-group/RadioGroup.test.js +116 -59
- package/resultsetTable/Icons.d.ts +7 -0
- package/resultsetTable/Icons.js +51 -0
- package/resultsetTable/ResultsetTable.js +48 -107
- package/resultsetTable/ResultsetTable.stories.tsx +50 -25
- package/resultsetTable/ResultsetTable.test.js +40 -63
- package/resultsetTable/types.d.ts +2 -2
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +5 -34
- package/select/Option.js +11 -24
- package/select/Select.js +46 -25
- package/select/Select.stories.tsx +209 -167
- package/select/Select.test.js +284 -231
- package/select/types.d.ts +2 -2
- package/sidenav/Sidenav.js +8 -10
- package/sidenav/Sidenav.stories.tsx +59 -50
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +15 -11
- package/slider/types.d.ts +4 -0
- package/spinner/Spinner.js +2 -2
- package/switch/Switch.d.ts +3 -3
- package/switch/Switch.js +5 -4
- package/switch/types.d.ts +6 -1
- package/table/Table.js +1 -1
- package/table/Table.test.js +1 -1
- package/tabs/Tab.js +3 -5
- package/tabs/Tabs.js +3 -3
- package/tabs/Tabs.stories.tsx +7 -5
- package/tabs-nav/NavTabs.stories.tsx +8 -6
- package/tabs-nav/Tab.js +5 -7
- package/text-input/Suggestion.js +32 -5
- package/text-input/TextInput.js +172 -162
- package/text-input/TextInput.stories.tsx +24 -4
- package/text-input/TextInput.test.js +658 -647
- package/text-input/types.d.ts +5 -0
- package/common/RequiredComponent.js +0 -32
|
@@ -4,10 +4,10 @@ import DxcDropdown from "./Dropdown";
|
|
|
4
4
|
import Title from "../../.storybook/components/Title";
|
|
5
5
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
6
6
|
import DropdownMenu from "./DropdownMenu";
|
|
7
|
-
import DxcCheckbox from "../checkbox/Checkbox";
|
|
8
|
-
import DxcTextInput from "../text-input/TextInput";
|
|
9
7
|
import { Option } from "./types";
|
|
10
|
-
|
|
8
|
+
import useTheme from "../useTheme";
|
|
9
|
+
import { ThemeProvider } from "styled-components";
|
|
10
|
+
import DxcFlex from "../flex/Flex";
|
|
11
11
|
|
|
12
12
|
export default {
|
|
13
13
|
title: "Dropdown",
|
|
@@ -20,20 +20,14 @@ const hamburguerIcon = (
|
|
|
20
20
|
</svg>
|
|
21
21
|
);
|
|
22
22
|
const iconSVG = (
|
|
23
|
-
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
23
|
+
<svg viewBox="0 0 24 24" height="24" width="24" fill="currentColor">
|
|
24
24
|
<path d="M0 0h24v24H0z" fill="none" />
|
|
25
25
|
<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
|
|
26
26
|
</svg>
|
|
27
27
|
);
|
|
28
28
|
const iconSVGLarge = (
|
|
29
|
-
<svg
|
|
30
|
-
<
|
|
31
|
-
<path d="M0,0h24v24H0V0z" fill="none" />
|
|
32
|
-
<path d="M0,0h24v24H0V0z" fill="none" />
|
|
33
|
-
</g>
|
|
34
|
-
<g>
|
|
35
|
-
<path d="M12,17.27L18.18,21l-1.64-7.03L22,9.24l-7.19-0.61L12,2L9.19,8.63L2,9.24l5.46,4.73L5.82,21L12,17.27z" />
|
|
36
|
-
</g>
|
|
29
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" height="48" width="48">
|
|
30
|
+
<path d="M11 44q-1.2 0-2.1-.9Q8 42.2 8 41V15q0-1.2.9-2.1.9-.9 2.1-.9h5.5v-.5q0-3.15 2.175-5.325Q20.85 4 24 4q3.15 0 5.325 2.175Q31.5 8.35 31.5 11.5v.5H37q1.2 0 2.1.9.9.9.9 2.1v26q0 1.2-.9 2.1-.9.9-2.1.9Zm0-3h26V15h-5.5v4.5q0 .65-.425 1.075Q30.65 21 30 21q-.65 0-1.075-.425-.425-.425-.425-1.075V15h-9v4.5q0 .65-.425 1.075Q18.65 21 18 21q-.65 0-1.075-.425-.425-.425-.425-1.075V15H11v26Zm8.5-29h9v-.5q0-1.9-1.3-3.2Q25.9 7 24 7q-1.9 0-3.2 1.3-1.3 1.3-1.3 3.2ZM11 41V15v26Z" />
|
|
37
31
|
</svg>
|
|
38
32
|
);
|
|
39
33
|
const iconUrl = "https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png";
|
|
@@ -60,6 +54,18 @@ const defaultOptions: Option[] = [
|
|
|
60
54
|
value: "5",
|
|
61
55
|
label: "Aliexpress",
|
|
62
56
|
},
|
|
57
|
+
{
|
|
58
|
+
value: "6",
|
|
59
|
+
label: "Etsy",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
value: "7",
|
|
63
|
+
label: "Alibaba",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
value: "8",
|
|
67
|
+
label: "Gearbest shop",
|
|
68
|
+
},
|
|
63
69
|
];
|
|
64
70
|
const options: Option[] = [
|
|
65
71
|
{
|
|
@@ -85,7 +91,7 @@ const optionWithIcon: Option[] = [
|
|
|
85
91
|
|
|
86
92
|
const optionsIcon: any = options.map((op, i) => ({ ...op, icon: icons[i] }));
|
|
87
93
|
|
|
88
|
-
|
|
94
|
+
const Dropdown = () => (
|
|
89
95
|
<>
|
|
90
96
|
<ExampleContainer>
|
|
91
97
|
<Title title="Default" theme="light" level={4} />
|
|
@@ -134,9 +140,18 @@ export const Chromatic = () => (
|
|
|
134
140
|
<DxcDropdown options={options} onSelectOption={(value) => {}} icon={hamburguerIcon} caretHidden />
|
|
135
141
|
</ExampleContainer>
|
|
136
142
|
<ExampleContainer>
|
|
137
|
-
<Title title="Large icon" theme="light" level={4} />
|
|
143
|
+
<Title title="Large icon (SVG)" theme="light" level={4} />
|
|
138
144
|
<DxcDropdown label="Large icon" options={options} onSelectOption={(value) => {}} icon={iconSVGLarge} />
|
|
139
145
|
</ExampleContainer>
|
|
146
|
+
<ExampleContainer>
|
|
147
|
+
<Title title="Large icon (image)" theme="light" level={4} />
|
|
148
|
+
<DxcDropdown
|
|
149
|
+
label="Large icon"
|
|
150
|
+
options={options}
|
|
151
|
+
onSelectOption={(value) => {}}
|
|
152
|
+
icon="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Hamburger_icon.svg/2048px-Hamburger_icon.svg.png"
|
|
153
|
+
/>
|
|
154
|
+
</ExampleContainer>
|
|
140
155
|
<ExampleContainer>
|
|
141
156
|
<Title title="Disabled with icon" theme="light" level={4} />
|
|
142
157
|
<DxcDropdown
|
|
@@ -219,94 +234,160 @@ export const Chromatic = () => (
|
|
|
219
234
|
size="fillParent"
|
|
220
235
|
/>
|
|
221
236
|
</ExampleContainer>
|
|
237
|
+
<ExampleContainer expanded>
|
|
238
|
+
<Title title="Opened menu" theme="light" level={4} />
|
|
239
|
+
<DxcDropdown label="Label" options={options} onSelectOption={(value) => {}} margin={{ top: "xxlarge" }} />
|
|
240
|
+
</ExampleContainer>
|
|
222
241
|
</>
|
|
223
242
|
);
|
|
224
243
|
|
|
225
|
-
const DropdownListStates = () =>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
<
|
|
231
|
-
|
|
232
|
-
<
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
labelPosition="after"
|
|
244
|
+
const DropdownListStates = () => {
|
|
245
|
+
const colorsTheme: any = useTheme();
|
|
246
|
+
|
|
247
|
+
return (
|
|
248
|
+
<>
|
|
249
|
+
<Title title="Dropdown Menu" theme="light" level={2} />
|
|
250
|
+
<ExampleContainer>
|
|
251
|
+
<Title
|
|
252
|
+
title="List dialog uses a Radix Popover to appear over elements with a certain z-index"
|
|
253
|
+
theme="light"
|
|
254
|
+
level={3}
|
|
237
255
|
/>
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
256
|
+
<div
|
|
257
|
+
style={{
|
|
258
|
+
position: "relative",
|
|
259
|
+
display: "flex",
|
|
260
|
+
flexDirection: "column",
|
|
261
|
+
gap: "20px",
|
|
262
|
+
height: "150px",
|
|
263
|
+
width: "min-content",
|
|
264
|
+
marginBottom: "100px",
|
|
265
|
+
padding: "20px",
|
|
266
|
+
border: "1px solid black",
|
|
267
|
+
borderRadius: "4px",
|
|
268
|
+
overflow: "auto",
|
|
269
|
+
zIndex: "1300",
|
|
270
|
+
}}
|
|
271
|
+
>
|
|
272
|
+
<DxcDropdown
|
|
273
|
+
label="Select a platform"
|
|
274
|
+
options={defaultOptions}
|
|
275
|
+
onSelectOption={(option) => {}}
|
|
276
|
+
size="medium"
|
|
277
|
+
/>
|
|
278
|
+
<button style={{ zIndex: "1", width: "100px" }}>Submit</button>
|
|
279
|
+
</div>
|
|
280
|
+
</ExampleContainer>
|
|
281
|
+
<ThemeProvider theme={colorsTheme.dropdown}>
|
|
282
|
+
<Title title="Option states" theme="light" level={3} />
|
|
283
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
284
|
+
<Title title="Hovered option" theme="light" level={4} />
|
|
285
|
+
<DropdownMenu
|
|
286
|
+
id="x"
|
|
287
|
+
dropdownTriggerId="dtx"
|
|
288
|
+
iconsPosition="before"
|
|
289
|
+
visualFocusIndex={-1}
|
|
290
|
+
menuItemOnClick={(value) => {}}
|
|
291
|
+
onKeyDown={(e) => {}}
|
|
292
|
+
options={optionWithIcon}
|
|
293
|
+
styles={{ width: 240 }}
|
|
294
|
+
/>
|
|
295
|
+
</ExampleContainer>
|
|
296
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
297
|
+
<Title title="Active option" theme="light" level={4} />
|
|
298
|
+
<DropdownMenu
|
|
299
|
+
id="x"
|
|
300
|
+
dropdownTriggerId="dtx"
|
|
301
|
+
iconsPosition="before"
|
|
302
|
+
visualFocusIndex={-1}
|
|
303
|
+
menuItemOnClick={(value) => {}}
|
|
304
|
+
onKeyDown={(e) => {}}
|
|
305
|
+
options={optionWithIcon}
|
|
306
|
+
styles={{ width: 240 }}
|
|
307
|
+
/>
|
|
308
|
+
</ExampleContainer>
|
|
309
|
+
<ExampleContainer>
|
|
310
|
+
<Title title="Focused option" theme="light" level={4} />
|
|
311
|
+
<DropdownMenu
|
|
312
|
+
id="x"
|
|
313
|
+
dropdownTriggerId="dtx"
|
|
314
|
+
iconsPosition="before"
|
|
315
|
+
visualFocusIndex={0}
|
|
316
|
+
menuItemOnClick={(value) => {}}
|
|
317
|
+
onKeyDown={(e) => {}}
|
|
318
|
+
options={options}
|
|
319
|
+
styles={{ width: 240 }}
|
|
320
|
+
/>
|
|
321
|
+
</ExampleContainer>
|
|
322
|
+
<Title title="Icons" theme="light" level={3} />
|
|
323
|
+
<ExampleContainer>
|
|
324
|
+
<Title title="Before" theme="light" level={4} />
|
|
325
|
+
<DropdownMenu
|
|
326
|
+
id="x"
|
|
327
|
+
dropdownTriggerId="dtx"
|
|
328
|
+
iconsPosition="before"
|
|
329
|
+
visualFocusIndex={-1}
|
|
330
|
+
menuItemOnClick={(value) => {}}
|
|
331
|
+
onKeyDown={(e) => {}}
|
|
332
|
+
options={optionsIcon}
|
|
333
|
+
styles={{ width: 240 }}
|
|
334
|
+
/>
|
|
335
|
+
<Title title="After" theme="light" level={4} />
|
|
336
|
+
<DropdownMenu
|
|
337
|
+
id="x"
|
|
338
|
+
dropdownTriggerId="dtx"
|
|
339
|
+
iconsPosition="after"
|
|
340
|
+
visualFocusIndex={-1}
|
|
341
|
+
menuItemOnClick={(value) => {}}
|
|
342
|
+
onKeyDown={(e) => {}}
|
|
343
|
+
options={optionsIcon}
|
|
344
|
+
styles={{ width: 240 }}
|
|
345
|
+
/>
|
|
346
|
+
</ExampleContainer>
|
|
347
|
+
</ThemeProvider>
|
|
348
|
+
</>
|
|
349
|
+
);
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
const DropdownRightAlignment = () => (
|
|
353
|
+
<ExampleContainer expanded>
|
|
354
|
+
<Title title="Dropdown collisions on the right boundary (right)" theme="light" level={4} />
|
|
355
|
+
<DxcFlex justifyContent="flex-end">
|
|
356
|
+
<DxcDropdown label="Label" options={options} onSelectOption={(value) => {}} />
|
|
357
|
+
</DxcFlex>
|
|
358
|
+
</ExampleContainer>
|
|
306
359
|
);
|
|
307
360
|
|
|
361
|
+
const DropdownCenterAlignment = () => (
|
|
362
|
+
<ExampleContainer expanded>
|
|
363
|
+
<Title title="Dropdown collisions on the right boundary (centered)" theme="light" level={4} />
|
|
364
|
+
<DxcFlex justifyContent="flex-end">
|
|
365
|
+
<DxcDropdown label="Label" options={defaultOptions} onSelectOption={(value) => {}} margin="small" />
|
|
366
|
+
</DxcFlex>
|
|
367
|
+
</ExampleContainer>
|
|
368
|
+
);
|
|
369
|
+
|
|
370
|
+
export const Chromatic = Dropdown.bind({});
|
|
371
|
+
Chromatic.play = async ({ canvasElement }) => {
|
|
372
|
+
const canvas = within(canvasElement);
|
|
373
|
+
const buttonList = canvas.getAllByRole("button");
|
|
374
|
+
await userEvent.click(buttonList[buttonList.length - 1]);
|
|
375
|
+
};
|
|
376
|
+
|
|
308
377
|
export const DropdownMenuStates = DropdownListStates.bind({});
|
|
309
378
|
DropdownMenuStates.play = async ({ canvasElement }) => {
|
|
379
|
+
const canvas = within(canvasElement);
|
|
380
|
+
await userEvent.click(canvas.getAllByRole("button")[0]);
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
export const DropdownMenuAlignedRight = DropdownRightAlignment.bind({});
|
|
384
|
+
DropdownMenuAlignedRight.play = async ({ canvasElement }) => {
|
|
385
|
+
const canvas = within(canvasElement);
|
|
386
|
+
await userEvent.click(canvas.getByRole("button"));
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
export const DropdownMenuAlignedCenter = DropdownCenterAlignment.bind({});
|
|
390
|
+
DropdownMenuAlignedCenter.play = async ({ canvasElement }) => {
|
|
310
391
|
const canvas = within(canvasElement);
|
|
311
392
|
await userEvent.click(canvas.getByRole("button"));
|
|
312
393
|
};
|
|
@@ -15,42 +15,37 @@ var _Dropdown = _interopRequireDefault(require("./Dropdown"));
|
|
|
15
15
|
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
16
16
|
|
|
17
17
|
global.globalThis = global;
|
|
18
|
+
global.DOMRect = {
|
|
19
|
+
fromRect: function fromRect() {
|
|
20
|
+
return {
|
|
21
|
+
top: 0,
|
|
22
|
+
left: 0,
|
|
23
|
+
bottom: 0,
|
|
24
|
+
right: 0,
|
|
25
|
+
width: 0,
|
|
26
|
+
height: 0
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
};
|
|
18
30
|
|
|
19
31
|
global.ResizeObserver = /*#__PURE__*/function () {
|
|
20
|
-
function ResizeObserver(
|
|
32
|
+
function ResizeObserver() {
|
|
21
33
|
(0, _classCallCheck2["default"])(this, ResizeObserver);
|
|
22
|
-
this.cb = cb;
|
|
23
34
|
}
|
|
24
35
|
|
|
25
36
|
(0, _createClass2["default"])(ResizeObserver, [{
|
|
26
37
|
key: "observe",
|
|
27
|
-
value: function observe() {
|
|
28
|
-
this.cb([{
|
|
29
|
-
borderBoxSize: {
|
|
30
|
-
inlineSize: 0,
|
|
31
|
-
blockSize: 0
|
|
32
|
-
}
|
|
33
|
-
}]);
|
|
34
|
-
}
|
|
38
|
+
value: function observe() {}
|
|
35
39
|
}, {
|
|
36
40
|
key: "unobserve",
|
|
37
41
|
value: function unobserve() {}
|
|
42
|
+
}, {
|
|
43
|
+
key: "disconnect",
|
|
44
|
+
value: function disconnect() {}
|
|
38
45
|
}]);
|
|
39
46
|
return ResizeObserver;
|
|
40
47
|
}();
|
|
41
48
|
|
|
42
|
-
global.DOMRect = {
|
|
43
|
-
fromRect: function fromRect() {
|
|
44
|
-
return {
|
|
45
|
-
top: 0,
|
|
46
|
-
left: 0,
|
|
47
|
-
bottom: 0,
|
|
48
|
-
right: 0,
|
|
49
|
-
width: 0,
|
|
50
|
-
height: 0
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
49
|
var options = [{
|
|
55
50
|
value: "1",
|
|
56
51
|
label: "Amazon"
|
|
@@ -74,7 +69,6 @@ describe("Dropdown component tests", function () {
|
|
|
74
69
|
getByRole = _render.getByRole;
|
|
75
70
|
|
|
76
71
|
var dropdown = getByRole("button");
|
|
77
|
-
expect(dropdown.getAttribute("aria-disabled")).toBe("false");
|
|
78
72
|
expect(dropdown.getAttribute("aria-haspopup")).toBe("true");
|
|
79
73
|
expect(dropdown.getAttribute("aria-expanded")).toBeNull();
|
|
80
74
|
expect(dropdown.getAttribute("aria-activedescendant")).toBeNull();
|
|
@@ -82,6 +76,7 @@ describe("Dropdown component tests", function () {
|
|
|
82
76
|
_userEvent["default"].click(dropdown);
|
|
83
77
|
|
|
84
78
|
var menu = getByRole("menu");
|
|
79
|
+
expect(dropdown.getAttribute("aria-controls")).toBe(menu.id);
|
|
85
80
|
expect(dropdown.getAttribute("aria-expanded")).toBe("true");
|
|
86
81
|
expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
|
|
87
82
|
expect(menu.getAttribute("aria-orientation")).toBe("vertical");
|
|
@@ -123,7 +118,6 @@ describe("Dropdown component tests", function () {
|
|
|
123
118
|
queryByText = _render3.queryByText;
|
|
124
119
|
|
|
125
120
|
var dropdown = getByRole("button");
|
|
126
|
-
expect(dropdown.getAttribute("aria-disabled")).toBe("true");
|
|
127
121
|
expect(queryByRole("menu")).toBeFalsy();
|
|
128
122
|
|
|
129
123
|
_userEvent["default"].click(dropdown);
|
package/dropdown/DropdownMenu.js
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
@@ -13,18 +11,12 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
13
11
|
|
|
14
12
|
var _react = _interopRequireDefault(require("react"));
|
|
15
13
|
|
|
16
|
-
var _styledComponents =
|
|
17
|
-
|
|
18
|
-
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
14
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
19
15
|
|
|
20
16
|
var _DropdownMenuItem = _interopRequireDefault(require("./DropdownMenuItem"));
|
|
21
17
|
|
|
22
18
|
var _templateObject;
|
|
23
19
|
|
|
24
|
-
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); }
|
|
25
|
-
|
|
26
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
|
|
27
|
-
|
|
28
20
|
var DropdownMenu = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
29
21
|
var id = _ref.id,
|
|
30
22
|
dropdownTriggerId = _ref.dropdownTriggerId,
|
|
@@ -34,12 +26,10 @@ var DropdownMenu = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
|
|
|
34
26
|
onKeyDown = _ref.onKeyDown,
|
|
35
27
|
options = _ref.options,
|
|
36
28
|
styles = _ref.styles;
|
|
37
|
-
|
|
38
|
-
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
39
|
-
theme: colorsTheme.dropdown
|
|
40
|
-
}, /*#__PURE__*/_react["default"].createElement(DropdownMenuContainer, {
|
|
29
|
+
return /*#__PURE__*/_react["default"].createElement(DropdownMenuContainer, {
|
|
41
30
|
onMouseDown: function onMouseDown(event) {
|
|
42
|
-
// Prevent the onBlur event from closing menu when clicking on the menu since
|
|
31
|
+
// Prevent the onBlur event from closing menu when clicking on the menu since
|
|
32
|
+
// it is implemented with a Portal and the menu is not a direct child of the container
|
|
43
33
|
event.preventDefault();
|
|
44
34
|
},
|
|
45
35
|
onKeyDown: onKeyDown,
|
|
@@ -49,8 +39,8 @@ var DropdownMenu = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
|
|
|
49
39
|
"aria-orientation": "vertical",
|
|
50
40
|
"aria-activedescendant": "option-".concat(visualFocusIndex),
|
|
51
41
|
tabIndex: -1,
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
ref: ref,
|
|
43
|
+
style: styles
|
|
54
44
|
}, options.map(function (option, index) {
|
|
55
45
|
return /*#__PURE__*/_react["default"].createElement(_DropdownMenuItem["default"], {
|
|
56
46
|
id: "option-".concat(index),
|
|
@@ -60,10 +50,10 @@ var DropdownMenu = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
|
|
|
60
50
|
onClick: menuItemOnClick,
|
|
61
51
|
option: option
|
|
62
52
|
});
|
|
63
|
-
}))
|
|
53
|
+
}));
|
|
64
54
|
});
|
|
65
55
|
|
|
66
|
-
var DropdownMenuContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 230px;\n overflow-y: auto;\n padding: 0;\n margin: 0;\n background-color: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-radius: ", ";\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n outline: none;\n"])), function (props) {
|
|
56
|
+
var DropdownMenuContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 230px;\n min-width: min-content;\n overflow-y: auto;\n padding: 0;\n margin: 0;\n background-color: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n border-radius: ", ";\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n outline: none;\n"])), function (props) {
|
|
67
57
|
return props.theme.optionBackgroundColor;
|
|
68
58
|
}, function (props) {
|
|
69
59
|
return props.theme.borderThickness;
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
@@ -13,26 +11,17 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
|
|
|
13
11
|
|
|
14
12
|
var _react = _interopRequireDefault(require("react"));
|
|
15
13
|
|
|
16
|
-
var _styledComponents =
|
|
17
|
-
|
|
18
|
-
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
14
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
19
15
|
|
|
20
16
|
var _templateObject, _templateObject2, _templateObject3;
|
|
21
17
|
|
|
22
|
-
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); }
|
|
23
|
-
|
|
24
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
|
|
25
|
-
|
|
26
18
|
var DropdownMenuItem = function DropdownMenuItem(_ref) {
|
|
27
19
|
var id = _ref.id,
|
|
28
20
|
visuallyFocused = _ref.visuallyFocused,
|
|
29
21
|
iconPosition = _ref.iconPosition,
|
|
30
22
|
_onClick = _ref.onClick,
|
|
31
23
|
option = _ref.option;
|
|
32
|
-
|
|
33
|
-
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
34
|
-
theme: colorsTheme.dropdown
|
|
35
|
-
}, /*#__PURE__*/_react["default"].createElement(DropdownMenuItemContainer, {
|
|
24
|
+
return /*#__PURE__*/_react["default"].createElement(DropdownMenuItemContainer, {
|
|
36
25
|
visuallyFocused: visuallyFocused,
|
|
37
26
|
onClick: function onClick() {
|
|
38
27
|
_onClick(option.value);
|
|
@@ -46,7 +35,7 @@ var DropdownMenuItem = function DropdownMenuItem(_ref) {
|
|
|
46
35
|
role: typeof option.icon === "string" ? undefined : "img"
|
|
47
36
|
}, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
48
37
|
src: option.icon
|
|
49
|
-
}) : option.icon), iconPosition === "before" && /*#__PURE__*/_react["default"].createElement(DropdownMenuItemLabel, null, option.label))
|
|
38
|
+
}) : option.icon), iconPosition === "before" && /*#__PURE__*/_react["default"].createElement(DropdownMenuItemLabel, null, option.label));
|
|
50
39
|
};
|
|
51
40
|
|
|
52
41
|
var DropdownMenuItemContainer = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: ", ";\n min-height: 36px;\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n cursor: pointer;\n\n ", "\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
|
|
@@ -67,7 +56,7 @@ var DropdownMenuItemContainer = _styledComponents["default"].li(_templateObject
|
|
|
67
56
|
return props.theme.activeOptionBackgroundColor;
|
|
68
57
|
});
|
|
69
58
|
|
|
70
|
-
var DropdownMenuItemLabel = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5rem;\n color: ", ";\n"])), function (props) {
|
|
59
|
+
var DropdownMenuItemLabel = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5rem;\n color: ", ";\n white-space: nowrap;\n"])), function (props) {
|
|
71
60
|
return props.theme.optionFontFamily;
|
|
72
61
|
}, function (props) {
|
|
73
62
|
return props.theme.optionFontSize;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
2
|
import FileInputPropsType from "./types";
|
|
3
|
-
declare const DxcFileInput:
|
|
3
|
+
declare const DxcFileInput: React.ForwardRefExoticComponent<FileInputPropsType & React.RefAttributes<HTMLDivElement>>;
|
|
4
4
|
export default DxcFileInput;
|