@dxc-technology/halstack-react 0.0.0-d3554d7 → 0.0.0-d3624d0

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 (421) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1246 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.accessibility.test.js +71 -0
  7. package/accordion/Accordion.d.ts +1 -1
  8. package/accordion/Accordion.js +105 -181
  9. package/accordion/Accordion.stories.tsx +83 -149
  10. package/accordion/Accordion.test.js +32 -33
  11. package/accordion/types.d.ts +10 -17
  12. package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
  13. package/accordion-group/AccordionGroup.d.ts +3 -3
  14. package/accordion-group/AccordionGroup.js +38 -107
  15. package/accordion-group/AccordionGroup.stories.tsx +95 -68
  16. package/accordion-group/AccordionGroup.test.js +55 -90
  17. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  18. package/accordion-group/AccordionGroupAccordion.js +31 -0
  19. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  20. package/accordion-group/AccordionGroupContext.js +8 -0
  21. package/accordion-group/types.d.ts +16 -17
  22. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  23. package/action-icon/ActionIcon.d.ts +4 -0
  24. package/action-icon/ActionIcon.js +48 -0
  25. package/action-icon/ActionIcon.stories.tsx +41 -0
  26. package/action-icon/ActionIcon.test.js +64 -0
  27. package/action-icon/types.d.ts +26 -0
  28. package/alert/Alert.accessibility.test.js +95 -0
  29. package/alert/Alert.js +40 -127
  30. package/alert/Alert.stories.tsx +28 -0
  31. package/alert/Alert.test.js +29 -46
  32. package/alert/types.d.ts +5 -5
  33. package/badge/Badge.accessibility.test.js +129 -0
  34. package/badge/Badge.d.ts +1 -1
  35. package/badge/Badge.js +142 -40
  36. package/badge/Badge.stories.tsx +210 -0
  37. package/badge/Badge.test.js +30 -0
  38. package/badge/types.d.ts +52 -2
  39. package/bleed/Bleed.js +14 -55
  40. package/bleed/Bleed.stories.tsx +95 -95
  41. package/bleed/types.d.ts +26 -2
  42. package/box/Box.accessibility.test.js +33 -0
  43. package/box/Box.d.ts +1 -1
  44. package/box/Box.js +30 -81
  45. package/box/Box.stories.tsx +38 -51
  46. package/box/Box.test.js +2 -7
  47. package/box/types.d.ts +3 -14
  48. package/breadcrumbs/Breadcrumbs.accessibility.test.d.ts +1 -0
  49. package/breadcrumbs/Breadcrumbs.accessibility.test.js +96 -0
  50. package/breadcrumbs/Breadcrumbs.d.ts +4 -0
  51. package/breadcrumbs/Breadcrumbs.js +79 -0
  52. package/breadcrumbs/Breadcrumbs.stories.tsx +194 -0
  53. package/breadcrumbs/Breadcrumbs.test.d.ts +1 -0
  54. package/breadcrumbs/Breadcrumbs.test.js +169 -0
  55. package/breadcrumbs/Item.d.ts +4 -0
  56. package/breadcrumbs/Item.js +52 -0
  57. package/breadcrumbs/dropdownTheme.d.ts +53 -0
  58. package/breadcrumbs/dropdownTheme.js +62 -0
  59. package/breadcrumbs/types.d.ts +16 -0
  60. package/bulleted-list/BulletedList.accessibility.test.js +119 -0
  61. package/bulleted-list/BulletedList.d.ts +7 -0
  62. package/bulleted-list/BulletedList.js +92 -0
  63. package/bulleted-list/BulletedList.stories.tsx +115 -0
  64. package/bulleted-list/types.d.ts +38 -0
  65. package/button/Button.accessibility.test.js +127 -0
  66. package/button/Button.d.ts +1 -1
  67. package/button/Button.js +63 -113
  68. package/button/Button.stories.tsx +151 -100
  69. package/button/Button.test.js +20 -17
  70. package/button/types.d.ts +12 -8
  71. package/card/Card.accessibility.test.js +36 -0
  72. package/card/Card.d.ts +1 -1
  73. package/card/Card.js +59 -102
  74. package/card/Card.stories.tsx +12 -42
  75. package/card/Card.test.js +11 -22
  76. package/card/types.d.ts +6 -11
  77. package/checkbox/Checkbox.accessibility.test.js +87 -0
  78. package/checkbox/Checkbox.d.ts +2 -2
  79. package/checkbox/Checkbox.js +143 -181
  80. package/checkbox/Checkbox.stories.tsx +166 -136
  81. package/checkbox/Checkbox.test.js +163 -29
  82. package/checkbox/types.d.ts +18 -6
  83. package/chip/Chip.accessibility.test.js +67 -0
  84. package/chip/Chip.js +45 -80
  85. package/chip/Chip.stories.tsx +107 -27
  86. package/chip/Chip.test.js +18 -33
  87. package/chip/types.d.ts +4 -4
  88. package/common/coreTokens.d.ts +237 -0
  89. package/common/coreTokens.js +184 -0
  90. package/common/utils.d.ts +1 -0
  91. package/common/utils.js +6 -12
  92. package/common/variables.d.ts +1392 -0
  93. package/common/variables.js +1081 -1190
  94. package/container/Container.d.ts +4 -0
  95. package/container/Container.js +194 -0
  96. package/container/Container.stories.tsx +214 -0
  97. package/container/types.d.ts +74 -0
  98. package/contextual-menu/ContextualMenu.accessibility.test.js +97 -0
  99. package/contextual-menu/ContextualMenu.d.ts +5 -0
  100. package/contextual-menu/ContextualMenu.js +88 -0
  101. package/contextual-menu/ContextualMenu.stories.tsx +232 -0
  102. package/contextual-menu/ContextualMenu.test.js +205 -0
  103. package/contextual-menu/GroupItem.d.ts +4 -0
  104. package/contextual-menu/GroupItem.js +67 -0
  105. package/contextual-menu/ItemAction.d.ts +4 -0
  106. package/contextual-menu/ItemAction.js +51 -0
  107. package/contextual-menu/MenuItem.d.ts +4 -0
  108. package/contextual-menu/MenuItem.js +29 -0
  109. package/contextual-menu/SingleItem.d.ts +4 -0
  110. package/contextual-menu/SingleItem.js +38 -0
  111. package/contextual-menu/types.d.ts +58 -0
  112. package/date-input/Calendar.d.ts +4 -0
  113. package/date-input/Calendar.js +214 -0
  114. package/date-input/DateInput.accessibility.test.js +228 -0
  115. package/date-input/DateInput.js +170 -306
  116. package/date-input/DateInput.stories.tsx +210 -56
  117. package/date-input/DateInput.test.js +708 -369
  118. package/date-input/DatePicker.d.ts +4 -0
  119. package/date-input/DatePicker.js +121 -0
  120. package/date-input/YearPicker.d.ts +4 -0
  121. package/date-input/YearPicker.js +100 -0
  122. package/date-input/types.d.ts +86 -22
  123. package/dialog/Dialog.accessibility.test.js +69 -0
  124. package/dialog/Dialog.d.ts +1 -1
  125. package/dialog/Dialog.js +56 -129
  126. package/dialog/Dialog.stories.tsx +326 -167
  127. package/dialog/Dialog.test.js +287 -20
  128. package/dialog/types.d.ts +18 -25
  129. package/divider/Divider.accessibility.test.js +33 -0
  130. package/divider/Divider.d.ts +4 -0
  131. package/divider/Divider.js +36 -0
  132. package/divider/Divider.stories.tsx +223 -0
  133. package/divider/Divider.test.js +38 -0
  134. package/divider/types.d.ts +21 -0
  135. package/dropdown/Dropdown.accessibility.test.js +180 -0
  136. package/dropdown/Dropdown.d.ts +1 -1
  137. package/dropdown/Dropdown.js +233 -307
  138. package/dropdown/Dropdown.stories.tsx +235 -57
  139. package/dropdown/Dropdown.test.js +575 -165
  140. package/dropdown/DropdownMenu.d.ts +4 -0
  141. package/dropdown/DropdownMenu.js +63 -0
  142. package/dropdown/DropdownMenuItem.d.ts +4 -0
  143. package/dropdown/DropdownMenuItem.js +71 -0
  144. package/dropdown/types.d.ts +35 -19
  145. package/file-input/FileInput.accessibility.test.js +160 -0
  146. package/file-input/FileInput.d.ts +2 -2
  147. package/file-input/FileInput.js +246 -393
  148. package/file-input/FileInput.stories.tsx +123 -12
  149. package/file-input/FileInput.test.js +292 -367
  150. package/file-input/FileItem.d.ts +4 -14
  151. package/file-input/FileItem.js +61 -120
  152. package/file-input/types.d.ts +25 -8
  153. package/flex/Flex.d.ts +4 -0
  154. package/flex/Flex.js +57 -0
  155. package/flex/Flex.stories.tsx +112 -0
  156. package/flex/types.d.ts +97 -0
  157. package/flex/types.js +5 -0
  158. package/footer/Footer.accessibility.test.js +125 -0
  159. package/footer/Footer.d.ts +1 -1
  160. package/footer/Footer.js +73 -191
  161. package/footer/Footer.stories.tsx +99 -21
  162. package/footer/Footer.test.js +33 -57
  163. package/footer/Icons.d.ts +3 -2
  164. package/footer/Icons.js +54 -23
  165. package/footer/types.d.ts +26 -27
  166. package/grid/Grid.d.ts +7 -0
  167. package/grid/Grid.js +76 -0
  168. package/grid/Grid.stories.tsx +219 -0
  169. package/grid/types.d.ts +115 -0
  170. package/grid/types.js +5 -0
  171. package/header/Header.accessibility.test.js +93 -0
  172. package/header/Header.d.ts +4 -3
  173. package/header/Header.js +104 -218
  174. package/header/Header.stories.tsx +168 -63
  175. package/header/Header.test.js +31 -28
  176. package/header/Icons.d.ts +2 -2
  177. package/header/Icons.js +5 -15
  178. package/header/types.d.ts +7 -21
  179. package/heading/Heading.accessibility.test.js +33 -0
  180. package/heading/Heading.js +10 -32
  181. package/heading/Heading.test.js +71 -88
  182. package/heading/types.d.ts +7 -7
  183. package/icon/Icon.accessibility.test.js +30 -0
  184. package/icon/Icon.d.ts +4 -0
  185. package/icon/Icon.js +33 -0
  186. package/icon/Icon.stories.tsx +28 -0
  187. package/icon/types.d.ts +4 -0
  188. package/icon/types.js +5 -0
  189. package/image/Image.accessibility.test.js +56 -0
  190. package/image/Image.d.ts +4 -0
  191. package/image/Image.js +70 -0
  192. package/image/Image.stories.tsx +129 -0
  193. package/image/types.d.ts +72 -0
  194. package/image/types.js +5 -0
  195. package/inset/Inset.js +14 -55
  196. package/inset/Inset.stories.tsx +37 -36
  197. package/inset/types.d.ts +26 -2
  198. package/layout/ApplicationLayout.d.ts +16 -6
  199. package/layout/ApplicationLayout.js +88 -182
  200. package/layout/ApplicationLayout.stories.tsx +85 -94
  201. package/layout/Icons.d.ts +7 -0
  202. package/layout/Icons.js +41 -48
  203. package/layout/types.d.ts +19 -35
  204. package/link/Link.accessibility.test.js +108 -0
  205. package/link/Link.d.ts +3 -2
  206. package/link/Link.js +65 -101
  207. package/link/Link.stories.tsx +157 -55
  208. package/link/Link.test.js +25 -53
  209. package/link/types.d.ts +15 -31
  210. package/main.d.ts +17 -13
  211. package/main.js +86 -101
  212. package/nav-tabs/NavTabs.accessibility.test.js +44 -0
  213. package/nav-tabs/NavTabs.d.ts +7 -0
  214. package/nav-tabs/NavTabs.js +93 -0
  215. package/nav-tabs/NavTabs.stories.tsx +279 -0
  216. package/nav-tabs/NavTabs.test.js +77 -0
  217. package/nav-tabs/NavTabsContext.d.ts +3 -0
  218. package/nav-tabs/NavTabsContext.js +8 -0
  219. package/nav-tabs/Tab.d.ts +4 -0
  220. package/nav-tabs/Tab.js +117 -0
  221. package/nav-tabs/types.d.ts +52 -0
  222. package/nav-tabs/types.js +5 -0
  223. package/number-input/NumberInput.accessibility.test.js +228 -0
  224. package/number-input/NumberInput.js +47 -44
  225. package/number-input/NumberInput.stories.tsx +44 -28
  226. package/number-input/NumberInput.test.js +862 -381
  227. package/number-input/NumberInputContext.d.ts +3 -4
  228. package/number-input/NumberInputContext.js +3 -14
  229. package/number-input/types.d.ts +34 -15
  230. package/package.json +54 -53
  231. package/paginator/Paginator.accessibility.test.js +79 -0
  232. package/paginator/Paginator.js +46 -100
  233. package/paginator/Paginator.stories.tsx +24 -0
  234. package/paginator/Paginator.test.js +280 -211
  235. package/paginator/types.d.ts +3 -3
  236. package/paragraph/Paragraph.accessibility.test.js +28 -0
  237. package/paragraph/Paragraph.d.ts +5 -0
  238. package/paragraph/Paragraph.js +22 -0
  239. package/paragraph/Paragraph.stories.tsx +27 -0
  240. package/password-input/PasswordInput.accessibility.test.js +153 -0
  241. package/password-input/PasswordInput.js +58 -124
  242. package/password-input/PasswordInput.stories.tsx +1 -33
  243. package/password-input/PasswordInput.test.js +162 -147
  244. package/password-input/types.d.ts +21 -17
  245. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  246. package/progress-bar/ProgressBar.js +68 -92
  247. package/progress-bar/ProgressBar.stories.tsx +93 -0
  248. package/progress-bar/ProgressBar.test.js +72 -44
  249. package/progress-bar/types.d.ts +3 -3
  250. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  251. package/quick-nav/QuickNav.d.ts +4 -0
  252. package/quick-nav/QuickNav.js +94 -0
  253. package/quick-nav/QuickNav.stories.tsx +356 -0
  254. package/quick-nav/types.d.ts +21 -0
  255. package/quick-nav/types.js +5 -0
  256. package/radio-group/Radio.d.ts +1 -1
  257. package/radio-group/Radio.js +59 -76
  258. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  259. package/radio-group/RadioGroup.js +73 -116
  260. package/radio-group/RadioGroup.stories.tsx +135 -17
  261. package/radio-group/RadioGroup.test.js +529 -467
  262. package/radio-group/types.d.ts +86 -9
  263. package/resultset-table/Icons.d.ts +7 -0
  264. package/resultset-table/Icons.js +47 -0
  265. package/resultset-table/ResultsetTable.accessibility.test.js +285 -0
  266. package/resultset-table/ResultsetTable.d.ts +7 -0
  267. package/resultset-table/ResultsetTable.js +171 -0
  268. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +168 -30
  269. package/resultset-table/ResultsetTable.test.js +381 -0
  270. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  271. package/resultset-table/types.js +5 -0
  272. package/select/Listbox.d.ts +4 -0
  273. package/select/Listbox.js +155 -0
  274. package/select/Option.d.ts +4 -0
  275. package/select/Option.js +89 -0
  276. package/select/Select.accessibility.test.js +228 -0
  277. package/select/Select.js +237 -504
  278. package/select/Select.stories.tsx +533 -196
  279. package/select/Select.test.js +1953 -1588
  280. package/select/types.d.ts +65 -26
  281. package/sidenav/Sidenav.accessibility.test.js +59 -0
  282. package/sidenav/Sidenav.d.ts +6 -5
  283. package/sidenav/Sidenav.js +136 -71
  284. package/sidenav/Sidenav.stories.tsx +246 -151
  285. package/sidenav/Sidenav.test.js +26 -45
  286. package/sidenav/SidenavContext.d.ts +5 -0
  287. package/sidenav/SidenavContext.js +13 -0
  288. package/sidenav/types.d.ts +52 -26
  289. package/slider/Slider.accessibility.test.js +104 -0
  290. package/slider/Slider.d.ts +2 -2
  291. package/slider/Slider.js +149 -180
  292. package/slider/Slider.test.js +198 -73
  293. package/slider/types.d.ts +11 -3
  294. package/spinner/Spinner.accessibility.test.js +96 -0
  295. package/spinner/Spinner.js +34 -74
  296. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  297. package/spinner/Spinner.test.js +26 -35
  298. package/spinner/types.d.ts +3 -3
  299. package/status-light/StatusLight.accessibility.test.js +157 -0
  300. package/status-light/StatusLight.d.ts +4 -0
  301. package/status-light/StatusLight.js +51 -0
  302. package/status-light/StatusLight.stories.tsx +74 -0
  303. package/status-light/StatusLight.test.js +25 -0
  304. package/status-light/types.d.ts +17 -0
  305. package/status-light/types.js +5 -0
  306. package/switch/Switch.accessibility.test.js +98 -0
  307. package/switch/Switch.d.ts +2 -2
  308. package/switch/Switch.js +149 -114
  309. package/switch/Switch.stories.tsx +56 -67
  310. package/switch/Switch.test.js +146 -39
  311. package/switch/types.d.ts +13 -5
  312. package/table/DropdownTheme.js +62 -0
  313. package/table/Table.accessibility.test.js +93 -0
  314. package/table/Table.d.ts +6 -2
  315. package/table/Table.js +78 -35
  316. package/table/Table.stories.tsx +663 -0
  317. package/table/Table.test.js +95 -8
  318. package/table/types.d.ts +34 -6
  319. package/tabs/Tab.d.ts +4 -0
  320. package/tabs/Tab.js +117 -0
  321. package/tabs/Tabs.accessibility.test.js +56 -0
  322. package/tabs/Tabs.d.ts +1 -1
  323. package/tabs/Tabs.js +305 -145
  324. package/tabs/Tabs.stories.tsx +124 -14
  325. package/tabs/Tabs.test.js +220 -67
  326. package/tabs/types.d.ts +31 -17
  327. package/tag/Tag.accessibility.test.js +69 -0
  328. package/tag/Tag.js +42 -79
  329. package/tag/Tag.stories.tsx +24 -10
  330. package/tag/Tag.test.js +18 -37
  331. package/tag/types.d.ts +9 -9
  332. package/text-input/Suggestion.d.ts +4 -0
  333. package/text-input/Suggestion.js +67 -0
  334. package/text-input/Suggestions.d.ts +4 -0
  335. package/text-input/Suggestions.js +94 -0
  336. package/text-input/TextInput.accessibility.test.js +321 -0
  337. package/text-input/TextInput.js +332 -557
  338. package/text-input/TextInput.stories.tsx +282 -282
  339. package/text-input/TextInput.test.js +1442 -1377
  340. package/text-input/types.d.ts +70 -24
  341. package/textarea/Textarea.accessibility.test.js +155 -0
  342. package/textarea/Textarea.js +83 -134
  343. package/textarea/Textarea.stories.tsx +174 -0
  344. package/textarea/Textarea.test.js +168 -198
  345. package/textarea/types.d.ts +27 -16
  346. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  347. package/toggle-group/ToggleGroup.d.ts +2 -2
  348. package/toggle-group/ToggleGroup.js +94 -106
  349. package/toggle-group/ToggleGroup.stories.tsx +56 -11
  350. package/toggle-group/ToggleGroup.test.js +78 -66
  351. package/toggle-group/types.d.ts +36 -19
  352. package/typography/Typography.accessibility.test.js +339 -0
  353. package/typography/Typography.d.ts +4 -0
  354. package/typography/Typography.js +23 -0
  355. package/typography/Typography.stories.tsx +198 -0
  356. package/typography/types.d.ts +18 -0
  357. package/typography/types.js +5 -0
  358. package/useTheme.d.ts +1144 -1
  359. package/useTheme.js +4 -11
  360. package/useTranslatedLabels.d.ts +85 -0
  361. package/useTranslatedLabels.js +14 -0
  362. package/utils/BaseTypography.d.ts +21 -0
  363. package/utils/BaseTypography.js +94 -0
  364. package/utils/FocusLock.d.ts +13 -0
  365. package/utils/FocusLock.js +124 -0
  366. package/wizard/Wizard.accessibility.test.js +55 -0
  367. package/wizard/Wizard.d.ts +1 -1
  368. package/wizard/Wizard.js +78 -120
  369. package/wizard/Wizard.stories.tsx +67 -19
  370. package/wizard/Wizard.test.js +73 -87
  371. package/wizard/types.d.ts +14 -10
  372. package/ThemeContext.d.ts +0 -10
  373. package/ThemeContext.js +0 -243
  374. package/card/ice-cream.jpg +0 -0
  375. package/common/OpenSans.css +0 -81
  376. package/common/RequiredComponent.js +0 -32
  377. package/common/fonts/OpenSans-Bold.ttf +0 -0
  378. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  379. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  380. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  381. package/common/fonts/OpenSans-Italic.ttf +0 -0
  382. package/common/fonts/OpenSans-Light.ttf +0 -0
  383. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  384. package/common/fonts/OpenSans-Regular.ttf +0 -0
  385. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  386. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  387. package/list/List.d.ts +0 -4
  388. package/list/List.js +0 -47
  389. package/list/List.stories.tsx +0 -95
  390. package/list/types.d.ts +0 -7
  391. package/number-input/numberInputContextTypes.d.ts +0 -19
  392. package/paginator/Icons.js +0 -66
  393. package/progress-bar/ProgressBar.stories.jsx +0 -58
  394. package/radio/Radio.d.ts +0 -4
  395. package/radio/Radio.js +0 -174
  396. package/radio/Radio.stories.tsx +0 -192
  397. package/radio/Radio.test.js +0 -71
  398. package/radio/types.d.ts +0 -54
  399. package/resultsetTable/ResultsetTable.d.ts +0 -4
  400. package/resultsetTable/ResultsetTable.js +0 -254
  401. package/resultsetTable/ResultsetTable.test.js +0 -306
  402. package/row/Row.d.ts +0 -3
  403. package/row/Row.js +0 -127
  404. package/row/Row.stories.tsx +0 -237
  405. package/row/types.d.ts +0 -10
  406. package/slider/Slider.stories.tsx +0 -177
  407. package/stack/Stack.d.ts +0 -3
  408. package/stack/Stack.js +0 -97
  409. package/stack/Stack.stories.tsx +0 -164
  410. package/stack/types.d.ts +0 -9
  411. package/table/Table.stories.jsx +0 -277
  412. package/text/Text.d.ts +0 -7
  413. package/text/Text.js +0 -30
  414. package/text/Text.stories.tsx +0 -19
  415. package/textarea/Textarea.stories.jsx +0 -157
  416. /package/{list → action-icon}/types.js +0 -0
  417. /package/{radio → breadcrumbs}/types.js +0 -0
  418. /package/{resultsetTable → bulleted-list}/types.js +0 -0
  419. /package/{row → container}/types.js +0 -0
  420. /package/{stack → contextual-menu}/types.js +0 -0
  421. /package/{number-input/numberInputContextTypes.js → divider/types.js} +0 -0
package/select/Select.js CHANGED
@@ -1,130 +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
-
32
- var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
33
-
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;
35
-
36
- 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
-
38
- 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
-
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
- }))))
19
+ var _utils = require("../common/utils");
20
+ var _Listbox = _interopRequireDefault(require("./Listbox"));
21
+ var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
22
+ var _Icon = _interopRequireDefault(require("../icon/Icon"));
23
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
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 && {}.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;
119
28
  };
120
-
121
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
122
- return "This field is required. Please, enter a value.";
29
+ var isArrayOfOptionGroups = function isArrayOfOptionGroups(options) {
30
+ return isOptionGroup(options[0]);
31
+ };
32
+ var groupsHaveOptions = function groupsHaveOptions(filteredOptions) {
33
+ return isArrayOfOptionGroups(filteredOptions) ? filteredOptions.some(function (groupOption) {
34
+ var _groupOption$options;
35
+ return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
36
+ }) : true;
37
+ };
38
+ var canOpenOptions = function canOpenOptions(options, disabled) {
39
+ return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
123
40
  };
124
-
125
41
  var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
126
42
  if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
127
- if (options[0].options) return options.map(function (optionGroup) {
43
+ if (isArrayOfOptionGroups(options)) return options.map(function (optionGroup) {
128
44
  var group = {
129
45
  label: optionGroup.label,
130
46
  options: optionGroup.options.filter(function (option) {
@@ -137,53 +53,43 @@ var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, se
137
53
  });
138
54
  }
139
55
  };
140
-
141
56
  var getLastOptionIndex = function getLastOptionIndex(options, filteredOptions, searchable, optional, multiple) {
142
57
  var last = 0;
143
-
144
58
  var reducer = function reducer(acc, current) {
145
59
  var _current$options;
146
-
147
60
  return acc + ((_current$options = current.options) === null || _current$options === void 0 ? void 0 : _current$options.length);
148
61
  };
149
-
150
- 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;
151
63
  return optional && !multiple ? last + 1 : last;
152
64
  };
153
-
154
- var getSelectedOption = function getSelectedOption(options, multiple, optional, optionalEmptyOption, value, innerValue) {
155
- var val = value !== null && value !== void 0 ? value : innerValue;
65
+ var getSelectedOption = function getSelectedOption(value, options, multiple, optional, optionalItem) {
156
66
  var selectedOption = multiple ? [] : {};
157
67
  var singleSelectionIndex;
158
-
159
68
  if (multiple) {
160
69
  if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
161
70
  options.forEach(function (option) {
162
- if (option.options) {
163
- option.options.forEach(function (singleOption) {
164
- if (val.includes(singleOption.value)) selectedOption.push(singleOption);
165
- });
166
- } else if (val.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);
167
74
  });
168
75
  }
169
76
  } else {
170
- if (optional && val === "") {
171
- selectedOption = optionalEmptyOption;
77
+ if (optional && value === "") {
78
+ selectedOption = optionalItem;
172
79
  singleSelectionIndex = 0;
173
80
  } else if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
174
81
  var group_index = 0;
175
82
  options.some(function (option, index) {
176
- if (option.options) {
83
+ if (isOptionGroup(option)) {
177
84
  option.options.some(function (singleOption) {
178
- if (singleOption.value === val) {
85
+ if (singleOption.value === value) {
179
86
  selectedOption = singleOption;
180
87
  singleSelectionIndex = optional ? group_index + 1 : group_index;
181
88
  return true;
182
89
  }
183
-
184
90
  group_index++;
185
91
  });
186
- } else if (option.value === val) {
92
+ } else if (option.value === value) {
187
93
  selectedOption = option;
188
94
  singleSelectionIndex = optional ? index + 1 : index;
189
95
  return true;
@@ -191,74 +97,97 @@ var getSelectedOption = function getSelectedOption(options, multiple, optional,
191
97
  });
192
98
  }
193
99
  }
194
-
195
100
  return {
196
101
  selectedOption: selectedOption,
197
102
  singleSelectionIndex: singleSelectionIndex
198
103
  };
199
104
  };
200
-
201
- var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
105
+ var getSelectedOptionLabel = function getSelectedOptionLabel(placeholder, selectedOption) {
202
106
  var _selectedOption$label;
203
-
107
+ if (Array.isArray(selectedOption)) return selectedOption.length === 0 ? placeholder : selectedOption.map(function (option) {
108
+ return option.label;
109
+ }).join(", ");else return (_selectedOption$label = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _selectedOption$label !== void 0 ? _selectedOption$label : placeholder;
110
+ };
111
+ var notOptionalCheck = function notOptionalCheck(value, multiple, optional) {
112
+ return !optional && (multiple ? value.length === 0 : value === "");
113
+ };
114
+ var useWidth = function useWidth(target) {
115
+ var _useState = (0, _react.useState)(0),
116
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
117
+ width = _useState2[0],
118
+ setWidth = _useState2[1];
119
+ (0, _react.useEffect)(function () {
120
+ if (target != null) {
121
+ setWidth(target.getBoundingClientRect().width);
122
+ var triggerObserver = new ResizeObserver(function (entries) {
123
+ var rect = entries[0].target.getBoundingClientRect();
124
+ setWidth(rect === null || rect === void 0 ? void 0 : rect.width);
125
+ });
126
+ triggerObserver.observe(target);
127
+ return function () {
128
+ triggerObserver.unobserve(target);
129
+ };
130
+ }
131
+ }, [target]);
132
+ return width;
133
+ };
134
+ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
135
+ var _ref4;
204
136
  var label = _ref.label,
205
- _ref$name = _ref.name,
206
- name = _ref$name === void 0 ? "" : _ref$name,
207
- value = _ref.value,
208
- options = _ref.options,
209
- helperText = _ref.helperText,
210
- _ref$placeholder = _ref.placeholder,
211
- placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
212
- _ref$disabled = _ref.disabled,
213
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
214
- _ref$optional = _ref.optional,
215
- optional = _ref$optional === void 0 ? false : _ref$optional,
216
- _ref$searchable = _ref.searchable,
217
- searchable = _ref$searchable === void 0 ? false : _ref$searchable,
218
- _ref$multiple = _ref.multiple,
219
- multiple = _ref$multiple === void 0 ? false : _ref$multiple,
220
- onChange = _ref.onChange,
221
- onBlur = _ref.onBlur,
222
- error = _ref.error,
223
- margin = _ref.margin,
224
- _ref$size = _ref.size,
225
- size = _ref$size === void 0 ? "medium" : _ref$size,
226
- _ref$tabIndex = _ref.tabIndex,
227
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
228
-
229
- var _useState = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
230
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
231
- selectId = _useState2[0];
232
-
137
+ _ref$name = _ref.name,
138
+ name = _ref$name === void 0 ? "" : _ref$name,
139
+ defaultValue = _ref.defaultValue,
140
+ value = _ref.value,
141
+ options = _ref.options,
142
+ helperText = _ref.helperText,
143
+ _ref$placeholder = _ref.placeholder,
144
+ placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
145
+ _ref$disabled = _ref.disabled,
146
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
147
+ _ref$optional = _ref.optional,
148
+ optional = _ref$optional === void 0 ? false : _ref$optional,
149
+ _ref$searchable = _ref.searchable,
150
+ searchable = _ref$searchable === void 0 ? false : _ref$searchable,
151
+ _ref$multiple = _ref.multiple,
152
+ multiple = _ref$multiple === void 0 ? false : _ref$multiple,
153
+ onChange = _ref.onChange,
154
+ onBlur = _ref.onBlur,
155
+ error = _ref.error,
156
+ margin = _ref.margin,
157
+ _ref$size = _ref.size,
158
+ size = _ref$size === void 0 ? "medium" : _ref$size,
159
+ _ref$tabIndex = _ref.tabIndex,
160
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
161
+ var _useState3 = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
162
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
163
+ selectId = _useState4[0];
233
164
  var selectLabelId = "label-".concat(selectId);
165
+ var searchableInputId = "searchable-input-".concat(selectId);
234
166
  var errorId = "error-".concat(selectId);
235
167
  var optionsListId = "".concat(selectId, "-listbox");
236
-
237
- var _useState3 = (0, _react.useState)(multiple ? [] : ""),
238
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
239
- innerValue = _useState4[0],
240
- setInnerValue = _useState4[1];
241
-
242
- var _useState5 = (0, _react.useState)(""),
243
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
244
- searchValue = _useState6[0],
245
- setSearchValue = _useState6[1];
246
-
247
- var _useState7 = (0, _react.useState)(-1),
248
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
249
- visualFocusIndex = _useState8[0],
250
- changeVisualFocusIndex = _useState8[1];
251
-
252
- var _useState9 = (0, _react.useState)(false),
253
- _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
254
- isOpen = _useState10[0],
255
- changeIsOpen = _useState10[1];
256
-
257
- var selectContainerRef = (0, _react.useRef)(null);
168
+ var _useState5 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
169
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
170
+ innerValue = _useState6[0],
171
+ setInnerValue = _useState6[1];
172
+ var _useState7 = (0, _react.useState)(""),
173
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
174
+ searchValue = _useState8[0],
175
+ setSearchValue = _useState8[1];
176
+ var _useState9 = (0, _react.useState)(-1),
177
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
178
+ visualFocusIndex = _useState10[0],
179
+ changeVisualFocusIndex = _useState10[1];
180
+ var _useState11 = (0, _react.useState)(false),
181
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
182
+ isOpen = _useState12[0],
183
+ changeIsOpen = _useState12[1];
184
+ var selectRef = (0, _react.useRef)(null);
258
185
  var selectSearchInputRef = (0, _react.useRef)(null);
259
- var selectOptionsListRef = (0, _react.useRef)(null);
186
+ var selectedOptionLabelRef = (0, _react.useRef)(null);
187
+ var width = useWidth(selectRef.current);
260
188
  var colorsTheme = (0, _useTheme["default"])();
261
- var optionalEmptyOption = {
189
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
190
+ var optionalItem = {
262
191
  label: placeholder,
263
192
  value: ""
264
193
  };
@@ -267,147 +196,91 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
267
196
  }, [options, searchValue]);
268
197
  var lastOptionIndex = (0, _react.useMemo)(function () {
269
198
  return getLastOptionIndex(options, filteredOptions, searchable, optional, multiple);
270
- }, [searchable, optional, multiple, filteredOptions, options]);
271
-
199
+ }, [options, filteredOptions, searchable, optional, multiple]);
272
200
  var _useMemo = (0, _react.useMemo)(function () {
273
- return getSelectedOption(options, multiple, optional, optionalEmptyOption, value, innerValue);
274
- }, [options, multiple, optional, value, innerValue]),
275
- selectedOption = _useMemo.selectedOption,
276
- singleSelectionIndex = _useMemo.singleSelectionIndex;
277
-
278
- var notOptionalCheck = function notOptionalCheck(value) {
279
- return value === "" && !optional;
280
- };
281
-
282
- var notOptionalMultipleCheck = function notOptionalMultipleCheck() {
283
- return (value !== null && value !== void 0 ? value : innerValue).length === 0 && !optional;
284
- };
285
-
286
- var canBeOpenOptions = function canBeOpenOptions() {
287
- return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions();
288
- };
289
-
290
- var groupsHaveOptions = function groupsHaveOptions() {
291
- return options[0].hasOwnProperty("options") ? options[0].options ? options.some(function (groupOption) {
292
- return groupOption.options.length > 0;
293
- }) : false : true;
294
- };
295
-
296
- var filteredGroupsHaveOptions = function filteredGroupsHaveOptions() {
297
- return filteredOptions !== null && filteredOptions !== void 0 && filteredOptions[0].options ? filteredOptions.some(function (groupOption) {
298
- var _groupOption$options;
299
-
300
- return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
301
- }) : true;
302
- };
303
-
201
+ return getSelectedOption(value !== null && value !== void 0 ? value : innerValue, options, multiple, optional, optionalItem);
202
+ }, [value, innerValue, options, multiple, optional, optionalItem]),
203
+ selectedOption = _useMemo.selectedOption,
204
+ singleSelectionIndex = _useMemo.singleSelectionIndex;
304
205
  var openOptions = function openOptions() {
305
- if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
206
+ if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
306
207
  };
307
-
308
208
  var closeOptions = function closeOptions() {
309
209
  if (isOpen) {
310
210
  changeIsOpen(false);
311
211
  changeVisualFocusIndex(-1);
312
212
  }
313
213
  };
314
-
315
214
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
215
+ var newValue;
316
216
  if (multiple) {
317
- var _res, _res2;
318
-
319
- var res;
320
- if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) value ? res = value.filter(function (optionVal) {
217
+ var _ref2, _ref3;
218
+ 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) {
321
219
  return optionVal !== newOption.value;
322
- }) : setInnerValue(function (previous) {
323
- return previous.filter(function (optionVal) {
324
- return optionVal !== newOption.value;
325
- });
326
- });else value ? res = [].concat((0, _toConsumableArray2["default"])(value), [newOption.value]) : setInnerValue(function (previous) {
327
- return [].concat((0, _toConsumableArray2["default"])(previous), [newOption.value]);
328
- });
329
- if (notOptionalMultipleCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
330
- value: (_res = res) !== null && _res !== void 0 ? _res : innerValue,
331
- error: getNotOptionalErrorMessage()
332
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
333
- value: (_res2 = res) !== null && _res2 !== void 0 ? _res2 : innerValue,
334
- error: null
335
- });
336
- } else {
337
- value !== null && value !== void 0 ? value : setInnerValue(newOption.value);
338
- if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
339
- value: newOption.value,
340
- error: getNotOptionalErrorMessage()
341
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
342
- value: newOption.value,
343
- error: null
344
- });
345
- }
220
+ });else newValue = [].concat((0, _toConsumableArray2["default"])((_ref3 = value && Array.isArray(value) && value) !== null && _ref3 !== void 0 ? _ref3 : innerValue && Array.isArray(innerValue) && innerValue), [newOption.value]);
221
+ } else newValue = newOption.value;
222
+ value !== null && value !== void 0 ? value : setInnerValue(newValue);
223
+ notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
224
+ value: newValue,
225
+ error: translatedLabels.formFields.requiredValueErrorMessage
226
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
227
+ value: newValue
228
+ });
346
229
  };
347
-
348
230
  var handleSelectOnClick = function handleSelectOnClick() {
349
231
  searchable && selectSearchInputRef.current.focus();
350
-
351
232
  if (isOpen) {
352
233
  closeOptions();
353
234
  setSearchValue("");
354
235
  } else openOptions();
355
236
  };
356
-
357
237
  var handleSelectOnFocus = function handleSelectOnFocus(event) {
358
238
  if (!event.currentTarget.contains(event.relatedTarget)) searchable && selectSearchInputRef.current.focus();
359
239
  };
360
-
361
240
  var handleSelectOnBlur = function handleSelectOnBlur(event) {
362
- // focus leaves container (outside, not to childs)
241
+ // focus leaves container (outside, not to a child)
363
242
  if (!event.currentTarget.contains(event.relatedTarget)) {
364
243
  closeOptions();
365
244
  setSearchValue("");
366
- if (notOptionalCheck(value !== null && value !== void 0 ? value : innerValue)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
367
- value: value !== null && value !== void 0 ? value : innerValue,
368
- error: getNotOptionalErrorMessage()
369
- });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
370
- value: value !== null && value !== void 0 ? value : innerValue,
371
- error: null
245
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
246
+ notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
247
+ value: currentValue,
248
+ error: translatedLabels.formFields.requiredValueErrorMessage
249
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
250
+ value: currentValue
372
251
  });
373
252
  }
374
253
  };
375
-
376
254
  var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
377
- switch (event.keyCode) {
378
- case 40:
379
- // Arrow Down
255
+ switch (event.key) {
256
+ case "Down":
257
+ case "ArrowDown":
380
258
  event.preventDefault();
381
259
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
382
260
  if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
383
261
  });
384
262
  openOptions();
385
263
  break;
386
-
387
- case 38:
388
- // Arrow Up
264
+ case "Up":
265
+ case "ArrowUp":
389
266
  event.preventDefault();
390
267
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
391
268
  return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
392
269
  });
393
270
  openOptions();
394
271
  break;
395
-
396
- case 27:
397
- // Esc
272
+ case "Esc":
273
+ case "Escape":
398
274
  event.preventDefault();
399
275
  closeOptions();
400
276
  setSearchValue("");
401
277
  break;
402
-
403
- case 13:
404
- // Enter
278
+ case "Enter":
405
279
  if (isOpen && visualFocusIndex >= 0) {
406
280
  var accLength = optional && !multiple ? 1 : 0;
407
-
408
281
  if (searchable) {
409
282
  if (filteredOptions.length > 0) {
410
- if (optional && !multiple && visualFocusIndex === 0 && filteredGroupsHaveOptions()) handleSelectChangeValue(optionalEmptyOption);else filteredOptions[0].options ? filteredGroupsHaveOptions() && filteredOptions.some(function (groupOption) {
283
+ if (optional && !multiple && visualFocusIndex === 0 && groupsHaveOptions(filteredOptions)) handleSelectChangeValue(optionalItem);else isArrayOfOptionGroups(filteredOptions) ? groupsHaveOptions(filteredOptions) && filteredOptions.some(function (groupOption) {
411
284
  var groupLength = accLength + groupOption.options.length;
412
285
  groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
413
286
  accLength = groupLength;
@@ -415,132 +288,48 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
415
288
  }) : handleSelectChangeValue(filteredOptions[visualFocusIndex - accLength]);
416
289
  }
417
290
  } else {
418
- if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalEmptyOption);else options[0].options ? options.some(function (groupOption) {
291
+ if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalItem);else isArrayOfOptionGroups(options) ? options.some(function (groupOption) {
419
292
  var groupLength = accLength + groupOption.options.length;
420
293
  groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
421
294
  accLength = groupLength;
422
295
  return groupLength > visualFocusIndex;
423
296
  }) : handleSelectChangeValue(options[visualFocusIndex - accLength]);
424
297
  }
425
-
426
298
  !multiple && closeOptions();
427
299
  setSearchValue("");
428
300
  }
429
-
430
301
  break;
431
302
  }
432
303
  };
433
-
434
304
  var handleSearchIOnChange = function handleSearchIOnChange(event) {
435
305
  setSearchValue(event.target.value);
436
306
  changeVisualFocusIndex(-1);
437
307
  openOptions();
438
308
  };
439
-
440
309
  var handleClearOptionsActionOnClick = function handleClearOptionsActionOnClick(event) {
441
310
  event.stopPropagation();
442
311
  value !== null && value !== void 0 ? value : setInnerValue([]);
443
- onChange === null || onChange === void 0 ? void 0 : onChange({
312
+ !optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
444
313
  value: [],
445
- error: getNotOptionalErrorMessage()
314
+ error: translatedLabels.formFields.requiredValueErrorMessage
315
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
316
+ value: []
446
317
  });
447
318
  };
448
-
449
319
  var handleClearSearchActionOnClick = function handleClearSearchActionOnClick(event) {
450
320
  event.stopPropagation();
451
321
  setSearchValue("");
452
322
  };
453
-
454
- (0, _react.useLayoutEffect)(function () {
455
- if (isOpen && singleSelectionIndex) {
456
- var _listEl$scrollTo;
457
-
458
- var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
459
- var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
460
- listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
461
- top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
462
- });
463
- }
464
- }, [isOpen]);
465
- (0, _react.useLayoutEffect)(function () {
466
- var _selectOptionsListRef, _visualFocusedOptionE;
467
-
468
- var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
469
- visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
470
- block: "nearest",
471
- inline: "start"
472
- });
473
- }, [visualFocusIndex]);
474
-
475
- var Option = function Option(_ref2) {
476
- var option = _ref2.option,
477
- index = _ref2.index,
478
- _ref2$isGroupedOption = _ref2.isGroupedOption,
479
- isGroupedOption = _ref2$isGroupedOption === void 0 ? false : _ref2$isGroupedOption;
480
- var isSelected = multiple ? (value !== null && value !== void 0 ? value : innerValue).includes(option.value) : (value !== null && value !== void 0 ? value : innerValue) === option.value;
481
- var isLastOption = index === lastOptionIndex;
482
- return /*#__PURE__*/_react["default"].createElement(OptionItem, {
483
- id: "option-".concat(index),
484
- onClick: function onClick() {
485
- handleSelectChangeValue(option);
486
- !multiple && closeOptions();
487
- setSearchValue("");
488
- },
489
- visualFocused: visualFocusIndex === index,
490
- selected: isSelected,
491
- role: "option",
492
- "aria-selected": isSelected
493
- }, /*#__PURE__*/_react["default"].createElement(StyledOption, {
494
- visualFocused: visualFocusIndex === index,
495
- selected: isSelected,
496
- last: isLastOption,
497
- grouped: isGroupedOption,
498
- multiple: multiple
499
- }, multiple && /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
500
- tabIndex: -1,
501
- checked: isSelected
502
- }), option.icon && /*#__PURE__*/_react["default"].createElement(OptionIcon, {
503
- grouped: isGroupedOption,
504
- multiple: multiple,
505
- role: !(typeof option.icon === "string") && "img"
506
- }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(OptionIconImg, {
507
- src: option.icon
508
- }) : option.icon), /*#__PURE__*/_react["default"].createElement(OptionContent, {
509
- grouped: isGroupedOption,
510
- hasIcon: option.icon,
511
- multiple: multiple
512
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, selectIcons.selected))));
513
- };
514
-
515
- var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
516
-
517
- var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
518
- if (option.options) {
519
- var groupId = "group-".concat(mapIndex);
520
- return option.options.length > 0 && /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement(GroupList, {
521
- role: "group",
522
- "aria-labelledby": groupId
523
- }, /*#__PURE__*/_react["default"].createElement(GroupLabel, {
524
- role: "presentation",
525
- id: groupId
526
- }, option.label), option.options.map(function (singleOption) {
527
- globalIndex++;
528
- return /*#__PURE__*/_react["default"].createElement(Option, {
529
- option: singleOption,
530
- index: globalIndex,
531
- isGroupedOption: true
532
- });
533
- })));
534
- } else {
535
- globalIndex++;
536
- return /*#__PURE__*/_react["default"].createElement(Option, {
537
- key: "option-".concat(option.value),
538
- option: option,
539
- index: globalIndex
540
- });
323
+ var handleOptionOnClick = (0, _react.useCallback)(function (option) {
324
+ handleSelectChangeValue(option);
325
+ !multiple && closeOptions();
326
+ setSearchValue("");
327
+ }, [handleSelectChangeValue, closeOptions, multiple]);
328
+ (0, _react.useEffect)(function () {
329
+ if ((selectedOptionLabelRef === null || selectedOptionLabelRef === void 0 ? void 0 : selectedOptionLabelRef.current) != null) {
330
+ if ((selectedOptionLabelRef === null || selectedOptionLabelRef === void 0 ? void 0 : selectedOptionLabelRef.current.scrollWidth) > (selectedOptionLabelRef === null || selectedOptionLabelRef === void 0 ? void 0 : selectedOptionLabelRef.current.clientWidth)) selectedOptionLabelRef.current.title = getSelectedOptionLabel(placeholder, selectedOption);else selectedOptionLabelRef.current.title = "";
541
331
  }
542
- };
543
-
332
+ }, [placeholder, selectedOption]);
544
333
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
545
334
  theme: colorsTheme.select
546
335
  }, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
@@ -551,12 +340,18 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
551
340
  id: selectLabelId,
552
341
  disabled: disabled,
553
342
  onClick: function onClick() {
554
- selectContainerRef.current.focus();
343
+ selectRef.current.focus();
555
344
  },
556
- helperText: helperText
557
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
345
+ helperText: helperText,
346
+ htmlFor: searchable ? searchableInputId : undefined
347
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
558
348
  disabled: disabled
559
- }, helperText), /*#__PURE__*/_react["default"].createElement(Select, {
349
+ }, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
350
+ open: isOpen
351
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
352
+ asChild: true,
353
+ type: undefined
354
+ }, /*#__PURE__*/_react["default"].createElement(Select, {
560
355
  id: selectId,
561
356
  disabled: disabled,
562
357
  error: error,
@@ -564,19 +359,19 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
564
359
  onClick: handleSelectOnClick,
565
360
  onFocus: handleSelectOnFocus,
566
361
  onKeyDown: handleSelectOnKeyDown,
567
- ref: selectContainerRef,
568
- tabIndex: tabIndex,
362
+ ref: selectRef,
363
+ tabIndex: disabled ? -1 : tabIndex,
569
364
  role: "combobox",
570
365
  "aria-controls": optionsListId,
571
366
  "aria-disabled": disabled,
572
367
  "aria-expanded": isOpen,
573
368
  "aria-haspopup": "listbox",
574
- "aria-labelledby": selectLabelId,
369
+ "aria-labelledby": label ? selectLabelId : undefined,
575
370
  "aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
576
- "aria-invalid": error ? "true" : "false",
371
+ "aria-invalid": error ? true : false,
577
372
  "aria-errormessage": error ? errorId : undefined,
578
- "aria-required": !optional
579
- }, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
373
+ "aria-required": !disabled && !optional
374
+ }, multiple && Array.isArray(selectedOption) && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
580
375
  disabled: disabled
581
376
  }, selectedOption.length), /*#__PURE__*/_react["default"].createElement(ClearOptionsAction, {
582
377
  disabled: disabled,
@@ -586,71 +381,89 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
586
381
  },
587
382
  onClick: handleClearOptionsActionOnClick,
588
383
  tabIndex: -1,
589
- title: "Clear selection",
590
- "aria-label": "Clear selection"
591
- }, selectIcons.clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
384
+ title: translatedLabels.select.actionClearSelectionTitle,
385
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
386
+ }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
387
+ icon: "clear"
388
+ }))), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
592
389
  name: name,
593
- value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(", ") : value !== null && value !== void 0 ? value : innerValue,
390
+ disabled: disabled,
391
+ 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,
594
392
  readOnly: true,
595
393
  "aria-hidden": "true"
596
394
  }), searchable && /*#__PURE__*/_react["default"].createElement(SearchInput, {
395
+ id: searchableInputId,
597
396
  value: searchValue,
598
397
  disabled: disabled,
599
398
  onChange: handleSearchIOnChange,
600
399
  ref: selectSearchInputRef,
601
- autoComplete: "off",
602
- autoCorrect: "off",
603
- size: "1"
604
- }), (!searchable || searchValue === "") && (multiple ? /*#__PURE__*/_react["default"].createElement(SelectedOption, {
400
+ autoComplete: "nope",
401
+ autoCorrect: "nope",
402
+ size: 1
403
+ }), (!searchable || searchValue === "") && /*#__PURE__*/_react["default"].createElement(SelectedOption, {
605
404
  disabled: disabled,
606
- atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
607
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, selectedOption.map(function (option) {
608
- return option.label;
609
- }).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
610
- disabled: disabled,
611
- atBackground: !(value !== null && value !== void 0 ? value : innerValue) || searchable && isOpen
612
- }, /*#__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, {
405
+ atBackground: (multiple ? (value !== null && value !== void 0 ? value : innerValue).length === 0 : !(value !== null && value !== void 0 ? value : innerValue)) || searchable && isOpen
406
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, {
407
+ ref: selectedOptionLabelRef
408
+ }, getSelectedOptionLabel(placeholder, selectedOption)))), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, null, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
409
+ icon: "filled_error"
410
+ })), searchable && searchValue.length > 0 && /*#__PURE__*/_react["default"].createElement(ClearSearchAction, {
613
411
  onMouseDown: function onMouseDown(event) {
614
412
  // Avoid input to lose focus
615
413
  event.preventDefault();
616
414
  },
617
415
  onClick: handleClearSearchActionOnClick,
618
416
  tabIndex: -1,
619
- title: "Clear search",
620
- "aria-label": "Clear search"
621
- }, selectIcons.clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
417
+ title: translatedLabels.select.actionClearSearchTitle,
418
+ "aria-label": translatedLabels.select.actionClearSearchTitle
419
+ }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
420
+ icon: "clear"
421
+ })), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
622
422
  disabled: disabled
623
- }, isOpen ? selectIcons.arrowUp : selectIcons.arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(OptionsList, {
624
- id: optionsListId,
625
- onClick: function onClick(event) {
626
- event.stopPropagation();
423
+ }, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
424
+ icon: isOpen ? "keyboard_arrow_up" : "keyboard_arrow_down"
425
+ })))), /*#__PURE__*/_react["default"].createElement(Popover.Portal, null, /*#__PURE__*/_react["default"].createElement(Popover.Content, {
426
+ sideOffset: 4,
427
+ style: {
428
+ zIndex: "2147483647"
627
429
  },
628
- onMouseDown: function onMouseDown(event) {
430
+ onOpenAutoFocus: function onOpenAutoFocus(event) {
431
+ // Avoid select to lose focus when the list is opened
629
432
  event.preventDefault();
630
433
  },
631
- ref: selectOptionsListRef,
632
- role: "listbox",
633
- "aria-multiselectable": multiple
634
- }, 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, {
635
- option: optionalEmptyOption,
636
- index: 0
637
- }), searchable ? filteredOptions.map(mapOptionFunc) : options.map(mapOptionFunc))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
434
+ onCloseAutoFocus: function onCloseAutoFocus(event) {
435
+ // Avoid select to lose focus when the list is closed
436
+ event.preventDefault();
437
+ }
438
+ }, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
439
+ id: optionsListId,
440
+ currentValue: value !== null && value !== void 0 ? value : innerValue,
441
+ options: searchable ? filteredOptions : options,
442
+ visualFocusIndex: visualFocusIndex,
443
+ lastOptionIndex: lastOptionIndex,
444
+ multiple: multiple,
445
+ optional: optional,
446
+ optionalItem: optionalItem,
447
+ searchable: searchable,
448
+ handleOptionOnClick: handleOptionOnClick,
449
+ styles: {
450
+ width: width
451
+ }
452
+ })))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
638
453
  id: errorId,
454
+ role: "alert",
639
455
  "aria-live": error ? "assertive" : "off"
640
456
  }, error)));
641
457
  });
642
-
643
458
  var sizes = {
644
459
  small: "240px",
645
460
  medium: "360px",
646
461
  large: "480px",
647
462
  fillParent: "100%"
648
463
  };
649
-
650
464
  var calculateWidth = function calculateWidth(margin, size) {
651
465
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
652
466
  };
653
-
654
467
  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) {
655
468
  return calculateWidth(props.margin, props.size);
656
469
  }, function (props) {
@@ -664,8 +477,7 @@ var SelectContainer = _styledComponents["default"].div(_templateObject || (_temp
664
477
  }, function (props) {
665
478
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
666
479
  });
667
-
668
- 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) {
480
+ var Label = _styledComponents["default"].label(_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) {
669
481
  return props.disabled ? props.theme.disabledColor : props.theme.labelFontColor;
670
482
  }, function (props) {
671
483
  return props.theme.fontFamily;
@@ -680,11 +492,9 @@ var Label = _styledComponents["default"].span(_templateObject2 || (_templateObje
680
492
  }, function (props) {
681
493
  return !props.helperText && "margin-bottom: 0.25rem";
682
494
  });
683
-
684
495
  var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
685
496
  return props.theme.optionalLabelFontWeight;
686
497
  });
687
-
688
498
  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) {
689
499
  return props.disabled ? props.theme.disabledColor : props.theme.helperTextFontColor;
690
500
  }, function (props) {
@@ -698,7 +508,6 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
698
508
  }, function (props) {
699
509
  return props.theme.helperTextLineHeight;
700
510
  });
701
-
702
511
  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) {
703
512
  return props.disabled && "background-color: ".concat(props.theme.disabledInputBackgroundColor);
704
513
  }, function (props) {
@@ -710,11 +519,9 @@ var Select = _styledComponents["default"].div(_templateObject5 || (_templateObje
710
519
  }, function (props) {
711
520
  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 ");
712
521
  });
713
-
714
522
  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) {
715
523
  return props.theme.selectionIndicatorBorderColor;
716
524
  });
717
-
718
525
  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) {
719
526
  return !props.disabled && "background-color: ".concat(props.theme.selectionIndicatorBackgroundColor);
720
527
  }, function (props) {
@@ -732,10 +539,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
732
539
  }, function (props) {
733
540
  return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
734
541
  });
735
-
736
- 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) {
737
- return props.theme.fontFamily;
738
- }, function (props) {
542
+ 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 font-size:16px;\n"])), function (props) {
739
543
  return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
740
544
  }, function (props) {
741
545
  return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;
@@ -744,9 +548,7 @@ var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 ||
744
548
  }, function (props) {
745
549
  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 ");
746
550
  });
747
-
748
551
  var SearchableValueContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n width: 100%;\n"])));
749
-
750
552
  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) {
751
553
  if (props.disabled) return props.theme.disabledColor;else if (props.atBackground) return props.theme.placeholderFontColor;else return props.theme.valueFontColor;
752
554
  }, function (props) {
@@ -758,10 +560,9 @@ var SelectedOption = _styledComponents["default"].span(_templateObject10 || (_te
758
560
  }, function (props) {
759
561
  return props.theme.valueFontWeight;
760
562
  });
761
-
762
- var ValueInput = _styledComponents["default"].input(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
763
-
764
- 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) {
563
+ var SelectedOptionLabel = _styledComponents["default"].span(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
564
+ var ValueInput = _styledComponents["default"].input(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
565
+ 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) {
765
566
  return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
766
567
  }, function (props) {
767
568
  return props.theme.fontFamily;
@@ -772,22 +573,18 @@ var SearchInput = _styledComponents["default"].input(_templateObject12 || (_temp
772
573
  }, function (props) {
773
574
  return props.theme.valueFontWeight;
774
575
  });
775
-
776
- 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) {
576
+ 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 font-size: 1.25rem;\n"])), function (props) {
777
577
  return props.theme.errorIconColor;
778
578
  });
779
-
780
- 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) {
579
+ 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) {
781
580
  return props.theme.errorMessageColor;
782
581
  }, function (props) {
783
582
  return props.theme.fontFamily;
784
583
  });
785
-
786
- 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) {
584
+ 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) {
787
585
  return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
788
586
  });
789
-
790
- 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) {
587
+ 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 font-size: 16px;\n"])), function (props) {
791
588
  return props.theme.fontFamily;
792
589
  }, function (props) {
793
590
  return props.theme.actionBackgroundColor;
@@ -802,68 +599,4 @@ var ClearSearchAction = _styledComponents["default"].button(_templateObject16 ||
802
599
  }, function (props) {
803
600
  return props.theme.activeActionIconColor;
804
601
  });
805
-
806
- 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) {
807
- return props.theme.listDialogBackgroundColor;
808
- }, function (props) {
809
- return props.theme.listDialogBorderColor;
810
- }, function (props) {
811
- return props.theme.listOptionFontColor;
812
- }, function (props) {
813
- return props.theme.fontFamily;
814
- }, function (props) {
815
- return props.theme.listOptionFontSize;
816
- }, function (props) {
817
- return props.theme.listOptionFontStyle;
818
- }, function (props) {
819
- return props.theme.listOptionFontWeight;
820
- });
821
-
822
- 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) {
823
- return props.theme.systemMessageFontColor;
824
- });
825
-
826
- 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"])));
827
-
828
- var GroupList = _styledComponents["default"].ul(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
829
-
830
- 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) {
831
- return props.theme.listGroupLabelFontWeight;
832
- });
833
-
834
- 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) {
835
- return props.visualFocused && "box-shadow: inset 0 0 0 2px ".concat(props.theme.focusListOptionBorderColor, ";");
836
- }, function (props) {
837
- return props.selected && "background-color: ".concat(props.theme.selectedListOptionBackgroundColor);
838
- }, function (props) {
839
- return props.selected ? "background-color: ".concat(props.theme.selectedHoverListOptionBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedHoverListOptionBackgroundColor, ";");
840
- }, function (props) {
841
- return props.selected ? "background-color: ".concat(props.theme.selectedActiveListOptionBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedActiveListOptionBackgroundColor, ";");
842
- });
843
-
844
- 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) {
845
- return props.grouped && props.multiple && "padding-left: 16px;";
846
- }, function (props) {
847
- return props.last || props.visualFocused || props.selected ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
848
- });
849
-
850
- 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) {
851
- return props.grouped && !props.multiple && !props.hasIcon ? "padding-left: 16px;" : "padding-left: 8px;";
852
- });
853
-
854
- 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) {
855
- return props.grouped && !props.multiple ? "padding-left: 16px;" : "padding-left: 8px;";
856
- }, function (props) {
857
- return props.theme.listOptionIconColor;
858
- });
859
-
860
- var OptionIconImg = _styledComponents["default"].img(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["\n width: 16px;\n height: 16px;\n"])));
861
-
862
- var OptionLabel = _styledComponents["default"].span(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
863
-
864
- 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) {
865
- return props.theme.selectedListOptionIconColor;
866
- });
867
-
868
- var _default = DxcSelect;
869
- exports["default"] = _default;
602
+ var _default = exports["default"] = DxcSelect;