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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1336 -0
  4. package/HalstackContext.js +335 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +118 -126
  7. package/accordion/Accordion.stories.tsx +115 -27
  8. package/accordion/Accordion.test.js +71 -0
  9. package/accordion/types.d.ts +9 -4
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +17 -38
  12. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  13. package/accordion-group/AccordionGroup.test.js +126 -0
  14. package/accordion-group/types.d.ts +14 -3
  15. package/alert/Alert.js +7 -4
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +92 -0
  18. package/badge/Badge.d.ts +4 -0
  19. package/badge/Badge.js +5 -3
  20. package/badge/types.d.ts +5 -0
  21. package/bleed/Bleed.js +1 -34
  22. package/bleed/Bleed.stories.tsx +94 -95
  23. package/bleed/types.d.ts +25 -1
  24. package/box/Box.js +25 -37
  25. package/box/Box.stories.tsx +15 -0
  26. package/box/Box.test.js +18 -0
  27. package/box/types.d.ts +1 -0
  28. package/bulleted-list/BulletedList.d.ts +7 -0
  29. package/bulleted-list/BulletedList.js +123 -0
  30. package/bulleted-list/BulletedList.stories.tsx +200 -0
  31. package/bulleted-list/types.d.ts +11 -0
  32. package/button/Button.js +52 -69
  33. package/button/Button.stories.tsx +159 -8
  34. package/button/Button.test.js +35 -0
  35. package/button/types.d.ts +7 -7
  36. package/card/Card.js +25 -28
  37. package/card/Card.test.js +50 -0
  38. package/card/types.d.ts +1 -0
  39. package/checkbox/Checkbox.d.ts +2 -2
  40. package/checkbox/Checkbox.js +107 -110
  41. package/checkbox/Checkbox.stories.tsx +198 -130
  42. package/checkbox/Checkbox.test.js +155 -0
  43. package/checkbox/types.d.ts +13 -5
  44. package/chip/Chip.js +18 -24
  45. package/chip/Chip.stories.tsx +96 -9
  46. package/chip/Chip.test.js +54 -0
  47. package/chip/types.d.ts +1 -1
  48. package/common/utils.d.ts +1 -0
  49. package/common/utils.js +4 -4
  50. package/common/variables.d.ts +1625 -0
  51. package/common/variables.js +476 -583
  52. package/date-input/Calendar.d.ts +4 -0
  53. package/date-input/Calendar.js +258 -0
  54. package/date-input/DateInput.js +169 -258
  55. package/date-input/DateInput.stories.tsx +199 -33
  56. package/date-input/DateInput.test.js +835 -0
  57. package/date-input/DatePicker.d.ts +4 -0
  58. package/date-input/DatePicker.js +146 -0
  59. package/date-input/Icons.d.ts +6 -0
  60. package/date-input/Icons.js +75 -0
  61. package/date-input/YearPicker.d.ts +4 -0
  62. package/date-input/YearPicker.js +126 -0
  63. package/date-input/types.d.ts +67 -9
  64. package/dialog/Dialog.js +76 -93
  65. package/dialog/Dialog.stories.tsx +230 -123
  66. package/dialog/Dialog.test.js +369 -0
  67. package/dialog/types.d.ts +3 -2
  68. package/dropdown/Dropdown.d.ts +1 -1
  69. package/dropdown/Dropdown.js +246 -253
  70. package/dropdown/Dropdown.stories.tsx +245 -56
  71. package/dropdown/Dropdown.test.js +586 -0
  72. package/dropdown/DropdownMenu.d.ts +4 -0
  73. package/dropdown/DropdownMenu.js +70 -0
  74. package/dropdown/DropdownMenuItem.d.ts +4 -0
  75. package/dropdown/DropdownMenuItem.js +81 -0
  76. package/dropdown/types.d.ts +25 -5
  77. package/file-input/FileInput.d.ts +2 -2
  78. package/file-input/FileInput.js +181 -223
  79. package/file-input/FileInput.stories.tsx +122 -11
  80. package/file-input/FileInput.test.js +457 -0
  81. package/file-input/FileItem.d.ts +4 -14
  82. package/file-input/FileItem.js +44 -66
  83. package/file-input/types.d.ts +17 -0
  84. package/flex/Flex.d.ts +4 -0
  85. package/flex/Flex.js +69 -0
  86. package/flex/Flex.stories.tsx +103 -0
  87. package/flex/types.d.ts +32 -0
  88. package/footer/Footer.js +16 -89
  89. package/footer/Footer.stories.tsx +99 -1
  90. package/footer/Footer.test.js +97 -0
  91. package/footer/Icons.js +1 -1
  92. package/footer/types.d.ts +2 -1
  93. package/header/Header.js +108 -129
  94. package/header/Header.stories.tsx +189 -36
  95. package/header/Header.test.js +79 -0
  96. package/header/Icons.js +2 -2
  97. package/header/types.d.ts +3 -2
  98. package/heading/Heading.js +1 -1
  99. package/heading/Heading.test.js +186 -0
  100. package/inset/Inset.js +1 -34
  101. package/inset/Inset.stories.tsx +36 -36
  102. package/inset/types.d.ts +25 -1
  103. package/layout/ApplicationLayout.d.ts +16 -6
  104. package/layout/ApplicationLayout.js +72 -132
  105. package/layout/ApplicationLayout.stories.tsx +84 -93
  106. package/layout/Icons.d.ts +5 -0
  107. package/layout/Icons.js +13 -2
  108. package/layout/SidenavContext.d.ts +5 -0
  109. package/layout/SidenavContext.js +19 -0
  110. package/layout/types.d.ts +18 -33
  111. package/link/Link.d.ts +3 -2
  112. package/link/Link.js +59 -76
  113. package/link/Link.stories.tsx +155 -53
  114. package/link/Link.test.js +81 -0
  115. package/link/types.d.ts +7 -23
  116. package/main.d.ts +10 -15
  117. package/main.js +48 -82
  118. package/nav-tabs/NavTabs.d.ts +8 -0
  119. package/nav-tabs/NavTabs.js +125 -0
  120. package/nav-tabs/NavTabs.stories.tsx +260 -0
  121. package/nav-tabs/NavTabs.test.js +82 -0
  122. package/nav-tabs/Tab.d.ts +4 -0
  123. package/nav-tabs/Tab.js +150 -0
  124. package/nav-tabs/types.d.ts +53 -0
  125. package/number-input/NumberInput.js +11 -18
  126. package/number-input/NumberInput.stories.tsx +5 -5
  127. package/number-input/NumberInput.test.js +542 -0
  128. package/number-input/types.d.ts +17 -10
  129. package/package.json +20 -23
  130. package/paginator/Icons.d.ts +5 -0
  131. package/paginator/Icons.js +16 -28
  132. package/paginator/Paginator.js +19 -46
  133. package/paginator/Paginator.stories.tsx +24 -0
  134. package/paginator/Paginator.test.js +305 -0
  135. package/paragraph/Paragraph.d.ts +6 -0
  136. package/paragraph/Paragraph.js +38 -0
  137. package/paragraph/Paragraph.stories.tsx +44 -0
  138. package/password-input/PasswordInput.js +7 -4
  139. package/password-input/PasswordInput.test.js +181 -0
  140. package/password-input/types.d.ts +14 -11
  141. package/progress-bar/ProgressBar.d.ts +2 -2
  142. package/progress-bar/ProgressBar.js +61 -55
  143. package/progress-bar/ProgressBar.stories.jsx +47 -12
  144. package/progress-bar/ProgressBar.test.js +110 -0
  145. package/progress-bar/types.d.ts +3 -4
  146. package/quick-nav/QuickNav.d.ts +4 -0
  147. package/quick-nav/QuickNav.js +117 -0
  148. package/quick-nav/QuickNav.stories.tsx +356 -0
  149. package/quick-nav/types.d.ts +21 -0
  150. package/quick-nav/types.js +5 -0
  151. package/radio-group/Radio.d.ts +1 -1
  152. package/radio-group/Radio.js +53 -37
  153. package/radio-group/RadioGroup.js +67 -57
  154. package/radio-group/RadioGroup.stories.tsx +171 -36
  155. package/radio-group/RadioGroup.test.js +563 -89
  156. package/radio-group/types.d.ts +82 -4
  157. package/resultsetTable/Icons.d.ts +7 -0
  158. package/resultsetTable/Icons.js +51 -0
  159. package/resultsetTable/ResultsetTable.js +49 -108
  160. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  161. package/resultsetTable/ResultsetTable.test.js +325 -0
  162. package/resultsetTable/types.d.ts +2 -2
  163. package/select/Icons.d.ts +10 -0
  164. package/select/Icons.js +93 -0
  165. package/select/Listbox.d.ts +4 -0
  166. package/select/Listbox.js +169 -0
  167. package/select/Option.d.ts +4 -0
  168. package/select/Option.js +97 -0
  169. package/select/Select.js +185 -384
  170. package/select/Select.stories.tsx +600 -201
  171. package/select/Select.test.js +2228 -0
  172. package/select/types.d.ts +53 -13
  173. package/sidenav/Sidenav.d.ts +6 -5
  174. package/sidenav/Sidenav.js +183 -53
  175. package/sidenav/Sidenav.stories.tsx +249 -149
  176. package/sidenav/Sidenav.test.js +44 -0
  177. package/sidenav/types.d.ts +50 -27
  178. package/slider/Slider.d.ts +2 -2
  179. package/slider/Slider.js +124 -98
  180. package/slider/Slider.stories.tsx +72 -9
  181. package/slider/Slider.test.js +250 -0
  182. package/slider/types.d.ts +10 -2
  183. package/spinner/Spinner.js +4 -4
  184. package/spinner/Spinner.stories.jsx +27 -1
  185. package/spinner/Spinner.test.js +64 -0
  186. package/switch/Switch.d.ts +2 -2
  187. package/switch/Switch.js +152 -69
  188. package/switch/Switch.stories.tsx +53 -42
  189. package/switch/Switch.test.js +225 -0
  190. package/switch/types.d.ts +12 -4
  191. package/table/Table.js +3 -3
  192. package/table/Table.stories.jsx +80 -1
  193. package/table/Table.test.js +26 -0
  194. package/tabs/Tab.d.ts +4 -0
  195. package/tabs/Tab.js +133 -0
  196. package/tabs/Tabs.d.ts +1 -1
  197. package/tabs/Tabs.js +363 -109
  198. package/tabs/Tabs.stories.tsx +119 -13
  199. package/tabs/Tabs.test.js +350 -0
  200. package/tabs/types.d.ts +19 -5
  201. package/tag/Tag.js +17 -22
  202. package/tag/Tag.stories.tsx +25 -8
  203. package/tag/Tag.test.js +60 -0
  204. package/tag/types.d.ts +1 -1
  205. package/text-input/Icons.d.ts +8 -0
  206. package/text-input/Icons.js +60 -0
  207. package/text-input/Suggestion.d.ts +4 -0
  208. package/text-input/Suggestion.js +84 -0
  209. package/text-input/Suggestions.d.ts +4 -0
  210. package/text-input/Suggestions.js +134 -0
  211. package/text-input/TextInput.js +224 -345
  212. package/text-input/TextInput.stories.tsx +310 -197
  213. package/text-input/TextInput.test.js +1723 -0
  214. package/text-input/types.d.ts +50 -12
  215. package/textarea/Textarea.js +22 -29
  216. package/textarea/Textarea.stories.jsx +93 -13
  217. package/textarea/Textarea.test.js +437 -0
  218. package/textarea/types.d.ts +18 -11
  219. package/toggle-group/ToggleGroup.d.ts +1 -1
  220. package/toggle-group/ToggleGroup.js +6 -5
  221. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  222. package/toggle-group/ToggleGroup.test.js +156 -0
  223. package/toggle-group/types.d.ts +9 -1
  224. package/typography/Typography.d.ts +4 -0
  225. package/typography/Typography.js +32 -0
  226. package/typography/Typography.stories.tsx +198 -0
  227. package/typography/types.d.ts +18 -0
  228. package/typography/types.js +5 -0
  229. package/useTheme.d.ts +1234 -1
  230. package/useTheme.js +3 -3
  231. package/useTranslatedLabels.d.ts +85 -0
  232. package/useTranslatedLabels.js +20 -0
  233. package/utils/BaseTypography.d.ts +21 -0
  234. package/utils/BaseTypography.js +108 -0
  235. package/utils/FocusLock.d.ts +13 -0
  236. package/utils/FocusLock.js +139 -0
  237. package/wizard/Wizard.d.ts +1 -1
  238. package/wizard/Wizard.js +59 -55
  239. package/wizard/Wizard.stories.tsx +48 -19
  240. package/wizard/Wizard.test.js +141 -0
  241. package/wizard/types.d.ts +10 -5
  242. package/ThemeContext.d.ts +0 -15
  243. package/ThemeContext.js +0 -243
  244. package/V3Select/V3Select.js +0 -455
  245. package/V3Select/index.d.ts +0 -27
  246. package/V3Textarea/V3Textarea.js +0 -260
  247. package/V3Textarea/index.d.ts +0 -27
  248. package/common/RequiredComponent.js +0 -32
  249. package/date/Date.js +0 -373
  250. package/date/index.d.ts +0 -27
  251. package/input-text/Icons.js +0 -22
  252. package/input-text/InputText.js +0 -611
  253. package/input-text/index.d.ts +0 -36
  254. package/list/List.d.ts +0 -4
  255. package/list/List.js +0 -47
  256. package/list/List.stories.tsx +0 -95
  257. package/list/types.d.ts +0 -7
  258. package/radio/Radio.d.ts +0 -4
  259. package/radio/Radio.js +0 -174
  260. package/radio/Radio.stories.tsx +0 -192
  261. package/radio/types.d.ts +0 -54
  262. package/row/Row.d.ts +0 -3
  263. package/row/Row.js +0 -127
  264. package/row/Row.stories.tsx +0 -237
  265. package/row/types.d.ts +0 -10
  266. package/stack/Stack.d.ts +0 -3
  267. package/stack/Stack.js +0 -97
  268. package/stack/Stack.stories.tsx +0 -164
  269. package/stack/types.d.ts +0 -9
  270. package/text/Text.d.ts +0 -7
  271. package/text/Text.js +0 -30
  272. package/text/Text.stories.tsx +0 -19
  273. package/toggle/Toggle.js +0 -186
  274. package/toggle/index.d.ts +0 -21
  275. package/upload/Upload.js +0 -201
  276. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  277. package/upload/buttons-upload/Icons.js +0 -40
  278. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  279. package/upload/dragAndDropArea/Icons.js +0 -39
  280. package/upload/file-upload/FileToUpload.js +0 -115
  281. package/upload/file-upload/Icons.js +0 -66
  282. package/upload/files-upload/FilesToUpload.js +0 -109
  283. package/upload/index.d.ts +0 -15
  284. package/upload/transaction/Icons.js +0 -160
  285. package/upload/transaction/Transaction.js +0 -104
  286. package/upload/transactions/Transactions.js +0 -94
  287. /package/{list → badge}/types.js +0 -0
  288. /package/{radio → bulleted-list}/types.js +0 -0
  289. /package/{row → flex}/types.js +0 -0
  290. /package/{stack → nav-tabs}/types.js +0 -0
@@ -0,0 +1,325 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
6
+
7
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _react2 = require("@testing-library/react");
12
+
13
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
14
+
15
+ var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable.tsx"));
16
+
17
+ // Mocking DOMRect for Radix Primitive Popover
18
+ global.globalThis = global;
19
+ global.DOMRect = {
20
+ fromRect: function fromRect() {
21
+ return {
22
+ top: 0,
23
+ left: 0,
24
+ bottom: 0,
25
+ right: 0,
26
+ width: 0,
27
+ height: 0
28
+ };
29
+ }
30
+ };
31
+
32
+ global.ResizeObserver = /*#__PURE__*/function () {
33
+ function ResizeObserver() {
34
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
35
+ }
36
+
37
+ (0, _createClass2["default"])(ResizeObserver, [{
38
+ key: "observe",
39
+ value: function observe() {}
40
+ }, {
41
+ key: "unobserve",
42
+ value: function unobserve() {}
43
+ }, {
44
+ key: "disconnect",
45
+ value: function disconnect() {}
46
+ }]);
47
+ return ResizeObserver;
48
+ }();
49
+
50
+ var columns = [{
51
+ displayValue: "Id",
52
+ isSortable: false
53
+ }, {
54
+ displayValue: "Name",
55
+ isSortable: true
56
+ }, {
57
+ displayValue: "City",
58
+ isSortable: false
59
+ }];
60
+ var rows = [[{
61
+ displayValue: "001",
62
+ sortValue: "001"
63
+ }, {
64
+ displayValue: "Peter",
65
+ sortValue: "Peter"
66
+ }, {
67
+ displayValue: "Oviedo",
68
+ sortValue: "Oviedo"
69
+ }], [{
70
+ displayValue: "002",
71
+ sortValue: "002"
72
+ }, {
73
+ displayValue: "Louis",
74
+ sortValue: "Louis"
75
+ }, {
76
+ displayValue: "Oviedo",
77
+ sortValue: "Oviedo"
78
+ }], [{
79
+ displayValue: "003",
80
+ sortValue: "003"
81
+ }, {
82
+ displayValue: "Lana",
83
+ sortValue: "Lana"
84
+ }, {
85
+ displayValue: "Albacete",
86
+ sortValue: "Albacete"
87
+ }], [{
88
+ displayValue: "004",
89
+ sortValue: "004"
90
+ }, {
91
+ displayValue: "Rick",
92
+ sortValue: "Rick"
93
+ }, {
94
+ displayValue: "Albacete",
95
+ sortValue: "Albacete"
96
+ }], [{
97
+ displayValue: "005",
98
+ sortValue: "005"
99
+ }, {
100
+ displayValue: "Mark",
101
+ sortValue: "Mark"
102
+ }, {
103
+ displayValue: "Madrid",
104
+ sortValue: "Madrid"
105
+ }], [{
106
+ displayValue: "006",
107
+ sortValue: "006"
108
+ }, {
109
+ displayValue: "Cris",
110
+ sortValue: "Cris"
111
+ }, {
112
+ displayValue: "Barcelona",
113
+ sortValue: "Barcelona"
114
+ }], [{
115
+ displayValue: "007",
116
+ sortValue: "007"
117
+ }, {
118
+ displayValue: "Susan",
119
+ sortValue: "Susan"
120
+ }, {
121
+ displayValue: "Madrid",
122
+ sortValue: "Madrid"
123
+ }], [{
124
+ displayValue: "008",
125
+ sortValue: "008"
126
+ }, {
127
+ displayValue: "Tina",
128
+ sortValue: "Tina"
129
+ }, {
130
+ displayValue: "Barcelona",
131
+ sortValue: "Barcelona"
132
+ }], [{
133
+ displayValue: "009",
134
+ sortValue: "009"
135
+ }, {
136
+ displayValue: "Kevin",
137
+ sortValue: "Kevin"
138
+ }, {
139
+ displayValue: "Oviedo",
140
+ sortValue: "Oviedo"
141
+ }], [{
142
+ displayValue: "010",
143
+ sortValue: "010"
144
+ }, {
145
+ displayValue: "Cosmin",
146
+ sortValue: "Cosmin"
147
+ }, {
148
+ displayValue: "Barcelona",
149
+ sortValue: "Barcelona"
150
+ }]];
151
+ var rows2 = [[{
152
+ displayValue: "546",
153
+ sortValue: "465"
154
+ }, {
155
+ displayValue: "OtherValue",
156
+ sortValue: "OtherValue"
157
+ }, {
158
+ displayValue: "OtherValue",
159
+ sortValue: "OtherValue"
160
+ }], [{
161
+ displayValue: "978",
162
+ sortValue: "465"
163
+ }, {
164
+ displayValue: "OtherValue",
165
+ sortValue: "OtherValue"
166
+ }, {
167
+ displayValue: "OtherValue",
168
+ sortValue: "OtherValue"
169
+ }, {
170
+ displayValue: ""
171
+ }], [{
172
+ displayValue: "678",
173
+ sortValue: "344"
174
+ }, {
175
+ displayValue: "OtherValue",
176
+ sortValue: "OtherValue"
177
+ }, {
178
+ displayValue: "OtherValue",
179
+ sortValue: "OtherValue"
180
+ }]];
181
+ describe("Resultset table component tests", function () {
182
+ test("Resultset table rendered correctly", function () {
183
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
184
+ columns: columns,
185
+ rows: rows,
186
+ itemsPerPage: 3
187
+ })),
188
+ getByText = _render.getByText;
189
+
190
+ expect(getByText("Peter")).toBeTruthy();
191
+ });
192
+ test("Resultset table shows as many rows as itemsPerPage", function () {
193
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
194
+ columns: columns,
195
+ rows: rows,
196
+ itemsPerPage: 3
197
+ })),
198
+ getAllByRole = _render2.getAllByRole;
199
+
200
+ expect(getAllByRole("row").length - 1).toEqual(3);
201
+ });
202
+ test("Resultset table shows rows on second page", function () {
203
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
204
+ columns: columns,
205
+ rows: rows,
206
+ itemsPerPage: 3
207
+ })),
208
+ getByText = _render3.getByText,
209
+ getAllByRole = _render3.getAllByRole;
210
+
211
+ expect(getByText("Peter")).toBeTruthy();
212
+ expect(getByText("Louis")).toBeTruthy();
213
+ expect(getByText("Lana")).toBeTruthy();
214
+ expect(getAllByRole("row").length - 1).toEqual(3);
215
+ var nextButton = getAllByRole("button")[3];
216
+
217
+ _react2.fireEvent.click(nextButton);
218
+
219
+ expect(getByText("4 to 6 of 10")).toBeTruthy();
220
+ expect(getByText("Rick")).toBeTruthy();
221
+ expect(getByText("Mark")).toBeTruthy();
222
+ expect(getByText("Cris")).toBeTruthy();
223
+ expect(getAllByRole("row").length - 1).toEqual(3);
224
+ });
225
+ test("Resultset table goToPage works as expected", function () {
226
+ window.HTMLElement.prototype.scrollIntoView = function () {};
227
+
228
+ window.HTMLElement.prototype.scrollTo = function () {};
229
+
230
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
231
+ columns: columns,
232
+ showGoToPage: true,
233
+ rows: rows,
234
+ itemsPerPage: 3
235
+ })),
236
+ getByText = _render4.getByText,
237
+ getAllByRole = _render4.getAllByRole;
238
+
239
+ expect(getByText("Peter")).toBeTruthy();
240
+ expect(getByText("Louis")).toBeTruthy();
241
+ expect(getByText("Lana")).toBeTruthy();
242
+ expect(getAllByRole("row").length - 1).toEqual(3);
243
+ var goToPageSelect = getAllByRole("button")[3];
244
+
245
+ _userEvent["default"].click(goToPageSelect);
246
+
247
+ var goToPageOption = getByText("2");
248
+
249
+ _userEvent["default"].click(goToPageOption);
250
+
251
+ expect(getByText("4 to 6 of 10")).toBeTruthy();
252
+ expect(getByText("Rick")).toBeTruthy();
253
+ expect(getByText("Mark")).toBeTruthy();
254
+ expect(getByText("Cris")).toBeTruthy();
255
+ expect(getAllByRole("row").length - 1).toEqual(3);
256
+ });
257
+ test("Resultset table going to the last page shows only one row", function () {
258
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
259
+ columns: columns,
260
+ rows: rows,
261
+ itemsPerPage: 3
262
+ })),
263
+ getByText = _render5.getByText,
264
+ getAllByRole = _render5.getAllByRole;
265
+
266
+ var lastButton = getAllByRole("button")[4];
267
+
268
+ _react2.fireEvent.click(lastButton);
269
+
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
+
282
+ _react2.fireEvent.click(component.queryByText("Name"));
283
+
284
+ expect(component.queryByText("Tina")).not.toBeTruthy();
285
+ expect(component.queryByText("Cosmin")).toBeTruthy();
286
+
287
+ _react2.fireEvent.click(component.queryByText("Name"));
288
+
289
+ expect(component.queryByText("Tina")).toBeTruthy();
290
+ expect(component.queryByText("Cosmin")).not.toBeTruthy();
291
+ });
292
+ test("Resultset table change rows should go to first page", function () {
293
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
294
+ columns: columns,
295
+ rows: rows,
296
+ itemsPerPage: 3
297
+ })),
298
+ queryByText = _render6.queryByText,
299
+ rerender = _render6.rerender;
300
+
301
+ expect(queryByText("Peter")).toBeTruthy();
302
+ rerender( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
303
+ columns: columns,
304
+ rows: rows2,
305
+ itemsPerPage: 3
306
+ }));
307
+ expect(queryByText("1 to 3 of 3")).toBeTruthy();
308
+ });
309
+ test("Resultset table change itemsPerPage should go to first page", function () {
310
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
311
+ columns: columns,
312
+ rows: rows,
313
+ itemsPerPage: 3,
314
+ itemsPerPageOptions: [2, 3]
315
+ })),
316
+ getAllByRole = _render7.getAllByRole;
317
+
318
+ var lastButton = getAllByRole("button")[4];
319
+ expect(getAllByRole("row").length - 1).toEqual(3);
320
+
321
+ _react2.fireEvent.click(lastButton);
322
+
323
+ expect(getAllByRole("row").length - 1).toEqual(1);
324
+ });
325
+ });
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Margin = {
2
+ export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ export declare type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ declare const selectIcons: {
3
+ error: JSX.Element;
4
+ arrowUp: JSX.Element;
5
+ arrowDown: JSX.Element;
6
+ clear: JSX.Element;
7
+ selected: JSX.Element;
8
+ searchOff: JSX.Element;
9
+ };
10
+ export default selectIcons;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var selectIcons = {
13
+ error: /*#__PURE__*/_react["default"].createElement("svg", {
14
+ role: "img",
15
+ xmlns: "http://www.w3.org/2000/svg",
16
+ height: "24px",
17
+ viewBox: "0 0 24 24",
18
+ width: "24px",
19
+ fill: "currentColor"
20
+ }, /*#__PURE__*/_react["default"].createElement("path", {
21
+ 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"
22
+ })),
23
+ arrowUp: /*#__PURE__*/_react["default"].createElement("svg", {
24
+ role: "img",
25
+ xmlns: "http://www.w3.org/2000/svg",
26
+ height: "24px",
27
+ viewBox: "0 0 24 24",
28
+ width: "24px",
29
+ fill: "currentColor"
30
+ }, /*#__PURE__*/_react["default"].createElement("path", {
31
+ d: "M0 0h24v24H0V0z",
32
+ fill: "none"
33
+ }), /*#__PURE__*/_react["default"].createElement("path", {
34
+ d: "M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6 1.41 1.41z"
35
+ })),
36
+ arrowDown: /*#__PURE__*/_react["default"].createElement("svg", {
37
+ role: "img",
38
+ xmlns: "http://www.w3.org/2000/svg",
39
+ height: "24px",
40
+ viewBox: "0 0 24 24",
41
+ width: "24px",
42
+ fill: "currentColor"
43
+ }, /*#__PURE__*/_react["default"].createElement("path", {
44
+ d: "M0 0h24v24H0V0z",
45
+ fill: "none"
46
+ }), /*#__PURE__*/_react["default"].createElement("path", {
47
+ d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"
48
+ })),
49
+ clear: /*#__PURE__*/_react["default"].createElement("svg", {
50
+ role: "img",
51
+ xmlns: "http://www.w3.org/2000/svg",
52
+ width: "24",
53
+ height: "24",
54
+ viewBox: "0 0 24 24",
55
+ fill: "currentColor"
56
+ }, /*#__PURE__*/_react["default"].createElement("path", {
57
+ d: "M0 0h24v24H0V0z",
58
+ fill: "none"
59
+ }), /*#__PURE__*/_react["default"].createElement("path", {
60
+ 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"
61
+ })),
62
+ selected: /*#__PURE__*/_react["default"].createElement("svg", {
63
+ role: "img",
64
+ xmlns: "http://www.w3.org/2000/svg",
65
+ height: "24px",
66
+ viewBox: "0 0 24 24",
67
+ width: "24px",
68
+ fill: "currentColor"
69
+ }, /*#__PURE__*/_react["default"].createElement("path", {
70
+ d: "M0 0h24v24H0z",
71
+ fill: "none"
72
+ }), /*#__PURE__*/_react["default"].createElement("path", {
73
+ d: "M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"
74
+ })),
75
+ searchOff: /*#__PURE__*/_react["default"].createElement("svg", {
76
+ role: "img",
77
+ xmlns: "http://www.w3.org/2000/svg",
78
+ height: "24px",
79
+ viewBox: "0 0 24 24",
80
+ width: "24px",
81
+ fill: "currentColor"
82
+ }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("rect", {
83
+ fill: "none",
84
+ height: "24",
85
+ width: "24"
86
+ })), /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
87
+ 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"
88
+ }), /*#__PURE__*/_react["default"].createElement("polygon", {
89
+ 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"
90
+ }))))
91
+ };
92
+ var _default = selectIcons;
93
+ exports["default"] = _default;
@@ -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,169 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
17
+
18
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
19
+
20
+ var _Option = _interopRequireDefault(require("./Option"));
21
+
22
+ var _Icons = _interopRequireDefault(require("./Icons"));
23
+
24
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
25
+
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ var groupsHaveOptions = function groupsHaveOptions(options) {
31
+ return options !== null && options !== void 0 && options[0].options ? options.some(function (groupOption) {
32
+ var _groupOption$options;
33
+
34
+ return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
35
+ }) : true;
36
+ };
37
+
38
+ var Listbox = function Listbox(_ref) {
39
+ var id = _ref.id,
40
+ currentValue = _ref.currentValue,
41
+ options = _ref.options,
42
+ visualFocusIndex = _ref.visualFocusIndex,
43
+ lastOptionIndex = _ref.lastOptionIndex,
44
+ multiple = _ref.multiple,
45
+ optional = _ref.optional,
46
+ optionalItem = _ref.optionalItem,
47
+ searchable = _ref.searchable,
48
+ handleOptionOnClick = _ref.handleOptionOnClick,
49
+ styles = _ref.styles;
50
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
51
+ var listboxRef = (0, _react.useRef)(null);
52
+ var globalIndex = optional && !multiple ? 0 : -1;
53
+
54
+ var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
55
+ if (option.options) {
56
+ var groupId = "group-".concat(mapIndex);
57
+ return option.options.length > 0 && /*#__PURE__*/_react["default"].createElement("li", {
58
+ key: "group-".concat(mapIndex)
59
+ }, /*#__PURE__*/_react["default"].createElement(GroupList, {
60
+ role: "group",
61
+ "aria-labelledby": groupId
62
+ }, /*#__PURE__*/_react["default"].createElement(GroupLabel, {
63
+ role: "presentation",
64
+ id: groupId
65
+ }, option.label), option.options.map(function (singleOption) {
66
+ globalIndex++;
67
+ return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
68
+ key: "option-".concat(singleOption.value),
69
+ id: "option-".concat(globalIndex),
70
+ option: singleOption,
71
+ onClick: handleOptionOnClick,
72
+ multiple: multiple,
73
+ visualFocused: visualFocusIndex === globalIndex,
74
+ isGroupedOption: true,
75
+ isLastOption: lastOptionIndex === globalIndex,
76
+ isSelected: multiple ? currentValue.includes(singleOption.value) : currentValue === singleOption.value
77
+ });
78
+ })));
79
+ } else {
80
+ globalIndex++;
81
+ return /*#__PURE__*/_react["default"].createElement(_Option["default"], {
82
+ key: "option-".concat(option.value),
83
+ id: "option-".concat(globalIndex),
84
+ option: option,
85
+ onClick: handleOptionOnClick,
86
+ multiple: multiple,
87
+ visualFocused: visualFocusIndex === globalIndex,
88
+ isLastOption: lastOptionIndex === globalIndex,
89
+ isSelected: multiple ? currentValue.includes(option.value) : currentValue === option.value
90
+ });
91
+ }
92
+ };
93
+
94
+ (0, _react.useLayoutEffect)(function () {
95
+ if (currentValue && !multiple) {
96
+ var _listEl$scrollTo;
97
+
98
+ var listEl = listboxRef === null || listboxRef === void 0 ? void 0 : listboxRef.current;
99
+ var selectedListOptionEl = listEl === null || listEl === void 0 ? void 0 : listEl.querySelector("[aria-selected='true']");
100
+ listEl === null || listEl === void 0 ? void 0 : (_listEl$scrollTo = listEl.scrollTo) === null || _listEl$scrollTo === void 0 ? void 0 : _listEl$scrollTo.call(listEl, {
101
+ top: (selectedListOptionEl === null || selectedListOptionEl === void 0 ? void 0 : selectedListOptionEl.offsetTop) - (listEl === null || listEl === void 0 ? void 0 : listEl.clientHeight) / 2
102
+ });
103
+ }
104
+ }, [currentValue, multiple]);
105
+ (0, _react.useLayoutEffect)(function () {
106
+ var _listboxRef$current, _visualFocusedOptionE;
107
+
108
+ var visualFocusedOptionEl = listboxRef === null || listboxRef === void 0 ? void 0 : (_listboxRef$current = listboxRef.current) === null || _listboxRef$current === void 0 ? void 0 : _listboxRef$current.querySelectorAll("[role='option']")[visualFocusIndex];
109
+ visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
110
+ block: "nearest",
111
+ inline: "start"
112
+ });
113
+ }, [visualFocusIndex]);
114
+ return /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
115
+ id: id,
116
+ onClick: function onClick(event) {
117
+ event.stopPropagation();
118
+ },
119
+ onMouseDown: function onMouseDown(event) {
120
+ event.preventDefault();
121
+ },
122
+ ref: listboxRef,
123
+ role: "listbox",
124
+ "aria-multiselectable": multiple,
125
+ style: styles
126
+ }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), translatedLabels.select.noMatchesErrorMessage) : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
127
+ key: "option-".concat(optionalItem.value),
128
+ id: "option-".concat(0),
129
+ option: optionalItem,
130
+ onClick: handleOptionOnClick,
131
+ multiple: multiple,
132
+ visualFocused: visualFocusIndex === 0,
133
+ isGroupedOption: false,
134
+ isLastOption: lastOptionIndex === 0,
135
+ isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
136
+ }), options.map(mapOptionFunc));
137
+ };
138
+
139
+ var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 304px;\n overflow-y: auto;\n margin: 0;\n padding: 0.25rem 0;\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 0.25rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n cursor: default;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
140
+ return props.theme.listDialogBackgroundColor;
141
+ }, function (props) {
142
+ return props.theme.listDialogBorderColor;
143
+ }, function (props) {
144
+ return props.theme.listOptionFontColor;
145
+ }, function (props) {
146
+ return props.theme.fontFamily;
147
+ }, function (props) {
148
+ return props.theme.listOptionFontSize;
149
+ }, function (props) {
150
+ return props.theme.listOptionFontStyle;
151
+ }, function (props) {
152
+ return props.theme.listOptionFontWeight;
153
+ });
154
+
155
+ 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) {
156
+ return props.theme.systemMessageFontColor;
157
+ });
158
+
159
+ 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"])));
160
+
161
+ var GroupList = _styledComponents["default"].ul(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
162
+
163
+ 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) {
164
+ return props.theme.listGroupLabelFontWeight;
165
+ });
166
+
167
+ var _default = /*#__PURE__*/_react["default"].memo(Listbox);
168
+
169
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { OptionProps } from "../select/types";
3
+ declare const _default: React.MemoExoticComponent<({ id, option, onClick, multiple, visualFocused, isGroupedOption, isLastOption, isSelected, }: OptionProps) => JSX.Element>;
4
+ export default _default;