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

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 (145) 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 +3 -3
  5. package/accordion-group/AccordionGroup.d.ts +1 -1
  6. package/accordion-group/AccordionGroup.js +13 -15
  7. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  8. package/accordion-group/AccordionGroup.test.js +24 -6
  9. package/accordion-group/types.d.ts +4 -0
  10. package/alert/Alert.js +4 -1
  11. package/badge/Badge.d.ts +1 -1
  12. package/badge/Badge.js +5 -3
  13. package/badge/types.d.ts +1 -0
  14. package/bleed/Bleed.js +1 -34
  15. package/bleed/Bleed.stories.tsx +31 -32
  16. package/bleed/types.d.ts +1 -1
  17. package/box/Box.js +22 -32
  18. package/bulleted-list/BulletedList.d.ts +7 -0
  19. package/bulleted-list/BulletedList.js +120 -0
  20. package/bulleted-list/BulletedList.stories.tsx +203 -0
  21. package/bulleted-list/types.d.ts +11 -0
  22. package/{list → bulleted-list}/types.js +0 -0
  23. package/button/Button.js +14 -11
  24. package/card/Card.js +24 -27
  25. package/checkbox/Checkbox.d.ts +1 -1
  26. package/checkbox/Checkbox.js +38 -28
  27. package/checkbox/Checkbox.stories.tsx +124 -128
  28. package/checkbox/types.d.ts +3 -3
  29. package/common/variables.js +197 -84
  30. package/date-input/DateInput.js +38 -20
  31. package/date-input/DateInput.test.js +9 -22
  32. package/date-input/types.d.ts +12 -9
  33. package/dialog/Dialog.js +4 -32
  34. package/dropdown/Dropdown.js +13 -17
  35. package/file-input/FileInput.js +9 -6
  36. package/file-input/FileItem.js +7 -5
  37. package/footer/Footer.js +15 -88
  38. package/header/Header.js +27 -48
  39. package/header/Header.stories.tsx +46 -36
  40. package/header/Header.test.js +18 -2
  41. package/inset/Inset.js +1 -34
  42. package/inset/Inset.stories.tsx +32 -32
  43. package/inset/types.d.ts +25 -1
  44. package/layout/ApplicationLayout.d.ts +4 -3
  45. package/layout/ApplicationLayout.js +82 -114
  46. package/layout/ApplicationLayout.stories.tsx +14 -59
  47. package/layout/Icons.d.ts +5 -0
  48. package/layout/Icons.js +13 -2
  49. package/layout/SidenavContext.d.ts +5 -0
  50. package/layout/SidenavContext.js +19 -0
  51. package/layout/types.d.ts +5 -10
  52. package/link/Link.d.ts +3 -2
  53. package/link/Link.js +57 -74
  54. package/link/Link.stories.tsx +87 -52
  55. package/link/Link.test.js +7 -15
  56. package/link/types.d.ts +7 -23
  57. package/main.d.ts +6 -5
  58. package/main.js +37 -23
  59. package/number-input/NumberInput.test.js +2 -4
  60. package/number-input/types.d.ts +13 -10
  61. package/package.json +6 -5
  62. package/paginator/Paginator.js +17 -38
  63. package/paragraph/Paragraph.d.ts +6 -0
  64. package/paragraph/Paragraph.js +38 -0
  65. package/paragraph/Paragraph.stories.tsx +44 -0
  66. package/password-input/PasswordInput.js +7 -4
  67. package/password-input/PasswordInput.test.js +3 -6
  68. package/password-input/types.d.ts +14 -11
  69. package/progress-bar/ProgressBar.js +1 -1
  70. package/progress-bar/ProgressBar.stories.jsx +11 -11
  71. package/quick-nav/QuickNav.js +75 -23
  72. package/quick-nav/QuickNav.stories.tsx +13 -13
  73. package/quick-nav/types.d.ts +4 -8
  74. package/radio-group/Radio.js +1 -1
  75. package/radio-group/RadioGroup.js +8 -6
  76. package/select/Listbox.d.ts +4 -0
  77. package/select/Listbox.js +152 -0
  78. package/select/Option.js +1 -1
  79. package/select/Select.js +66 -161
  80. package/select/Select.stories.tsx +14 -2
  81. package/select/Select.test.js +335 -231
  82. package/select/types.d.ts +33 -11
  83. package/sidenav/Sidenav.d.ts +1 -1
  84. package/sidenav/Sidenav.js +20 -9
  85. package/slider/Slider.d.ts +1 -1
  86. package/slider/Slider.js +2 -1
  87. package/slider/Slider.stories.tsx +8 -8
  88. package/slider/Slider.test.js +31 -10
  89. package/slider/types.d.ts +4 -0
  90. package/spinner/Spinner.js +1 -1
  91. package/switch/Switch.d.ts +1 -1
  92. package/switch/Switch.js +19 -16
  93. package/switch/Switch.stories.tsx +8 -8
  94. package/switch/types.d.ts +2 -2
  95. package/tabs/Tabs.d.ts +1 -1
  96. package/tabs/Tabs.js +9 -11
  97. package/tabs/Tabs.stories.tsx +0 -8
  98. package/tabs/Tabs.test.js +26 -9
  99. package/tabs/types.d.ts +4 -0
  100. package/tabs-nav/NavTabs.d.ts +8 -0
  101. package/tabs-nav/NavTabs.js +125 -0
  102. package/tabs-nav/NavTabs.stories.tsx +170 -0
  103. package/tabs-nav/NavTabs.test.js +82 -0
  104. package/tabs-nav/Tab.d.ts +4 -0
  105. package/tabs-nav/Tab.js +132 -0
  106. package/tabs-nav/types.d.ts +53 -0
  107. package/{radio → tabs-nav}/types.js +0 -0
  108. package/tag/Tag.js +5 -8
  109. package/text-input/Suggestion.d.ts +4 -0
  110. package/text-input/Suggestion.js +55 -0
  111. package/text-input/TextInput.js +48 -76
  112. package/text-input/TextInput.test.js +22 -35
  113. package/text-input/types.d.ts +27 -12
  114. package/textarea/Textarea.js +10 -19
  115. package/textarea/types.d.ts +10 -7
  116. package/toggle-group/ToggleGroup.d.ts +1 -1
  117. package/toggle-group/ToggleGroup.js +5 -4
  118. package/toggle-group/ToggleGroup.stories.tsx +4 -4
  119. package/toggle-group/ToggleGroup.test.js +35 -4
  120. package/toggle-group/types.d.ts +8 -0
  121. package/typography/Typography.d.ts +4 -0
  122. package/typography/Typography.js +131 -0
  123. package/typography/Typography.stories.tsx +175 -0
  124. package/typography/types.d.ts +18 -0
  125. package/typography/types.js +5 -0
  126. package/typography/typographyContextTypes.d.ts +16 -0
  127. package/typography/typographyContextTypes.js +5 -0
  128. package/useTheme.js +2 -2
  129. package/useTranslatedLabels.d.ts +2 -0
  130. package/useTranslatedLabels.js +20 -0
  131. package/wizard/Wizard.js +35 -29
  132. package/ThemeContext.d.ts +0 -10
  133. package/ThemeContext.js +0 -243
  134. package/list/List.d.ts +0 -4
  135. package/list/List.js +0 -47
  136. package/list/List.stories.tsx +0 -95
  137. package/list/types.d.ts +0 -7
  138. package/radio/Radio.d.ts +0 -4
  139. package/radio/Radio.js +0 -174
  140. package/radio/Radio.stories.tsx +0 -192
  141. package/radio/Radio.test.js +0 -71
  142. package/radio/types.d.ts +0 -54
  143. package/text/Text.d.ts +0 -7
  144. package/text/Text.js +0 -30
  145. package/text/Text.stories.tsx +0 -19
package/select/Select.js CHANGED
@@ -23,26 +23,24 @@ 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 _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
37
39
 
38
40
  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
41
 
40
42
  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
43
 
42
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
43
- return "This field is required. Please, enter a value.";
44
- };
45
-
46
44
  var groupsHaveOptions = function groupsHaveOptions(innerOptions) {
47
45
  return innerOptions[0].hasOwnProperty("options") ? innerOptions[0].options ? innerOptions.some(function (groupOption) {
48
46
  return groupOption.options.length > 0;
@@ -57,6 +55,10 @@ var filteredGroupsHaveOptions = function filteredGroupsHaveOptions(filteredOptio
57
55
  }) : true;
58
56
  };
59
57
 
58
+ var canOpenOptions = function canOpenOptions(options, disabled) {
59
+ return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
60
+ };
61
+
60
62
  var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
61
63
  if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
62
64
  if (options[0].options) return options.map(function (optionGroup) {
@@ -132,6 +134,10 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
132
134
  };
133
135
  };
134
136
 
137
+ var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
138
+ return !optional && (multiple ? value.length === 0 : value === "");
139
+ };
140
+
135
141
  var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
136
142
  var _selectedOption$label;
137
143
 
@@ -193,6 +199,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
193
199
  var selectSearchInputRef = (0, _react.useRef)(null);
194
200
  var selectOptionsListRef = (0, _react.useRef)(null);
195
201
  var colorsTheme = (0, _useTheme["default"])();
202
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
196
203
  var optionalItem = {
197
204
  label: placeholder,
198
205
  value: ""
@@ -202,7 +209,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
202
209
  }, [options, searchValue]);
203
210
  var lastOptionIndex = (0, _react.useMemo)(function () {
204
211
  return getLastOptionIndex(options, filteredOptions, searchable, optional, multiple);
205
- }, [options, filteredOptions, searchable, optional, multiple, filteredOptions]);
212
+ }, [options, filteredOptions, searchable, optional, multiple]);
206
213
 
207
214
  var _useMemo = (0, _react.useMemo)(function () {
208
215
  return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
@@ -210,20 +217,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
210
217
  selectedOption = _useMemo.selectedOption,
211
218
  singleSelectionIndex = _useMemo.singleSelectionIndex;
212
219
 
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
220
  var openOptions = function openOptions() {
226
- if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
221
+ if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
227
222
  };
228
223
 
229
224
  var closeOptions = function closeOptions() {
@@ -234,36 +229,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
234
229
  };
235
230
 
236
231
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
237
- if (multiple) {
238
- var _res, _res2;
232
+ var newValue;
239
233
 
240
- var res;
241
- if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) value ? res = value.filter(function (optionVal) {
234
+ if (multiple) {
235
+ if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
242
236
  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
- }
237
+ });else newValue = [].concat((0, _toConsumableArray2["default"])(value !== null && value !== void 0 ? value : innerValue), [newOption.value]);
238
+ } else newValue = newOption.value;
239
+
240
+ value !== null && value !== void 0 ? value : setInnerValue(newValue);
241
+ notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
242
+ value: newValue,
243
+ error: translatedLabels.formFields.requiredValueErrorMessage
244
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
245
+ value: newValue
246
+ });
267
247
  };
268
248
 
269
249
  var handleSelectOnClick = function handleSelectOnClick() {
@@ -284,12 +264,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
284
264
  if (!event.currentTarget.contains(event.relatedTarget)) {
285
265
  closeOptions();
286
266
  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
267
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
268
+ notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
269
+ value: currentValue,
270
+ error: translatedLabels.formFields.requiredValueErrorMessage
271
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
272
+ value: currentValue
293
273
  });
294
274
  }
295
275
  };
@@ -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
 
@@ -397,46 +379,6 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
397
379
  inline: "start"
398
380
  });
399
381
  }, [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
- };
439
-
440
382
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
441
383
  theme: colorsTheme.select
442
384
  }, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
@@ -450,7 +392,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
450
392
  selectContainerRef.current.focus();
451
393
  },
452
394
  helperText: helperText
453
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
395
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
454
396
  disabled: disabled
455
397
  }, helperText), /*#__PURE__*/_react["default"].createElement(Select, {
456
398
  id: selectId,
@@ -482,8 +424,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
482
424
  },
483
425
  onClick: handleClearOptionsActionOnClick,
484
426
  tabIndex: -1,
485
- title: "Clear selection",
486
- "aria-label": "Clear selection"
427
+ title: translatedLabels.select.actionClearSelectionTitle,
428
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
487
429
  }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
488
430
  name: name,
489
431
  value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
@@ -496,48 +438,39 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
496
438
  ref: selectSearchInputRef,
497
439
  autoComplete: "nope",
498
440
  autoCorrect: "nope",
499
- size: "1"
441
+ size: 1
500
442
  }), (!searchable || searchValue === "") && (multiple ? /*#__PURE__*/_react["default"].createElement(SelectedOption, {
501
443
  disabled: disabled,
502
444
  atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
503
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, selectedOption.map(function (option) {
445
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, selectedOption.map(function (option) {
504
446
  return option.label;
505
447
  }).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
506
448
  disabled: disabled,
507
449
  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, {
450
+ }, /*#__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
451
  onMouseDown: function onMouseDown(event) {
510
452
  // Avoid input to lose focus
511
453
  event.preventDefault();
512
454
  },
513
455
  onClick: handleClearSearchActionOnClick,
514
456
  tabIndex: -1,
515
- title: "Clear search",
516
- "aria-label": "Clear search"
457
+ title: translatedLabels.select.actionClearSearchTitle,
458
+ "aria-label": translatedLabels.select.actionClearSearchTitle
517
459
  }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
518
460
  disabled: disabled
519
- }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(OptionsList, {
461
+ }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
520
462
  id: optionsListId,
521
- onClick: function onClick(event) {
522
- event.stopPropagation();
523
- },
524
- onMouseDown: function onMouseDown(event) {
525
- event.preventDefault();
526
- },
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,
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
+ ref: selectOptionsListRef
473
+ })), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
541
474
  id: errorId,
542
475
  "aria-live": error ? "assertive" : "off"
543
476
  }, error)));
@@ -662,9 +595,11 @@ var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_te
662
595
  return props.theme.valueFontWeight;
663
596
  });
664
597
 
665
- var ValueInput = _styledComponents["default"].input(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
598
+ var SelectedOptionLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
599
+
600
+ var ValueInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
666
601
 
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) {
602
+ 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
603
  return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
669
604
  }, function (props) {
670
605
  return props.theme.fontFamily;
@@ -676,21 +611,21 @@ var SearchInput = _styledComponents["default"].input(_templateObject12 || (_temp
676
611
  return props.theme.valueFontWeight;
677
612
  });
678
613
 
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) {
614
+ 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
615
  return props.theme.errorIconColor;
681
616
  });
682
617
 
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) {
618
+ 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
619
  return props.theme.errorMessageColor;
685
620
  }, function (props) {
686
621
  return props.theme.fontFamily;
687
622
  });
688
623
 
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) {
624
+ 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
625
  return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
691
626
  });
692
627
 
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) {
628
+ 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
629
  return props.theme.fontFamily;
695
630
  }, function (props) {
696
631
  return props.theme.actionBackgroundColor;
@@ -706,35 +641,5 @@ var ClearSearchAction = _styledComponents["default"].button(_templateObject16 ||
706
641
  return props.theme.activeActionIconColor;
707
642
  });
708
643
 
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
644
  var _default = DxcSelect;
740
645
  exports["default"] = _default;
@@ -371,7 +371,13 @@ const SearchableSelect = () => (
371
371
  const SearchableWithValue = () => (
372
372
  <ExampleContainer expanded>
373
373
  <Title title="Searchable select with value" theme="light" level={4} />
374
- <DxcSelect label="Select Label" searchable defaultValue="1" options={single_options} placeholder="Choose an option" />
374
+ <DxcSelect
375
+ label="Select Label"
376
+ searchable
377
+ defaultValue="1"
378
+ options={single_options}
379
+ placeholder="Choose an option"
380
+ />
375
381
  </ExampleContainer>
376
382
  );
377
383
 
@@ -398,7 +404,13 @@ const DefaultGroupedOptionsSelect = () => (
398
404
  const MultipleGroupedOptionsSelect = () => (
399
405
  <ExampleContainer expanded>
400
406
  <Title title="Grouped options multiple select" theme="light" level={4} />
401
- <DxcSelect label="Label" options={group_options} defaultValue={["0", "2"]} multiple placeholder="Choose an option" />
407
+ <DxcSelect
408
+ label="Label"
409
+ options={group_options}
410
+ defaultValue={["0", "2"]}
411
+ multiple
412
+ placeholder="Choose an option"
413
+ />
402
414
  </ExampleContainer>
403
415
  );
404
416
  const RescaledIcons = () => (