@transferwise/components 46.38.0 → 46.40.0

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 (202) hide show
  1. package/build/index.js +198 -461
  2. package/build/index.js.map +1 -1
  3. package/build/index.mjs +198 -461
  4. package/build/index.mjs.map +1 -1
  5. package/build/types/flowNavigation/backButton/BackButton.d.ts +5 -17
  6. package/build/types/flowNavigation/backButton/BackButton.d.ts.map +1 -1
  7. package/build/types/flowNavigation/backButton/index.d.ts +2 -2
  8. package/build/types/flowNavigation/backButton/index.d.ts.map +1 -1
  9. package/build/types/index.d.ts +3 -1
  10. package/build/types/index.d.ts.map +1 -1
  11. package/build/types/info/Info.d.ts +2 -2
  12. package/build/types/info/Info.d.ts.map +1 -1
  13. package/build/types/info/index.d.ts +1 -1
  14. package/build/types/info/index.d.ts.map +1 -1
  15. package/build/types/overlayHeader/OverlayHeader.d.ts +9 -18
  16. package/build/types/overlayHeader/OverlayHeader.d.ts.map +1 -1
  17. package/build/types/overlayHeader/index.d.ts +2 -1
  18. package/build/types/overlayHeader/index.d.ts.map +1 -1
  19. package/build/types/processIndicator/ProcessIndicator.d.ts +1 -1
  20. package/build/types/processIndicator/ProcessIndicator.d.ts.map +1 -1
  21. package/build/types/upload/Upload.d.ts +91 -55
  22. package/build/types/upload/Upload.d.ts.map +1 -1
  23. package/build/types/upload/Upload.messages.d.ts +42 -60
  24. package/build/types/upload/Upload.messages.d.ts.map +1 -1
  25. package/build/types/upload/index.d.ts +2 -2
  26. package/build/types/upload/index.d.ts.map +1 -1
  27. package/build/types/upload/steps/completeStep/completeStep.d.ts +11 -18
  28. package/build/types/upload/steps/completeStep/completeStep.d.ts.map +1 -1
  29. package/build/types/upload/steps/completeStep/index.d.ts +2 -1
  30. package/build/types/upload/steps/completeStep/index.d.ts.map +1 -1
  31. package/build/types/upload/steps/index.d.ts +3 -4
  32. package/build/types/upload/steps/index.d.ts.map +1 -1
  33. package/build/types/upload/steps/processingStep/index.d.ts +2 -1
  34. package/build/types/upload/steps/processingStep/index.d.ts.map +1 -1
  35. package/build/types/upload/steps/processingStep/processingStep.d.ts +11 -13
  36. package/build/types/upload/steps/processingStep/processingStep.d.ts.map +1 -1
  37. package/build/types/upload/steps/uploadImageStep/index.d.ts +2 -1
  38. package/build/types/upload/steps/uploadImageStep/index.d.ts.map +1 -1
  39. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts +14 -18
  40. package/build/types/upload/steps/uploadImageStep/uploadImageStep.d.ts.map +1 -1
  41. package/build/types/upload/utils/asyncFileRead/asyncFileRead.d.ts +1 -1
  42. package/build/types/upload/utils/asyncFileRead/asyncFileRead.d.ts.map +1 -1
  43. package/build/types/upload/utils/asyncFileRead/index.d.ts +1 -1
  44. package/build/types/upload/utils/asyncFileRead/index.d.ts.map +1 -1
  45. package/build/types/upload/utils/getFileType/getFileType.d.ts +1 -1
  46. package/build/types/upload/utils/getFileType/getFileType.d.ts.map +1 -1
  47. package/build/types/upload/utils/getFileType/index.d.ts +1 -1
  48. package/build/types/upload/utils/getFileType/index.d.ts.map +1 -1
  49. package/build/types/upload/utils/index.d.ts +5 -7
  50. package/build/types/upload/utils/index.d.ts.map +1 -1
  51. package/build/types/upload/utils/isSizeValid/index.d.ts +1 -1
  52. package/build/types/upload/utils/isSizeValid/index.d.ts.map +1 -1
  53. package/build/types/upload/utils/isSizeValid/isSizeValid.d.ts +1 -1
  54. package/build/types/upload/utils/isSizeValid/isSizeValid.d.ts.map +1 -1
  55. package/build/types/upload/utils/isTypeValid/index.d.ts +1 -1
  56. package/build/types/upload/utils/isTypeValid/index.d.ts.map +1 -1
  57. package/build/types/upload/utils/isTypeValid/isTypeValid.d.ts +1 -1
  58. package/build/types/upload/utils/isTypeValid/isTypeValid.d.ts.map +1 -1
  59. package/build/types/upload/utils/postData/index.d.ts +1 -1
  60. package/build/types/upload/utils/postData/index.d.ts.map +1 -1
  61. package/build/types/upload/utils/postData/postData.d.ts +11 -1
  62. package/build/types/upload/utils/postData/postData.d.ts.map +1 -1
  63. package/package.json +24 -26
  64. package/src/accordion/Accordion.spec.js +5 -5
  65. package/src/accordion/AccordionItem/AccordionItem.spec.js +2 -2
  66. package/src/actionButton/ActionButton.spec.tsx +4 -5
  67. package/src/alert/Alert.spec.tsx +4 -4
  68. package/src/alert/Alert.story.tsx +6 -5
  69. package/src/button/Button.spec.js +4 -5
  70. package/src/card/Card.spec.tsx +4 -4
  71. package/src/carousel/Carousel.spec.tsx +17 -17
  72. package/src/checkbox/Checkbox.spec.tsx +0 -2
  73. package/src/checkboxButton/CheckboxButton.spec.tsx +0 -2
  74. package/src/checkboxOption/CheckboxOption.spec.tsx +0 -2
  75. package/src/chevron/Chevron.spec.tsx +0 -1
  76. package/src/chips/Chips.spec.tsx +0 -1
  77. package/src/chips/Chips.story.tsx +5 -3
  78. package/src/circularButton/CircularButton.spec.tsx +4 -5
  79. package/src/common/RadioButton/RadioButton.spec.tsx +2 -2
  80. package/src/common/card/Card.story.tsx +1 -0
  81. package/src/common/closeButton/CloseButton.spec.tsx +0 -1
  82. package/src/common/flowHeader/FlowHeader.spec.tsx +0 -1
  83. package/src/dateInput/DateInput.story.tsx +21 -16
  84. package/src/dateLookup/DateLookup.rtl.spec.tsx +18 -16
  85. package/src/dateLookup/DateLookup.testingLibrary.spec.js +47 -44
  86. package/src/dateLookup/DateLookup.tests.story.tsx +4 -2
  87. package/src/decision/Decision.spec.js +0 -2
  88. package/src/dimmer/Dimmer.rtl.spec.js +10 -10
  89. package/src/drawer/Drawer.rtl.spec.tsx +2 -2
  90. package/src/emphasis/Emphasis.spec.tsx +0 -1
  91. package/src/field/Field.spec.tsx +2 -2
  92. package/src/flowNavigation/FlowNavigation.spec.js +0 -2
  93. package/src/flowNavigation/animatedLabel/AnimatedLabel.spec.js +0 -1
  94. package/src/flowNavigation/backButton/BackButton.tsx +29 -0
  95. package/src/flowNavigation/backButton/index.ts +2 -0
  96. package/src/header/Header.spec.tsx +6 -6
  97. package/src/image/Image.spec.tsx +0 -1
  98. package/src/index.ts +3 -1
  99. package/src/info/Info.story.tsx +15 -9
  100. package/src/info/Info.tsx +2 -2
  101. package/src/info/index.ts +1 -1
  102. package/src/inlineAlert/InlineAlert.spec.tsx +0 -1
  103. package/src/inputs/SelectInput.spec.tsx +26 -47
  104. package/src/link/Link.spec.tsx +0 -1
  105. package/src/listItem/ListItem.spec.tsx +0 -1
  106. package/src/moneyInput/MoneyInput.rtl.spec.tsx +2 -2
  107. package/src/moneyInput/MoneyInput.story.tsx +1 -4
  108. package/src/overlayHeader/{OverlayHeader.spec.js → OverlayHeader.spec.tsx} +1 -1
  109. package/src/overlayHeader/{OverlayHeader.story.js → OverlayHeader.story.tsx} +10 -2
  110. package/src/overlayHeader/{OverlayHeader.js → OverlayHeader.tsx} +12 -19
  111. package/src/overlayHeader/index.ts +2 -0
  112. package/src/phoneNumberInput/PhoneNumberInput.story.tsx +1 -0
  113. package/src/popover/Popover.spec.tsx +10 -10
  114. package/src/processIndicator/ProcessIndicator.tsx +1 -1
  115. package/src/progress/Progress.spec.tsx +0 -1
  116. package/src/progressBar/ProgressBar.spec.tsx +0 -1
  117. package/src/segmentedControl/SegmentedControl.spec.tsx +10 -11
  118. package/src/select/Select.spec.js +71 -71
  119. package/src/test-utils/index.js +1 -1
  120. package/src/test-utils/jest.setup.js +2 -0
  121. package/src/tooltip/Tooltip.spec.tsx +15 -16
  122. package/src/upload/Upload.spec.js +3 -14
  123. package/src/upload/Upload.story.tsx +37 -0
  124. package/src/upload/{Upload.js → Upload.tsx} +164 -169
  125. package/src/upload/index.ts +2 -0
  126. package/src/upload/steps/completeStep/completeStep.spec.js +3 -2
  127. package/src/upload/steps/completeStep/completeStep.tsx +74 -0
  128. package/src/upload/steps/completeStep/index.ts +2 -0
  129. package/src/upload/steps/{index.js → index.ts} +0 -1
  130. package/src/upload/steps/processingStep/index.ts +2 -0
  131. package/src/upload/steps/processingStep/processingStep.tsx +53 -0
  132. package/src/upload/steps/uploadImageStep/index.ts +2 -0
  133. package/src/upload/steps/uploadImageStep/{uploadImageStep.js → uploadImageStep.tsx} +17 -23
  134. package/src/upload/utils/asyncFileRead/asyncFileRead.spec.ts +14 -0
  135. package/src/upload/utils/asyncFileRead/asyncFileRead.ts +12 -0
  136. package/src/upload/utils/getFileType/getFileType.spec.ts +22 -0
  137. package/src/upload/utils/getFileType/getFileType.ts +16 -0
  138. package/src/upload/utils/{index.js → index.ts} +0 -2
  139. package/src/upload/utils/isSizeValid/{isSizeValid.spec.js → isSizeValid.spec.ts} +3 -3
  140. package/src/upload/utils/isSizeValid/isSizeValid.ts +3 -0
  141. package/src/upload/utils/isTypeValid/isTypeValid.spec.ts +62 -0
  142. package/src/upload/utils/isTypeValid/isTypeValid.ts +19 -0
  143. package/src/upload/utils/postData/postData.spec.ts +65 -0
  144. package/src/upload/utils/postData/postData.ts +36 -0
  145. package/src/uploadInput/UploadInput.spec.tsx +9 -10
  146. package/src/uploadInput/UploadInput.story.tsx +8 -180
  147. package/src/uploadInput/UploadInput.tests.story.tsx +212 -0
  148. package/src/uploadInput/UploadInput.tsx +1 -1
  149. package/src/uploadInput/uploadButton/UploadButton.spec.tsx +4 -4
  150. package/src/uploadInput/uploadItem/UploadItem.spec.tsx +4 -4
  151. package/build/types/upload/steps/mediaUploadStep/index.d.ts +0 -2
  152. package/build/types/upload/steps/mediaUploadStep/index.d.ts.map +0 -1
  153. package/build/types/upload/steps/mediaUploadStep/mediaUploadStep.d.ts +0 -24
  154. package/build/types/upload/steps/mediaUploadStep/mediaUploadStep.d.ts.map +0 -1
  155. package/build/types/upload/uploadSteps.d.ts +0 -5
  156. package/build/types/upload/uploadSteps.d.ts.map +0 -1
  157. package/build/types/upload/utils/getSupportedSpotMimeTypes/getSupportedSpotMimeTypes.d.ts +0 -2
  158. package/build/types/upload/utils/getSupportedSpotMimeTypes/getSupportedSpotMimeTypes.d.ts.map +0 -1
  159. package/build/types/upload/utils/getSupportedSpotMimeTypes/index.d.ts +0 -2
  160. package/build/types/upload/utils/getSupportedSpotMimeTypes/index.d.ts.map +0 -1
  161. package/build/types/upload/utils/requestMedia/index.d.ts +0 -2
  162. package/build/types/upload/utils/requestMedia/index.d.ts.map +0 -1
  163. package/build/types/upload/utils/requestMedia/requestMedia.d.ts +0 -2
  164. package/build/types/upload/utils/requestMedia/requestMedia.d.ts.map +0 -1
  165. package/src/flowNavigation/backButton/BackButton.js +0 -32
  166. package/src/flowNavigation/backButton/BackButton.spec.js +0 -16
  167. package/src/flowNavigation/backButton/__snapshots__/BackButton.spec.js.snap +0 -37
  168. package/src/flowNavigation/backButton/index.js +0 -3
  169. package/src/overlayHeader/index.js +0 -1
  170. package/src/upload/Upload.story.js +0 -36
  171. package/src/upload/index.js +0 -2
  172. package/src/upload/steps/completeStep/completeStep.js +0 -98
  173. package/src/upload/steps/completeStep/index.js +0 -1
  174. package/src/upload/steps/mediaUploadStep/index.js +0 -1
  175. package/src/upload/steps/mediaUploadStep/mediaUploadStep.js +0 -80
  176. package/src/upload/steps/mediaUploadStep/mediaUploadStep.spec.js +0 -77
  177. package/src/upload/steps/processingStep/index.js +0 -1
  178. package/src/upload/steps/processingStep/processingStep.js +0 -73
  179. package/src/upload/steps/uploadImageStep/index.js +0 -1
  180. package/src/upload/uploadSteps.ts +0 -5
  181. package/src/upload/utils/asyncFileRead/asyncFileRead.js +0 -11
  182. package/src/upload/utils/asyncFileRead/asyncFileRead.spec.js +0 -17
  183. package/src/upload/utils/getFileType/getFileType.js +0 -19
  184. package/src/upload/utils/getFileType/getFileType.spec.js +0 -33
  185. package/src/upload/utils/getSupportedSpotMimeTypes/getSupportedSpotMimeTypes.js +0 -18
  186. package/src/upload/utils/getSupportedSpotMimeTypes/getSupportedSpotMimeTypes.spec.js +0 -22
  187. package/src/upload/utils/getSupportedSpotMimeTypes/index.js +0 -1
  188. package/src/upload/utils/isSizeValid/isSizeValid.js +0 -1
  189. package/src/upload/utils/isTypeValid/isTypeValid.js +0 -26
  190. package/src/upload/utils/isTypeValid/isTypeValid.spec.js +0 -68
  191. package/src/upload/utils/postData/postData.js +0 -18
  192. package/src/upload/utils/postData/postData.spec.js +0 -109
  193. package/src/upload/utils/requestMedia/index.js +0 -1
  194. package/src/upload/utils/requestMedia/requestMedia.js +0 -26
  195. package/src/upload/utils/requestMedia/requestMedia.spec.js +0 -44
  196. /package/src/overlayHeader/__snapshots__/{OverlayHeader.spec.js.snap → OverlayHeader.spec.tsx.snap} +0 -0
  197. /package/src/upload/{Upload.messages.js → Upload.messages.ts} +0 -0
  198. /package/src/upload/utils/asyncFileRead/{index.js → index.ts} +0 -0
  199. /package/src/upload/utils/getFileType/{index.js → index.ts} +0 -0
  200. /package/src/upload/utils/isSizeValid/{index.js → index.ts} +0 -0
  201. /package/src/upload/utils/isTypeValid/{index.js → index.ts} +0 -0
  202. /package/src/upload/utils/postData/{index.js → index.ts} +0 -0
@@ -42,16 +42,16 @@ describe('Select', () => {
42
42
  global.requestAnimationFrame = originalRAF;
43
43
  });
44
44
 
45
- const openSelect = (container) => {
45
+ const openSelect = async (container) => {
46
46
  const button = screen.getByRole('button');
47
- userEvent.click(button);
47
+ await userEvent.click(button);
48
48
  };
49
49
 
50
50
  describe('search property', () => {
51
51
  it('should focus input when dropdown is open', async () => {
52
52
  const { container } = render(<Select {...props} search />);
53
53
 
54
- openSelect(container);
54
+ await openSelect(container);
55
55
  const input = screen.getByPlaceholderText('Search...');
56
56
 
57
57
  expect(input).toHaveFocus();
@@ -60,7 +60,7 @@ describe('Select', () => {
60
60
  it('should pass id to search box', async () => {
61
61
  const { container } = render(<Select {...props} search id="dummy" />);
62
62
 
63
- openSelect(container);
63
+ await openSelect(container);
64
64
  const input = screen.getByPlaceholderText('Search...');
65
65
 
66
66
  expect(input).toHaveAttribute('id', 'dummy-searchbox');
@@ -69,9 +69,9 @@ describe('Select', () => {
69
69
  it('should filter the options with the default filter function', async () => {
70
70
  const { container } = render(<Select {...props} search />);
71
71
 
72
- openSelect(container);
72
+ await openSelect(container);
73
73
  const input = screen.getByPlaceholderText('Search...');
74
- userEvent.type(input, 'yo');
74
+ await userEvent.type(input, 'yo');
75
75
 
76
76
  // Not ideal, this higlights accessibility issues.
77
77
  expect(container.querySelector('.np-dropdown-item.np-dropdown-item--focused')).toStrictEqual(
@@ -113,14 +113,14 @@ describe('Select', () => {
113
113
  beforeEach(async () => {
114
114
  const { container } = render(<Select {...props} options={searchableOptions} search />);
115
115
 
116
- openSelect(container);
116
+ await openSelect(container);
117
117
 
118
118
  input = screen.getByPlaceholderText('Search...');
119
119
  });
120
120
 
121
121
  describe('when searching by label', () => {
122
- it('should display the search result', () => {
123
- userEvent.type(input, 'second_label');
122
+ it('should display the search result', async () => {
123
+ await userEvent.type(input, 'second_label');
124
124
 
125
125
  expect(screen.queryByText('first_label')).not.toBeInTheDocument();
126
126
  expect(screen.getByText('second_label')).toBeInTheDocument();
@@ -129,8 +129,8 @@ describe('Select', () => {
129
129
  });
130
130
 
131
131
  describe('when searching by note', () => {
132
- it('should display the search result', () => {
133
- userEvent.type(input, 'third_note');
132
+ it('should display the search result', async () => {
133
+ await userEvent.type(input, 'third_note');
134
134
 
135
135
  expect(screen.queryByText('first_label')).not.toBeInTheDocument();
136
136
  expect(screen.queryByText('second_label')).not.toBeInTheDocument();
@@ -139,8 +139,8 @@ describe('Select', () => {
139
139
  });
140
140
 
141
141
  describe('when searching by secondary', () => {
142
- it('should display the search result', () => {
143
- userEvent.type(input, 'first_secondary');
142
+ it('should display the search result', async () => {
143
+ await userEvent.type(input, 'first_secondary');
144
144
 
145
145
  expect(screen.getByText('first_label')).toBeInTheDocument();
146
146
  expect(screen.queryByText('second_label')).not.toBeInTheDocument();
@@ -149,8 +149,8 @@ describe('Select', () => {
149
149
  });
150
150
 
151
151
  describe('when searching by currency', () => {
152
- it('should display the search result', () => {
153
- userEvent.type(input, 'usd');
152
+ it('should display the search result', async () => {
153
+ await userEvent.type(input, 'usd');
154
154
 
155
155
  expect(screen.queryByText('first_label')).not.toBeInTheDocument();
156
156
  expect(screen.getByText('second_label')).toBeInTheDocument();
@@ -159,8 +159,8 @@ describe('Select', () => {
159
159
  });
160
160
 
161
161
  describe('when searching by searchStrings', () => {
162
- it('should display the search result', () => {
163
- userEvent.type(input, 'third_search_string');
162
+ it('should display the search result', async () => {
163
+ await userEvent.type(input, 'third_search_string');
164
164
 
165
165
  expect(screen.queryByText('first_label')).not.toBeInTheDocument();
166
166
  expect(screen.queryByText('second_label')).not.toBeInTheDocument();
@@ -169,7 +169,7 @@ describe('Select', () => {
169
169
  });
170
170
  });
171
171
 
172
- it('should be able to search disabled options', () => {
172
+ it('should be able to search disabled options', async () => {
173
173
  const { container } = render(
174
174
  <Select
175
175
  {...props}
@@ -180,9 +180,9 @@ describe('Select', () => {
180
180
  ]}
181
181
  />,
182
182
  );
183
- openSelect(container);
183
+ await openSelect(container);
184
184
  const input = screen.getByPlaceholderText('Search...');
185
- userEvent.type(input, 'Disabled');
185
+ await userEvent.type(input, 'Disabled');
186
186
  expect(screen.queryByText('Enabled Option')).not.toBeInTheDocument();
187
187
  expect(screen.getByText('Disabled Option')).toBeInTheDocument();
188
188
  });
@@ -199,9 +199,9 @@ describe('Select', () => {
199
199
  />,
200
200
  );
201
201
 
202
- openSelect(container);
202
+ await openSelect(container);
203
203
  const input = screen.getByPlaceholderText('Search...');
204
- userEvent.type(input, 'HUF');
204
+ await userEvent.type(input, 'HUF');
205
205
 
206
206
  expect(container.querySelector('.np-dropdown-item.np-dropdown-item--focused')).toStrictEqual(
207
207
  container.querySelector('.np-dropdown-item'),
@@ -224,9 +224,9 @@ describe('Select', () => {
224
224
  />,
225
225
  );
226
226
 
227
- openSelect(container);
227
+ await openSelect(container);
228
228
  const input = screen.getByPlaceholderText('Search...');
229
- userEvent.type(input, 'Tallinn');
229
+ await userEvent.type(input, 'Tallinn');
230
230
 
231
231
  expect(container.querySelector('.np-dropdown-item.np-dropdown-item--focused')).toStrictEqual(
232
232
  container.querySelector('.np-dropdown-item'),
@@ -239,9 +239,9 @@ describe('Select', () => {
239
239
  it('should filter the options with a custom search function', async () => {
240
240
  const searchFunction = jest.fn();
241
241
  const { container } = render(<Select {...props} search={searchFunction} />);
242
- openSelect(container);
242
+ await openSelect(container);
243
243
  const input = screen.getByPlaceholderText('Search...');
244
- userEvent.type(input, 'o');
244
+ await userEvent.type(input, 'o');
245
245
 
246
246
  expect(searchFunction).toHaveBeenCalledTimes(3);
247
247
  });
@@ -249,10 +249,10 @@ describe('Select', () => {
249
249
  it('should filter the options with a custom search function with 3 results', async () => {
250
250
  const searchFunction = (option, searchValue) => option.label.includes(searchValue);
251
251
  const { container } = render(<Select {...props} search={searchFunction} />);
252
- openSelect(container);
252
+ await openSelect(container);
253
253
 
254
254
  const input = screen.getByPlaceholderText('Search...');
255
- userEvent.type(input, 'o');
255
+ await userEvent.type(input, 'o');
256
256
 
257
257
  expect(screen.getByRole('listbox').children).toHaveLength(3);
258
258
  });
@@ -260,7 +260,7 @@ describe('Select', () => {
260
260
 
261
261
  it('show list of options in dropdown (Panel) on desktop', async () => {
262
262
  const { container } = render(<Select {...props} />);
263
- openSelect(container);
263
+ await openSelect(container);
264
264
 
265
265
  const drawer = document.querySelector('.np-panel');
266
266
  expect(drawer).toBeInTheDocument();
@@ -269,7 +269,7 @@ describe('Select', () => {
269
269
  it('show list of options in Bottom Sheet when on mobile', async () => {
270
270
  enableMobileScreen();
271
271
  const { container } = render(<Select {...props} />);
272
- openSelect(container);
272
+ await openSelect(container);
273
273
 
274
274
  const bottomSheet = await screen.findByRole('dialog');
275
275
 
@@ -279,7 +279,7 @@ describe('Select', () => {
279
279
  it('show list of options in Drawer when on mobile and search in enabled', async () => {
280
280
  enableMobileScreen();
281
281
  const { container } = render(<Select {...props} search />);
282
- openSelect(container);
282
+ await openSelect(container);
283
283
 
284
284
  await waitFor(() => {
285
285
  const drawer = document.querySelector('.np-drawer');
@@ -289,7 +289,7 @@ describe('Select', () => {
289
289
 
290
290
  it('focuses dropdown options when clicked', async () => {
291
291
  const { container } = render(<Select {...props} />);
292
- openSelect(container);
292
+ await openSelect(container);
293
293
 
294
294
  const dropdown = screen.getByRole('listbox');
295
295
  expect(dropdown).toHaveFocus();
@@ -299,7 +299,7 @@ describe('Select', () => {
299
299
  enableMobileScreen();
300
300
  const { container } = render(<Select {...props} onSearchChange={jest.fn()} />);
301
301
 
302
- openSelect(container);
302
+ await openSelect(container);
303
303
  const input = await screen.findByPlaceholderText('Search...');
304
304
 
305
305
  expect(input).not.toHaveFocus();
@@ -308,7 +308,7 @@ describe('Select', () => {
308
308
  it('on not touch device focuses on the search box once opened', async () => {
309
309
  const { container } = render(<Select {...props} search onSearchChange={jest.fn()} />);
310
310
 
311
- openSelect(container);
311
+ await openSelect(container);
312
312
  const input = screen.getByPlaceholderText('Search...');
313
313
 
314
314
  expect(input).toHaveFocus();
@@ -316,7 +316,7 @@ describe('Select', () => {
316
316
 
317
317
  it('renders controls with fallback id', async () => {
318
318
  const { container } = render(<Select {...props} />);
319
- openSelect(container);
319
+ await openSelect(container);
320
320
 
321
321
  const button = screen.getByRole('button');
322
322
  const options = screen.getByRole('listbox');
@@ -327,7 +327,7 @@ describe('Select', () => {
327
327
 
328
328
  it('renders controls with passed id', async () => {
329
329
  const { container } = render(<Select id="my-select-component" {...props} />);
330
- openSelect(container);
330
+ await openSelect(container);
331
331
 
332
332
  const button = screen.getByRole('button');
333
333
  const options = screen.getByRole('listbox');
@@ -338,7 +338,7 @@ describe('Select', () => {
338
338
 
339
339
  it('renders button with correct aria-controls attribute', async () => {
340
340
  const { container } = render(<Select {...props} search onSearchChange={jest.fn()} />);
341
- openSelect(container);
341
+ await openSelect(container);
342
342
 
343
343
  const button = screen.getByRole('button');
344
344
  const options = screen.getByRole('listbox');
@@ -353,11 +353,11 @@ describe('Select', () => {
353
353
  it('navigates to the next item', async () => {
354
354
  const { container } = render(<Select {...props} />);
355
355
 
356
- openSelect(container);
356
+ await openSelect(container);
357
357
 
358
358
  expect(screen.queryByRole('listbox')).toHaveFocus();
359
359
 
360
- userEvent.keyboard('[ArrowDown]');
360
+ await userEvent.keyboard('[ArrowDown]');
361
361
 
362
362
  await waitFor(() => {
363
363
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
@@ -372,17 +372,17 @@ describe('Select', () => {
372
372
  />,
373
373
  );
374
374
 
375
- openSelect(container);
375
+ await openSelect(container);
376
376
 
377
377
  expect(screen.queryByRole('listbox')).toHaveFocus();
378
378
 
379
- userEvent.keyboard('[ArrowDown]');
379
+ await userEvent.keyboard('[ArrowDown]');
380
380
 
381
381
  await waitFor(() => {
382
382
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
383
383
  });
384
384
 
385
- userEvent.keyboard('[ArrowDown]');
385
+ await userEvent.keyboard('[ArrowDown]');
386
386
 
387
387
  await waitFor(() => {
388
388
  expect(screen.queryByRole('option', { name: 'boi' })).toHaveFocus();
@@ -392,17 +392,17 @@ describe('Select', () => {
392
392
  it('cannot navigate past the first list item', async () => {
393
393
  const { container } = render(<Select {...props} />);
394
394
 
395
- openSelect(container);
395
+ await openSelect(container);
396
396
 
397
397
  expect(screen.queryByRole('listbox')).toHaveFocus();
398
398
 
399
- userEvent.keyboard('[ArrowUp]');
399
+ await userEvent.keyboard('[ArrowUp]');
400
400
 
401
401
  await waitFor(() => {
402
402
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
403
403
  });
404
404
 
405
- userEvent.keyboard('[ArrowUp]');
405
+ await userEvent.keyboard('[ArrowUp]');
406
406
 
407
407
  await waitFor(() => {
408
408
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
@@ -412,29 +412,29 @@ describe('Select', () => {
412
412
  it('cannot navigate past the last list item', async () => {
413
413
  const { container } = render(<Select {...props} />);
414
414
 
415
- openSelect(container);
415
+ await openSelect(container);
416
416
 
417
417
  expect(screen.queryByRole('listbox')).toHaveFocus();
418
418
 
419
- userEvent.keyboard('[ArrowDown]');
419
+ await userEvent.keyboard('[ArrowDown]');
420
420
 
421
421
  await waitFor(() => {
422
422
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
423
423
  });
424
424
 
425
- userEvent.keyboard('[ArrowDown]');
425
+ await userEvent.keyboard('[ArrowDown]');
426
426
 
427
427
  await waitFor(() => {
428
428
  expect(screen.queryByRole('option', { name: 'dawg' })).toHaveFocus();
429
429
  });
430
430
 
431
- userEvent.keyboard('[ArrowDown]');
431
+ await userEvent.keyboard('[ArrowDown]');
432
432
 
433
433
  await waitFor(() => {
434
434
  expect(screen.queryByRole('option', { name: 'boi' })).toHaveFocus();
435
435
  });
436
436
 
437
- userEvent.keyboard('[ArrowDown]');
437
+ await userEvent.keyboard('[ArrowDown]');
438
438
 
439
439
  await waitFor(() => {
440
440
  expect(screen.queryByRole('option', { name: 'boi' })).toHaveFocus();
@@ -445,11 +445,11 @@ describe('Select', () => {
445
445
  it('maintains focus on search but visually indicates which item is focused with keyboard navigation and selects it on enter', async () => {
446
446
  const { container } = render(<Select {...props} search />);
447
447
 
448
- openSelect(container);
448
+ await openSelect(container);
449
449
 
450
450
  expect(screen.queryByPlaceholderText('Search...')).toHaveFocus();
451
451
 
452
- userEvent.keyboard('[ArrowDown]');
452
+ await userEvent.keyboard('[ArrowDown]');
453
453
 
454
454
  await waitFor(() => {
455
455
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveClass(
@@ -460,7 +460,7 @@ describe('Select', () => {
460
460
 
461
461
  expect(screen.queryByPlaceholderText('Search...')).toHaveFocus();
462
462
 
463
- userEvent.keyboard('[ArrowDown]');
463
+ await userEvent.keyboard('[ArrowDown]');
464
464
 
465
465
  await waitFor(() => {
466
466
  expect(screen.queryByRole('option', { name: 'dawg' })).toHaveClass(
@@ -471,7 +471,7 @@ describe('Select', () => {
471
471
 
472
472
  expect(screen.queryByPlaceholderText('Search...')).toHaveFocus();
473
473
 
474
- userEvent.keyboard('[Enter]');
474
+ await userEvent.keyboard('[Enter]');
475
475
 
476
476
  expect(props.onChange).toHaveBeenCalledWith({ label: 'dawg', value: 1 });
477
477
  });
@@ -486,11 +486,11 @@ describe('Select', () => {
486
486
  it('navigates to the next item', async () => {
487
487
  const { container } = render(<Select {...props} />);
488
488
 
489
- openSelect(container);
489
+ await openSelect(container);
490
490
 
491
491
  await expect(screen.findByRole('dialog')).resolves.toBeInTheDocument();
492
492
 
493
- userEvent.keyboard('[ArrowDown]');
493
+ await userEvent.keyboard('[ArrowDown]');
494
494
 
495
495
  await waitFor(() => {
496
496
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
@@ -505,17 +505,17 @@ describe('Select', () => {
505
505
  />,
506
506
  );
507
507
 
508
- openSelect(container);
508
+ await openSelect(container);
509
509
 
510
510
  await expect(screen.findByRole('dialog')).resolves.toBeInTheDocument();
511
511
 
512
- userEvent.keyboard('[ArrowDown]');
512
+ await userEvent.keyboard('[ArrowDown]');
513
513
 
514
514
  await waitFor(() => {
515
515
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
516
516
  });
517
517
 
518
- userEvent.keyboard('[ArrowDown]');
518
+ await userEvent.keyboard('[ArrowDown]');
519
519
 
520
520
  await waitFor(() => {
521
521
  expect(screen.queryByRole('option', { name: 'boi' })).toHaveFocus();
@@ -525,17 +525,17 @@ describe('Select', () => {
525
525
  it('cannot navigate past the first list item', async () => {
526
526
  const { container } = render(<Select {...props} />);
527
527
 
528
- openSelect(container);
528
+ await openSelect(container);
529
529
 
530
530
  await expect(screen.findByRole('dialog')).resolves.toBeInTheDocument();
531
531
 
532
- userEvent.keyboard('[ArrowUp]');
532
+ await userEvent.keyboard('[ArrowUp]');
533
533
 
534
534
  await waitFor(() => {
535
535
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
536
536
  });
537
537
 
538
- userEvent.keyboard('[ArrowUp]');
538
+ await userEvent.keyboard('[ArrowUp]');
539
539
 
540
540
  await waitFor(() => {
541
541
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
@@ -545,29 +545,29 @@ describe('Select', () => {
545
545
  it('cannot navigate past the last list item', async () => {
546
546
  const { container } = render(<Select {...props} />);
547
547
 
548
- openSelect(container);
548
+ await openSelect(container);
549
549
 
550
550
  await expect(screen.findByRole('dialog')).resolves.toBeInTheDocument();
551
551
 
552
- userEvent.keyboard('[ArrowDown]');
552
+ await userEvent.keyboard('[ArrowDown]');
553
553
 
554
554
  await waitFor(() => {
555
555
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveFocus();
556
556
  });
557
557
 
558
- userEvent.keyboard('[ArrowDown]');
558
+ await userEvent.keyboard('[ArrowDown]');
559
559
 
560
560
  await waitFor(() => {
561
561
  expect(screen.queryByRole('option', { name: 'dawg' })).toHaveFocus();
562
562
  });
563
563
 
564
- userEvent.keyboard('[ArrowDown]');
564
+ await userEvent.keyboard('[ArrowDown]');
565
565
 
566
566
  await waitFor(() => {
567
567
  expect(screen.queryByRole('option', { name: 'boi' })).toHaveFocus();
568
568
  });
569
569
 
570
- userEvent.keyboard('[ArrowDown]');
570
+ await userEvent.keyboard('[ArrowDown]');
571
571
 
572
572
  await waitFor(() => {
573
573
  expect(screen.queryByRole('option', { name: 'boi' })).toHaveFocus();
@@ -582,13 +582,13 @@ describe('Select', () => {
582
582
  it('visually indicates which item is focused with keyboard navigation and selects it on enter', async () => {
583
583
  const { container } = render(<Select {...props} search />);
584
584
 
585
- openSelect(container);
585
+ await openSelect(container);
586
586
 
587
587
  await waitFor(() => {
588
588
  expect(screen.queryByPlaceholderText('Search...')).not.toHaveFocus();
589
589
  });
590
590
 
591
- userEvent.keyboard('[ArrowDown]');
591
+ await userEvent.keyboard('[ArrowDown]');
592
592
 
593
593
  await waitFor(() => {
594
594
  expect(screen.queryByRole('option', { name: 'yo' })).toHaveClass(
@@ -599,7 +599,7 @@ describe('Select', () => {
599
599
 
600
600
  expect(screen.queryByPlaceholderText('Search...')).not.toHaveFocus();
601
601
 
602
- userEvent.keyboard('[ArrowDown]');
602
+ await userEvent.keyboard('[ArrowDown]');
603
603
 
604
604
  await waitFor(() => {
605
605
  expect(screen.queryByRole('option', { name: 'dawg' })).toHaveClass(
@@ -610,7 +610,7 @@ describe('Select', () => {
610
610
 
611
611
  expect(screen.queryByPlaceholderText('Search...')).not.toHaveFocus();
612
612
 
613
- userEvent.keyboard('[Enter]');
613
+ await userEvent.keyboard('[Enter]');
614
614
 
615
615
  expect(props.onChange).toHaveBeenCalledWith({ label: 'dawg', value: 1 });
616
616
  });
@@ -1,5 +1,5 @@
1
1
  import { render, renderHook } from '@testing-library/react';
2
- import userEvent from '@testing-library/user-event';
2
+ import { userEvent } from '@testing-library/user-event';
3
3
 
4
4
  import { Provider } from '..';
5
5
  import { DEFAULT_LOCALE } from '../common/locale';
@@ -1,3 +1,5 @@
1
+ require('@testing-library/jest-dom');
2
+
1
3
  const { default: Adapter } = require('@cfaester/enzyme-adapter-react-18');
2
4
  const Enzyme = require('enzyme');
3
5
  const util = require('node:util');
@@ -1,6 +1,5 @@
1
1
  import { render, screen } from '@testing-library/react';
2
- import userEvent from '@testing-library/user-event';
3
- import React from 'react';
2
+ import { userEvent } from '@testing-library/user-event';
4
3
 
5
4
  import Tooltip from '.';
6
5
 
@@ -26,7 +25,7 @@ describe('Tooltip Component', () => {
26
25
  expect(tooltip).toHaveAttribute('aria-hidden', 'true');
27
26
  });
28
27
 
29
- it('should render the tooltip label when closed', () => {
28
+ it('should render the tooltip label when closed', async () => {
30
29
  render(
31
30
  <Tooltip label="Test Tooltip">
32
31
  <span>Hover me</span>
@@ -36,11 +35,11 @@ describe('Tooltip Component', () => {
36
35
  const tooltip = screen.getByRole('tooltip', { hidden: true });
37
36
  expect(tooltip).toHaveAttribute('aria-hidden', 'true');
38
37
 
39
- userEvent.hover(triggerElement);
38
+ await userEvent.hover(triggerElement);
40
39
  expect(tooltip).toHaveAttribute('aria-hidden', 'false');
41
40
  });
42
41
 
43
- it('should display the tooltip on mouse hover', () => {
42
+ it('should display the tooltip on mouse hover', async () => {
44
43
  render(
45
44
  <Tooltip label="Test Tooltip">
46
45
  <span>Hover over me!</span>
@@ -48,13 +47,13 @@ describe('Tooltip Component', () => {
48
47
  );
49
48
  const triggerElement = screen.getByText('Hover over me!');
50
49
 
51
- userEvent.hover(triggerElement);
50
+ await userEvent.hover(triggerElement);
52
51
 
53
52
  const tooltipElement = screen.queryByText('Test Tooltip');
54
53
  expect(tooltipElement).toBeVisible();
55
54
  });
56
55
 
57
- it('should hide the tooltip on mouse out', () => {
56
+ it('should hide the tooltip on mouse out', async () => {
58
57
  render(
59
58
  <Tooltip label="Test Tooltip">
60
59
  <span>Hover me</span>
@@ -62,16 +61,16 @@ describe('Tooltip Component', () => {
62
61
  );
63
62
  const triggerElement = screen.getByText('Hover me');
64
63
 
65
- userEvent.hover(triggerElement);
64
+ await userEvent.hover(triggerElement);
66
65
  let tooltipElement = screen.getByText('Test Tooltip');
67
66
  expect(tooltipElement).toBeVisible();
68
67
 
69
- userEvent.unhover(triggerElement);
68
+ await userEvent.unhover(triggerElement);
70
69
  tooltipElement = screen.getByRole('tooltip', { hidden: true });
71
70
  expect(tooltipElement).toHaveAttribute('aria-hidden', 'true');
72
71
  });
73
72
 
74
- it('should display the tooltip on focus', () => {
73
+ it('should display the tooltip on focus', async () => {
75
74
  render(
76
75
  <Tooltip label="Test Tooltip">
77
76
  <span>Focus me</span>
@@ -79,12 +78,12 @@ describe('Tooltip Component', () => {
79
78
  );
80
79
  const triggerElement = screen.getByText('Focus me');
81
80
 
82
- userEvent.tab();
81
+ await userEvent.tab();
83
82
  const tooltipElement = screen.getByText('Test Tooltip');
84
83
  expect(tooltipElement).toBeVisible();
85
84
  });
86
85
 
87
- it('should hide the tooltip on blur', () => {
86
+ it('should hide the tooltip on blur', async () => {
88
87
  render(
89
88
  <Tooltip label="Test Tooltip">
90
89
  <span>Focus me</span>
@@ -92,16 +91,16 @@ describe('Tooltip Component', () => {
92
91
  );
93
92
  const triggerElement = screen.getByText('Focus me');
94
93
 
95
- userEvent.tab();
94
+ await userEvent.tab();
96
95
  let tooltipElement = screen.getByRole('tooltip', { hidden: true });
97
96
  expect(tooltipElement).toBeVisible();
98
97
 
99
- userEvent.tab({ shift: true }); // Blur the element
98
+ await userEvent.tab({ shift: true }); // Blur the element
100
99
  tooltipElement = screen.getByRole('tooltip', { hidden: true });
101
100
  expect(tooltipElement).toHaveAttribute('aria-hidden', 'true');
102
101
  });
103
102
 
104
- it('should display the tooltip when the "children" prop is a React element', () => {
103
+ it('should display the tooltip when the "children" prop is a React element', async () => {
105
104
  render(
106
105
  <Tooltip label="Test Tooltip">
107
106
  <button type="button">Click me</button>
@@ -109,7 +108,7 @@ describe('Tooltip Component', () => {
109
108
  );
110
109
  const triggerElement = screen.getByText('Click me');
111
110
 
112
- userEvent.hover(triggerElement);
111
+ await userEvent.hover(triggerElement);
113
112
  const tooltipElement = screen.getByRole('tooltip', { hidden: true });
114
113
  expect(tooltipElement).toBeVisible();
115
114
  });
@@ -3,7 +3,7 @@ import { act } from 'react';
3
3
 
4
4
  import { ANIMATION_DURATION_IN_MS } from '../processIndicator';
5
5
 
6
- import { CompleteStep, UploadImageStep, MediaUploadStep, ProcessingStep } from './steps';
6
+ import { CompleteStep, UploadImageStep, ProcessingStep } from './steps';
7
7
 
8
8
  import Upload from '.';
9
9
 
@@ -56,7 +56,7 @@ const UPLOADIMAGE_STEP_PROPS = {
56
56
  usAccept: props.usAccept,
57
57
  usButtonText: props.usButtonText,
58
58
  usDisabled: false,
59
- usHelpImage: '',
59
+ usHelpImage: undefined,
60
60
  usLabel: '',
61
61
  usPlaceholder: props.usPlaceholder,
62
62
  };
@@ -105,17 +105,6 @@ describe('Upload', () => {
105
105
 
106
106
  it('renders the UploadImageStep by default', () => {
107
107
  expect(component.find(UploadImageStep)).toHaveLength(1);
108
- expect(component.find(MediaUploadStep)).toHaveLength(0);
109
- expect(component.find(ProcessingStep)).toHaveLength(0);
110
- expect(component.find(CompleteStep)).toHaveLength(0);
111
- expect(component.find('.droppable-dropping-card')).toHaveLength(1);
112
- });
113
-
114
- it(`renders the MediaUploadStep by default is it's the uploadStep in props`, () => {
115
- component.setProps({ uploadStep: 'mediaUploadStep' });
116
-
117
- expect(component.find(MediaUploadStep)).toHaveLength(1);
118
- expect(component.find(UploadImageStep)).toHaveLength(0);
119
108
  expect(component.find(ProcessingStep)).toHaveLength(0);
120
109
  expect(component.find(CompleteStep)).toHaveLength(0);
121
110
  expect(component.find('.droppable-dropping-card')).toHaveLength(1);
@@ -260,7 +249,7 @@ describe('Upload', () => {
260
249
  isImage: false,
261
250
  isComplete: true,
262
251
  isError: true,
263
- uploadedImage: null,
252
+ uploadedImage: undefined,
264
253
  });
265
254
  });
266
255