@dxc-technology/halstack-react 0.0.0-fdc49d2 → 0.0.0-feed711

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 (188) hide show
  1. package/HalstackContext.d.ts +12 -0
  2. package/HalstackContext.js +295 -0
  3. package/accordion/Accordion.js +5 -27
  4. package/accordion/Accordion.stories.tsx +4 -4
  5. package/accordion/types.d.ts +1 -1
  6. package/accordion-group/AccordionGroup.d.ts +1 -1
  7. package/accordion-group/AccordionGroup.js +14 -15
  8. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  9. package/accordion-group/AccordionGroup.test.js +24 -6
  10. package/accordion-group/types.d.ts +5 -1
  11. package/alert/Alert.js +4 -1
  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 +22 -32
  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 +38 -28
  30. package/checkbox/Checkbox.stories.tsx +124 -128
  31. package/checkbox/types.d.ts +3 -3
  32. package/chip/types.d.ts +1 -1
  33. package/common/variables.js +229 -98
  34. package/date-input/DateInput.js +41 -23
  35. package/date-input/DateInput.test.js +9 -22
  36. package/date-input/types.d.ts +12 -9
  37. package/dialog/Dialog.js +46 -50
  38. package/dialog/Dialog.stories.tsx +1 -2
  39. package/dialog/Dialog.test.js +34 -4
  40. package/dialog/types.d.ts +2 -2
  41. package/dropdown/Dropdown.d.ts +1 -1
  42. package/dropdown/Dropdown.js +242 -250
  43. package/dropdown/Dropdown.stories.tsx +126 -63
  44. package/dropdown/Dropdown.test.js +510 -108
  45. package/dropdown/DropdownMenu.d.ts +4 -0
  46. package/dropdown/DropdownMenu.js +80 -0
  47. package/dropdown/DropdownMenuItem.d.ts +4 -0
  48. package/dropdown/DropdownMenuItem.js +92 -0
  49. package/dropdown/types.d.ts +25 -5
  50. package/file-input/FileInput.js +9 -6
  51. package/file-input/FileItem.js +7 -5
  52. package/flex/Flex.d.ts +4 -0
  53. package/flex/Flex.js +57 -0
  54. package/flex/Flex.stories.tsx +103 -0
  55. package/flex/types.d.ts +21 -0
  56. package/{radio → flex}/types.js +0 -0
  57. package/footer/Footer.js +15 -88
  58. package/footer/Icons.js +1 -1
  59. package/footer/types.d.ts +1 -1
  60. package/header/Header.js +95 -114
  61. package/header/Header.stories.tsx +46 -36
  62. package/header/Header.test.js +18 -2
  63. package/header/Icons.js +2 -2
  64. package/header/types.d.ts +2 -2
  65. package/inset/Inset.js +1 -34
  66. package/inset/Inset.stories.tsx +36 -36
  67. package/inset/types.d.ts +25 -1
  68. package/layout/ApplicationLayout.d.ts +16 -6
  69. package/layout/ApplicationLayout.js +71 -131
  70. package/layout/ApplicationLayout.stories.tsx +83 -93
  71. package/layout/Icons.d.ts +5 -0
  72. package/layout/Icons.js +13 -2
  73. package/layout/SidenavContext.d.ts +5 -0
  74. package/layout/SidenavContext.js +19 -0
  75. package/layout/types.d.ts +18 -33
  76. package/link/Link.d.ts +3 -2
  77. package/link/Link.js +57 -74
  78. package/link/Link.stories.tsx +95 -53
  79. package/link/Link.test.js +7 -15
  80. package/link/types.d.ts +7 -23
  81. package/main.d.ts +7 -10
  82. package/main.js +43 -61
  83. package/number-input/NumberInput.test.js +2 -4
  84. package/number-input/types.d.ts +13 -10
  85. package/package.json +14 -12
  86. package/paginator/Paginator.js +17 -38
  87. package/paginator/Paginator.test.js +42 -0
  88. package/paragraph/Paragraph.d.ts +6 -0
  89. package/paragraph/Paragraph.js +38 -0
  90. package/paragraph/Paragraph.stories.tsx +44 -0
  91. package/password-input/PasswordInput.js +7 -4
  92. package/password-input/PasswordInput.test.js +3 -6
  93. package/password-input/types.d.ts +14 -11
  94. package/progress-bar/ProgressBar.d.ts +2 -2
  95. package/progress-bar/ProgressBar.js +57 -51
  96. package/progress-bar/ProgressBar.stories.jsx +13 -11
  97. package/progress-bar/ProgressBar.test.js +67 -22
  98. package/progress-bar/types.d.ts +3 -4
  99. package/quick-nav/QuickNav.js +83 -25
  100. package/quick-nav/QuickNav.stories.tsx +43 -16
  101. package/quick-nav/types.d.ts +4 -8
  102. package/radio-group/Radio.js +1 -1
  103. package/radio-group/RadioGroup.js +21 -20
  104. package/resultsetTable/ResultsetTable.test.js +42 -0
  105. package/select/Listbox.d.ts +4 -0
  106. package/select/Listbox.js +199 -0
  107. package/select/Option.js +1 -1
  108. package/select/Select.js +102 -199
  109. package/select/Select.stories.tsx +145 -100
  110. package/select/Select.test.js +440 -281
  111. package/select/types.d.ts +31 -12
  112. package/sidenav/Sidenav.d.ts +6 -5
  113. package/sidenav/Sidenav.js +184 -52
  114. package/sidenav/Sidenav.stories.tsx +154 -156
  115. package/sidenav/Sidenav.test.js +25 -37
  116. package/sidenav/types.d.ts +50 -27
  117. package/slider/Slider.d.ts +1 -1
  118. package/slider/Slider.js +5 -4
  119. package/slider/Slider.stories.tsx +8 -8
  120. package/slider/Slider.test.js +68 -10
  121. package/slider/types.d.ts +4 -0
  122. package/spinner/Spinner.js +1 -1
  123. package/switch/Switch.d.ts +2 -2
  124. package/switch/Switch.js +113 -54
  125. package/switch/Switch.stories.tsx +16 -38
  126. package/switch/Switch.test.js +122 -8
  127. package/switch/types.d.ts +5 -6
  128. package/tabs/Tabs.d.ts +1 -1
  129. package/tabs/Tabs.js +9 -11
  130. package/tabs/Tabs.stories.tsx +0 -8
  131. package/tabs/Tabs.test.js +26 -9
  132. package/tabs/types.d.ts +5 -1
  133. package/tabs-nav/NavTabs.d.ts +8 -0
  134. package/tabs-nav/NavTabs.js +125 -0
  135. package/tabs-nav/NavTabs.stories.tsx +170 -0
  136. package/tabs-nav/NavTabs.test.js +82 -0
  137. package/tabs-nav/Tab.d.ts +4 -0
  138. package/tabs-nav/Tab.js +130 -0
  139. package/tabs-nav/types.d.ts +53 -0
  140. package/{row → tabs-nav}/types.js +0 -0
  141. package/tag/Tag.js +5 -8
  142. package/tag/types.d.ts +1 -1
  143. package/text-input/Suggestion.d.ts +4 -0
  144. package/text-input/Suggestion.js +55 -0
  145. package/text-input/TextInput.js +60 -97
  146. package/text-input/TextInput.stories.tsx +1 -2
  147. package/text-input/TextInput.test.js +22 -35
  148. package/text-input/types.d.ts +27 -12
  149. package/textarea/Textarea.js +10 -19
  150. package/textarea/types.d.ts +10 -7
  151. package/toggle-group/ToggleGroup.d.ts +1 -1
  152. package/toggle-group/ToggleGroup.js +5 -4
  153. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  154. package/toggle-group/ToggleGroup.test.js +35 -4
  155. package/toggle-group/types.d.ts +9 -1
  156. package/typography/Typography.d.ts +4 -0
  157. package/typography/Typography.js +131 -0
  158. package/typography/Typography.stories.tsx +198 -0
  159. package/typography/types.d.ts +18 -0
  160. package/{stack → typography}/types.js +0 -0
  161. package/useTheme.js +2 -2
  162. package/useTranslatedLabels.d.ts +2 -0
  163. package/useTranslatedLabels.js +20 -0
  164. package/wizard/Wizard.js +43 -44
  165. package/wizard/Wizard.stories.tsx +20 -1
  166. package/wizard/types.d.ts +5 -4
  167. package/ThemeContext.d.ts +0 -10
  168. package/ThemeContext.js +0 -243
  169. package/list/List.d.ts +0 -4
  170. package/list/List.js +0 -47
  171. package/list/List.stories.tsx +0 -95
  172. package/list/types.d.ts +0 -7
  173. package/radio/Radio.d.ts +0 -4
  174. package/radio/Radio.js +0 -174
  175. package/radio/Radio.stories.tsx +0 -192
  176. package/radio/Radio.test.js +0 -71
  177. package/radio/types.d.ts +0 -54
  178. package/row/Row.d.ts +0 -3
  179. package/row/Row.js +0 -127
  180. package/row/Row.stories.tsx +0 -237
  181. package/row/types.d.ts +0 -28
  182. package/stack/Stack.d.ts +0 -3
  183. package/stack/Stack.js +0 -97
  184. package/stack/Stack.stories.tsx +0 -164
  185. package/stack/types.d.ts +0 -24
  186. package/text/Text.d.ts +0 -7
  187. package/text/Text.js +0 -30
  188. package/text/Text.stories.tsx +0 -19
package/select/Select.js CHANGED
@@ -23,26 +23,26 @@ 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 _Option = _interopRequireDefault(require("../select/Option"));
33
-
34
34
  var _Icons = _interopRequireDefault(require("./Icons"));
35
35
 
36
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22;
36
+ var _Listbox = _interopRequireDefault(require("./Listbox"));
37
+
38
+ var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
39
+
40
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
37
41
 
38
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); }
39
43
 
40
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; }
41
45
 
42
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
43
- return "This field is required. Please, enter a value.";
44
- };
45
-
46
46
  var groupsHaveOptions = function groupsHaveOptions(innerOptions) {
47
47
  return innerOptions[0].hasOwnProperty("options") ? innerOptions[0].options ? innerOptions.some(function (groupOption) {
48
48
  return groupOption.options.length > 0;
@@ -57,6 +57,10 @@ var filteredGroupsHaveOptions = function filteredGroupsHaveOptions(filteredOptio
57
57
  }) : true;
58
58
  };
59
59
 
60
+ var canOpenOptions = function canOpenOptions(options, disabled) {
61
+ return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
62
+ };
63
+
60
64
  var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
61
65
  if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
62
66
  if (options[0].options) return options.map(function (optionGroup) {
@@ -132,6 +136,10 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
132
136
  };
133
137
  };
134
138
 
139
+ var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
140
+ return !optional && (multiple ? value.length === 0 : value === "");
141
+ };
142
+
135
143
  var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
136
144
  var _selectedOption$label;
137
145
 
@@ -189,10 +197,10 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
189
197
  isOpen = _useState10[0],
190
198
  changeIsOpen = _useState10[1];
191
199
 
192
- var selectContainerRef = (0, _react.useRef)(null);
200
+ var selectRef = (0, _react.useRef)(null);
193
201
  var selectSearchInputRef = (0, _react.useRef)(null);
194
- var selectOptionsListRef = (0, _react.useRef)(null);
195
202
  var colorsTheme = (0, _useTheme["default"])();
203
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
196
204
  var optionalItem = {
197
205
  label: placeholder,
198
206
  value: ""
@@ -202,7 +210,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
202
210
  }, [options, searchValue]);
203
211
  var lastOptionIndex = (0, _react.useMemo)(function () {
204
212
  return getLastOptionIndex(options, filteredOptions, searchable, optional, multiple);
205
- }, [options, filteredOptions, searchable, optional, multiple, filteredOptions]);
213
+ }, [options, filteredOptions, searchable, optional, multiple]);
206
214
 
207
215
  var _useMemo = (0, _react.useMemo)(function () {
208
216
  return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
@@ -210,20 +218,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
210
218
  selectedOption = _useMemo.selectedOption,
211
219
  singleSelectionIndex = _useMemo.singleSelectionIndex;
212
220
 
213
- var notOptionalCheck = function notOptionalCheck(value) {
214
- return value === "" && !optional;
215
- };
216
-
217
- var notOptionalMultipleCheck = function notOptionalMultipleCheck() {
218
- return (value !== null && value !== void 0 ? value : innerValue).length === 0 && !optional;
219
- };
220
-
221
- var canBeOpenOptions = function canBeOpenOptions() {
222
- return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
223
- };
224
-
225
221
  var openOptions = function openOptions() {
226
- if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
222
+ if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
227
223
  };
228
224
 
229
225
  var closeOptions = function closeOptions() {
@@ -234,36 +230,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
234
230
  };
235
231
 
236
232
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
237
- if (multiple) {
238
- var _res, _res2;
233
+ var newValue;
239
234
 
240
- var res;
241
- 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) {
242
237
  return optionVal !== newOption.value;
243
- }) : setInnerValue(function (previous) {
244
- return previous.filter(function (optionVal) {
245
- return optionVal !== newOption.value;
246
- });
247
- });else value ? res = [].concat((0, _toConsumableArray2["default"])(value), [newOption.value]) : setInnerValue(function (previous) {
248
- return [].concat((0, _toConsumableArray2["default"])(previous), [newOption.value]);
249
- });
250
- if (notOptionalMultipleCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
251
- value: (_res = res) !== null && _res !== void 0 ? _res : innerValue,
252
- error: getNotOptionalErrorMessage()
253
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
254
- value: (_res2 = res) !== null && _res2 !== void 0 ? _res2 : innerValue,
255
- error: null
256
- });
257
- } else {
258
- value !== null && value !== void 0 ? value : setInnerValue(newOption.value);
259
- if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
260
- value: newOption.value,
261
- error: getNotOptionalErrorMessage()
262
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
263
- value: newOption.value,
264
- error: null
265
- });
266
- }
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
+ });
267
248
  };
268
249
 
269
250
  var handleSelectOnClick = function handleSelectOnClick() {
@@ -284,20 +265,20 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
284
265
  if (!event.currentTarget.contains(event.relatedTarget)) {
285
266
  closeOptions();
286
267
  setSearchValue("");
287
- if (notOptionalCheck(value !== null && value !== void 0 ? value : innerValue)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
288
- value: value !== null && value !== void 0 ? value : innerValue,
289
- error: getNotOptionalErrorMessage()
290
- });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
291
- value: value !== null && value !== void 0 ? value : innerValue,
292
- 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
293
274
  });
294
275
  }
295
276
  };
296
277
 
297
278
  var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
298
- switch (event.keyCode) {
299
- case 40:
300
- // Arrow Down
279
+ switch (event.key) {
280
+ case "Down":
281
+ case "ArrowDown":
301
282
  event.preventDefault();
302
283
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
303
284
  if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
@@ -305,8 +286,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
305
286
  openOptions();
306
287
  break;
307
288
 
308
- case 38:
309
- // Arrow Up
289
+ case "Up":
290
+ case "ArrowUp":
310
291
  event.preventDefault();
311
292
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
312
293
  return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
@@ -314,15 +295,14 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
314
295
  openOptions();
315
296
  break;
316
297
 
317
- case 27:
318
- // Esc
298
+ case "Esc":
299
+ case "Escape":
319
300
  event.preventDefault();
320
301
  closeOptions();
321
302
  setSearchValue("");
322
303
  break;
323
304
 
324
- case 13:
325
- // Enter
305
+ case "Enter":
326
306
  if (isOpen && visualFocusIndex >= 0) {
327
307
  var accLength = optional && !multiple ? 1 : 0;
328
308
 
@@ -361,9 +341,11 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
361
341
  var handleClearOptionsActionOnClick = function handleClearOptionsActionOnClick(event) {
362
342
  event.stopPropagation();
363
343
  value !== null && value !== void 0 ? value : setInnerValue([]);
364
- onChange === null || onChange === void 0 ? void 0 : onChange({
344
+ !optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
365
345
  value: [],
366
- error: getNotOptionalErrorMessage()
346
+ error: translatedLabels.formFields.requiredValueErrorMessage
347
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
348
+ value: []
367
349
  });
368
350
  };
369
351
 
@@ -377,66 +359,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
377
359
  !multiple && closeOptions();
378
360
  setSearchValue("");
379
361
  }, [handleSelectChangeValue, closeOptions, multiple]);
380
- (0, _react.useLayoutEffect)(function () {
381
- if (isOpen && singleSelectionIndex) {
382
- var _listEl$scrollTo;
383
-
384
- var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
385
- var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
386
- listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
387
- top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
388
- });
389
- }
390
- }, [isOpen]);
391
- (0, _react.useLayoutEffect)(function () {
392
- var _selectOptionsListRef, _visualFocusedOptionE;
393
-
394
- var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
395
- visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
396
- block: "nearest",
397
- inline: "start"
398
- });
399
- }, [visualFocusIndex]);
400
- var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
401
-
402
- var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
403
- if (option.options) {
404
- var groupId = "group-".concat(mapIndex);
405
- return option.options.length > 0 && /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement(GroupList, {
406
- role: "group",
407
- "aria-labelledby": groupId
408
- }, /*#__PURE__*/_react["default"].createElement(GroupLabel, {
409
- role: "presentation",
410
- id: groupId
411
- }, option.label), option.options.map(function (singleOption) {
412
- globalIndex++;
413
- return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
414
- id: "option-".concat(globalIndex),
415
- option: singleOption,
416
- onClick: handleOptionOnClick,
417
- multiple: multiple,
418
- visualFocused: visualFocusIndex === globalIndex,
419
- isGroupedOption: true,
420
- isLastOption: lastOptionIndex === globalIndex,
421
- isSelected: multiple ? (value !== null && value !== void 0 ? value : innerValue).includes(singleOption.value) : (value !== null && value !== void 0 ? value : innerValue) === singleOption.value
422
- });
423
- })));
424
- } else {
425
- globalIndex++;
426
- return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
427
- key: "option-".concat(option.value),
428
- id: "option-".concat(globalIndex),
429
- option: option,
430
- onClick: handleOptionOnClick,
431
- multiple: multiple,
432
- visualFocused: visualFocusIndex === globalIndex,
433
- isGroupedOption: false,
434
- isLastOption: lastOptionIndex === globalIndex,
435
- isSelected: multiple ? (value !== null && value !== void 0 ? value : innerValue).includes(option.value) : (value !== null && value !== void 0 ? value : innerValue) === option.value
436
- });
437
- }
438
- };
362
+ var getSelectWidth = (0, _react.useCallback)(function () {
363
+ var _selectRef$current;
439
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
+ }, []);
440
368
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
441
369
  theme: colorsTheme.select
442
370
  }, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
@@ -447,12 +375,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
447
375
  id: selectLabelId,
448
376
  disabled: disabled,
449
377
  onClick: function onClick() {
450
- selectContainerRef.current.focus();
378
+ selectRef.current.focus();
451
379
  },
452
380
  helperText: helperText
453
- }, 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, {
454
382
  disabled: disabled
455
- }, 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, {
456
388
  id: selectId,
457
389
  disabled: disabled,
458
390
  error: error,
@@ -460,16 +392,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
460
392
  onClick: handleSelectOnClick,
461
393
  onFocus: handleSelectOnFocus,
462
394
  onKeyDown: handleSelectOnKeyDown,
463
- ref: selectContainerRef,
464
- tabIndex: tabIndex,
395
+ ref: selectRef,
396
+ tabIndex: disabled ? -1 : tabIndex,
465
397
  role: "combobox",
466
398
  "aria-controls": optionsListId,
467
399
  "aria-disabled": disabled,
468
400
  "aria-expanded": isOpen,
469
401
  "aria-haspopup": "listbox",
470
- "aria-labelledby": selectLabelId,
402
+ "aria-labelledby": label ? selectLabelId : undefined,
471
403
  "aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
472
- "aria-invalid": error ? "true" : "false",
404
+ "aria-invalid": error ? true : false,
473
405
  "aria-errormessage": error ? errorId : undefined,
474
406
  "aria-required": !disabled && !optional
475
407
  }, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
@@ -482,8 +414,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
482
414
  },
483
415
  onClick: handleClearOptionsActionOnClick,
484
416
  tabIndex: -1,
485
- title: "Clear selection",
486
- "aria-label": "Clear selection"
417
+ title: translatedLabels.select.actionClearSelectionTitle,
418
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
487
419
  }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
488
420
  name: name,
489
421
  value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
@@ -496,48 +428,49 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
496
428
  ref: selectSearchInputRef,
497
429
  autoComplete: "nope",
498
430
  autoCorrect: "nope",
499
- size: "1"
431
+ size: 1
500
432
  }), (!searchable || searchValue === "") && (multiple ? /*#__PURE__*/_react["default"].createElement(SelectedOption, {
501
433
  disabled: disabled,
502
434
  atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
503
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, selectedOption.map(function (option) {
435
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, selectedOption.map(function (option) {
504
436
  return option.label;
505
437
  }).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
506
438
  disabled: disabled,
507
439
  atBackground: !(value !== null && value !== void 0 ? value : innerValue) || searchable && isOpen
508
- }, /*#__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, _Icons["default"].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, {
509
441
  onMouseDown: function onMouseDown(event) {
510
442
  // Avoid input to lose focus
511
443
  event.preventDefault();
512
444
  },
513
445
  onClick: handleClearSearchActionOnClick,
514
446
  tabIndex: -1,
515
- title: "Clear search",
516
- "aria-label": "Clear search"
447
+ title: translatedLabels.select.actionClearSearchTitle,
448
+ "aria-label": translatedLabels.select.actionClearSearchTitle
517
449
  }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
518
450
  disabled: disabled
519
- }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(OptionsList, {
520
- id: optionsListId,
521
- onClick: function onClick(event) {
522
- event.stopPropagation();
523
- },
524
- 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
525
455
  event.preventDefault();
526
456
  },
527
- ref: selectOptionsListRef,
528
- role: "listbox",
529
- "aria-multiselectable": multiple,
530
- "aria-orientation": "vertical"
531
- }, searchable && (filteredOptions.length === 0 || !filteredGroupsHaveOptions(filteredOptions)) ? /*#__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"], {
532
- id: "option-".concat(0),
533
- option: optionalItem,
534
- onClick: handleOptionOnClick,
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,
535
467
  multiple: multiple,
536
- visualFocused: visualFocusIndex === 0,
537
- isGroupedOption: false,
538
- isLastOption: lastOptionIndex === 0,
539
- isSelected: multiple ? (value !== null && value !== void 0 ? value : innerValue).includes(optionalItem.value) : (value !== null && value !== void 0 ? value : innerValue) === optionalItem.value
540
- }), searchable ? filteredOptions.map(mapOptionFunc) : options.map(mapOptionFunc))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
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, {
541
474
  id: errorId,
542
475
  "aria-live": error ? "assertive" : "off"
543
476
  }, error)));
@@ -636,9 +569,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
636
569
  return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
637
570
  });
638
571
 
639
- 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) {
640
- return props.theme.fontFamily;
641
- }, 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) {
642
573
  return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
643
574
  }, function (props) {
644
575
  return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
@@ -662,9 +593,11 @@ var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_te
662
593
  return props.theme.valueFontWeight;
663
594
  });
664
595
 
665
- 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"])));
666
597
 
667
- 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) {
598
+ var ValueInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
599
+
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) {
668
601
  return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
669
602
  }, function (props) {
670
603
  return props.theme.fontFamily;
@@ -676,21 +609,21 @@ var SearchInput = _styledComponents["default"].input(_templateObject12 || (_temp
676
609
  return props.theme.valueFontWeight;
677
610
  });
678
611
 
679
- 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) {
680
613
  return props.theme.errorIconColor;
681
614
  });
682
615
 
683
- 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) {
684
617
  return props.theme.errorMessageColor;
685
618
  }, function (props) {
686
619
  return props.theme.fontFamily;
687
620
  });
688
621
 
689
- 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) {
690
623
  return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
691
624
  });
692
625
 
693
- 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) {
694
627
  return props.theme.fontFamily;
695
628
  }, function (props) {
696
629
  return props.theme.actionBackgroundColor;
@@ -706,35 +639,5 @@ var ClearSearchAction = _styledComponents["default"].button(_templateObject16 ||
706
639
  return props.theme.activeActionIconColor;
707
640
  });
708
641
 
709
- 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) {
710
- return props.theme.listDialogBackgroundColor;
711
- }, function (props) {
712
- return props.theme.listDialogBorderColor;
713
- }, function (props) {
714
- return props.theme.listOptionFontColor;
715
- }, function (props) {
716
- return props.theme.fontFamily;
717
- }, function (props) {
718
- return props.theme.listOptionFontSize;
719
- }, function (props) {
720
- return props.theme.listOptionFontStyle;
721
- }, function (props) {
722
- return props.theme.listOptionFontWeight;
723
- });
724
-
725
- 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) {
726
- return props.theme.systemMessageFontColor;
727
- });
728
-
729
- 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"])));
730
-
731
- var GroupList = _styledComponents["default"].ul(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
732
-
733
- 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) {
734
- return props.theme.listGroupLabelFontWeight;
735
- });
736
-
737
- var OptionLabel = _styledComponents["default"].span(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
738
-
739
642
  var _default = DxcSelect;
740
643
  exports["default"] = _default;