@dxc-technology/halstack-react 0.0.0-669d8de → 0.0.0-69ca263

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 (221) hide show
  1. package/README.md +1 -1
  2. package/babel.config.js +0 -1
  3. package/dist/ThemeContext.js +134 -100
  4. package/dist/V3Select/V3Select.js +549 -0
  5. package/dist/V3Select/index.d.ts +27 -0
  6. package/dist/V3Textarea/V3Textarea.js +264 -0
  7. package/dist/V3Textarea/index.d.ts +27 -0
  8. package/dist/accordion/Accordion.js +44 -39
  9. package/dist/accordion/index.d.ts +28 -0
  10. package/dist/accordion-group/AccordionGroup.js +1 -3
  11. package/dist/accordion-group/index.d.ts +16 -0
  12. package/dist/alert/Alert.js +6 -6
  13. package/dist/alert/index.d.ts +51 -0
  14. package/dist/box/index.d.ts +25 -0
  15. package/dist/button/Button.js +31 -24
  16. package/dist/button/index.d.ts +24 -0
  17. package/dist/card/index.d.ts +22 -0
  18. package/dist/checkbox/Checkbox.js +22 -17
  19. package/dist/checkbox/index.d.ts +24 -0
  20. package/dist/chip/index.d.ts +22 -0
  21. package/dist/common/variables.js +535 -393
  22. package/dist/date/Date.js +5 -7
  23. package/dist/date/index.d.ts +27 -0
  24. package/dist/{new-date/NewDate.js → date-input/DateInput.js} +69 -72
  25. package/dist/date-input/index.d.ts +95 -0
  26. package/dist/dialog/Dialog.js +8 -30
  27. package/dist/dialog/index.d.ts +18 -0
  28. package/dist/dropdown/Dropdown.js +108 -68
  29. package/dist/dropdown/index.d.ts +26 -0
  30. package/dist/file-input/FileInput.js +644 -0
  31. package/dist/file-input/FileItem.js +287 -0
  32. package/dist/file-input/index.d.ts +81 -0
  33. package/dist/footer/Footer.js +44 -18
  34. package/dist/footer/Icons.js +77 -0
  35. package/dist/footer/index.d.ts +25 -0
  36. package/dist/header/Header.js +115 -68
  37. package/dist/header/Icons.js +59 -0
  38. package/dist/header/index.d.ts +25 -0
  39. package/dist/heading/Heading.js +12 -0
  40. package/dist/heading/index.d.ts +17 -0
  41. package/dist/input-text/Icons.js +22 -0
  42. package/dist/input-text/InputText.js +4 -6
  43. package/dist/input-text/index.d.ts +36 -0
  44. package/dist/layout/ApplicationLayout.js +5 -9
  45. package/dist/layout/Icons.js +55 -0
  46. package/dist/link/Link.js +4 -8
  47. package/dist/link/index.d.ts +23 -0
  48. package/dist/main.d.ts +40 -0
  49. package/dist/main.js +38 -30
  50. package/dist/{number/Number.js → number-input/NumberInput.js} +9 -11
  51. package/dist/{number/NumberContext.js → number-input/NumberInputContext.js} +2 -2
  52. package/dist/number-input/index.d.ts +113 -0
  53. package/dist/paginator/Icons.js +66 -0
  54. package/dist/paginator/Paginator.js +53 -37
  55. package/dist/paginator/index.d.ts +20 -0
  56. package/dist/{password/Password.js → password-input/PasswordInput.js} +17 -14
  57. package/dist/password-input/index.d.ts +94 -0
  58. package/dist/progress-bar/ProgressBar.js +62 -26
  59. package/dist/progress-bar/index.d.ts +18 -0
  60. package/dist/radio/index.d.ts +23 -0
  61. package/dist/resultsetTable/index.d.ts +19 -0
  62. package/dist/select/Select.js +869 -358
  63. package/dist/select/index.d.ts +53 -0
  64. package/dist/sidenav/Sidenav.js +6 -4
  65. package/dist/sidenav/index.d.ts +13 -0
  66. package/dist/slider/Slider.js +155 -66
  67. package/dist/slider/index.d.ts +29 -0
  68. package/dist/spinner/Spinner.js +217 -54
  69. package/dist/spinner/index.d.ts +17 -0
  70. package/dist/stories/Button.js +71 -0
  71. package/dist/stories/Button.stories.js +55 -0
  72. package/dist/stories/Header.js +67 -0
  73. package/dist/stories/Header.stories.js +31 -0
  74. package/dist/stories/Introduction.stories.mdx +211 -0
  75. package/dist/stories/Page.js +68 -0
  76. package/dist/stories/Page.stories.js +39 -0
  77. package/dist/stories/assets/code-brackets.svg +1 -0
  78. package/dist/stories/assets/colors.svg +1 -0
  79. package/dist/stories/assets/comments.svg +1 -0
  80. package/dist/stories/assets/direction.svg +1 -0
  81. package/dist/stories/assets/flow.svg +1 -0
  82. package/dist/stories/assets/plugin.svg +1 -0
  83. package/dist/stories/assets/repo.svg +1 -0
  84. package/dist/stories/assets/stackalt.svg +1 -0
  85. package/dist/stories/button.css +30 -0
  86. package/dist/stories/header.css +26 -0
  87. package/dist/stories/page.css +69 -0
  88. package/dist/switch/index.d.ts +24 -0
  89. package/dist/table/index.d.ts +13 -0
  90. package/dist/tabs/index.d.ts +19 -0
  91. package/dist/tag/Tag.js +26 -32
  92. package/dist/tag/index.d.ts +24 -0
  93. package/dist/{new-input-text/NewInputText.js → text-input/TextInput.js} +186 -173
  94. package/dist/text-input/index.d.ts +135 -0
  95. package/dist/textarea/Textarea.js +227 -122
  96. package/dist/textarea/index.d.ts +117 -0
  97. package/dist/toggle/index.d.ts +21 -0
  98. package/dist/toggle-group/ToggleGroup.js +130 -44
  99. package/dist/toggle-group/index.d.ts +21 -0
  100. package/dist/upload/buttons-upload/ButtonsUpload.js +7 -11
  101. package/dist/upload/buttons-upload/Icons.js +40 -0
  102. package/dist/upload/dragAndDropArea/DragAndDropArea.js +14 -14
  103. package/dist/upload/dragAndDropArea/Icons.js +39 -0
  104. package/dist/upload/file-upload/FileToUpload.js +26 -21
  105. package/dist/upload/file-upload/Icons.js +66 -0
  106. package/dist/upload/index.d.ts +15 -0
  107. package/dist/upload/transaction/Icons.js +160 -0
  108. package/dist/upload/transaction/Transaction.js +11 -38
  109. package/dist/wizard/Icons.js +65 -0
  110. package/dist/wizard/Wizard.js +3 -9
  111. package/dist/wizard/index.d.ts +18 -0
  112. package/package.json +15 -10
  113. package/test/Date.test.js +13 -11
  114. package/test/{NewDate.test.js → DateInput.test.js} +66 -27
  115. package/test/FileInput.test.js +201 -0
  116. package/test/Footer.test.js +2 -7
  117. package/test/Header.test.js +5 -10
  118. package/test/Heading.test.js +60 -12
  119. package/test/InputText.test.js +1 -2
  120. package/test/{Number.test.js → NumberInput.test.js} +84 -66
  121. package/test/Paginator.test.js +6 -2
  122. package/test/PasswordInput.test.js +83 -0
  123. package/test/ResultsetTable.test.js +6 -6
  124. package/test/Select.test.js +371 -145
  125. package/test/Slider.test.js +9 -17
  126. package/test/Spinner.test.js +5 -0
  127. package/test/{NewInputText.test.js → TextInput.test.js} +148 -233
  128. package/test/Textarea.test.js +193 -0
  129. package/test/ToggleGroup.test.js +5 -1
  130. package/test/Upload.test.js +1 -1
  131. package/test/V3Select.test.js +212 -0
  132. package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
  133. package/dist/accordion/Accordion.stories.js +0 -207
  134. package/dist/accordion/readme.md +0 -96
  135. package/dist/accordion-group/AccordionGroup.stories.js +0 -207
  136. package/dist/accordion-group/readme.md +0 -70
  137. package/dist/button/Button.stories.js +0 -224
  138. package/dist/button/readme.md +0 -93
  139. package/dist/checkbox/Checkbox.stories.js +0 -144
  140. package/dist/checkbox/readme.md +0 -116
  141. package/dist/date/Date.stories.js +0 -205
  142. package/dist/date/readme.md +0 -73
  143. package/dist/dialog/Dialog.stories.js +0 -217
  144. package/dist/dialog/readme.md +0 -32
  145. package/dist/dropdown/Dropdown.stories.js +0 -249
  146. package/dist/dropdown/baseline-arrow_drop_down.svg +0 -1
  147. package/dist/dropdown/baseline-arrow_drop_down_wh.svg +0 -4
  148. package/dist/dropdown/baseline-arrow_drop_up.svg +0 -1
  149. package/dist/dropdown/baseline-arrow_drop_up_wh.svg +0 -4
  150. package/dist/dropdown/readme.md +0 -69
  151. package/dist/footer/Footer.stories.js +0 -94
  152. package/dist/footer/dxc_logo.svg +0 -15
  153. package/dist/footer/readme.md +0 -41
  154. package/dist/header/Header.stories.js +0 -176
  155. package/dist/header/close_icon.svg +0 -1
  156. package/dist/header/dxc_logo_black.svg +0 -8
  157. package/dist/header/hamb_menu_black.svg +0 -1
  158. package/dist/header/hamb_menu_white.svg +0 -1
  159. package/dist/header/readme.md +0 -33
  160. package/dist/input-text/InputText.stories.js +0 -209
  161. package/dist/input-text/error.svg +0 -1
  162. package/dist/input-text/readme.md +0 -91
  163. package/dist/layout/facebook.svg +0 -45
  164. package/dist/layout/linkedin.svg +0 -50
  165. package/dist/layout/twitter.svg +0 -53
  166. package/dist/link/readme.md +0 -51
  167. package/dist/new-textarea/NewTextarea.js +0 -346
  168. package/dist/paginator/images/next.svg +0 -3
  169. package/dist/paginator/images/nextPage.svg +0 -3
  170. package/dist/paginator/images/previous.svg +0 -3
  171. package/dist/paginator/images/previousPage.svg +0 -3
  172. package/dist/paginator/readme.md +0 -50
  173. package/dist/password/styles.css +0 -3
  174. package/dist/progress-bar/ProgressBar.stories.js +0 -280
  175. package/dist/progress-bar/readme.md +0 -63
  176. package/dist/radio/Radio.stories.js +0 -166
  177. package/dist/radio/readme.md +0 -70
  178. package/dist/resultsetTable/arrow_downward-24px_wht.svg +0 -1
  179. package/dist/resultsetTable/arrow_upward-24px_wht.svg +0 -1
  180. package/dist/resultsetTable/unfold_more-24px_wht.svg +0 -1
  181. package/dist/select/Select.stories.js +0 -235
  182. package/dist/select/readme.md +0 -72
  183. package/dist/slider/Slider.stories.js +0 -241
  184. package/dist/slider/readme.md +0 -64
  185. package/dist/spinner/Spinner.stories.js +0 -183
  186. package/dist/spinner/readme.md +0 -65
  187. package/dist/switch/Switch.stories.js +0 -134
  188. package/dist/switch/readme.md +0 -133
  189. package/dist/tabs/Tabs.stories.js +0 -130
  190. package/dist/tabs/readme.md +0 -78
  191. package/dist/tabs-for-sections/TabsForSections.js +0 -92
  192. package/dist/tabs-for-sections/readme.md +0 -78
  193. package/dist/toggle/Toggle.stories.js +0 -297
  194. package/dist/toggle/readme.md +0 -80
  195. package/dist/toggle-group/readme.md +0 -82
  196. package/dist/upload/Upload.stories.js +0 -72
  197. package/dist/upload/buttons-upload/drag-drop-icon.svg +0 -4
  198. package/dist/upload/buttons-upload/upload-button.svg +0 -1
  199. package/dist/upload/dragAndDropArea/upload_drop.svg +0 -4
  200. package/dist/upload/dragAndDropArea/upload_file.svg +0 -4
  201. package/dist/upload/file-upload/audio-icon.svg +0 -4
  202. package/dist/upload/file-upload/close.svg +0 -4
  203. package/dist/upload/file-upload/file-icon.svg +0 -4
  204. package/dist/upload/file-upload/video-icon.svg +0 -4
  205. package/dist/upload/readme.md +0 -37
  206. package/dist/upload/transaction/audio-icon-err.svg +0 -4
  207. package/dist/upload/transaction/audio-icon.svg +0 -4
  208. package/dist/upload/transaction/error-icon.svg +0 -4
  209. package/dist/upload/transaction/file-icon-err.svg +0 -4
  210. package/dist/upload/transaction/file-icon.svg +0 -4
  211. package/dist/upload/transaction/image-icon-err.svg +0 -4
  212. package/dist/upload/transaction/image-icon.svg +0 -4
  213. package/dist/upload/transaction/success-icon.svg +0 -4
  214. package/dist/upload/transaction/video-icon-err.svg +0 -4
  215. package/dist/upload/transaction/video-icon.svg +0 -4
  216. package/dist/wizard/invalid_icon.svg +0 -5
  217. package/dist/wizard/valid_icon.svg +0 -5
  218. package/dist/wizard/validation-wrong.svg +0 -6
  219. package/test/NewTextarea.test.js +0 -201
  220. package/test/Password.test.js +0 -76
  221. package/test/TabsForSections.test.js +0 -34
@@ -9,48 +9,230 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
13
 
14
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
15
 
16
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
17
-
18
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
19
17
 
20
18
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
21
19
 
22
20
  var _react = _interopRequireWildcard(require("react"));
23
21
 
24
- var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
22
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
25
23
 
26
- var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
24
+ var _useTheme = _interopRequireDefault(require("../useTheme.js"));
27
25
 
28
- var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
26
+ var _variables = require("../common/variables.js");
29
27
 
30
- var _FormHelperText = _interopRequireDefault(require("@material-ui/core/FormHelperText"));
28
+ var _uuid = require("uuid");
31
29
 
32
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
30
+ var _utils = require("../common/utils.js");
33
31
 
34
- var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
32
+ var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
35
33
 
36
- var _styles = require("@material-ui/core/styles");
34
+ function _templateObject28() {
35
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 16px;\n width: 16px;\n margin-left: 4px;\n color: ", ";\n"]);
37
36
 
38
- var _propTypes = _interopRequireDefault(require("prop-types"));
37
+ _templateObject28 = function _templateObject28() {
38
+ return data;
39
+ };
39
40
 
40
- var _Checkbox = _interopRequireDefault(require("../checkbox/Checkbox"));
41
+ return data;
42
+ }
41
43
 
42
- var _variables = require("../common/variables.js");
44
+ function _templateObject27() {
45
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"]);
43
46
 
44
- var _utils = require("../common/utils.js");
47
+ _templateObject27 = function _templateObject27() {
48
+ return data;
49
+ };
45
50
 
46
- var _useTheme = _interopRequireDefault(require("../useTheme.js"));
51
+ return data;
52
+ }
53
+
54
+ function _templateObject26() {
55
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n width: 16px;\n height: 16px;\n"]);
56
+
57
+ _templateObject26 = function _templateObject26() {
58
+ return data;
59
+ };
60
+
61
+ return data;
62
+ }
63
+
64
+ function _templateObject25() {
65
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 24px;\n width: 24px;\n margin-left: 8px;\n color: ", ";\n"]);
66
+
67
+ _templateObject25 = function _templateObject25() {
68
+ return data;
69
+ };
70
+
71
+ return data;
72
+ }
47
73
 
48
- var _RequiredComponent = _interopRequireDefault(require("../common/RequiredComponent"));
74
+ function _templateObject24() {
75
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n width: 100%;\n overflow: hidden;\n padding-left: 8px;\n ", "\n"]);
49
76
 
50
- var _BackgroundColorContext = _interopRequireWildcard(require("../BackgroundColorContext.js"));
77
+ _templateObject24 = function _templateObject24() {
78
+ return data;
79
+ };
80
+
81
+ return data;
82
+ }
83
+
84
+ function _templateObject23() {
85
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 4px 8px 3px 0;\n min-height: 24px;\n ", "\n ", ";\n"]);
86
+
87
+ _templateObject23 = function _templateObject23() {
88
+ return data;
89
+ };
90
+
91
+ return data;
92
+ }
93
+
94
+ function _templateObject22() {
95
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0 8px;\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"]);
96
+
97
+ _templateObject22 = function _templateObject22() {
98
+ return data;
99
+ };
100
+
101
+ return data;
102
+ }
103
+
104
+ function _templateObject21() {
105
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n padding: 4px 16px;\n font-weight: ", ";\n line-height: 1.715em;\n"]);
106
+
107
+ _templateObject21 = function _templateObject21() {
108
+ return data;
109
+ };
110
+
111
+ return data;
112
+ }
113
+
114
+ function _templateObject20() {
115
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"]);
116
+
117
+ _templateObject20 = function _templateObject20() {
118
+ return data;
119
+ };
120
+
121
+ return data;
122
+ }
123
+
124
+ function _templateObject19() {
125
+ var data = (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: calc(1rem * 0.25);\n"]);
126
+
127
+ _templateObject19 = function _templateObject19() {
128
+ return data;
129
+ };
130
+
131
+ return data;
132
+ }
133
+
134
+ function _templateObject18() {
135
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 4px 16px;\n color: ", ";\n font-size: 0.875rem;\n line-height: 1.715em;\n"]);
136
+
137
+ _templateObject18 = function _templateObject18() {
138
+ return data;
139
+ };
140
+
141
+ return data;
142
+ }
143
+
144
+ function _templateObject17() {
145
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n z-index: 1;\n max-height: 304px;\n overflow-x: auto;\n top: calc(100% + 4px);\n left: 0;\n margin: 0;\n padding: 4px 0;\n width: 100%;\n box-sizing: border-box;\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 4px;\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"]);
146
+
147
+ _templateObject17 = function _templateObject17() {
148
+ return data;
149
+ };
150
+
151
+ return data;
152
+ }
153
+
154
+ function _templateObject16() {
155
+ var data = (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: calc(1rem * 0.25);\n ", "\n background-color: ", ";\n color: ", ";\n\n ", "\n\n svg {\n line-height: 18px;\n }\n"]);
156
+
157
+ _templateObject16 = function _templateObject16() {
158
+ return data;
159
+ };
160
+
161
+ return data;
162
+ }
163
+
164
+ function _templateObject15() {
165
+ var data = (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: calc(1rem * 0.25);\n color: ", ";\n"]);
166
+
167
+ _templateObject15 = function _templateObject15() {
168
+ return data;
169
+ };
170
+
171
+ return data;
172
+ }
173
+
174
+ function _templateObject14() {
175
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"]);
176
+
177
+ _templateObject14 = function _templateObject14() {
178
+ return data;
179
+ };
180
+
181
+ return data;
182
+ }
183
+
184
+ function _templateObject13() {
185
+ var data = (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: calc(1rem * 0.25);\n pointer-events: none;\n color: ", ";\n\n svg {\n line-height: 18px;\n font-size: 1.25rem;\n }\n"]);
186
+
187
+ _templateObject13 = function _templateObject13() {
188
+ return data;
189
+ };
190
+
191
+ return data;
192
+ }
193
+
194
+ function _templateObject12() {
195
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n grid-area: 1 / 1 / 1 / 1;\n height: calc(calc(1rem * 2.5) - calc(1px * 2));\n background: none;\n border: none;\n outline: none;\n padding: 0 calc(1rem * 0.5);\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5em;\n"]);
196
+
197
+ _templateObject12 = function _templateObject12() {
198
+ return data;
199
+ };
200
+
201
+ return data;
202
+ }
203
+
204
+ function _templateObject11() {
205
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"]);
206
+
207
+ _templateObject11 = function _templateObject11() {
208
+ return data;
209
+ };
210
+
211
+ return data;
212
+ }
213
+
214
+ function _templateObject10() {
215
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n grid-area: 1 / 1 / 1 / 1;\n display: inline-flex;\n align-items: center;\n height: calc(calc(1rem * 2.5) - calc(1px * 2));\n padding: 0 calc(1rem * 0.5);\n user-select: none;\n overflow: hidden;\n\n color: ", ";\n\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: 1.5em;\n"]);
216
+
217
+ _templateObject10 = function _templateObject10() {
218
+ return data;
219
+ };
220
+
221
+ return data;
222
+ }
223
+
224
+ function _templateObject9() {
225
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: grid;\n width: 100%;\n"]);
226
+
227
+ _templateObject9 = function _templateObject9() {
228
+ return data;
229
+ };
230
+
231
+ return data;
232
+ }
51
233
 
52
234
  function _templateObject8() {
53
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n display: inline-block;\n\n .MuiFormControl-root {\n width: 100%;\n }\n\n .MuiFormHelperText-root {\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n margin-top: 6px;\n\n &.Mui-disabled {\n color: ", ";\n cursor: not-allowed;\n }\n }\n\n .MuiFormLabel-root {\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n margin-top: -3px;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n height: 22px;\n display: flex;\n align-items: center;\n\n &.Mui-disabled {\n color: ", ";\n }\n &.Mui-focused {\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n }\n }\n\n .MuiSelect-select.MuiSelect-select {\n padding-right: unset;\n }\n\n .MuiSelect-select {\n width: 100%;\n height: 20px;\n display: flex;\n padding-right: 10px;\n align-items: center;\n :focus {\n background-color: transparent;\n outline: ", "\n auto 1px;\n }\n & > *:last-child::after {\n content: unset;\n }\n & > *:last-child::before {\n content: unset;\n }\n &.Mui-disabled {\n color: ", ";\n cursor: not-allowed;\n &:focus {\n outline: none;\n }\n }\n }\n .MuiInputBase-input {\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n\n svg {\n color: ", ";\n }\n }\n .MuiInput-underline {\n &.Mui-focused {\n border-bottom-width: ", ";\n border-bottom-color: ", ";\n }\n &.Mui-disabled:before {\n border-bottom-style: solid;\n }\n }\n .MuiInput-underline:hover:not(.Mui-disabled):before {\n border-bottom: ", " solid;\n border-bottom-color: ", ";\n }\n .MuiInput-underline:after {\n border-bottom: ", " solid;\n border-bottom-color: ", ";\n }\n .MuiInput-underline:before {\n border-bottom: ", " solid;\n border-bottom-color: ", ";\n }\n .MuiSelect-icon {\n color: ", " !important;\n }\n & label {\n text-overflow: ellipsis;\n overflow: hidden;\n width: calc(100% - 24px);\n }\n"]);
235
+ var data = (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 padding: 3px;\n ", "\n background-color: ", ";\n color: ", ";\n\n ", "\n\n svg {\n line-height: 18px;\n }\n"]);
54
236
 
55
237
  _templateObject8 = function _templateObject8() {
56
238
  return data;
@@ -60,7 +242,7 @@ function _templateObject8() {
60
242
  }
61
243
 
62
244
  function _templateObject7() {
63
- var data = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n overflow: hidden;\n opacity: ", ";\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"]);
245
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n user-select: none;\n background-color: ", ";\n border-right: 1px solid ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n ", "\n"]);
64
246
 
65
247
  _templateObject7 = function _templateObject7() {
66
248
  return data;
@@ -70,7 +252,7 @@ function _templateObject7() {
70
252
  }
71
253
 
72
254
  function _templateObject6() {
73
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n margin-left: ", ";\n margin-right: ", ";\n"]);
255
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n border: 1px solid ", ";\n border-radius: 2px;\n width: 48px;\n"]);
74
256
 
75
257
  _templateObject6 = function _templateObject6() {
76
258
  return data;
@@ -80,7 +262,7 @@ function _templateObject6() {
80
262
  }
81
263
 
82
264
  function _templateObject5() {
83
- var data = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n display: flex;\n align-items: center;\n flex-direction: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n ", "\n"]);
265
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n position: relative;\n align-items: center;\n height: calc(calc(1rem * 2.5) - calc(1px * 2));\n margin: calc(1rem * 0.25) 0;\n padding: 0 calc(1rem * 0.5);\n outline: none;\n box-shadow: 0 0 0 2px transparent;\n border-radius: 4px;\n border: 1px solid\n ", ";\n ", "\n ", ";\n\n ", ";\n"]);
84
266
 
85
267
  _templateObject5 = function _templateObject5() {
86
268
  return data;
@@ -90,7 +272,7 @@ function _templateObject5() {
90
272
  }
91
273
 
92
274
  function _templateObject4() {
93
- var data = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n margin-left: ", ";\n margin-right: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n"]);
275
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"]);
94
276
 
95
277
  _templateObject4 = function _templateObject4() {
96
278
  return data;
@@ -100,7 +282,7 @@ function _templateObject4() {
100
282
  }
101
283
 
102
284
  function _templateObject3() {
103
- var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n justify-content: ", ";\n margin-right: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n width: ", ";\n\n &::before {\n margin: 0 4px;\n ", ";\n }\n &::after {\n margin: 0 4px;\n ", ";\n }\n"]);
285
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"]);
104
286
 
105
287
  _templateObject3 = function _templateObject3() {
106
288
  return data;
@@ -110,7 +292,7 @@ function _templateObject3() {
110
292
  }
111
293
 
112
294
  function _templateObject2() {
113
- var data = (0, _taggedTemplateLiteral2["default"])(["\n overflow: hidden;\n text-overflow: ellipsis;\n color: ", ";\n"]);
295
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n cursor: default;\n"]);
114
296
 
115
297
  _templateObject2 = function _templateObject2() {
116
298
  return data;
@@ -120,7 +302,7 @@ function _templateObject2() {
120
302
  }
121
303
 
122
304
  function _templateObject() {
123
- var data = (0, _taggedTemplateLiteral2["default"])(["\n width: calc(100% - 24px);\n overflow: hidden;\n text-overflow: ellipsis;\n"]);
305
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"]);
124
306
 
125
307
  _templateObject = function _templateObject() {
126
308
  return data;
@@ -129,230 +311,478 @@ function _templateObject() {
129
311
  return data;
130
312
  }
131
313
 
132
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
314
+ var selectIcons = {
315
+ error: _react["default"].createElement("svg", {
316
+ xmlns: "http://www.w3.org/2000/svg",
317
+ height: "24px",
318
+ viewBox: "0 0 24 24",
319
+ width: "24px",
320
+ fill: "currentColor"
321
+ }, _react["default"].createElement("path", {
322
+ 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"
323
+ })),
324
+ arrowUp: _react["default"].createElement("svg", {
325
+ xmlns: "http://www.w3.org/2000/svg",
326
+ height: "24px",
327
+ viewBox: "0 0 24 24",
328
+ width: "24px",
329
+ fill: "currentColor"
330
+ }, _react["default"].createElement("path", {
331
+ d: "M0 0h24v24H0V0z",
332
+ fill: "none"
333
+ }), _react["default"].createElement("path", {
334
+ d: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z"
335
+ })),
336
+ arrowDown: _react["default"].createElement("svg", {
337
+ xmlns: "http://www.w3.org/2000/svg",
338
+ height: "24px",
339
+ viewBox: "0 0 24 24",
340
+ width: "24px",
341
+ fill: "currentColor"
342
+ }, _react["default"].createElement("path", {
343
+ d: "M0 0h24v24H0V0z",
344
+ fill: "none"
345
+ }), _react["default"].createElement("path", {
346
+ d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"
347
+ })),
348
+ clear: _react["default"].createElement("svg", {
349
+ xmlns: "http://www.w3.org/2000/svg",
350
+ width: "24",
351
+ height: "24",
352
+ viewBox: "0 0 24 24",
353
+ fill: "currentColor"
354
+ }, _react["default"].createElement("path", {
355
+ d: "M0 0h24v24H0V0z",
356
+ fill: "none"
357
+ }), _react["default"].createElement("path", {
358
+ 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"
359
+ })),
360
+ selected: _react["default"].createElement("svg", {
361
+ xmlns: "http://www.w3.org/2000/svg",
362
+ height: "24px",
363
+ viewBox: "0 0 24 24",
364
+ width: "24px",
365
+ fill: "currentColor"
366
+ }, _react["default"].createElement("path", {
367
+ d: "M0 0h24v24H0z",
368
+ fill: "none"
369
+ }), _react["default"].createElement("path", {
370
+ d: "M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"
371
+ })),
372
+ searchOff: _react["default"].createElement("svg", {
373
+ xmlns: "http://www.w3.org/2000/svg",
374
+ height: "24px",
375
+ viewBox: "0 0 24 24",
376
+ width: "24px",
377
+ fill: "currentColor"
378
+ }, _react["default"].createElement("g", null, _react["default"].createElement("rect", {
379
+ fill: "none",
380
+ height: "24",
381
+ width: "24"
382
+ })), _react["default"].createElement("g", null, _react["default"].createElement("g", null, _react["default"].createElement("path", {
383
+ 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"
384
+ }), _react["default"].createElement("polygon", {
385
+ 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"
386
+ }))))
387
+ };
133
388
 
134
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
389
+ var getNotOptionalErrorMessage = function getNotOptionalErrorMessage() {
390
+ return "This field is required. Please, enter a value.";
391
+ };
135
392
 
136
- var useStyles = (0, _styles.makeStyles)(function () {
137
- return {
138
- root: function root(props) {
139
- return {
140
- minWidth: props.width
141
- };
142
- },
143
- dropdownStyle: function dropdownStyle(props) {
144
- return {
145
- backgroundColor: props.optionBackgroundColor,
146
- boxShadow: "0px 2px 10px 0px rgba(0, 0, 0, 0.3)",
147
- minWidth: props.width,
148
- width: props.width,
149
- maxHeight: "250px",
150
- borderColor: props.optionBorderColor,
151
- borderWidth: props.optionBorderThickness,
152
- borderStyle: props.optionBorderStyle,
153
- "&::-webkit-scrollbar": {
154
- width: "3px",
155
- margin: "5px"
156
- },
157
- "&::-webkit-scrollbar-track": {
158
- borderRadius: "3px",
159
- backgroundColor: props.scrollBarTrackColor
160
- },
161
- "&::-webkit-scrollbar-thumb": {
162
- borderRadius: "3px",
163
- backgroundColor: props.scrollBarThumbColor
164
- },
165
- "& .MuiList-root": {
166
- width: "auto !important",
167
- paddingRight: "0 !important"
168
- }
393
+ var filterOptionsBySearchValue = function filterOptionsBySearchValue(options, searchValue) {
394
+ if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
395
+ if (options[0].options) return options.map(function (optionGroup) {
396
+ var group = {
397
+ label: optionGroup.label,
398
+ options: optionGroup.options.filter(function (option) {
399
+ return option.label.toUpperCase().includes(searchValue.toUpperCase());
400
+ })
169
401
  };
170
- },
171
- itemList: function itemList(props) {
172
- return {
173
- "&.MuiList-padding": {
174
- paddingBottom: "0px",
175
- paddingTop: "0px"
176
- },
177
- "& li": {
178
- fontSize: props.optionFontSize,
179
- fontStyle: props.optionFontStyle,
180
- fontWeight: props.optionFontWeight,
181
- paddingBottom: props.optionPaddingBottom,
182
- paddingTop: props.optionPaddingTop,
183
- "&:hover": {
184
- backgroundColor: "".concat(props.backgroundType === "dark" ? props.hoverOptionBackgroundColorOnDark : props.hoverOptionBackgroundColor, " !important"),
185
- color: "".concat(props.optionFontColor)
186
- },
187
- "&:active": {
188
- backgroundColor: "".concat(props.backgroundType === "dark" ? props.selectedOptionBackgroundColorOnDark : props.selectedOptionBackgroundColor) + "".concat(props.backgroundType === "dark" ? props.hoverOptionBackgroundColorOnDark : props.hoverOptionBackgroundColor)
189
- },
190
- "&:focus": {
191
- outline: "".concat(props.backgroundType === "dark" ? props.focusColorOnDark : props.focusColor, " auto 2px")
192
- },
193
- "&.MuiListItem-root.Mui-selected": {
194
- backgroundColor: "".concat(props.backgroundType === "dark" ? props.selectedOptionBackgroundColorOnDark : props.selectedOptionBackgroundColor, " !important")
195
- },
196
- "&.MuiListItem-root.Mui-focusVisible": {
197
- backgroundColor: "unset"
198
- },
199
- "& span.MuiButtonBase-root": {
200
- padding: "0px",
201
- margin: "5px 0px",
202
- "& span.MuiIconButton-label > svg": {
203
- width: "26px",
204
- height: "26px"
205
- },
206
- "&:hover": {
207
- color: "".concat(props.backgroundType === "dark" ? props.borderColorOnDark : props.borderColor)
208
- },
209
- "&.Mui-checked:hover": {
210
- color: "".concat(props.backgroundType === "dark" ? props.backgroundColorCheckedOnDark : props.backgroundColorChecked)
211
- }
212
- }
213
- }
214
- };
215
- }
216
- };
217
- });
402
+ return group;
403
+ });else return options.filter(function (option) {
404
+ return option.label.toUpperCase().includes(searchValue.toUpperCase());
405
+ });
406
+ }
407
+ };
218
408
 
219
- var DxcSelect = function DxcSelect(_ref) {
220
- var value = _ref.value,
221
- name = _ref.name,
222
- onChange = _ref.onChange,
223
- label = _ref.label,
224
- assistiveText = _ref.assistiveText,
225
- _ref$required = _ref.required,
226
- required = _ref$required === void 0 ? false : _ref$required,
409
+ var DxcSelect = _react["default"].forwardRef(function (_ref, ref) {
410
+ var _ref3;
411
+
412
+ var _ref$label = _ref.label,
413
+ label = _ref$label === void 0 ? "" : _ref$label,
414
+ _ref$name = _ref.name,
415
+ name = _ref$name === void 0 ? "" : _ref$name,
416
+ value = _ref.value,
417
+ options = _ref.options,
418
+ _ref$helperText = _ref.helperText,
419
+ helperText = _ref$helperText === void 0 ? "" : _ref$helperText,
420
+ _ref$placeholder = _ref.placeholder,
421
+ placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
227
422
  _ref$disabled = _ref.disabled,
228
423
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
229
- _ref$invalid = _ref.invalid,
230
- invalid = _ref$invalid === void 0 ? false : _ref$invalid,
231
- _ref$options = _ref.options,
232
- options = _ref$options === void 0 ? [] : _ref$options,
233
- _ref$iconPosition = _ref.iconPosition,
234
- iconPosition = _ref$iconPosition === void 0 ? "before" : _ref$iconPosition,
424
+ _ref$optional = _ref.optional,
425
+ optional = _ref$optional === void 0 ? false : _ref$optional,
426
+ _ref$searchable = _ref.searchable,
427
+ searchable = _ref$searchable === void 0 ? false : _ref$searchable,
235
428
  _ref$multiple = _ref.multiple,
236
429
  multiple = _ref$multiple === void 0 ? false : _ref$multiple,
430
+ onChange = _ref.onChange,
431
+ onBlur = _ref.onBlur,
432
+ _ref$error = _ref.error,
433
+ error = _ref$error === void 0 ? "" : _ref$error,
237
434
  margin = _ref.margin,
238
435
  _ref$size = _ref.size,
239
436
  size = _ref$size === void 0 ? "medium" : _ref$size,
240
437
  _ref$tabIndex = _ref.tabIndex,
241
438
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
439
+
440
+ var _useState = (0, _react.useState)("select-".concat((0, _uuid.v4)())),
441
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
442
+ selectId = _useState2[0];
443
+
444
+ var selectLabelId = "label-".concat(selectId);
445
+ var optionsListId = "".concat(selectId, "-listbox");
446
+
447
+ var _useState3 = (0, _react.useState)(multiple ? [] : ""),
448
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
449
+ innerValue = _useState4[0],
450
+ setInnerValue = _useState4[1];
451
+
452
+ var _useState5 = (0, _react.useState)(""),
453
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
454
+ searchValue = _useState6[0],
455
+ setSearchValue = _useState6[1];
456
+
457
+ var _useState7 = (0, _react.useState)(-1),
458
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
459
+ visualFocusIndex = _useState8[0],
460
+ changeVisualFocusIndex = _useState8[1];
461
+
462
+ var _useState9 = (0, _react.useState)(false),
463
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
464
+ isOpen = _useState10[0],
465
+ changeIsOpen = _useState10[1];
466
+
467
+ var selectContainerRef = (0, _react.useRef)(null);
468
+ var selectSearchInputRef = (0, _react.useRef)(null);
469
+ var selectOptionsListRef = (0, _react.useRef)(null);
242
470
  var colorsTheme = (0, _useTheme["default"])();
243
- var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
471
+ var filteredOptions = (0, _react.useMemo)(function () {
472
+ return filterOptionsBySearchValue(options, searchValue);
473
+ }, [options, searchValue]);
474
+ var optionalEmptyOption = {
475
+ label: placeholder,
476
+ value: ""
477
+ };
244
478
 
245
- var _useState = (0, _react.useState)(multiple && [] || ""),
246
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
247
- selectedValue = _useState2[0],
248
- setSelectedValue = _useState2[1];
479
+ var notOptionalCheck = function notOptionalCheck(value) {
480
+ return value === "" && !optional;
481
+ };
249
482
 
250
- var selectValues = _objectSpread({
251
- width: "auto"
252
- }, colorsTheme.select, {}, colorsTheme.checkbox, {
253
- backgroundType: backgroundType
254
- });
483
+ var notOptionalMultipleCheck = function notOptionalMultipleCheck() {
484
+ return (value !== null && value !== void 0 ? value : innerValue).length === 0 && !optional;
485
+ };
255
486
 
256
- var classes = useStyles(selectValues);
487
+ var canBeOpenOptions = function canBeOpenOptions() {
488
+ return !disabled && (options === null || options === void 0 ? void 0 : options.length) > 0 && groupsHaveOptions();
489
+ };
257
490
 
258
- var handleSelectChange = function handleSelectChange(selectedOption) {
259
- if (multiple) {
260
- setSelectedValue(selectedOption.target.value);
491
+ var groupsHaveOptions = function groupsHaveOptions() {
492
+ return options[0].hasOwnProperty("options") ? options[0].options ? options.some(function (groupOption) {
493
+ return groupOption.options.length > 0;
494
+ }) : false : true;
495
+ };
261
496
 
262
- if (typeof onChange === "function") {
263
- onChange(selectedOption.target.value);
264
- }
497
+ var filteredGroupsHaveOptions = function filteredGroupsHaveOptions() {
498
+ return filteredOptions !== null && filteredOptions !== void 0 && filteredOptions[0].options ? filteredOptions.some(function (groupOption) {
499
+ var _groupOption$options;
500
+
501
+ return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
502
+ }) : true;
503
+ };
504
+
505
+ var openOptions = function openOptions() {
506
+ if (!isOpen && canBeOpenOptions()) changeIsOpen(true);
507
+ };
508
+
509
+ var closeOptions = function closeOptions() {
510
+ if (isOpen) {
511
+ changeIsOpen(false);
512
+ changeVisualFocusIndex(-1);
513
+ }
514
+ };
515
+
516
+ var handleSelectChangeValue = function handleSelectChangeValue(newOption) {
517
+ if (multiple) {
518
+ var _res, _res2;
519
+
520
+ var res;
521
+ if ((value !== null && value !== void 0 ? value : innerValue).includes(newOption.value)) value ? res = value.filter(function (optionVal) {
522
+ return optionVal !== newOption.value;
523
+ }) : setInnerValue(function (previous) {
524
+ return previous.filter(function (optionVal) {
525
+ return optionVal !== newOption.value;
526
+ });
527
+ });else value ? res = [].concat((0, _toConsumableArray2["default"])(value), [newOption.value]) : setInnerValue(function (previous) {
528
+ return [].concat((0, _toConsumableArray2["default"])(previous), [newOption.value]);
529
+ });
530
+ if (notOptionalMultipleCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
531
+ value: (_res = res) !== null && _res !== void 0 ? _res : innerValue,
532
+ error: getNotOptionalErrorMessage()
533
+ });else onChange === null || onChange === void 0 ? void 0 : onChange({
534
+ value: (_res2 = res) !== null && _res2 !== void 0 ? _res2 : innerValue,
535
+ error: null
536
+ });
265
537
  } else {
266
- setSelectedValue(selectedOption.target.value);
538
+ value !== null && value !== void 0 ? value : setInnerValue(newOption.value);
539
+ if (notOptionalCheck(newOption.value)) onChange === null || onChange === void 0 ? void 0 : onChange({
540
+ value: newOption.value,
541
+ error: getNotOptionalErrorMessage()
542
+ });else onChange === null || onChange === void 0 ? void 0 : onChange({
543
+ value: newOption.value,
544
+ error: null
545
+ });
546
+ }
547
+ };
267
548
 
268
- if (typeof onChange === "function") {
269
- onChange(selectedOption.target.value);
270
- }
549
+ var handleSelectOnClick = function handleSelectOnClick() {
550
+ if (isOpen) {
551
+ closeOptions();
552
+ setSearchValue("");
553
+ } else openOptions();
554
+
555
+ searchable && selectSearchInputRef.current.focus();
556
+ };
557
+
558
+ var handleSelectOnFocus = function handleSelectOnFocus() {
559
+ searchable && selectSearchInputRef.current.focus();
560
+ };
561
+
562
+ var handleSelectOnBlur = function handleSelectOnBlur(event) {
563
+ // focus leaves container (outside, not to childs)
564
+ if (!event.currentTarget.contains(event.relatedTarget)) {
565
+ closeOptions();
566
+ setSearchValue("");
567
+ if (notOptionalCheck(value !== null && value !== void 0 ? value : innerValue)) onBlur === null || onBlur === void 0 ? void 0 : onBlur({
568
+ value: value !== null && value !== void 0 ? value : innerValue,
569
+ error: getNotOptionalErrorMessage()
570
+ });else onBlur === null || onBlur === void 0 ? void 0 : onBlur({
571
+ value: value !== null && value !== void 0 ? value : innerValue,
572
+ error: null
573
+ });
574
+ }
575
+ };
576
+
577
+ var handleSelectOnKeyDown = function handleSelectOnKeyDown(event) {
578
+ switch (event.keyCode) {
579
+ case 40:
580
+ // Arrow Down
581
+ event.preventDefault();
582
+ changeVisualFocusIndex(function (visualFocusIndex) {
583
+ if (visualFocusIndex < lastOptionIndex) return visualFocusIndex + 1;else if (visualFocusIndex === lastOptionIndex) return 0;
584
+ });
585
+ openOptions();
586
+ break;
587
+
588
+ case 38:
589
+ // Arrow Up
590
+ event.preventDefault();
591
+ changeVisualFocusIndex(function (visualFocusIndex) {
592
+ return visualFocusIndex === 0 || visualFocusIndex === -1 ? lastOptionIndex : visualFocusIndex - 1;
593
+ });
594
+ openOptions();
595
+ break;
596
+
597
+ case 27:
598
+ // Esc
599
+ event.preventDefault();
600
+ closeOptions();
601
+ setSearchValue("");
602
+ break;
603
+
604
+ case 13:
605
+ // Enter
606
+ if (isOpen && visualFocusIndex >= 0) {
607
+ var accLength = optional && !multiple ? 1 : 0;
608
+
609
+ if (searchable) {
610
+ if (filteredOptions.length > 0) {
611
+ if (optional && !multiple && visualFocusIndex === 0 && filteredGroupsHaveOptions()) handleSelectChangeValue(optionalEmptyOption);else filteredOptions[0].options ? filteredGroupsHaveOptions() && filteredOptions.some(function (groupOption) {
612
+ var groupLength = accLength + groupOption.options.length;
613
+ groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
614
+ accLength = groupLength;
615
+ return groupLength > visualFocusIndex;
616
+ }) : handleSelectChangeValue(filteredOptions[visualFocusIndex - accLength]);
617
+ }
618
+ } else {
619
+ if (optional && !multiple && visualFocusIndex === 0) handleSelectChangeValue(optionalEmptyOption);else options[0].options ? options.some(function (groupOption) {
620
+ var groupLength = accLength + groupOption.options.length;
621
+ groupLength > visualFocusIndex && handleSelectChangeValue(groupOption.options[visualFocusIndex - accLength]);
622
+ accLength = groupLength;
623
+ return groupLength > visualFocusIndex;
624
+ }) : handleSelectChangeValue(options[visualFocusIndex - accLength]);
625
+ }
626
+
627
+ !multiple && closeOptions();
628
+ setSearchValue("");
629
+ }
630
+
631
+ break;
271
632
  }
272
633
  };
273
634
 
274
- var getLabelForSingleSelect = function getLabelForSingleSelect(selected) {
275
- var selectedItem = options.filter(function (option) {
276
- return option.value === selected;
277
- })[0];
278
- return _react["default"].createElement(SelectedIconContainer, {
279
- iconPosition: iconPosition,
280
- multiple: multiple,
281
- label: selectedItem && selectedItem.label,
282
- key: selectedItem && selectedItem.label
283
- }, selectedItem && selectedItem.icon ? _react["default"].createElement(ListIconContainer, {
284
- disabled: disabled
285
- }, (0, _typeof2["default"])(selectedItem.icon) === "object" ? selectedItem.icon : _react["default"].createElement(selectedItem.icon)) : selectedItem && selectedItem.iconSrc && _react["default"].createElement(ListIcon, {
286
- src: selectedItem && selectedItem.iconSrc
287
- }), selectedItem && selectedItem.label && _react["default"].createElement(SelectedLabelContainer, {
288
- iconSrc: selectedItem && selectedItem.iconSrc && selectedItem.icon,
289
- iconPosition: iconPosition,
290
- disabled: disabled
291
- }, selectedItem && selectedItem.label));
292
- };
293
-
294
- var getSelectedValuesWithLabel = function getSelectedValuesWithLabel(optionsList, selected) {
295
- return _react["default"].createElement(MultipleLabelSelected, null, optionsList.filter(function (x) {
296
- return selected.includes(x.value);
297
- }).map(function (optionToRender) {
298
- return optionToRender.label;
299
- }).join(", "));
300
- };
301
-
302
- var getSelectedValuesWithIcons = function getSelectedValuesWithIcons(optionsList, selected) {
303
- return options.filter(function (x) {
304
- return selected.includes(x.value);
305
- }).map(function (optionToRender) {
306
- return getLabelForSingleSelect(optionToRender.value);
635
+ var handleSearchIOnChange = function handleSearchIOnChange(event) {
636
+ setSearchValue(event.target.value);
637
+ changeVisualFocusIndex(-1);
638
+ openOptions();
639
+ };
640
+
641
+ var handleClearActionOnClick = function handleClearActionOnClick(event) {
642
+ event.stopPropagation();
643
+ setSearchValue("");
644
+ };
645
+
646
+ var handleClearOptionsActionOnClick = function handleClearOptionsActionOnClick(event) {
647
+ event.stopPropagation();
648
+ value !== null && value !== void 0 ? value : setInnerValue([]);
649
+ onChange === null || onChange === void 0 ? void 0 : onChange({
650
+ value: [],
651
+ error: getNotOptionalErrorMessage()
307
652
  });
653
+ selectContainerRef.current.focus();
308
654
  };
309
655
 
310
- var labelForMultipleSelect = function labelForMultipleSelect(selected) {
311
- return options.findIndex(function (option) {
312
- return !option.label;
313
- }) !== -1 ? getSelectedValuesWithIcons(options, selected) : getSelectedValuesWithLabel(options, selected);
656
+ var getLastOptionIndex = function getLastOptionIndex() {
657
+ var last = 0;
658
+
659
+ var reducer = function reducer(acc, current) {
660
+ var _current$options;
661
+
662
+ return acc + ((_current$options = current.options) === null || _current$options === void 0 ? void 0 : _current$options.length);
663
+ };
664
+
665
+ 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;
666
+ return optional && !multiple ? last + 1 : last;
314
667
  };
315
668
 
316
- var getRenderValue = function getRenderValue(selected) {
317
- return multiple && labelForMultipleSelect(selected) || getLabelForSingleSelect(selected);
669
+ var lastOptionIndex = (0, _react.useMemo)(function () {
670
+ return getLastOptionIndex();
671
+ }, [searchable, optional, multiple, searchable ? filteredOptions : options]);
672
+
673
+ var getSelectedOption = function getSelectedOption() {
674
+ var val = value !== null && value !== void 0 ? value : innerValue;
675
+ var selectedOption = multiple ? [] : "";
676
+
677
+ if (multiple) {
678
+ if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
679
+ options.forEach(function (option) {
680
+ if (option.options) {
681
+ option.options.forEach(function (singleOption) {
682
+ if (val.includes(singleOption.value)) selectedOption.push(singleOption);
683
+ });
684
+ } else if (val.includes(option.value)) selectedOption.push(option);
685
+ });
686
+ }
687
+ } else {
688
+ if ((options === null || options === void 0 ? void 0 : options.length) > 0) {
689
+ options.forEach(function (option) {
690
+ if (option.options) {
691
+ option.options.forEach(function (singleOption) {
692
+ if (singleOption.value === val) selectedOption = singleOption;
693
+ });
694
+ } else if (option.value === val) selectedOption = option;
695
+ });
696
+ }
697
+ }
698
+
699
+ return selectedOption;
318
700
  };
319
701
 
320
- var isChecked = function isChecked(checkedValue, value, option) {
321
- if (value !== undefined) {
322
- var result = false;
323
- value.map(function (val) {
324
- if (val === option.value) {
325
- result = true;
326
- }
702
+ var selectedOption = (0, _react.useMemo)(function () {
703
+ return getSelectedOption();
704
+ }, [options, multiple, value !== null && value !== void 0 ? value : innerValue]);
705
+ (0, _react.useLayoutEffect)(function () {
706
+ var _selectOptionsListRef;
707
+
708
+ var visualFocusedOptionEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : (_selectOptionsListRef = selectOptionsListRef.current) === null || _selectOptionsListRef === void 0 ? void 0 : _selectOptionsListRef.querySelectorAll("[role='option']")[visualFocusIndex];
709
+ visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : visualFocusedOptionEl.scrollIntoView({
710
+ block: "nearest",
711
+ inline: "start"
712
+ });
713
+ }, [visualFocusIndex]);
714
+ (0, _react.useLayoutEffect)(function () {
715
+ if (isOpen && !multiple) {
716
+ var listEl = selectOptionsListRef === null || selectOptionsListRef === void 0 ? void 0 : selectOptionsListRef.current;
717
+ var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
718
+ listEl === null || listEl === void 0 ? void 0 : listEl.scrollTo({
719
+ top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
327
720
  });
328
- return result;
329
- } else if (checkedValue) {
330
- return checkedValue.findIndex(function (element) {
331
- return element === option.value;
332
- }) !== -1 || false;
333
721
  }
722
+ }, [isOpen]);
723
+
724
+ var Option = function Option(_ref2) {
725
+ var option = _ref2.option,
726
+ index = _ref2.index,
727
+ _ref2$isGroupedOption = _ref2.isGroupedOption,
728
+ isGroupedOption = _ref2$isGroupedOption === void 0 ? false : _ref2$isGroupedOption;
729
+ var isSelected = multiple ? (value !== null && value !== void 0 ? value : innerValue).includes(option.value) : (value !== null && value !== void 0 ? value : innerValue) === option.value;
730
+ var isLastOption = index === lastOptionIndex;
731
+ return _react["default"].createElement(OptionItem, {
732
+ id: "option-".concat(index),
733
+ onClick: function onClick(event) {
734
+ // left mouse button only
735
+ handleSelectChangeValue(option);
736
+ !multiple && closeOptions();
737
+ setSearchValue("");
738
+ },
739
+ visualFocused: visualFocusIndex === index,
740
+ selected: isSelected,
741
+ role: "option",
742
+ "aria-selected": isSelected && "true"
743
+ }, _react["default"].createElement(StyledOption, {
744
+ visualFocused: visualFocusIndex === index,
745
+ selected: isSelected,
746
+ last: isLastOption,
747
+ grouped: isGroupedOption,
748
+ multiple: multiple
749
+ }, multiple && _react["default"].createElement(_Checkbox["default"], {
750
+ tabIndex: -1,
751
+ checked: isSelected
752
+ }), option.icon && _react["default"].createElement(OptionIcon, {
753
+ selected: isSelected
754
+ }, typeof option.icon === "string" ? _react["default"].createElement(OptionIconImg, {
755
+ src: option.icon
756
+ }) : option.icon), _react["default"].createElement(OptionContent, {
757
+ grouped: isGroupedOption,
758
+ hasIcon: option.icon,
759
+ multiple: multiple
760
+ }, _react["default"].createElement(OptionLabel, null, option.label), !multiple && isSelected && _react["default"].createElement(OptionSelectedIndicator, null, selectIcons.selected))));
334
761
  };
335
762
 
336
- var ThemedOption = function ThemedOption(_ref2) {
337
- var option = _ref2.option;
338
- var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
339
- return _react["default"].createElement(_react["default"].Fragment, null, multiple && _react["default"].createElement(_Checkbox["default"], {
340
- size: "fitContent",
341
- checked: isChecked(selectedValue, value, option)
342
- }), _react["default"].createElement(OptionContainer, {
343
- iconPosition: iconPosition,
344
- multiple: multiple
345
- }, option.icon ? _react["default"].createElement(ListIconContainer, {
346
- backgroundType: backgroundType,
347
- label: option.label,
348
- iconPosition: iconPosition
349
- }, (0, _typeof2["default"])(option.icon) === "object" ? option.icon : _react["default"].createElement(option.icon)) : option.iconSrc && _react["default"].createElement(ListIcon, {
350
- src: option.iconSrc,
351
- label: option.label,
352
- iconPosition: iconPosition
353
- }), " ", _react["default"].createElement(LabelContainer, {
354
- backgroundType: backgroundType
355
- }, option.label)));
763
+ var global_index = optional && !multiple ? 0 : -1; // index for options (not groups), starting from 0 to options.length -1
764
+
765
+ var mapOptionFunc = function mapOptionFunc(option) {
766
+ if (option.options) {
767
+ return option.options.length > 0 && _react["default"].createElement("li", null, _react["default"].createElement(GroupList, {
768
+ role: "group"
769
+ }, _react["default"].createElement(GroupLabel, {
770
+ role: "presentation"
771
+ }, option.label), option.options.map(function (singleOption) {
772
+ global_index++;
773
+ return _react["default"].createElement(Option, {
774
+ option: singleOption,
775
+ index: global_index,
776
+ isGroupedOption: true
777
+ });
778
+ })));
779
+ } else {
780
+ global_index++;
781
+ return _react["default"].createElement(Option, {
782
+ option: option,
783
+ index: global_index
784
+ });
785
+ }
356
786
  };
357
787
 
358
788
  return _react["default"].createElement(_styledComponents.ThemeProvider, {
@@ -360,226 +790,307 @@ var DxcSelect = function DxcSelect(_ref) {
360
790
  }, _react["default"].createElement(SelectContainer, {
361
791
  margin: margin,
362
792
  size: size,
363
- invalid: invalid,
793
+ ref: ref
794
+ }, _react["default"].createElement(Label, {
795
+ id: selectLabelId,
364
796
  disabled: disabled,
365
- backgroundType: backgroundType
366
- }, _react["default"].createElement(_FormControl["default"], null, _react["default"].createElement(_InputLabel["default"], {
797
+ onClick: function onClick() {
798
+ selectContainerRef.current.focus();
799
+ }
800
+ }, label, " ", optional && _react["default"].createElement(OptionalLabel, null, "(Optional)")), _react["default"].createElement(HelperText, {
367
801
  disabled: disabled
368
- }, required && _react["default"].createElement(_RequiredComponent["default"], null), label), _react["default"].createElement(_Select["default"], {
802
+ }, helperText), _react["default"].createElement(Select, {
803
+ id: selectId,
804
+ disabled: disabled,
805
+ error: error,
806
+ onBlur: handleSelectOnBlur,
807
+ onClick: handleSelectOnClick,
808
+ onFocus: handleSelectOnFocus,
809
+ onKeyDown: handleSelectOnKeyDown,
810
+ ref: selectContainerRef,
811
+ tabIndex: tabIndex,
812
+ role: "combobox",
813
+ "aria-controls": optionsListId,
814
+ "aria-expanded": isOpen ? "true" : "false",
815
+ "aria-haspopup": "listbox",
816
+ "aria-labelledby": selectLabelId,
817
+ "aria-activedescendant": visualFocusIndex >= 0 && "option-".concat(visualFocusIndex),
818
+ "aria-invalid": error ? "true" : "false",
819
+ "aria-required": optional ? "false" : "true"
820
+ }, multiple && selectedOption.length > 0 && _react["default"].createElement(SelectionIndicator, null, _react["default"].createElement(SelectionNumber, {
821
+ disabled: disabled
822
+ }, selectedOption.length, " "), _react["default"].createElement(ClearOptionsAction, {
823
+ disabled: disabled,
824
+ onClick: handleClearOptionsActionOnClick,
825
+ tabIndex: -1,
826
+ title: "Clear selected options",
827
+ "aria-label": "Clear selected options"
828
+ }, selectIcons.clear)), _react["default"].createElement(SearchableValueContainer, null, _react["default"].createElement(ValueInput, {
369
829
  name: name,
370
- multiple: multiple,
371
- renderValue: getRenderValue,
372
- onChange: handleSelectChange,
373
- value: value !== undefined ? value : selectedValue,
830
+ value: multiple ? (value !== null && value !== void 0 ? value : innerValue).join(", ") : value !== null && value !== void 0 ? value : innerValue,
831
+ readOnly: true
832
+ }), searchable && _react["default"].createElement(SearchInput, {
833
+ value: searchValue,
374
834
  disabled: disabled,
375
- MenuProps: {
376
- classes: {
377
- paper: classes.dropdownStyle,
378
- list: classes.itemList
379
- },
380
- getContentAnchorEl: null,
381
- anchorOrigin: {
382
- vertical: "bottom",
383
- horizontal: "left"
384
- }
385
- },
386
- inputProps: {
387
- tabIndex: disabled ? -1 : tabIndex
388
- }
389
- }, options.map(function (option) {
390
- return _react["default"].createElement(_MenuItem["default"], {
391
- id: option.value,
392
- value: option.value,
393
- disableRipple: true,
394
- key: option.value
395
- }, _react["default"].createElement(_BackgroundColorContext.BackgroundColorProvider, {
396
- color: colorsTheme.select.optionBackgroundColor
397
- }, _react["default"].createElement(ThemedOption, {
398
- option: option
399
- })));
400
- })), assistiveText && _react["default"].createElement(_FormHelperText["default"], {
835
+ onChange: handleSearchIOnChange,
836
+ ref: selectSearchInputRef,
837
+ autoComplete: "off",
838
+ autoCorrect: "off"
839
+ }), (!searchable || searchValue === "") && (multiple ? _react["default"].createElement(SelectedOption, {
840
+ disabled: disabled,
841
+ atBackground: (value !== null && value !== void 0 ? value : innerValue).length === 0 || isOpen
842
+ }, _react["default"].createElement(OptionLabel, null, selectedOption.map(function (option) {
843
+ return option.label;
844
+ }).join(", ")), selectedOption.length === 0 && placeholder) : _react["default"].createElement(SelectedOption, {
845
+ disabled: disabled,
846
+ atBackground: !(value !== null && value !== void 0 ? value : innerValue) || isOpen
847
+ }, _react["default"].createElement(OptionLabel, null, (_ref3 = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) !== null && _ref3 !== void 0 ? _ref3 : placeholder)))), !disabled && error && _react["default"].createElement(ErrorIcon, null, selectIcons.error), searchable && searchValue.length > 0 && _react["default"].createElement(ClearAction, {
848
+ onClick: handleClearActionOnClick,
849
+ tabIndex: -1,
850
+ title: "Clear search text",
851
+ "aria-label": "Clear search text"
852
+ }, selectIcons.clear), _react["default"].createElement(CollapseIndicator, {
401
853
  disabled: disabled
402
- }, assistiveText))));
403
- };
854
+ }, isOpen ? selectIcons.arrowUp : selectIcons.arrowDown), isOpen && _react["default"].createElement(OptionsList, {
855
+ id: optionsListId,
856
+ onClick: function onClick(event) {
857
+ event.stopPropagation();
858
+ },
859
+ onMouseDown: function onMouseDown(event) {
860
+ event.preventDefault();
861
+ },
862
+ ref: selectOptionsListRef,
863
+ role: "listbox",
864
+ "aria-labelledby": selectLabelId,
865
+ "aria-multiselectable": multiple ? "true" : "false"
866
+ }, searchable && (filteredOptions.length === 0 || !filteredGroupsHaveOptions()) ? _react["default"].createElement(OptionsSystemMessage, null, _react["default"].createElement(NoMatchesFoundIcon, null, selectIcons.searchOff), "No matches found") : optional && !multiple && _react["default"].createElement(Option, {
867
+ option: optionalEmptyOption,
868
+ index: 0
869
+ }), searchable ? filteredOptions.map(mapOptionFunc) : options.map(mapOptionFunc))), !disabled && _react["default"].createElement(Error, null, error)));
870
+ });
404
871
 
405
872
  var sizes = {
406
- small: "60px",
407
- medium: "240px",
873
+ small: "240px",
874
+ medium: "360px",
408
875
  large: "480px",
409
876
  fillParent: "100%"
410
877
  };
411
878
 
412
879
  var calculateWidth = function calculateWidth(margin, size) {
413
- if (size === "fillParent") {
414
- return "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
415
- }
416
-
417
- return sizes[size];
880
+ return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
418
881
  };
419
882
 
420
- var MultipleLabelSelected = _styledComponents["default"].div(_templateObject());
421
-
422
- var LabelContainer = _styledComponents["default"].span(_templateObject2(), function (props) {
423
- return props.backgroundType === "dark" ? props.theme.optionFontColorOnDark : props.theme.optionFontColor;
424
- });
425
-
426
- var SelectedIconContainer = _styledComponents["default"].div(_templateObject3(), function (props) {
427
- return props.iconPosition === "before" && "row" || "row-reverse";
883
+ var SelectContainer = _styledComponents["default"].div(_templateObject(), function (props) {
884
+ return calculateWidth(props.margin, props.size);
428
885
  }, function (props) {
429
- return props.iconPosition === "before" && "flex-start" || "flex-end";
886
+ return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
430
887
  }, function (props) {
431
- return props.multiple && props.label && "15px" || "0px";
888
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
432
889
  }, function (props) {
433
- return !props.multiple && "calc(100% - 24px)" || "auto";
890
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.right ? _variables.spaces[props.margin.right] : "";
434
891
  }, function (props) {
435
- return props.iconPosition === "after" && (props.label !== "" || props.label === undefined) && "content:','";
892
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
436
893
  }, function (props) {
437
- return props.iconPosition === "before" && (props.label !== "" || props.label === undefined) && "content:','";
894
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
438
895
  });
439
896
 
440
- var SelectedLabelContainer = _styledComponents["default"].span(_templateObject4(), function (props) {
897
+ var Label = _styledComponents["default"].span(_templateObject2(), function (props) {
898
+ return props.disabled ? props.theme.disabledColor : props.theme.labelFontColor;
899
+ }, function (props) {
441
900
  return props.theme.fontFamily;
442
901
  }, function (props) {
443
- return (props.iconPosition === "after" || !props.iconSrc) && "0px" || "10px";
902
+ return props.theme.labelFontSize;
444
903
  }, function (props) {
445
- return (props.iconPosition === "before" || !props.iconSrc) && "0px" || "10px";
446
- });
447
-
448
- var OptionContainer = _styledComponents["default"].div(_templateObject5(), function (props) {
449
- return props.theme.fontFamily;
904
+ return props.theme.labelFontStyle;
450
905
  }, function (props) {
451
- return props.iconPosition === "before" && "row" || "row-reverse";
906
+ return props.theme.labelFontWeight;
452
907
  }, function (props) {
453
- return props.multiple && "margin-left: ".concat(props.theme.optionCheckboxSpacing, ";");
908
+ return props.theme.labelLineHeight;
454
909
  });
455
910
 
456
- var ListIcon = _styledComponents["default"].img(_templateObject6(), function (props) {
457
- return props.theme.iconSize;
458
- }, function (props) {
459
- return props.theme.iconSize;
460
- }, function (props) {
461
- return props.iconPosition === "after" && props.label !== "" && props.theme.optionIconSpacing || "0px";
462
- }, function (props) {
463
- return props.iconPosition === "before" && props.label !== "" && props.theme.optionIconSpacing || "0px";
911
+ var OptionalLabel = _styledComponents["default"].span(_templateObject3(), function (props) {
912
+ return props.theme.optionalLabelFontWeight;
464
913
  });
465
914
 
466
- var ListIconContainer = _styledComponents["default"].div(_templateObject7(), function (props) {
467
- return props.backgroundType === "dark" ? props.theme.optionIconColorOnDark : props.theme.optionIconColor;
915
+ var HelperText = _styledComponents["default"].span(_templateObject4(), function (props) {
916
+ return props.disabled ? props.theme.disabledColor : props.theme.helperTextFontColor;
468
917
  }, function (props) {
469
- return props.theme.optionIconSize;
918
+ return props.theme.fontFamily;
470
919
  }, function (props) {
471
- return props.theme.optionIconSize;
920
+ return props.theme.helperTextFontSize;
472
921
  }, function (props) {
473
- return props.iconPosition === "after" && props.label !== "" && props.theme.optionIconSpacing || "0px";
922
+ return props.theme.helperTextFontStyle;
474
923
  }, function (props) {
475
- return props.iconPosition === "before" && props.label !== "" && props.theme.optionIconSpacing || "0px";
924
+ return props.theme.helperTextFontWeight;
476
925
  }, function (props) {
477
- return props.disabled && "0.34";
926
+ return props.theme.helperTextLineHeight;
478
927
  });
479
928
 
480
- var SelectContainer = _styledComponents["default"].div(_templateObject8(), function (props) {
481
- return calculateWidth(props.margin, props.size);
929
+ var Select = _styledComponents["default"].div(_templateObject5(), function (props) {
930
+ return props.disabled ? props.theme.disabledInputBorderColor : props.theme.enabledInputBorderColor;
482
931
  }, function (props) {
483
- return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
932
+ return props.error && !props.disabled && "border-color: transparent;\n box-shadow: 0 0 0 2px ".concat(props.theme.errorInputBorderColor, ";\n ");
484
933
  }, function (props) {
485
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
934
+ return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
486
935
  }, function (props) {
487
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.right ? _variables.spaces[props.margin.right] : "";
936
+ 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 ");
937
+ });
938
+
939
+ var SelectionIndicator = _styledComponents["default"].span(_templateObject6(), function (props) {
940
+ return props.theme.selectionIndicatorBorderColor;
941
+ });
942
+
943
+ var SelectionNumber = _styledComponents["default"].span(_templateObject7(), function (props) {
944
+ return props.theme.selectionIndicatorBackgroundColor;
488
945
  }, function (props) {
489
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
946
+ return props.theme.selectionIndicatorBorderColor;
490
947
  }, function (props) {
491
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
948
+ return props.disabled ? props.theme.disabledColor : props.theme.selectionIndicatorFontColor;
492
949
  }, function (props) {
493
950
  return props.theme.fontFamily;
494
951
  }, function (props) {
495
- return props.theme.assistiveTextFontSize;
952
+ return props.theme.selectionIndicatorFontSize;
953
+ }, function (props) {
954
+ return props.theme.selectionIndicatorFontStyle;
496
955
  }, function (props) {
497
- return props.theme.assistiveTextFontStyle;
956
+ return props.theme.selectionIndicatorFontWeight;
498
957
  }, function (props) {
499
- return props.theme.assistiveTextFontWeight;
958
+ return props.disabled ? "cursor: not-allowed;" : "cursor: default;";
959
+ });
960
+
961
+ var ClearOptionsAction = _styledComponents["default"].button(_templateObject8(), function (props) {
962
+ return props.theme.fontFamily;
500
963
  }, function (props) {
501
- return props.backgroundType === "dark" ? props.invalid === true ? props.theme.errorColorOnDark : props.theme.assistiveTextFontColorOnDark : props.invalid === true ? props.theme.errorColor : props.theme.assistiveTextFontColor;
964
+ return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
502
965
  }, function (props) {
503
- return props.backgroundType === "dark" ? props.theme.disabledColorOnDark : props.theme.disabledColor;
966
+ return props.theme.enabledSelectionIndicatorActionBackgroundColor;
967
+ }, function (props) {
968
+ return props.disabled ? props.theme.disabledColor : props.theme.enabledSelectionIndicatorActionIconColor;
969
+ }, function (props) {
970
+ 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 ");
971
+ });
972
+
973
+ var SearchableValueContainer = _styledComponents["default"].div(_templateObject9());
974
+
975
+ var SelectedOption = _styledComponents["default"].span(_templateObject10(), function (props) {
976
+ if (props.disabled) return props.theme.disabledColor;else if (props.atBackground) return props.theme.placeholderFontColor;else return props.theme.valueFontColor;
504
977
  }, function (props) {
505
978
  return props.theme.fontFamily;
506
979
  }, function (props) {
507
- return props.theme.labelFontSize;
980
+ return props.theme.valueFontSize;
508
981
  }, function (props) {
509
- return props.theme.labelFontStyle;
982
+ return props.theme.valueFontStyle;
510
983
  }, function (props) {
511
- return props.theme.labelFontWeight;
984
+ return props.theme.valueFontWeight;
985
+ });
986
+
987
+ var ValueInput = _styledComponents["default"].input(_templateObject11());
988
+
989
+ var SearchInput = _styledComponents["default"].input(_templateObject12(), function (props) {
990
+ return props.disabled ? props.theme.disabledColor : props.theme.valueFontColor;
991
+ }, function (props) {
992
+ return props.theme.fontFamily;
512
993
  }, function (props) {
513
- return props.backgroundType === "dark" ? props.invalid === true ? props.theme.errorColorOnDark : props.theme.labelFontColorOnDark : props.invalid === true ? props.theme.errorColor : props.theme.labelFontColor;
994
+ return props.theme.valueFontSize;
514
995
  }, function (props) {
515
- return props.backgroundType === "dark" ? props.theme.disabledColorOnDark : props.theme.disabledColor;
996
+ return props.theme.valueFontStyle;
516
997
  }, function (props) {
517
- return props.theme.labelFontSize;
998
+ return props.theme.valueFontWeight;
999
+ });
1000
+
1001
+ var ErrorIcon = _styledComponents["default"].span(_templateObject13(), function (props) {
1002
+ return props.theme.errorColor;
1003
+ });
1004
+
1005
+ var Error = _styledComponents["default"].span(_templateObject14(), function (props) {
1006
+ return props.theme.errorColor;
518
1007
  }, function (props) {
519
- return props.theme.labelFontStyle;
1008
+ return props.theme.fontFamily;
520
1009
  }, function (props) {
521
- return props.theme.labelFontWeight;
1010
+ return props.theme.errorMessageFontSize;
522
1011
  }, function (props) {
523
- return props.backgroundType === "dark" ? props.invalid === true ? props.theme.errorColorOnDark : props.theme.labelFontColorOnDark : props.invalid === true ? props.theme.errorColor : props.theme.labelFontColor;
1012
+ return props.theme.errorMessagetFontStyle;
524
1013
  }, function (props) {
525
- return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
1014
+ return props.theme.errorMessageFontWeight;
526
1015
  }, function (props) {
527
- return props.backgroundType === "dark" ? props.theme.disabledColorOnDark : props.theme.disabledColor;
1016
+ return props.theme.errorMessagetLineHeight;
1017
+ });
1018
+
1019
+ var CollapseIndicator = _styledComponents["default"].span(_templateObject15(), function (props) {
1020
+ return props.disabled ? props.theme.disabledColor : props.theme.collapseIndicatorColor;
1021
+ });
1022
+
1023
+ var ClearAction = _styledComponents["default"].button(_templateObject16(), function (props) {
1024
+ return props.theme.fontFamily;
528
1025
  }, function (props) {
529
- return props.theme.valueFontSize;
1026
+ return props.disabled ? "cursor: not-allowed;" : "cursor: pointer;";
530
1027
  }, function (props) {
531
- return props.theme.valueFontStyle;
1028
+ return props.disabled ? props.theme.disabledActionBackgroundColor : props.theme.actionBackgroundColor;
532
1029
  }, function (props) {
533
- return props.theme.valueFontWeight;
1030
+ return props.disabled ? props.theme.disabledColor : props.theme.actionIconColor;
534
1031
  }, function (props) {
535
- return props.backgroundType === "dark" ? props.theme.valueFontColorOnDark : props.theme.valueFontColor;
1032
+ return !props.disabled && "\n &:hover {\n background-color: ".concat(props.theme.hoverActionBackgroundColor, ";\n color: ").concat(props.theme.hoverActionIconColor, ";\n }\n &:active {\n background-color: ").concat(props.theme.activeActionBackgroundColor, ";\n color: ").concat(props.theme.activeActionIconColor, ";\n }\n ");
1033
+ });
1034
+
1035
+ var OptionsList = _styledComponents["default"].ul(_templateObject17(), function (props) {
1036
+ return props.theme.itemListBackgroundColor;
536
1037
  }, function (props) {
537
- return props.backgroundType === "dark" ? props.theme.optionIconColorOnDark : props.theme.optionIconColor;
1038
+ return props.theme.itemListBorderColor;
538
1039
  }, function (props) {
539
- return props.theme.underlineThickness;
1040
+ return props.theme.listItemFontColor;
540
1041
  }, function (props) {
541
- return props.backgroundType === "dark" ? props.invalid === true && props.theme.errorColorOnDark || props.disabled && props.theme.disabledColorOnDark || props.theme.underlineFocusColorOnDark : props.invalid === true && props.theme.errorColor || props.disabled && props.theme.disabledColor || props.theme.underlineFocusColor;
1042
+ return props.theme.fontFamily;
542
1043
  }, function (props) {
543
- return props.theme.underlineThickness;
1044
+ return props.theme.listItemFontSize;
544
1045
  }, function (props) {
545
- return props.backgroundType === "dark" ? props.invalid === true && props.theme.errorColorOnDark || props.disabled && props.theme.disabledColorOnDark || props.theme.underlineColorOnDark : props.invalid === true && props.theme.errorColor || props.disabled && props.theme.disabledColor || props.theme.underlineColor;
1046
+ return props.theme.listItemFontStyle;
546
1047
  }, function (props) {
547
- return props.theme.underlineThickness;
1048
+ return props.theme.listItemFontWeight;
1049
+ });
1050
+
1051
+ var OptionsSystemMessage = _styledComponents["default"].span(_templateObject18(), function (props) {
1052
+ return props.theme.systemMessageFontColor;
1053
+ });
1054
+
1055
+ var NoMatchesFoundIcon = _styledComponents["default"].span(_templateObject19());
1056
+
1057
+ var GroupList = _styledComponents["default"].ul(_templateObject20());
1058
+
1059
+ var GroupLabel = _styledComponents["default"].li(_templateObject21(), function (props) {
1060
+ return props.theme.listGroupItemFontWeight;
1061
+ });
1062
+
1063
+ var OptionItem = _styledComponents["default"].li(_templateObject22(), function (props) {
1064
+ return props.visualFocused && "box-shadow: inset 0 0 0 2px ".concat(props.theme.focusListItemBorderColor, ";");
548
1065
  }, function (props) {
549
- return props.backgroundType === "dark" ? props.invalid === true ? props.theme.errorColorOnDark : props.theme.underlineFocusColorOnDark : props.invalid === true ? props.theme.errorColor : props.theme.underlineFocusColor;
1066
+ return props.selected && "background-color: ".concat(props.theme.selectedListItemBackgroundColor);
550
1067
  }, function (props) {
551
- return props.theme.underlineThickness;
1068
+ return props.selected ? "background-color: ".concat(props.theme.selectedHoverListItemBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedHoverListItemBackgroundColor, ";");
552
1069
  }, function (props) {
553
- return props.backgroundType === "dark" ? props.invalid === true && props.theme.errorColorOnDark || props.disabled && props.theme.disabledColorOnDark || props.theme.underlineColorOnDark : props.invalid === true && props.theme.errorColor || props.disabled && props.theme.disabledColor || props.theme.underlineColor;
1070
+ return props.selected ? "background-color: ".concat(props.theme.selectedActiveListItemBackgroundColor, ";") : "background-color: ".concat(props.theme.unselectedActiveListItemBackgroundColor, ";");
1071
+ });
1072
+
1073
+ var StyledOption = _styledComponents["default"].span(_templateObject23(), function (props) {
1074
+ return props.grouped && props.multiple && "padding-left: 16px;";
554
1075
  }, function (props) {
555
- return props.backgroundType === "dark" ? props.disabled && props.theme.disabledColorOnDark || props.theme.arrowColorOnDark : props.disabled && props.theme.disabledColor || props.theme.arrowColor;
1076
+ return props.last || props.visualFocused || props.selected ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listItemDividerColor);
1077
+ });
1078
+
1079
+ var OptionContent = _styledComponents["default"].span(_templateObject24(), function (props) {
1080
+ return props.grouped && !props.multiple && !props.hasIcon && "padding-left: 16px;";
1081
+ });
1082
+
1083
+ var OptionIcon = _styledComponents["default"].span(_templateObject25(), function (props) {
1084
+ return props.theme.listItemIconColor;
1085
+ });
1086
+
1087
+ var OptionIconImg = _styledComponents["default"].img(_templateObject26());
1088
+
1089
+ var OptionLabel = _styledComponents["default"].span(_templateObject27());
1090
+
1091
+ var OptionSelectedIndicator = _styledComponents["default"].span(_templateObject28(), function (props) {
1092
+ return props.theme.selectedListItemIconColor;
556
1093
  });
557
1094
 
558
- DxcSelect.propTypes = {
559
- size: _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(sizes))),
560
- label: _propTypes["default"].string,
561
- assistiveText: _propTypes["default"].string,
562
- name: _propTypes["default"].string,
563
- value: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number, _propTypes["default"].arrayOf(_propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]))]),
564
- disabled: _propTypes["default"].bool,
565
- required: _propTypes["default"].bool,
566
- invalid: _propTypes["default"].bool,
567
- iconPosition: _propTypes["default"].oneOf(["after", "before"]),
568
- onChange: _propTypes["default"].func,
569
- options: _propTypes["default"].arrayOf(_propTypes["default"].shape({
570
- value: _propTypes["default"].any.isRequired,
571
- label: _propTypes["default"].string,
572
- icon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].func]),
573
- iconSrc: _propTypes["default"].string
574
- })),
575
- multiple: _propTypes["default"].bool,
576
- margin: _propTypes["default"].oneOfType([_propTypes["default"].shape({
577
- top: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
578
- bottom: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
579
- left: _propTypes["default"].oneOf(Object.keys(_variables.spaces)),
580
- right: _propTypes["default"].oneOf(Object.keys(_variables.spaces))
581
- }), _propTypes["default"].oneOf((0, _toConsumableArray2["default"])(Object.keys(_variables.spaces)))]),
582
- tabIndex: _propTypes["default"].number
583
- };
584
1095
  var _default = DxcSelect;
585
1096
  exports["default"] = _default;