@dxc-technology/halstack-react 0.0.0-63ee6f9 → 0.0.0-64ec938

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 (163) 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 +19 -4
  7. package/accordion/types.d.ts +4 -0
  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 +24 -6
  12. package/accordion-group/types.d.ts +4 -0
  13. package/alert/Alert.js +4 -1
  14. package/badge/Badge.d.ts +1 -1
  15. package/badge/Badge.js +5 -3
  16. package/badge/types.d.ts +1 -0
  17. package/bleed/Bleed.js +1 -34
  18. package/bleed/Bleed.stories.tsx +94 -95
  19. package/bleed/types.d.ts +1 -1
  20. package/box/Box.js +22 -32
  21. package/bulleted-list/BulletedList.d.ts +7 -0
  22. package/bulleted-list/BulletedList.js +123 -0
  23. package/bulleted-list/BulletedList.stories.tsx +200 -0
  24. package/bulleted-list/types.d.ts +11 -0
  25. package/{list → bulleted-list}/types.js +0 -0
  26. package/button/Button.js +14 -11
  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/common/variables.js +197 -84
  33. package/date-input/DateInput.js +38 -20
  34. package/date-input/DateInput.test.js +9 -22
  35. package/date-input/types.d.ts +12 -9
  36. package/dialog/Dialog.js +4 -32
  37. package/dropdown/Dropdown.js +13 -17
  38. package/dropdown/Dropdown.stories.tsx +1 -1
  39. package/file-input/FileInput.js +9 -6
  40. package/file-input/FileItem.js +7 -5
  41. package/flex/Flex.d.ts +3 -0
  42. package/flex/Flex.js +74 -0
  43. package/flex/Flex.stories.tsx +103 -0
  44. package/flex/types.d.ts +21 -0
  45. package/{radio → flex}/types.js +0 -0
  46. package/footer/Footer.js +15 -88
  47. package/footer/Icons.js +1 -1
  48. package/header/Header.js +27 -48
  49. package/header/Header.stories.tsx +46 -36
  50. package/header/Header.test.js +18 -2
  51. package/inset/Inset.js +1 -34
  52. package/inset/Inset.stories.tsx +36 -36
  53. package/inset/types.d.ts +25 -1
  54. package/layout/ApplicationLayout.d.ts +4 -3
  55. package/layout/ApplicationLayout.js +68 -113
  56. package/layout/ApplicationLayout.stories.tsx +14 -59
  57. package/layout/Icons.d.ts +5 -0
  58. package/layout/Icons.js +13 -2
  59. package/layout/SidenavContext.d.ts +5 -0
  60. package/layout/SidenavContext.js +19 -0
  61. package/layout/types.d.ts +5 -10
  62. package/link/Link.d.ts +3 -2
  63. package/link/Link.js +57 -74
  64. package/link/Link.stories.tsx +88 -53
  65. package/link/Link.test.js +7 -15
  66. package/link/types.d.ts +7 -23
  67. package/main.d.ts +8 -5
  68. package/main.js +51 -21
  69. package/number-input/NumberInput.test.js +2 -4
  70. package/number-input/types.d.ts +13 -10
  71. package/package.json +7 -5
  72. package/paginator/Paginator.js +17 -38
  73. package/paginator/Paginator.test.js +42 -0
  74. package/paragraph/Paragraph.d.ts +6 -0
  75. package/paragraph/Paragraph.js +38 -0
  76. package/paragraph/Paragraph.stories.tsx +44 -0
  77. package/password-input/PasswordInput.js +7 -4
  78. package/password-input/PasswordInput.test.js +3 -6
  79. package/password-input/types.d.ts +14 -11
  80. package/progress-bar/ProgressBar.js +1 -1
  81. package/progress-bar/ProgressBar.stories.jsx +11 -11
  82. package/quick-nav/QuickNav.d.ts +4 -0
  83. package/quick-nav/QuickNav.js +118 -0
  84. package/quick-nav/QuickNav.stories.tsx +264 -0
  85. package/quick-nav/types.d.ts +21 -0
  86. package/quick-nav/types.js +5 -0
  87. package/radio-group/Radio.js +1 -1
  88. package/radio-group/RadioGroup.js +10 -7
  89. package/resultsetTable/ResultsetTable.test.js +42 -0
  90. package/select/Listbox.d.ts +4 -0
  91. package/select/Listbox.js +175 -0
  92. package/select/Option.js +1 -1
  93. package/select/Select.js +106 -186
  94. package/select/Select.stories.tsx +144 -100
  95. package/select/Select.test.js +377 -231
  96. package/select/types.d.ts +32 -11
  97. package/sidenav/Sidenav.d.ts +1 -1
  98. package/sidenav/Sidenav.js +20 -9
  99. package/slider/Slider.d.ts +1 -1
  100. package/slider/Slider.js +2 -1
  101. package/slider/Slider.stories.tsx +8 -8
  102. package/slider/Slider.test.js +31 -10
  103. package/slider/types.d.ts +4 -0
  104. package/spinner/Spinner.js +1 -1
  105. package/stack/Stack.d.ts +2 -1
  106. package/stack/Stack.js +29 -70
  107. package/stack/Stack.stories.tsx +189 -90
  108. package/stack/types.d.ts +15 -7
  109. package/switch/Switch.d.ts +1 -1
  110. package/switch/Switch.js +35 -19
  111. package/switch/Switch.stories.tsx +14 -14
  112. package/switch/Switch.test.js +25 -0
  113. package/switch/types.d.ts +6 -2
  114. package/tabs/Tabs.d.ts +1 -1
  115. package/tabs/Tabs.js +9 -11
  116. package/tabs/Tabs.stories.tsx +0 -8
  117. package/tabs/Tabs.test.js +26 -9
  118. package/tabs/types.d.ts +4 -0
  119. package/tabs-nav/NavTabs.d.ts +8 -0
  120. package/tabs-nav/NavTabs.js +125 -0
  121. package/tabs-nav/NavTabs.stories.tsx +170 -0
  122. package/tabs-nav/NavTabs.test.js +82 -0
  123. package/tabs-nav/Tab.d.ts +4 -0
  124. package/tabs-nav/Tab.js +132 -0
  125. package/tabs-nav/types.d.ts +53 -0
  126. package/tabs-nav/types.js +5 -0
  127. package/tag/Tag.js +5 -8
  128. package/text-input/Suggestion.d.ts +4 -0
  129. package/text-input/Suggestion.js +55 -0
  130. package/text-input/TextInput.js +48 -76
  131. package/text-input/TextInput.test.js +22 -35
  132. package/text-input/types.d.ts +27 -12
  133. package/textarea/Textarea.js +12 -23
  134. package/textarea/Textarea.test.js +10 -20
  135. package/textarea/types.d.ts +14 -11
  136. package/toggle-group/ToggleGroup.d.ts +1 -1
  137. package/toggle-group/ToggleGroup.js +5 -4
  138. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  139. package/toggle-group/ToggleGroup.test.js +35 -4
  140. package/toggle-group/types.d.ts +8 -0
  141. package/typography/Typography.d.ts +4 -0
  142. package/typography/Typography.js +131 -0
  143. package/typography/Typography.stories.tsx +198 -0
  144. package/typography/types.d.ts +18 -0
  145. package/typography/types.js +5 -0
  146. package/useTheme.js +2 -2
  147. package/useTranslatedLabels.d.ts +2 -0
  148. package/useTranslatedLabels.js +20 -0
  149. package/wizard/Wizard.js +35 -29
  150. package/ThemeContext.d.ts +0 -10
  151. package/ThemeContext.js +0 -243
  152. package/list/List.d.ts +0 -4
  153. package/list/List.js +0 -47
  154. package/list/List.stories.tsx +0 -95
  155. package/list/types.d.ts +0 -7
  156. package/radio/Radio.d.ts +0 -4
  157. package/radio/Radio.js +0 -174
  158. package/radio/Radio.stories.tsx +0 -192
  159. package/radio/Radio.test.js +0 -71
  160. package/radio/types.d.ts +0 -54
  161. package/text/Text.d.ts +0 -7
  162. package/text/Text.js +0 -30
  163. 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,15 @@ 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 _useState11 = (0, _react.useState)(null),
201
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
202
+ listboxStyles = _useState12[0],
203
+ setListboxStyles = _useState12[1];
204
+
205
+ var selectRef = (0, _react.useRef)(null);
193
206
  var selectSearchInputRef = (0, _react.useRef)(null);
194
- var selectOptionsListRef = (0, _react.useRef)(null);
195
207
  var colorsTheme = (0, _useTheme["default"])();
208
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
196
209
  var optionalItem = {
197
210
  label: placeholder,
198
211
  value: ""
@@ -202,7 +215,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
202
215
  }, [options, searchValue]);
203
216
  var lastOptionIndex = (0, _react.useMemo)(function () {
204
217
  return getLastOptionIndex(options, filteredOptions, searchable, optional, multiple);
205
- }, [options, filteredOptions, searchable, optional, multiple, filteredOptions]);
218
+ }, [options, filteredOptions, searchable, optional, multiple]);
206
219
 
207
220
  var _useMemo = (0, _react.useMemo)(function () {
208
221
  return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
@@ -210,20 +223,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
210
223
  selectedOption = _useMemo.selectedOption,
211
224
  singleSelectionIndex = _useMemo.singleSelectionIndex;
212
225
 
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
226
  var openOptions = function openOptions() {
226
- if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
227
+ if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
227
228
  };
228
229
 
229
230
  var closeOptions = function closeOptions() {
@@ -234,36 +235,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
234
235
  };
235
236
 
236
237
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
237
- if (multiple) {
238
- var _res, _res2;
238
+ var newValue;
239
239
 
240
- var res;
241
- if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) value ? res = value.filter(function (optionVal) {
240
+ if (multiple) {
241
+ if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
242
242
  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
- }
243
+ });else newValue = [].concat((0, _toConsumableArray2["default"])(value !== null && value !== void 0 ? value : innerValue), [newOption.value]);
244
+ } else newValue = newOption.value;
245
+
246
+ value !== null && value !== void 0 ? value : setInnerValue(newValue);
247
+ notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
248
+ value: newValue,
249
+ error: translatedLabels.formFields.requiredValueErrorMessage
250
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
251
+ value: newValue
252
+ });
267
253
  };
268
254
 
269
255
  var handleSelectOnClick = function handleSelectOnClick() {
@@ -284,12 +270,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
284
270
  if (!event.currentTarget.contains(event.relatedTarget)) {
285
271
  closeOptions();
286
272
  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
273
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
274
+ notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
275
+ value: currentValue,
276
+ error: translatedLabels.formFields.requiredValueErrorMessage
277
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
278
+ value: currentValue
293
279
  });
294
280
  }
295
281
  };
@@ -361,9 +347,11 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
361
347
  var handleClearOptionsActionOnClick = function handleClearOptionsActionOnClick(event) {
362
348
  event.stopPropagation();
363
349
  value !== null && value !== void 0 ? value : setInnerValue([]);
364
- onChange === null || onChange === void 0 ? void 0 : onChange({
350
+ !optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
365
351
  value: [],
366
- error: getNotOptionalErrorMessage()
352
+ error: translatedLabels.formFields.requiredValueErrorMessage
353
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
354
+ value: []
367
355
  });
368
356
  };
369
357
 
@@ -377,66 +365,23 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
377
365
  !multiple && closeOptions();
378
366
  setSearchValue("");
379
367
  }, [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"
368
+
369
+ var handleListboxResize = function handleListboxResize() {
370
+ var _selectRef$current;
371
+
372
+ var rect = selectRef === null || selectRef === void 0 ? void 0 : (_selectRef$current = selectRef.current) === null || _selectRef$current === void 0 ? void 0 : _selectRef$current.getBoundingClientRect();
373
+ setListboxStyles({
374
+ width: rect === null || rect === void 0 ? void 0 : rect.width
398
375
  });
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
376
  };
439
377
 
378
+ (0, _react.useEffect)(function () {
379
+ handleListboxResize();
380
+ window.addEventListener("resize", handleListboxResize);
381
+ return function () {
382
+ window.removeEventListener("resize", handleListboxResize);
383
+ };
384
+ }, [setListboxStyles]);
440
385
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
441
386
  theme: colorsTheme.select
442
387
  }, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
@@ -447,12 +392,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
447
392
  id: selectLabelId,
448
393
  disabled: disabled,
449
394
  onClick: function onClick() {
450
- selectContainerRef.current.focus();
395
+ selectRef.current.focus();
451
396
  },
452
397
  helperText: helperText
453
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
398
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
454
399
  disabled: disabled
455
- }, helperText), /*#__PURE__*/_react["default"].createElement(Select, {
400
+ }, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
401
+ open: isOpen
402
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
403
+ asChild: true
404
+ }, /*#__PURE__*/_react["default"].createElement(Select, {
456
405
  id: selectId,
457
406
  disabled: disabled,
458
407
  error: error,
@@ -460,14 +409,14 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
460
409
  onClick: handleSelectOnClick,
461
410
  onFocus: handleSelectOnFocus,
462
411
  onKeyDown: handleSelectOnKeyDown,
463
- ref: selectContainerRef,
412
+ ref: selectRef,
464
413
  tabIndex: tabIndex,
465
414
  role: "combobox",
466
415
  "aria-controls": optionsListId,
467
416
  "aria-disabled": disabled,
468
417
  "aria-expanded": isOpen,
469
418
  "aria-haspopup": "listbox",
470
- "aria-labelledby": selectLabelId,
419
+ "aria-labelledby": label ? selectLabelId : undefined,
471
420
  "aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
472
421
  "aria-invalid": error ? "true" : "false",
473
422
  "aria-errormessage": error ? errorId : undefined,
@@ -482,8 +431,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
482
431
  },
483
432
  onClick: handleClearOptionsActionOnClick,
484
433
  tabIndex: -1,
485
- title: "Clear selection",
486
- "aria-label": "Clear selection"
434
+ title: translatedLabels.select.actionClearSelectionTitle,
435
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
487
436
  }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
488
437
  name: name,
489
438
  value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
@@ -496,48 +445,49 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
496
445
  ref: selectSearchInputRef,
497
446
  autoComplete: "nope",
498
447
  autoCorrect: "nope",
499
- size: "1"
448
+ size: 1
500
449
  }), (!searchable || searchValue === "") && (multiple ? /*#__PURE__*/_react["default"].createElement(SelectedOption, {
501
450
  disabled: disabled,
502
451
  atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
503
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, selectedOption.map(function (option) {
452
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, selectedOption.map(function (option) {
504
453
  return option.label;
505
454
  }).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
506
455
  disabled: disabled,
507
456
  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, {
457
+ }, /*#__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
458
  onMouseDown: function onMouseDown(event) {
510
459
  // Avoid input to lose focus
511
460
  event.preventDefault();
512
461
  },
513
462
  onClick: handleClearSearchActionOnClick,
514
463
  tabIndex: -1,
515
- title: "Clear search",
516
- "aria-label": "Clear search"
464
+ title: translatedLabels.select.actionClearSearchTitle,
465
+ "aria-label": translatedLabels.select.actionClearSearchTitle
517
466
  }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
518
467
  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) {
468
+ }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Content, {
469
+ sideOffset: 4,
470
+ onOpenAutoFocus: function onOpenAutoFocus(event) {
471
+ // Avoid select to lose focus when the list is opened
525
472
  event.preventDefault();
526
473
  },
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,
474
+ onCloseAutoFocus: function onCloseAutoFocus(event) {
475
+ // Avoid select to lose focus when the list is closed
476
+ event.preventDefault();
477
+ }
478
+ }, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
479
+ id: optionsListId,
480
+ currentValue: value !== null && value !== void 0 ? value : innerValue,
481
+ options: searchable ? filteredOptions : options,
482
+ visualFocusIndex: visualFocusIndex,
483
+ lastOptionIndex: lastOptionIndex,
535
484
  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, {
485
+ optional: optional,
486
+ optionalItem: optionalItem,
487
+ searchable: searchable,
488
+ handleOptionOnClick: handleOptionOnClick,
489
+ styles: listboxStyles
490
+ }))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
541
491
  id: errorId,
542
492
  "aria-live": error ? "assertive" : "off"
543
493
  }, error)));
@@ -636,9 +586,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
636
586
  return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
637
587
  });
638
588
 
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) {
589
+ 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
590
  return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
643
591
  }, function (props) {
644
592
  return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
@@ -662,9 +610,11 @@ var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_te
662
610
  return props.theme.valueFontWeight;
663
611
  });
664
612
 
665
- var ValueInput = _styledComponents["default"].input(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
613
+ var SelectedOptionLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
666
614
 
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) {
615
+ var ValueInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
616
+
617
+ 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
618
  return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
669
619
  }, function (props) {
670
620
  return props.theme.fontFamily;
@@ -676,21 +626,21 @@ var SearchInput = _styledComponents["default"].input(_templateObject12 || (_temp
676
626
  return props.theme.valueFontWeight;
677
627
  });
678
628
 
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) {
629
+ 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
630
  return props.theme.errorIconColor;
681
631
  });
682
632
 
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) {
633
+ 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
634
  return props.theme.errorMessageColor;
685
635
  }, function (props) {
686
636
  return props.theme.fontFamily;
687
637
  });
688
638
 
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) {
639
+ 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
640
  return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
691
641
  });
692
642
 
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) {
643
+ 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
644
  return props.theme.fontFamily;
695
645
  }, function (props) {
696
646
  return props.theme.actionBackgroundColor;
@@ -706,35 +656,5 @@ var ClearSearchAction = _styledComponents["default"].button(_templateObject16 ||
706
656
  return props.theme.activeActionIconColor;
707
657
  });
708
658
 
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
659
  var _default = DxcSelect;
740
660
  exports["default"] = _default;