@dxc-technology/halstack-react 0.0.0-0af2013 → 0.0.0-0bb6041

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 (267) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1331 -5
  4. package/HalstackContext.js +179 -87
  5. package/accordion/Accordion.js +118 -110
  6. package/accordion/Accordion.stories.tsx +104 -16
  7. package/accordion/Accordion.test.js +10 -11
  8. package/accordion/types.d.ts +2 -1
  9. package/accordion-group/AccordionGroup.d.ts +4 -3
  10. package/accordion-group/AccordionGroup.js +25 -65
  11. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  12. package/accordion-group/AccordionGroup.test.js +21 -46
  13. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  14. package/accordion-group/AccordionGroupAccordion.js +43 -0
  15. package/accordion-group/types.d.ts +8 -1
  16. package/alert/Alert.js +9 -10
  17. package/alert/Alert.stories.tsx +28 -0
  18. package/alert/Alert.test.js +1 -1
  19. package/badge/Badge.d.ts +1 -1
  20. package/badge/Badge.js +5 -3
  21. package/badge/types.d.ts +1 -0
  22. package/bleed/Bleed.js +1 -34
  23. package/bleed/Bleed.stories.tsx +95 -95
  24. package/bleed/types.d.ts +1 -1
  25. package/box/Box.js +25 -37
  26. package/box/Box.stories.tsx +15 -0
  27. package/box/Box.test.js +1 -1
  28. package/box/types.d.ts +1 -0
  29. package/bulleted-list/BulletedList.d.ts +7 -0
  30. package/bulleted-list/BulletedList.js +125 -0
  31. package/bulleted-list/BulletedList.stories.tsx +206 -0
  32. package/bulleted-list/types.d.ts +38 -0
  33. package/button/Button.js +52 -73
  34. package/button/Button.stories.tsx +159 -8
  35. package/button/Button.test.js +1 -1
  36. package/button/types.d.ts +5 -5
  37. package/card/Card.js +41 -44
  38. package/card/Card.stories.tsx +12 -13
  39. package/card/Card.test.js +1 -1
  40. package/card/types.d.ts +1 -0
  41. package/checkbox/Checkbox.d.ts +2 -2
  42. package/checkbox/Checkbox.js +97 -101
  43. package/checkbox/Checkbox.stories.tsx +131 -59
  44. package/checkbox/Checkbox.test.js +94 -17
  45. package/checkbox/types.d.ts +4 -0
  46. package/chip/Chip.js +28 -49
  47. package/chip/Chip.stories.tsx +121 -26
  48. package/chip/Chip.test.js +3 -5
  49. package/chip/types.d.ts +1 -1
  50. package/common/OpenSans.css +68 -80
  51. package/common/coreTokens.d.ts +146 -0
  52. package/common/coreTokens.js +167 -0
  53. package/common/utils.d.ts +1 -0
  54. package/common/utils.js +4 -4
  55. package/common/variables.d.ts +1482 -0
  56. package/common/variables.js +1095 -1106
  57. package/date-input/Calendar.d.ts +4 -0
  58. package/date-input/Calendar.js +258 -0
  59. package/date-input/DateInput.js +136 -236
  60. package/date-input/DateInput.stories.tsx +199 -33
  61. package/date-input/DateInput.test.js +494 -138
  62. package/date-input/DatePicker.d.ts +4 -0
  63. package/date-input/DatePicker.js +146 -0
  64. package/date-input/Icons.d.ts +6 -0
  65. package/date-input/Icons.js +75 -0
  66. package/date-input/YearPicker.d.ts +4 -0
  67. package/date-input/YearPicker.js +126 -0
  68. package/date-input/types.d.ts +51 -0
  69. package/dialog/Dialog.js +80 -69
  70. package/dialog/Dialog.stories.tsx +230 -123
  71. package/dialog/Dialog.test.js +334 -5
  72. package/dialog/types.d.ts +1 -0
  73. package/dropdown/Dropdown.d.ts +1 -1
  74. package/dropdown/Dropdown.js +246 -249
  75. package/dropdown/Dropdown.stories.tsx +245 -56
  76. package/dropdown/Dropdown.test.js +507 -110
  77. package/dropdown/DropdownMenu.d.ts +4 -0
  78. package/dropdown/DropdownMenu.js +74 -0
  79. package/dropdown/DropdownMenuItem.d.ts +4 -0
  80. package/dropdown/DropdownMenuItem.js +79 -0
  81. package/dropdown/types.d.ts +23 -3
  82. package/file-input/FileInput.d.ts +2 -2
  83. package/file-input/FileInput.js +180 -223
  84. package/file-input/FileInput.stories.tsx +122 -11
  85. package/file-input/FileInput.test.js +14 -14
  86. package/file-input/FileItem.d.ts +4 -14
  87. package/file-input/FileItem.js +44 -66
  88. package/file-input/types.d.ts +17 -0
  89. package/flex/Flex.d.ts +4 -0
  90. package/flex/Flex.js +71 -0
  91. package/flex/Flex.stories.tsx +112 -0
  92. package/flex/types.d.ts +97 -0
  93. package/footer/Footer.js +12 -12
  94. package/footer/Footer.stories.tsx +99 -1
  95. package/footer/Footer.test.js +14 -26
  96. package/footer/Icons.js +1 -1
  97. package/footer/types.d.ts +2 -1
  98. package/grid/Grid.d.ts +7 -0
  99. package/grid/Grid.js +91 -0
  100. package/grid/Grid.stories.tsx +219 -0
  101. package/grid/types.d.ts +115 -0
  102. package/header/Header.d.ts +3 -2
  103. package/header/Header.js +95 -92
  104. package/header/Header.stories.tsx +152 -9
  105. package/header/Header.test.js +2 -2
  106. package/header/Icons.js +2 -2
  107. package/header/types.d.ts +1 -0
  108. package/heading/Heading.js +1 -1
  109. package/heading/Heading.test.js +1 -1
  110. package/inset/Inset.js +1 -34
  111. package/inset/Inset.stories.tsx +37 -36
  112. package/inset/types.d.ts +1 -1
  113. package/layout/ApplicationLayout.d.ts +16 -6
  114. package/layout/ApplicationLayout.js +71 -118
  115. package/layout/ApplicationLayout.stories.tsx +84 -93
  116. package/layout/Icons.d.ts +5 -0
  117. package/layout/Icons.js +13 -2
  118. package/layout/SidenavContext.d.ts +5 -0
  119. package/layout/SidenavContext.js +19 -0
  120. package/layout/types.d.ts +19 -35
  121. package/link/Link.d.ts +2 -2
  122. package/link/Link.js +26 -52
  123. package/link/Link.stories.tsx +73 -6
  124. package/link/Link.test.js +2 -4
  125. package/link/types.d.ts +5 -6
  126. package/main.d.ts +8 -10
  127. package/main.js +42 -52
  128. package/nav-tabs/NavTabs.d.ts +8 -0
  129. package/nav-tabs/NavTabs.js +122 -0
  130. package/nav-tabs/NavTabs.stories.tsx +274 -0
  131. package/nav-tabs/NavTabs.test.js +82 -0
  132. package/nav-tabs/Tab.d.ts +4 -0
  133. package/nav-tabs/Tab.js +146 -0
  134. package/nav-tabs/types.d.ts +52 -0
  135. package/number-input/NumberInput.test.js +44 -8
  136. package/number-input/types.d.ts +1 -1
  137. package/package.json +17 -21
  138. package/paginator/Icons.d.ts +5 -0
  139. package/paginator/Icons.js +16 -28
  140. package/paginator/Paginator.js +20 -49
  141. package/paginator/Paginator.stories.tsx +24 -0
  142. package/paginator/Paginator.test.js +91 -39
  143. package/paragraph/Paragraph.d.ts +5 -0
  144. package/paragraph/Paragraph.js +38 -0
  145. package/paragraph/Paragraph.stories.tsx +44 -0
  146. package/password-input/PasswordInput.js +7 -4
  147. package/password-input/PasswordInput.test.js +15 -15
  148. package/password-input/types.d.ts +1 -1
  149. package/progress-bar/ProgressBar.js +61 -55
  150. package/progress-bar/ProgressBar.stories.jsx +47 -12
  151. package/progress-bar/ProgressBar.test.js +68 -23
  152. package/quick-nav/QuickNav.js +75 -22
  153. package/quick-nav/QuickNav.stories.tsx +145 -26
  154. package/quick-nav/types.d.ts +1 -1
  155. package/radio-group/Radio.d.ts +1 -1
  156. package/radio-group/Radio.js +46 -31
  157. package/radio-group/RadioGroup.js +37 -36
  158. package/radio-group/RadioGroup.stories.tsx +132 -18
  159. package/radio-group/RadioGroup.test.js +124 -97
  160. package/radio-group/types.d.ts +2 -2
  161. package/resultsetTable/Icons.d.ts +7 -0
  162. package/resultsetTable/Icons.js +51 -0
  163. package/resultsetTable/ResultsetTable.js +49 -108
  164. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  165. package/resultsetTable/ResultsetTable.test.js +61 -42
  166. package/resultsetTable/types.d.ts +1 -1
  167. package/select/Listbox.d.ts +1 -1
  168. package/select/Listbox.js +37 -16
  169. package/select/Option.js +11 -24
  170. package/select/Select.js +127 -116
  171. package/select/Select.stories.tsx +522 -133
  172. package/select/Select.test.js +474 -303
  173. package/select/types.d.ts +3 -6
  174. package/sidenav/Icons.d.ts +7 -0
  175. package/sidenav/Icons.js +51 -0
  176. package/sidenav/Sidenav.d.ts +6 -5
  177. package/sidenav/Sidenav.js +146 -44
  178. package/sidenav/Sidenav.stories.tsx +251 -151
  179. package/sidenav/Sidenav.test.js +25 -37
  180. package/sidenav/types.d.ts +52 -26
  181. package/slider/Slider.d.ts +2 -2
  182. package/slider/Slider.js +121 -97
  183. package/slider/Slider.stories.tsx +64 -1
  184. package/slider/Slider.test.js +122 -22
  185. package/slider/types.d.ts +4 -0
  186. package/spinner/Spinner.js +18 -24
  187. package/spinner/Spinner.stories.jsx +53 -27
  188. package/spinner/Spinner.test.js +1 -1
  189. package/switch/Switch.d.ts +2 -2
  190. package/switch/Switch.js +140 -70
  191. package/switch/Switch.stories.tsx +41 -30
  192. package/switch/Switch.test.js +145 -18
  193. package/switch/types.d.ts +4 -0
  194. package/table/Table.js +3 -3
  195. package/table/Table.stories.jsx +80 -1
  196. package/table/Table.test.js +2 -2
  197. package/tabs/Tab.d.ts +4 -0
  198. package/tabs/Tab.js +132 -0
  199. package/tabs/Tabs.js +358 -108
  200. package/tabs/Tabs.stories.tsx +119 -5
  201. package/tabs/Tabs.test.js +220 -10
  202. package/tabs/types.d.ts +13 -3
  203. package/tag/Tag.js +8 -10
  204. package/tag/Tag.stories.tsx +14 -1
  205. package/tag/Tag.test.js +1 -1
  206. package/tag/types.d.ts +1 -1
  207. package/text-input/Icons.d.ts +8 -0
  208. package/text-input/Icons.js +60 -0
  209. package/text-input/Suggestion.d.ts +4 -0
  210. package/text-input/Suggestion.js +84 -0
  211. package/text-input/Suggestions.d.ts +4 -0
  212. package/text-input/Suggestions.js +134 -0
  213. package/text-input/TextInput.js +219 -342
  214. package/text-input/TextInput.stories.tsx +280 -185
  215. package/text-input/TextInput.test.js +737 -726
  216. package/text-input/types.d.ts +33 -2
  217. package/textarea/Textarea.js +13 -23
  218. package/textarea/Textarea.stories.jsx +60 -1
  219. package/textarea/Textarea.test.js +2 -4
  220. package/textarea/types.d.ts +1 -1
  221. package/toggle-group/ToggleGroup.d.ts +2 -2
  222. package/toggle-group/ToggleGroup.js +7 -4
  223. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  224. package/toggle-group/ToggleGroup.test.js +1 -1
  225. package/toggle-group/types.d.ts +2 -2
  226. package/typography/Typography.d.ts +4 -0
  227. package/typography/Typography.js +32 -0
  228. package/typography/Typography.stories.tsx +198 -0
  229. package/typography/types.d.ts +18 -0
  230. package/typography/types.js +5 -0
  231. package/useTheme.d.ts +1234 -1
  232. package/useTheme.js +1 -1
  233. package/useTranslatedLabels.d.ts +85 -0
  234. package/useTranslatedLabels.js +20 -0
  235. package/utils/BaseTypography.d.ts +21 -0
  236. package/utils/BaseTypography.js +108 -0
  237. package/utils/FocusLock.d.ts +13 -0
  238. package/utils/FocusLock.js +138 -0
  239. package/wizard/Wizard.js +37 -42
  240. package/wizard/Wizard.stories.tsx +40 -1
  241. package/wizard/Wizard.test.js +1 -1
  242. package/wizard/types.d.ts +3 -3
  243. package/common/RequiredComponent.js +0 -32
  244. package/list/List.d.ts +0 -4
  245. package/list/List.js +0 -47
  246. package/list/List.stories.tsx +0 -95
  247. package/list/types.d.ts +0 -7
  248. package/radio/Radio.d.ts +0 -4
  249. package/radio/Radio.js +0 -173
  250. package/radio/Radio.stories.tsx +0 -192
  251. package/radio/Radio.test.js +0 -71
  252. package/radio/types.d.ts +0 -54
  253. package/row/Row.d.ts +0 -3
  254. package/row/Row.js +0 -127
  255. package/row/Row.stories.tsx +0 -237
  256. package/row/types.d.ts +0 -28
  257. package/stack/Stack.d.ts +0 -3
  258. package/stack/Stack.js +0 -97
  259. package/stack/Stack.stories.tsx +0 -164
  260. package/stack/types.d.ts +0 -24
  261. package/text/Text.d.ts +0 -7
  262. package/text/Text.js +0 -30
  263. package/text/Text.stories.tsx +0 -19
  264. /package/{list → bulleted-list}/types.js +0 -0
  265. /package/{radio → flex}/types.js +0 -0
  266. /package/{row → grid}/types.js +0 -0
  267. /package/{stack → nav-tabs}/types.js +0 -0
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { ListboxProps } from "./types";
3
- declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<ListboxProps & React.RefAttributes<HTMLUListElement>>>;
3
+ declare const _default: React.MemoExoticComponent<({ id, currentValue, options, visualFocusIndex, lastOptionIndex, multiple, optional, optionalItem, searchable, handleOptionOnClick, styles, }: ListboxProps) => JSX.Element>;
4
4
  export default _default;
package/select/Listbox.js CHANGED
@@ -11,11 +11,11 @@ exports["default"] = void 0;
11
11
 
12
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
13
 
14
- var _react = _interopRequireDefault(require("react"));
14
+ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
16
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
17
17
 
18
- var _useTheme = _interopRequireDefault(require("../useTheme"));
18
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
19
19
 
20
20
  var _Option = _interopRequireDefault(require("./Option"));
21
21
 
@@ -35,7 +35,7 @@ var groupsHaveOptions = function groupsHaveOptions(options) {
35
35
  }) : true;
36
36
  };
37
37
 
38
- var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
38
+ var Listbox = function Listbox(_ref) {
39
39
  var id = _ref.id,
40
40
  currentValue = _ref.currentValue,
41
41
  options = _ref.options,
@@ -45,9 +45,11 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
45
45
  optional = _ref.optional,
46
46
  optionalItem = _ref.optionalItem,
47
47
  searchable = _ref.searchable,
48
- handleOptionOnClick = _ref.handleOptionOnClick;
49
- var colorsTheme = (0, _useTheme["default"])();
50
- var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
48
+ handleOptionOnClick = _ref.handleOptionOnClick,
49
+ styles = _ref.styles;
50
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
51
+ var listboxRef = (0, _react.useRef)(null);
52
+ var globalIndex = optional && !multiple ? 0 : -1;
51
53
 
52
54
  var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
53
55
  if (option.options) {
@@ -89,9 +91,27 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
89
91
  }
90
92
  };
91
93
 
92
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
93
- theme: colorsTheme.select
94
- }, /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
94
+ (0, _react.useLayoutEffect)(function () {
95
+ if (currentValue && !multiple) {
96
+ var _listEl$scrollTo;
97
+
98
+ var listEl = listboxRef === null || listboxRef === void 0 ? void 0 : listboxRef.current;
99
+ var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
100
+ listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
101
+ top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
102
+ });
103
+ }
104
+ }, [currentValue, multiple]);
105
+ (0, _react.useLayoutEffect)(function () {
106
+ var _listboxRef$current, _visualFocusedOptionE;
107
+
108
+ var visualFocusedOptionEl = listboxRef === null || listboxRef === void 0 ? void 0 : (_listboxRef$current = listboxRef.current) === null || _listboxRef$current === void 0 ? void 0 : _listboxRef$current.querySelectorAll("[role='option']")[visualFocusIndex];
109
+ visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
110
+ block: "nearest",
111
+ inline: "start"
112
+ });
113
+ }, [visualFocusIndex]);
114
+ return /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
95
115
  id: id,
96
116
  onClick: function onClick(event) {
97
117
  event.stopPropagation();
@@ -99,11 +119,12 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
99
119
  onMouseDown: function onMouseDown(event) {
100
120
  event.preventDefault();
101
121
  },
102
- ref: ref,
122
+ ref: listboxRef,
103
123
  role: "listbox",
104
124
  "aria-multiselectable": multiple,
105
- "aria-orientation": "vertical"
106
- }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), "No matches found") : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
125
+ style: styles
126
+ }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), translatedLabels.select.noMatchesErrorMessage) : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
127
+ key: "option-".concat(optionalItem.value),
107
128
  id: "option-".concat(0),
108
129
  option: optionalItem,
109
130
  onClick: handleOptionOnClick,
@@ -112,10 +133,10 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
112
133
  isGroupedOption: false,
113
134
  isLastOption: lastOptionIndex === 0,
114
135
  isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
115
- }), options.map(mapOptionFunc)));
116
- });
136
+ }), options.map(mapOptionFunc));
137
+ };
117
138
 
118
- var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (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) {
139
+ var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 304px;\n overflow-y: auto;\n margin: 0;\n padding: 0.25rem 0;\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) {
119
140
  return props.theme.listDialogBackgroundColor;
120
141
  }, function (props) {
121
142
  return props.theme.listDialogBorderColor;
package/select/Option.js CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
@@ -13,19 +11,13 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
13
11
 
14
12
  var _react = _interopRequireDefault(require("react"));
15
13
 
16
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
-
18
- var _useTheme = _interopRequireDefault(require("../useTheme"));
14
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
19
15
 
20
16
  var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
21
17
 
22
18
  var _Icons = _interopRequireDefault(require("./Icons"));
23
19
 
24
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
25
-
26
- 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); }
27
-
28
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
29
21
 
30
22
  var Option = function Option(_ref) {
31
23
  var id = _ref.id,
@@ -37,10 +29,7 @@ var Option = function Option(_ref) {
37
29
  isGroupedOption = _ref$isGroupedOption === void 0 ? false : _ref$isGroupedOption,
38
30
  isLastOption = _ref.isLastOption,
39
31
  isSelected = _ref.isSelected;
40
- var colorsTheme = (0, _useTheme["default"])();
41
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
42
- theme: colorsTheme.select
43
- }, /*#__PURE__*/_react["default"].createElement(OptionItem, {
32
+ return /*#__PURE__*/_react["default"].createElement(OptionItem, {
44
33
  id: id,
45
34
  onClick: function onClick() {
46
35
  _onClick(option);
@@ -62,13 +51,13 @@ var Option = function Option(_ref) {
62
51
  grouped: isGroupedOption,
63
52
  multiple: multiple,
64
53
  role: !(typeof option.icon === "string") ? "img" : undefined
65
- }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(OptionIconImg, {
54
+ }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
66
55
  src: option.icon
67
56
  }) : option.icon), /*#__PURE__*/_react["default"].createElement(OptionContent, {
68
57
  grouped: isGroupedOption,
69
58
  hasIcon: option.icon ? true : false,
70
59
  multiple: multiple
71
- }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, _Icons["default"].selected)))));
60
+ }, /*#__PURE__*/_react["default"].createElement(OptionLabel, null, option.label), !multiple && isSelected && /*#__PURE__*/_react["default"].createElement(OptionSelectedIndicator, null, _Icons["default"].selected))));
72
61
  };
73
62
 
74
63
  var OptionItem = _styledComponents["default"].li(_templateObject || (_templateObject = (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) {
@@ -87,21 +76,19 @@ var StyledOption = _styledComponents["default"].span(_templateObject2 || (_templ
87
76
  return props.last || props.visualFocused || props.selected ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
88
77
  });
89
78
 
90
- var OptionIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (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) {
91
- return props.grouped && !props.multiple ? "padding-left: 16px;" : "padding-left: 8px;";
79
+ var OptionIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.125rem;\n margin-left: ", ";\n color: ", ";\n\n svg,\n img {\n height: 20px;\n width: 20px;\n }\n"])), function (props) {
80
+ return props.grouped && !props.multiple ? "16px" : "8px";
92
81
  }, function (props) {
93
82
  return props.theme.listOptionIconColor;
94
83
  });
95
84
 
96
- var OptionContent = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n width: 100%;\n overflow: hidden;\n ", "\n"])), function (props) {
97
- return props.grouped && !props.multiple && !props.hasIcon ? "padding-left: 16px;" : "padding-left: 8px;";
85
+ var OptionContent = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n gap: 0.25rem;\n width: 100%;\n overflow: hidden;\n margin-left: ", ";\n"])), function (props) {
86
+ return props.grouped && !props.multiple && !props.hasIcon ? "16px" : "8px";
98
87
  });
99
88
 
100
- var OptionIconImg = _styledComponents["default"].img(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: 16px;\n height: 16px;\n"])));
101
-
102
- var OptionLabel = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
89
+ var OptionLabel = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
103
90
 
104
- var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 16px;\n width: 16px;\n margin-left: 4px;\n color: ", ";\n"])), function (props) {
91
+ var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n\n svg {\n width: 16px;\n height: 16px;\n }\n"])), function (props) {
105
92
  return props.theme.selectedListOptionIconColor;
106
93
  });
107
94
 
package/select/Select.js CHANGED
@@ -23,26 +23,26 @@ 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");
31
33
 
32
34
  var _Icons = _interopRequireDefault(require("./Icons"));
33
35
 
34
36
  var _Listbox = _interopRequireDefault(require("./Listbox"));
35
37
 
38
+ var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
39
+
36
40
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
37
41
 
38
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); }
39
43
 
40
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; }
41
45
 
42
- var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
43
- return "This field is required. Please, enter a value.";
44
- };
45
-
46
46
  var groupsHaveOptions = function groupsHaveOptions(innerOptions) {
47
47
  return innerOptions[0].hasOwnProperty("options") ? innerOptions[0].options ? innerOptions.some(function (groupOption) {
48
48
  return groupOption.options.length > 0;
@@ -57,6 +57,10 @@ var filteredGroupsHaveOptions = function filteredGroupsHaveOptions(filteredOptio
57
57
  }) : true;
58
58
  };
59
59
 
60
+ var canOpenOptions = function canOpenOptions(options, disabled) {
61
+ return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
62
+ };
63
+
60
64
  var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
61
65
  if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
62
66
  if (options[0].options) return options.map(function (optionGroup) {
@@ -95,9 +99,9 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
95
99
  options.forEach(function (option) {
96
100
  if (option.options) {
97
101
  option.options.forEach(function (singleOption) {
98
- if (value.includes(singleOption.value)) selectedOption.push(singleOption);
102
+ if (value.includes(singleOption.value) && Array.isArray(selectedOption)) selectedOption.push(singleOption);
99
103
  });
100
- } else if (value.includes(option.value)) selectedOption.push(option);
104
+ } else if (value.includes(option.value) && Array.isArray(selectedOption)) selectedOption.push(option);
101
105
  });
102
106
  }
103
107
  } else {
@@ -132,8 +136,34 @@ var getSelectedOption = function getSelectedOption(value, options, multiple, opt
132
136
  };
133
137
  };
134
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
+
135
165
  var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
136
- var _selectedOption$label;
166
+ var _ref4, _selectedOption$label;
137
167
 
138
168
  var label = _ref.label,
139
169
  _ref$name = _ref.name,
@@ -161,38 +191,39 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
161
191
  _ref$tabIndex = _ref.tabIndex,
162
192
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
163
193
 
164
- var _useState = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
165
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
166
- 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];
167
197
 
168
198
  var selectLabelId = "label-".concat(selectId);
169
199
  var errorId = "error-".concat(selectId);
170
200
  var optionsListId = "".concat(selectId, "-listbox");
171
201
 
172
- var _useState3 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
173
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
174
- innerValue = _useState4[0],
175
- setInnerValue = _useState4[1];
176
-
177
- var _useState5 = (0, _react.useState)(""),
202
+ var _useState5 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : ""),
178
203
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
179
- searchValue = _useState6[0],
180
- setSearchValue = _useState6[1];
204
+ innerValue = _useState6[0],
205
+ setInnerValue = _useState6[1];
181
206
 
182
- var _useState7 = (0, _react.useState)(-1),
207
+ var _useState7 = (0, _react.useState)(""),
183
208
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
184
- visualFocusIndex = _useState8[0],
185
- changeVisualFocusIndex = _useState8[1];
209
+ searchValue = _useState8[0],
210
+ setSearchValue = _useState8[1];
186
211
 
187
- var _useState9 = (0, _react.useState)(false),
212
+ var _useState9 = (0, _react.useState)(-1),
188
213
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
189
- isOpen = _useState10[0],
190
- 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];
191
221
 
192
- var selectContainerRef = (0, _react.useRef)(null);
222
+ var selectRef = (0, _react.useRef)(null);
193
223
  var selectSearchInputRef = (0, _react.useRef)(null);
194
- var selectOptionsListRef = (0, _react.useRef)(null);
224
+ var width = useWidth(selectRef.current);
195
225
  var colorsTheme = (0, _useTheme["default"])();
226
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
196
227
  var optionalItem = {
197
228
  label: placeholder,
198
229
  value: ""
@@ -210,20 +241,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
210
241
  selectedOption = _useMemo.selectedOption,
211
242
  singleSelectionIndex = _useMemo.singleSelectionIndex;
212
243
 
213
- var notOptionalCheck = function notOptionalCheck(value) {
214
- return !optional && value === "";
215
- };
216
-
217
- var notOptionalMultipleCheck = function notOptionalMultipleCheck(value) {
218
- return !optional && value.length === 0;
219
- };
220
-
221
- var canBeOpenOptions = function canBeOpenOptions() {
222
- return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions(options);
223
- };
224
-
225
244
  var openOptions = function openOptions() {
226
- if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
245
+ if (!isOpen && canOpenOptions(options, disabled)) changeIsOpen(true);
227
246
  };
228
247
 
229
248
  var closeOptions = function closeOptions() {
@@ -234,27 +253,23 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
234
253
  };
235
254
 
236
255
  var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
256
+ var newValue;
257
+
237
258
  if (multiple) {
238
- var res = [];
239
- if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) res = (value !== null && value !== void 0 ? value : innerValue).filter(function (optionVal) {
259
+ var _ref2, _ref3;
260
+
261
+ if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) newValue = ((_ref2 = value && Array.isArray(value) && value) !== null && _ref2 !== void 0 ? _ref2 : innerValue && Array.isArray(innerValue) && innerValue).filter(function (optionVal) {
240
262
  return optionVal !== newOption.value;
241
- });else res = [].concat((0, _toConsumableArray2["default"])(value !== null && value !== void 0 ? value : innerValue), [newOption.value]);
242
- value !== null && value !== void 0 ? value : setInnerValue(res);
243
- if (notOptionalMultipleCheck(res)) onChange === null || onChange === void 0 ? void 0 : onChange({
244
- value: res,
245
- error: getNotOptionalErrorMessage()
246
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
247
- value: res
248
- });
249
- } else {
250
- value !== null && value !== void 0 ? value : setInnerValue(newOption.value);
251
- if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
252
- value: newOption.value,
253
- error: getNotOptionalErrorMessage()
254
- });else onChange === null || onChange === void 0 ? void 0 : onChange({
255
- value: newOption.value
256
- });
257
- }
263
+ });else newValue = [].concat((0, _toConsumableArray2["default"])((_ref3 = value && Array.isArray(value) && value) !== null && _ref3 !== void 0 ? _ref3 : innerValue && Array.isArray(innerValue) && innerValue), [newOption.value]);
264
+ } else newValue = newOption.value;
265
+
266
+ value !== null && value !== void 0 ? value : setInnerValue(newValue);
267
+ notOptionalCheck(newValue, multiple, optional) ? onChange === null || onChange === void 0 ? void 0 : onChange({
268
+ value: newValue,
269
+ error: translatedLabels.formFields.requiredValueErrorMessage
270
+ }) : onChange === null || onChange === void 0 ? void 0 : onChange({
271
+ value: newValue
272
+ });
258
273
  };
259
274
 
260
275
  var handleSelectOnClick = function handleSelectOnClick() {
@@ -275,19 +290,20 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
275
290
  if (!event.currentTarget.contains(event.relatedTarget)) {
276
291
  closeOptions();
277
292
  setSearchValue("");
278
- if (notOptionalCheck(value !== null && value !== void 0 ? value : innerValue)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
279
- value: value !== null && value !== void 0 ? value : innerValue,
280
- error: getNotOptionalErrorMessage()
281
- });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
282
- value: value !== null && value !== void 0 ? value : innerValue
293
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
294
+ notOptionalCheck(currentValue, multiple, optional) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
295
+ value: currentValue,
296
+ error: translatedLabels.formFields.requiredValueErrorMessage
297
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
298
+ value: currentValue
283
299
  });
284
300
  }
285
301
  };
286
302
 
287
303
  var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
288
- switch (event.keyCode) {
289
- case 40:
290
- // Arrow Down
304
+ switch (event.key) {
305
+ case "Down":
306
+ case "ArrowDown":
291
307
  event.preventDefault();
292
308
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
293
309
  if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
@@ -295,8 +311,8 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
295
311
  openOptions();
296
312
  break;
297
313
 
298
- case 38:
299
- // Arrow Up
314
+ case "Up":
315
+ case "ArrowUp":
300
316
  event.preventDefault();
301
317
  singleSelectionIndex !== undefined && (!isOpen || visualFocusIndex === -1 && singleSelectionIndex > -1 && singleSelectionIndex <= lastOptionIndex) ? changeVisualFocusIndex(singleSelectionIndex) : changeVisualFocusIndex(function (visualFocusIndex) {
302
318
  return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
@@ -304,15 +320,14 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
304
320
  openOptions();
305
321
  break;
306
322
 
307
- case 27:
308
- // Esc
323
+ case "Esc":
324
+ case "Escape":
309
325
  event.preventDefault();
310
326
  closeOptions();
311
327
  setSearchValue("");
312
328
  break;
313
329
 
314
- case 13:
315
- // Enter
330
+ case "Enter":
316
331
  if (isOpen && visualFocusIndex >= 0) {
317
332
  var accLength = optional && !multiple ? 1 : 0;
318
333
 
@@ -353,7 +368,7 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
353
368
  value !== null && value !== void 0 ? value : setInnerValue([]);
354
369
  !optional ? onChange === null || onChange === void 0 ? void 0 : onChange({
355
370
  value: [],
356
- error: getNotOptionalErrorMessage()
371
+ error: translatedLabels.formFields.requiredValueErrorMessage
357
372
  }) : onChange === null || onChange === void 0 ? void 0 : onChange({
358
373
  value: []
359
374
  });
@@ -369,26 +384,6 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
369
384
  !multiple && closeOptions();
370
385
  setSearchValue("");
371
386
  }, [handleSelectChangeValue, closeOptions, multiple]);
372
- (0, _react.useLayoutEffect)(function () {
373
- if (isOpen && singleSelectionIndex) {
374
- var _listEl$scrollTo;
375
-
376
- var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
377
- var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
378
- listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
379
- top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
380
- });
381
- }
382
- }, [isOpen]);
383
- (0, _react.useLayoutEffect)(function () {
384
- var _selectOptionsListRef, _visualFocusedOptionE;
385
-
386
- var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
387
- visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
388
- block: "nearest",
389
- inline: "start"
390
- });
391
- }, [visualFocusIndex]);
392
387
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
393
388
  theme: colorsTheme.select
394
389
  }, /*#__PURE__*/_react["default"].createElement(SelectContainer, {
@@ -399,12 +394,17 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
399
394
  id: selectLabelId,
400
395
  disabled: disabled,
401
396
  onClick: function onClick() {
402
- selectContainerRef.current.focus();
397
+ selectRef.current.focus();
403
398
  },
404
399
  helperText: helperText
405
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
400
+ }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
406
401
  disabled: disabled
407
- }, helperText), /*#__PURE__*/_react["default"].createElement(Select, {
402
+ }, helperText), /*#__PURE__*/_react["default"].createElement(Popover.Root, {
403
+ open: isOpen
404
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
405
+ asChild: true,
406
+ type: undefined
407
+ }, /*#__PURE__*/_react["default"].createElement(Select, {
408
408
  id: selectId,
409
409
  disabled: disabled,
410
410
  error: error,
@@ -412,19 +412,19 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
412
412
  onClick: handleSelectOnClick,
413
413
  onFocus: handleSelectOnFocus,
414
414
  onKeyDown: handleSelectOnKeyDown,
415
- ref: selectContainerRef,
416
- tabIndex: tabIndex,
415
+ ref: selectRef,
416
+ tabIndex: disabled ? -1 : tabIndex,
417
417
  role: "combobox",
418
418
  "aria-controls": optionsListId,
419
419
  "aria-disabled": disabled,
420
420
  "aria-expanded": isOpen,
421
421
  "aria-haspopup": "listbox",
422
- "aria-labelledby": selectLabelId,
422
+ "aria-labelledby": label ? selectLabelId : undefined,
423
423
  "aria-activedescendant": visualFocusIndex >= 0 ? "option-".concat(visualFocusIndex) : undefined,
424
- "aria-invalid": error ? "true" : "false",
424
+ "aria-invalid": error ? true : false,
425
425
  "aria-errormessage": error ? errorId : undefined,
426
426
  "aria-required": !disabled && !optional
427
- }, multiple && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
427
+ }, multiple && Array.isArray(selectedOption) && selectedOption.length > 0 && /*#__PURE__*/_react["default"].createElement(SelectionIndicator, null, /*#__PURE__*/_react["default"].createElement(SelectionNumber, {
428
428
  disabled: disabled
429
429
  }, selectedOption.length), /*#__PURE__*/_react["default"].createElement(ClearOptionsAction, {
430
430
  disabled: disabled,
@@ -434,11 +434,12 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
434
434
  },
435
435
  onClick: handleClearOptionsActionOnClick,
436
436
  tabIndex: -1,
437
- title: "Clear selection",
438
- "aria-label": "Clear selection"
437
+ title: translatedLabels.select.actionClearSelectionTitle,
438
+ "aria-label": translatedLabels.select.actionClearSelectionTitle
439
439
  }, _Icons["default"].clear)), /*#__PURE__*/_react["default"].createElement(SearchableValueContainer, null, /*#__PURE__*/_react["default"].createElement(ValueInput, {
440
440
  name: name,
441
- value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
441
+ disabled: disabled,
442
+ value: multiple ? ((_ref4 = value && Array.isArray(value) && value) !== null && _ref4 !== void 0 ? _ref4 : innerValue && Array.isArray(innerValue) && innerValue).join(",") : value !== null && value !== void 0 ? value : innerValue,
442
443
  readOnly: true,
443
444
  "aria-hidden": "true"
444
445
  }), searchable && /*#__PURE__*/_react["default"].createElement(SearchInput, {
@@ -452,9 +453,9 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
452
453
  }), (!searchable || searchValue === "") && (multiple ? /*#__PURE__*/_react["default"].createElement(SelectedOption, {
453
454
  disabled: disabled,
454
455
  atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || searchable && isOpen
455
- }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, selectedOption.map(function (option) {
456
+ }, /*#__PURE__*/_react["default"].createElement(SelectedOptionLabel, null, Array.isArray(selectedOption) && selectedOption.map(function (option) {
456
457
  return option.label;
457
- }).join(", ")), selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
458
+ }).join(", ")), Array.isArray(selectedOption) && selectedOption.length === 0 && placeholder) : /*#__PURE__*/_react["default"].createElement(SelectedOption, {
458
459
  disabled: disabled,
459
460
  atBackground: !(value !== null && value !== void 0 ? value : innerValue) || searchable && isOpen
460
461
  }, /*#__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, {
@@ -464,11 +465,21 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
464
465
  },
465
466
  onClick: handleClearSearchActionOnClick,
466
467
  tabIndex: -1,
467
- title: "Clear search",
468
- "aria-label": "Clear search"
468
+ title: translatedLabels.select.actionClearSearchTitle,
469
+ "aria-label": translatedLabels.select.actionClearSearchTitle
469
470
  }, _Icons["default"].clear), /*#__PURE__*/_react["default"].createElement(CollapseIndicator, {
470
471
  disabled: disabled
471
- }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown), isOpen && /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
472
+ }, isOpen ? _Icons["default"].arrowUp : _Icons["default"].arrowDown))), /*#__PURE__*/_react["default"].createElement(Popover.Content, {
473
+ sideOffset: 4,
474
+ onOpenAutoFocus: function onOpenAutoFocus(event) {
475
+ // Avoid select to lose focus when the list is opened
476
+ event.preventDefault();
477
+ },
478
+ onCloseAutoFocus: function onCloseAutoFocus(event) {
479
+ // Avoid select to lose focus when the list is closed
480
+ event.preventDefault();
481
+ }
482
+ }, /*#__PURE__*/_react["default"].createElement(_Listbox["default"], {
472
483
  id: optionsListId,
473
484
  currentValue: value !== null && value !== void 0 ? value : innerValue,
474
485
  options: searchable ? filteredOptions : options,
@@ -479,8 +490,10 @@ var DxcSelect = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
479
490
  optionalItem: optionalItem,
480
491
  searchable: searchable,
481
492
  handleOptionOnClick: handleOptionOnClick,
482
- ref: selectOptionsListRef
483
- })), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
493
+ styles: {
494
+ width: width
495
+ }
496
+ }))), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
484
497
  id: errorId,
485
498
  "aria-live": error ? "assertive" : "off"
486
499
  }, error)));
@@ -579,9 +592,7 @@ var SelectionNumber = _styledComponents["default"].span(_templateObject7 || (_te
579
592
  return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
580
593
  });
581
594
 
582
- var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n font-size: 1rem;\n font-family: ", ";\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n svg {\n line-height: 18px;\n }\n"])), function (props) {
583
- return props.theme.fontFamily;
584
- }, function (props) {
595
+ var ClearOptionsAction = _styledComponents["default"].button(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n width: 23px;\n height: 22px;\n border: none;\n padding: 0.25rem;\n ", "\n background-color: ", ";\n color: ", ";\n\n :focus-visible {\n outline: none;\n }\n ", "\n\n svg {\n line-height: 18px;\n }\n"])), function (props) {
585
596
  return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
586
597
  }, function (props) {
587
598
  return props.disabled ? "transparent" : props.theme.enabledSelectionIndicatorActionBackgroundColor;