@dxc-technology/halstack-react 0.0.0-bcc5ff3 → 0.0.0-bd364ae

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 (70) hide show
  1. package/HalstackContext.d.ts +4 -2
  2. package/HalstackContext.js +110 -58
  3. package/alert/Alert.js +4 -1
  4. package/badge/Badge.d.ts +1 -1
  5. package/badge/Badge.js +5 -3
  6. package/badge/types.d.ts +1 -0
  7. package/bleed/Bleed.js +1 -34
  8. package/bleed/Bleed.stories.tsx +31 -32
  9. package/bleed/types.d.ts +1 -1
  10. package/box/Box.js +22 -32
  11. package/card/Card.js +34 -36
  12. package/checkbox/Checkbox.js +4 -1
  13. package/common/variables.js +162 -68
  14. package/date-input/DateInput.js +5 -2
  15. package/file-input/FileInput.js +9 -6
  16. package/footer/Footer.js +7 -5
  17. package/header/Header.js +7 -4
  18. package/inset/Inset.js +1 -34
  19. package/inset/Inset.stories.tsx +32 -32
  20. package/inset/types.d.ts +1 -1
  21. package/layout/ApplicationLayout.d.ts +4 -3
  22. package/layout/ApplicationLayout.js +83 -102
  23. package/layout/ApplicationLayout.stories.tsx +14 -59
  24. package/layout/Icons.d.ts +5 -0
  25. package/layout/Icons.js +13 -2
  26. package/layout/SidenavContext.d.ts +5 -0
  27. package/layout/SidenavContext.js +19 -0
  28. package/layout/types.d.ts +5 -10
  29. package/link/Link.d.ts +2 -2
  30. package/link/Link.js +23 -49
  31. package/link/types.d.ts +2 -3
  32. package/main.d.ts +3 -3
  33. package/main.js +14 -8
  34. package/package.json +1 -1
  35. package/paginator/Paginator.js +17 -38
  36. package/password-input/PasswordInput.js +7 -4
  37. package/password-input/PasswordInput.test.js +1 -2
  38. package/progress-bar/ProgressBar.js +1 -1
  39. package/progress-bar/ProgressBar.stories.jsx +11 -11
  40. package/quick-nav/QuickNav.js +65 -17
  41. package/quick-nav/QuickNav.stories.tsx +2 -2
  42. package/quick-nav/types.d.ts +1 -1
  43. package/radio-group/Radio.js +1 -1
  44. package/radio-group/RadioGroup.js +8 -6
  45. package/select/Listbox.js +4 -1
  46. package/select/Select.js +37 -47
  47. package/select/Select.stories.tsx +14 -2
  48. package/select/Select.test.js +257 -194
  49. package/sidenav/Sidenav.d.ts +1 -1
  50. package/sidenav/Sidenav.js +20 -9
  51. package/spinner/Spinner.js +1 -1
  52. package/switch/Switch.js +4 -1
  53. package/tabs-nav/NavTabs.d.ts +8 -0
  54. package/tabs-nav/NavTabs.js +125 -0
  55. package/tabs-nav/NavTabs.stories.tsx +170 -0
  56. package/tabs-nav/NavTabs.test.js +82 -0
  57. package/tabs-nav/Tab.d.ts +4 -0
  58. package/tabs-nav/Tab.js +132 -0
  59. package/tabs-nav/types.d.ts +53 -0
  60. package/{radio → tabs-nav}/types.js +0 -0
  61. package/text-input/TextInput.js +19 -20
  62. package/textarea/Textarea.js +10 -19
  63. package/useTranslatedLabels.d.ts +2 -0
  64. package/useTranslatedLabels.js +20 -0
  65. package/wizard/Wizard.js +27 -25
  66. package/radio/Radio.d.ts +0 -4
  67. package/radio/Radio.js +0 -173
  68. package/radio/Radio.stories.tsx +0 -192
  69. package/radio/Radio.test.js +0 -71
  70. package/radio/types.d.ts +0 -54
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -11,54 +13,100 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
11
13
 
12
14
  var _react = _interopRequireDefault(require("react"));
13
15
 
14
- var _styledComponents = _interopRequireDefault(require("styled-components"));
16
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
15
17
 
16
18
  var _slugify = _interopRequireDefault(require("slugify"));
17
19
 
20
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
21
+
18
22
  var _Heading = _interopRequireDefault(require("../heading/Heading"));
19
23
 
20
24
  var _Stack = _interopRequireDefault(require("../stack/Stack"));
21
25
 
22
26
  var _Inset = _interopRequireDefault(require("../inset/Inset"));
23
27
 
24
- var _List = _interopRequireDefault(require("../list/List"));
25
-
26
28
  var _Text = _interopRequireDefault(require("../text/Text"));
27
29
 
28
- var _templateObject, _templateObject2;
30
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
31
+
32
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
33
+
34
+ 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); }
35
+
36
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
29
37
 
30
38
  var DxcQuickNav = function DxcQuickNav(_ref) {
31
39
  var title = _ref.title,
32
40
  links = _ref.links;
33
- return /*#__PURE__*/_react["default"].createElement(QuickNavContainer, null, /*#__PURE__*/_react["default"].createElement(_Stack["default"], {
34
- gutter: "small"
41
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
42
+ var colorsTheme = (0, _useTheme["default"])();
43
+ return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
44
+ theme: colorsTheme.quickNav
45
+ }, /*#__PURE__*/_react["default"].createElement(QuickNavContainer, null, /*#__PURE__*/_react["default"].createElement(_Stack["default"], {
46
+ gutter: "xsmall"
35
47
  }, /*#__PURE__*/_react["default"].createElement(_Heading["default"], {
36
48
  level: 4,
37
- text: title
38
- }), /*#__PURE__*/_react["default"].createElement(_List["default"], null, links.map(function (link) {
49
+ text: title || translatedLabels.quickNav.contentTitle
50
+ }), /*#__PURE__*/_react["default"].createElement(ListColumn, null, /*#__PURE__*/_react["default"].createElement(_Stack["default"], {
51
+ gutter: "xsmall"
52
+ }, links.map(function (link) {
39
53
  var _link$links;
40
54
 
41
- return /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
42
- space: "xxsmall"
55
+ return /*#__PURE__*/_react["default"].createElement(ListRow, null, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
56
+ space: "0.25rem"
43
57
  }, /*#__PURE__*/_react["default"].createElement(_Text["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
44
58
  href: "#".concat((0, _slugify["default"])(link === null || link === void 0 ? void 0 : link.label, {
45
59
  lower: true
46
60
  }))
47
61
  }, link === null || link === void 0 ? void 0 : link.label), (_link$links = link.links) === null || _link$links === void 0 ? void 0 : _link$links.map(function (sublink) {
48
- return /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
49
- horizontal: "xsmall"
62
+ return /*#__PURE__*/_react["default"].createElement(ListRow, null, /*#__PURE__*/_react["default"].createElement(_Inset["default"], {
63
+ horizontal: "0.5rem"
50
64
  }, /*#__PURE__*/_react["default"].createElement(_Text["default"], null, /*#__PURE__*/_react["default"].createElement(Link, {
51
65
  href: "#".concat((0, _slugify["default"])(sublink === null || sublink === void 0 ? void 0 : sublink.label, {
52
66
  lower: true
53
67
  }))
54
- }, sublink === null || sublink === void 0 ? void 0 : sublink.label)));
55
- })));
56
- }))));
68
+ }, sublink === null || sublink === void 0 ? void 0 : sublink.label))));
69
+ }))));
70
+ }))))));
57
71
  };
58
72
 
59
- var QuickNavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: 5px 15px;\n border-left: 2px solid #bfbfbf;\n li {\n div:first-child {\n display: none;\n }\n }\n"])));
73
+ var QuickNavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n border-left: 2px solid ", ";\n"])), function (props) {
74
+ return props.theme.paddingTop;
75
+ }, function (props) {
76
+ return props.theme.paddingBottom;
77
+ }, function (props) {
78
+ return props.theme.paddingLeft;
79
+ }, function (props) {
80
+ return props.theme.paddingRight;
81
+ }, function (props) {
82
+ return props.theme.dividerBorderColor;
83
+ });
60
84
 
61
- var Link = _styledComponents["default"].a(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: none;\n font-size: 14px;\n color: #666666;\n &:hover {\n color: #ab63cf;\n }\n &:focus {\n border-radius: 2px;\n border-color: #0095ff;\n }\n"])));
85
+ var ListColumn = _styledComponents["default"].ul(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n list-style-type: none;\n margin: 0;\n padding: 0;\n"])));
86
+
87
+ var ListRow = _styledComponents["default"].li(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])([""])));
88
+
89
+ var Link = _styledComponents["default"].a(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: none;\n font-size: ", ";\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n\n &:hover {\n color: ", ";\n }\n &:focus {\n outline-color: ", ";\n outline-style: ", ";\n outline-width: ", ";\n border-radius: ", ";\n }\n"])), function (props) {
90
+ return props.theme.fontSize;
91
+ }, function (props) {
92
+ return props.theme.fontFamily;
93
+ }, function (props) {
94
+ return props.theme.fontStyle;
95
+ }, function (props) {
96
+ return props.theme.fontWeight;
97
+ }, function (props) {
98
+ return props.theme.fontColor;
99
+ }, function (props) {
100
+ return props.theme.hoverFontColor;
101
+ }, function (props) {
102
+ return props.theme.focusBorderColor;
103
+ }, function (props) {
104
+ return props.theme.focusBorderStyle;
105
+ }, function (props) {
106
+ return props.theme.focusBorderThickness;
107
+ }, function (props) {
108
+ return props.theme.focusBorderRadius;
109
+ });
62
110
 
63
111
  var _default = DxcQuickNav;
64
112
  exports["default"] = _default;
@@ -38,13 +38,13 @@ export const Chromatic = () => (
38
38
  <ExampleContainer>
39
39
  <Title title="Default" level={4} />
40
40
  <QuickNavContainer>
41
- <DxcQuickNav title="Sections" links={links}></DxcQuickNav>
41
+ <DxcQuickNav links={links}></DxcQuickNav>
42
42
  </QuickNavContainer>
43
43
  </ExampleContainer>
44
44
  <ExampleContainer pseudoState="pseudo-hover">
45
45
  <Title title="Link hovered" level={4} />
46
46
  <QuickNavContainer>
47
- <DxcQuickNav title="Sections" links={links}></DxcQuickNav>
47
+ <DxcQuickNav links={links}></DxcQuickNav>
48
48
  </QuickNavContainer>
49
49
  </ExampleContainer>
50
50
  <ExampleContainer>
@@ -2,7 +2,7 @@ declare type Props = {
2
2
  /**
3
3
  * Title of the quick nav component.
4
4
  */
5
- title: string;
5
+ title?: string;
6
6
  /**
7
7
  * Links to be shown inside the quick nav component.
8
8
  */
@@ -133,7 +133,7 @@ var Label = _styledComponents["default"].span(_templateObject6 || (_templateObje
133
133
  }, function (props) {
134
134
  return props.theme.radioInputLabelLineHeight;
135
135
  }, function (props) {
136
- return props.disabled && "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;");
136
+ return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;") : "color: ".concat(props.theme.radioInputLabelFontColor);
137
137
  });
138
138
 
139
139
  var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);
@@ -23,6 +23,8 @@ var _uuid = require("uuid");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
26
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
27
+
26
28
  var _Radio = _interopRequireDefault(require("./Radio"));
27
29
 
28
30
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
@@ -47,8 +49,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
47
49
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
48
50
  _ref$optional = _ref.optional,
49
51
  optional = _ref$optional === void 0 ? false : _ref$optional,
50
- _ref$optionalItemLabe = _ref.optionalItemLabel,
51
- optionalItemLabel = _ref$optionalItemLabe === void 0 ? "N/A" : _ref$optionalItemLabe,
52
+ optionalItemLabel = _ref.optionalItemLabel,
52
53
  _ref$readonly = _ref.readonly,
53
54
  readonly = _ref$readonly === void 0 ? false : _ref$readonly,
54
55
  _ref$stacking = _ref.stacking,
@@ -78,8 +79,10 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
78
79
  firstTimeFocus = _useState6[0],
79
80
  setFirstTimeFocus = _useState6[1];
80
81
 
82
+ var colorsTheme = (0, _useTheme["default"])();
83
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
81
84
  var optionalItem = {
82
- label: optionalItemLabel,
85
+ label: optionalItemLabel || translatedLabels.radioGroup.optionalItemLabelDefault,
83
86
  value: "",
84
87
  disabled: disabled
85
88
  };
@@ -92,7 +95,6 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
92
95
  currentFocusIndex = _useState8[0],
93
96
  setCurrentFocusIndex = _useState8[1];
94
97
 
95
- var colorsTheme = (0, _useTheme["default"])();
96
98
  var handleOnChange = (0, _react.useCallback)(function (newValue) {
97
99
  var currentValue = value !== null && value !== void 0 ? value : innerValue;
98
100
 
@@ -109,7 +111,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
109
111
  var currentValue = value !== null && value !== void 0 ? value : innerValue;
110
112
  !optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
111
113
  value: currentValue,
112
- error: "This field is required. Please, choose an option."
114
+ error: translatedLabels.formFields.requiredSelectionErrorMessage
113
115
  }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
114
116
  value: currentValue
115
117
  });
@@ -182,7 +184,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
182
184
  id: radioGroupLabelId,
183
185
  helperText: helperText,
184
186
  disabled: disabled
185
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
187
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
186
188
  disabled: disabled
187
189
  }, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
188
190
  onBlur: handleOnBlur,
package/select/Listbox.js CHANGED
@@ -17,6 +17,8 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
17
 
18
18
  var _useTheme = _interopRequireDefault(require("../useTheme"));
19
19
 
20
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
21
+
20
22
  var _Option = _interopRequireDefault(require("./Option"));
21
23
 
22
24
  var _Icons = _interopRequireDefault(require("./Icons"));
@@ -47,6 +49,7 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
47
49
  searchable = _ref.searchable,
48
50
  handleOptionOnClick = _ref.handleOptionOnClick;
49
51
  var colorsTheme = (0, _useTheme["default"])();
52
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
50
53
  var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
51
54
 
52
55
  var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
@@ -103,7 +106,7 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
103
106
  role: "listbox",
104
107
  "aria-multiselectable": multiple,
105
108
  "aria-orientation": "vertical"
106
- }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__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"], {
109
+ }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), translatedLabels.select.noMatchesErrorMessage) : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
107
110
  key: "option-".concat(optionalItem.value),
108
111
  id: "option-".concat(0),
109
112
  option: optionalItem,
package/select/Select.js CHANGED
@@ -23,6 +23,8 @@ 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");
@@ -39,10 +41,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
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: ""
@@ -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 !optional && value === "";
215
- };
216
-
217
- var notOptionalMultipleCheck = function notOptionalMultipleCheck(value) {
218
- return !optional && value.length === 0;
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,27 +229,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
234
229
  };
235
230
 
236
231
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
232
+ var newValue;
233
+
237
234
  if (multiple) {
238
- var res = [];
239
- if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) res = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
235
+ if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
240
236
  return optionVal !== newOption.value;
241
- });else res = [].concat((0, _toConsumableArray2["default"])(value !== null && value !== void 0 ? value : innerValue), [newOption.value]);
242
- value !== null && value !== void 0 ? value : setInnerValue(res);
243
- if (notOptionalMultipleCheck(res)) onChange === null || onChange === void 0 ? void 0 : onChange({
244
- value: res,
245
- error: getNotOptionalErrorMessage()
246
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
247
- value: res
248
- });
249
- } else {
250
- value !== null && value !== void 0 ? value : setInnerValue(newOption.value);
251
- if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
252
- value: newOption.value,
253
- error: getNotOptionalErrorMessage()
254
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
255
- value: newOption.value
256
- });
257
- }
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
+ });
258
247
  };
259
248
 
260
249
  var handleSelectOnClick = function handleSelectOnClick() {
@@ -275,11 +264,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
275
264
  if (!event.currentTarget.contains(event.relatedTarget)) {
276
265
  closeOptions();
277
266
  setSearchValue("");
278
- if (notOptionalCheck(value !== null && value !== void 0 ? value : innerValue)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
279
- value: value !== null && value !== void 0 ? value : innerValue,
280
- error: getNotOptionalErrorMessage()
281
- });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
282
- value: value !== null && value !== void 0 ? value : innerValue
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
283
273
  });
284
274
  }
285
275
  };
@@ -353,7 +343,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
353
343
  value !== null && value !== void 0 ? value : setInnerValue([]);
354
344
  !optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
355
345
  value: [],
356
- error: getNotOptionalErrorMessage()
346
+ error: translatedLabels.formFields.requiredValueErrorMessage
357
347
  }) : onChange === null || onChange === void 0 ? void 0 : onChange({
358
348
  value: []
359
349
  });
@@ -402,7 +392,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
402
392
  selectContainerRef.current.focus();
403
393
  },
404
394
  helperText: helperText
405
- }, 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, {
406
396
  disabled: disabled
407
397
  }, helperText), /*#__PURE__*/_react["default"].createElement(Select, {
408
398
  id: selectId,
@@ -434,8 +424,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
434
424
  },
435
425
  onClick: handleClearOptionsActionOnClick,
436
426
  tabIndex: -1,
437
- title: "Clear selection",
438
- "aria-label": "Clear selection"
427
+ title: translatedLabels.select.actionClearSelectionTitle,
428
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
439
429
  }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
440
430
  name: name,
441
431
  value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
@@ -464,8 +454,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
464
454
  },
465
455
  onClick: handleClearSearchActionOnClick,
466
456
  tabIndex: -1,
467
- title: "Clear search",
468
- "aria-label": "Clear search"
457
+ title: translatedLabels.select.actionClearSearchTitle,
458
+ "aria-label": translatedLabels.select.actionClearSearchTitle
469
459
  }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
470
460
  disabled: disabled
471
461
  }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(_Listbox["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 = () => (