@dxc-technology/halstack-react 0.0.0-951bb80 → 0.0.0-95b953e

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 (359) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1249 -0
  4. package/HalstackContext.js +310 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +116 -181
  8. package/accordion/Accordion.stories.tsx +103 -127
  9. package/accordion/Accordion.test.js +56 -0
  10. package/accordion/types.d.ts +9 -16
  11. package/accordion-group/AccordionGroup.d.ts +5 -4
  12. package/accordion-group/AccordionGroup.js +38 -107
  13. package/accordion-group/AccordionGroup.stories.tsx +95 -68
  14. package/accordion-group/AccordionGroup.test.js +98 -0
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +15 -16
  18. package/action-icon/ActionIcon.d.ts +4 -0
  19. package/action-icon/ActionIcon.js +47 -0
  20. package/action-icon/ActionIcon.stories.tsx +41 -0
  21. package/action-icon/ActionIcon.test.js +64 -0
  22. package/action-icon/types.d.ts +26 -0
  23. package/alert/Alert.js +23 -59
  24. package/alert/Alert.stories.tsx +28 -0
  25. package/alert/Alert.test.js +75 -0
  26. package/alert/types.d.ts +5 -5
  27. package/badge/Badge.d.ts +4 -0
  28. package/badge/Badge.js +141 -41
  29. package/badge/Badge.stories.tsx +210 -0
  30. package/badge/Badge.test.js +30 -0
  31. package/badge/types.d.ts +54 -0
  32. package/bleed/Bleed.js +14 -55
  33. package/bleed/Bleed.stories.tsx +95 -95
  34. package/bleed/types.d.ts +26 -2
  35. package/box/Box.d.ts +1 -1
  36. package/box/Box.js +30 -81
  37. package/box/Box.stories.tsx +38 -51
  38. package/box/Box.test.js +13 -0
  39. package/box/types.d.ts +3 -14
  40. package/bulleted-list/BulletedList.d.ts +7 -0
  41. package/bulleted-list/BulletedList.js +89 -0
  42. package/bulleted-list/BulletedList.stories.tsx +115 -0
  43. package/bulleted-list/types.d.ts +38 -0
  44. package/button/Button.d.ts +1 -1
  45. package/button/Button.js +62 -113
  46. package/button/Button.stories.tsx +160 -90
  47. package/button/Button.test.js +38 -0
  48. package/button/types.d.ts +12 -8
  49. package/card/Card.d.ts +1 -1
  50. package/card/Card.js +58 -102
  51. package/card/Card.stories.tsx +12 -42
  52. package/card/Card.test.js +39 -0
  53. package/card/types.d.ts +6 -11
  54. package/checkbox/Checkbox.d.ts +2 -2
  55. package/checkbox/Checkbox.js +144 -182
  56. package/checkbox/Checkbox.stories.tsx +166 -136
  57. package/checkbox/Checkbox.test.js +199 -0
  58. package/checkbox/types.d.ts +18 -6
  59. package/chip/Chip.js +39 -79
  60. package/chip/Chip.stories.tsx +121 -26
  61. package/chip/Chip.test.js +41 -0
  62. package/chip/types.d.ts +4 -4
  63. package/common/OpenSans.css +68 -80
  64. package/common/coreTokens.d.ts +237 -0
  65. package/common/coreTokens.js +184 -0
  66. package/common/utils.d.ts +1 -0
  67. package/common/utils.js +6 -12
  68. package/common/variables.d.ts +1395 -0
  69. package/common/variables.js +1029 -1373
  70. package/container/Container.d.ts +4 -0
  71. package/container/Container.js +194 -0
  72. package/container/Container.stories.tsx +214 -0
  73. package/container/types.d.ts +74 -0
  74. package/date-input/Calendar.d.ts +4 -0
  75. package/date-input/Calendar.js +214 -0
  76. package/date-input/DateInput.js +171 -306
  77. package/date-input/DateInput.stories.tsx +203 -56
  78. package/date-input/DateInput.test.js +808 -0
  79. package/date-input/DatePicker.d.ts +4 -0
  80. package/date-input/DatePicker.js +115 -0
  81. package/date-input/Icons.d.ts +6 -0
  82. package/date-input/Icons.js +58 -0
  83. package/date-input/YearPicker.d.ts +4 -0
  84. package/date-input/YearPicker.js +100 -0
  85. package/date-input/types.d.ts +86 -22
  86. package/dialog/Dialog.d.ts +1 -1
  87. package/dialog/Dialog.js +68 -130
  88. package/dialog/Dialog.stories.tsx +320 -167
  89. package/dialog/Dialog.test.js +307 -0
  90. package/dialog/types.d.ts +18 -25
  91. package/dropdown/Dropdown.d.ts +1 -1
  92. package/dropdown/Dropdown.js +248 -307
  93. package/dropdown/Dropdown.stories.tsx +245 -56
  94. package/dropdown/Dropdown.test.js +599 -0
  95. package/dropdown/DropdownMenu.d.ts +4 -0
  96. package/dropdown/DropdownMenu.js +63 -0
  97. package/dropdown/DropdownMenuItem.d.ts +4 -0
  98. package/dropdown/DropdownMenuItem.js +67 -0
  99. package/dropdown/types.d.ts +32 -14
  100. package/file-input/FileInput.d.ts +2 -2
  101. package/file-input/FileInput.js +246 -357
  102. package/file-input/FileInput.stories.tsx +123 -12
  103. package/file-input/FileInput.test.js +459 -0
  104. package/file-input/FileItem.d.ts +4 -14
  105. package/file-input/FileItem.js +50 -99
  106. package/file-input/types.d.ts +25 -8
  107. package/flex/Flex.d.ts +4 -0
  108. package/flex/Flex.js +57 -0
  109. package/flex/Flex.stories.tsx +112 -0
  110. package/flex/types.d.ts +97 -0
  111. package/footer/Footer.d.ts +1 -1
  112. package/footer/Footer.js +70 -190
  113. package/footer/Footer.stories.tsx +60 -19
  114. package/footer/Footer.test.js +85 -0
  115. package/footer/Icons.d.ts +3 -2
  116. package/footer/Icons.js +67 -8
  117. package/footer/types.d.ts +25 -26
  118. package/grid/Grid.d.ts +7 -0
  119. package/grid/Grid.js +76 -0
  120. package/grid/Grid.stories.tsx +219 -0
  121. package/grid/types.d.ts +115 -0
  122. package/header/Header.d.ts +4 -3
  123. package/header/Header.js +99 -203
  124. package/header/Header.stories.tsx +152 -63
  125. package/header/Header.test.js +66 -0
  126. package/header/Icons.d.ts +2 -2
  127. package/header/Icons.js +4 -9
  128. package/header/types.d.ts +5 -19
  129. package/heading/Heading.js +10 -32
  130. package/heading/Heading.test.js +169 -0
  131. package/heading/types.d.ts +7 -7
  132. package/image/Image.d.ts +4 -0
  133. package/image/Image.js +70 -0
  134. package/image/Image.stories.tsx +127 -0
  135. package/image/types.d.ts +72 -0
  136. package/image/types.js +5 -0
  137. package/inset/Inset.js +14 -55
  138. package/inset/Inset.stories.tsx +37 -36
  139. package/inset/types.d.ts +26 -2
  140. package/layout/ApplicationLayout.d.ts +16 -6
  141. package/layout/ApplicationLayout.js +83 -174
  142. package/layout/ApplicationLayout.stories.tsx +85 -94
  143. package/layout/Icons.d.ts +8 -0
  144. package/layout/Icons.js +51 -48
  145. package/layout/SidenavContext.d.ts +5 -0
  146. package/layout/SidenavContext.js +13 -0
  147. package/layout/types.d.ts +19 -35
  148. package/link/Link.d.ts +3 -2
  149. package/link/Link.js +61 -99
  150. package/link/Link.stories.tsx +155 -53
  151. package/link/Link.test.js +63 -0
  152. package/link/types.d.ts +15 -31
  153. package/main.d.ts +16 -18
  154. package/main.js +63 -123
  155. package/nav-tabs/NavTabs.d.ts +8 -0
  156. package/nav-tabs/NavTabs.js +93 -0
  157. package/nav-tabs/NavTabs.stories.tsx +276 -0
  158. package/nav-tabs/NavTabs.test.js +76 -0
  159. package/nav-tabs/Tab.d.ts +4 -0
  160. package/nav-tabs/Tab.js +118 -0
  161. package/nav-tabs/types.d.ts +52 -0
  162. package/nav-tabs/types.js +5 -0
  163. package/number-input/NumberInput.d.ts +7 -0
  164. package/number-input/NumberInput.js +48 -45
  165. package/number-input/NumberInput.stories.tsx +44 -28
  166. package/number-input/NumberInput.test.js +989 -0
  167. package/number-input/types.d.ts +28 -15
  168. package/package.json +46 -47
  169. package/paginator/Icons.d.ts +5 -0
  170. package/paginator/Icons.js +21 -47
  171. package/paginator/Paginator.js +34 -91
  172. package/paginator/Paginator.stories.tsx +24 -0
  173. package/paginator/Paginator.test.js +335 -0
  174. package/paginator/types.d.ts +3 -3
  175. package/paragraph/Paragraph.d.ts +5 -0
  176. package/paragraph/Paragraph.js +22 -0
  177. package/paragraph/Paragraph.stories.tsx +27 -0
  178. package/password-input/Icons.d.ts +6 -0
  179. package/password-input/Icons.js +35 -0
  180. package/password-input/PasswordInput.js +57 -123
  181. package/password-input/PasswordInput.stories.tsx +1 -33
  182. package/password-input/PasswordInput.test.js +198 -0
  183. package/password-input/types.d.ts +21 -17
  184. package/progress-bar/ProgressBar.js +65 -91
  185. package/progress-bar/ProgressBar.stories.tsx +93 -0
  186. package/progress-bar/ProgressBar.test.js +93 -0
  187. package/progress-bar/types.d.ts +3 -3
  188. package/quick-nav/QuickNav.d.ts +4 -0
  189. package/quick-nav/QuickNav.js +94 -0
  190. package/quick-nav/QuickNav.stories.tsx +356 -0
  191. package/quick-nav/types.d.ts +21 -0
  192. package/quick-nav/types.js +5 -0
  193. package/radio-group/Radio.d.ts +1 -1
  194. package/radio-group/Radio.js +64 -80
  195. package/radio-group/RadioGroup.js +101 -139
  196. package/radio-group/RadioGroup.stories.tsx +171 -36
  197. package/radio-group/RadioGroup.test.js +691 -183
  198. package/radio-group/types.d.ts +89 -11
  199. package/resultset-table/Icons.d.ts +7 -0
  200. package/resultset-table/Icons.js +47 -0
  201. package/resultset-table/ResultsetTable.d.ts +7 -0
  202. package/resultset-table/ResultsetTable.js +167 -0
  203. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +152 -30
  204. package/resultset-table/ResultsetTable.test.js +371 -0
  205. package/{resultsetTable → resultset-table}/types.d.ts +13 -7
  206. package/resultset-table/types.js +5 -0
  207. package/select/Icons.d.ts +10 -0
  208. package/select/Icons.js +89 -0
  209. package/select/Listbox.d.ts +4 -0
  210. package/select/Listbox.js +143 -0
  211. package/select/Option.d.ts +4 -0
  212. package/select/Option.js +87 -0
  213. package/select/Select.js +229 -502
  214. package/select/Select.stories.tsx +603 -204
  215. package/select/Select.test.js +2370 -0
  216. package/select/types.d.ts +64 -25
  217. package/sidenav/Icons.d.ts +7 -0
  218. package/sidenav/Icons.js +47 -0
  219. package/sidenav/Sidenav.d.ts +6 -5
  220. package/sidenav/Sidenav.js +131 -71
  221. package/sidenav/Sidenav.stories.tsx +251 -151
  222. package/sidenav/Sidenav.test.js +37 -0
  223. package/sidenav/types.d.ts +52 -26
  224. package/slider/Slider.d.ts +2 -2
  225. package/slider/Slider.js +148 -180
  226. package/slider/Slider.test.js +254 -0
  227. package/slider/types.d.ts +11 -3
  228. package/spinner/Spinner.js +31 -75
  229. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  230. package/spinner/Spinner.test.js +55 -0
  231. package/spinner/types.d.ts +3 -3
  232. package/status-light/StatusLight.d.ts +4 -0
  233. package/status-light/StatusLight.js +51 -0
  234. package/status-light/StatusLight.stories.tsx +74 -0
  235. package/status-light/StatusLight.test.js +25 -0
  236. package/status-light/types.d.ts +17 -0
  237. package/status-light/types.js +5 -0
  238. package/switch/Switch.d.ts +2 -2
  239. package/switch/Switch.js +149 -114
  240. package/switch/Switch.stories.tsx +44 -67
  241. package/switch/Switch.test.js +180 -0
  242. package/switch/types.d.ts +13 -5
  243. package/table/ActionsCell.d.ts +4 -0
  244. package/table/ActionsCell.js +67 -0
  245. package/table/DropdownTheme.js +62 -0
  246. package/table/Table.d.ts +4 -1
  247. package/table/Table.js +26 -32
  248. package/table/Table.stories.tsx +658 -0
  249. package/table/Table.test.js +113 -0
  250. package/table/types.d.ts +45 -6
  251. package/tabs/Tab.d.ts +4 -0
  252. package/tabs/Tab.js +116 -0
  253. package/tabs/Tabs.d.ts +1 -1
  254. package/tabs/Tabs.js +316 -145
  255. package/tabs/Tabs.stories.tsx +120 -14
  256. package/tabs/Tabs.test.js +294 -0
  257. package/tabs/types.d.ts +29 -15
  258. package/tag/Tag.js +41 -78
  259. package/tag/Tag.stories.tsx +25 -8
  260. package/tag/Tag.test.js +49 -0
  261. package/tag/types.d.ts +7 -7
  262. package/text-input/Icons.d.ts +8 -0
  263. package/text-input/Icons.js +56 -0
  264. package/text-input/Suggestion.d.ts +4 -0
  265. package/text-input/Suggestion.js +67 -0
  266. package/text-input/Suggestions.d.ts +4 -0
  267. package/text-input/Suggestions.js +84 -0
  268. package/text-input/TextInput.js +327 -556
  269. package/text-input/TextInput.stories.tsx +281 -272
  270. package/text-input/TextInput.test.js +1756 -0
  271. package/text-input/types.d.ts +70 -24
  272. package/textarea/Textarea.js +85 -135
  273. package/textarea/Textarea.stories.tsx +174 -0
  274. package/textarea/Textarea.test.js +406 -0
  275. package/textarea/types.d.ts +27 -16
  276. package/toggle-group/ToggleGroup.d.ts +2 -2
  277. package/toggle-group/ToggleGroup.js +92 -105
  278. package/toggle-group/ToggleGroup.stories.tsx +53 -8
  279. package/toggle-group/ToggleGroup.test.js +137 -0
  280. package/toggle-group/types.d.ts +34 -17
  281. package/typography/Typography.d.ts +4 -0
  282. package/typography/Typography.js +23 -0
  283. package/typography/Typography.stories.tsx +198 -0
  284. package/typography/types.d.ts +18 -0
  285. package/typography/types.js +5 -0
  286. package/useTheme.d.ts +1147 -1
  287. package/useTheme.js +4 -11
  288. package/useTranslatedLabels.d.ts +85 -0
  289. package/useTranslatedLabels.js +14 -0
  290. package/utils/BaseTypography.d.ts +21 -0
  291. package/utils/BaseTypography.js +94 -0
  292. package/utils/FocusLock.d.ts +13 -0
  293. package/utils/FocusLock.js +124 -0
  294. package/wizard/Wizard.d.ts +1 -1
  295. package/wizard/Wizard.js +70 -101
  296. package/wizard/Wizard.stories.tsx +48 -19
  297. package/wizard/Wizard.test.js +114 -0
  298. package/wizard/types.d.ts +12 -8
  299. package/ThemeContext.d.ts +0 -15
  300. package/ThemeContext.js +0 -243
  301. package/V3Select/V3Select.js +0 -455
  302. package/V3Select/index.d.ts +0 -27
  303. package/V3Textarea/V3Textarea.js +0 -260
  304. package/V3Textarea/index.d.ts +0 -27
  305. package/card/ice-cream.jpg +0 -0
  306. package/common/RequiredComponent.js +0 -32
  307. package/date/Date.js +0 -373
  308. package/date/index.d.ts +0 -27
  309. package/input-text/Icons.js +0 -22
  310. package/input-text/InputText.js +0 -611
  311. package/input-text/index.d.ts +0 -36
  312. package/list/List.d.ts +0 -4
  313. package/list/List.js +0 -47
  314. package/list/List.stories.tsx +0 -95
  315. package/list/types.d.ts +0 -7
  316. package/number-input/NumberInputContext.d.ts +0 -4
  317. package/number-input/NumberInputContext.js +0 -19
  318. package/number-input/numberInputContextTypes.d.ts +0 -19
  319. package/progress-bar/ProgressBar.stories.jsx +0 -58
  320. package/radio/Radio.d.ts +0 -4
  321. package/radio/Radio.js +0 -174
  322. package/radio/Radio.stories.tsx +0 -192
  323. package/radio/types.d.ts +0 -54
  324. package/resultsetTable/ResultsetTable.d.ts +0 -4
  325. package/resultsetTable/ResultsetTable.js +0 -251
  326. package/row/Row.d.ts +0 -3
  327. package/row/Row.js +0 -127
  328. package/row/Row.stories.tsx +0 -237
  329. package/row/types.d.ts +0 -10
  330. package/slider/Slider.stories.tsx +0 -177
  331. package/stack/Stack.d.ts +0 -3
  332. package/stack/Stack.js +0 -97
  333. package/stack/Stack.stories.tsx +0 -164
  334. package/stack/types.d.ts +0 -9
  335. package/table/Table.stories.jsx +0 -277
  336. package/text/Text.d.ts +0 -7
  337. package/text/Text.js +0 -30
  338. package/text/Text.stories.tsx +0 -19
  339. package/textarea/Textarea.stories.jsx +0 -136
  340. package/toggle/Toggle.js +0 -186
  341. package/toggle/index.d.ts +0 -21
  342. package/upload/Upload.js +0 -201
  343. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  344. package/upload/buttons-upload/Icons.js +0 -40
  345. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  346. package/upload/dragAndDropArea/Icons.js +0 -39
  347. package/upload/file-upload/FileToUpload.js +0 -115
  348. package/upload/file-upload/Icons.js +0 -66
  349. package/upload/files-upload/FilesToUpload.js +0 -109
  350. package/upload/index.d.ts +0 -15
  351. package/upload/transaction/Icons.js +0 -160
  352. package/upload/transaction/Transaction.js +0 -104
  353. package/upload/transactions/Transactions.js +0 -94
  354. /package/{list → action-icon}/types.js +0 -0
  355. /package/{radio → badge}/types.js +0 -0
  356. /package/{resultsetTable → bulleted-list}/types.js +0 -0
  357. /package/{row → container}/types.js +0 -0
  358. /package/{stack → flex}/types.js +0 -0
  359. /package/{number-input/numberInputContextTypes.js → grid/types.js} +0 -0
@@ -0,0 +1,371 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
7
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _react2 = require("@testing-library/react");
10
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
11
+ var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable.tsx"));
12
+ // Mocking DOMRect for Radix Primitive Popover
13
+ global.globalThis = global;
14
+ global.DOMRect = {
15
+ fromRect: function fromRect() {
16
+ return {
17
+ top: 0,
18
+ left: 0,
19
+ bottom: 0,
20
+ right: 0,
21
+ width: 0,
22
+ height: 0
23
+ };
24
+ }
25
+ };
26
+ global.ResizeObserver = /*#__PURE__*/function () {
27
+ function ResizeObserver() {
28
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
29
+ }
30
+ (0, _createClass2["default"])(ResizeObserver, [{
31
+ key: "observe",
32
+ value: function observe() {}
33
+ }, {
34
+ key: "unobserve",
35
+ value: function unobserve() {}
36
+ }, {
37
+ key: "disconnect",
38
+ value: function disconnect() {}
39
+ }]);
40
+ return ResizeObserver;
41
+ }();
42
+ var icon = /*#__PURE__*/_react["default"].createElement("svg", {
43
+ xmlns: "http://www.w3.org/2000/svg",
44
+ height: "24px",
45
+ viewBox: "0 0 24 24",
46
+ width: "24px",
47
+ fill: "currentColor"
48
+ }, /*#__PURE__*/_react["default"].createElement("path", {
49
+ d: "M0 0h24v24H0V0zm0 0h24v24H0V0z",
50
+ fill: "none"
51
+ }), /*#__PURE__*/_react["default"].createElement("path", {
52
+ d: "M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3c-1.65-1.66-4.34-1.66-6 0zm-4-4l2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13z"
53
+ }));
54
+ var columns = [{
55
+ displayValue: "Id",
56
+ isSortable: false
57
+ }, {
58
+ displayValue: "Name",
59
+ isSortable: true
60
+ }, {
61
+ displayValue: "City",
62
+ isSortable: false
63
+ }];
64
+ var rows = [[{
65
+ displayValue: "001",
66
+ sortValue: "001"
67
+ }, {
68
+ displayValue: "Peter",
69
+ sortValue: "Peter"
70
+ }, {
71
+ displayValue: "Oviedo",
72
+ sortValue: "Oviedo"
73
+ }], [{
74
+ displayValue: "002",
75
+ sortValue: "002"
76
+ }, {
77
+ displayValue: "Louis",
78
+ sortValue: "Louis"
79
+ }, {
80
+ displayValue: "Oviedo",
81
+ sortValue: "Oviedo"
82
+ }], [{
83
+ displayValue: "003",
84
+ sortValue: "003"
85
+ }, {
86
+ displayValue: "Lana",
87
+ sortValue: "Lana"
88
+ }, {
89
+ displayValue: "Albacete",
90
+ sortValue: "Albacete"
91
+ }], [{
92
+ displayValue: "004",
93
+ sortValue: "004"
94
+ }, {
95
+ displayValue: "Rick",
96
+ sortValue: "Rick"
97
+ }, {
98
+ displayValue: "Albacete",
99
+ sortValue: "Albacete"
100
+ }], [{
101
+ displayValue: "005",
102
+ sortValue: "005"
103
+ }, {
104
+ displayValue: "Mark",
105
+ sortValue: "Mark"
106
+ }, {
107
+ displayValue: "Madrid",
108
+ sortValue: "Madrid"
109
+ }], [{
110
+ displayValue: "006",
111
+ sortValue: "006"
112
+ }, {
113
+ displayValue: "Cris",
114
+ sortValue: "Cris"
115
+ }, {
116
+ displayValue: "Barcelona",
117
+ sortValue: "Barcelona"
118
+ }], [{
119
+ displayValue: "007",
120
+ sortValue: "007"
121
+ }, {
122
+ displayValue: "Susan",
123
+ sortValue: "Susan"
124
+ }, {
125
+ displayValue: "Madrid",
126
+ sortValue: "Madrid"
127
+ }], [{
128
+ displayValue: "008",
129
+ sortValue: "008"
130
+ }, {
131
+ displayValue: "Tina",
132
+ sortValue: "Tina"
133
+ }, {
134
+ displayValue: "Barcelona",
135
+ sortValue: "Barcelona"
136
+ }], [{
137
+ displayValue: "009",
138
+ sortValue: "009"
139
+ }, {
140
+ displayValue: "Kevin",
141
+ sortValue: "Kevin"
142
+ }, {
143
+ displayValue: "Oviedo",
144
+ sortValue: "Oviedo"
145
+ }], [{
146
+ displayValue: "010",
147
+ sortValue: "010"
148
+ }, {
149
+ displayValue: "Cosmin",
150
+ sortValue: "Cosmin"
151
+ }, {
152
+ displayValue: "Barcelona",
153
+ sortValue: "Barcelona"
154
+ }]];
155
+ var rows2 = [[{
156
+ displayValue: "546",
157
+ sortValue: "465"
158
+ }, {
159
+ displayValue: "OtherValue",
160
+ sortValue: "OtherValue"
161
+ }, {
162
+ displayValue: "OtherValue",
163
+ sortValue: "OtherValue"
164
+ }], [{
165
+ displayValue: "978",
166
+ sortValue: "465"
167
+ }, {
168
+ displayValue: "OtherValue",
169
+ sortValue: "OtherValue"
170
+ }, {
171
+ displayValue: "OtherValue",
172
+ sortValue: "OtherValue"
173
+ }, {
174
+ displayValue: ""
175
+ }], [{
176
+ displayValue: "678",
177
+ sortValue: "344"
178
+ }, {
179
+ displayValue: "OtherValue",
180
+ sortValue: "OtherValue"
181
+ }, {
182
+ displayValue: "OtherValue",
183
+ sortValue: "OtherValue"
184
+ }]];
185
+ describe("Resultset table component tests", function () {
186
+ test("Resultset table rendered correctly", function () {
187
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
188
+ columns: columns,
189
+ rows: rows,
190
+ itemsPerPage: 3
191
+ })),
192
+ getByText = _render.getByText;
193
+ expect(getByText("Peter")).toBeTruthy();
194
+ });
195
+ test("Resultset table shows as many rows as itemsPerPage", function () {
196
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
197
+ columns: columns,
198
+ rows: rows,
199
+ itemsPerPage: 3
200
+ })),
201
+ getAllByRole = _render2.getAllByRole;
202
+ expect(getAllByRole("row").length - 1).toEqual(3);
203
+ });
204
+ test("Resultset table shows rows on second page", function () {
205
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
206
+ columns: columns,
207
+ rows: rows,
208
+ itemsPerPage: 3
209
+ })),
210
+ getByText = _render3.getByText,
211
+ getAllByRole = _render3.getAllByRole;
212
+ expect(getByText("Peter")).toBeTruthy();
213
+ expect(getByText("Louis")).toBeTruthy();
214
+ expect(getByText("Lana")).toBeTruthy();
215
+ expect(getAllByRole("row").length - 1).toEqual(3);
216
+ var nextButton = getAllByRole("button")[3];
217
+ _react2.fireEvent.click(nextButton);
218
+ expect(getByText("4 to 6 of 10")).toBeTruthy();
219
+ expect(getByText("Rick")).toBeTruthy();
220
+ expect(getByText("Mark")).toBeTruthy();
221
+ expect(getByText("Cris")).toBeTruthy();
222
+ expect(getAllByRole("row").length - 1).toEqual(3);
223
+ });
224
+ test("Resultset table goToPage works as expected", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
225
+ var _render4, getByText, getAllByRole, goToPageSelect, goToPageOption;
226
+ return _regenerator["default"].wrap(function _callee$(_context) {
227
+ while (1) switch (_context.prev = _context.next) {
228
+ case 0:
229
+ window.HTMLElement.prototype.scrollIntoView = function () {};
230
+ window.HTMLElement.prototype.scrollTo = function () {};
231
+ _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
232
+ columns: columns,
233
+ showGoToPage: true,
234
+ rows: rows,
235
+ itemsPerPage: 3
236
+ })), getByText = _render4.getByText, getAllByRole = _render4.getAllByRole;
237
+ expect(getByText("Peter")).toBeTruthy();
238
+ expect(getByText("Louis")).toBeTruthy();
239
+ expect(getByText("Lana")).toBeTruthy();
240
+ expect(getAllByRole("row").length - 1).toEqual(3);
241
+ goToPageSelect = getAllByRole("button")[3];
242
+ _context.next = 10;
243
+ return _userEvent["default"].click(goToPageSelect);
244
+ case 10:
245
+ goToPageOption = getByText("2");
246
+ _context.next = 13;
247
+ return _userEvent["default"].click(goToPageOption);
248
+ case 13:
249
+ expect(getByText("4 to 6 of 10")).toBeTruthy();
250
+ expect(getByText("Rick")).toBeTruthy();
251
+ expect(getByText("Mark")).toBeTruthy();
252
+ expect(getByText("Cris")).toBeTruthy();
253
+ expect(getAllByRole("row").length - 1).toEqual(3);
254
+ case 18:
255
+ case "end":
256
+ return _context.stop();
257
+ }
258
+ }, _callee);
259
+ })));
260
+ test("Resultset table going to the last page shows only one row", function () {
261
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
262
+ columns: columns,
263
+ rows: rows,
264
+ itemsPerPage: 3
265
+ })),
266
+ getByText = _render5.getByText,
267
+ getAllByRole = _render5.getAllByRole;
268
+ var lastButton = getAllByRole("button")[4];
269
+ _react2.fireEvent.click(lastButton);
270
+ expect(getByText("10 to 10 of 10")).toBeTruthy();
271
+ expect(getAllByRole("row")).toHaveLength(2);
272
+ expect(getByText("Cosmin")).toBeTruthy();
273
+ });
274
+ test("Resultset table sort rows by column", function () {
275
+ var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
276
+ columns: columns,
277
+ rows: rows,
278
+ itemsPerPage: 3
279
+ }));
280
+ expect(component.queryByText("Peter")).toBeTruthy();
281
+ _react2.fireEvent.click(component.queryByText("Name"));
282
+ expect(component.queryByText("Tina")).not.toBeTruthy();
283
+ expect(component.queryByText("Cosmin")).toBeTruthy();
284
+ _react2.fireEvent.click(component.queryByText("Name"));
285
+ expect(component.queryByText("Tina")).toBeTruthy();
286
+ expect(component.queryByText("Cosmin")).not.toBeTruthy();
287
+ });
288
+ test("Resultset table change rows should go to first page", function () {
289
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
290
+ columns: columns,
291
+ rows: rows,
292
+ itemsPerPage: 3
293
+ })),
294
+ queryByText = _render6.queryByText,
295
+ rerender = _render6.rerender;
296
+ expect(queryByText("Peter")).toBeTruthy();
297
+ rerender( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
298
+ columns: columns,
299
+ rows: rows2,
300
+ itemsPerPage: 3
301
+ }));
302
+ expect(queryByText("1 to 3 of 3")).toBeTruthy();
303
+ });
304
+ test("Resultset table change itemsPerPage should go to first page", function () {
305
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
306
+ columns: columns,
307
+ rows: rows,
308
+ itemsPerPage: 3,
309
+ itemsPerPageOptions: [2, 3]
310
+ })),
311
+ getAllByRole = _render7.getAllByRole;
312
+ var lastButton = getAllByRole("button")[4];
313
+ expect(getAllByRole("row").length - 1).toEqual(3);
314
+ _react2.fireEvent.click(lastButton);
315
+ expect(getAllByRole("row").length - 1).toEqual(1);
316
+ });
317
+ test("Resultset table with ActionsCell", function () {
318
+ var onSelectOption = jest.fn();
319
+ var onClick = jest.fn();
320
+ var actions = [{
321
+ icon: icon,
322
+ title: "icon1",
323
+ onClick: onSelectOption,
324
+ options: [{
325
+ value: "1",
326
+ label: "Amazon"
327
+ }, {
328
+ value: "2",
329
+ label: "Ebay"
330
+ }, {
331
+ value: "3",
332
+ label: "Aliexpress"
333
+ }]
334
+ }, {
335
+ icon: icon,
336
+ title: "icon2",
337
+ onClick: onClick
338
+ }];
339
+ var actionRows = [[{
340
+ displayValue: "001",
341
+ sortValue: "001"
342
+ }, {
343
+ displayValue: "Peter",
344
+ sortValue: "Peter"
345
+ }, {
346
+ displayValue: /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"].ActionsCell, {
347
+ actions: actions
348
+ }),
349
+ sortValue: "Actions"
350
+ }]];
351
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
352
+ columns: columns,
353
+ rows: actionRows,
354
+ itemsPerPage: 3
355
+ })),
356
+ getAllByRole = _render8.getAllByRole,
357
+ getByRole = _render8.getByRole,
358
+ getByText = _render8.getByText;
359
+ var dropdown = getAllByRole("button")[2];
360
+ (0, _react2.act)(function () {
361
+ _userEvent["default"].click(dropdown);
362
+ });
363
+ expect(getByRole("menu")).toBeTruthy();
364
+ var option = getByText("Aliexpress");
365
+ _userEvent["default"].click(option);
366
+ expect(onSelectOption).toHaveBeenCalledWith("3");
367
+ var action = getAllByRole("button")[1];
368
+ _userEvent["default"].click(action);
369
+ expect(onClick).toHaveBeenCalled();
370
+ });
371
+ });
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Margin = {
2
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type Column = {
9
+ export type Column = {
10
10
  /**
11
11
  * Column display value.
12
12
  */
@@ -16,7 +16,7 @@ declare type Column = {
16
16
  */
17
17
  isSortable?: boolean;
18
18
  };
19
- declare type Row = {
19
+ type Row = {
20
20
  /**
21
21
  * Value to be displayed in the cell.
22
22
  */
@@ -27,7 +27,7 @@ declare type Row = {
27
27
  */
28
28
  sortValue?: string;
29
29
  };
30
- declare type Props = {
30
+ type Props = {
31
31
  /**
32
32
  * An array of objects representing the columns of the table.
33
33
  */
@@ -53,15 +53,21 @@ declare type Props = {
53
53
  * This function will be called when the user selects an item per page
54
54
  * option. The value selected will be passed as a parameter.
55
55
  */
56
- itemsPerPageFunction?: (newValue: number) => void;
56
+ itemsPerPageFunction?: (value: number) => void;
57
57
  /**
58
58
  * Size of the margin to be applied to the component. You can pass an object with 'top',
59
59
  * 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
60
60
  */
61
61
  margin?: Space | Margin;
62
62
  /**
63
- * Value of the tabindex attribute given to the sortable icon.
63
+ * Value of the tabindex attribute applied to the sortable icon.
64
64
  */
65
65
  tabIndex?: number;
66
+ /**
67
+ * Determines the visual style and layout
68
+ * - "default": The default mode with big spacing
69
+ * - "reduced": A reduced mode with minimal spacing for dense tables
70
+ */
71
+ mode?: "default" | "reduced";
66
72
  };
67
73
  export default Props;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ declare const selectIcons: {
3
+ error: React.JSX.Element;
4
+ arrowUp: React.JSX.Element;
5
+ arrowDown: React.JSX.Element;
6
+ clear: React.JSX.Element;
7
+ selected: React.JSX.Element;
8
+ searchOff: React.JSX.Element;
9
+ };
10
+ export default selectIcons;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var selectIcons = {
10
+ error: /*#__PURE__*/_react["default"].createElement("svg", {
11
+ role: "img",
12
+ xmlns: "http://www.w3.org/2000/svg",
13
+ height: "24px",
14
+ viewBox: "0 0 24 24",
15
+ width: "24px",
16
+ fill: "currentColor"
17
+ }, /*#__PURE__*/_react["default"].createElement("path", {
18
+ 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"
19
+ })),
20
+ arrowUp: /*#__PURE__*/_react["default"].createElement("svg", {
21
+ role: "img",
22
+ xmlns: "http://www.w3.org/2000/svg",
23
+ height: "24px",
24
+ viewBox: "0 0 24 24",
25
+ width: "24px",
26
+ fill: "currentColor"
27
+ }, /*#__PURE__*/_react["default"].createElement("path", {
28
+ d: "M0 0h24v24H0V0z",
29
+ fill: "none"
30
+ }), /*#__PURE__*/_react["default"].createElement("path", {
31
+ d: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z"
32
+ })),
33
+ arrowDown: /*#__PURE__*/_react["default"].createElement("svg", {
34
+ role: "img",
35
+ xmlns: "http://www.w3.org/2000/svg",
36
+ height: "24px",
37
+ viewBox: "0 0 24 24",
38
+ width: "24px",
39
+ fill: "currentColor"
40
+ }, /*#__PURE__*/_react["default"].createElement("path", {
41
+ d: "M0 0h24v24H0V0z",
42
+ fill: "none"
43
+ }), /*#__PURE__*/_react["default"].createElement("path", {
44
+ d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"
45
+ })),
46
+ clear: /*#__PURE__*/_react["default"].createElement("svg", {
47
+ role: "img",
48
+ xmlns: "http://www.w3.org/2000/svg",
49
+ width: "24",
50
+ height: "24",
51
+ viewBox: "0 0 24 24",
52
+ fill: "currentColor"
53
+ }, /*#__PURE__*/_react["default"].createElement("path", {
54
+ d: "M0 0h24v24H0V0z",
55
+ fill: "none"
56
+ }), /*#__PURE__*/_react["default"].createElement("path", {
57
+ 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"
58
+ })),
59
+ selected: /*#__PURE__*/_react["default"].createElement("svg", {
60
+ role: "img",
61
+ xmlns: "http://www.w3.org/2000/svg",
62
+ height: "24px",
63
+ viewBox: "0 0 24 24",
64
+ width: "24px",
65
+ fill: "currentColor"
66
+ }, /*#__PURE__*/_react["default"].createElement("path", {
67
+ d: "M0 0h24v24H0z",
68
+ fill: "none"
69
+ }), /*#__PURE__*/_react["default"].createElement("path", {
70
+ d: "M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"
71
+ })),
72
+ searchOff: /*#__PURE__*/_react["default"].createElement("svg", {
73
+ role: "img",
74
+ xmlns: "http://www.w3.org/2000/svg",
75
+ height: "24px",
76
+ viewBox: "0 0 24 24",
77
+ width: "24px",
78
+ fill: "currentColor"
79
+ }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("rect", {
80
+ fill: "none",
81
+ height: "24",
82
+ width: "24"
83
+ })), /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
84
+ 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"
85
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
86
+ 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"
87
+ }))))
88
+ };
89
+ var _default = exports["default"] = selectIcons;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { ListboxProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ id, currentValue, options, visualFocusIndex, lastOptionIndex, multiple, optional, optionalItem, searchable, handleOptionOnClick, styles, }: ListboxProps) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
12
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
13
+ var _Option = _interopRequireDefault(require("./Option"));
14
+ var _Icons = _interopRequireDefault(require("./Icons"));
15
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
18
+ var groupsHaveOptions = function groupsHaveOptions(options) {
19
+ return options !== null && options !== void 0 && options[0].options ? options.some(function (groupOption) {
20
+ var _groupOption$options;
21
+ return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
22
+ }) : true;
23
+ };
24
+ var Listbox = function Listbox(_ref) {
25
+ var id = _ref.id,
26
+ currentValue = _ref.currentValue,
27
+ options = _ref.options,
28
+ visualFocusIndex = _ref.visualFocusIndex,
29
+ lastOptionIndex = _ref.lastOptionIndex,
30
+ multiple = _ref.multiple,
31
+ optional = _ref.optional,
32
+ optionalItem = _ref.optionalItem,
33
+ searchable = _ref.searchable,
34
+ handleOptionOnClick = _ref.handleOptionOnClick,
35
+ styles = _ref.styles;
36
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
37
+ var listboxRef = (0, _react.useRef)(null);
38
+ var globalIndex = optional && !multiple ? 0 : -1;
39
+ var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
40
+ if (option.options) {
41
+ var groupId = "group-".concat(mapIndex);
42
+ return option.options.length > 0 && /*#__PURE__*/_react["default"].createElement("li", {
43
+ key: "group-".concat(mapIndex)
44
+ }, /*#__PURE__*/_react["default"].createElement(GroupList, {
45
+ role: "group",
46
+ "aria-labelledby": groupId
47
+ }, /*#__PURE__*/_react["default"].createElement(GroupLabel, {
48
+ role: "presentation",
49
+ id: groupId
50
+ }, option.label), option.options.map(function (singleOption) {
51
+ globalIndex++;
52
+ return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
53
+ key: "option-".concat(singleOption.value),
54
+ id: "option-".concat(globalIndex),
55
+ option: singleOption,
56
+ onClick: handleOptionOnClick,
57
+ multiple: multiple,
58
+ visualFocused: visualFocusIndex === globalIndex,
59
+ isGroupedOption: true,
60
+ isLastOption: lastOptionIndex === globalIndex,
61
+ isSelected: multiple ? currentValue.includes(singleOption.value) : currentValue === singleOption.value
62
+ });
63
+ })));
64
+ } else {
65
+ globalIndex++;
66
+ return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
67
+ key: "option-".concat(option.value),
68
+ id: "option-".concat(globalIndex),
69
+ option: option,
70
+ onClick: handleOptionOnClick,
71
+ multiple: multiple,
72
+ visualFocused: visualFocusIndex === globalIndex,
73
+ isLastOption: lastOptionIndex === globalIndex,
74
+ isSelected: multiple ? currentValue.includes(option.value) : currentValue === option.value
75
+ });
76
+ }
77
+ };
78
+ (0, _react.useLayoutEffect)(function () {
79
+ if (currentValue && !multiple) {
80
+ var _listEl$scrollTo;
81
+ var listEl = listboxRef === null || listboxRef === void 0 ? void 0 : listboxRef.current;
82
+ var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
83
+ listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
84
+ top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
85
+ });
86
+ }
87
+ }, [currentValue, multiple]);
88
+ (0, _react.useLayoutEffect)(function () {
89
+ var _listboxRef$current, _visualFocusedOptionE;
90
+ 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];
91
+ visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
92
+ block: "nearest",
93
+ inline: "start"
94
+ });
95
+ }, [visualFocusIndex]);
96
+ return /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
97
+ id: id,
98
+ onClick: function onClick(event) {
99
+ event.stopPropagation();
100
+ },
101
+ onMouseDown: function onMouseDown(event) {
102
+ event.preventDefault();
103
+ },
104
+ ref: listboxRef,
105
+ role: "listbox",
106
+ "aria-multiselectable": multiple,
107
+ style: styles
108
+ }, 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"], {
109
+ key: "option-".concat(optionalItem.value),
110
+ id: "option-".concat(0),
111
+ option: optionalItem,
112
+ onClick: handleOptionOnClick,
113
+ multiple: multiple,
114
+ visualFocused: visualFocusIndex === 0,
115
+ isGroupedOption: false,
116
+ isLastOption: lastOptionIndex === 0,
117
+ isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
118
+ }), options.map(mapOptionFunc));
119
+ };
120
+ 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) {
121
+ return props.theme.listDialogBackgroundColor;
122
+ }, function (props) {
123
+ return props.theme.listDialogBorderColor;
124
+ }, function (props) {
125
+ return props.theme.listOptionFontColor;
126
+ }, function (props) {
127
+ return props.theme.fontFamily;
128
+ }, function (props) {
129
+ return props.theme.listOptionFontSize;
130
+ }, function (props) {
131
+ return props.theme.listOptionFontStyle;
132
+ }, function (props) {
133
+ return props.theme.listOptionFontWeight;
134
+ });
135
+ var OptionsSystemMessage = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 4px 16px;\n color: ", ";\n font-size: 0.875rem;\n line-height: 1.715em;\n"])), function (props) {
136
+ return props.theme.systemMessageFontColor;
137
+ });
138
+ var NoMatchesFoundIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n height: 16px;\n width: 16px;\n padding: 4px;\n margin-right: 0.25rem;\n"])));
139
+ var GroupList = _styledComponents["default"].ul(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
140
+ var GroupLabel = _styledComponents["default"].li(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 4px 16px;\n font-weight: ", ";\n line-height: 1.715em;\n"])), function (props) {
141
+ return props.theme.listGroupLabelFontWeight;
142
+ });
143
+ var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(Listbox);