@dxc-technology/halstack-react 6.0.0 → 6.2.0

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 (92) hide show
  1. package/accordion/Accordion.js +122 -103
  2. package/accordion/Accordion.stories.tsx +1 -2
  3. package/accordion/Accordion.test.js +9 -10
  4. package/accordion/types.d.ts +4 -4
  5. package/accordion-group/AccordionGroup.js +1 -21
  6. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  7. package/accordion-group/AccordionGroup.test.js +20 -45
  8. package/accordion-group/types.d.ts +9 -3
  9. package/alert/Alert.js +1 -1
  10. package/box/Box.js +1 -1
  11. package/bulleted-list/types.d.ts +1 -1
  12. package/button/Button.js +43 -61
  13. package/button/Button.stories.tsx +9 -0
  14. package/button/types.d.ts +7 -7
  15. package/checkbox/Checkbox.js +88 -95
  16. package/checkbox/Checkbox.test.js +93 -16
  17. package/checkbox/types.d.ts +2 -2
  18. package/chip/types.d.ts +1 -1
  19. package/common/variables.js +23 -10
  20. package/date-input/DateInput.js +3 -3
  21. package/dialog/Dialog.js +52 -28
  22. package/dialog/Dialog.stories.tsx +1 -2
  23. package/dialog/Dialog.test.js +34 -4
  24. package/dialog/types.d.ts +2 -2
  25. package/dropdown/Dropdown.d.ts +1 -1
  26. package/dropdown/Dropdown.js +243 -247
  27. package/dropdown/Dropdown.stories.tsx +126 -63
  28. package/dropdown/Dropdown.test.js +510 -108
  29. package/dropdown/DropdownMenu.d.ts +4 -0
  30. package/dropdown/DropdownMenu.js +80 -0
  31. package/dropdown/DropdownMenuItem.d.ts +4 -0
  32. package/dropdown/DropdownMenuItem.js +92 -0
  33. package/dropdown/types.d.ts +25 -5
  34. package/flex/Flex.js +1 -1
  35. package/flex/types.d.ts +1 -1
  36. package/footer/Footer.stories.tsx +8 -1
  37. package/footer/types.d.ts +1 -1
  38. package/header/Header.js +74 -72
  39. package/header/Header.stories.tsx +4 -4
  40. package/header/Icons.js +2 -2
  41. package/header/types.d.ts +2 -2
  42. package/layout/ApplicationLayout.js +3 -3
  43. package/layout/ApplicationLayout.stories.tsx +1 -0
  44. package/link/Link.js +1 -1
  45. package/link/Link.stories.tsx +12 -5
  46. package/link/types.d.ts +1 -1
  47. package/package.json +10 -10
  48. package/progress-bar/ProgressBar.d.ts +2 -2
  49. package/progress-bar/ProgressBar.js +56 -50
  50. package/progress-bar/ProgressBar.stories.jsx +3 -1
  51. package/progress-bar/ProgressBar.test.js +67 -22
  52. package/progress-bar/types.d.ts +3 -4
  53. package/radio-group/RadioGroup.js +11 -13
  54. package/select/Listbox.d.ts +1 -1
  55. package/select/Listbox.js +25 -2
  56. package/select/Select.js +14 -31
  57. package/select/Select.stories.tsx +6 -5
  58. package/select/Select.test.js +63 -50
  59. package/select/types.d.ts +2 -4
  60. package/sidenav/Sidenav.js +15 -3
  61. package/sidenav/types.d.ts +1 -1
  62. package/slider/Slider.js +114 -93
  63. package/slider/Slider.stories.tsx +7 -1
  64. package/slider/Slider.test.js +121 -21
  65. package/slider/types.d.ts +2 -2
  66. package/switch/Switch.d.ts +1 -1
  67. package/switch/Switch.js +111 -55
  68. package/switch/Switch.stories.tsx +8 -30
  69. package/switch/Switch.test.js +122 -8
  70. package/switch/types.d.ts +3 -4
  71. package/tabs/Tab.d.ts +4 -0
  72. package/tabs/Tab.js +135 -0
  73. package/tabs/Tabs.js +360 -104
  74. package/tabs/Tabs.stories.tsx +74 -0
  75. package/tabs/Tabs.test.js +217 -6
  76. package/tabs/types.d.ts +15 -5
  77. package/tabs-nav/NavTabs.js +5 -5
  78. package/tabs-nav/Tab.js +3 -5
  79. package/tabs-nav/types.d.ts +1 -1
  80. package/tag/Tag.js +1 -1
  81. package/tag/types.d.ts +1 -1
  82. package/text-input/Icons.d.ts +8 -0
  83. package/text-input/Icons.js +60 -0
  84. package/text-input/Suggestion.js +7 -5
  85. package/text-input/Suggestions.d.ts +4 -0
  86. package/text-input/Suggestions.js +134 -0
  87. package/text-input/TextInput.js +115 -222
  88. package/text-input/TextInput.stories.tsx +189 -182
  89. package/text-input/TextInput.test.js +163 -162
  90. package/text-input/types.d.ts +17 -3
  91. package/toggle-group/types.d.ts +1 -1
  92. package/wizard/types.d.ts +1 -1
@@ -27,66 +27,33 @@ var _variables = require("../common/variables.js");
27
27
 
28
28
  var _utils = require("../common/utils.js");
29
29
 
30
- var _uuid = require("uuid");
31
-
32
30
  var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
33
31
 
34
32
  var _NumberInputContext = _interopRequireDefault(require("../number-input/NumberInputContext"));
35
33
 
36
- var _Suggestion = _interopRequireDefault(require("./Suggestion"));
34
+ var _Suggestions = _interopRequireDefault(require("./Suggestions"));
35
+
36
+ var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
37
+
38
+ var _Icons = _interopRequireDefault(require("./Icons"));
39
+
40
+ var _uuid = require("uuid");
37
41
 
38
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;
42
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
39
43
 
40
44
  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); }
41
45
 
42
46
  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; }
43
47
 
44
- var textInputIcons = {
45
- error: /*#__PURE__*/_react["default"].createElement("svg", {
46
- xmlns: "http://www.w3.org/2000/svg",
47
- height: "24px",
48
- viewBox: "0 0 24 24",
49
- width: "24px",
50
- fill: "currentColor"
51
- }, /*#__PURE__*/_react["default"].createElement("path", {
52
- 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"
53
- })),
54
- clear: /*#__PURE__*/_react["default"].createElement("svg", {
55
- xmlns: "http://www.w3.org/2000/svg",
56
- width: "24",
57
- height: "24",
58
- viewBox: "0 0 24 24",
59
- fill: "currentColor"
60
- }, /*#__PURE__*/_react["default"].createElement("path", {
61
- d: "M0 0h24v24H0V0z",
62
- fill: "none"
63
- }), /*#__PURE__*/_react["default"].createElement("path", {
64
- 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"
65
- })),
66
- increment: /*#__PURE__*/_react["default"].createElement("svg", {
67
- xmlns: "http://www.w3.org/2000/svg",
68
- height: "24px",
69
- viewBox: "0 0 24 24",
70
- width: "24px",
71
- fill: "currentColor"
72
- }, /*#__PURE__*/_react["default"].createElement("path", {
73
- d: "M0 0h24v24H0z",
74
- fill: "none"
75
- }), /*#__PURE__*/_react["default"].createElement("path", {
76
- d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
77
- })),
78
- decrement: /*#__PURE__*/_react["default"].createElement("svg", {
79
- xmlns: "http://www.w3.org/2000/svg",
80
- height: "24px",
81
- viewBox: "0 0 24 24",
82
- width: "24px",
83
- fill: "currentColor"
84
- }, /*#__PURE__*/_react["default"].createElement("path", {
85
- d: "M0 0h24v24H0z",
86
- fill: "none"
87
- }), /*#__PURE__*/_react["default"].createElement("path", {
88
- d: "M19 13H5v-2h14v2z"
89
- }))
48
+ var sizes = {
49
+ small: "240px",
50
+ medium: "360px",
51
+ large: "480px",
52
+ fillParent: "100%"
53
+ };
54
+
55
+ var calculateWidth = function calculateWidth(margin, size) {
56
+ return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
90
57
  };
91
58
 
92
59
  var makeCancelable = function makeCancelable(promise) {
@@ -110,29 +77,8 @@ var makeCancelable = function makeCancelable(promise) {
110
77
  };
111
78
  };
112
79
 
113
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
114
- return "This field is required. Please, enter a value.";
115
- };
116
-
117
- var getPatternErrorMessage = function getPatternErrorMessage() {
118
- return "Please match the format requested.";
119
- };
120
-
121
- var patternMatch = function patternMatch(pattern, value) {
122
- return new RegExp(pattern).test(value);
123
- };
124
-
125
- var getLastOptionIndex = function getLastOptionIndex(filteredSuggestions) {
126
- var last = 0;
127
-
128
- var reducer = function reducer(acc, current) {
129
- var _current$options;
130
-
131
- return acc + ((_current$options = current.options) === null || _current$options === void 0 ? void 0 : _current$options.length);
132
- };
133
-
134
- if (filteredSuggestions.length > 0) filteredSuggestions[0].options ? last = filteredSuggestions.reduce(reducer, 0) - 1 : last = filteredSuggestions.length - 1;
135
- return last;
80
+ var patternMissmatch = function patternMissmatch(pattern, value) {
81
+ return pattern && !new RegExp(pattern).test(value);
136
82
  };
137
83
 
138
84
  var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
@@ -170,53 +116,48 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
170
116
  size = _ref$size === void 0 ? "medium" : _ref$size,
171
117
  _ref$tabIndex = _ref.tabIndex,
172
118
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
119
+ var id = (0, _react.useState)((0, _uuid.v4)());
120
+ var inputId = "input-".concat(id);
121
+ var autosuggestId = "suggestions-".concat(id);
122
+ var errorId = "error-".concat(id);
173
123
 
174
- var _useState = (0, _react.useState)("input-".concat((0, _uuid.v4)())),
175
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
176
- inputId = _useState2[0];
124
+ var _useState = (0, _react.useState)(defaultValue),
125
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
126
+ innerValue = _useState2[0],
127
+ setInnerValue = _useState2[1];
177
128
 
178
- var _useState3 = (0, _react.useState)(defaultValue),
129
+ var _useState3 = (0, _react.useState)(false),
179
130
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
180
- innerValue = _useState4[0],
181
- setInnerValue = _useState4[1];
131
+ isOpen = _useState4[0],
132
+ changeIsOpen = _useState4[1];
182
133
 
183
134
  var _useState5 = (0, _react.useState)(false),
184
135
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
185
- isOpen = _useState6[0],
186
- changeIsOpen = _useState6[1];
136
+ isSearching = _useState6[0],
137
+ changeIsSearching = _useState6[1];
187
138
 
188
139
  var _useState7 = (0, _react.useState)(false),
189
140
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
190
- isSearching = _useState8[0],
191
- changeIsSearching = _useState8[1];
141
+ isAutosuggestError = _useState8[0],
142
+ changeIsAutosuggestError = _useState8[1];
192
143
 
193
- var _useState9 = (0, _react.useState)(false),
144
+ var _useState9 = (0, _react.useState)([]),
194
145
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
195
- isAutosuggestError = _useState10[0],
196
- changeIsAutosuggestError = _useState10[1];
146
+ filteredSuggestions = _useState10[0],
147
+ changeFilteredSuggestions = _useState10[1];
197
148
 
198
- var _useState11 = (0, _react.useState)([]),
149
+ var _useState11 = (0, _react.useState)(-1),
199
150
  _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
200
- filteredSuggestions = _useState12[0],
201
- changeFilteredSuggestions = _useState12[1];
202
-
203
- var _useState13 = (0, _react.useState)(-1),
204
- _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
205
- visualFocusedSuggIndex = _useState14[0],
206
- changeVisualFocusedSuggIndex = _useState14[1];
151
+ visualFocusIndex = _useState12[0],
152
+ changeVisualFocusIndex = _useState12[1];
207
153
 
208
- var suggestionsRef = (0, _react.useRef)(null);
154
+ var inputContainerRef = (0, _react.useRef)(null);
209
155
  var inputRef = (0, _react.useRef)(null);
210
156
  var actionRef = (0, _react.useRef)(null);
211
157
  var colorsTheme = (0, _useTheme["default"])();
212
158
  var translatedLabels = (0, _useTranslatedLabels["default"])();
213
159
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
214
- var autosuggestId = "".concat(inputId, "-listBox");
215
- var errorId = "error-".concat(inputId);
216
160
  var numberInputContext = (0, _react.useContext)(_NumberInputContext["default"]);
217
- var lastOptionIndex = (0, _react.useMemo)(function () {
218
- return getLastOptionIndex(filteredSuggestions);
219
- }, [filteredSuggestions]);
220
161
 
221
162
  var isNotOptional = function isNotOptional(value) {
222
163
  return value === "" && !optional;
@@ -249,8 +190,10 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
249
190
  };
250
191
 
251
192
  var closeSuggestions = function closeSuggestions() {
252
- changeIsOpen(false);
253
- changeVisualFocusedSuggIndex(-1);
193
+ if (hasSuggestions()) {
194
+ changeIsOpen(false);
195
+ changeVisualFocusIndex(-1);
196
+ }
254
197
  };
255
198
 
256
199
  var changeValue = function changeValue(newValue) {
@@ -262,10 +205,10 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
262
205
  });else if (isLengthIncorrect(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
263
206
  value: changedValue,
264
207
  error: translatedLabels.formFields.lengthErrorMessage(minLength, maxLength)
265
- });else if (newValue && pattern && !patternMatch(pattern, newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
208
+ });else if (patternMissmatch(pattern, newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
266
209
  value: changedValue,
267
210
  error: translatedLabels.formFields.formatRequestedErrorMessage
268
- });else if (newValue && isNumberIncorrect(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
211
+ });else if (isNumberIncorrect(newValue)) onChange === null || onChange === void 0 ? void 0 : onChange({
269
212
  value: changedValue,
270
213
  error: getNumberErrorMessage(newValue)
271
214
  });else onChange === null || onChange === void 0 ? void 0 : onChange({
@@ -288,17 +231,17 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
288
231
  };
289
232
 
290
233
  var handleIOnBlur = function handleIOnBlur(event) {
291
- suggestions && closeSuggestions();
234
+ closeSuggestions();
292
235
  if (isNotOptional(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
293
236
  value: event.target.value,
294
237
  error: translatedLabels.formFields.requiredValueErrorMessage
295
238
  });else if (isLengthIncorrect(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
296
239
  value: event.target.value,
297
240
  error: translatedLabels.formFields.lengthErrorMessage(minLength, maxLength)
298
- });else if (event.target.value && pattern && !patternMatch(pattern, event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
241
+ });else if (patternMissmatch(pattern, event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
299
242
  value: event.target.value,
300
243
  error: translatedLabels.formFields.formatRequestedErrorMessage
301
- });else if (event.target.value && isNumberIncorrect(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
244
+ });else if (isNumberIncorrect(event.target.value)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
302
245
  value: event.target.value,
303
246
  error: getNumberErrorMessage(event.target.value)
304
247
  });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
@@ -307,18 +250,18 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
307
250
  };
308
251
 
309
252
  var handleIOnKeyDown = function handleIOnKeyDown(event) {
310
- switch (event.keyCode) {
311
- case 40:
312
- // Arrow Down
253
+ switch (event.key) {
254
+ case "Down":
255
+ case "ArrowDown":
256
+ event.preventDefault();
257
+
313
258
  if ((numberInputContext === null || numberInputContext === void 0 ? void 0 : numberInputContext.typeNumber) === "number") {
314
259
  decrementNumber();
315
- event.preventDefault();
316
260
  } else {
317
- event.preventDefault();
318
261
  openSuggestions();
319
262
 
320
263
  if (!isAutosuggestError && !isSearching && filteredSuggestions.length > 0) {
321
- changeVisualFocusedSuggIndex(function (visualFocusedSuggIndex) {
264
+ changeVisualFocusIndex(function (visualFocusedSuggIndex) {
322
265
  if (visualFocusedSuggIndex < filteredSuggestions.length - 1) return visualFocusedSuggIndex + 1;else if (visualFocusedSuggIndex === filteredSuggestions.length - 1) return 0;
323
266
  });
324
267
  }
@@ -326,17 +269,17 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
326
269
 
327
270
  break;
328
271
 
329
- case 38:
330
- // Arrow Up
272
+ case "Up":
273
+ case "ArrowUp":
274
+ event.preventDefault();
275
+
331
276
  if ((numberInputContext === null || numberInputContext === void 0 ? void 0 : numberInputContext.typeNumber) === "number") {
332
277
  incrementNumber();
333
- event.preventDefault();
334
278
  } else {
335
- event.preventDefault();
336
279
  openSuggestions();
337
280
 
338
281
  if (!isAutosuggestError && !isSearching && filteredSuggestions.length > 0) {
339
- changeVisualFocusedSuggIndex(function (visualFocusedSuggIndex) {
282
+ changeVisualFocusIndex(function (visualFocusedSuggIndex) {
340
283
  if (visualFocusedSuggIndex === 0 || visualFocusedSuggIndex === -1) return filteredSuggestions.length > 0 ? filteredSuggestions.length - 1 : suggestions.length - 1;else return visualFocusedSuggIndex - 1;
341
284
  });
342
285
  }
@@ -344,8 +287,8 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
344
287
 
345
288
  break;
346
289
 
347
- case 27:
348
- // Esc
290
+ case "Esc":
291
+ case "Escape":
349
292
  event.preventDefault();
350
293
 
351
294
  if (hasSuggestions()) {
@@ -355,11 +298,10 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
355
298
 
356
299
  break;
357
300
 
358
- case 13:
359
- // Enter
301
+ case "Enter":
360
302
  if (hasSuggestions() && !isSearching) {
361
- var validFocusedSuggestion = filteredSuggestions.length > 0 && visualFocusedSuggIndex >= 0 && visualFocusedSuggIndex < filteredSuggestions.length;
362
- validFocusedSuggestion && changeValue(filteredSuggestions[visualFocusedSuggIndex]);
303
+ var validFocusedSuggestion = filteredSuggestions.length > 0 && visualFocusIndex >= 0 && visualFocusIndex < filteredSuggestions.length;
304
+ validFocusedSuggestion && changeValue(filteredSuggestions[visualFocusIndex]);
363
305
  isOpen && closeSuggestions();
364
306
  }
365
307
 
@@ -432,15 +374,12 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
432
374
  }
433
375
  };
434
376
 
435
- (0, _react.useLayoutEffect)(function () {
436
- var _suggestionsRef$curre, _visualFocusedOptionE;
377
+ var getTextInputWidth = (0, _react.useCallback)(function () {
378
+ var _inputContainerRef$cu;
437
379
 
438
- var visualFocusedOptionEl = suggestionsRef === null || suggestionsRef === void 0 ? void 0 : (_suggestionsRef$curre = suggestionsRef.current) === null || _suggestionsRef$curre === void 0 ? void 0 : _suggestionsRef$curre.querySelectorAll("[role='option']")[visualFocusedSuggIndex];
439
- visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
440
- block: "nearest",
441
- inline: "start"
442
- });
443
- }, [visualFocusedSuggIndex]);
380
+ var rect = inputContainerRef === null || inputContainerRef === void 0 ? void 0 : (_inputContainerRef$cu = inputContainerRef.current) === null || _inputContainerRef$cu === void 0 ? void 0 : _inputContainerRef$cu.getBoundingClientRect();
381
+ return rect === null || rect === void 0 ? void 0 : rect.width;
382
+ }, []);
444
383
  (0, _react.useEffect)(function () {
445
384
  if (typeof suggestions === "function") {
446
385
  changeIsSearching(true);
@@ -464,7 +403,7 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
464
403
  changeFilteredSuggestions(suggestions.filter(function (suggestion) {
465
404
  return suggestion.toUpperCase().startsWith((value !== null && value !== void 0 ? value : innerValue).toUpperCase());
466
405
  }));
467
- changeVisualFocusedSuggIndex(-1);
406
+ changeVisualFocusIndex(-1);
468
407
  }
469
408
 
470
409
  (numberInputContext === null || numberInputContext === void 0 ? void 0 : numberInputContext.typeNumber) === "number" && setNumberProps(numberInputContext.typeNumber, numberInputContext.minNumber, numberInputContext.maxNumber, numberInputContext.stepNumber);
@@ -483,12 +422,17 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
483
422
  }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
484
423
  disabled: disabled,
485
424
  backgroundType: backgroundType
486
- }, helperText), /*#__PURE__*/_react["default"].createElement(InputContainer, {
425
+ }, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
426
+ open: isOpen && (filteredSuggestions.length > 0 || isSearching || isAutosuggestError)
427
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
428
+ asChild: true
429
+ }, /*#__PURE__*/_react["default"].createElement(InputContainer, {
487
430
  error: error ? true : false,
488
431
  disabled: disabled,
489
432
  backgroundType: backgroundType,
490
433
  onClick: handleInputContainerOnClick,
491
- onMouseDown: handleInputContainerOnMouseDown
434
+ onMouseDown: handleInputContainerOnMouseDown,
435
+ ref: inputContainerRef
492
436
  }, prefix && /*#__PURE__*/_react["default"].createElement(Prefix, {
493
437
  disabled: disabled,
494
438
  backgroundType: backgroundType
@@ -499,9 +443,7 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
499
443
  placeholder: placeholder,
500
444
  onBlur: handleIOnBlur,
501
445
  onChange: handleIOnChange,
502
- onFocus: function onFocus() {
503
- openSuggestions();
504
- },
446
+ onFocus: openSuggestions,
505
447
  onKeyDown: handleIOnKeyDown,
506
448
  onMouseDown: function onMouseDown(event) {
507
449
  event.stopPropagation();
@@ -512,24 +454,22 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
512
454
  pattern: pattern,
513
455
  minLength: minLength,
514
456
  maxLength: maxLength,
515
- autoComplete: autocomplete,
457
+ autoComplete: autocomplete === "off" ? "nope" : autocomplete,
516
458
  tabIndex: tabIndex,
517
459
  role: isTextInputType() && hasSuggestions() ? "combobox" : "textbox",
518
460
  "aria-autocomplete": isTextInputType() && hasSuggestions() ? "list" : undefined,
519
461
  "aria-controls": isTextInputType() && hasSuggestions() ? autosuggestId : undefined,
520
462
  "aria-disabled": disabled,
521
- "aria-expanded": isTextInputType() && hasSuggestions() ? isOpen ? "true" : "false" : undefined,
522
- "aria-activedescendant": isTextInputType() && hasSuggestions() && isOpen && visualFocusedSuggIndex !== -1 ? "suggestion-".concat(visualFocusedSuggIndex) : undefined,
523
- "aria-invalid": error ? "true" : "false",
463
+ "aria-expanded": isTextInputType() && hasSuggestions() ? isOpen : undefined,
464
+ "aria-activedescendant": isTextInputType() && hasSuggestions() && isOpen && visualFocusIndex !== -1 ? "suggestion-".concat(visualFocusIndex) : undefined,
465
+ "aria-invalid": error ? true : false,
524
466
  "aria-errormessage": error ? errorId : undefined,
525
- "aria-required": optional ? "false" : "true"
467
+ "aria-required": optional ? false : true
526
468
  }), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, {
527
469
  backgroundType: backgroundType,
528
470
  "aria-label": "Error"
529
- }, textInputIcons.error), !disabled && clearable && (value !== null && value !== void 0 ? value : innerValue).length > 0 && /*#__PURE__*/_react["default"].createElement(Action, {
530
- onClick: function onClick() {
531
- return handleClearActionOnClick();
532
- },
471
+ }, _Icons["default"].error), !disabled && clearable && (value !== null && value !== void 0 ? value : innerValue).length > 0 && /*#__PURE__*/_react["default"].createElement(Action, {
472
+ onClick: handleClearActionOnClick,
533
473
  onMouseDown: function onMouseDown(event) {
534
474
  event.stopPropagation();
535
475
  },
@@ -537,12 +477,10 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
537
477
  tabIndex: tabIndex,
538
478
  title: translatedLabels.textInput.clearFieldActionTitle,
539
479
  "aria-label": translatedLabels.textInput.clearFieldActionTitle
540
- }, textInputIcons.clear), (numberInputContext === null || numberInputContext === void 0 ? void 0 : numberInputContext.typeNumber) === "number" ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(Action, {
480
+ }, _Icons["default"].clear), (numberInputContext === null || numberInputContext === void 0 ? void 0 : numberInputContext.typeNumber) === "number" && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(Action, {
541
481
  ref: actionRef,
542
482
  disabled: disabled,
543
- onClick: function onClick() {
544
- return handleDecrementActionOnClick();
545
- },
483
+ onClick: handleDecrementActionOnClick,
546
484
  onMouseDown: function onMouseDown(event) {
547
485
  event.stopPropagation();
548
486
  },
@@ -550,12 +488,10 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
550
488
  tabIndex: tabIndex,
551
489
  title: translatedLabels.numberInput.decrementValueTitle,
552
490
  "aria-label": translatedLabels.numberInput.decrementValueTitle
553
- }, textInputIcons.decrement), /*#__PURE__*/_react["default"].createElement(Action, {
491
+ }, _Icons["default"].decrement), /*#__PURE__*/_react["default"].createElement(Action, {
554
492
  ref: actionRef,
555
493
  disabled: disabled,
556
- onClick: function onClick() {
557
- return handleIncrementActionOnClick();
558
- },
494
+ onClick: handleIncrementActionOnClick,
559
495
  onMouseDown: function onMouseDown(event) {
560
496
  event.stopPropagation();
561
497
  },
@@ -563,12 +499,10 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
563
499
  tabIndex: tabIndex,
564
500
  title: translatedLabels.numberInput.incrementValueTitle,
565
501
  "aria-label": translatedLabels.numberInput.incrementValueTitle
566
- }, textInputIcons.increment)) : action && /*#__PURE__*/_react["default"].createElement(Action, {
502
+ }, _Icons["default"].increment)), action && /*#__PURE__*/_react["default"].createElement(Action, {
567
503
  ref: actionRef,
568
504
  disabled: disabled,
569
- onClick: function onClick() {
570
- return action.onClick();
571
- },
505
+ onClick: action.onClick,
572
506
  onMouseDown: function onMouseDown(event) {
573
507
  event.stopPropagation();
574
508
  },
@@ -581,49 +515,36 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
581
515
  }) : action.icon), suffix && /*#__PURE__*/_react["default"].createElement(Suffix, {
582
516
  disabled: disabled,
583
517
  backgroundType: backgroundType
584
- }, suffix), isOpen && (filteredSuggestions.length > 0 || isSearching || isAutosuggestError) && /*#__PURE__*/_react["default"].createElement(Suggestions, {
585
- id: autosuggestId,
586
- error: isAutosuggestError ? true : false,
587
- onMouseDown: function onMouseDown(event) {
518
+ }, suffix))), /*#__PURE__*/_react["default"].createElement(Popover.Content, {
519
+ sideOffset: 4,
520
+ onOpenAutoFocus: function onOpenAutoFocus(event) {
521
+ // Avoid select to lose focus when the list is opened
588
522
  event.preventDefault();
589
523
  },
590
- ref: suggestionsRef,
591
- role: "listbox",
592
- "aria-label": label
593
- }, !isSearching && !isAutosuggestError && filteredSuggestions.length > 0 && filteredSuggestions.map(function (suggestion, index) {
594
- return /*#__PURE__*/_react["default"].createElement(_Suggestion["default"], {
595
- key: "suggestion-".concat(index),
596
- id: "suggestion-".concat(index),
597
- value: value !== null && value !== void 0 ? value : innerValue,
598
- onClick: function onClick() {
599
- changeValue(suggestion);
600
- closeSuggestions();
601
- },
602
- suggestion: suggestion,
603
- isLast: index === lastOptionIndex,
604
- visuallyFocused: visualFocusedSuggIndex === index,
605
- highlighted: typeof suggestions === "function"
606
- });
607
- }), isSearching && /*#__PURE__*/_react["default"].createElement(SuggestionsSystemMessage, null, translatedLabels.textInput.searchingMessage), isAutosuggestError && /*#__PURE__*/_react["default"].createElement(SuggestionsError, null, /*#__PURE__*/_react["default"].createElement(SuggestionsErrorIcon, {
608
- backgroundType: backgroundType
609
- }, textInputIcons.error), translatedLabels.textInput.fetchingDataErrorMessage))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
524
+ onCloseAutoFocus: function onCloseAutoFocus(event) {
525
+ // Avoid select to lose focus when the list is closed
526
+ event.preventDefault();
527
+ }
528
+ }, /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], {
529
+ id: autosuggestId,
530
+ value: value !== null && value !== void 0 ? value : innerValue,
531
+ suggestions: filteredSuggestions,
532
+ visualFocusIndex: visualFocusIndex,
533
+ highlightedSuggestions: typeof suggestions !== "function",
534
+ searchHasErrors: isAutosuggestError,
535
+ isSearching: isSearching,
536
+ suggestionOnClick: function suggestionOnClick(suggestion) {
537
+ changeValue(suggestion);
538
+ closeSuggestions();
539
+ },
540
+ getTextInputWidth: getTextInputWidth
541
+ }))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
610
542
  id: errorId,
611
543
  backgroundType: backgroundType,
612
544
  "aria-live": error ? "assertive" : "off"
613
545
  }, error)));
614
546
  });
615
547
 
616
- var sizes = {
617
- small: "240px",
618
- medium: "360px",
619
- large: "480px",
620
- fillParent: "100%"
621
- };
622
-
623
- var calculateWidth = function calculateWidth(margin, size) {
624
- return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
625
- };
626
-
627
548
  var TextInputContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
628
549
  return calculateWidth(props.margin, props.size);
629
550
  }, function (props) {
@@ -738,33 +659,5 @@ var Error = _styledComponents["default"].span(_templateObject12 || (_templateObj
738
659
  return props.theme.fontFamily;
739
660
  });
740
661
 
741
- var Suggestions = _styledComponents["default"].ul(_templateObject13 || (_templateObject13 = (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 ", ";\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) {
742
- return props.error ? props.theme.errorListDialogBackgroundColor : props.theme.listDialogBackgroundColor;
743
- }, function (props) {
744
- return props.error ? props.theme.errorListDialogBorderColor : props.theme.listDialogBorderColor;
745
- }, function (props) {
746
- return props.theme.listOptionFontColor;
747
- }, function (props) {
748
- return props.theme.fontFamily;
749
- }, function (props) {
750
- return props.theme.listOptionFontSize;
751
- }, function (props) {
752
- return props.theme.listOptionFontStyle;
753
- }, function (props) {
754
- return props.theme.listOptionFontWeight;
755
- });
756
-
757
- var SuggestionsSystemMessage = _styledComponents["default"].span(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 1rem;\n color: ", ";\n line-height: 1.715em;\n"])), function (props) {
758
- return props.theme.systemMessageFontColor;
759
- });
760
-
761
- var SuggestionsErrorIcon = _styledComponents["default"].span(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n margin-right: 0.5rem;\n height: 18px;\n width: 18px;\n color: ", ";\n"])), function (props) {
762
- return props.backgroundType === "dark" ? props.theme.errorIconColorOnDark : props.theme.errorIconColor;
763
- });
764
-
765
- var SuggestionsError = _styledComponents["default"].span(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 1rem;\n align-items: center;\n line-height: 1.715em;\n color: ", ";\n"])), function (props) {
766
- return props.theme.errorListDialogFontColor;
767
- });
768
-
769
662
  var _default = DxcTextInput;
770
663
  exports["default"] = _default;