@dxc-technology/halstack-react 0.0.0-ec7b867 → 0.0.0-ecc45e2

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 (240) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +295 -0
  3. package/accordion/Accordion.d.ts +1 -1
  4. package/accordion/Accordion.js +7 -28
  5. package/accordion/Accordion.stories.tsx +12 -12
  6. package/accordion/Accordion.test.js +72 -0
  7. package/accordion/types.d.ts +5 -1
  8. package/accordion-group/AccordionGroup.d.ts +1 -1
  9. package/accordion-group/AccordionGroup.js +14 -15
  10. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  11. package/accordion-group/AccordionGroup.test.js +151 -0
  12. package/accordion-group/types.d.ts +5 -1
  13. package/alert/Alert.js +4 -1
  14. package/alert/Alert.test.js +92 -0
  15. package/badge/Badge.d.ts +4 -0
  16. package/badge/Badge.js +5 -3
  17. package/badge/types.d.ts +5 -0
  18. package/{list → badge}/types.js +0 -0
  19. package/bleed/Bleed.js +1 -34
  20. package/bleed/Bleed.stories.tsx +94 -95
  21. package/bleed/types.d.ts +25 -1
  22. package/box/Box.js +22 -32
  23. package/box/Box.test.js +18 -0
  24. package/bulleted-list/BulletedList.d.ts +7 -0
  25. package/bulleted-list/BulletedList.js +123 -0
  26. package/bulleted-list/BulletedList.stories.tsx +200 -0
  27. package/bulleted-list/types.d.ts +11 -0
  28. package/{radio → bulleted-list}/types.js +0 -0
  29. package/button/Button.js +53 -68
  30. package/button/Button.stories.tsx +9 -0
  31. package/button/Button.test.js +35 -0
  32. package/button/types.d.ts +7 -7
  33. package/card/Card.js +24 -27
  34. package/card/Card.test.js +50 -0
  35. package/checkbox/Checkbox.d.ts +1 -1
  36. package/checkbox/Checkbox.js +43 -39
  37. package/checkbox/Checkbox.stories.tsx +124 -128
  38. package/checkbox/Checkbox.test.js +78 -0
  39. package/checkbox/types.d.ts +7 -3
  40. package/chip/Chip.test.js +56 -0
  41. package/chip/types.d.ts +1 -1
  42. package/common/variables.js +229 -336
  43. package/date-input/DateInput.js +56 -42
  44. package/date-input/DateInput.stories.tsx +7 -7
  45. package/date-input/DateInput.test.js +479 -0
  46. package/date-input/types.d.ts +16 -9
  47. package/dialog/Dialog.js +46 -50
  48. package/dialog/Dialog.stories.tsx +1 -2
  49. package/dialog/Dialog.test.js +70 -0
  50. package/dialog/types.d.ts +2 -2
  51. package/dropdown/Dropdown.d.ts +1 -1
  52. package/dropdown/Dropdown.js +242 -250
  53. package/dropdown/Dropdown.stories.tsx +126 -63
  54. package/dropdown/Dropdown.test.js +591 -0
  55. package/dropdown/DropdownMenu.d.ts +4 -0
  56. package/dropdown/DropdownMenu.js +80 -0
  57. package/dropdown/DropdownMenuItem.d.ts +4 -0
  58. package/dropdown/DropdownMenuItem.js +92 -0
  59. package/dropdown/types.d.ts +25 -5
  60. package/file-input/FileInput.js +9 -6
  61. package/file-input/FileInput.test.js +457 -0
  62. package/file-input/FileItem.js +7 -5
  63. package/flex/Flex.d.ts +4 -0
  64. package/flex/Flex.js +57 -0
  65. package/flex/Flex.stories.tsx +103 -0
  66. package/flex/types.d.ts +21 -0
  67. package/{row → flex}/types.js +0 -0
  68. package/footer/Footer.js +15 -88
  69. package/footer/Footer.test.js +109 -0
  70. package/footer/Icons.js +1 -1
  71. package/footer/types.d.ts +1 -1
  72. package/header/Header.js +95 -114
  73. package/header/Header.stories.tsx +46 -36
  74. package/header/Header.test.js +79 -0
  75. package/header/Icons.js +2 -2
  76. package/header/types.d.ts +2 -2
  77. package/heading/Heading.test.js +186 -0
  78. package/inset/Inset.js +1 -34
  79. package/inset/Inset.stories.tsx +36 -36
  80. package/inset/types.d.ts +25 -1
  81. package/layout/ApplicationLayout.d.ts +16 -6
  82. package/layout/ApplicationLayout.js +71 -131
  83. package/layout/ApplicationLayout.stories.tsx +83 -93
  84. package/layout/Icons.d.ts +5 -0
  85. package/layout/Icons.js +13 -2
  86. package/layout/SidenavContext.d.ts +5 -0
  87. package/layout/SidenavContext.js +19 -0
  88. package/layout/types.d.ts +18 -33
  89. package/link/Link.d.ts +3 -2
  90. package/link/Link.js +57 -74
  91. package/link/Link.stories.tsx +95 -53
  92. package/link/Link.test.js +83 -0
  93. package/link/types.d.ts +7 -23
  94. package/main.d.ts +10 -15
  95. package/main.js +48 -82
  96. package/number-input/NumberInput.js +11 -18
  97. package/number-input/NumberInput.stories.tsx +5 -5
  98. package/number-input/NumberInput.test.js +506 -0
  99. package/number-input/types.d.ts +17 -10
  100. package/package.json +12 -10
  101. package/paginator/Paginator.js +17 -38
  102. package/paginator/Paginator.test.js +308 -0
  103. package/paragraph/Paragraph.d.ts +6 -0
  104. package/paragraph/Paragraph.js +38 -0
  105. package/paragraph/Paragraph.stories.tsx +44 -0
  106. package/password-input/PasswordInput.js +7 -4
  107. package/password-input/PasswordInput.test.js +180 -0
  108. package/password-input/types.d.ts +14 -11
  109. package/progress-bar/ProgressBar.d.ts +2 -2
  110. package/progress-bar/ProgressBar.js +57 -51
  111. package/progress-bar/ProgressBar.stories.jsx +13 -11
  112. package/progress-bar/ProgressBar.test.js +110 -0
  113. package/progress-bar/types.d.ts +3 -4
  114. package/quick-nav/QuickNav.d.ts +4 -0
  115. package/quick-nav/QuickNav.js +118 -0
  116. package/quick-nav/QuickNav.stories.tsx +264 -0
  117. package/quick-nav/types.d.ts +21 -0
  118. package/{stack → quick-nav}/types.js +0 -0
  119. package/radio-group/Radio.d.ts +1 -1
  120. package/radio-group/Radio.js +25 -24
  121. package/radio-group/RadioGroup.js +58 -50
  122. package/radio-group/RadioGroup.stories.tsx +60 -39
  123. package/radio-group/RadioGroup.test.js +530 -83
  124. package/radio-group/types.d.ts +80 -2
  125. package/resultsetTable/ResultsetTable.test.js +348 -0
  126. package/select/Icons.d.ts +10 -0
  127. package/select/Icons.js +93 -0
  128. package/select/Listbox.d.ts +4 -0
  129. package/select/Listbox.js +199 -0
  130. package/select/Option.d.ts +4 -0
  131. package/select/Option.js +110 -0
  132. package/select/Select.js +145 -365
  133. package/select/Select.stories.tsx +231 -176
  134. package/select/Select.test.js +2175 -0
  135. package/select/types.d.ts +52 -12
  136. package/sidenav/Sidenav.d.ts +6 -5
  137. package/sidenav/Sidenav.js +184 -52
  138. package/sidenav/Sidenav.stories.tsx +154 -156
  139. package/sidenav/Sidenav.test.js +44 -0
  140. package/sidenav/types.d.ts +50 -27
  141. package/slider/Slider.d.ts +1 -1
  142. package/slider/Slider.js +5 -4
  143. package/slider/Slider.stories.tsx +8 -8
  144. package/slider/Slider.test.js +187 -0
  145. package/slider/types.d.ts +4 -0
  146. package/spinner/Spinner.js +1 -1
  147. package/spinner/Spinner.test.js +64 -0
  148. package/switch/Switch.d.ts +2 -2
  149. package/switch/Switch.js +127 -55
  150. package/switch/Switch.stories.tsx +20 -42
  151. package/switch/Switch.test.js +212 -0
  152. package/switch/types.d.ts +9 -6
  153. package/table/Table.test.js +26 -0
  154. package/tabs/Tabs.d.ts +1 -1
  155. package/tabs/Tabs.js +9 -11
  156. package/tabs/Tabs.stories.tsx +0 -8
  157. package/tabs/Tabs.test.js +140 -0
  158. package/tabs/types.d.ts +5 -1
  159. package/tabs-nav/NavTabs.d.ts +8 -0
  160. package/tabs-nav/NavTabs.js +125 -0
  161. package/tabs-nav/NavTabs.stories.tsx +170 -0
  162. package/tabs-nav/NavTabs.test.js +82 -0
  163. package/tabs-nav/Tab.d.ts +4 -0
  164. package/tabs-nav/Tab.js +130 -0
  165. package/tabs-nav/types.d.ts +53 -0
  166. package/tabs-nav/types.js +5 -0
  167. package/tag/Tag.js +14 -19
  168. package/tag/Tag.stories.tsx +12 -8
  169. package/tag/Tag.test.js +60 -0
  170. package/tag/types.d.ts +1 -1
  171. package/text-input/Suggestion.d.ts +4 -0
  172. package/text-input/Suggestion.js +55 -0
  173. package/text-input/TextInput.js +68 -101
  174. package/text-input/TextInput.stories.tsx +31 -14
  175. package/text-input/TextInput.test.js +1712 -0
  176. package/text-input/types.d.ts +31 -12
  177. package/textarea/Textarea.js +20 -27
  178. package/textarea/Textarea.stories.jsx +33 -12
  179. package/textarea/Textarea.test.js +437 -0
  180. package/textarea/types.d.ts +18 -11
  181. package/toggle-group/ToggleGroup.d.ts +1 -1
  182. package/toggle-group/ToggleGroup.js +5 -4
  183. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  184. package/toggle-group/ToggleGroup.test.js +156 -0
  185. package/toggle-group/types.d.ts +9 -1
  186. package/typography/Typography.d.ts +4 -0
  187. package/typography/Typography.js +131 -0
  188. package/typography/Typography.stories.tsx +198 -0
  189. package/typography/types.d.ts +18 -0
  190. package/typography/types.js +5 -0
  191. package/useTheme.js +2 -2
  192. package/useTranslatedLabels.d.ts +2 -0
  193. package/useTranslatedLabels.js +20 -0
  194. package/wizard/Wizard.d.ts +1 -1
  195. package/wizard/Wizard.js +58 -54
  196. package/wizard/Wizard.stories.tsx +33 -24
  197. package/wizard/Wizard.test.js +141 -0
  198. package/wizard/types.d.ts +10 -5
  199. package/ThemeContext.d.ts +0 -15
  200. package/ThemeContext.js +0 -243
  201. package/V3Select/V3Select.js +0 -455
  202. package/V3Select/index.d.ts +0 -27
  203. package/V3Textarea/V3Textarea.js +0 -260
  204. package/V3Textarea/index.d.ts +0 -27
  205. package/date/Date.js +0 -373
  206. package/date/index.d.ts +0 -27
  207. package/input-text/Icons.js +0 -22
  208. package/input-text/InputText.js +0 -611
  209. package/input-text/index.d.ts +0 -36
  210. package/list/List.d.ts +0 -4
  211. package/list/List.js +0 -47
  212. package/list/List.stories.tsx +0 -95
  213. package/list/types.d.ts +0 -7
  214. package/radio/Radio.d.ts +0 -4
  215. package/radio/Radio.js +0 -174
  216. package/radio/Radio.stories.tsx +0 -192
  217. package/radio/types.d.ts +0 -54
  218. package/row/Row.d.ts +0 -3
  219. package/row/Row.js +0 -127
  220. package/row/Row.stories.tsx +0 -237
  221. package/row/types.d.ts +0 -10
  222. package/stack/Stack.d.ts +0 -3
  223. package/stack/Stack.js +0 -97
  224. package/stack/Stack.stories.tsx +0 -164
  225. package/stack/types.d.ts +0 -9
  226. package/text/Text.d.ts +0 -7
  227. package/text/Text.js +0 -30
  228. package/text/Text.stories.tsx +0 -19
  229. package/upload/Upload.js +0 -201
  230. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  231. package/upload/buttons-upload/Icons.js +0 -40
  232. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  233. package/upload/dragAndDropArea/Icons.js +0 -39
  234. package/upload/file-upload/FileToUpload.js +0 -115
  235. package/upload/file-upload/Icons.js +0 -66
  236. package/upload/files-upload/FilesToUpload.js +0 -109
  237. package/upload/index.d.ts +0 -15
  238. package/upload/transaction/Icons.js +0 -160
  239. package/upload/transaction/Transaction.js +0 -104
  240. package/upload/transactions/Transactions.js +0 -94
package/select/Select.js CHANGED
@@ -23,103 +23,42 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
26
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
27
+
26
28
  var _variables = require("../common/variables.js");
27
29
 
28
30
  var _uuid = require("uuid");
29
31
 
30
32
  var _utils = require("../common/utils.js");
31
33
 
32
- var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
34
+ var _Icons = _interopRequireDefault(require("./Icons"));
35
+
36
+ var _Listbox = _interopRequireDefault(require("./Listbox"));
37
+
38
+ var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
33
39
 
34
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28;
40
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
35
41
 
36
42
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
43
 
38
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
45
 
40
- var selectIcons = {
41
- error: /*#__PURE__*/_react["default"].createElement("svg", {
42
- role: "img",
43
- xmlns: "http://www.w3.org/2000/svg",
44
- height: "24px",
45
- viewBox: "0 0 24 24",
46
- width: "24px",
47
- fill: "currentColor"
48
- }, /*#__PURE__*/_react["default"].createElement("path", {
49
- d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"
50
- })),
51
- arrowUp: /*#__PURE__*/_react["default"].createElement("svg", {
52
- role: "img",
53
- xmlns: "http://www.w3.org/2000/svg",
54
- height: "24px",
55
- viewBox: "0 0 24 24",
56
- width: "24px",
57
- fill: "currentColor"
58
- }, /*#__PURE__*/_react["default"].createElement("path", {
59
- d: "M0 0h24v24H0V0z",
60
- fill: "none"
61
- }), /*#__PURE__*/_react["default"].createElement("path", {
62
- d: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z"
63
- })),
64
- arrowDown: /*#__PURE__*/_react["default"].createElement("svg", {
65
- role: "img",
66
- xmlns: "http://www.w3.org/2000/svg",
67
- height: "24px",
68
- viewBox: "0 0 24 24",
69
- width: "24px",
70
- fill: "currentColor"
71
- }, /*#__PURE__*/_react["default"].createElement("path", {
72
- d: "M0 0h24v24H0V0z",
73
- fill: "none"
74
- }), /*#__PURE__*/_react["default"].createElement("path", {
75
- d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"
76
- })),
77
- clear: /*#__PURE__*/_react["default"].createElement("svg", {
78
- role: "img",
79
- xmlns: "http://www.w3.org/2000/svg",
80
- width: "24",
81
- height: "24",
82
- viewBox: "0 0 24 24",
83
- fill: "currentColor"
84
- }, /*#__PURE__*/_react["default"].createElement("path", {
85
- d: "M0 0h24v24H0V0z",
86
- fill: "none"
87
- }), /*#__PURE__*/_react["default"].createElement("path", {
88
- d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
89
- })),
90
- selected: /*#__PURE__*/_react["default"].createElement("svg", {
91
- role: "img",
92
- xmlns: "http://www.w3.org/2000/svg",
93
- height: "24px",
94
- viewBox: "0 0 24 24",
95
- width: "24px",
96
- fill: "currentColor"
97
- }, /*#__PURE__*/_react["default"].createElement("path", {
98
- d: "M0 0h24v24H0z",
99
- fill: "none"
100
- }), /*#__PURE__*/_react["default"].createElement("path", {
101
- d: "M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"
102
- })),
103
- searchOff: /*#__PURE__*/_react["default"].createElement("svg", {
104
- role: "img",
105
- xmlns: "http://www.w3.org/2000/svg",
106
- height: "24px",
107
- viewBox: "0 0 24 24",
108
- width: "24px",
109
- fill: "currentColor"
110
- }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("rect", {
111
- fill: "none",
112
- height: "24",
113
- width: "24"
114
- })), /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
115
- d: "M15.5,14h-0.79l-0.28-0.27C15.41,12.59,16,11.11,16,9.5C16,5.91,13.09,3,9.5,3C6.08,3,3.28,5.64,3.03,9h2.02 C5.3,6.75,7.18,5,9.5,5C11.99,5,14,7.01,14,9.5S11.99,14,9.5,14c-0.17,0-0.33-0.03-0.5-0.05v2.02C9.17,15.99,9.33,16,9.5,16 c1.61,0,3.09-0.59,4.23-1.57L14,14.71v0.79l5,4.99L20.49,19L15.5,14z"
116
- }), /*#__PURE__*/_react["default"].createElement("polygon", {
117
- points: "6.47,10.82 4,13.29 1.53,10.82 0.82,11.53 3.29,14 0.82,16.47 1.53,17.18 4,14.71 6.47,17.18 7.18,16.47 4.71,14 7.18,11.53"
118
- }))))
46
+ var groupsHaveOptions = function groupsHaveOptions(innerOptions) {
47
+ return innerOptions[0].hasOwnProperty("options") ? innerOptions[0].options ? innerOptions.some(function (groupOption) {
48
+ return groupOption.options.length > 0;
49
+ }) : false : true;
50
+ };
51
+
52
+ var filteredGroupsHaveOptions = function filteredGroupsHaveOptions(filteredOptions) {
53
+ return filteredOptions !== null && filteredOptions !== void 0 && filteredOptions[0].options ? filteredOptions.some(function (groupOption) {
54
+ var _groupOption$options;
55
+
56
+ return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
57
+ }) : true;
119
58
  };
120
59
 
121
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
122
- return "This field is required. Please, enter a value.";
60
+ var canOpenOptions = function canOpenOptions(options, disabled) {
61
+ return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
123
62
  };
124
63
 
125
64
  var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
@@ -151,8 +90,7 @@ var getLastOptionIndex = function getLastOptionIndex(options, filteredOptions, s
151
90
  return optional && !multiple ? last + 1 : last;
152
91
  };
153
92
 
154
- var getSelectedOption = function getSelectedOption(options, multiple, optional, optionalEmptyOption, value, innerValue) {
155
- var val = value !== null && value !== void 0 ? value : innerValue;
93
+ var getSelectedOption = function getSelectedOption(value, options, multiple, optional, optionalItem) {
156
94
  var selectedOption = multiple ? [] : {};
157
95
  var singleSelectionIndex;
158
96
 
@@ -161,21 +99,21 @@ var getSelectedOption = function getSelectedOption(options, multiple, optional,
161
99
  options.forEach(function (option) {
162
100
  if (option.options) {
163
101
  option.options.forEach(function (singleOption) {
164
- if (val.includes(singleOption.value)) selectedOption.push(singleOption);
102
+ if (value.includes(singleOption.value)) selectedOption.push(singleOption);
165
103
  });
166
- } else if (val.includes(option.value)) selectedOption.push(option);
104
+ } else if (value.includes(option.value)) selectedOption.push(option);
167
105
  });
168
106
  }
169
107
  } else {
170
- if (optional && val === "") {
171
- selectedOption = optionalEmptyOption;
108
+ if (optional && value === "") {
109
+ selectedOption = optionalItem;
172
110
  singleSelectionIndex = 0;
173
111
  } else if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
174
112
  var group_index = 0;
175
113
  options.some(function (option, index) {
176
114
  if (option.options) {
177
115
  option.options.some(function (singleOption) {
178
- if (singleOption.value === val) {
116
+ if (singleOption.value === value) {
179
117
  selectedOption = singleOption;
180
118
  singleSelectionIndex = optional ? group_index + 1 : group_index;
181
119
  return true;
@@ -183,7 +121,7 @@ var getSelectedOption = function getSelectedOption(options, multiple, optional,
183
121
 
184
122
  group_index++;
185
123
  });
186
- } else if (option.value === val) {
124
+ } else if (option.value === value) {
187
125
  selectedOption = option;
188
126
  singleSelectionIndex = optional ? index + 1 : index;
189
127
  return true;
@@ -198,12 +136,17 @@ var getSelectedOption = function getSelectedOption(options, multiple, optional,
198
136
  };
199
137
  };
200
138
 
139
+ var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
140
+ return !optional && (multiple ? value.length === 0 : value === "");
141
+ };
142
+
201
143
  var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
202
144
  var _selectedOption$label;
203
145
 
204
146
  var label = _ref.label,
205
147
  _ref$name = _ref.name,
206
148
  name = _ref$name === void 0 ? "" : _ref$name,
149
+ defaultValue = _ref.defaultValue,
207
150
  value = _ref.value,
208
151
  options = _ref.options,
209
152
  helperText = _ref.helperText,
@@ -231,9 +174,10 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
231
174
  selectId = _useState2[0];
232
175
 
233
176
  var selectLabelId = "label-".concat(selectId);
177
+ var errorId = "error-".concat(selectId);
234
178
  var optionsListId = "".concat(selectId, "-listbox");
235
179
 
236
- var _useState3 = (0, _react.useState)(multiple ? [] : ""),
180
+ var _useState3 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
237
181
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
238
182
  innerValue = _useState4[0],
239
183
  setInnerValue = _useState4[1];
@@ -253,11 +197,11 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
253
197
  isOpen = _useState10[0],
254
198
  changeIsOpen = _useState10[1];
255
199
 
256
- var selectContainerRef = (0, _react.useRef)(null);
200
+ var selectRef = (0, _react.useRef)(null);
257
201
  var selectSearchInputRef = (0, _react.useRef)(null);
258
- var selectOptionsListRef = (0, _react.useRef)(null);
259
202
  var colorsTheme = (0, _useTheme["default"])();
260
- var optionalEmptyOption = {
203
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
204
+ var optionalItem = {
261
205
  label: placeholder,
262
206
  value: ""
263
207
  };
@@ -266,42 +210,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
266
210
  }, [options, searchValue]);
267
211
  var lastOptionIndex = (0, _react.useMemo)(function () {
268
212
  return getLastOptionIndex(options, filteredOptions, searchable, optional, multiple);
269
- }, [searchable, optional, multiple, filteredOptions, options]);
213
+ }, [options, filteredOptions, searchable, optional, multiple]);
270
214
 
271
215
  var _useMemo = (0, _react.useMemo)(function () {
272
- return getSelectedOption(options, multiple, optional, optionalEmptyOption, value, innerValue);
273
- }, [options, multiple, optional, value, innerValue]),
216
+ return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
217
+ }, [value, innerValue, options, multiple, optional, optionalItem]),
274
218
  selectedOption = _useMemo.selectedOption,
275
219
  singleSelectionIndex = _useMemo.singleSelectionIndex;
276
220
 
277
- var notOptionalCheck = function notOptionalCheck(value) {
278
- return value === "" && !optional;
279
- };
280
-
281
- var notOptionalMultipleCheck = function notOptionalMultipleCheck() {
282
- return (value !== null && value !== void 0 ? value : innerValue).length === 0 && !optional;
283
- };
284
-
285
- var canBeOpenOptions = function canBeOpenOptions() {
286
- return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions();
287
- };
288
-
289
- var groupsHaveOptions = function groupsHaveOptions() {
290
- return options[0].hasOwnProperty("options") ? options[0].options ? options.some(function (groupOption) {
291
- return groupOption.options.length > 0;
292
- }) : false : true;
293
- };
294
-
295
- var filteredGroupsHaveOptions = function filteredGroupsHaveOptions() {
296
- return filteredOptions !== null && filteredOptions !== void 0 && filteredOptions[0].options ? filteredOptions.some(function (groupOption) {
297
- var _groupOption$options;
298
-
299
- return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
300
- }) : true;
301
- };
302
-
303
221
  var openOptions = function openOptions() {
304
- if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
222
+ if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
305
223
  };
306
224
 
307
225
  var closeOptions = function closeOptions() {
@@ -312,36 +230,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
312
230
  };
313
231
 
314
232
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
315
- if (multiple) {
316
- var _res, _res2;
233
+ var newValue;
317
234
 
318
- var res;
319
- if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) value ? res = value.filter(function (optionVal) {
235
+ if (multiple) {
236
+ if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
320
237
  return optionVal !== newOption.value;
321
- }) : setInnerValue(function (previous) {
322
- return previous.filter(function (optionVal) {
323
- return optionVal !== newOption.value;
324
- });
325
- });else value ? res = [].concat((0, _toConsumableArray2["default"])(value), [newOption.value]) : setInnerValue(function (previous) {
326
- return [].concat((0, _toConsumableArray2["default"])(previous), [newOption.value]);
327
- });
328
- if (notOptionalMultipleCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
329
- value: (_res = res) !== null && _res !== void 0 ? _res : innerValue,
330
- error: getNotOptionalErrorMessage()
331
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
332
- value: (_res2 = res) !== null && _res2 !== void 0 ? _res2 : innerValue,
333
- error: null
334
- });
335
- } else {
336
- value !== null && value !== void 0 ? value : setInnerValue(newOption.value);
337
- if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
338
- value: newOption.value,
339
- error: getNotOptionalErrorMessage()
340
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
341
- value: newOption.value,
342
- error: null
343
- });
344
- }
238
+ });else newValue = [].concat((0, _toConsumableArray2["default"])(value !== null && value !== void 0 ? value : innerValue), [newOption.value]);
239
+ } else newValue = newOption.value;
240
+
241
+ value !== null && value !== void 0 ? value : setInnerValue(newValue);
242
+ notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
243
+ value: newValue,
244
+ error: translatedLabels.formFields.requiredValueErrorMessage
245
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
246
+ value: newValue
247
+ });
345
248
  };
346
249
 
347
250
  var handleSelectOnClick = function handleSelectOnClick() {
@@ -362,20 +265,20 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
362
265
  if (!event.currentTarget.contains(event.relatedTarget)) {
363
266
  closeOptions();
364
267
  setSearchValue("");
365
- if (notOptionalCheck(value !== null && value !== void 0 ? value : innerValue)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
366
- value: value !== null && value !== void 0 ? value : innerValue,
367
- error: getNotOptionalErrorMessage()
368
- });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
369
- value: value !== null && value !== void 0 ? value : innerValue,
370
- error: null
268
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
269
+ notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
270
+ value: currentValue,
271
+ error: translatedLabels.formFields.requiredValueErrorMessage
272
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
273
+ value: currentValue
371
274
  });
372
275
  }
373
276
  };
374
277
 
375
278
  var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
376
- switch (event.keyCode) {
377
- case 40:
378
- // Arrow Down
279
+ switch (event.key) {
280
+ case "Down":
281
+ case "ArrowDown":
379
282
  event.preventDefault();
380
283
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
381
284
  if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
@@ -383,8 +286,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
383
286
  openOptions();
384
287
  break;
385
288
 
386
- case 38:
387
- // Arrow Up
289
+ case "Up":
290
+ case "ArrowUp":
388
291
  event.preventDefault();
389
292
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
390
293
  return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
@@ -392,21 +295,20 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
392
295
  openOptions();
393
296
  break;
394
297
 
395
- case 27:
396
- // Esc
298
+ case "Esc":
299
+ case "Escape":
397
300
  event.preventDefault();
398
301
  closeOptions();
399
302
  setSearchValue("");
400
303
  break;
401
304
 
402
- case 13:
403
- // Enter
305
+ case "Enter":
404
306
  if (isOpen && visualFocusIndex >= 0) {
405
307
  var accLength = optional && !multiple ? 1 : 0;
406
308
 
407
309
  if (searchable) {
408
310
  if (filteredOptions.length > 0) {
409
- if (optional && !multiple && visualFocusIndex === 0 && filteredGroupsHaveOptions()) handleSelectChangeValue(optionalEmptyOption);else filteredOptions[0].options ? filteredGroupsHaveOptions() && filteredOptions.some(function (groupOption) {
311
+ if (optional && !multiple && visualFocusIndex === 0 && filteredGroupsHaveOptions(filteredOptions)) handleSelectChangeValue(optionalItem);else filteredOptions[0].options ? filteredGroupsHaveOptions(filteredOptions) && filteredOptions.some(function (groupOption) {
410
312
  var groupLength = accLength + groupOption.options.length;
411
313
  groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
412
314
  accLength = groupLength;
@@ -414,7 +316,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
414
316
  }) : handleSelectChangeValue(filteredOptions[visualFocusIndex - accLength]);
415
317
  }
416
318
  } else {
417
- if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalEmptyOption);else options[0].options ? options.some(function (groupOption) {
319
+ if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalItem);else options[0].options ? options.some(function (groupOption) {
418
320
  var groupLength = accLength + groupOption.options.length;
419
321
  groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
420
322
  accLength = groupLength;
@@ -439,9 +341,11 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
439
341
  var handleClearOptionsActionOnClick = function handleClearOptionsActionOnClick(event) {
440
342
  event.stopPropagation();
441
343
  value !== null && value !== void 0 ? value : setInnerValue([]);
442
- onChange === null || onChange === void 0 ? void 0 : onChange({
344
+ !optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
443
345
  value: [],
444
- error: getNotOptionalErrorMessage()
346
+ error: translatedLabels.formFields.requiredValueErrorMessage
347
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
348
+ value: []
445
349
  });
446
350
  };
447
351
 
@@ -450,96 +354,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
450
354
  setSearchValue("");
451
355
  };
452
356
 
453
- (0, _react.useLayoutEffect)(function () {
454
- if (isOpen && singleSelectionIndex) {
455
- var _listEl$scrollTo;
456
-
457
- var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
458
- var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
459
- listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
460
- top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
461
- });
462
- }
463
- }, [isOpen]);
464
- (0, _react.useLayoutEffect)(function () {
465
- var _selectOptionsListRef, _visualFocusedOptionE;
466
-
467
- var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
468
- visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
469
- block: "nearest",
470
- inline: "start"
471
- });
472
- }, [visualFocusIndex]);
473
-
474
- var Option = function Option(_ref2) {
475
- var option = _ref2.option,
476
- index = _ref2.index,
477
- _ref2$isGroupedOption = _ref2.isGroupedOption,
478
- isGroupedOption = _ref2$isGroupedOption === void 0 ? false : _ref2$isGroupedOption;
479
- var isSelected = multiple ? (value !== null && value !== void 0 ? value : innerValue).includes(option.value) : (value !== null && value !== void 0 ? value : innerValue) === option.value;
480
- var isLastOption = index === lastOptionIndex;
481
- return /*#__PURE__*/_react["default"].createElement(OptionItem, {
482
- id: "option-".concat(index),
483
- onClick: function onClick() {
484
- handleSelectChangeValue(option);
485
- !multiple && closeOptions();
486
- setSearchValue("");
487
- },
488
- visualFocused: visualFocusIndex === index,
489
- selected: isSelected,
490
- role: "option",
491
- "aria-selected": isSelected
492
- }, /*#__PURE__*/_react["default"].createElement(StyledOption, {
493
- visualFocused: visualFocusIndex === index,
494
- selected: isSelected,
495
- last: isLastOption,
496
- grouped: isGroupedOption,
497
- multiple: multiple
498
- }, multiple && /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
499
- tabIndex: -1,
500
- checked: isSelected
501
- }), option.icon && /*#__PURE__*/_react["default"].createElement(OptionIcon, {
502
- grouped: isGroupedOption,
503
- multiple: multiple,
504
- role: !(typeof option.icon === "string") && "img"
505
- }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(OptionIconImg, {
506
- src: option.icon
507
- }) : option.icon), /*#__PURE__*/_react["default"].createElement(OptionContent, {
508
- grouped: isGroupedOption,
509
- hasIcon: option.icon,
510
- multiple: multiple
511
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, selectIcons.selected))));
512
- };
513
-
514
- var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
515
-
516
- var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
517
- if (option.options) {
518
- var groupId = "group-".concat(mapIndex);
519
- return option.options.length > 0 && /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement(GroupList, {
520
- role: "group",
521
- "aria-labelledby": groupId
522
- }, /*#__PURE__*/_react["default"].createElement(GroupLabel, {
523
- role: "presentation",
524
- id: groupId
525
- }, option.label), option.options.map(function (singleOption) {
526
- globalIndex++;
527
- return /*#__PURE__*/_react["default"].createElement(Option, {
528
- option: singleOption,
529
- index: globalIndex,
530
- isGroupedOption: true
531
- });
532
- })));
533
- } else {
534
- globalIndex++;
535
- return /*#__PURE__*/_react["default"].createElement(Option, {
536
- key: "option-".concat(option.value),
537
- option: option,
538
- index: globalIndex
539
- });
540
- }
541
- };
357
+ var handleOptionOnClick = (0, _react.useCallback)(function (option) {
358
+ handleSelectChangeValue(option);
359
+ !multiple && closeOptions();
360
+ setSearchValue("");
361
+ }, [handleSelectChangeValue, closeOptions, multiple]);
362
+ var getSelectWidth = (0, _react.useCallback)(function () {
363
+ var _selectRef$current;
542
364
 
365
+ var rect = selectRef === null || selectRef === void 0 ? void 0 : (_selectRef$current = selectRef.current) === null || _selectRef$current === void 0 ? void 0 : _selectRef$current.getBoundingClientRect();
366
+ return rect === null || rect === void 0 ? void 0 : rect.width;
367
+ }, []);
543
368
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
544
369
  theme: colorsTheme.select
545
370
  }, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
@@ -550,12 +375,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
550
375
  id: selectLabelId,
551
376
  disabled: disabled,
552
377
  onClick: function onClick() {
553
- selectContainerRef.current.focus();
378
+ selectRef.current.focus();
554
379
  },
555
380
  helperText: helperText
556
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
381
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
557
382
  disabled: disabled
558
- }, helperText), /*#__PURE__*/_react["default"].createElement(Select, {
383
+ }, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
384
+ open: isOpen
385
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
386
+ asChild: true
387
+ }, /*#__PURE__*/_react["default"].createElement(Select, {
559
388
  id: selectId,
560
389
  disabled: disabled,
561
390
  error: error,
@@ -563,16 +392,18 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
563
392
  onClick: handleSelectOnClick,
564
393
  onFocus: handleSelectOnFocus,
565
394
  onKeyDown: handleSelectOnKeyDown,
566
- ref: selectContainerRef,
567
- tabIndex: tabIndex,
395
+ ref: selectRef,
396
+ tabIndex: disabled ? -1 : tabIndex,
568
397
  role: "combobox",
569
398
  "aria-controls": optionsListId,
399
+ "aria-disabled": disabled,
570
400
  "aria-expanded": isOpen,
571
401
  "aria-haspopup": "listbox",
572
- "aria-labelledby": selectLabelId,
402
+ "aria-labelledby": label ? selectLabelId : undefined,
573
403
  "aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
574
- "aria-invalid": error ? "true" : "false",
575
- "aria-required": !optional
404
+ "aria-invalid": error ? true : false,
405
+ "aria-errormessage": error ? errorId : undefined,
406
+ "aria-required": !disabled && !optional
576
407
  }, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
577
408
  disabled: disabled
578
409
  }, selectedOption.length), /*#__PURE__*/_react["default"].createElement(ClearOptionsAction, {
@@ -583,11 +414,11 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
583
414
  },
584
415
  onClick: handleClearOptionsActionOnClick,
585
416
  tabIndex: -1,
586
- title: "Clear selection",
587
- "aria-label": "Clear selection"
588
- }, selectIcons.clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
417
+ title: translatedLabels.select.actionClearSelectionTitle,
418
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
419
+ }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
589
420
  name: name,
590
- value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(", ") : value !== null && value !== void 0 ? value : innerValue,
421
+ value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
591
422
  readOnly: true,
592
423
  "aria-hidden": "true"
593
424
  }), searchable && /*#__PURE__*/_react["default"].createElement(SearchInput, {
@@ -595,43 +426,54 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
595
426
  disabled: disabled,
596
427
  onChange: handleSearchIOnChange,
597
428
  ref: selectSearchInputRef,
598
- autoComplete: "off",
599
- autoCorrect: "off",
600
- size: "1"
429
+ autoComplete: "nope",
430
+ autoCorrect: "nope",
431
+ size: 1
601
432
  }), (!searchable || searchValue === "") && (multiple ? /*#__PURE__*/_react["default"].createElement(SelectedOption, {
602
433
  disabled: disabled,
603
434
  atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
604
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, selectedOption.map(function (option) {
435
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, selectedOption.map(function (option) {
605
436
  return option.label;
606
437
  }).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
607
438
  disabled: disabled,
608
439
  atBackground: !(value !== null && value !== void 0 ? value : innerValue) || searchable && isOpen
609
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, (_selectedOption$label = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _selectedOption$label !== void 0 ? _selectedOption$label : placeholder)))), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, selectIcons.error), searchable && searchValue.length > 0 && /*#__PURE__*/_react["default"].createElement(ClearSearchAction, {
440
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, (_selectedOption$label = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _selectedOption$label !== void 0 ? _selectedOption$label : placeholder)))), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, _Icons["default"].error), searchable && searchValue.length > 0 && /*#__PURE__*/_react["default"].createElement(ClearSearchAction, {
610
441
  onMouseDown: function onMouseDown(event) {
611
442
  // Avoid input to lose focus
612
443
  event.preventDefault();
613
444
  },
614
445
  onClick: handleClearSearchActionOnClick,
615
446
  tabIndex: -1,
616
- title: "Clear search",
617
- "aria-label": "Clear search"
618
- }, selectIcons.clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
447
+ title: translatedLabels.select.actionClearSearchTitle,
448
+ "aria-label": translatedLabels.select.actionClearSearchTitle
449
+ }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
619
450
  disabled: disabled
620
- }, isOpen ? selectIcons.arrowUp : selectIcons.arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(OptionsList, {
621
- id: optionsListId,
622
- onClick: function onClick(event) {
623
- event.stopPropagation();
624
- },
625
- onMouseDown: function onMouseDown(event) {
451
+ }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Content, {
452
+ sideOffset: 4,
453
+ onOpenAutoFocus: function onOpenAutoFocus(event) {
454
+ // Avoid select to lose focus when the list is opened
626
455
  event.preventDefault();
627
456
  },
628
- ref: selectOptionsListRef,
629
- role: "listbox",
630
- "aria-multiselectable": multiple
631
- }, searchable && (filteredOptions.length === 0 || !filteredGroupsHaveOptions()) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, selectIcons.searchOff), "No matches found") : optional && !multiple && /*#__PURE__*/_react["default"].createElement(Option, {
632
- option: optionalEmptyOption,
633
- index: 0
634
- }), searchable ? filteredOptions.map(mapOptionFunc) : options.map(mapOptionFunc))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, null, error)));
457
+ onCloseAutoFocus: function onCloseAutoFocus(event) {
458
+ // Avoid select to lose focus when the list is closed
459
+ event.preventDefault();
460
+ }
461
+ }, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
462
+ id: optionsListId,
463
+ currentValue: value !== null && value !== void 0 ? value : innerValue,
464
+ options: searchable ? filteredOptions : options,
465
+ visualFocusIndex: visualFocusIndex,
466
+ lastOptionIndex: lastOptionIndex,
467
+ multiple: multiple,
468
+ optional: optional,
469
+ optionalItem: optionalItem,
470
+ searchable: searchable,
471
+ handleOptionOnClick: handleOptionOnClick,
472
+ getSelectWidth: getSelectWidth
473
+ }))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
474
+ id: errorId,
475
+ "aria-live": error ? "assertive" : "off"
476
+ }, error)));
635
477
  });
636
478
 
637
479
  var sizes = {
@@ -727,9 +569,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
727
569
  return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
728
570
  });
729
571
 
730
- var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n font-size: 1rem;\n font-family: ", ";\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n svg {\n line-height: 18px;\n }\n"])), function (props) {
731
- return props.theme.fontFamily;
732
- }, function (props) {
572
+ var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n svg {\n line-height: 18px;\n }\n"])), function (props) {
733
573
  return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
734
574
  }, function (props) {
735
575
  return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
@@ -753,9 +593,11 @@ var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_te
753
593
  return props.theme.valueFontWeight;
754
594
  });
755
595
 
756
- var ValueInput = _styledComponents["default"].input(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
596
+ var SelectedOptionLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
597
+
598
+ var ValueInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
757
599
 
758
- var SearchInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n grid-area: 1 / 1 / 1 / 1;\n height: calc(2.5rem - 2px);\n background: none;\n border: none;\n outline: none;\n padding: 0 0.5rem;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5em;\n"])), function (props) {
600
+ var SearchInput = _styledComponents["default"].input(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n grid-area: 1 / 1 / 1 / 1;\n height: calc(2.5rem - 2px);\n background: none;\n border: none;\n outline: none;\n padding: 0 0.5rem;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5em;\n"])), function (props) {
759
601
  return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
760
602
  }, function (props) {
761
603
  return props.theme.fontFamily;
@@ -767,21 +609,21 @@ var SearchInput = _styledComponents["default"].input(_templateObject12 || (_temp
767
609
  return props.theme.valueFontWeight;
768
610
  });
769
611
 
770
- var ErrorIcon = _styledComponents["default"].span(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n margin-left: 0.25rem;\n pointer-events: none;\n color: ", ";\n\n svg {\n line-height: 18px;\n font-size: 1.25rem;\n }\n"])), function (props) {
612
+ var ErrorIcon = _styledComponents["default"].span(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n margin-left: 0.25rem;\n pointer-events: none;\n color: ", ";\n\n svg {\n line-height: 18px;\n font-size: 1.25rem;\n }\n"])), function (props) {
771
613
  return props.theme.errorIconColor;
772
614
  });
773
615
 
774
- var Error = _styledComponents["default"].span(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.5em;\n margin-top: 0.25rem;\n"])), function (props) {
616
+ var Error = _styledComponents["default"].span(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.5em;\n margin-top: 0.25rem;\n"])), function (props) {
775
617
  return props.theme.errorMessageColor;
776
618
  }, function (props) {
777
619
  return props.theme.fontFamily;
778
620
  });
779
621
 
780
- var CollapseIndicator = _styledComponents["default"].span(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-left: 0.25rem;\n color: ", ";\n"])), function (props) {
622
+ var CollapseIndicator = _styledComponents["default"].span(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-left: 0.25rem;\n color: ", ";\n"])), function (props) {
781
623
  return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
782
624
  });
783
625
 
784
- var ClearSearchAction = _styledComponents["default"].button(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n padding: 3px;\n margin-left: 0.25rem;\n background-color: ", ";\n color: ", ";\n\n cursor: pointer;\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n svg {\n line-height: 18px;\n }\n"])), function (props) {
626
+ var ClearSearchAction = _styledComponents["default"].button(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n font-size: 1rem;\n font-family: ", ";\n border: 1px solid transparent;\n border-radius: 2px;\n padding: 3px;\n margin-left: 0.25rem;\n background-color: ", ";\n color: ", ";\n\n cursor: pointer;\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n svg {\n line-height: 18px;\n }\n"])), function (props) {
785
627
  return props.theme.fontFamily;
786
628
  }, function (props) {
787
629
  return props.theme.actionBackgroundColor;
@@ -797,67 +639,5 @@ var ClearSearchAction = _styledComponents["default"].button(_templateObject16 ||
797
639
  return props.theme.activeActionIconColor;
798
640
  });
799
641
 
800
- var OptionsList = _styledComponents["default"].ul(_templateObject17 || (_templateObject17 = (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) {
801
- return props.theme.listDialogBackgroundColor;
802
- }, function (props) {
803
- return props.theme.listDialogBorderColor;
804
- }, function (props) {
805
- return props.theme.listOptionFontColor;
806
- }, function (props) {
807
- return props.theme.fontFamily;
808
- }, function (props) {
809
- return props.theme.listOptionFontSize;
810
- }, function (props) {
811
- return props.theme.listOptionFontStyle;
812
- }, function (props) {
813
- return props.theme.listOptionFontWeight;
814
- });
815
-
816
- var OptionsSystemMessage = _styledComponents["default"].span(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 4px 16px;\n color: ", ";\n font-size: 0.875rem;\n line-height: 1.715em;\n"])), function (props) {
817
- return props.theme.systemMessageFontColor;
818
- });
819
-
820
- var NoMatchesFoundIcon = _styledComponents["default"].span(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-right: 0.25rem;\n"])));
821
-
822
- var GroupList = _styledComponents["default"].ul(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
823
-
824
- var GroupLabel = _styledComponents["default"].li(_templateObject21 || (_templateObject21 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 4px 16px;\n font-weight: ", ";\n line-height: 1.715em;\n"])), function (props) {
825
- return props.theme.listGroupLabelFontWeight;
826
- });
827
-
828
- var OptionItem = _styledComponents["default"].li(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0 0.5rem;\n box-shadow: inset 0 0 0 2px transparent;\n ", "\n ", ";\n line-height: 1.715em;\n cursor: pointer;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n"])), function (props) {
829
- return props.visualFocused && "box-shadow: inset 0 0 0 2px ".concat(props.theme.focusListOptionBorderColor, ";");
830
- }, function (props) {
831
- return props.selected && "background-color: ".concat(props.theme.selectedListOptionBackgroundColor);
832
- }, function (props) {
833
- return props.selected ? "background-color: ".concat(props.theme.selectedHoverListOptionBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedHoverListOptionBackgroundColor, ";");
834
- }, function (props) {
835
- return props.selected ? "background-color: ".concat(props.theme.selectedActiveListOptionBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedActiveListOptionBackgroundColor, ";");
836
- });
837
-
838
- var StyledOption = _styledComponents["default"].span(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 0.5rem 0.188rem 0;\n min-height: 24px;\n ", "\n ", ";\n"])), function (props) {
839
- return props.grouped && props.multiple && "padding-left: 16px;";
840
- }, function (props) {
841
- return props.last || props.visualFocused || props.selected ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
842
- });
843
-
844
- var OptionContent = _styledComponents["default"].span(_templateObject24 || (_templateObject24 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n width: 100%;\n overflow: hidden;\n ", "\n"])), function (props) {
845
- return props.grouped && !props.multiple && !props.hasIcon ? "padding-left: 16px;" : "padding-left: 8px;";
846
- });
847
-
848
- var OptionIcon = _styledComponents["default"].span(_templateObject25 || (_templateObject25 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n ", "\n color: ", ";\n"])), function (props) {
849
- return props.grouped && !props.multiple ? "padding-left: 16px;" : "padding-left: 8px;";
850
- }, function (props) {
851
- return props.theme.listOptionIconColor;
852
- });
853
-
854
- var OptionIconImg = _styledComponents["default"].img(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["\n width: 16px;\n height: 16px;\n"])));
855
-
856
- var OptionLabel = _styledComponents["default"].span(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
857
-
858
- var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject28 || (_templateObject28 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 16px;\n width: 16px;\n margin-left: 4px;\n color: ", ";\n"])), function (props) {
859
- return props.theme.selectedListOptionIconColor;
860
- });
861
-
862
642
  var _default = DxcSelect;
863
643
  exports["default"] = _default;