@dxc-technology/halstack-react 0.0.0-dfd09f9 → 0.0.0-e01c6f9

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 (315) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1235 -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 -160
  8. package/accordion/Accordion.stories.tsx +103 -127
  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/action-icon/ActionIcon.d.ts +4 -0
  19. package/action-icon/ActionIcon.js +43 -0
  20. package/action-icon/types.d.ts +26 -0
  21. package/alert/Alert.js +23 -59
  22. package/alert/Alert.stories.tsx +28 -0
  23. package/alert/Alert.test.js +29 -46
  24. package/alert/types.d.ts +5 -5
  25. package/badge/Badge.d.ts +1 -1
  26. package/badge/Badge.js +8 -19
  27. package/badge/types.d.ts +2 -1
  28. package/bleed/Bleed.js +14 -55
  29. package/bleed/Bleed.stories.tsx +95 -95
  30. package/bleed/types.d.ts +2 -2
  31. package/box/Box.d.ts +1 -1
  32. package/box/Box.js +30 -81
  33. package/box/Box.stories.tsx +38 -51
  34. package/box/Box.test.js +2 -7
  35. package/box/types.d.ts +3 -14
  36. package/bulleted-list/BulletedList.d.ts +7 -0
  37. package/bulleted-list/BulletedList.js +89 -0
  38. package/bulleted-list/BulletedList.stories.tsx +115 -0
  39. package/bulleted-list/types.d.ts +38 -0
  40. package/button/Button.d.ts +1 -1
  41. package/button/Button.js +62 -113
  42. package/button/Button.stories.tsx +160 -90
  43. package/button/Button.test.js +18 -17
  44. package/button/types.d.ts +12 -8
  45. package/card/Card.d.ts +1 -1
  46. package/card/Card.js +58 -102
  47. package/card/Card.stories.tsx +12 -42
  48. package/card/Card.test.js +11 -22
  49. package/card/types.d.ts +6 -11
  50. package/checkbox/Checkbox.d.ts +2 -2
  51. package/checkbox/Checkbox.js +141 -180
  52. package/checkbox/Checkbox.stories.tsx +128 -94
  53. package/checkbox/Checkbox.test.js +160 -39
  54. package/checkbox/types.d.ts +12 -6
  55. package/chip/Chip.js +39 -79
  56. package/chip/Chip.stories.tsx +121 -26
  57. package/chip/Chip.test.js +16 -31
  58. package/chip/types.d.ts +4 -4
  59. package/common/OpenSans.css +68 -80
  60. package/common/coreTokens.d.ts +237 -0
  61. package/common/coreTokens.js +184 -0
  62. package/common/utils.d.ts +1 -0
  63. package/common/utils.js +6 -12
  64. package/common/variables.d.ts +1381 -0
  65. package/common/variables.js +998 -1117
  66. package/container/Container.d.ts +4 -0
  67. package/container/Container.js +194 -0
  68. package/container/Container.stories.tsx +214 -0
  69. package/container/types.d.ts +74 -0
  70. package/date-input/Calendar.d.ts +4 -0
  71. package/date-input/Calendar.js +214 -0
  72. package/date-input/DateInput.js +153 -299
  73. package/date-input/DateInput.stories.tsx +203 -56
  74. package/date-input/DateInput.test.js +700 -371
  75. package/date-input/DatePicker.d.ts +4 -0
  76. package/date-input/DatePicker.js +115 -0
  77. package/date-input/Icons.d.ts +6 -0
  78. package/date-input/Icons.js +58 -0
  79. package/date-input/YearPicker.d.ts +4 -0
  80. package/date-input/YearPicker.js +100 -0
  81. package/date-input/types.d.ts +72 -15
  82. package/dialog/Dialog.d.ts +1 -1
  83. package/dialog/Dialog.js +73 -107
  84. package/dialog/Dialog.stories.tsx +320 -167
  85. package/dialog/Dialog.test.js +287 -20
  86. package/dialog/types.d.ts +18 -25
  87. package/dropdown/Dropdown.d.ts +1 -1
  88. package/dropdown/Dropdown.js +243 -304
  89. package/dropdown/Dropdown.stories.tsx +245 -56
  90. package/dropdown/Dropdown.test.js +575 -165
  91. package/dropdown/DropdownMenu.d.ts +4 -0
  92. package/dropdown/DropdownMenu.js +63 -0
  93. package/dropdown/DropdownMenuItem.d.ts +4 -0
  94. package/dropdown/DropdownMenuItem.js +67 -0
  95. package/dropdown/types.d.ts +32 -14
  96. package/file-input/FileInput.d.ts +2 -2
  97. package/file-input/FileInput.js +246 -357
  98. package/file-input/FileInput.stories.tsx +123 -12
  99. package/file-input/FileInput.test.js +369 -367
  100. package/file-input/FileItem.d.ts +4 -14
  101. package/file-input/FileItem.js +50 -99
  102. package/file-input/types.d.ts +25 -8
  103. package/flex/Flex.d.ts +4 -0
  104. package/flex/Flex.js +57 -0
  105. package/flex/Flex.stories.tsx +112 -0
  106. package/flex/types.d.ts +97 -0
  107. package/footer/Footer.d.ts +1 -1
  108. package/footer/Footer.js +57 -115
  109. package/footer/Footer.stories.tsx +41 -19
  110. package/footer/Footer.test.js +33 -57
  111. package/footer/Icons.d.ts +2 -2
  112. package/footer/Icons.js +3 -8
  113. package/footer/types.d.ts +21 -28
  114. package/grid/Grid.d.ts +7 -0
  115. package/grid/Grid.js +76 -0
  116. package/grid/Grid.stories.tsx +219 -0
  117. package/grid/types.d.ts +115 -0
  118. package/header/Header.d.ts +4 -3
  119. package/header/Header.js +90 -170
  120. package/header/Header.stories.tsx +118 -39
  121. package/header/Header.test.js +13 -26
  122. package/header/Icons.d.ts +2 -2
  123. package/header/Icons.js +4 -9
  124. package/header/types.d.ts +5 -19
  125. package/heading/Heading.js +10 -32
  126. package/heading/Heading.test.js +71 -88
  127. package/heading/types.d.ts +7 -7
  128. package/image/Image.d.ts +4 -0
  129. package/image/Image.js +70 -0
  130. package/image/Image.stories.tsx +127 -0
  131. package/image/types.d.ts +72 -0
  132. package/inset/Inset.js +14 -55
  133. package/inset/Inset.stories.tsx +37 -36
  134. package/inset/types.d.ts +2 -2
  135. package/layout/ApplicationLayout.d.ts +16 -6
  136. package/layout/ApplicationLayout.js +82 -166
  137. package/layout/ApplicationLayout.stories.tsx +85 -94
  138. package/layout/Icons.d.ts +8 -0
  139. package/layout/Icons.js +51 -48
  140. package/layout/SidenavContext.d.ts +5 -0
  141. package/layout/SidenavContext.js +13 -0
  142. package/layout/types.d.ts +19 -35
  143. package/link/Link.d.ts +3 -2
  144. package/link/Link.js +61 -99
  145. package/link/Link.stories.tsx +155 -53
  146. package/link/Link.test.js +25 -53
  147. package/link/types.d.ts +15 -31
  148. package/main.d.ts +11 -12
  149. package/main.js +58 -109
  150. package/nav-tabs/NavTabs.d.ts +8 -0
  151. package/nav-tabs/NavTabs.js +90 -0
  152. package/nav-tabs/NavTabs.stories.tsx +274 -0
  153. package/nav-tabs/NavTabs.test.js +75 -0
  154. package/nav-tabs/Tab.d.ts +4 -0
  155. package/nav-tabs/Tab.js +117 -0
  156. package/nav-tabs/types.d.ts +52 -0
  157. package/nav-tabs/types.js +5 -0
  158. package/number-input/NumberInput.d.ts +7 -0
  159. package/number-input/NumberInput.js +26 -35
  160. package/number-input/NumberInput.stories.tsx +42 -26
  161. package/number-input/NumberInput.test.js +701 -377
  162. package/number-input/types.d.ts +12 -6
  163. package/package.json +44 -46
  164. package/paginator/Icons.d.ts +5 -0
  165. package/paginator/Icons.js +21 -47
  166. package/paginator/Paginator.js +34 -91
  167. package/paginator/Paginator.stories.tsx +24 -0
  168. package/paginator/Paginator.test.js +280 -211
  169. package/paginator/types.d.ts +3 -3
  170. package/paragraph/Paragraph.d.ts +5 -0
  171. package/paragraph/Paragraph.js +22 -0
  172. package/paragraph/Paragraph.stories.tsx +27 -0
  173. package/password-input/Icons.d.ts +6 -0
  174. package/password-input/Icons.js +35 -0
  175. package/password-input/PasswordInput.js +57 -123
  176. package/password-input/PasswordInput.stories.tsx +1 -33
  177. package/password-input/PasswordInput.test.js +160 -143
  178. package/password-input/types.d.ts +9 -8
  179. package/progress-bar/ProgressBar.js +65 -91
  180. package/progress-bar/ProgressBar.stories.tsx +93 -0
  181. package/progress-bar/ProgressBar.test.js +72 -44
  182. package/progress-bar/types.d.ts +3 -3
  183. package/quick-nav/QuickNav.js +71 -41
  184. package/quick-nav/QuickNav.stories.tsx +146 -27
  185. package/quick-nav/types.d.ts +10 -10
  186. package/radio-group/Radio.d.ts +1 -1
  187. package/radio-group/Radio.js +59 -76
  188. package/radio-group/RadioGroup.js +71 -116
  189. package/radio-group/RadioGroup.stories.tsx +132 -18
  190. package/radio-group/RadioGroup.test.js +518 -457
  191. package/radio-group/types.d.ts +10 -10
  192. package/resultset-table/Icons.d.ts +7 -0
  193. package/resultset-table/Icons.js +47 -0
  194. package/resultset-table/ResultsetTable.js +159 -0
  195. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +50 -25
  196. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +117 -118
  197. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  198. package/resultset-table/types.js +5 -0
  199. package/select/Icons.d.ts +7 -7
  200. package/select/Icons.js +1 -5
  201. package/select/Listbox.d.ts +1 -1
  202. package/select/Listbox.js +46 -51
  203. package/select/Option.js +20 -50
  204. package/select/Select.js +168 -242
  205. package/select/Select.stories.tsx +525 -136
  206. package/select/Select.test.js +2009 -1696
  207. package/select/types.d.ts +16 -20
  208. package/sidenav/Icons.d.ts +7 -0
  209. package/sidenav/Icons.js +47 -0
  210. package/sidenav/Sidenav.d.ts +6 -5
  211. package/sidenav/Sidenav.js +131 -71
  212. package/sidenav/Sidenav.stories.tsx +251 -151
  213. package/sidenav/Sidenav.test.js +26 -45
  214. package/sidenav/types.d.ts +52 -26
  215. package/slider/Slider.d.ts +2 -2
  216. package/slider/Slider.js +148 -181
  217. package/slider/Slider.test.js +185 -81
  218. package/slider/types.d.ts +7 -3
  219. package/spinner/Spinner.js +31 -75
  220. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  221. package/spinner/Spinner.test.js +26 -35
  222. package/spinner/types.d.ts +3 -3
  223. package/switch/Switch.d.ts +2 -2
  224. package/switch/Switch.js +143 -121
  225. package/switch/Switch.stories.tsx +41 -64
  226. package/switch/Switch.test.js +138 -56
  227. package/switch/types.d.ts +9 -5
  228. package/table/Table.js +8 -30
  229. package/table/{Table.stories.jsx → Table.stories.tsx} +80 -1
  230. package/table/Table.test.js +3 -8
  231. package/table/types.d.ts +8 -8
  232. package/tabs/Tab.d.ts +4 -0
  233. package/tabs/Tab.js +113 -0
  234. package/tabs/Tabs.js +314 -141
  235. package/tabs/Tabs.stories.tsx +119 -11
  236. package/tabs/Tabs.test.js +223 -69
  237. package/tabs/types.d.ts +28 -18
  238. package/tag/Tag.js +33 -68
  239. package/tag/Tag.stories.tsx +14 -1
  240. package/tag/Tag.test.js +20 -31
  241. package/tag/types.d.ts +7 -7
  242. package/text-input/Icons.d.ts +8 -0
  243. package/text-input/Icons.js +56 -0
  244. package/text-input/Suggestion.d.ts +4 -0
  245. package/text-input/Suggestion.js +67 -0
  246. package/text-input/Suggestions.d.ts +4 -0
  247. package/text-input/Suggestions.js +84 -0
  248. package/text-input/TextInput.js +323 -547
  249. package/text-input/TextInput.stories.tsx +266 -275
  250. package/text-input/TextInput.test.js +1403 -1376
  251. package/text-input/types.d.ts +53 -14
  252. package/textarea/Textarea.js +79 -131
  253. package/textarea/Textarea.stories.tsx +174 -0
  254. package/textarea/Textarea.test.js +152 -183
  255. package/textarea/types.d.ts +10 -6
  256. package/toggle-group/ToggleGroup.d.ts +2 -2
  257. package/toggle-group/ToggleGroup.js +92 -106
  258. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  259. package/toggle-group/ToggleGroup.test.js +69 -88
  260. package/toggle-group/types.d.ts +26 -17
  261. package/typography/Typography.d.ts +4 -0
  262. package/typography/Typography.js +23 -0
  263. package/typography/Typography.stories.tsx +198 -0
  264. package/typography/types.d.ts +18 -0
  265. package/typography/types.js +5 -0
  266. package/useTheme.d.ts +1133 -1
  267. package/useTheme.js +4 -11
  268. package/useTranslatedLabels.d.ts +85 -0
  269. package/useTranslatedLabels.js +14 -0
  270. package/utils/BaseTypography.d.ts +21 -0
  271. package/utils/BaseTypography.js +94 -0
  272. package/utils/FocusLock.d.ts +13 -0
  273. package/utils/FocusLock.js +121 -0
  274. package/wizard/Wizard.js +51 -91
  275. package/wizard/Wizard.stories.tsx +40 -1
  276. package/wizard/Wizard.test.js +54 -81
  277. package/wizard/types.d.ts +7 -7
  278. package/ThemeContext.d.ts +0 -10
  279. package/ThemeContext.js +0 -243
  280. package/card/ice-cream.jpg +0 -0
  281. package/common/RequiredComponent.js +0 -32
  282. package/list/List.d.ts +0 -4
  283. package/list/List.js +0 -47
  284. package/list/List.stories.tsx +0 -95
  285. package/list/types.d.ts +0 -7
  286. package/number-input/NumberInputContext.d.ts +0 -4
  287. package/number-input/NumberInputContext.js +0 -19
  288. package/number-input/numberInputContextTypes.d.ts +0 -19
  289. package/progress-bar/ProgressBar.stories.jsx +0 -58
  290. package/radio/Radio.d.ts +0 -4
  291. package/radio/Radio.js +0 -174
  292. package/radio/Radio.stories.tsx +0 -192
  293. package/radio/Radio.test.js +0 -71
  294. package/radio/types.d.ts +0 -54
  295. package/resultsetTable/ResultsetTable.js +0 -254
  296. package/row/Row.d.ts +0 -3
  297. package/row/Row.js +0 -127
  298. package/row/Row.stories.tsx +0 -237
  299. package/row/types.d.ts +0 -28
  300. package/slider/Slider.stories.tsx +0 -177
  301. package/stack/Stack.d.ts +0 -3
  302. package/stack/Stack.js +0 -97
  303. package/stack/Stack.stories.tsx +0 -164
  304. package/stack/types.d.ts +0 -24
  305. package/text/Text.d.ts +0 -7
  306. package/text/Text.js +0 -30
  307. package/text/Text.stories.tsx +0 -19
  308. package/textarea/Textarea.stories.jsx +0 -157
  309. /package/{list → action-icon}/types.js +0 -0
  310. /package/{radio → bulleted-list}/types.js +0 -0
  311. /package/{resultsetTable → container}/types.js +0 -0
  312. /package/{row → flex}/types.js +0 -0
  313. /package/{stack → grid}/types.js +0 -0
  314. /package/{number-input/numberInputContextTypes.js → image/types.js} +0 -0
  315. /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,54 +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"));
12
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
20
13
  var _Option = _interopRequireDefault(require("./Option"));
21
-
22
14
  var _Icons = _interopRequireDefault(require("./Icons"));
23
-
24
15
  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
-
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; }
30
18
  var groupsHaveOptions = function groupsHaveOptions(options) {
31
19
  return options !== null && options !== void 0 && options[0].options ? options.some(function (groupOption) {
32
20
  var _groupOption$options;
33
-
34
21
  return ((_groupOption$options = groupOption.options) === null || _groupOption$options === void 0 ? void 0 : _groupOption$options.length) > 0;
35
22
  }) : true;
36
23
  };
37
-
38
- var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
24
+ var Listbox = function Listbox(_ref) {
39
25
  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
- var colorsTheme = (0, _useTheme["default"])();
50
- var globalIndex = optional && !multiple ? 0 : -1; // index for options, starting from 0 to options.length -1
51
-
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;
52
39
  var mapOptionFunc = function mapOptionFunc(option, mapIndex) {
53
40
  if (option.options) {
54
41
  var groupId = "group-".concat(mapIndex);
@@ -88,10 +75,25 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
88
75
  });
89
76
  }
90
77
  };
91
-
92
- return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
93
- theme: colorsTheme.select
94
- }, /*#__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, {
95
97
  id: id,
96
98
  onClick: function onClick(event) {
97
99
  event.stopPropagation();
@@ -99,11 +101,12 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
99
101
  onMouseDown: function onMouseDown(event) {
100
102
  event.preventDefault();
101
103
  },
102
- ref: ref,
104
+ ref: listboxRef,
103
105
  role: "listbox",
104
106
  "aria-multiselectable": multiple,
105
- "aria-orientation": "vertical"
106
- }, searchable && (options.length === 0 || !groupsHaveOptions(options)) ? /*#__PURE__*/_react["default"].createElement(OptionsSystemMessage, null, /*#__PURE__*/_react["default"].createElement(NoMatchesFoundIcon, null, _Icons["default"].searchOff), "No matches found") : optional && !multiple && /*#__PURE__*/_react["default"].createElement(_Option["default"], {
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),
107
110
  id: "option-".concat(0),
108
111
  option: optionalItem,
109
112
  onClick: handleOptionOnClick,
@@ -112,10 +115,9 @@ var Listbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
112
115
  isGroupedOption: false,
113
116
  isLastOption: lastOptionIndex === 0,
114
117
  isSelected: multiple ? currentValue.includes(optionalItem.value) : currentValue === optionalItem.value
115
- }), options.map(mapOptionFunc)));
116
- });
117
-
118
- var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n z-index: 1;\n max-height: 304px;\n overflow-y: auto;\n top: calc(100% + 4px);\n left: 0;\n margin: 0;\n padding: 0.25rem 0;\n width: 100%;\n background-color: ", ";\n border: 1px solid ", ";\n border-radius: 0.25rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n cursor: default;\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
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) {
119
121
  return props.theme.listDialogBackgroundColor;
120
122
  }, function (props) {
121
123
  return props.theme.listDialogBorderColor;
@@ -130,19 +132,12 @@ var ListboxContainer = _styledComponents["default"].ul(_templateObject || (_temp
130
132
  }, function (props) {
131
133
  return props.theme.listOptionFontWeight;
132
134
  });
133
-
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) {
135
136
  return props.theme.systemMessageFontColor;
136
137
  });
137
-
138
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
-
140
139
  var GroupList = _styledComponents["default"].ul(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 0;\n"])));
141
-
142
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) {
143
141
  return props.theme.listGroupLabelFontWeight;
144
142
  });
145
-
146
- var _default = /*#__PURE__*/_react["default"].memo(Listbox);
147
-
148
- exports["default"] = _default;
143
+ var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(Listbox);