@dxc-technology/halstack-react 0.0.0-c9b5c13 → 0.0.0-c9c1158

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 (301) hide show
  1. package/BackgroundColorContext.d.ts +3 -3
  2. package/BackgroundColorContext.js +6 -18
  3. package/HalstackContext.d.ts +1347 -6
  4. package/HalstackContext.js +125 -110
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +116 -157
  8. package/accordion/Accordion.stories.tsx +102 -126
  9. package/accordion/Accordion.test.js +25 -41
  10. package/accordion/types.d.ts +5 -16
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +31 -98
  13. package/accordion-group/AccordionGroup.stories.tsx +94 -67
  14. package/accordion-group/AccordionGroup.test.js +52 -105
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/types.d.ts +11 -16
  18. package/alert/Alert.js +19 -55
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +29 -46
  21. package/alert/types.d.ts +5 -5
  22. package/badge/Badge.js +4 -17
  23. package/badge/types.d.ts +1 -1
  24. package/bleed/Bleed.js +14 -55
  25. package/bleed/Bleed.stories.tsx +95 -95
  26. package/bleed/types.d.ts +2 -2
  27. package/box/Box.d.ts +1 -1
  28. package/box/Box.js +18 -56
  29. package/box/Box.stories.tsx +38 -51
  30. package/box/Box.test.js +2 -7
  31. package/box/types.d.ts +3 -14
  32. package/bulleted-list/BulletedList.d.ts +7 -0
  33. package/bulleted-list/BulletedList.js +99 -0
  34. package/bulleted-list/BulletedList.stories.tsx +116 -0
  35. package/bulleted-list/types.d.ts +38 -0
  36. package/button/Button.d.ts +1 -1
  37. package/button/Button.js +61 -114
  38. package/button/Button.stories.tsx +160 -90
  39. package/button/Button.test.js +18 -17
  40. package/button/types.d.ts +12 -8
  41. package/card/Card.d.ts +1 -1
  42. package/card/Card.js +48 -89
  43. package/card/Card.stories.tsx +12 -42
  44. package/card/Card.test.js +11 -22
  45. package/card/types.d.ts +6 -11
  46. package/checkbox/Checkbox.d.ts +2 -2
  47. package/checkbox/Checkbox.js +141 -178
  48. package/checkbox/Checkbox.stories.tsx +128 -94
  49. package/checkbox/Checkbox.test.js +160 -39
  50. package/checkbox/types.d.ts +11 -3
  51. package/chip/Chip.js +39 -79
  52. package/chip/Chip.stories.tsx +121 -26
  53. package/chip/Chip.test.js +16 -31
  54. package/chip/types.d.ts +4 -4
  55. package/common/OpenSans.css +68 -80
  56. package/common/coreTokens.d.ts +237 -0
  57. package/common/coreTokens.js +184 -0
  58. package/common/utils.d.ts +1 -0
  59. package/common/utils.js +6 -12
  60. package/common/variables.d.ts +1499 -0
  61. package/common/variables.js +1027 -1126
  62. package/container/Container.d.ts +4 -0
  63. package/container/Container.js +198 -0
  64. package/container/Container.stories.tsx +229 -0
  65. package/container/types.d.ts +74 -0
  66. package/date-input/Calendar.d.ts +4 -0
  67. package/date-input/Calendar.js +214 -0
  68. package/date-input/DateInput.js +150 -299
  69. package/date-input/DateInput.stories.tsx +203 -56
  70. package/date-input/DateInput.test.js +700 -371
  71. package/date-input/DatePicker.d.ts +4 -0
  72. package/date-input/DatePicker.js +115 -0
  73. package/date-input/Icons.d.ts +6 -0
  74. package/date-input/Icons.js +58 -0
  75. package/date-input/YearPicker.d.ts +4 -0
  76. package/date-input/YearPicker.js +100 -0
  77. package/date-input/types.d.ts +72 -15
  78. package/dialog/Dialog.d.ts +1 -1
  79. package/dialog/Dialog.js +75 -106
  80. package/dialog/Dialog.stories.tsx +154 -171
  81. package/dialog/Dialog.test.js +287 -20
  82. package/dialog/types.d.ts +18 -25
  83. package/dropdown/Dropdown.d.ts +1 -1
  84. package/dropdown/Dropdown.js +243 -300
  85. package/dropdown/Dropdown.stories.tsx +245 -56
  86. package/dropdown/Dropdown.test.js +575 -165
  87. package/dropdown/DropdownMenu.d.ts +4 -0
  88. package/dropdown/DropdownMenu.js +63 -0
  89. package/dropdown/DropdownMenuItem.d.ts +4 -0
  90. package/dropdown/DropdownMenuItem.js +67 -0
  91. package/dropdown/types.d.ts +32 -14
  92. package/file-input/FileInput.d.ts +2 -2
  93. package/file-input/FileInput.js +241 -355
  94. package/file-input/FileInput.stories.tsx +123 -12
  95. package/file-input/FileInput.test.js +369 -367
  96. package/file-input/FileItem.d.ts +4 -14
  97. package/file-input/FileItem.js +45 -96
  98. package/file-input/types.d.ts +25 -8
  99. package/flex/Flex.d.ts +4 -0
  100. package/flex/Flex.js +57 -0
  101. package/flex/Flex.stories.tsx +112 -0
  102. package/flex/types.d.ts +97 -0
  103. package/footer/Footer.d.ts +1 -1
  104. package/footer/Footer.js +51 -101
  105. package/footer/Footer.stories.tsx +41 -19
  106. package/footer/Footer.test.js +33 -57
  107. package/footer/Icons.d.ts +2 -2
  108. package/footer/Icons.js +3 -8
  109. package/footer/types.d.ts +21 -22
  110. package/grid/Grid.d.ts +7 -0
  111. package/grid/Grid.js +76 -0
  112. package/grid/Grid.stories.tsx +219 -0
  113. package/grid/types.d.ts +115 -0
  114. package/header/Header.d.ts +4 -3
  115. package/header/Header.js +90 -162
  116. package/header/Header.stories.tsx +118 -39
  117. package/header/Header.test.js +13 -26
  118. package/header/Icons.d.ts +2 -2
  119. package/header/Icons.js +4 -9
  120. package/header/types.d.ts +5 -20
  121. package/heading/Heading.js +10 -32
  122. package/heading/Heading.test.js +71 -88
  123. package/heading/types.d.ts +7 -7
  124. package/image/Image.d.ts +4 -0
  125. package/image/Image.js +70 -0
  126. package/image/Image.stories.tsx +127 -0
  127. package/image/types.d.ts +72 -0
  128. package/inset/Inset.js +14 -55
  129. package/inset/Inset.stories.tsx +37 -36
  130. package/inset/types.d.ts +2 -2
  131. package/layout/ApplicationLayout.d.ts +15 -6
  132. package/layout/ApplicationLayout.js +51 -116
  133. package/layout/ApplicationLayout.stories.tsx +81 -45
  134. package/layout/Icons.d.ts +8 -5
  135. package/layout/Icons.js +51 -59
  136. package/layout/SidenavContext.d.ts +1 -1
  137. package/layout/SidenavContext.js +3 -9
  138. package/layout/types.d.ts +21 -32
  139. package/link/Link.js +25 -46
  140. package/link/Link.stories.tsx +73 -6
  141. package/link/Link.test.js +24 -44
  142. package/link/types.d.ts +14 -14
  143. package/main.d.ts +10 -10
  144. package/main.js +45 -95
  145. package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
  146. package/{tabs-nav → nav-tabs}/NavTabs.js +22 -57
  147. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +111 -7
  148. package/{tabs-nav → nav-tabs}/NavTabs.test.js +37 -44
  149. package/nav-tabs/Tab.js +117 -0
  150. package/{tabs-nav → nav-tabs}/types.d.ts +14 -15
  151. package/number-input/NumberInput.d.ts +7 -0
  152. package/number-input/NumberInput.js +26 -35
  153. package/number-input/NumberInput.stories.tsx +42 -26
  154. package/number-input/NumberInput.test.js +701 -377
  155. package/number-input/types.d.ts +11 -5
  156. package/package.json +43 -45
  157. package/paginator/Icons.d.ts +5 -0
  158. package/paginator/Icons.js +21 -47
  159. package/paginator/Paginator.js +22 -55
  160. package/paginator/Paginator.stories.tsx +24 -0
  161. package/paginator/Paginator.test.js +280 -211
  162. package/paginator/types.d.ts +3 -3
  163. package/paragraph/Paragraph.d.ts +5 -0
  164. package/paragraph/Paragraph.js +27 -0
  165. package/paragraph/Paragraph.stories.tsx +27 -0
  166. package/password-input/Icons.d.ts +6 -0
  167. package/password-input/Icons.js +35 -0
  168. package/password-input/PasswordInput.js +57 -126
  169. package/password-input/PasswordInput.stories.tsx +1 -32
  170. package/password-input/PasswordInput.test.js +160 -142
  171. package/password-input/types.d.ts +8 -7
  172. package/progress-bar/ProgressBar.js +67 -87
  173. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +39 -4
  174. package/progress-bar/ProgressBar.test.js +72 -44
  175. package/progress-bar/types.d.ts +3 -3
  176. package/quick-nav/QuickNav.js +29 -47
  177. package/quick-nav/QuickNav.stories.tsx +146 -27
  178. package/quick-nav/types.d.ts +10 -10
  179. package/radio-group/Radio.d.ts +1 -1
  180. package/radio-group/Radio.js +59 -76
  181. package/radio-group/RadioGroup.js +67 -114
  182. package/radio-group/RadioGroup.stories.tsx +132 -18
  183. package/radio-group/RadioGroup.test.js +518 -457
  184. package/radio-group/types.d.ts +10 -10
  185. package/resultset-table/Icons.d.ts +7 -0
  186. package/resultset-table/Icons.js +47 -0
  187. package/resultset-table/ResultsetTable.js +159 -0
  188. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +50 -25
  189. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +117 -118
  190. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  191. package/resultset-table/types.js +5 -0
  192. package/select/Icons.d.ts +7 -7
  193. package/select/Icons.js +1 -5
  194. package/select/Listbox.d.ts +1 -1
  195. package/select/Listbox.js +42 -51
  196. package/select/Option.js +20 -50
  197. package/select/Select.js +125 -188
  198. package/select/Select.stories.tsx +516 -139
  199. package/select/Select.test.js +1965 -1751
  200. package/select/types.d.ts +16 -20
  201. package/sidenav/Icons.d.ts +7 -0
  202. package/sidenav/Icons.js +47 -0
  203. package/sidenav/Sidenav.d.ts +6 -5
  204. package/sidenav/Sidenav.js +129 -77
  205. package/sidenav/Sidenav.stories.tsx +251 -151
  206. package/sidenav/Sidenav.test.js +26 -45
  207. package/sidenav/types.d.ts +52 -26
  208. package/slider/Slider.d.ts +2 -2
  209. package/slider/Slider.js +144 -168
  210. package/slider/Slider.test.js +185 -81
  211. package/slider/types.d.ts +7 -3
  212. package/spinner/Spinner.js +27 -63
  213. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  214. package/spinner/Spinner.test.js +26 -35
  215. package/spinner/types.d.ts +3 -3
  216. package/switch/Switch.d.ts +2 -2
  217. package/switch/Switch.js +148 -124
  218. package/switch/Switch.stories.tsx +37 -60
  219. package/switch/Switch.test.js +138 -56
  220. package/switch/types.d.ts +7 -3
  221. package/table/Table.js +7 -26
  222. package/table/{Table.stories.jsx → Table.stories.tsx} +80 -1
  223. package/table/Table.test.js +3 -8
  224. package/table/types.d.ts +8 -8
  225. package/tabs/Tab.d.ts +4 -0
  226. package/tabs/Tab.js +113 -0
  227. package/tabs/Tabs.js +315 -141
  228. package/tabs/Tabs.stories.tsx +119 -5
  229. package/tabs/Tabs.test.js +223 -69
  230. package/tabs/types.d.ts +28 -18
  231. package/tag/Tag.js +29 -61
  232. package/tag/Tag.stories.tsx +14 -1
  233. package/tag/Tag.test.js +20 -31
  234. package/tag/types.d.ts +7 -7
  235. package/text-input/Icons.d.ts +8 -0
  236. package/text-input/Icons.js +56 -0
  237. package/text-input/Suggestion.js +40 -28
  238. package/text-input/Suggestions.d.ts +4 -0
  239. package/text-input/Suggestions.js +89 -0
  240. package/text-input/TextInput.js +280 -458
  241. package/text-input/TextInput.stories.tsx +266 -275
  242. package/text-input/TextInput.test.js +1402 -1375
  243. package/text-input/types.d.ts +43 -16
  244. package/textarea/Textarea.js +63 -100
  245. package/textarea/Textarea.stories.tsx +175 -0
  246. package/textarea/Textarea.test.js +152 -183
  247. package/textarea/types.d.ts +9 -5
  248. package/toggle-group/ToggleGroup.d.ts +2 -2
  249. package/toggle-group/ToggleGroup.js +95 -106
  250. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  251. package/toggle-group/ToggleGroup.test.js +69 -88
  252. package/toggle-group/types.d.ts +26 -17
  253. package/typography/Typography.d.ts +4 -0
  254. package/typography/Typography.js +23 -0
  255. package/typography/Typography.stories.tsx +198 -0
  256. package/typography/types.d.ts +18 -0
  257. package/typography/types.js +5 -0
  258. package/useTheme.d.ts +1251 -1
  259. package/useTheme.js +2 -9
  260. package/useTranslatedLabels.d.ts +84 -1
  261. package/useTranslatedLabels.js +1 -7
  262. package/utils/BaseTypography.d.ts +21 -0
  263. package/utils/BaseTypography.js +94 -0
  264. package/utils/FocusLock.d.ts +13 -0
  265. package/utils/FocusLock.js +114 -0
  266. package/wizard/Wizard.js +24 -66
  267. package/wizard/Wizard.stories.tsx +40 -1
  268. package/wizard/Wizard.test.js +54 -81
  269. package/wizard/types.d.ts +7 -7
  270. package/card/ice-cream.jpg +0 -0
  271. package/common/RequiredComponent.js +0 -32
  272. package/list/List.d.ts +0 -4
  273. package/list/List.js +0 -47
  274. package/list/List.stories.tsx +0 -95
  275. package/list/types.d.ts +0 -7
  276. package/number-input/NumberInputContext.d.ts +0 -4
  277. package/number-input/NumberInputContext.js +0 -19
  278. package/number-input/numberInputContextTypes.d.ts +0 -19
  279. package/resultsetTable/ResultsetTable.js +0 -254
  280. package/row/Row.d.ts +0 -3
  281. package/row/Row.js +0 -127
  282. package/row/Row.stories.tsx +0 -237
  283. package/row/types.d.ts +0 -28
  284. package/slider/Slider.stories.tsx +0 -177
  285. package/stack/Stack.d.ts +0 -3
  286. package/stack/Stack.js +0 -97
  287. package/stack/Stack.stories.tsx +0 -164
  288. package/stack/types.d.ts +0 -24
  289. package/tabs-nav/Tab.js +0 -132
  290. package/text/Text.d.ts +0 -7
  291. package/text/Text.js +0 -30
  292. package/text/Text.stories.tsx +0 -19
  293. package/textarea/Textarea.stories.jsx +0 -157
  294. /package/{list → bulleted-list}/types.js +0 -0
  295. /package/{resultsetTable → container}/types.js +0 -0
  296. /package/{row → flex}/types.js +0 -0
  297. /package/{stack → grid}/types.js +0 -0
  298. /package/{tabs-nav → image}/types.js +0 -0
  299. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  300. /package/{number-input/numberInputContextTypes.js → nav-tabs/types.js} +0 -0
  301. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
@@ -1,15 +1,44 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
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"));
5
8
  var _react = _interopRequireDefault(require("react"));
6
-
7
9
  var _react2 = require("@testing-library/react");
8
-
9
10
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
10
-
11
- var _ResultsetTable = _interopRequireDefault(require("./ResultsetTable"));
12
-
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
+ }();
13
42
  var columns = [{
14
43
  displayValue: "Id",
15
44
  isSortable: false
@@ -38,8 +67,6 @@ var rows = [[{
38
67
  }, {
39
68
  displayValue: "Oviedo",
40
69
  sortValue: "Oviedo"
41
- }, {
42
- displayValue: ""
43
70
  }], [{
44
71
  displayValue: "003",
45
72
  sortValue: "003"
@@ -76,8 +103,6 @@ var rows = [[{
76
103
  }, {
77
104
  displayValue: "Barcelona",
78
105
  sortValue: "Barcelona"
79
- }, {
80
- displayValue: ""
81
106
  }], [{
82
107
  displayValue: "007",
83
108
  sortValue: "007"
@@ -105,8 +130,6 @@ var rows = [[{
105
130
  }, {
106
131
  displayValue: "Oviedo",
107
132
  sortValue: "Oviedo"
108
- }, {
109
- displayValue: ""
110
133
  }], [{
111
134
  displayValue: "010",
112
135
  sortValue: "010"
@@ -116,8 +139,6 @@ var rows = [[{
116
139
  }, {
117
140
  displayValue: "Barcelona",
118
141
  sortValue: "Barcelona"
119
- }, {
120
- displayValue: ""
121
142
  }]];
122
143
  var rows2 = [[{
123
144
  displayValue: "546",
@@ -149,128 +170,117 @@ var rows2 = [[{
149
170
  displayValue: "OtherValue",
150
171
  sortValue: "OtherValue"
151
172
  }]];
152
- describe("ResultsetTable component tests", function () {
153
- test("ResultsetTable rendered correctly", function () {
173
+ describe("Resultset table component tests", function () {
174
+ test("Resultset table rendered correctly", function () {
154
175
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
155
- columns: columns,
156
- rows: rows,
157
- itemsPerPage: 3
158
- })),
159
- getByText = _render.getByText;
160
-
176
+ columns: columns,
177
+ rows: rows,
178
+ itemsPerPage: 3
179
+ })),
180
+ getByText = _render.getByText;
161
181
  expect(getByText("Peter")).toBeTruthy();
162
182
  });
163
- test("Resultsettable shows as many rows as itemsPerPage", function () {
183
+ test("Resultset table shows as many rows as itemsPerPage", function () {
164
184
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
165
- columns: columns,
166
- rows: rows,
167
- itemsPerPage: 3
168
- })),
169
- getAllByRole = _render2.getAllByRole;
170
-
185
+ columns: columns,
186
+ rows: rows,
187
+ itemsPerPage: 3
188
+ })),
189
+ getAllByRole = _render2.getAllByRole;
171
190
  expect(getAllByRole("row").length - 1).toEqual(3);
172
191
  });
173
- test("Resultsettable shows rows on second page", function () {
192
+ test("Resultset table shows rows on second page", function () {
174
193
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
175
- columns: columns,
176
- rows: rows,
177
- itemsPerPage: 3
178
- })),
179
- getByText = _render3.getByText,
180
- getAllByRole = _render3.getAllByRole;
181
-
194
+ columns: columns,
195
+ rows: rows,
196
+ itemsPerPage: 3
197
+ })),
198
+ getByText = _render3.getByText,
199
+ getAllByRole = _render3.getAllByRole;
182
200
  expect(getByText("Peter")).toBeTruthy();
183
201
  expect(getByText("Louis")).toBeTruthy();
184
202
  expect(getByText("Lana")).toBeTruthy();
185
203
  expect(getAllByRole("row").length - 1).toEqual(3);
186
- var nextButton = getAllByRole("button")[2];
187
-
204
+ var nextButton = getAllByRole("button")[3];
188
205
  _react2.fireEvent.click(nextButton);
189
-
190
- expect(getByText("4 to 6 of 10")).toBeTruthy(); // expect(getByText("Page: 2 of 4")).toBeTruthy();
191
-
192
- expect(getByText("Rick")).toBeTruthy();
193
- expect(getByText("Mark")).toBeTruthy();
194
- expect(getByText("Cris")).toBeTruthy();
195
- expect(getAllByRole("row").length - 1).toEqual(3);
196
- });
197
- test("Resultsettable goToPage works as expected", function () {
198
- window.HTMLElement.prototype.scrollIntoView = function () {};
199
-
200
- window.HTMLElement.prototype.scrollTo = function () {};
201
-
202
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
203
- columns: columns,
204
- showGoToPage: true,
205
- rows: rows,
206
- itemsPerPage: 3
207
- })),
208
- getByText = _render4.getByText,
209
- getAllByRole = _render4.getAllByRole,
210
- getByRole = _render4.getByRole;
211
-
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 goToPageSelect = getAllByRole("button")[2];
217
- (0, _react2.act)(function () {
218
- _userEvent["default"].click(goToPageSelect);
219
- });
220
- var goToPageOption = getByText("2");
221
- (0, _react2.act)(function () {
222
- _userEvent["default"].click(goToPageOption);
223
- });
224
206
  expect(getByText("4 to 6 of 10")).toBeTruthy();
225
207
  expect(getByText("Rick")).toBeTruthy();
226
208
  expect(getByText("Mark")).toBeTruthy();
227
209
  expect(getByText("Cris")).toBeTruthy();
228
210
  expect(getAllByRole("row").length - 1).toEqual(3);
229
211
  });
230
- test("Resultsettable going to the last page shows only one row", function () {
212
+ test("Resultset table goToPage works as expected", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
213
+ var _render4, getByText, getAllByRole, goToPageSelect, goToPageOption;
214
+ return _regenerator["default"].wrap(function _callee$(_context) {
215
+ while (1) switch (_context.prev = _context.next) {
216
+ case 0:
217
+ window.HTMLElement.prototype.scrollIntoView = function () {};
218
+ window.HTMLElement.prototype.scrollTo = function () {};
219
+ _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
220
+ columns: columns,
221
+ showGoToPage: true,
222
+ rows: rows,
223
+ itemsPerPage: 3
224
+ })), getByText = _render4.getByText, getAllByRole = _render4.getAllByRole;
225
+ expect(getByText("Peter")).toBeTruthy();
226
+ expect(getByText("Louis")).toBeTruthy();
227
+ expect(getByText("Lana")).toBeTruthy();
228
+ expect(getAllByRole("row").length - 1).toEqual(3);
229
+ goToPageSelect = getAllByRole("button")[3];
230
+ _context.next = 10;
231
+ return _userEvent["default"].click(goToPageSelect);
232
+ case 10:
233
+ goToPageOption = getByText("2");
234
+ _context.next = 13;
235
+ return _userEvent["default"].click(goToPageOption);
236
+ case 13:
237
+ expect(getByText("4 to 6 of 10")).toBeTruthy();
238
+ expect(getByText("Rick")).toBeTruthy();
239
+ expect(getByText("Mark")).toBeTruthy();
240
+ expect(getByText("Cris")).toBeTruthy();
241
+ expect(getAllByRole("row").length - 1).toEqual(3);
242
+ case 18:
243
+ case "end":
244
+ return _context.stop();
245
+ }
246
+ }, _callee);
247
+ })));
248
+ test("Resultset table going to the last page shows only one row", function () {
231
249
  var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
232
- columns: columns,
233
- rows: rows,
234
- itemsPerPage: 3
235
- })),
236
- getByText = _render5.getByText,
237
- getAllByRole = _render5.getAllByRole;
238
-
239
- var lastButton = getAllByRole("button")[3];
240
-
250
+ columns: columns,
251
+ rows: rows,
252
+ itemsPerPage: 3
253
+ })),
254
+ getByText = _render5.getByText,
255
+ getAllByRole = _render5.getAllByRole;
256
+ var lastButton = getAllByRole("button")[4];
241
257
  _react2.fireEvent.click(lastButton);
242
-
243
258
  expect(getByText("10 to 10 of 10")).toBeTruthy();
244
259
  expect(getAllByRole("row")).toHaveLength(2);
245
260
  expect(getByText("Cosmin")).toBeTruthy();
246
261
  });
247
- test("Resultsettable sort rows by column", function () {
262
+ test("Resultset table sort rows by column", function () {
248
263
  var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
249
264
  columns: columns,
250
265
  rows: rows,
251
266
  itemsPerPage: 3
252
267
  }));
253
268
  expect(component.queryByText("Peter")).toBeTruthy();
254
-
255
269
  _react2.fireEvent.click(component.queryByText("Name"));
256
-
257
270
  expect(component.queryByText("Tina")).not.toBeTruthy();
258
271
  expect(component.queryByText("Cosmin")).toBeTruthy();
259
-
260
272
  _react2.fireEvent.click(component.queryByText("Name"));
261
-
262
273
  expect(component.queryByText("Tina")).toBeTruthy();
263
274
  expect(component.queryByText("Cosmin")).not.toBeTruthy();
264
275
  });
265
- test("Resultsettable change rows should go to first page", function () {
276
+ test("Resultset table change rows should go to first page", function () {
266
277
  var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
267
- columns: columns,
268
- rows: rows,
269
- itemsPerPage: 3
270
- })),
271
- queryByText = _render6.queryByText,
272
- rerender = _render6.rerender;
273
-
278
+ columns: columns,
279
+ rows: rows,
280
+ itemsPerPage: 3
281
+ })),
282
+ queryByText = _render6.queryByText,
283
+ rerender = _render6.rerender;
274
284
  expect(queryByText("Peter")).toBeTruthy();
275
285
  rerender( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
276
286
  columns: columns,
@@ -279,28 +289,17 @@ describe("ResultsetTable component tests", function () {
279
289
  }));
280
290
  expect(queryByText("1 to 3 of 3")).toBeTruthy();
281
291
  });
282
- test("Resultsettable change itemsPerPage should go to first page", function () {
292
+ test("Resultset table change itemsPerPage should go to first page", function () {
283
293
  var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
284
- columns: columns,
285
- rows: rows,
286
- itemsPerPage: 3,
287
- itemsPerPageOptions: [2, 3]
288
- })),
289
- getAllByRole = _render7.getAllByRole,
290
- queryByText = _render7.queryByText,
291
- rerender = _render7.rerender;
292
-
293
- var lastButton = getAllByRole("button")[3];
294
-
294
+ columns: columns,
295
+ rows: rows,
296
+ itemsPerPage: 3,
297
+ itemsPerPageOptions: [2, 3]
298
+ })),
299
+ getAllByRole = _render7.getAllByRole;
300
+ var lastButton = getAllByRole("button")[4];
301
+ expect(getAllByRole("row").length - 1).toEqual(3);
295
302
  _react2.fireEvent.click(lastButton);
296
-
297
303
  expect(getAllByRole("row").length - 1).toEqual(1);
298
- rerender( /*#__PURE__*/_react["default"].createElement(_ResultsetTable["default"], {
299
- columns: columns,
300
- rows: rows,
301
- itemsPerPage: 6
302
- }));
303
- expect(getAllByRole("row").length - 1).toEqual(6);
304
- expect(queryByText("Peter")).toBeTruthy();
305
304
  });
306
305
  });
@@ -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,14 +53,14 @@ 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
66
  };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/select/Icons.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- /// <reference types="react" />
1
+ import React from "react";
2
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;
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
9
  };
10
10
  export default selectIcons;
package/select/Icons.js CHANGED
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
-
10
8
  var _react = _interopRequireDefault(require("react"));
11
-
12
9
  var selectIcons = {
13
10
  error: /*#__PURE__*/_react["default"].createElement("svg", {
14
11
  role: "img",
@@ -89,5 +86,4 @@ var selectIcons = {
89
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"
90
87
  }))))
91
88
  };
92
- var _default = selectIcons;
93
- exports["default"] = _default;
89
+ var _default = exports["default"] = selectIcons;
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { ListboxProps } from "./types";
3
- declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<ListboxProps & React.RefAttributes<HTMLUListElement>>>;
3
+ declare const _default: React.MemoExoticComponent<({ id, currentValue, options, visualFocusIndex, lastOptionIndex, multiple, optional, optionalItem, searchable, handleOptionOnClick, styles, }: ListboxProps) => JSX.Element>;
4
4
  export default _default;
package/select/Listbox.js CHANGED
@@ -1,57 +1,41 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
- var _react = _interopRequireDefault(require("react"));
15
-
16
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
17
-
18
- var _useTheme = _interopRequireDefault(require("../useTheme"));
19
-
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
20
12
  var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
21
-
22
13
  var _Option = _interopRequireDefault(require("./Option"));
23
-
24
14
  var _Icons = _interopRequireDefault(require("./Icons"));
25
-
26
15
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
27
-
28
- 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); }
29
-
30
- 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; }
31
-
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; }
32
18
  var groupsHaveOptions = function groupsHaveOptions(options) {
33
19
  return options !== null && options !== void 0 && options[0].options ? options.some(function (groupOption) {
34
20
  var _groupOption$options;
35
-
36
21
  return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
37
22
  }) : true;
38
23
  };
39
-
40
- var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
24
+ var Listbox = function Listbox(_ref) {
41
25
  var id = _ref.id,
42
- currentValue = _ref.currentValue,
43
- options = _ref.options,
44
- visualFocusIndex = _ref.visualFocusIndex,
45
- lastOptionIndex = _ref.lastOptionIndex,
46
- multiple = _ref.multiple,
47
- optional = _ref.optional,
48
- optionalItem = _ref.optionalItem,
49
- searchable = _ref.searchable,
50
- handleOptionOnClick = _ref.handleOptionOnClick;
51
- var colorsTheme = (0, _useTheme["default"])();
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;
52
36
  var translatedLabels = (0, _useTranslatedLabels["default"])();
53
- var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
54
-
37
+ var listboxRef = (0, _react.useRef)(null);
38
+ var globalIndex = optional && !multiple ? 0 : -1;
55
39
  var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
56
40
  if (option.options) {
57
41
  var groupId = "group-".concat(mapIndex);
@@ -91,10 +75,25 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
91
75
  });
92
76
  }
93
77
  };
94
-
95
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
96
- theme: colorsTheme.select
97
- }, /*#__PURE__*/_react["default"].createElement(ListboxContainer, {
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, {
98
97
  id: id,
99
98
  onClick: function onClick(event) {
100
99
  event.stopPropagation();
@@ -102,10 +101,10 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
102
101
  onMouseDown: function onMouseDown(event) {
103
102
  event.preventDefault();
104
103
  },
105
- ref: ref,
104
+ ref: listboxRef,
106
105
  role: "listbox",
107
106
  "aria-multiselectable": multiple,
108
- "aria-orientation": "vertical"
107
+ style: styles
109
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"], {
110
109
  key: "option-".concat(optionalItem.value),
111
110
  id: "option-".concat(0),
@@ -116,10 +115,9 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
116
115
  isGroupedOption: false,
117
116
  isLastOption: lastOptionIndex === 0,
118
117
  isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
119
- }), options.map(mapOptionFunc)));
120
- });
121
-
122
- var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n z-index: 1;\n max-height: 304px;\n overflow-y: auto;\n top: calc(100% + 4px);\n left: 0;\n margin: 0;\n padding: 0.25rem 0;\n width: 100%;\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 0.25rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n cursor: default;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
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) {
123
121
  return props.theme.listDialogBackgroundColor;
124
122
  }, function (props) {
125
123
  return props.theme.listDialogBorderColor;
@@ -134,19 +132,12 @@ var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_temp
134
132
  }, function (props) {
135
133
  return props.theme.listOptionFontWeight;
136
134
  });
137
-
138
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) {
139
136
  return props.theme.systemMessageFontColor;
140
137
  });
141
-
142
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"])));
143
-
144
139
  var GroupList = _styledComponents["default"].ul(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
145
-
146
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) {
147
141
  return props.theme.listGroupLabelFontWeight;
148
142
  });
149
-
150
- var _default = /*#__PURE__*/_react["default"].memo(Listbox);
151
-
152
- exports["default"] = _default;
143
+ var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(Listbox);