@dxc-technology/halstack-react 0.0.0-d30020b → 0.0.0-d3ac293

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 (290) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1336 -0
  4. package/HalstackContext.js +335 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +118 -126
  7. package/accordion/Accordion.stories.tsx +115 -27
  8. package/accordion/Accordion.test.js +71 -0
  9. package/accordion/types.d.ts +9 -4
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +17 -38
  12. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  13. package/accordion-group/AccordionGroup.test.js +126 -0
  14. package/accordion-group/types.d.ts +14 -3
  15. package/alert/Alert.js +7 -4
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +92 -0
  18. package/badge/Badge.d.ts +4 -0
  19. package/badge/Badge.js +5 -3
  20. package/badge/types.d.ts +5 -0
  21. package/bleed/Bleed.js +1 -34
  22. package/bleed/Bleed.stories.tsx +94 -95
  23. package/bleed/types.d.ts +25 -1
  24. package/box/Box.js +25 -37
  25. package/box/Box.stories.tsx +15 -0
  26. package/box/Box.test.js +18 -0
  27. package/box/types.d.ts +1 -0
  28. package/bulleted-list/BulletedList.d.ts +7 -0
  29. package/bulleted-list/BulletedList.js +123 -0
  30. package/bulleted-list/BulletedList.stories.tsx +200 -0
  31. package/bulleted-list/types.d.ts +11 -0
  32. package/button/Button.js +52 -69
  33. package/button/Button.stories.tsx +159 -8
  34. package/button/Button.test.js +35 -0
  35. package/button/types.d.ts +7 -7
  36. package/card/Card.js +25 -28
  37. package/card/Card.test.js +50 -0
  38. package/card/types.d.ts +1 -0
  39. package/checkbox/Checkbox.d.ts +2 -2
  40. package/checkbox/Checkbox.js +107 -110
  41. package/checkbox/Checkbox.stories.tsx +198 -130
  42. package/checkbox/Checkbox.test.js +155 -0
  43. package/checkbox/types.d.ts +13 -5
  44. package/chip/Chip.js +18 -24
  45. package/chip/Chip.stories.tsx +96 -9
  46. package/chip/Chip.test.js +54 -0
  47. package/chip/types.d.ts +1 -1
  48. package/common/utils.d.ts +1 -0
  49. package/common/utils.js +4 -4
  50. package/common/variables.d.ts +1625 -0
  51. package/common/variables.js +476 -583
  52. package/date-input/Calendar.d.ts +4 -0
  53. package/date-input/Calendar.js +258 -0
  54. package/date-input/DateInput.js +169 -258
  55. package/date-input/DateInput.stories.tsx +199 -33
  56. package/date-input/DateInput.test.js +835 -0
  57. package/date-input/DatePicker.d.ts +4 -0
  58. package/date-input/DatePicker.js +146 -0
  59. package/date-input/Icons.d.ts +6 -0
  60. package/date-input/Icons.js +75 -0
  61. package/date-input/YearPicker.d.ts +4 -0
  62. package/date-input/YearPicker.js +126 -0
  63. package/date-input/types.d.ts +67 -9
  64. package/dialog/Dialog.js +76 -93
  65. package/dialog/Dialog.stories.tsx +230 -123
  66. package/dialog/Dialog.test.js +369 -0
  67. package/dialog/types.d.ts +3 -2
  68. package/dropdown/Dropdown.d.ts +1 -1
  69. package/dropdown/Dropdown.js +246 -253
  70. package/dropdown/Dropdown.stories.tsx +245 -56
  71. package/dropdown/Dropdown.test.js +586 -0
  72. package/dropdown/DropdownMenu.d.ts +4 -0
  73. package/dropdown/DropdownMenu.js +70 -0
  74. package/dropdown/DropdownMenuItem.d.ts +4 -0
  75. package/dropdown/DropdownMenuItem.js +81 -0
  76. package/dropdown/types.d.ts +25 -5
  77. package/file-input/FileInput.d.ts +2 -2
  78. package/file-input/FileInput.js +181 -223
  79. package/file-input/FileInput.stories.tsx +122 -11
  80. package/file-input/FileInput.test.js +457 -0
  81. package/file-input/FileItem.d.ts +4 -14
  82. package/file-input/FileItem.js +44 -66
  83. package/file-input/types.d.ts +17 -0
  84. package/flex/Flex.d.ts +4 -0
  85. package/flex/Flex.js +69 -0
  86. package/flex/Flex.stories.tsx +103 -0
  87. package/flex/types.d.ts +32 -0
  88. package/footer/Footer.js +16 -89
  89. package/footer/Footer.stories.tsx +99 -1
  90. package/footer/Footer.test.js +97 -0
  91. package/footer/Icons.js +1 -1
  92. package/footer/types.d.ts +2 -1
  93. package/header/Header.js +108 -129
  94. package/header/Header.stories.tsx +189 -36
  95. package/header/Header.test.js +79 -0
  96. package/header/Icons.js +2 -2
  97. package/header/types.d.ts +3 -2
  98. package/heading/Heading.js +1 -1
  99. package/heading/Heading.test.js +186 -0
  100. package/inset/Inset.js +1 -34
  101. package/inset/Inset.stories.tsx +36 -36
  102. package/inset/types.d.ts +25 -1
  103. package/layout/ApplicationLayout.d.ts +16 -6
  104. package/layout/ApplicationLayout.js +72 -132
  105. package/layout/ApplicationLayout.stories.tsx +84 -93
  106. package/layout/Icons.d.ts +5 -0
  107. package/layout/Icons.js +13 -2
  108. package/layout/SidenavContext.d.ts +5 -0
  109. package/layout/SidenavContext.js +19 -0
  110. package/layout/types.d.ts +18 -33
  111. package/link/Link.d.ts +3 -2
  112. package/link/Link.js +59 -76
  113. package/link/Link.stories.tsx +155 -53
  114. package/link/Link.test.js +81 -0
  115. package/link/types.d.ts +7 -23
  116. package/main.d.ts +10 -15
  117. package/main.js +48 -82
  118. package/nav-tabs/NavTabs.d.ts +8 -0
  119. package/nav-tabs/NavTabs.js +125 -0
  120. package/nav-tabs/NavTabs.stories.tsx +260 -0
  121. package/nav-tabs/NavTabs.test.js +82 -0
  122. package/nav-tabs/Tab.d.ts +4 -0
  123. package/nav-tabs/Tab.js +150 -0
  124. package/nav-tabs/types.d.ts +53 -0
  125. package/number-input/NumberInput.js +11 -18
  126. package/number-input/NumberInput.stories.tsx +5 -5
  127. package/number-input/NumberInput.test.js +542 -0
  128. package/number-input/types.d.ts +17 -10
  129. package/package.json +20 -23
  130. package/paginator/Icons.d.ts +5 -0
  131. package/paginator/Icons.js +16 -28
  132. package/paginator/Paginator.js +19 -46
  133. package/paginator/Paginator.stories.tsx +24 -0
  134. package/paginator/Paginator.test.js +305 -0
  135. package/paragraph/Paragraph.d.ts +6 -0
  136. package/paragraph/Paragraph.js +38 -0
  137. package/paragraph/Paragraph.stories.tsx +44 -0
  138. package/password-input/PasswordInput.js +7 -4
  139. package/password-input/PasswordInput.test.js +181 -0
  140. package/password-input/types.d.ts +14 -11
  141. package/progress-bar/ProgressBar.d.ts +2 -2
  142. package/progress-bar/ProgressBar.js +61 -55
  143. package/progress-bar/ProgressBar.stories.jsx +47 -12
  144. package/progress-bar/ProgressBar.test.js +110 -0
  145. package/progress-bar/types.d.ts +3 -4
  146. package/quick-nav/QuickNav.d.ts +4 -0
  147. package/quick-nav/QuickNav.js +117 -0
  148. package/quick-nav/QuickNav.stories.tsx +356 -0
  149. package/quick-nav/types.d.ts +21 -0
  150. package/quick-nav/types.js +5 -0
  151. package/radio-group/Radio.d.ts +1 -1
  152. package/radio-group/Radio.js +53 -37
  153. package/radio-group/RadioGroup.js +67 -57
  154. package/radio-group/RadioGroup.stories.tsx +171 -36
  155. package/radio-group/RadioGroup.test.js +563 -89
  156. package/radio-group/types.d.ts +82 -4
  157. package/resultsetTable/Icons.d.ts +7 -0
  158. package/resultsetTable/Icons.js +51 -0
  159. package/resultsetTable/ResultsetTable.js +49 -108
  160. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  161. package/resultsetTable/ResultsetTable.test.js +325 -0
  162. package/resultsetTable/types.d.ts +2 -2
  163. package/select/Icons.d.ts +10 -0
  164. package/select/Icons.js +93 -0
  165. package/select/Listbox.d.ts +4 -0
  166. package/select/Listbox.js +169 -0
  167. package/select/Option.d.ts +4 -0
  168. package/select/Option.js +97 -0
  169. package/select/Select.js +185 -384
  170. package/select/Select.stories.tsx +600 -201
  171. package/select/Select.test.js +2228 -0
  172. package/select/types.d.ts +53 -13
  173. package/sidenav/Sidenav.d.ts +6 -5
  174. package/sidenav/Sidenav.js +183 -53
  175. package/sidenav/Sidenav.stories.tsx +249 -149
  176. package/sidenav/Sidenav.test.js +44 -0
  177. package/sidenav/types.d.ts +50 -27
  178. package/slider/Slider.d.ts +2 -2
  179. package/slider/Slider.js +124 -98
  180. package/slider/Slider.stories.tsx +72 -9
  181. package/slider/Slider.test.js +250 -0
  182. package/slider/types.d.ts +10 -2
  183. package/spinner/Spinner.js +4 -4
  184. package/spinner/Spinner.stories.jsx +27 -1
  185. package/spinner/Spinner.test.js +64 -0
  186. package/switch/Switch.d.ts +2 -2
  187. package/switch/Switch.js +152 -69
  188. package/switch/Switch.stories.tsx +53 -42
  189. package/switch/Switch.test.js +225 -0
  190. package/switch/types.d.ts +12 -4
  191. package/table/Table.js +3 -3
  192. package/table/Table.stories.jsx +80 -1
  193. package/table/Table.test.js +26 -0
  194. package/tabs/Tab.d.ts +4 -0
  195. package/tabs/Tab.js +133 -0
  196. package/tabs/Tabs.d.ts +1 -1
  197. package/tabs/Tabs.js +363 -109
  198. package/tabs/Tabs.stories.tsx +119 -13
  199. package/tabs/Tabs.test.js +350 -0
  200. package/tabs/types.d.ts +19 -5
  201. package/tag/Tag.js +17 -22
  202. package/tag/Tag.stories.tsx +25 -8
  203. package/tag/Tag.test.js +60 -0
  204. package/tag/types.d.ts +1 -1
  205. package/text-input/Icons.d.ts +8 -0
  206. package/text-input/Icons.js +60 -0
  207. package/text-input/Suggestion.d.ts +4 -0
  208. package/text-input/Suggestion.js +84 -0
  209. package/text-input/Suggestions.d.ts +4 -0
  210. package/text-input/Suggestions.js +134 -0
  211. package/text-input/TextInput.js +224 -345
  212. package/text-input/TextInput.stories.tsx +310 -197
  213. package/text-input/TextInput.test.js +1723 -0
  214. package/text-input/types.d.ts +50 -12
  215. package/textarea/Textarea.js +22 -29
  216. package/textarea/Textarea.stories.jsx +93 -13
  217. package/textarea/Textarea.test.js +437 -0
  218. package/textarea/types.d.ts +18 -11
  219. package/toggle-group/ToggleGroup.d.ts +1 -1
  220. package/toggle-group/ToggleGroup.js +6 -5
  221. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  222. package/toggle-group/ToggleGroup.test.js +156 -0
  223. package/toggle-group/types.d.ts +9 -1
  224. package/typography/Typography.d.ts +4 -0
  225. package/typography/Typography.js +32 -0
  226. package/typography/Typography.stories.tsx +198 -0
  227. package/typography/types.d.ts +18 -0
  228. package/typography/types.js +5 -0
  229. package/useTheme.d.ts +1234 -1
  230. package/useTheme.js +3 -3
  231. package/useTranslatedLabels.d.ts +85 -0
  232. package/useTranslatedLabels.js +20 -0
  233. package/utils/BaseTypography.d.ts +21 -0
  234. package/utils/BaseTypography.js +108 -0
  235. package/utils/FocusLock.d.ts +13 -0
  236. package/utils/FocusLock.js +139 -0
  237. package/wizard/Wizard.d.ts +1 -1
  238. package/wizard/Wizard.js +59 -55
  239. package/wizard/Wizard.stories.tsx +48 -19
  240. package/wizard/Wizard.test.js +141 -0
  241. package/wizard/types.d.ts +10 -5
  242. package/ThemeContext.d.ts +0 -15
  243. package/ThemeContext.js +0 -243
  244. package/V3Select/V3Select.js +0 -455
  245. package/V3Select/index.d.ts +0 -27
  246. package/V3Textarea/V3Textarea.js +0 -260
  247. package/V3Textarea/index.d.ts +0 -27
  248. package/common/RequiredComponent.js +0 -32
  249. package/date/Date.js +0 -373
  250. package/date/index.d.ts +0 -27
  251. package/input-text/Icons.js +0 -22
  252. package/input-text/InputText.js +0 -611
  253. package/input-text/index.d.ts +0 -36
  254. package/list/List.d.ts +0 -4
  255. package/list/List.js +0 -47
  256. package/list/List.stories.tsx +0 -95
  257. package/list/types.d.ts +0 -7
  258. package/radio/Radio.d.ts +0 -4
  259. package/radio/Radio.js +0 -174
  260. package/radio/Radio.stories.tsx +0 -192
  261. package/radio/types.d.ts +0 -54
  262. package/row/Row.d.ts +0 -3
  263. package/row/Row.js +0 -127
  264. package/row/Row.stories.tsx +0 -237
  265. package/row/types.d.ts +0 -10
  266. package/stack/Stack.d.ts +0 -3
  267. package/stack/Stack.js +0 -97
  268. package/stack/Stack.stories.tsx +0 -164
  269. package/stack/types.d.ts +0 -9
  270. package/text/Text.d.ts +0 -7
  271. package/text/Text.js +0 -30
  272. package/text/Text.stories.tsx +0 -19
  273. package/toggle/Toggle.js +0 -186
  274. package/toggle/index.d.ts +0 -21
  275. package/upload/Upload.js +0 -201
  276. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  277. package/upload/buttons-upload/Icons.js +0 -40
  278. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  279. package/upload/dragAndDropArea/Icons.js +0 -39
  280. package/upload/file-upload/FileToUpload.js +0 -115
  281. package/upload/file-upload/Icons.js +0 -66
  282. package/upload/files-upload/FilesToUpload.js +0 -109
  283. package/upload/index.d.ts +0 -15
  284. package/upload/transaction/Icons.js +0 -160
  285. package/upload/transaction/Transaction.js +0 -104
  286. package/upload/transactions/Transactions.js +0 -94
  287. /package/{list → badge}/types.js +0 -0
  288. /package/{radio → bulleted-list}/types.js +0 -0
  289. /package/{row → flex}/types.js +0 -0
  290. /package/{stack → nav-tabs}/types.js +0 -0
package/select/Select.js CHANGED
@@ -23,103 +23,42 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
26
- var _variables = require("../common/variables.js");
26
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
27
+
28
+ var _variables = require("../common/variables");
27
29
 
28
30
  var _uuid = require("uuid");
29
31
 
30
- var _utils = require("../common/utils.js");
32
+ var _utils = require("../common/utils");
33
+
34
+ var _Icons = _interopRequireDefault(require("./Icons"));
35
+
36
+ var _Listbox = _interopRequireDefault(require("./Listbox"));
31
37
 
32
- var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
38
+ var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
33
39
 
34
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28;
40
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
35
41
 
36
42
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
37
43
 
38
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
45
 
40
- var selectIcons = {
41
- error: /*#__PURE__*/_react["default"].createElement("svg", {
42
- role: "img",
43
- xmlns: "http://www.w3.org/2000/svg",
44
- height: "24px",
45
- viewBox: "0 0 24 24",
46
- width: "24px",
47
- fill: "currentColor"
48
- }, /*#__PURE__*/_react["default"].createElement("path", {
49
- d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"
50
- })),
51
- arrowUp: /*#__PURE__*/_react["default"].createElement("svg", {
52
- role: "img",
53
- xmlns: "http://www.w3.org/2000/svg",
54
- height: "24px",
55
- viewBox: "0 0 24 24",
56
- width: "24px",
57
- fill: "currentColor"
58
- }, /*#__PURE__*/_react["default"].createElement("path", {
59
- d: "M0 0h24v24H0V0z",
60
- fill: "none"
61
- }), /*#__PURE__*/_react["default"].createElement("path", {
62
- d: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z"
63
- })),
64
- arrowDown: /*#__PURE__*/_react["default"].createElement("svg", {
65
- role: "img",
66
- xmlns: "http://www.w3.org/2000/svg",
67
- height: "24px",
68
- viewBox: "0 0 24 24",
69
- width: "24px",
70
- fill: "currentColor"
71
- }, /*#__PURE__*/_react["default"].createElement("path", {
72
- d: "M0 0h24v24H0V0z",
73
- fill: "none"
74
- }), /*#__PURE__*/_react["default"].createElement("path", {
75
- d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"
76
- })),
77
- clear: /*#__PURE__*/_react["default"].createElement("svg", {
78
- role: "img",
79
- xmlns: "http://www.w3.org/2000/svg",
80
- width: "24",
81
- height: "24",
82
- viewBox: "0 0 24 24",
83
- fill: "currentColor"
84
- }, /*#__PURE__*/_react["default"].createElement("path", {
85
- d: "M0 0h24v24H0V0z",
86
- fill: "none"
87
- }), /*#__PURE__*/_react["default"].createElement("path", {
88
- d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
89
- })),
90
- selected: /*#__PURE__*/_react["default"].createElement("svg", {
91
- role: "img",
92
- xmlns: "http://www.w3.org/2000/svg",
93
- height: "24px",
94
- viewBox: "0 0 24 24",
95
- width: "24px",
96
- fill: "currentColor"
97
- }, /*#__PURE__*/_react["default"].createElement("path", {
98
- d: "M0 0h24v24H0z",
99
- fill: "none"
100
- }), /*#__PURE__*/_react["default"].createElement("path", {
101
- d: "M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"
102
- })),
103
- searchOff: /*#__PURE__*/_react["default"].createElement("svg", {
104
- role: "img",
105
- xmlns: "http://www.w3.org/2000/svg",
106
- height: "24px",
107
- viewBox: "0 0 24 24",
108
- width: "24px",
109
- fill: "currentColor"
110
- }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("rect", {
111
- fill: "none",
112
- height: "24",
113
- width: "24"
114
- })), /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
115
- d: "M15.5,14h-0.79l-0.28-0.27C15.41,12.59,16,11.11,16,9.5C16,5.91,13.09,3,9.5,3C6.08,3,3.28,5.64,3.03,9h2.02 C5.3,6.75,7.18,5,9.5,5C11.99,5,14,7.01,14,9.5S11.99,14,9.5,14c-0.17,0-0.33-0.03-0.5-0.05v2.02C9.17,15.99,9.33,16,9.5,16 c1.61,0,3.09-0.59,4.23-1.57L14,14.71v0.79l5,4.99L20.49,19L15.5,14z"
116
- }), /*#__PURE__*/_react["default"].createElement("polygon", {
117
- points: "6.47,10.82 4,13.29 1.53,10.82 0.82,11.53 3.29,14 0.82,16.47 1.53,17.18 4,14.71 6.47,17.18 7.18,16.47 4.71,14 7.18,11.53"
118
- }))))
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;
50
+ };
51
+
52
+ var filteredGroupsHaveOptions = function filteredGroupsHaveOptions(filteredOptions) {
53
+ return filteredOptions !== null && filteredOptions !== void 0 && filteredOptions[0].options ? filteredOptions.some(function (groupOption) {
54
+ var _groupOption$options;
55
+
56
+ return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
57
+ }) : true;
119
58
  };
120
59
 
121
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
122
- return "This field is required. Please, enter a value.";
60
+ var canOpenOptions = function canOpenOptions(options, disabled) {
61
+ return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
123
62
  };
124
63
 
125
64
  var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
@@ -151,8 +90,7 @@ var getLastOptionIndex = function getLastOptionIndex(options, filteredOptions, s
151
90
  return optional && !multiple ? last + 1 : last;
152
91
  };
153
92
 
154
- var getSelectedOption = function getSelectedOption(options, multiple, optional, optionalEmptyOption, value, innerValue) {
155
- var val = value !== null && value !== void 0 ? value : innerValue;
93
+ var getSelectedOption = function getSelectedOption(value, options, multiple, optional, optionalItem) {
156
94
  var selectedOption = multiple ? [] : {};
157
95
  var singleSelectionIndex;
158
96
 
@@ -161,21 +99,21 @@ var getSelectedOption = function getSelectedOption(options, multiple, optional,
161
99
  options.forEach(function (option) {
162
100
  if (option.options) {
163
101
  option.options.forEach(function (singleOption) {
164
- if (val.includes(singleOption.value)) selectedOption.push(singleOption);
102
+ if (value.includes(singleOption.value)) selectedOption.push(singleOption);
165
103
  });
166
- } else if (val.includes(option.value)) selectedOption.push(option);
104
+ } else if (value.includes(option.value)) selectedOption.push(option);
167
105
  });
168
106
  }
169
107
  } else {
170
- if (optional && val === "") {
171
- selectedOption = optionalEmptyOption;
108
+ if (optional && value === "") {
109
+ selectedOption = optionalItem;
172
110
  singleSelectionIndex = 0;
173
111
  } else if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
174
112
  var group_index = 0;
175
113
  options.some(function (option, index) {
176
114
  if (option.options) {
177
115
  option.options.some(function (singleOption) {
178
- if (singleOption.value === val) {
116
+ if (singleOption.value === value) {
179
117
  selectedOption = singleOption;
180
118
  singleSelectionIndex = optional ? group_index + 1 : group_index;
181
119
  return true;
@@ -183,7 +121,7 @@ var getSelectedOption = function getSelectedOption(options, multiple, optional,
183
121
 
184
122
  group_index++;
185
123
  });
186
- } else if (option.value === val) {
124
+ } else if (option.value === value) {
187
125
  selectedOption = option;
188
126
  singleSelectionIndex = optional ? index + 1 : index;
189
127
  return true;
@@ -198,12 +136,39 @@ var getSelectedOption = function getSelectedOption(options, multiple, optional,
198
136
  };
199
137
  };
200
138
 
139
+ var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
140
+ return !optional && (multiple ? value.length === 0 : value === "");
141
+ };
142
+
143
+ var useWidth = function useWidth(target) {
144
+ var _useState = (0, _react.useState)(0),
145
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
146
+ width = _useState2[0],
147
+ setWidth = _useState2[1];
148
+
149
+ (0, _react.useEffect)(function () {
150
+ if (target != null) {
151
+ setWidth(target.getBoundingClientRect().width);
152
+ var triggerObserver = new ResizeObserver(function (entries) {
153
+ var rect = entries[0].target.getBoundingClientRect();
154
+ setWidth(rect === null || rect === void 0 ? void 0 : rect.width);
155
+ });
156
+ triggerObserver.observe(target);
157
+ return function () {
158
+ triggerObserver.unobserve(target);
159
+ };
160
+ }
161
+ }, [target]);
162
+ return width;
163
+ };
164
+
201
165
  var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
202
166
  var _selectedOption$label;
203
167
 
204
168
  var label = _ref.label,
205
169
  _ref$name = _ref.name,
206
170
  name = _ref$name === void 0 ? "" : _ref$name,
171
+ defaultValue = _ref.defaultValue,
207
172
  value = _ref.value,
208
173
  options = _ref.options,
209
174
  helperText = _ref.helperText,
@@ -226,38 +191,40 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
226
191
  _ref$tabIndex = _ref.tabIndex,
227
192
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
228
193
 
229
- var _useState = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
230
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
231
- selectId = _useState2[0];
194
+ var _useState3 = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
195
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
196
+ selectId = _useState4[0];
232
197
 
233
198
  var selectLabelId = "label-".concat(selectId);
199
+ var errorId = "error-".concat(selectId);
234
200
  var optionsListId = "".concat(selectId, "-listbox");
235
201
 
236
- var _useState3 = (0, _react.useState)(multiple ? [] : ""),
237
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
238
- innerValue = _useState4[0],
239
- setInnerValue = _useState4[1];
240
-
241
- var _useState5 = (0, _react.useState)(""),
202
+ var _useState5 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
242
203
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
243
- searchValue = _useState6[0],
244
- setSearchValue = _useState6[1];
204
+ innerValue = _useState6[0],
205
+ setInnerValue = _useState6[1];
245
206
 
246
- var _useState7 = (0, _react.useState)(-1),
207
+ var _useState7 = (0, _react.useState)(""),
247
208
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
248
- visualFocusIndex = _useState8[0],
249
- changeVisualFocusIndex = _useState8[1];
209
+ searchValue = _useState8[0],
210
+ setSearchValue = _useState8[1];
250
211
 
251
- var _useState9 = (0, _react.useState)(false),
212
+ var _useState9 = (0, _react.useState)(-1),
252
213
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
253
- isOpen = _useState10[0],
254
- changeIsOpen = _useState10[1];
214
+ visualFocusIndex = _useState10[0],
215
+ changeVisualFocusIndex = _useState10[1];
216
+
217
+ var _useState11 = (0, _react.useState)(false),
218
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
219
+ isOpen = _useState12[0],
220
+ changeIsOpen = _useState12[1];
255
221
 
256
- var selectContainerRef = (0, _react.useRef)(null);
222
+ var selectRef = (0, _react.useRef)(null);
257
223
  var selectSearchInputRef = (0, _react.useRef)(null);
258
- var selectOptionsListRef = (0, _react.useRef)(null);
224
+ var width = useWidth(selectRef.current);
259
225
  var colorsTheme = (0, _useTheme["default"])();
260
- var optionalEmptyOption = {
226
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
227
+ var optionalItem = {
261
228
  label: placeholder,
262
229
  value: ""
263
230
  };
@@ -266,42 +233,16 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
266
233
  }, [options, searchValue]);
267
234
  var lastOptionIndex = (0, _react.useMemo)(function () {
268
235
  return getLastOptionIndex(options, filteredOptions, searchable, optional, multiple);
269
- }, [searchable, optional, multiple, filteredOptions, options]);
236
+ }, [options, filteredOptions, searchable, optional, multiple]);
270
237
 
271
238
  var _useMemo = (0, _react.useMemo)(function () {
272
- return getSelectedOption(options, multiple, optional, optionalEmptyOption, value, innerValue);
273
- }, [options, multiple, optional, value, innerValue]),
239
+ return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
240
+ }, [value, innerValue, options, multiple, optional, optionalItem]),
274
241
  selectedOption = _useMemo.selectedOption,
275
242
  singleSelectionIndex = _useMemo.singleSelectionIndex;
276
243
 
277
- var notOptionalCheck = function notOptionalCheck(value) {
278
- return value === "" && !optional;
279
- };
280
-
281
- var notOptionalMultipleCheck = function notOptionalMultipleCheck() {
282
- return (value !== null && value !== void 0 ? value : innerValue).length === 0 && !optional;
283
- };
284
-
285
- var canBeOpenOptions = function canBeOpenOptions() {
286
- return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions();
287
- };
288
-
289
- var groupsHaveOptions = function groupsHaveOptions() {
290
- return options[0].hasOwnProperty("options") ? options[0].options ? options.some(function (groupOption) {
291
- return groupOption.options.length > 0;
292
- }) : false : true;
293
- };
294
-
295
- var filteredGroupsHaveOptions = function filteredGroupsHaveOptions() {
296
- return filteredOptions !== null && filteredOptions !== void 0 && filteredOptions[0].options ? filteredOptions.some(function (groupOption) {
297
- var _groupOption$options;
298
-
299
- return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
300
- }) : true;
301
- };
302
-
303
244
  var openOptions = function openOptions() {
304
- if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
245
+ if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
305
246
  };
306
247
 
307
248
  var closeOptions = function closeOptions() {
@@ -312,36 +253,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
312
253
  };
313
254
 
314
255
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
315
- if (multiple) {
316
- var _res, _res2;
256
+ var newValue;
317
257
 
318
- var res;
319
- if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) value ? res = value.filter(function (optionVal) {
258
+ if (multiple) {
259
+ if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
320
260
  return optionVal !== newOption.value;
321
- }) : setInnerValue(function (previous) {
322
- return previous.filter(function (optionVal) {
323
- return optionVal !== newOption.value;
324
- });
325
- });else value ? res = [].concat((0, _toConsumableArray2["default"])(value), [newOption.value]) : setInnerValue(function (previous) {
326
- return [].concat((0, _toConsumableArray2["default"])(previous), [newOption.value]);
327
- });
328
- if (notOptionalMultipleCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
329
- value: (_res = res) !== null && _res !== void 0 ? _res : innerValue,
330
- error: getNotOptionalErrorMessage()
331
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
332
- value: (_res2 = res) !== null && _res2 !== void 0 ? _res2 : innerValue,
333
- error: null
334
- });
335
- } else {
336
- value !== null && value !== void 0 ? value : setInnerValue(newOption.value);
337
- if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
338
- value: newOption.value,
339
- error: getNotOptionalErrorMessage()
340
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
341
- value: newOption.value,
342
- error: null
343
- });
344
- }
261
+ });else newValue = [].concat((0, _toConsumableArray2["default"])(value !== null && value !== void 0 ? value : innerValue), [newOption.value]);
262
+ } else newValue = newOption.value;
263
+
264
+ value !== null && value !== void 0 ? value : setInnerValue(newValue);
265
+ notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
266
+ value: newValue,
267
+ error: translatedLabels.formFields.requiredValueErrorMessage
268
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
269
+ value: newValue
270
+ });
345
271
  };
346
272
 
347
273
  var handleSelectOnClick = function handleSelectOnClick() {
@@ -362,20 +288,20 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
362
288
  if (!event.currentTarget.contains(event.relatedTarget)) {
363
289
  closeOptions();
364
290
  setSearchValue("");
365
- if (notOptionalCheck(value !== null && value !== void 0 ? value : innerValue)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
366
- value: value !== null && value !== void 0 ? value : innerValue,
367
- error: getNotOptionalErrorMessage()
368
- });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
369
- value: value !== null && value !== void 0 ? value : innerValue,
370
- error: null
291
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
292
+ notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
293
+ value: currentValue,
294
+ error: translatedLabels.formFields.requiredValueErrorMessage
295
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
296
+ value: currentValue
371
297
  });
372
298
  }
373
299
  };
374
300
 
375
301
  var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
376
- switch (event.keyCode) {
377
- case 40:
378
- // Arrow Down
302
+ switch (event.key) {
303
+ case "Down":
304
+ case "ArrowDown":
379
305
  event.preventDefault();
380
306
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
381
307
  if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
@@ -383,8 +309,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
383
309
  openOptions();
384
310
  break;
385
311
 
386
- case 38:
387
- // Arrow Up
312
+ case "Up":
313
+ case "ArrowUp":
388
314
  event.preventDefault();
389
315
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
390
316
  return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
@@ -392,21 +318,20 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
392
318
  openOptions();
393
319
  break;
394
320
 
395
- case 27:
396
- // Esc
321
+ case "Esc":
322
+ case "Escape":
397
323
  event.preventDefault();
398
324
  closeOptions();
399
325
  setSearchValue("");
400
326
  break;
401
327
 
402
- case 13:
403
- // Enter
328
+ case "Enter":
404
329
  if (isOpen && visualFocusIndex >= 0) {
405
330
  var accLength = optional && !multiple ? 1 : 0;
406
331
 
407
332
  if (searchable) {
408
333
  if (filteredOptions.length > 0) {
409
- if (optional && !multiple && visualFocusIndex === 0 && filteredGroupsHaveOptions()) handleSelectChangeValue(optionalEmptyOption);else filteredOptions[0].options ? filteredGroupsHaveOptions() && filteredOptions.some(function (groupOption) {
334
+ if (optional && !multiple && visualFocusIndex === 0 && filteredGroupsHaveOptions(filteredOptions)) handleSelectChangeValue(optionalItem);else filteredOptions[0].options ? filteredGroupsHaveOptions(filteredOptions) && filteredOptions.some(function (groupOption) {
410
335
  var groupLength = accLength + groupOption.options.length;
411
336
  groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
412
337
  accLength = groupLength;
@@ -414,7 +339,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
414
339
  }) : handleSelectChangeValue(filteredOptions[visualFocusIndex - accLength]);
415
340
  }
416
341
  } else {
417
- if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalEmptyOption);else options[0].options ? options.some(function (groupOption) {
342
+ if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalItem);else options[0].options ? options.some(function (groupOption) {
418
343
  var groupLength = accLength + groupOption.options.length;
419
344
  groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
420
345
  accLength = groupLength;
@@ -439,9 +364,11 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
439
364
  var handleClearOptionsActionOnClick = function handleClearOptionsActionOnClick(event) {
440
365
  event.stopPropagation();
441
366
  value !== null && value !== void 0 ? value : setInnerValue([]);
442
- onChange === null || onChange === void 0 ? void 0 : onChange({
367
+ !optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
443
368
  value: [],
444
- error: getNotOptionalErrorMessage()
369
+ error: translatedLabels.formFields.requiredValueErrorMessage
370
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
371
+ value: []
445
372
  });
446
373
  };
447
374
 
@@ -450,96 +377,11 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
450
377
  setSearchValue("");
451
378
  };
452
379
 
453
- (0, _react.useLayoutEffect)(function () {
454
- if (isOpen && singleSelectionIndex) {
455
- var _listEl$scrollTo;
456
-
457
- var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
458
- var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
459
- listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
460
- top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
461
- });
462
- }
463
- }, [isOpen]);
464
- (0, _react.useLayoutEffect)(function () {
465
- var _selectOptionsListRef, _visualFocusedOptionE;
466
-
467
- var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
468
- visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
469
- block: "nearest",
470
- inline: "start"
471
- });
472
- }, [visualFocusIndex]);
473
-
474
- var Option = function Option(_ref2) {
475
- var option = _ref2.option,
476
- index = _ref2.index,
477
- _ref2$isGroupedOption = _ref2.isGroupedOption,
478
- isGroupedOption = _ref2$isGroupedOption === void 0 ? false : _ref2$isGroupedOption;
479
- var isSelected = multiple ? (value !== null && value !== void 0 ? value : innerValue).includes(option.value) : (value !== null && value !== void 0 ? value : innerValue) === option.value;
480
- var isLastOption = index === lastOptionIndex;
481
- return /*#__PURE__*/_react["default"].createElement(OptionItem, {
482
- id: "option-".concat(index),
483
- onClick: function onClick() {
484
- handleSelectChangeValue(option);
485
- !multiple && closeOptions();
486
- setSearchValue("");
487
- },
488
- visualFocused: visualFocusIndex === index,
489
- selected: isSelected,
490
- role: "option",
491
- "aria-selected": isSelected
492
- }, /*#__PURE__*/_react["default"].createElement(StyledOption, {
493
- visualFocused: visualFocusIndex === index,
494
- selected: isSelected,
495
- last: isLastOption,
496
- grouped: isGroupedOption,
497
- multiple: multiple
498
- }, multiple && /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
499
- tabIndex: -1,
500
- checked: isSelected
501
- }), option.icon && /*#__PURE__*/_react["default"].createElement(OptionIcon, {
502
- grouped: isGroupedOption,
503
- multiple: multiple,
504
- role: !(typeof option.icon === "string") && "img"
505
- }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(OptionIconImg, {
506
- src: option.icon
507
- }) : option.icon), /*#__PURE__*/_react["default"].createElement(OptionContent, {
508
- grouped: isGroupedOption,
509
- hasIcon: option.icon,
510
- multiple: multiple
511
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, selectIcons.selected))));
512
- };
513
-
514
- var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
515
-
516
- var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
517
- if (option.options) {
518
- var groupId = "group-".concat(mapIndex);
519
- return option.options.length > 0 && /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement(GroupList, {
520
- role: "group",
521
- "aria-labelledby": groupId
522
- }, /*#__PURE__*/_react["default"].createElement(GroupLabel, {
523
- role: "presentation",
524
- id: groupId
525
- }, option.label), option.options.map(function (singleOption) {
526
- globalIndex++;
527
- return /*#__PURE__*/_react["default"].createElement(Option, {
528
- option: singleOption,
529
- index: globalIndex,
530
- isGroupedOption: true
531
- });
532
- })));
533
- } else {
534
- globalIndex++;
535
- return /*#__PURE__*/_react["default"].createElement(Option, {
536
- key: "option-".concat(option.value),
537
- option: option,
538
- index: globalIndex
539
- });
540
- }
541
- };
542
-
380
+ var handleOptionOnClick = (0, _react.useCallback)(function (option) {
381
+ handleSelectChangeValue(option);
382
+ !multiple && closeOptions();
383
+ setSearchValue("");
384
+ }, [handleSelectChangeValue, closeOptions, multiple]);
543
385
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
544
386
  theme: colorsTheme.select
545
387
  }, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
@@ -550,12 +392,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
550
392
  id: selectLabelId,
551
393
  disabled: disabled,
552
394
  onClick: function onClick() {
553
- selectContainerRef.current.focus();
395
+ selectRef.current.focus();
554
396
  },
555
397
  helperText: helperText
556
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
398
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
557
399
  disabled: disabled
558
- }, helperText), /*#__PURE__*/_react["default"].createElement(Select, {
400
+ }, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
401
+ open: isOpen
402
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
403
+ asChild: true,
404
+ type: undefined
405
+ }, /*#__PURE__*/_react["default"].createElement(Select, {
559
406
  id: selectId,
560
407
  disabled: disabled,
561
408
  error: error,
@@ -563,16 +410,18 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
563
410
  onClick: handleSelectOnClick,
564
411
  onFocus: handleSelectOnFocus,
565
412
  onKeyDown: handleSelectOnKeyDown,
566
- ref: selectContainerRef,
567
- tabIndex: tabIndex,
413
+ ref: selectRef,
414
+ tabIndex: disabled ? -1 : tabIndex,
568
415
  role: "combobox",
569
416
  "aria-controls": optionsListId,
417
+ "aria-disabled": disabled,
570
418
  "aria-expanded": isOpen,
571
419
  "aria-haspopup": "listbox",
572
- "aria-labelledby": selectLabelId,
420
+ "aria-labelledby": label ? selectLabelId : undefined,
573
421
  "aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
574
- "aria-invalid": error ? "true" : "false",
575
- "aria-required": !optional
422
+ "aria-invalid": error ? true : false,
423
+ "aria-errormessage": error ? errorId : undefined,
424
+ "aria-required": !disabled && !optional
576
425
  }, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
577
426
  disabled: disabled
578
427
  }, selectedOption.length), /*#__PURE__*/_react["default"].createElement(ClearOptionsAction, {
@@ -583,11 +432,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
583
432
  },
584
433
  onClick: handleClearOptionsActionOnClick,
585
434
  tabIndex: -1,
586
- title: "Clear selection",
587
- "aria-label": "Clear selection"
588
- }, selectIcons.clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
435
+ title: translatedLabels.select.actionClearSelectionTitle,
436
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
437
+ }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
589
438
  name: name,
590
- value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(", ") : value !== null && value !== void 0 ? value : innerValue,
439
+ disabled: disabled,
440
+ value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
591
441
  readOnly: true,
592
442
  "aria-hidden": "true"
593
443
  }), searchable && /*#__PURE__*/_react["default"].createElement(SearchInput, {
@@ -595,43 +445,56 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
595
445
  disabled: disabled,
596
446
  onChange: handleSearchIOnChange,
597
447
  ref: selectSearchInputRef,
598
- autoComplete: "off",
599
- autoCorrect: "off",
600
- size: "1"
448
+ autoComplete: "nope",
449
+ autoCorrect: "nope",
450
+ size: 1
601
451
  }), (!searchable || searchValue === "") && (multiple ? /*#__PURE__*/_react["default"].createElement(SelectedOption, {
602
452
  disabled: disabled,
603
453
  atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
604
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, selectedOption.map(function (option) {
454
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, selectedOption.map(function (option) {
605
455
  return option.label;
606
456
  }).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
607
457
  disabled: disabled,
608
458
  atBackground: !(value !== null && value !== void 0 ? value : innerValue) || searchable && isOpen
609
- }, /*#__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, selectIcons.error), searchable && searchValue.length > 0 && /*#__PURE__*/_react["default"].createElement(ClearSearchAction, {
459
+ }, /*#__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, {
610
460
  onMouseDown: function onMouseDown(event) {
611
461
  // Avoid input to lose focus
612
462
  event.preventDefault();
613
463
  },
614
464
  onClick: handleClearSearchActionOnClick,
615
465
  tabIndex: -1,
616
- title: "Clear search",
617
- "aria-label": "Clear search"
618
- }, selectIcons.clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
466
+ title: translatedLabels.select.actionClearSearchTitle,
467
+ "aria-label": translatedLabels.select.actionClearSearchTitle
468
+ }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
619
469
  disabled: disabled
620
- }, isOpen ? selectIcons.arrowUp : selectIcons.arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(OptionsList, {
621
- id: optionsListId,
622
- onClick: function onClick(event) {
623
- event.stopPropagation();
624
- },
625
- onMouseDown: function onMouseDown(event) {
470
+ }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Content, {
471
+ sideOffset: 4,
472
+ onOpenAutoFocus: function onOpenAutoFocus(event) {
473
+ // Avoid select to lose focus when the list is opened
626
474
  event.preventDefault();
627
475
  },
628
- ref: selectOptionsListRef,
629
- role: "listbox",
630
- "aria-multiselectable": multiple
631
- }, searchable && (filteredOptions.length === 0 || !filteredGroupsHaveOptions()) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, selectIcons.searchOff), "No matches found") : optional && !multiple && /*#__PURE__*/_react["default"].createElement(Option, {
632
- option: optionalEmptyOption,
633
- index: 0
634
- }), searchable ? filteredOptions.map(mapOptionFunc) : options.map(mapOptionFunc))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, null, error)));
476
+ onCloseAutoFocus: function onCloseAutoFocus(event) {
477
+ // Avoid select to lose focus when the list is closed
478
+ event.preventDefault();
479
+ }
480
+ }, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
481
+ id: optionsListId,
482
+ currentValue: value !== null && value !== void 0 ? value : innerValue,
483
+ options: searchable ? filteredOptions : options,
484
+ visualFocusIndex: visualFocusIndex,
485
+ lastOptionIndex: lastOptionIndex,
486
+ multiple: multiple,
487
+ optional: optional,
488
+ optionalItem: optionalItem,
489
+ searchable: searchable,
490
+ handleOptionOnClick: handleOptionOnClick,
491
+ styles: {
492
+ width: width
493
+ }
494
+ }))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
495
+ id: errorId,
496
+ "aria-live": error ? "assertive" : "off"
497
+ }, error)));
635
498
  });
636
499
 
637
500
  var sizes = {
@@ -727,9 +590,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
727
590
  return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
728
591
  });
729
592
 
730
- 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) {
731
- return props.theme.fontFamily;
732
- }, function (props) {
593
+ 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) {
733
594
  return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
734
595
  }, function (props) {
735
596
  return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
@@ -753,9 +614,11 @@ var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_te
753
614
  return props.theme.valueFontWeight;
754
615
  });
755
616
 
756
- var ValueInput = _styledComponents["default"].input(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
617
+ var SelectedOptionLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
757
618
 
758
- 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) {
619
+ var ValueInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
620
+
621
+ 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) {
759
622
  return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
760
623
  }, function (props) {
761
624
  return props.theme.fontFamily;
@@ -767,21 +630,21 @@ var SearchInput = _styledComponents["default"].input(_templateObject12 || (_temp
767
630
  return props.theme.valueFontWeight;
768
631
  });
769
632
 
770
- 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) {
633
+ 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) {
771
634
  return props.theme.errorIconColor;
772
635
  });
773
636
 
774
- 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) {
637
+ 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) {
775
638
  return props.theme.errorMessageColor;
776
639
  }, function (props) {
777
640
  return props.theme.fontFamily;
778
641
  });
779
642
 
780
- 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) {
643
+ 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) {
781
644
  return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
782
645
  });
783
646
 
784
- 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) {
647
+ 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) {
785
648
  return props.theme.fontFamily;
786
649
  }, function (props) {
787
650
  return props.theme.actionBackgroundColor;
@@ -797,67 +660,5 @@ var ClearSearchAction = _styledComponents["default"].button(_templateObject16 ||
797
660
  return props.theme.activeActionIconColor;
798
661
  });
799
662
 
800
- 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) {
801
- return props.theme.listDialogBackgroundColor;
802
- }, function (props) {
803
- return props.theme.listDialogBorderColor;
804
- }, function (props) {
805
- return props.theme.listOptionFontColor;
806
- }, function (props) {
807
- return props.theme.fontFamily;
808
- }, function (props) {
809
- return props.theme.listOptionFontSize;
810
- }, function (props) {
811
- return props.theme.listOptionFontStyle;
812
- }, function (props) {
813
- return props.theme.listOptionFontWeight;
814
- });
815
-
816
- 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) {
817
- return props.theme.systemMessageFontColor;
818
- });
819
-
820
- 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"])));
821
-
822
- var GroupList = _styledComponents["default"].ul(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
823
-
824
- 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) {
825
- return props.theme.listGroupLabelFontWeight;
826
- });
827
-
828
- var OptionItem = _styledComponents["default"].li(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0 0.5rem;\n box-shadow: inset 0 0 0 2px transparent;\n ", "\n ", ";\n line-height: 1.715em;\n cursor: pointer;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n"])), function (props) {
829
- return props.visualFocused && "box-shadow: inset 0 0 0 2px ".concat(props.theme.focusListOptionBorderColor, ";");
830
- }, function (props) {
831
- return props.selected && "background-color: ".concat(props.theme.selectedListOptionBackgroundColor);
832
- }, function (props) {
833
- return props.selected ? "background-color: ".concat(props.theme.selectedHoverListOptionBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedHoverListOptionBackgroundColor, ";");
834
- }, function (props) {
835
- return props.selected ? "background-color: ".concat(props.theme.selectedActiveListOptionBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedActiveListOptionBackgroundColor, ";");
836
- });
837
-
838
- var StyledOption = _styledComponents["default"].span(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 0.5rem 0.188rem 0;\n min-height: 24px;\n ", "\n ", ";\n"])), function (props) {
839
- return props.grouped && props.multiple && "padding-left: 16px;";
840
- }, function (props) {
841
- return props.last || props.visualFocused || props.selected ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
842
- });
843
-
844
- var OptionContent = _styledComponents["default"].span(_templateObject24 || (_templateObject24 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n width: 100%;\n overflow: hidden;\n ", "\n"])), function (props) {
845
- return props.grouped && !props.multiple && !props.hasIcon ? "padding-left: 16px;" : "padding-left: 8px;";
846
- });
847
-
848
- var OptionIcon = _styledComponents["default"].span(_templateObject25 || (_templateObject25 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n ", "\n color: ", ";\n"])), function (props) {
849
- return props.grouped && !props.multiple ? "padding-left: 16px;" : "padding-left: 8px;";
850
- }, function (props) {
851
- return props.theme.listOptionIconColor;
852
- });
853
-
854
- var OptionIconImg = _styledComponents["default"].img(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["\n width: 16px;\n height: 16px;\n"])));
855
-
856
- var OptionLabel = _styledComponents["default"].span(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
857
-
858
- var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject28 || (_templateObject28 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 16px;\n width: 16px;\n margin-left: 4px;\n color: ", ";\n"])), function (props) {
859
- return props.theme.selectedListOptionIconColor;
860
- });
861
-
862
663
  var _default = DxcSelect;
863
664
  exports["default"] = _default;