@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.
Files changed (189) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +295 -0
  3. package/accordion/Accordion.js +122 -103
  4. package/accordion/Accordion.stories.tsx +5 -6
  5. package/accordion/Accordion.test.js +9 -10
  6. package/accordion/types.d.ts +4 -4
  7. package/accordion-group/AccordionGroup.js +2 -21
  8. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  9. package/accordion-group/AccordionGroup.test.js +20 -45
  10. package/accordion-group/types.d.ts +9 -3
  11. package/alert/Alert.js +5 -2
  12. package/badge/Badge.d.ts +1 -1
  13. package/badge/Badge.js +5 -3
  14. package/badge/types.d.ts +1 -0
  15. package/bleed/Bleed.js +1 -34
  16. package/bleed/Bleed.stories.tsx +94 -95
  17. package/bleed/types.d.ts +1 -1
  18. package/box/Box.js +23 -33
  19. package/bulleted-list/BulletedList.d.ts +7 -0
  20. package/bulleted-list/BulletedList.js +123 -0
  21. package/bulleted-list/BulletedList.stories.tsx +200 -0
  22. package/bulleted-list/types.d.ts +11 -0
  23. package/{list → bulleted-list}/types.js +0 -0
  24. package/button/Button.js +53 -68
  25. package/button/Button.stories.tsx +9 -0
  26. package/button/types.d.ts +7 -7
  27. package/card/Card.js +24 -27
  28. package/checkbox/Checkbox.d.ts +1 -1
  29. package/checkbox/Checkbox.js +99 -97
  30. package/checkbox/Checkbox.stories.tsx +124 -128
  31. package/checkbox/Checkbox.test.js +93 -16
  32. package/checkbox/types.d.ts +5 -5
  33. package/chip/types.d.ts +1 -1
  34. package/common/variables.js +232 -96
  35. package/date-input/DateInput.js +19 -16
  36. package/dialog/Dialog.js +52 -28
  37. package/dialog/Dialog.stories.tsx +57 -2
  38. package/dialog/Dialog.test.js +34 -4
  39. package/dialog/types.d.ts +2 -2
  40. package/dropdown/Dropdown.d.ts +1 -1
  41. package/dropdown/Dropdown.js +243 -251
  42. package/dropdown/Dropdown.stories.tsx +126 -63
  43. package/dropdown/Dropdown.test.js +510 -108
  44. package/dropdown/DropdownMenu.d.ts +4 -0
  45. package/dropdown/DropdownMenu.js +80 -0
  46. package/dropdown/DropdownMenuItem.d.ts +4 -0
  47. package/dropdown/DropdownMenuItem.js +92 -0
  48. package/dropdown/types.d.ts +25 -5
  49. package/file-input/FileInput.js +9 -6
  50. package/file-input/FileItem.js +7 -5
  51. package/flex/Flex.d.ts +4 -0
  52. package/flex/Flex.js +57 -0
  53. package/flex/Flex.stories.tsx +103 -0
  54. package/flex/types.d.ts +21 -0
  55. package/{radio → flex}/types.js +0 -0
  56. package/footer/Footer.js +7 -5
  57. package/footer/Footer.stories.tsx +8 -1
  58. package/footer/Icons.js +1 -1
  59. package/footer/types.d.ts +1 -1
  60. package/header/Header.js +80 -75
  61. package/header/Header.stories.tsx +4 -4
  62. package/header/Icons.js +2 -2
  63. package/header/types.d.ts +2 -2
  64. package/inset/Inset.js +1 -34
  65. package/inset/Inset.stories.tsx +36 -36
  66. package/inset/types.d.ts +1 -1
  67. package/layout/ApplicationLayout.d.ts +16 -6
  68. package/layout/ApplicationLayout.js +70 -117
  69. package/layout/ApplicationLayout.stories.tsx +84 -93
  70. package/layout/Icons.d.ts +5 -0
  71. package/layout/Icons.js +13 -2
  72. package/layout/SidenavContext.d.ts +5 -0
  73. package/layout/SidenavContext.js +19 -0
  74. package/layout/types.d.ts +18 -33
  75. package/link/Link.d.ts +3 -2
  76. package/link/Link.js +57 -74
  77. package/link/Link.stories.tsx +95 -53
  78. package/link/Link.test.js +7 -15
  79. package/link/types.d.ts +7 -23
  80. package/main.d.ts +7 -10
  81. package/main.js +43 -61
  82. package/number-input/types.d.ts +1 -1
  83. package/package.json +12 -11
  84. package/paginator/Paginator.js +17 -38
  85. package/paginator/Paginator.test.js +42 -0
  86. package/paragraph/Paragraph.d.ts +6 -0
  87. package/paragraph/Paragraph.js +38 -0
  88. package/paragraph/Paragraph.stories.tsx +44 -0
  89. package/password-input/PasswordInput.js +7 -4
  90. package/password-input/PasswordInput.test.js +1 -2
  91. package/password-input/types.d.ts +1 -1
  92. package/progress-bar/ProgressBar.d.ts +2 -2
  93. package/progress-bar/ProgressBar.js +57 -51
  94. package/progress-bar/ProgressBar.stories.jsx +13 -11
  95. package/progress-bar/ProgressBar.test.js +67 -22
  96. package/progress-bar/types.d.ts +3 -4
  97. package/quick-nav/QuickNav.js +72 -21
  98. package/quick-nav/QuickNav.stories.tsx +80 -17
  99. package/quick-nav/types.d.ts +4 -4
  100. package/radio-group/Radio.d.ts +1 -1
  101. package/radio-group/Radio.js +43 -28
  102. package/radio-group/RadioGroup.js +33 -34
  103. package/radio-group/RadioGroup.stories.tsx +1 -0
  104. package/radio-group/RadioGroup.test.js +28 -58
  105. package/radio-group/types.d.ts +2 -2
  106. package/resultsetTable/ResultsetTable.test.js +42 -0
  107. package/select/Listbox.d.ts +1 -1
  108. package/select/Listbox.js +58 -8
  109. package/select/Select.js +78 -90
  110. package/select/Select.stories.tsx +145 -100
  111. package/select/Select.test.js +362 -244
  112. package/select/types.d.ts +2 -5
  113. package/sidenav/Sidenav.d.ts +6 -5
  114. package/sidenav/Sidenav.js +184 -52
  115. package/sidenav/Sidenav.stories.tsx +154 -156
  116. package/sidenav/Sidenav.test.js +25 -37
  117. package/sidenav/types.d.ts +50 -27
  118. package/slider/Slider.js +116 -92
  119. package/slider/Slider.stories.tsx +7 -1
  120. package/slider/Slider.test.js +121 -21
  121. package/slider/types.d.ts +2 -2
  122. package/spinner/Spinner.js +1 -1
  123. package/switch/Switch.d.ts +2 -2
  124. package/switch/Switch.js +133 -64
  125. package/switch/Switch.stories.tsx +16 -38
  126. package/switch/Switch.test.js +144 -17
  127. package/switch/types.d.ts +5 -6
  128. package/tabs/Tab.d.ts +4 -0
  129. package/tabs/Tab.js +135 -0
  130. package/tabs/Tabs.js +360 -104
  131. package/tabs/Tabs.stories.tsx +74 -6
  132. package/tabs/Tabs.test.js +217 -6
  133. package/tabs/types.d.ts +15 -5
  134. package/tabs-nav/NavTabs.d.ts +8 -0
  135. package/tabs-nav/NavTabs.js +125 -0
  136. package/tabs-nav/NavTabs.stories.tsx +170 -0
  137. package/tabs-nav/NavTabs.test.js +82 -0
  138. package/tabs-nav/Tab.d.ts +4 -0
  139. package/tabs-nav/Tab.js +130 -0
  140. package/tabs-nav/types.d.ts +53 -0
  141. package/{row → tabs-nav}/types.js +0 -0
  142. package/tag/Tag.js +6 -9
  143. package/tag/types.d.ts +1 -1
  144. package/text-input/Icons.d.ts +8 -0
  145. package/text-input/Icons.js +60 -0
  146. package/text-input/Suggestion.d.ts +4 -0
  147. package/text-input/Suggestion.js +57 -0
  148. package/text-input/Suggestions.d.ts +4 -0
  149. package/text-input/Suggestions.js +134 -0
  150. package/text-input/TextInput.js +140 -273
  151. package/text-input/TextInput.stories.tsx +189 -182
  152. package/text-input/TextInput.test.js +164 -163
  153. package/text-input/types.d.ts +28 -2
  154. package/textarea/Textarea.js +10 -19
  155. package/textarea/types.d.ts +1 -1
  156. package/toggle-group/types.d.ts +1 -1
  157. package/typography/Typography.d.ts +4 -0
  158. package/typography/Typography.js +131 -0
  159. package/typography/Typography.stories.tsx +198 -0
  160. package/typography/types.d.ts +18 -0
  161. package/{stack → typography}/types.js +0 -0
  162. package/useTheme.js +2 -2
  163. package/useTranslatedLabels.d.ts +2 -0
  164. package/useTranslatedLabels.js +20 -0
  165. package/wizard/Wizard.js +36 -41
  166. package/wizard/Wizard.stories.tsx +20 -1
  167. package/wizard/types.d.ts +5 -4
  168. package/ThemeContext.d.ts +0 -10
  169. package/ThemeContext.js +0 -243
  170. package/list/List.d.ts +0 -4
  171. package/list/List.js +0 -47
  172. package/list/List.stories.tsx +0 -95
  173. package/list/types.d.ts +0 -7
  174. package/radio/Radio.d.ts +0 -4
  175. package/radio/Radio.js +0 -174
  176. package/radio/Radio.stories.tsx +0 -192
  177. package/radio/Radio.test.js +0 -71
  178. package/radio/types.d.ts +0 -54
  179. package/row/Row.d.ts +0 -3
  180. package/row/Row.js +0 -127
  181. package/row/Row.stories.tsx +0 -237
  182. package/row/types.d.ts +0 -28
  183. package/stack/Stack.d.ts +0 -3
  184. package/stack/Stack.js +0 -97
  185. package/stack/Stack.stories.tsx +0 -164
  186. package/stack/types.d.ts +0 -24
  187. package/text/Text.d.ts +0 -7
  188. package/text/Text.js +0 -30
  189. 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 single_disabled_options = [{
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: "Enter",
111
- code: "Enter",
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: single_disabled_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 'enter' key checks the current focused option if anyone is checked", function () {
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: "Enter",
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 _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
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 = _render16.getByRole,
479
- getAllByRole = _render16.getAllByRole,
480
- container = _render16.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 _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
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 = _render17.getByRole,
523
- getAllByRole = _render17.getAllByRole,
524
- container = _render17.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 _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
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 = _render18.getByRole,
572
- getAllByRole = _render18.getAllByRole,
573
- container = _render18.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 _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
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 = _render19.getByRole,
618
- getAllByRole = _render19.getAllByRole,
619
- container = _render19.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 _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_RadioGroup["default"], {
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 = _render20.getByRole,
667
- getAllByRole = _render20.getAllByRole,
668
- container = _render20.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");
@@ -102,8 +102,8 @@ export declare type RefType = HTMLDivElement;
102
102
  * Single radio prop types.
103
103
  */
104
104
  export declare type RadioProps = {
105
- option: Option;
106
- currentValue?: string;
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
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { ListboxProps } from "./types";
3
- declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<ListboxProps & React.RefAttributes<HTMLUListElement>>>;
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 _react = _interopRequireDefault(require("react"));
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 = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
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: ref,
151
+ ref: listboxRef,
103
152
  role: "listbox",
104
153
  "aria-multiselectable": multiple,
105
- "aria-orientation": "vertical"
106
- }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), "No matches found") : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
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 position: absolute;\n z-index: 1;\n max-height: 304px;\n overflow-y: auto;\n top: calc(100% + 4px);\n left: 0;\n margin: 0;\n padding: 0.25rem 0;\n width: 100%;\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) {
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;