@dxc-technology/halstack-react 0.0.0-dfd09f9 → 0.0.0-e01c6f9

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 (315) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1235 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +116 -160
  8. package/accordion/Accordion.stories.tsx +103 -127
  9. package/accordion/Accordion.test.js +25 -41
  10. package/accordion/types.d.ts +5 -16
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +31 -98
  13. package/accordion-group/AccordionGroup.stories.tsx +94 -67
  14. package/accordion-group/AccordionGroup.test.js +52 -105
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +11 -16
  18. package/action-icon/ActionIcon.d.ts +4 -0
  19. package/action-icon/ActionIcon.js +43 -0
  20. package/action-icon/types.d.ts +26 -0
  21. package/alert/Alert.js +23 -59
  22. package/alert/Alert.stories.tsx +28 -0
  23. package/alert/Alert.test.js +29 -46
  24. package/alert/types.d.ts +5 -5
  25. package/badge/Badge.d.ts +1 -1
  26. package/badge/Badge.js +8 -19
  27. package/badge/types.d.ts +2 -1
  28. package/bleed/Bleed.js +14 -55
  29. package/bleed/Bleed.stories.tsx +95 -95
  30. package/bleed/types.d.ts +2 -2
  31. package/box/Box.d.ts +1 -1
  32. package/box/Box.js +30 -81
  33. package/box/Box.stories.tsx +38 -51
  34. package/box/Box.test.js +2 -7
  35. package/box/types.d.ts +3 -14
  36. package/bulleted-list/BulletedList.d.ts +7 -0
  37. package/bulleted-list/BulletedList.js +89 -0
  38. package/bulleted-list/BulletedList.stories.tsx +115 -0
  39. package/bulleted-list/types.d.ts +38 -0
  40. package/button/Button.d.ts +1 -1
  41. package/button/Button.js +62 -113
  42. package/button/Button.stories.tsx +160 -90
  43. package/button/Button.test.js +18 -17
  44. package/button/types.d.ts +12 -8
  45. package/card/Card.d.ts +1 -1
  46. package/card/Card.js +58 -102
  47. package/card/Card.stories.tsx +12 -42
  48. package/card/Card.test.js +11 -22
  49. package/card/types.d.ts +6 -11
  50. package/checkbox/Checkbox.d.ts +2 -2
  51. package/checkbox/Checkbox.js +141 -180
  52. package/checkbox/Checkbox.stories.tsx +128 -94
  53. package/checkbox/Checkbox.test.js +160 -39
  54. package/checkbox/types.d.ts +12 -6
  55. package/chip/Chip.js +39 -79
  56. package/chip/Chip.stories.tsx +121 -26
  57. package/chip/Chip.test.js +16 -31
  58. package/chip/types.d.ts +4 -4
  59. package/common/OpenSans.css +68 -80
  60. package/common/coreTokens.d.ts +237 -0
  61. package/common/coreTokens.js +184 -0
  62. package/common/utils.d.ts +1 -0
  63. package/common/utils.js +6 -12
  64. package/common/variables.d.ts +1381 -0
  65. package/common/variables.js +998 -1117
  66. package/container/Container.d.ts +4 -0
  67. package/container/Container.js +194 -0
  68. package/container/Container.stories.tsx +214 -0
  69. package/container/types.d.ts +74 -0
  70. package/date-input/Calendar.d.ts +4 -0
  71. package/date-input/Calendar.js +214 -0
  72. package/date-input/DateInput.js +153 -299
  73. package/date-input/DateInput.stories.tsx +203 -56
  74. package/date-input/DateInput.test.js +700 -371
  75. package/date-input/DatePicker.d.ts +4 -0
  76. package/date-input/DatePicker.js +115 -0
  77. package/date-input/Icons.d.ts +6 -0
  78. package/date-input/Icons.js +58 -0
  79. package/date-input/YearPicker.d.ts +4 -0
  80. package/date-input/YearPicker.js +100 -0
  81. package/date-input/types.d.ts +72 -15
  82. package/dialog/Dialog.d.ts +1 -1
  83. package/dialog/Dialog.js +73 -107
  84. package/dialog/Dialog.stories.tsx +320 -167
  85. package/dialog/Dialog.test.js +287 -20
  86. package/dialog/types.d.ts +18 -25
  87. package/dropdown/Dropdown.d.ts +1 -1
  88. package/dropdown/Dropdown.js +243 -304
  89. package/dropdown/Dropdown.stories.tsx +245 -56
  90. package/dropdown/Dropdown.test.js +575 -165
  91. package/dropdown/DropdownMenu.d.ts +4 -0
  92. package/dropdown/DropdownMenu.js +63 -0
  93. package/dropdown/DropdownMenuItem.d.ts +4 -0
  94. package/dropdown/DropdownMenuItem.js +67 -0
  95. package/dropdown/types.d.ts +32 -14
  96. package/file-input/FileInput.d.ts +2 -2
  97. package/file-input/FileInput.js +246 -357
  98. package/file-input/FileInput.stories.tsx +123 -12
  99. package/file-input/FileInput.test.js +369 -367
  100. package/file-input/FileItem.d.ts +4 -14
  101. package/file-input/FileItem.js +50 -99
  102. package/file-input/types.d.ts +25 -8
  103. package/flex/Flex.d.ts +4 -0
  104. package/flex/Flex.js +57 -0
  105. package/flex/Flex.stories.tsx +112 -0
  106. package/flex/types.d.ts +97 -0
  107. package/footer/Footer.d.ts +1 -1
  108. package/footer/Footer.js +57 -115
  109. package/footer/Footer.stories.tsx +41 -19
  110. package/footer/Footer.test.js +33 -57
  111. package/footer/Icons.d.ts +2 -2
  112. package/footer/Icons.js +3 -8
  113. package/footer/types.d.ts +21 -28
  114. package/grid/Grid.d.ts +7 -0
  115. package/grid/Grid.js +76 -0
  116. package/grid/Grid.stories.tsx +219 -0
  117. package/grid/types.d.ts +115 -0
  118. package/header/Header.d.ts +4 -3
  119. package/header/Header.js +90 -170
  120. package/header/Header.stories.tsx +118 -39
  121. package/header/Header.test.js +13 -26
  122. package/header/Icons.d.ts +2 -2
  123. package/header/Icons.js +4 -9
  124. package/header/types.d.ts +5 -19
  125. package/heading/Heading.js +10 -32
  126. package/heading/Heading.test.js +71 -88
  127. package/heading/types.d.ts +7 -7
  128. package/image/Image.d.ts +4 -0
  129. package/image/Image.js +70 -0
  130. package/image/Image.stories.tsx +127 -0
  131. package/image/types.d.ts +72 -0
  132. package/inset/Inset.js +14 -55
  133. package/inset/Inset.stories.tsx +37 -36
  134. package/inset/types.d.ts +2 -2
  135. package/layout/ApplicationLayout.d.ts +16 -6
  136. package/layout/ApplicationLayout.js +82 -166
  137. package/layout/ApplicationLayout.stories.tsx +85 -94
  138. package/layout/Icons.d.ts +8 -0
  139. package/layout/Icons.js +51 -48
  140. package/layout/SidenavContext.d.ts +5 -0
  141. package/layout/SidenavContext.js +13 -0
  142. package/layout/types.d.ts +19 -35
  143. package/link/Link.d.ts +3 -2
  144. package/link/Link.js +61 -99
  145. package/link/Link.stories.tsx +155 -53
  146. package/link/Link.test.js +25 -53
  147. package/link/types.d.ts +15 -31
  148. package/main.d.ts +11 -12
  149. package/main.js +58 -109
  150. package/nav-tabs/NavTabs.d.ts +8 -0
  151. package/nav-tabs/NavTabs.js +90 -0
  152. package/nav-tabs/NavTabs.stories.tsx +274 -0
  153. package/nav-tabs/NavTabs.test.js +75 -0
  154. package/nav-tabs/Tab.d.ts +4 -0
  155. package/nav-tabs/Tab.js +117 -0
  156. package/nav-tabs/types.d.ts +52 -0
  157. package/nav-tabs/types.js +5 -0
  158. package/number-input/NumberInput.d.ts +7 -0
  159. package/number-input/NumberInput.js +26 -35
  160. package/number-input/NumberInput.stories.tsx +42 -26
  161. package/number-input/NumberInput.test.js +701 -377
  162. package/number-input/types.d.ts +12 -6
  163. package/package.json +44 -46
  164. package/paginator/Icons.d.ts +5 -0
  165. package/paginator/Icons.js +21 -47
  166. package/paginator/Paginator.js +34 -91
  167. package/paginator/Paginator.stories.tsx +24 -0
  168. package/paginator/Paginator.test.js +280 -211
  169. package/paginator/types.d.ts +3 -3
  170. package/paragraph/Paragraph.d.ts +5 -0
  171. package/paragraph/Paragraph.js +22 -0
  172. package/paragraph/Paragraph.stories.tsx +27 -0
  173. package/password-input/Icons.d.ts +6 -0
  174. package/password-input/Icons.js +35 -0
  175. package/password-input/PasswordInput.js +57 -123
  176. package/password-input/PasswordInput.stories.tsx +1 -33
  177. package/password-input/PasswordInput.test.js +160 -143
  178. package/password-input/types.d.ts +9 -8
  179. package/progress-bar/ProgressBar.js +65 -91
  180. package/progress-bar/ProgressBar.stories.tsx +93 -0
  181. package/progress-bar/ProgressBar.test.js +72 -44
  182. package/progress-bar/types.d.ts +3 -3
  183. package/quick-nav/QuickNav.js +71 -41
  184. package/quick-nav/QuickNav.stories.tsx +146 -27
  185. package/quick-nav/types.d.ts +10 -10
  186. package/radio-group/Radio.d.ts +1 -1
  187. package/radio-group/Radio.js +59 -76
  188. package/radio-group/RadioGroup.js +71 -116
  189. package/radio-group/RadioGroup.stories.tsx +132 -18
  190. package/radio-group/RadioGroup.test.js +518 -457
  191. package/radio-group/types.d.ts +10 -10
  192. package/resultset-table/Icons.d.ts +7 -0
  193. package/resultset-table/Icons.js +47 -0
  194. package/resultset-table/ResultsetTable.js +159 -0
  195. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +50 -25
  196. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +117 -118
  197. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  198. package/resultset-table/types.js +5 -0
  199. package/select/Icons.d.ts +7 -7
  200. package/select/Icons.js +1 -5
  201. package/select/Listbox.d.ts +1 -1
  202. package/select/Listbox.js +46 -51
  203. package/select/Option.js +20 -50
  204. package/select/Select.js +168 -242
  205. package/select/Select.stories.tsx +525 -136
  206. package/select/Select.test.js +2009 -1696
  207. package/select/types.d.ts +16 -20
  208. package/sidenav/Icons.d.ts +7 -0
  209. package/sidenav/Icons.js +47 -0
  210. package/sidenav/Sidenav.d.ts +6 -5
  211. package/sidenav/Sidenav.js +131 -71
  212. package/sidenav/Sidenav.stories.tsx +251 -151
  213. package/sidenav/Sidenav.test.js +26 -45
  214. package/sidenav/types.d.ts +52 -26
  215. package/slider/Slider.d.ts +2 -2
  216. package/slider/Slider.js +148 -181
  217. package/slider/Slider.test.js +185 -81
  218. package/slider/types.d.ts +7 -3
  219. package/spinner/Spinner.js +31 -75
  220. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  221. package/spinner/Spinner.test.js +26 -35
  222. package/spinner/types.d.ts +3 -3
  223. package/switch/Switch.d.ts +2 -2
  224. package/switch/Switch.js +143 -121
  225. package/switch/Switch.stories.tsx +41 -64
  226. package/switch/Switch.test.js +138 -56
  227. package/switch/types.d.ts +9 -5
  228. package/table/Table.js +8 -30
  229. package/table/{Table.stories.jsx → Table.stories.tsx} +80 -1
  230. package/table/Table.test.js +3 -8
  231. package/table/types.d.ts +8 -8
  232. package/tabs/Tab.d.ts +4 -0
  233. package/tabs/Tab.js +113 -0
  234. package/tabs/Tabs.js +314 -141
  235. package/tabs/Tabs.stories.tsx +119 -11
  236. package/tabs/Tabs.test.js +223 -69
  237. package/tabs/types.d.ts +28 -18
  238. package/tag/Tag.js +33 -68
  239. package/tag/Tag.stories.tsx +14 -1
  240. package/tag/Tag.test.js +20 -31
  241. package/tag/types.d.ts +7 -7
  242. package/text-input/Icons.d.ts +8 -0
  243. package/text-input/Icons.js +56 -0
  244. package/text-input/Suggestion.d.ts +4 -0
  245. package/text-input/Suggestion.js +67 -0
  246. package/text-input/Suggestions.d.ts +4 -0
  247. package/text-input/Suggestions.js +84 -0
  248. package/text-input/TextInput.js +323 -547
  249. package/text-input/TextInput.stories.tsx +266 -275
  250. package/text-input/TextInput.test.js +1403 -1376
  251. package/text-input/types.d.ts +53 -14
  252. package/textarea/Textarea.js +79 -131
  253. package/textarea/Textarea.stories.tsx +174 -0
  254. package/textarea/Textarea.test.js +152 -183
  255. package/textarea/types.d.ts +10 -6
  256. package/toggle-group/ToggleGroup.d.ts +2 -2
  257. package/toggle-group/ToggleGroup.js +92 -106
  258. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  259. package/toggle-group/ToggleGroup.test.js +69 -88
  260. package/toggle-group/types.d.ts +26 -17
  261. package/typography/Typography.d.ts +4 -0
  262. package/typography/Typography.js +23 -0
  263. package/typography/Typography.stories.tsx +198 -0
  264. package/typography/types.d.ts +18 -0
  265. package/typography/types.js +5 -0
  266. package/useTheme.d.ts +1133 -1
  267. package/useTheme.js +4 -11
  268. package/useTranslatedLabels.d.ts +85 -0
  269. package/useTranslatedLabels.js +14 -0
  270. package/utils/BaseTypography.d.ts +21 -0
  271. package/utils/BaseTypography.js +94 -0
  272. package/utils/FocusLock.d.ts +13 -0
  273. package/utils/FocusLock.js +121 -0
  274. package/wizard/Wizard.js +51 -91
  275. package/wizard/Wizard.stories.tsx +40 -1
  276. package/wizard/Wizard.test.js +54 -81
  277. package/wizard/types.d.ts +7 -7
  278. package/ThemeContext.d.ts +0 -10
  279. package/ThemeContext.js +0 -243
  280. package/card/ice-cream.jpg +0 -0
  281. package/common/RequiredComponent.js +0 -32
  282. package/list/List.d.ts +0 -4
  283. package/list/List.js +0 -47
  284. package/list/List.stories.tsx +0 -95
  285. package/list/types.d.ts +0 -7
  286. package/number-input/NumberInputContext.d.ts +0 -4
  287. package/number-input/NumberInputContext.js +0 -19
  288. package/number-input/numberInputContextTypes.d.ts +0 -19
  289. package/progress-bar/ProgressBar.stories.jsx +0 -58
  290. package/radio/Radio.d.ts +0 -4
  291. package/radio/Radio.js +0 -174
  292. package/radio/Radio.stories.tsx +0 -192
  293. package/radio/Radio.test.js +0 -71
  294. package/radio/types.d.ts +0 -54
  295. package/resultsetTable/ResultsetTable.js +0 -254
  296. package/row/Row.d.ts +0 -3
  297. package/row/Row.js +0 -127
  298. package/row/Row.stories.tsx +0 -237
  299. package/row/types.d.ts +0 -28
  300. package/slider/Slider.stories.tsx +0 -177
  301. package/stack/Stack.d.ts +0 -3
  302. package/stack/Stack.js +0 -97
  303. package/stack/Stack.stories.tsx +0 -164
  304. package/stack/types.d.ts +0 -24
  305. package/text/Text.d.ts +0 -7
  306. package/text/Text.js +0 -30
  307. package/text/Text.stories.tsx +0 -19
  308. package/textarea/Textarea.stories.jsx +0 -157
  309. /package/{list → action-icon}/types.js +0 -0
  310. /package/{radio → bulleted-list}/types.js +0 -0
  311. /package/{resultsetTable → container}/types.js +0 -0
  312. /package/{row → flex}/types.js +0 -0
  313. /package/{stack → grid}/types.js +0 -0
  314. /package/{number-input/numberInputContextTypes.js → image/types.js} +0 -0
  315. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
package/select/Select.js CHANGED
@@ -1,65 +1,46 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
-
18
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
-
20
13
  var _react = _interopRequireWildcard(require("react"));
21
-
22
14
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
-
24
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
-
26
- var _variables = require("../common/variables.js");
27
-
16
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
17
+ var _variables = require("../common/variables");
28
18
  var _uuid = require("uuid");
29
-
30
- var _utils = require("../common/utils.js");
31
-
19
+ var _utils = require("../common/utils");
32
20
  var _Icons = _interopRequireDefault(require("./Icons"));
33
-
34
21
  var _Listbox = _interopRequireDefault(require("./Listbox"));
35
-
22
+ var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
36
23
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
37
-
38
- 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
-
40
- 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
-
42
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
43
- return "This field is required. Please, enter a value.";
24
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
25
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
26
+ var isOptionGroup = function isOptionGroup(option) {
27
+ return "options" in option && option.options != null;
44
28
  };
45
-
46
- var groupsHaveOptions = function groupsHaveOptions(innerOptions) {
47
- return innerOptions[0].hasOwnProperty("options") ? innerOptions[0].options ? innerOptions.some(function (groupOption) {
48
- return groupOption.options.length > 0;
49
- }) : false : true;
29
+ var isArrayOfOptionGroups = function isArrayOfOptionGroups(options) {
30
+ return isOptionGroup(options[0]);
50
31
  };
51
-
52
- var filteredGroupsHaveOptions = function filteredGroupsHaveOptions(filteredOptions) {
53
- return filteredOptions !== null && filteredOptions !== void 0 && filteredOptions[0].options ? filteredOptions.some(function (groupOption) {
32
+ var groupsHaveOptions = function groupsHaveOptions(filteredOptions) {
33
+ return isArrayOfOptionGroups(filteredOptions) ? filteredOptions.some(function (groupOption) {
54
34
  var _groupOption$options;
55
-
56
35
  return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
57
36
  }) : true;
58
37
  };
59
-
38
+ var canOpenOptions = function canOpenOptions(options, disabled) {
39
+ return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
40
+ };
60
41
  var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
61
42
  if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
62
- if (options[0].options) return options.map(function (optionGroup) {
43
+ if (isArrayOfOptionGroups(options)) return options.map(function (optionGroup) {
63
44
  var group = {
64
45
  label: optionGroup.label,
65
46
  options: optionGroup.options.filter(function (option) {
@@ -72,32 +53,24 @@ var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, se
72
53
  });
73
54
  }
74
55
  };
75
-
76
56
  var getLastOptionIndex = function getLastOptionIndex(options, filteredOptions, searchable, optional, multiple) {
77
57
  var last = 0;
78
-
79
58
  var reducer = function reducer(acc, current) {
80
59
  var _current$options;
81
-
82
60
  return acc + ((_current$options = current.options) === null || _current$options === void 0 ? void 0 : _current$options.length);
83
61
  };
84
-
85
- if (searchable && filteredOptions.length > 0) filteredOptions[0].options ? last = filteredOptions.reduce(reducer, 0) - 1 : last = filteredOptions.length - 1;else if ((options === null || options === void 0 ? void 0 : options.length) > 0) options[0].options ? last = options.reduce(reducer, 0) - 1 : last = options.length - 1;
62
+ if (searchable && (filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.length) > 0) isArrayOfOptionGroups(filteredOptions) ? last = filteredOptions.reduce(reducer, 0) - 1 : last = filteredOptions.length - 1;else if ((options === null || options === void 0 ? void 0 : options.length) > 0) isArrayOfOptionGroups(options) ? last = options.reduce(reducer, 0) - 1 : last = options.length - 1;
86
63
  return optional && !multiple ? last + 1 : last;
87
64
  };
88
-
89
65
  var getSelectedOption = function getSelectedOption(value, options, multiple, optional, optionalItem) {
90
66
  var selectedOption = multiple ? [] : {};
91
67
  var singleSelectionIndex;
92
-
93
68
  if (multiple) {
94
69
  if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
95
70
  options.forEach(function (option) {
96
- if (option.options) {
97
- option.options.forEach(function (singleOption) {
98
- if (value.includes(singleOption.value)) selectedOption.push(singleOption);
99
- });
100
- } else if (value.includes(option.value)) selectedOption.push(option);
71
+ if (isOptionGroup(option)) option.options.forEach(function (singleOption) {
72
+ if (value.includes(singleOption.value) && Array.isArray(selectedOption)) selectedOption.push(singleOption);
73
+ });else if (value.includes(option.value) && Array.isArray(selectedOption)) selectedOption.push(option);
101
74
  });
102
75
  }
103
76
  } else {
@@ -107,14 +80,13 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
107
80
  } else if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
108
81
  var group_index = 0;
109
82
  options.some(function (option, index) {
110
- if (option.options) {
83
+ if (isOptionGroup(option)) {
111
84
  option.options.some(function (singleOption) {
112
85
  if (singleOption.value === value) {
113
86
  selectedOption = singleOption;
114
87
  singleSelectionIndex = optional ? group_index + 1 : group_index;
115
88
  return true;
116
89
  }
117
-
118
90
  group_index++;
119
91
  });
120
92
  } else if (option.value === value) {
@@ -125,74 +97,88 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
125
97
  });
126
98
  }
127
99
  }
128
-
129
100
  return {
130
101
  selectedOption: selectedOption,
131
102
  singleSelectionIndex: singleSelectionIndex
132
103
  };
133
104
  };
134
-
105
+ var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
106
+ return !optional && (multiple ? value.length === 0 : value === "");
107
+ };
108
+ var useWidth = function useWidth(target) {
109
+ var _useState = (0, _react.useState)(0),
110
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
111
+ width = _useState2[0],
112
+ setWidth = _useState2[1];
113
+ (0, _react.useEffect)(function () {
114
+ if (target != null) {
115
+ setWidth(target.getBoundingClientRect().width);
116
+ var triggerObserver = new ResizeObserver(function (entries) {
117
+ var rect = entries[0].target.getBoundingClientRect();
118
+ setWidth(rect === null || rect === void 0 ? void 0 : rect.width);
119
+ });
120
+ triggerObserver.observe(target);
121
+ return function () {
122
+ triggerObserver.unobserve(target);
123
+ };
124
+ }
125
+ }, [target]);
126
+ return width;
127
+ };
135
128
  var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
136
- var _selectedOption$label;
137
-
129
+ var _ref4, _selectedOption$label;
138
130
  var label = _ref.label,
139
- _ref$name = _ref.name,
140
- name = _ref$name === void 0 ? "" : _ref$name,
141
- defaultValue = _ref.defaultValue,
142
- value = _ref.value,
143
- options = _ref.options,
144
- helperText = _ref.helperText,
145
- _ref$placeholder = _ref.placeholder,
146
- placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
147
- _ref$disabled = _ref.disabled,
148
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
149
- _ref$optional = _ref.optional,
150
- optional = _ref$optional === void 0 ? false : _ref$optional,
151
- _ref$searchable = _ref.searchable,
152
- searchable = _ref$searchable === void 0 ? false : _ref$searchable,
153
- _ref$multiple = _ref.multiple,
154
- multiple = _ref$multiple === void 0 ? false : _ref$multiple,
155
- onChange = _ref.onChange,
156
- onBlur = _ref.onBlur,
157
- error = _ref.error,
158
- margin = _ref.margin,
159
- _ref$size = _ref.size,
160
- size = _ref$size === void 0 ? "medium" : _ref$size,
161
- _ref$tabIndex = _ref.tabIndex,
162
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
163
-
164
- var _useState = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
165
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
166
- selectId = _useState2[0];
167
-
131
+ _ref$name = _ref.name,
132
+ name = _ref$name === void 0 ? "" : _ref$name,
133
+ defaultValue = _ref.defaultValue,
134
+ value = _ref.value,
135
+ options = _ref.options,
136
+ helperText = _ref.helperText,
137
+ _ref$placeholder = _ref.placeholder,
138
+ placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
139
+ _ref$disabled = _ref.disabled,
140
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
141
+ _ref$optional = _ref.optional,
142
+ optional = _ref$optional === void 0 ? false : _ref$optional,
143
+ _ref$searchable = _ref.searchable,
144
+ searchable = _ref$searchable === void 0 ? false : _ref$searchable,
145
+ _ref$multiple = _ref.multiple,
146
+ multiple = _ref$multiple === void 0 ? false : _ref$multiple,
147
+ onChange = _ref.onChange,
148
+ onBlur = _ref.onBlur,
149
+ error = _ref.error,
150
+ margin = _ref.margin,
151
+ _ref$size = _ref.size,
152
+ size = _ref$size === void 0 ? "medium" : _ref$size,
153
+ _ref$tabIndex = _ref.tabIndex,
154
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
155
+ var _useState3 = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
156
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
157
+ selectId = _useState4[0];
168
158
  var selectLabelId = "label-".concat(selectId);
169
159
  var errorId = "error-".concat(selectId);
170
160
  var optionsListId = "".concat(selectId, "-listbox");
171
-
172
- var _useState3 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
173
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
174
- innerValue = _useState4[0],
175
- setInnerValue = _useState4[1];
176
-
177
- var _useState5 = (0, _react.useState)(""),
178
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
179
- searchValue = _useState6[0],
180
- setSearchValue = _useState6[1];
181
-
182
- var _useState7 = (0, _react.useState)(-1),
183
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
184
- visualFocusIndex = _useState8[0],
185
- changeVisualFocusIndex = _useState8[1];
186
-
187
- var _useState9 = (0, _react.useState)(false),
188
- _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
189
- isOpen = _useState10[0],
190
- changeIsOpen = _useState10[1];
191
-
192
- var selectContainerRef = (0, _react.useRef)(null);
161
+ var _useState5 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
162
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
163
+ innerValue = _useState6[0],
164
+ setInnerValue = _useState6[1];
165
+ var _useState7 = (0, _react.useState)(""),
166
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
167
+ searchValue = _useState8[0],
168
+ setSearchValue = _useState8[1];
169
+ var _useState9 = (0, _react.useState)(-1),
170
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
171
+ visualFocusIndex = _useState10[0],
172
+ changeVisualFocusIndex = _useState10[1];
173
+ var _useState11 = (0, _react.useState)(false),
174
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
175
+ isOpen = _useState12[0],
176
+ changeIsOpen = _useState12[1];
177
+ var selectRef = (0, _react.useRef)(null);
193
178
  var selectSearchInputRef = (0, _react.useRef)(null);
194
- var selectOptionsListRef = (0, _react.useRef)(null);
179
+ var width = useWidth(selectRef.current);
195
180
  var colorsTheme = (0, _useTheme["default"])();
181
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
196
182
  var optionalItem = {
197
183
  label: placeholder,
198
184
  value: ""
@@ -203,122 +189,90 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
203
189
  var lastOptionIndex = (0, _react.useMemo)(function () {
204
190
  return getLastOptionIndex(options, filteredOptions, searchable, optional, multiple);
205
191
  }, [options, filteredOptions, searchable, optional, multiple]);
206
-
207
192
  var _useMemo = (0, _react.useMemo)(function () {
208
- return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
209
- }, [value, innerValue, options, multiple, optional, optionalItem]),
210
- selectedOption = _useMemo.selectedOption,
211
- singleSelectionIndex = _useMemo.singleSelectionIndex;
212
-
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
-
193
+ return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
194
+ }, [value, innerValue, options, multiple, optional, optionalItem]),
195
+ selectedOption = _useMemo.selectedOption,
196
+ singleSelectionIndex = _useMemo.singleSelectionIndex;
225
197
  var openOptions = function openOptions() {
226
- if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
198
+ if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
227
199
  };
228
-
229
200
  var closeOptions = function closeOptions() {
230
201
  if (isOpen) {
231
202
  changeIsOpen(false);
232
203
  changeVisualFocusIndex(-1);
233
204
  }
234
205
  };
235
-
236
206
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
207
+ var newValue;
237
208
  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) {
209
+ var _ref2, _ref3;
210
+ if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = ((_ref2 = value && Array.isArray(value) && value) !== null && _ref2 !== void 0 ? _ref2 : innerValue && Array.isArray(innerValue) && innerValue).filter(function (optionVal) {
240
211
  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
- }
212
+ });else newValue = [].concat((0, _toConsumableArray2["default"])((_ref3 = value && Array.isArray(value) && value) !== null && _ref3 !== void 0 ? _ref3 : innerValue && Array.isArray(innerValue) && innerValue), [newOption.value]);
213
+ } else newValue = newOption.value;
214
+ value !== null && value !== void 0 ? value : setInnerValue(newValue);
215
+ notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
216
+ value: newValue,
217
+ error: translatedLabels.formFields.requiredValueErrorMessage
218
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
219
+ value: newValue
220
+ });
258
221
  };
259
-
260
222
  var handleSelectOnClick = function handleSelectOnClick() {
261
223
  searchable && selectSearchInputRef.current.focus();
262
-
263
224
  if (isOpen) {
264
225
  closeOptions();
265
226
  setSearchValue("");
266
227
  } else openOptions();
267
228
  };
268
-
269
229
  var handleSelectOnFocus = function handleSelectOnFocus(event) {
270
230
  if (!event.currentTarget.contains(event.relatedTarget)) searchable && selectSearchInputRef.current.focus();
271
231
  };
272
-
273
232
  var handleSelectOnBlur = function handleSelectOnBlur(event) {
274
- // focus leaves container (outside, not to childs)
233
+ // focus leaves container (outside, not to a child)
275
234
  if (!event.currentTarget.contains(event.relatedTarget)) {
276
235
  closeOptions();
277
236
  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
237
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
238
+ notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
239
+ value: currentValue,
240
+ error: translatedLabels.formFields.requiredValueErrorMessage
241
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
242
+ value: currentValue
283
243
  });
284
244
  }
285
245
  };
286
-
287
246
  var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
288
- switch (event.keyCode) {
289
- case 40:
290
- // Arrow Down
247
+ switch (event.key) {
248
+ case "Down":
249
+ case "ArrowDown":
291
250
  event.preventDefault();
292
251
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
293
252
  if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
294
253
  });
295
254
  openOptions();
296
255
  break;
297
-
298
- case 38:
299
- // Arrow Up
256
+ case "Up":
257
+ case "ArrowUp":
300
258
  event.preventDefault();
301
259
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
302
260
  return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
303
261
  });
304
262
  openOptions();
305
263
  break;
306
-
307
- case 27:
308
- // Esc
264
+ case "Esc":
265
+ case "Escape":
309
266
  event.preventDefault();
310
267
  closeOptions();
311
268
  setSearchValue("");
312
269
  break;
313
-
314
- case 13:
315
- // Enter
270
+ case "Enter":
316
271
  if (isOpen && visualFocusIndex >= 0) {
317
272
  var accLength = optional && !multiple ? 1 : 0;
318
-
319
273
  if (searchable) {
320
274
  if (filteredOptions.length > 0) {
321
- if (optional && !multiple && visualFocusIndex === 0 && filteredGroupsHaveOptions(filteredOptions)) handleSelectChangeValue(optionalItem);else filteredOptions[0].options ? filteredGroupsHaveOptions(filteredOptions) && filteredOptions.some(function (groupOption) {
275
+ if (optional && !multiple && visualFocusIndex === 0 && groupsHaveOptions(filteredOptions)) handleSelectChangeValue(optionalItem);else isArrayOfOptionGroups(filteredOptions) ? groupsHaveOptions(filteredOptions) && filteredOptions.some(function (groupOption) {
322
276
  var groupLength = accLength + groupOption.options.length;
323
277
  groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
324
278
  accLength = groupLength;
@@ -326,69 +280,43 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
326
280
  }) : handleSelectChangeValue(filteredOptions[visualFocusIndex - accLength]);
327
281
  }
328
282
  } else {
329
- if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalItem);else options[0].options ? options.some(function (groupOption) {
283
+ if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalItem);else isArrayOfOptionGroups(options) ? options.some(function (groupOption) {
330
284
  var groupLength = accLength + groupOption.options.length;
331
285
  groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
332
286
  accLength = groupLength;
333
287
  return groupLength > visualFocusIndex;
334
288
  }) : handleSelectChangeValue(options[visualFocusIndex - accLength]);
335
289
  }
336
-
337
290
  !multiple && closeOptions();
338
291
  setSearchValue("");
339
292
  }
340
-
341
293
  break;
342
294
  }
343
295
  };
344
-
345
296
  var handleSearchIOnChange = function handleSearchIOnChange(event) {
346
297
  setSearchValue(event.target.value);
347
298
  changeVisualFocusIndex(-1);
348
299
  openOptions();
349
300
  };
350
-
351
301
  var handleClearOptionsActionOnClick = function handleClearOptionsActionOnClick(event) {
352
302
  event.stopPropagation();
353
303
  value !== null && value !== void 0 ? value : setInnerValue([]);
354
304
  !optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
355
305
  value: [],
356
- error: getNotOptionalErrorMessage()
306
+ error: translatedLabels.formFields.requiredValueErrorMessage
357
307
  }) : onChange === null || onChange === void 0 ? void 0 : onChange({
358
308
  value: []
359
309
  });
360
310
  };
361
-
362
311
  var handleClearSearchActionOnClick = function handleClearSearchActionOnClick(event) {
363
312
  event.stopPropagation();
364
313
  setSearchValue("");
365
314
  };
366
-
367
315
  var handleOptionOnClick = (0, _react.useCallback)(function (option) {
368
316
  handleSelectChangeValue(option);
369
317
  !multiple && closeOptions();
370
318
  setSearchValue("");
371
319
  }, [handleSelectChangeValue, closeOptions, multiple]);
372
- (0, _react.useLayoutEffect)(function () {
373
- if (isOpen && singleSelectionIndex) {
374
- var _listEl$scrollTo;
375
-
376
- var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
377
- var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
378
- listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
379
- top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
380
- });
381
- }
382
- }, [isOpen]);
383
- (0, _react.useLayoutEffect)(function () {
384
- var _selectOptionsListRef, _visualFocusedOptionE;
385
-
386
- var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
387
- visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
388
- block: "nearest",
389
- inline: "start"
390
- });
391
- }, [visualFocusIndex]);
392
320
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
393
321
  theme: colorsTheme.select
394
322
  }, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
@@ -399,12 +327,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
399
327
  id: selectLabelId,
400
328
  disabled: disabled,
401
329
  onClick: function onClick() {
402
- selectContainerRef.current.focus();
330
+ selectRef.current.focus();
403
331
  },
404
332
  helperText: helperText
405
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
333
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
406
334
  disabled: disabled
407
- }, helperText), /*#__PURE__*/_react["default"].createElement(Select, {
335
+ }, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
336
+ open: isOpen
337
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
338
+ asChild: true,
339
+ type: undefined
340
+ }, /*#__PURE__*/_react["default"].createElement(Select, {
408
341
  id: selectId,
409
342
  disabled: disabled,
410
343
  error: error,
@@ -412,19 +345,19 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
412
345
  onClick: handleSelectOnClick,
413
346
  onFocus: handleSelectOnFocus,
414
347
  onKeyDown: handleSelectOnKeyDown,
415
- ref: selectContainerRef,
416
- tabIndex: tabIndex,
348
+ ref: selectRef,
349
+ tabIndex: disabled ? -1 : tabIndex,
417
350
  role: "combobox",
418
351
  "aria-controls": optionsListId,
419
352
  "aria-disabled": disabled,
420
353
  "aria-expanded": isOpen,
421
354
  "aria-haspopup": "listbox",
422
- "aria-labelledby": selectLabelId,
355
+ "aria-labelledby": label ? selectLabelId : undefined,
423
356
  "aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
424
- "aria-invalid": error ? "true" : "false",
357
+ "aria-invalid": error ? true : false,
425
358
  "aria-errormessage": error ? errorId : undefined,
426
359
  "aria-required": !disabled && !optional
427
- }, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
360
+ }, multiple && Array.isArray(selectedOption) && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
428
361
  disabled: disabled
429
362
  }, selectedOption.length), /*#__PURE__*/_react["default"].createElement(ClearOptionsAction, {
430
363
  disabled: disabled,
@@ -434,11 +367,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
434
367
  },
435
368
  onClick: handleClearOptionsActionOnClick,
436
369
  tabIndex: -1,
437
- title: "Clear selection",
438
- "aria-label": "Clear selection"
370
+ title: translatedLabels.select.actionClearSelectionTitle,
371
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
439
372
  }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
440
373
  name: name,
441
- value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
374
+ disabled: disabled,
375
+ value: multiple ? ((_ref4 = value && Array.isArray(value) && value) !== null && _ref4 !== void 0 ? _ref4 : innerValue && Array.isArray(innerValue) && innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
442
376
  readOnly: true,
443
377
  "aria-hidden": "true"
444
378
  }), searchable && /*#__PURE__*/_react["default"].createElement(SearchInput, {
@@ -452,23 +386,36 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
452
386
  }), (!searchable || searchValue === "") && (multiple ? /*#__PURE__*/_react["default"].createElement(SelectedOption, {
453
387
  disabled: disabled,
454
388
  atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
455
- }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, selectedOption.map(function (option) {
389
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, Array.isArray(selectedOption) && selectedOption.map(function (option) {
456
390
  return option.label;
457
- }).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
391
+ }).join(", ")), Array.isArray(selectedOption) && selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
458
392
  disabled: disabled,
459
393
  atBackground: !(value !== null && value !== void 0 ? value : innerValue) || searchable && isOpen
460
- }, /*#__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, {
394
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, !Array.isArray(selectedOption) ? (_selectedOption$label = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _selectedOption$label !== void 0 ? _selectedOption$label : placeholder : placeholder)))), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, _Icons["default"].error), searchable && searchValue.length > 0 && /*#__PURE__*/_react["default"].createElement(ClearSearchAction, {
461
395
  onMouseDown: function onMouseDown(event) {
462
396
  // Avoid input to lose focus
463
397
  event.preventDefault();
464
398
  },
465
399
  onClick: handleClearSearchActionOnClick,
466
400
  tabIndex: -1,
467
- title: "Clear search",
468
- "aria-label": "Clear search"
401
+ title: translatedLabels.select.actionClearSearchTitle,
402
+ "aria-label": translatedLabels.select.actionClearSearchTitle
469
403
  }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
470
404
  disabled: disabled
471
- }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
405
+ }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Portal, null, /*#__PURE__*/_react["default"].createElement(Popover.Content, {
406
+ sideOffset: 4,
407
+ style: {
408
+ zIndex: "2147483647"
409
+ },
410
+ onOpenAutoFocus: function onOpenAutoFocus(event) {
411
+ // Avoid select to lose focus when the list is opened
412
+ event.preventDefault();
413
+ },
414
+ onCloseAutoFocus: function onCloseAutoFocus(event) {
415
+ // Avoid select to lose focus when the list is closed
416
+ event.preventDefault();
417
+ }
418
+ }, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
472
419
  id: optionsListId,
473
420
  currentValue: value !== null && value !== void 0 ? value : innerValue,
474
421
  options: searchable ? filteredOptions : options,
@@ -479,24 +426,23 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
479
426
  optionalItem: optionalItem,
480
427
  searchable: searchable,
481
428
  handleOptionOnClick: handleOptionOnClick,
482
- ref: selectOptionsListRef
483
- })), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
429
+ styles: {
430
+ width: width
431
+ }
432
+ })))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
484
433
  id: errorId,
485
434
  "aria-live": error ? "assertive" : "off"
486
435
  }, error)));
487
436
  });
488
-
489
437
  var sizes = {
490
438
  small: "240px",
491
439
  medium: "360px",
492
440
  large: "480px",
493
441
  fillParent: "100%"
494
442
  };
495
-
496
443
  var calculateWidth = function calculateWidth(margin, size) {
497
444
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
498
445
  };
499
-
500
446
  var SelectContainer = _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) {
501
447
  return calculateWidth(props.margin, props.size);
502
448
  }, function (props) {
@@ -510,7 +456,6 @@ var SelectContainer = _styledComponents["default"].div(_templateObject || (_temp
510
456
  }, function (props) {
511
457
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
512
458
  });
513
-
514
459
  var Label = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n cursor: default;\n ", "\n"])), function (props) {
515
460
  return props.disabled ? props.theme.disabledColor : props.theme.labelFontColor;
516
461
  }, function (props) {
@@ -526,11 +471,9 @@ var Label = _styledComponents["default"].span(_templateObject2 || (_templateObje
526
471
  }, function (props) {
527
472
  return !props.helperText && "margin-bottom: 0.25rem";
528
473
  });
529
-
530
474
  var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
531
475
  return props.theme.optionalLabelFontWeight;
532
476
  });
533
-
534
477
  var HelperText = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-bottom: 0.25rem;\n"])), function (props) {
535
478
  return props.disabled ? props.theme.disabledColor : props.theme.helperTextFontColor;
536
479
  }, function (props) {
@@ -544,7 +487,6 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
544
487
  }, function (props) {
545
488
  return props.theme.helperTextLineHeight;
546
489
  });
547
-
548
490
  var Select = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n position: relative;\n align-items: center;\n height: calc(2.5rem - 2px);\n padding: 0 0.5rem;\n outline: none;\n ", ";\n box-shadow: 0 0 0 2px transparent;\n border-radius: 4px;\n border: 1px solid\n ", ";\n ", "\n ", ";\n\n ", ";\n"])), function (props) {
549
491
  return props.disabled && "background-color: ".concat(props.theme.disabledInputBackgroundColor);
550
492
  }, function (props) {
@@ -556,11 +498,9 @@ var Select = _styledComponents["default"].div(_templateObject5 || (_templateObje
556
498
  }, function (props) {
557
499
  return !props.disabled && "\n &:hover {\n border-color: ".concat(props.error ? "transparent" : props.theme.hoverInputBorderColor, ";\n ").concat(props.error && "box-shadow: 0 0 0 2px ".concat(props.theme.hoverInputErrorBorderColor, ";"), "\n }\n &:focus-within {\n border-color: transparent;\n box-shadow: 0 0 0 2px ").concat(props.theme.focusInputBorderColor, ";\n }\n ");
558
500
  });
559
-
560
501
  var SelectionIndicator = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n border: 1px solid ", ";\n border-radius: 2px;\n max-height: 22px;\n width: 46px;\n"])), function (props) {
561
502
  return props.theme.selectionIndicatorBorderColor;
562
503
  });
563
-
564
504
  var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n user-select: none;\n ", ";\n border-right: 1px solid ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n ", "\n"])), function (props) {
565
505
  return !props.disabled && "background-color: ".concat(props.theme.selectionIndicatorBackgroundColor);
566
506
  }, function (props) {
@@ -578,10 +518,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
578
518
  }, function (props) {
579
519
  return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
580
520
  });
581
-
582
- var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n font-size: 1rem;\n font-family: ", ";\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n svg {\n line-height: 18px;\n }\n"])), function (props) {
583
- return props.theme.fontFamily;
584
- }, function (props) {
521
+ var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n svg {\n line-height: 18px;\n }\n"])), function (props) {
585
522
  return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
586
523
  }, function (props) {
587
524
  return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
@@ -590,9 +527,7 @@ var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 ||
590
527
  }, function (props) {
591
528
  return !props.disabled && "\n &:hover {\n background-color: ".concat(props.theme.hoverSelectionIndicatorActionBackgroundColor, ";\n color: ").concat(props.theme.hoverSelectionIndicatorActionIconColor, ";\n }\n &:active {\n background-color: ").concat(props.theme.activeSelectionIndicatorActionBackgroundColor, ";\n color: ").concat(props.theme.activeSelectionIndicatorActionIconColor, ";\n }\n ");
592
529
  });
593
-
594
530
  var SearchableValueContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n width: 100%;\n"])));
595
-
596
531
  var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n grid-area: 1 / 1 / 1 / 1;\n display: inline-flex;\n align-items: center;\n height: calc(2.5rem - 2px);\n padding: 0 0.5rem;\n user-select: none;\n overflow: hidden;\n\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
597
532
  if (props.disabled) return props.theme.disabledColor;else if (props.atBackground) return props.theme.placeholderFontColor;else return props.theme.valueFontColor;
598
533
  }, function (props) {
@@ -604,11 +539,8 @@ var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_te
604
539
  }, function (props) {
605
540
  return props.theme.valueFontWeight;
606
541
  });
607
-
608
542
  var SelectedOptionLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
609
-
610
543
  var ValueInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
611
-
612
544
  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) {
613
545
  return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
614
546
  }, function (props) {
@@ -620,21 +552,17 @@ var SearchInput = _styledComponents["default"].input(_templateObject13 || (_temp
620
552
  }, function (props) {
621
553
  return props.theme.valueFontWeight;
622
554
  });
623
-
624
555
  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) {
625
556
  return props.theme.errorIconColor;
626
557
  });
627
-
628
558
  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) {
629
559
  return props.theme.errorMessageColor;
630
560
  }, function (props) {
631
561
  return props.theme.fontFamily;
632
562
  });
633
-
634
563
  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) {
635
564
  return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
636
565
  });
637
-
638
566
  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) {
639
567
  return props.theme.fontFamily;
640
568
  }, function (props) {
@@ -650,6 +578,4 @@ var ClearSearchAction = _styledComponents["default"].button(_templateObject17 ||
650
578
  }, function (props) {
651
579
  return props.theme.activeActionIconColor;
652
580
  });
653
-
654
- var _default = DxcSelect;
655
- exports["default"] = _default;
581
+ var _default = exports["default"] = DxcSelect;