@dxc-technology/halstack-react 0.0.0-0e7fa98 → 0.0.0-0ea575c
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.js +122 -103
- package/accordion/Accordion.stories.tsx +5 -6
- package/accordion/Accordion.test.js +9 -10
- package/accordion/types.d.ts +4 -4
- package/accordion-group/AccordionGroup.js +2 -21
- package/accordion-group/AccordionGroup.stories.tsx +27 -1
- package/accordion-group/AccordionGroup.test.js +20 -45
- package/accordion-group/types.d.ts +9 -3
- package/alert/Alert.js +5 -2
- package/badge/Badge.d.ts +1 -1
- package/badge/Badge.js +5 -3
- package/badge/types.d.ts +1 -0
- package/bleed/Bleed.js +1 -34
- package/bleed/Bleed.stories.tsx +94 -95
- package/bleed/types.d.ts +1 -1
- package/box/Box.js +23 -33
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +123 -0
- package/bulleted-list/BulletedList.stories.tsx +200 -0
- package/bulleted-list/types.d.ts +11 -0
- package/{list → bulleted-list}/types.js +0 -0
- package/button/Button.js +53 -68
- package/button/Button.stories.tsx +9 -0
- package/button/types.d.ts +7 -7
- package/card/Card.js +24 -27
- package/checkbox/Checkbox.d.ts +1 -1
- package/checkbox/Checkbox.js +99 -97
- package/checkbox/Checkbox.stories.tsx +124 -128
- package/checkbox/Checkbox.test.js +93 -16
- package/checkbox/types.d.ts +5 -5
- package/chip/types.d.ts +1 -1
- package/common/variables.js +232 -96
- package/date-input/DateInput.js +19 -16
- package/dialog/Dialog.js +52 -28
- package/dialog/Dialog.stories.tsx +57 -2
- package/dialog/Dialog.test.js +34 -4
- package/dialog/types.d.ts +2 -2
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +243 -251
- package/dropdown/Dropdown.stories.tsx +126 -63
- package/dropdown/Dropdown.test.js +510 -108
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +80 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +92 -0
- package/dropdown/types.d.ts +25 -5
- package/file-input/FileInput.js +9 -6
- package/file-input/FileItem.js +7 -5
- package/flex/Flex.d.ts +4 -0
- package/flex/Flex.js +57 -0
- package/flex/Flex.stories.tsx +103 -0
- package/flex/types.d.ts +21 -0
- package/{radio → flex}/types.js +0 -0
- package/footer/Footer.js +7 -5
- package/footer/Footer.stories.tsx +8 -1
- package/footer/Icons.js +1 -1
- package/footer/types.d.ts +1 -1
- package/header/Header.js +80 -75
- package/header/Header.stories.tsx +4 -4
- package/header/Icons.js +2 -2
- package/header/types.d.ts +2 -2
- package/inset/Inset.js +1 -34
- package/inset/Inset.stories.tsx +36 -36
- package/inset/types.d.ts +1 -1
- package/layout/ApplicationLayout.d.ts +16 -6
- package/layout/ApplicationLayout.js +70 -117
- package/layout/ApplicationLayout.stories.tsx +84 -93
- 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 +18 -33
- package/link/Link.d.ts +3 -2
- package/link/Link.js +57 -74
- package/link/Link.stories.tsx +95 -53
- package/link/Link.test.js +7 -15
- package/link/types.d.ts +7 -23
- package/main.d.ts +7 -10
- package/main.js +43 -61
- package/number-input/types.d.ts +1 -1
- package/package.json +12 -11
- package/paginator/Paginator.js +17 -38
- package/paginator/Paginator.test.js +42 -0
- package/paragraph/Paragraph.d.ts +6 -0
- package/paragraph/Paragraph.js +38 -0
- package/paragraph/Paragraph.stories.tsx +44 -0
- package/password-input/PasswordInput.js +7 -4
- package/password-input/PasswordInput.test.js +1 -2
- package/password-input/types.d.ts +1 -1
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +57 -51
- package/progress-bar/ProgressBar.stories.jsx +13 -11
- package/progress-bar/ProgressBar.test.js +67 -22
- package/progress-bar/types.d.ts +3 -4
- package/quick-nav/QuickNav.js +72 -21
- package/quick-nav/QuickNav.stories.tsx +80 -17
- package/quick-nav/types.d.ts +4 -4
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +43 -28
- package/radio-group/RadioGroup.js +33 -34
- 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/resultsetTable/ResultsetTable.test.js +42 -0
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +58 -8
- package/select/Select.js +78 -90
- package/select/Select.stories.tsx +145 -100
- package/select/Select.test.js +362 -244
- package/select/types.d.ts +2 -5
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +184 -52
- package/sidenav/Sidenav.stories.tsx +154 -156
- package/sidenav/Sidenav.test.js +25 -37
- package/sidenav/types.d.ts +50 -27
- 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/spinner/Spinner.js +1 -1
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +133 -64
- package/switch/Switch.stories.tsx +16 -38
- package/switch/Switch.test.js +144 -17
- package/switch/types.d.ts +5 -6
- 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 -6
- package/tabs/Tabs.test.js +217 -6
- package/tabs/types.d.ts +15 -5
- 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 +130 -0
- package/tabs-nav/types.d.ts +53 -0
- package/{row → tabs-nav}/types.js +0 -0
- package/tag/Tag.js +6 -9
- package/tag/types.d.ts +1 -1
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +60 -0
- package/text-input/Suggestion.d.ts +4 -0
- package/text-input/Suggestion.js +57 -0
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +140 -273
- package/text-input/TextInput.stories.tsx +189 -182
- package/text-input/TextInput.test.js +164 -163
- package/text-input/types.d.ts +28 -2
- package/textarea/Textarea.js +10 -19
- package/textarea/types.d.ts +1 -1
- package/toggle-group/types.d.ts +1 -1
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +131 -0
- package/typography/Typography.stories.tsx +198 -0
- package/typography/types.d.ts +18 -0
- package/{stack → typography}/types.js +0 -0
- package/useTheme.js +2 -2
- package/useTranslatedLabels.d.ts +2 -0
- package/useTranslatedLabels.js +20 -0
- package/wizard/Wizard.js +36 -41
- package/wizard/Wizard.stories.tsx +20 -1
- package/wizard/types.d.ts +5 -4
- package/ThemeContext.d.ts +0 -10
- package/ThemeContext.js +0 -243
- package/list/List.d.ts +0 -4
- package/list/List.js +0 -47
- package/list/List.stories.tsx +0 -95
- package/list/types.d.ts +0 -7
- 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
- package/row/Row.d.ts +0 -3
- package/row/Row.js +0 -127
- package/row/Row.stories.tsx +0 -237
- package/row/types.d.ts +0 -28
- package/stack/Stack.d.ts +0 -3
- package/stack/Stack.js +0 -97
- package/stack/Stack.stories.tsx +0 -164
- package/stack/types.d.ts +0 -24
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
|
@@ -4,12 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
|
|
5
5
|
var _react = _interopRequireDefault(require("react"));
|
|
6
6
|
|
|
7
|
-
var _RadioGroup = _interopRequireDefault(require("./RadioGroup"));
|
|
8
|
-
|
|
9
7
|
var _react2 = require("@testing-library/react");
|
|
10
8
|
|
|
11
9
|
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
12
10
|
|
|
11
|
+
var _RadioGroup = _interopRequireDefault(require("./RadioGroup.tsx"));
|
|
12
|
+
|
|
13
13
|
var options = [{
|
|
14
14
|
label: "Option 01",
|
|
15
15
|
value: "1"
|
|
@@ -38,7 +38,7 @@ var options = [{
|
|
|
38
38
|
label: "Option 09",
|
|
39
39
|
value: "9"
|
|
40
40
|
}];
|
|
41
|
-
var
|
|
41
|
+
var singleDisabledOptions = [{
|
|
42
42
|
label: "Option 01",
|
|
43
43
|
value: "1"
|
|
44
44
|
}, {
|
|
@@ -107,8 +107,8 @@ describe("Radio Group component tests", function () {
|
|
|
107
107
|
});
|
|
108
108
|
|
|
109
109
|
_react2.fireEvent.keyDown(radioGroup, {
|
|
110
|
-
key: "
|
|
111
|
-
code: "
|
|
110
|
+
key: " ",
|
|
111
|
+
code: "Space",
|
|
112
112
|
keyCode: 13,
|
|
113
113
|
charCode: 13
|
|
114
114
|
});
|
|
@@ -135,7 +135,7 @@ describe("Radio Group component tests", function () {
|
|
|
135
135
|
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
136
136
|
name: "test",
|
|
137
137
|
label: "test-radioGroup-label",
|
|
138
|
-
options:
|
|
138
|
+
options: singleDisabledOptions
|
|
139
139
|
})),
|
|
140
140
|
getByRole = _render4.getByRole,
|
|
141
141
|
getAllByRole = _render4.getAllByRole;
|
|
@@ -403,7 +403,7 @@ describe("Radio Group component tests", function () {
|
|
|
403
403
|
expect(onChange).not.toHaveBeenCalled();
|
|
404
404
|
expect(document.activeElement).toEqual(checkedRadio);
|
|
405
405
|
});
|
|
406
|
-
test("The '
|
|
406
|
+
test("The 'space' key checks the current focused option if anyone is checked", function () {
|
|
407
407
|
var onChange = jest.fn();
|
|
408
408
|
|
|
409
409
|
var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
@@ -422,37 +422,7 @@ describe("Radio Group component tests", function () {
|
|
|
422
422
|
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
423
423
|
|
|
424
424
|
_react2.fireEvent.keyDown(radioGroup, {
|
|
425
|
-
key: "
|
|
426
|
-
code: "Enter",
|
|
427
|
-
keyCode: 13,
|
|
428
|
-
charCode: 13
|
|
429
|
-
});
|
|
430
|
-
|
|
431
|
-
expect(onChange).toHaveBeenCalledWith("1");
|
|
432
|
-
expect(checkedRadio.getAttribute("aria-checked")).toBe("true");
|
|
433
|
-
expect(checkedRadio.tabIndex).toBe(0);
|
|
434
|
-
expect(submitInput.value).toBe("1");
|
|
435
|
-
});
|
|
436
|
-
test("The 'space' key checks the current focused option if anyone is checked", function () {
|
|
437
|
-
var onChange = jest.fn();
|
|
438
|
-
|
|
439
|
-
var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
440
|
-
name: "test",
|
|
441
|
-
label: "test-radio-group-label",
|
|
442
|
-
helperText: "test-radio-group-helper-text",
|
|
443
|
-
options: options,
|
|
444
|
-
onChange: onChange
|
|
445
|
-
})),
|
|
446
|
-
getByRole = _render15.getByRole,
|
|
447
|
-
getAllByRole = _render15.getAllByRole,
|
|
448
|
-
container = _render15.container;
|
|
449
|
-
|
|
450
|
-
var radioGroup = getByRole("radiogroup");
|
|
451
|
-
var checkedRadio = getAllByRole("radio")[0];
|
|
452
|
-
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
453
|
-
|
|
454
|
-
_react2.fireEvent.keyDown(radioGroup, {
|
|
455
|
-
key: "Space",
|
|
425
|
+
key: " ",
|
|
456
426
|
code: "Space",
|
|
457
427
|
keyCode: 32,
|
|
458
428
|
charCode: 32
|
|
@@ -467,7 +437,7 @@ describe("Radio Group component tests", function () {
|
|
|
467
437
|
var onChange = jest.fn();
|
|
468
438
|
var onBlur = jest.fn();
|
|
469
439
|
|
|
470
|
-
var
|
|
440
|
+
var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
471
441
|
name: "test",
|
|
472
442
|
label: "test-radio-group-label",
|
|
473
443
|
helperText: "test-radio-group-helper-text",
|
|
@@ -475,9 +445,9 @@ describe("Radio Group component tests", function () {
|
|
|
475
445
|
onChange: onChange,
|
|
476
446
|
onBlur: onBlur
|
|
477
447
|
})),
|
|
478
|
-
getByRole =
|
|
479
|
-
getAllByRole =
|
|
480
|
-
container =
|
|
448
|
+
getByRole = _render15.getByRole,
|
|
449
|
+
getAllByRole = _render15.getAllByRole,
|
|
450
|
+
container = _render15.container;
|
|
481
451
|
|
|
482
452
|
var radioGroup = getByRole("radiogroup");
|
|
483
453
|
var radios = getAllByRole("radio");
|
|
@@ -510,7 +480,7 @@ describe("Radio Group component tests", function () {
|
|
|
510
480
|
var onChange = jest.fn();
|
|
511
481
|
var onBlur = jest.fn();
|
|
512
482
|
|
|
513
|
-
var
|
|
483
|
+
var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
514
484
|
defaultValue: "8",
|
|
515
485
|
name: "test",
|
|
516
486
|
label: "test-radio-group-label",
|
|
@@ -519,9 +489,9 @@ describe("Radio Group component tests", function () {
|
|
|
519
489
|
onChange: onChange,
|
|
520
490
|
onBlur: onBlur
|
|
521
491
|
})),
|
|
522
|
-
getByRole =
|
|
523
|
-
getAllByRole =
|
|
524
|
-
container =
|
|
492
|
+
getByRole = _render16.getByRole,
|
|
493
|
+
getAllByRole = _render16.getAllByRole,
|
|
494
|
+
container = _render16.container;
|
|
525
495
|
|
|
526
496
|
var radioGroup = getByRole("radiogroup");
|
|
527
497
|
var radios = getAllByRole("radio");
|
|
@@ -559,7 +529,7 @@ describe("Radio Group component tests", function () {
|
|
|
559
529
|
var onChange = jest.fn();
|
|
560
530
|
var onBlur = jest.fn();
|
|
561
531
|
|
|
562
|
-
var
|
|
532
|
+
var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
563
533
|
defaultValue: "2",
|
|
564
534
|
name: "test",
|
|
565
535
|
label: "test-radio-group-label",
|
|
@@ -568,9 +538,9 @@ describe("Radio Group component tests", function () {
|
|
|
568
538
|
onChange: onChange,
|
|
569
539
|
onBlur: onBlur
|
|
570
540
|
})),
|
|
571
|
-
getByRole =
|
|
572
|
-
getAllByRole =
|
|
573
|
-
container =
|
|
541
|
+
getByRole = _render17.getByRole,
|
|
542
|
+
getAllByRole = _render17.getAllByRole,
|
|
543
|
+
container = _render17.container;
|
|
574
544
|
|
|
575
545
|
var radioGroup = getByRole("radiogroup");
|
|
576
546
|
var radios = getAllByRole("radio");
|
|
@@ -607,16 +577,16 @@ describe("Radio Group component tests", function () {
|
|
|
607
577
|
test("Keyboard focus movement continues from the last radio input clicked", function () {
|
|
608
578
|
var onChange = jest.fn();
|
|
609
579
|
|
|
610
|
-
var
|
|
580
|
+
var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
611
581
|
name: "test",
|
|
612
582
|
label: "test-radio-group-label",
|
|
613
583
|
helperText: "test-radio-group-helper-text",
|
|
614
584
|
options: options,
|
|
615
585
|
onChange: onChange
|
|
616
586
|
})),
|
|
617
|
-
getByRole =
|
|
618
|
-
getAllByRole =
|
|
619
|
-
container =
|
|
587
|
+
getByRole = _render18.getByRole,
|
|
588
|
+
getAllByRole = _render18.getAllByRole,
|
|
589
|
+
container = _render18.container;
|
|
620
590
|
|
|
621
591
|
var radioGroup = getByRole("radiogroup");
|
|
622
592
|
var radios = getAllByRole("radio");
|
|
@@ -655,7 +625,7 @@ describe("Radio Group component tests", function () {
|
|
|
655
625
|
test("Readonly radio group lets the user move the focus, but neither click nor keyboard press changes the value", function () {
|
|
656
626
|
var onChange = jest.fn();
|
|
657
627
|
|
|
658
|
-
var
|
|
628
|
+
var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
|
|
659
629
|
name: "test",
|
|
660
630
|
label: "test-radio-group-label",
|
|
661
631
|
helperText: "test-radio-group-helper-text",
|
|
@@ -663,9 +633,9 @@ describe("Radio Group component tests", function () {
|
|
|
663
633
|
onChange: onChange,
|
|
664
634
|
readonly: true
|
|
665
635
|
})),
|
|
666
|
-
getByRole =
|
|
667
|
-
getAllByRole =
|
|
668
|
-
container =
|
|
636
|
+
getByRole = _render19.getByRole,
|
|
637
|
+
getAllByRole = _render19.getAllByRole,
|
|
638
|
+
container = _render19.container;
|
|
669
639
|
|
|
670
640
|
var radioGroup = getByRole("radiogroup");
|
|
671
641
|
var radios = getAllByRole("radio");
|
package/radio-group/types.d.ts
CHANGED
|
@@ -102,8 +102,8 @@ export declare type RefType = HTMLDivElement;
|
|
|
102
102
|
* Single radio prop types.
|
|
103
103
|
*/
|
|
104
104
|
export declare type RadioProps = {
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
label: string;
|
|
106
|
+
checked: boolean;
|
|
107
107
|
onClick: () => void;
|
|
108
108
|
error?: string;
|
|
109
109
|
disabled: boolean;
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
6
|
+
|
|
7
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
8
|
+
|
|
5
9
|
var _react = _interopRequireDefault(require("react"));
|
|
6
10
|
|
|
7
11
|
var _react2 = require("@testing-library/react");
|
|
@@ -10,6 +14,44 @@ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
|
10
14
|
|
|
11
15
|
var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable"));
|
|
12
16
|
|
|
17
|
+
// Mocking DOMRect for Radix Primitive Popover
|
|
18
|
+
global.globalThis = global;
|
|
19
|
+
|
|
20
|
+
global.ResizeObserver = /*#__PURE__*/function () {
|
|
21
|
+
function ResizeObserver(cb) {
|
|
22
|
+
(0, _classCallCheck2["default"])(this, ResizeObserver);
|
|
23
|
+
this.cb = cb;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
(0, _createClass2["default"])(ResizeObserver, [{
|
|
27
|
+
key: "observe",
|
|
28
|
+
value: function observe() {
|
|
29
|
+
this.cb([{
|
|
30
|
+
borderBoxSize: {
|
|
31
|
+
inlineSize: 0,
|
|
32
|
+
blockSize: 0
|
|
33
|
+
}
|
|
34
|
+
}]);
|
|
35
|
+
}
|
|
36
|
+
}, {
|
|
37
|
+
key: "unobserve",
|
|
38
|
+
value: function unobserve() {}
|
|
39
|
+
}]);
|
|
40
|
+
return ResizeObserver;
|
|
41
|
+
}();
|
|
42
|
+
|
|
43
|
+
global.DOMRect = {
|
|
44
|
+
fromRect: function fromRect() {
|
|
45
|
+
return {
|
|
46
|
+
top: 0,
|
|
47
|
+
left: 0,
|
|
48
|
+
bottom: 0,
|
|
49
|
+
right: 0,
|
|
50
|
+
width: 0,
|
|
51
|
+
height: 0
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
};
|
|
13
55
|
var columns = [{
|
|
14
56
|
displayValue: "Id",
|
|
15
57
|
isSortable: false
|
package/select/Listbox.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ListboxProps } from "./types";
|
|
3
|
-
declare const _default: React.MemoExoticComponent<
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ id, currentValue, options, visualFocusIndex, lastOptionIndex, multiple, optional, optionalItem, searchable, handleOptionOnClick, getSelectWidth, }: ListboxProps) => JSX.Element>;
|
|
4
4
|
export default _default;
|
package/select/Listbox.js
CHANGED
|
@@ -11,12 +11,16 @@ exports["default"] = void 0;
|
|
|
11
11
|
|
|
12
12
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
17
|
|
|
16
18
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
17
19
|
|
|
18
20
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
19
21
|
|
|
22
|
+
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
23
|
+
|
|
20
24
|
var _Option = _interopRequireDefault(require("./Option"));
|
|
21
25
|
|
|
22
26
|
var _Icons = _interopRequireDefault(require("./Icons"));
|
|
@@ -35,7 +39,7 @@ var groupsHaveOptions = function groupsHaveOptions(options) {
|
|
|
35
39
|
}) : true;
|
|
36
40
|
};
|
|
37
41
|
|
|
38
|
-
var Listbox =
|
|
42
|
+
var Listbox = function Listbox(_ref) {
|
|
39
43
|
var id = _ref.id,
|
|
40
44
|
currentValue = _ref.currentValue,
|
|
41
45
|
options = _ref.options,
|
|
@@ -45,8 +49,17 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
45
49
|
optional = _ref.optional,
|
|
46
50
|
optionalItem = _ref.optionalItem,
|
|
47
51
|
searchable = _ref.searchable,
|
|
48
|
-
handleOptionOnClick = _ref.handleOptionOnClick
|
|
52
|
+
handleOptionOnClick = _ref.handleOptionOnClick,
|
|
53
|
+
getSelectWidth = _ref.getSelectWidth;
|
|
49
54
|
var colorsTheme = (0, _useTheme["default"])();
|
|
55
|
+
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
56
|
+
var listboxRef = (0, _react.useRef)(null);
|
|
57
|
+
|
|
58
|
+
var _useState = (0, _react.useState)(null),
|
|
59
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
60
|
+
styles = _useState2[0],
|
|
61
|
+
setStyles = _useState2[1];
|
|
62
|
+
|
|
50
63
|
var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
|
|
51
64
|
|
|
52
65
|
var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
|
|
@@ -89,6 +102,42 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
89
102
|
}
|
|
90
103
|
};
|
|
91
104
|
|
|
105
|
+
(0, _react.useLayoutEffect)(function () {
|
|
106
|
+
if (currentValue && !multiple) {
|
|
107
|
+
var _listEl$scrollTo;
|
|
108
|
+
|
|
109
|
+
var listEl = listboxRef === null || listboxRef === void 0 ? void 0 : listboxRef.current;
|
|
110
|
+
var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
|
|
111
|
+
listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
|
|
112
|
+
top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}, [currentValue, multiple]);
|
|
116
|
+
(0, _react.useLayoutEffect)(function () {
|
|
117
|
+
var _listboxRef$current, _visualFocusedOptionE;
|
|
118
|
+
|
|
119
|
+
var visualFocusedOptionEl = listboxRef === null || listboxRef === void 0 ? void 0 : (_listboxRef$current = listboxRef.current) === null || _listboxRef$current === void 0 ? void 0 : _listboxRef$current.querySelectorAll("[role='option']")[visualFocusIndex];
|
|
120
|
+
visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
|
|
121
|
+
block: "nearest",
|
|
122
|
+
inline: "start"
|
|
123
|
+
});
|
|
124
|
+
}, [visualFocusIndex]);
|
|
125
|
+
|
|
126
|
+
var handleResize = function handleResize() {
|
|
127
|
+
setStyles({
|
|
128
|
+
width: getSelectWidth()
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
(0, _react.useLayoutEffect)(function () {
|
|
133
|
+
handleResize();
|
|
134
|
+
}, [getSelectWidth]);
|
|
135
|
+
(0, _react.useEffect)(function () {
|
|
136
|
+
window.addEventListener("resize", handleResize);
|
|
137
|
+
return function () {
|
|
138
|
+
window.removeEventListener("resize", handleResize);
|
|
139
|
+
};
|
|
140
|
+
}, [getSelectWidth]);
|
|
92
141
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
93
142
|
theme: colorsTheme.select
|
|
94
143
|
}, /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
|
|
@@ -99,11 +148,12 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
99
148
|
onMouseDown: function onMouseDown(event) {
|
|
100
149
|
event.preventDefault();
|
|
101
150
|
},
|
|
102
|
-
ref:
|
|
151
|
+
ref: listboxRef,
|
|
103
152
|
role: "listbox",
|
|
104
153
|
"aria-multiselectable": multiple,
|
|
105
|
-
|
|
106
|
-
}, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff),
|
|
154
|
+
style: styles
|
|
155
|
+
}, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), translatedLabels.select.noMatchesErrorMessage) : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
|
|
156
|
+
key: "option-".concat(optionalItem.value),
|
|
107
157
|
id: "option-".concat(0),
|
|
108
158
|
option: optionalItem,
|
|
109
159
|
onClick: handleOptionOnClick,
|
|
@@ -113,9 +163,9 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
|
|
|
113
163
|
isLastOption: lastOptionIndex === 0,
|
|
114
164
|
isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
|
|
115
165
|
}), options.map(mapOptionFunc)));
|
|
116
|
-
}
|
|
166
|
+
};
|
|
117
167
|
|
|
118
|
-
var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n
|
|
168
|
+
var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 304px;\n overflow-y: auto;\n margin: 0;\n padding: 0.25rem 0;\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 0.25rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n cursor: default;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
|
|
119
169
|
return props.theme.listDialogBackgroundColor;
|
|
120
170
|
}, function (props) {
|
|
121
171
|
return props.theme.listDialogBorderColor;
|