@furystack/shades-common-components 12.4.0 → 12.6.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 (297) hide show
  1. package/CHANGELOG.md +119 -0
  2. package/esm/components/app-bar-link.spec.js +16 -19
  3. package/esm/components/app-bar-link.spec.js.map +1 -1
  4. package/esm/components/app-bar.spec.js +6 -4
  5. package/esm/components/app-bar.spec.js.map +1 -1
  6. package/esm/components/avatar.spec.js +9 -9
  7. package/esm/components/avatar.spec.js.map +1 -1
  8. package/esm/components/breadcrumb.spec.js +2 -2
  9. package/esm/components/breadcrumb.spec.js.map +1 -1
  10. package/esm/components/button-group.d.ts +32 -0
  11. package/esm/components/button-group.d.ts.map +1 -1
  12. package/esm/components/button-group.js +26 -2
  13. package/esm/components/button-group.js.map +1 -1
  14. package/esm/components/button-group.spec.js +127 -11
  15. package/esm/components/button-group.spec.js.map +1 -1
  16. package/esm/components/button.spec.js +4 -4
  17. package/esm/components/button.spec.js.map +1 -1
  18. package/esm/components/cache-view.spec.js +2 -3
  19. package/esm/components/cache-view.spec.js.map +1 -1
  20. package/esm/components/carousel.spec.js +47 -47
  21. package/esm/components/carousel.spec.js.map +1 -1
  22. package/esm/components/circular-progress.spec.js +2 -2
  23. package/esm/components/command-palette/command-palette-input.spec.js +23 -19
  24. package/esm/components/command-palette/command-palette-input.spec.js.map +1 -1
  25. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +27 -27
  26. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
  27. package/esm/components/command-palette/index.spec.js +64 -51
  28. package/esm/components/command-palette/index.spec.js.map +1 -1
  29. package/esm/components/context-menu/context-menu.spec.js +33 -33
  30. package/esm/components/context-menu/context-menu.spec.js.map +1 -1
  31. package/esm/components/data-grid/body.spec.js +13 -13
  32. package/esm/components/data-grid/body.spec.js.map +1 -1
  33. package/esm/components/data-grid/data-grid-row.spec.js +8 -8
  34. package/esm/components/data-grid/data-grid-row.spec.js.map +1 -1
  35. package/esm/components/data-grid/data-grid.d.ts +47 -3
  36. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  37. package/esm/components/data-grid/data-grid.js +8 -11
  38. package/esm/components/data-grid/data-grid.js.map +1 -1
  39. package/esm/components/data-grid/data-grid.spec.js +71 -28
  40. package/esm/components/data-grid/data-grid.spec.js.map +1 -1
  41. package/esm/components/data-grid/filters/boolean-filter.d.ts +12 -0
  42. package/esm/components/data-grid/filters/boolean-filter.d.ts.map +1 -0
  43. package/esm/components/data-grid/filters/boolean-filter.js +27 -0
  44. package/esm/components/data-grid/filters/boolean-filter.js.map +1 -0
  45. package/esm/components/data-grid/filters/boolean-filter.spec.d.ts +2 -0
  46. package/esm/components/data-grid/filters/boolean-filter.spec.d.ts.map +1 -0
  47. package/esm/components/data-grid/filters/boolean-filter.spec.js +114 -0
  48. package/esm/components/data-grid/filters/boolean-filter.spec.js.map +1 -0
  49. package/esm/components/data-grid/filters/date-filter.d.ts +12 -0
  50. package/esm/components/data-grid/filters/date-filter.d.ts.map +1 -0
  51. package/esm/components/data-grid/filters/date-filter.js +109 -0
  52. package/esm/components/data-grid/filters/date-filter.js.map +1 -0
  53. package/esm/components/data-grid/filters/date-filter.spec.d.ts +2 -0
  54. package/esm/components/data-grid/filters/date-filter.spec.d.ts.map +1 -0
  55. package/esm/components/data-grid/filters/date-filter.spec.js +145 -0
  56. package/esm/components/data-grid/filters/date-filter.spec.js.map +1 -0
  57. package/esm/components/data-grid/filters/enum-filter.d.ts +16 -0
  58. package/esm/components/data-grid/filters/enum-filter.d.ts.map +1 -0
  59. package/esm/components/data-grid/filters/enum-filter.js +72 -0
  60. package/esm/components/data-grid/filters/enum-filter.js.map +1 -0
  61. package/esm/components/data-grid/filters/enum-filter.spec.d.ts +2 -0
  62. package/esm/components/data-grid/filters/enum-filter.spec.d.ts.map +1 -0
  63. package/esm/components/data-grid/filters/enum-filter.spec.js +136 -0
  64. package/esm/components/data-grid/filters/enum-filter.spec.js.map +1 -0
  65. package/esm/components/data-grid/filters/filter-dropdown.d.ts +6 -0
  66. package/esm/components/data-grid/filters/filter-dropdown.d.ts.map +1 -0
  67. package/esm/components/data-grid/filters/filter-dropdown.js +41 -0
  68. package/esm/components/data-grid/filters/filter-dropdown.js.map +1 -0
  69. package/esm/components/data-grid/filters/filter-dropdown.spec.d.ts +2 -0
  70. package/esm/components/data-grid/filters/filter-dropdown.spec.d.ts.map +1 -0
  71. package/esm/components/data-grid/filters/filter-dropdown.spec.js +69 -0
  72. package/esm/components/data-grid/filters/filter-dropdown.spec.js.map +1 -0
  73. package/esm/components/data-grid/filters/filter-styles.d.ts +24 -0
  74. package/esm/components/data-grid/filters/filter-styles.d.ts.map +1 -0
  75. package/esm/components/data-grid/filters/filter-styles.js +25 -0
  76. package/esm/components/data-grid/filters/filter-styles.js.map +1 -0
  77. package/esm/components/data-grid/filters/index.d.ts +7 -0
  78. package/esm/components/data-grid/filters/index.d.ts.map +1 -0
  79. package/esm/components/data-grid/filters/index.js +7 -0
  80. package/esm/components/data-grid/filters/index.js.map +1 -0
  81. package/esm/components/data-grid/filters/number-filter.d.ts +12 -0
  82. package/esm/components/data-grid/filters/number-filter.d.ts.map +1 -0
  83. package/esm/components/data-grid/filters/number-filter.js +65 -0
  84. package/esm/components/data-grid/filters/number-filter.js.map +1 -0
  85. package/esm/components/data-grid/filters/number-filter.spec.d.ts +2 -0
  86. package/esm/components/data-grid/filters/number-filter.spec.d.ts.map +1 -0
  87. package/esm/components/data-grid/filters/number-filter.spec.js +142 -0
  88. package/esm/components/data-grid/filters/number-filter.spec.js.map +1 -0
  89. package/esm/components/data-grid/filters/string-filter.d.ts +12 -0
  90. package/esm/components/data-grid/filters/string-filter.d.ts.map +1 -0
  91. package/esm/components/data-grid/filters/string-filter.js +63 -0
  92. package/esm/components/data-grid/filters/string-filter.js.map +1 -0
  93. package/esm/components/data-grid/filters/string-filter.spec.d.ts +2 -0
  94. package/esm/components/data-grid/filters/string-filter.spec.d.ts.map +1 -0
  95. package/esm/components/data-grid/filters/string-filter.spec.js +128 -0
  96. package/esm/components/data-grid/filters/string-filter.spec.js.map +1 -0
  97. package/esm/components/data-grid/footer.d.ts +1 -0
  98. package/esm/components/data-grid/footer.d.ts.map +1 -1
  99. package/esm/components/data-grid/footer.js +24 -16
  100. package/esm/components/data-grid/footer.js.map +1 -1
  101. package/esm/components/data-grid/footer.spec.js +111 -71
  102. package/esm/components/data-grid/footer.spec.js.map +1 -1
  103. package/esm/components/data-grid/header.d.ts +6 -9
  104. package/esm/components/data-grid/header.d.ts.map +1 -1
  105. package/esm/components/data-grid/header.js +51 -117
  106. package/esm/components/data-grid/header.js.map +1 -1
  107. package/esm/components/data-grid/header.spec.js +116 -187
  108. package/esm/components/data-grid/header.spec.js.map +1 -1
  109. package/esm/components/data-grid/index.d.ts +1 -0
  110. package/esm/components/data-grid/index.d.ts.map +1 -1
  111. package/esm/components/data-grid/index.js +1 -0
  112. package/esm/components/data-grid/index.js.map +1 -1
  113. package/esm/components/data-grid/selection-cell.spec.js +8 -8
  114. package/esm/components/data-grid/selection-cell.spec.js.map +1 -1
  115. package/esm/components/drawer/drawer-toggle-button.spec.js +22 -22
  116. package/esm/components/drawer/drawer-toggle-button.spec.js.map +1 -1
  117. package/esm/components/drawer/index.spec.js +36 -36
  118. package/esm/components/drawer/index.spec.js.map +1 -1
  119. package/esm/components/dropdown.spec.js +38 -30
  120. package/esm/components/dropdown.spec.js.map +1 -1
  121. package/esm/components/fab.spec.js +4 -4
  122. package/esm/components/fab.spec.js.map +1 -1
  123. package/esm/components/form.spec.js +37 -37
  124. package/esm/components/form.spec.js.map +1 -1
  125. package/esm/components/grid.d.ts +3 -0
  126. package/esm/components/grid.d.ts.map +1 -1
  127. package/esm/components/grid.js +3 -0
  128. package/esm/components/grid.js.map +1 -1
  129. package/esm/components/grid.spec.js +3 -3
  130. package/esm/components/grid.spec.js.map +1 -1
  131. package/esm/components/image.spec.js +55 -52
  132. package/esm/components/image.spec.js.map +1 -1
  133. package/esm/components/inputs/autocomplete.d.ts +3 -0
  134. package/esm/components/inputs/autocomplete.d.ts.map +1 -1
  135. package/esm/components/inputs/autocomplete.js +3 -0
  136. package/esm/components/inputs/autocomplete.js.map +1 -1
  137. package/esm/components/inputs/autocomplete.spec.js +7 -14
  138. package/esm/components/inputs/autocomplete.spec.js.map +1 -1
  139. package/esm/components/inputs/checkbox.spec.js +22 -22
  140. package/esm/components/inputs/checkbox.spec.js.map +1 -1
  141. package/esm/components/inputs/input-number.spec.js +47 -47
  142. package/esm/components/inputs/input-number.spec.js.map +1 -1
  143. package/esm/components/inputs/input.spec.js +53 -53
  144. package/esm/components/inputs/input.spec.js.map +1 -1
  145. package/esm/components/inputs/radio-group.spec.js +14 -14
  146. package/esm/components/inputs/radio-group.spec.js.map +1 -1
  147. package/esm/components/inputs/radio.spec.js +16 -16
  148. package/esm/components/inputs/radio.spec.js.map +1 -1
  149. package/esm/components/inputs/select.spec.js +74 -74
  150. package/esm/components/inputs/select.spec.js.map +1 -1
  151. package/esm/components/inputs/slider.spec.js +16 -16
  152. package/esm/components/inputs/slider.spec.js.map +1 -1
  153. package/esm/components/inputs/switch.spec.js +24 -24
  154. package/esm/components/inputs/switch.spec.js.map +1 -1
  155. package/esm/components/inputs/text-area.spec.js +17 -17
  156. package/esm/components/inputs/text-area.spec.js.map +1 -1
  157. package/esm/components/linear-progress.spec.js +2 -2
  158. package/esm/components/list/list.d.ts +10 -0
  159. package/esm/components/list/list.d.ts.map +1 -1
  160. package/esm/components/list/list.js +23 -2
  161. package/esm/components/list/list.js.map +1 -1
  162. package/esm/components/list/list.spec.js +137 -36
  163. package/esm/components/list/list.spec.js.map +1 -1
  164. package/esm/components/markdown/markdown-display.spec.js +15 -15
  165. package/esm/components/markdown/markdown-display.spec.js.map +1 -1
  166. package/esm/components/markdown/markdown-editor.spec.js +8 -8
  167. package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
  168. package/esm/components/markdown/markdown-input.d.ts +14 -0
  169. package/esm/components/markdown/markdown-input.d.ts.map +1 -1
  170. package/esm/components/markdown/markdown-input.js +48 -2
  171. package/esm/components/markdown/markdown-input.js.map +1 -1
  172. package/esm/components/markdown/markdown-input.spec.js +114 -17
  173. package/esm/components/markdown/markdown-input.spec.js.map +1 -1
  174. package/esm/components/menu/menu.spec.js +28 -28
  175. package/esm/components/menu/menu.spec.js.map +1 -1
  176. package/esm/components/modal.spec.js +15 -18
  177. package/esm/components/modal.spec.js.map +1 -1
  178. package/esm/components/noty-list.spec.js +25 -23
  179. package/esm/components/noty-list.spec.js.map +1 -1
  180. package/esm/components/page-container/index.spec.js +16 -16
  181. package/esm/components/page-container/index.spec.js.map +1 -1
  182. package/esm/components/page-container/page-header.spec.js +16 -16
  183. package/esm/components/page-container/page-header.spec.js.map +1 -1
  184. package/esm/components/page-layout/index.spec.js +29 -29
  185. package/esm/components/page-layout/index.spec.js.map +1 -1
  186. package/esm/components/paper.spec.js +3 -3
  187. package/esm/components/paper.spec.js.map +1 -1
  188. package/esm/components/rating.spec.js +61 -61
  189. package/esm/components/rating.spec.js.map +1 -1
  190. package/esm/components/skeleton.spec.js +10 -6
  191. package/esm/components/skeleton.spec.js.map +1 -1
  192. package/esm/components/suggest/index.d.ts +10 -2
  193. package/esm/components/suggest/index.d.ts.map +1 -1
  194. package/esm/components/suggest/index.js +21 -1
  195. package/esm/components/suggest/index.js.map +1 -1
  196. package/esm/components/suggest/index.spec.js +50 -0
  197. package/esm/components/suggest/index.spec.js.map +1 -1
  198. package/esm/components/suggest/suggest-input.spec.js +4 -10
  199. package/esm/components/suggest/suggest-input.spec.js.map +1 -1
  200. package/esm/components/tabs.spec.js +30 -30
  201. package/esm/components/tabs.spec.js.map +1 -1
  202. package/esm/components/tree/tree.spec.js +27 -27
  203. package/esm/components/tree/tree.spec.js.map +1 -1
  204. package/esm/components/typography.spec.js +3 -3
  205. package/esm/components/typography.spec.js.map +1 -1
  206. package/esm/components/wizard/index.d.ts +8 -0
  207. package/esm/components/wizard/index.d.ts.map +1 -1
  208. package/esm/components/wizard/index.js +90 -0
  209. package/esm/components/wizard/index.js.map +1 -1
  210. package/esm/components/wizard/index.spec.js +84 -7
  211. package/esm/components/wizard/index.spec.js.map +1 -1
  212. package/esm/utils/promisify-animation.d.ts.map +1 -1
  213. package/esm/utils/promisify-animation.js +3 -0
  214. package/esm/utils/promisify-animation.js.map +1 -1
  215. package/package.json +3 -3
  216. package/src/components/app-bar-link.spec.tsx +16 -19
  217. package/src/components/app-bar.spec.tsx +6 -4
  218. package/src/components/avatar.spec.tsx +9 -9
  219. package/src/components/breadcrumb.spec.tsx +2 -2
  220. package/src/components/button-group.spec.tsx +155 -11
  221. package/src/components/button-group.tsx +49 -2
  222. package/src/components/button.spec.tsx +4 -4
  223. package/src/components/cache-view.spec.tsx +3 -3
  224. package/src/components/carousel.spec.tsx +47 -47
  225. package/src/components/circular-progress.spec.tsx +2 -2
  226. package/src/components/command-palette/command-palette-input.spec.tsx +23 -19
  227. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +27 -27
  228. package/src/components/command-palette/index.spec.tsx +64 -51
  229. package/src/components/context-menu/context-menu.spec.tsx +33 -33
  230. package/src/components/data-grid/body.spec.tsx +13 -13
  231. package/src/components/data-grid/data-grid-row.spec.tsx +8 -8
  232. package/src/components/data-grid/data-grid.spec.tsx +106 -28
  233. package/src/components/data-grid/data-grid.tsx +57 -13
  234. package/src/components/data-grid/filters/boolean-filter.spec.tsx +142 -0
  235. package/src/components/data-grid/filters/boolean-filter.tsx +45 -0
  236. package/src/components/data-grid/filters/date-filter.spec.tsx +181 -0
  237. package/src/components/data-grid/filters/date-filter.tsx +162 -0
  238. package/src/components/data-grid/filters/enum-filter.spec.tsx +168 -0
  239. package/src/components/data-grid/filters/enum-filter.tsx +119 -0
  240. package/src/components/data-grid/filters/filter-dropdown.spec.tsx +89 -0
  241. package/src/components/data-grid/filters/filter-dropdown.tsx +60 -0
  242. package/src/components/data-grid/filters/filter-styles.ts +26 -0
  243. package/src/components/data-grid/filters/index.ts +6 -0
  244. package/src/components/data-grid/filters/number-filter.spec.tsx +174 -0
  245. package/src/components/data-grid/filters/number-filter.tsx +115 -0
  246. package/src/components/data-grid/filters/string-filter.spec.tsx +157 -0
  247. package/src/components/data-grid/filters/string-filter.tsx +112 -0
  248. package/src/components/data-grid/footer.spec.tsx +130 -74
  249. package/src/components/data-grid/footer.tsx +41 -34
  250. package/src/components/data-grid/header.spec.tsx +128 -212
  251. package/src/components/data-grid/header.tsx +95 -183
  252. package/src/components/data-grid/index.tsx +1 -0
  253. package/src/components/data-grid/selection-cell.spec.tsx +8 -8
  254. package/src/components/drawer/drawer-toggle-button.spec.tsx +22 -22
  255. package/src/components/drawer/index.spec.tsx +36 -36
  256. package/src/components/dropdown.spec.tsx +38 -30
  257. package/src/components/fab.spec.tsx +4 -4
  258. package/src/components/form.spec.tsx +37 -37
  259. package/src/components/grid.spec.tsx +3 -3
  260. package/src/components/grid.tsx +3 -0
  261. package/src/components/image.spec.tsx +55 -52
  262. package/src/components/inputs/autocomplete.spec.tsx +7 -14
  263. package/src/components/inputs/autocomplete.tsx +3 -0
  264. package/src/components/inputs/checkbox.spec.tsx +22 -22
  265. package/src/components/inputs/input-number.spec.tsx +47 -47
  266. package/src/components/inputs/input.spec.tsx +53 -53
  267. package/src/components/inputs/radio-group.spec.tsx +14 -14
  268. package/src/components/inputs/radio.spec.tsx +16 -16
  269. package/src/components/inputs/select.spec.tsx +74 -74
  270. package/src/components/inputs/slider.spec.tsx +16 -16
  271. package/src/components/inputs/switch.spec.tsx +24 -24
  272. package/src/components/inputs/text-area.spec.tsx +17 -17
  273. package/src/components/linear-progress.spec.tsx +2 -2
  274. package/src/components/list/list.spec.tsx +209 -36
  275. package/src/components/list/list.tsx +56 -19
  276. package/src/components/markdown/markdown-display.spec.tsx +15 -15
  277. package/src/components/markdown/markdown-editor.spec.tsx +8 -8
  278. package/src/components/markdown/markdown-input.spec.tsx +159 -17
  279. package/src/components/markdown/markdown-input.tsx +65 -1
  280. package/src/components/menu/menu.spec.tsx +28 -28
  281. package/src/components/modal.spec.tsx +15 -18
  282. package/src/components/noty-list.spec.tsx +25 -23
  283. package/src/components/page-container/index.spec.tsx +16 -16
  284. package/src/components/page-container/page-header.spec.tsx +16 -16
  285. package/src/components/page-layout/index.spec.tsx +29 -29
  286. package/src/components/paper.spec.tsx +3 -3
  287. package/src/components/rating.spec.tsx +61 -61
  288. package/src/components/skeleton.spec.tsx +10 -6
  289. package/src/components/suggest/index.spec.tsx +83 -0
  290. package/src/components/suggest/index.tsx +36 -3
  291. package/src/components/suggest/suggest-input.spec.tsx +4 -10
  292. package/src/components/tabs.spec.tsx +30 -30
  293. package/src/components/tree/tree.spec.tsx +27 -27
  294. package/src/components/typography.spec.tsx +3 -3
  295. package/src/components/wizard/index.spec.tsx +123 -6
  296. package/src/components/wizard/index.tsx +125 -0
  297. package/src/utils/promisify-animation.ts +3 -0
@@ -1,6 +1,6 @@
1
1
  import { Injector } from '@furystack/inject'
2
- import { createComponent, initializeShadeRoot } from '@furystack/shades'
3
- import { sleepAsync, usingAsync } from '@furystack/utils'
2
+ import { createComponent, flushUpdates, initializeShadeRoot } from '@furystack/shades'
3
+ import { usingAsync } from '@furystack/utils'
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
5
5
  import type { SelectOption, SelectOptionGroup, SelectProps, SelectState } from './select.js'
6
6
  import { Select } from './select.js'
@@ -29,7 +29,7 @@ describe('Select', () => {
29
29
  rootElement: root,
30
30
  jsxElement: <Select {...props} />,
31
31
  })
32
- await sleepAsync(100)
32
+ await flushUpdates()
33
33
  return {
34
34
  injector,
35
35
  select: document.querySelector('shade-select') as HTMLElement,
@@ -315,7 +315,7 @@ describe('Select', () => {
315
315
  await usingAsync(await renderSelect({ options: defaultOptions, disabled: true }), async ({ select }) => {
316
316
  const trigger = select.querySelector('.select-trigger') as HTMLElement
317
317
  trigger.click()
318
- await sleepAsync(50)
318
+ await flushUpdates()
319
319
  expect(select.hasAttribute('data-open')).toBe(false)
320
320
  })
321
321
  })
@@ -326,7 +326,7 @@ describe('Select', () => {
326
326
  await usingAsync(await renderSelect(), async ({ select }) => {
327
327
  const trigger = select.querySelector('.select-trigger') as HTMLElement
328
328
  trigger.click()
329
- await sleepAsync(50)
329
+ await flushUpdates()
330
330
  expect(select.hasAttribute('data-open')).toBe(true)
331
331
  const dropdown = select.querySelector('.dropdown')
332
332
  expect(dropdown).not.toBeNull()
@@ -337,7 +337,7 @@ describe('Select', () => {
337
337
  await usingAsync(await renderSelect(), async ({ select }) => {
338
338
  const trigger = select.querySelector('.select-trigger') as HTMLElement
339
339
  trigger.click()
340
- await sleepAsync(50)
340
+ await flushUpdates()
341
341
  const items = select.querySelectorAll('.dropdown-item')
342
342
  expect(items.length).toBe(3)
343
343
  })
@@ -347,12 +347,12 @@ describe('Select', () => {
347
347
  await usingAsync(await renderSelect(), async ({ select }) => {
348
348
  const trigger = select.querySelector('.select-trigger') as HTMLElement
349
349
  trigger.click()
350
- await sleepAsync(50)
350
+ await flushUpdates()
351
351
  expect(select.hasAttribute('data-open')).toBe(true)
352
352
 
353
353
  const backdrop = select.querySelector('.dropdown-backdrop') as HTMLElement
354
354
  backdrop.click()
355
- await sleepAsync(50)
355
+ await flushUpdates()
356
356
  expect(select.hasAttribute('data-open')).toBe(false)
357
357
  })
358
358
  })
@@ -361,13 +361,13 @@ describe('Select', () => {
361
361
  await usingAsync(await renderSelect(), async ({ select }) => {
362
362
  const trigger = select.querySelector('.select-trigger') as HTMLElement
363
363
  trigger.click()
364
- await sleepAsync(50)
364
+ await flushUpdates()
365
365
  expect(select.hasAttribute('data-open')).toBe(true)
366
366
 
367
367
  // Re-query after re-render
368
368
  const trigger2 = select.querySelector('.select-trigger') as HTMLElement
369
369
  trigger2.click()
370
- await sleepAsync(50)
370
+ await flushUpdates()
371
371
  expect(select.hasAttribute('data-open')).toBe(false)
372
372
  })
373
373
  })
@@ -379,11 +379,11 @@ describe('Select', () => {
379
379
  await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
380
380
  const trigger = select.querySelector('.select-trigger') as HTMLElement
381
381
  trigger.click()
382
- await sleepAsync(50)
382
+ await flushUpdates()
383
383
 
384
384
  const items = select.querySelectorAll('.dropdown-item')
385
385
  ;(items[1] as HTMLElement).click()
386
- await sleepAsync(50)
386
+ await flushUpdates()
387
387
 
388
388
  expect(onValueChange).toHaveBeenCalledWith('b')
389
389
  })
@@ -394,11 +394,11 @@ describe('Select', () => {
394
394
  await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
395
395
  const trigger = select.querySelector('.select-trigger') as HTMLElement
396
396
  trigger.click()
397
- await sleepAsync(50)
397
+ await flushUpdates()
398
398
 
399
399
  const items = select.querySelectorAll('.dropdown-item')
400
400
  ;(items[0] as HTMLElement).click()
401
- await sleepAsync(50)
401
+ await flushUpdates()
402
402
 
403
403
  expect(select.hasAttribute('data-open')).toBe(false)
404
404
  })
@@ -413,11 +413,11 @@ describe('Select', () => {
413
413
  await usingAsync(await renderSelect({ options, onValueChange }), async ({ select }) => {
414
414
  const trigger = select.querySelector('.select-trigger') as HTMLElement
415
415
  trigger.click()
416
- await sleepAsync(50)
416
+ await flushUpdates()
417
417
 
418
418
  const items = select.querySelectorAll('.dropdown-item')
419
419
  ;(items[1] as HTMLElement).click()
420
- await sleepAsync(50)
420
+ await flushUpdates()
421
421
 
422
422
  expect(onValueChange).not.toHaveBeenCalled()
423
423
  })
@@ -427,7 +427,7 @@ describe('Select', () => {
427
427
  await usingAsync(await renderSelect({ options: defaultOptions, value: 'b' }), async ({ select }) => {
428
428
  const trigger = select.querySelector('.select-trigger') as HTMLElement
429
429
  trigger.click()
430
- await sleepAsync(50)
430
+ await flushUpdates()
431
431
 
432
432
  const selected = select.querySelector('.dropdown-item[data-selected]')
433
433
  expect(selected).not.toBeNull()
@@ -477,11 +477,11 @@ describe('Select', () => {
477
477
  async ({ select }) => {
478
478
  const trigger = select.querySelector('.select-trigger') as HTMLElement
479
479
  trigger.click()
480
- await sleepAsync(50)
480
+ await flushUpdates()
481
481
 
482
482
  const items = select.querySelectorAll('.dropdown-item')
483
483
  ;(items[1] as HTMLElement).click()
484
- await sleepAsync(50)
484
+ await flushUpdates()
485
485
 
486
486
  expect(onMultiValueChange).toHaveBeenCalledWith(['a', 'b'])
487
487
  },
@@ -500,11 +500,11 @@ describe('Select', () => {
500
500
  async ({ select }) => {
501
501
  const trigger = select.querySelector('.select-trigger') as HTMLElement
502
502
  trigger.click()
503
- await sleepAsync(50)
503
+ await flushUpdates()
504
504
 
505
505
  const items = select.querySelectorAll('.dropdown-item')
506
506
  ;(items[0] as HTMLElement).click()
507
- await sleepAsync(50)
507
+ await flushUpdates()
508
508
 
509
509
  expect(onMultiValueChange).toHaveBeenCalledWith(['b'])
510
510
  },
@@ -524,7 +524,7 @@ describe('Select', () => {
524
524
  const chipRemoves = select.querySelectorAll('.select-chip-remove')
525
525
  expect(chipRemoves.length).toBe(2)
526
526
  ;(chipRemoves[0] as HTMLElement).click()
527
- await sleepAsync(50)
527
+ await flushUpdates()
528
528
 
529
529
  expect(onMultiValueChange).toHaveBeenCalledWith(['b'])
530
530
  },
@@ -547,7 +547,7 @@ describe('Select', () => {
547
547
  await usingAsync(await renderSelect(), async ({ select }) => {
548
548
  const trigger = select.querySelector('.select-trigger') as HTMLElement
549
549
  trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }))
550
- await sleepAsync(50)
550
+ await flushUpdates()
551
551
 
552
552
  expect(select.hasAttribute('data-open')).toBe(true)
553
553
  })
@@ -557,7 +557,7 @@ describe('Select', () => {
557
557
  await usingAsync(await renderSelect(), async ({ select }) => {
558
558
  const trigger = select.querySelector('.select-trigger') as HTMLElement
559
559
  trigger.dispatchEvent(new KeyboardEvent('keydown', { key: ' ', bubbles: true }))
560
- await sleepAsync(50)
560
+ await flushUpdates()
561
561
 
562
562
  expect(select.hasAttribute('data-open')).toBe(true)
563
563
  })
@@ -567,7 +567,7 @@ describe('Select', () => {
567
567
  await usingAsync(await renderSelect(), async ({ select }) => {
568
568
  const trigger = select.querySelector('.select-trigger') as HTMLElement
569
569
  trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }))
570
- await sleepAsync(50)
570
+ await flushUpdates()
571
571
 
572
572
  expect(select.hasAttribute('data-open')).toBe(true)
573
573
  })
@@ -577,7 +577,7 @@ describe('Select', () => {
577
577
  await usingAsync(await renderSelect(), async ({ select }) => {
578
578
  const trigger = select.querySelector('.select-trigger') as HTMLElement
579
579
  trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp', bubbles: true }))
580
- await sleepAsync(50)
580
+ await flushUpdates()
581
581
 
582
582
  expect(select.hasAttribute('data-open')).toBe(true)
583
583
  })
@@ -587,11 +587,11 @@ describe('Select', () => {
587
587
  await usingAsync(await renderSelect(), async ({ select }) => {
588
588
  const trigger = select.querySelector('.select-trigger') as HTMLElement
589
589
  trigger.click()
590
- await sleepAsync(50)
590
+ await flushUpdates()
591
591
  expect(select.hasAttribute('data-open')).toBe(true)
592
592
 
593
593
  trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }))
594
- await sleepAsync(50)
594
+ await flushUpdates()
595
595
 
596
596
  expect(select.hasAttribute('data-open')).toBe(false)
597
597
  })
@@ -602,15 +602,15 @@ describe('Select', () => {
602
602
  await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
603
603
  const trigger = select.querySelector('.select-trigger') as HTMLElement
604
604
  trigger.click()
605
- await sleepAsync(50)
605
+ await flushUpdates()
606
606
 
607
607
  // Re-query trigger after re-render, then navigate and select
608
608
  const trigger2 = select.querySelector('.select-trigger') as HTMLElement
609
609
  trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }))
610
- await sleepAsync(50)
610
+ await flushUpdates()
611
611
  const trigger3 = select.querySelector('.select-trigger') as HTMLElement
612
612
  trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }))
613
- await sleepAsync(50)
613
+ await flushUpdates()
614
614
 
615
615
  expect(onValueChange).toHaveBeenCalled()
616
616
  })
@@ -621,15 +621,15 @@ describe('Select', () => {
621
621
  await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
622
622
  const trigger = select.querySelector('.select-trigger') as HTMLElement
623
623
  trigger.click()
624
- await sleepAsync(50)
624
+ await flushUpdates()
625
625
 
626
626
  // Re-query trigger after re-render
627
627
  const trigger2 = select.querySelector('.select-trigger') as HTMLElement
628
628
  trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'End', bubbles: true }))
629
- await sleepAsync(50)
629
+ await flushUpdates()
630
630
  const trigger3 = select.querySelector('.select-trigger') as HTMLElement
631
631
  trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }))
632
- await sleepAsync(50)
632
+ await flushUpdates()
633
633
 
634
634
  expect(onValueChange).toHaveBeenCalledWith('c')
635
635
  })
@@ -639,7 +639,7 @@ describe('Select', () => {
639
639
  await usingAsync(await renderSelect({ options: defaultOptions, disabled: true }), async ({ select }) => {
640
640
  const trigger = select.querySelector('.select-trigger') as HTMLElement
641
641
  trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }))
642
- await sleepAsync(50)
642
+ await flushUpdates()
643
643
 
644
644
  expect(select.hasAttribute('data-open')).toBe(false)
645
645
  })
@@ -651,7 +651,7 @@ describe('Select', () => {
651
651
  await usingAsync(await renderSelect({ options: defaultOptions, showSearch: true }), async ({ select }) => {
652
652
  const trigger = select.querySelector('.select-trigger') as HTMLElement
653
653
  trigger.click()
654
- await sleepAsync(50)
654
+ await flushUpdates()
655
655
 
656
656
  const searchInput = select.querySelector('.dropdown-search')
657
657
  expect(searchInput).not.toBeNull()
@@ -662,7 +662,7 @@ describe('Select', () => {
662
662
  await usingAsync(await renderSelect({ options: defaultOptions, showSearch: false }), async ({ select }) => {
663
663
  const trigger = select.querySelector('.select-trigger') as HTMLElement
664
664
  trigger.click()
665
- await sleepAsync(50)
665
+ await flushUpdates()
666
666
 
667
667
  const searchInput = select.querySelector('.dropdown-search')
668
668
  expect(searchInput).toBeNull()
@@ -673,12 +673,12 @@ describe('Select', () => {
673
673
  await usingAsync(await renderSelect({ options: defaultOptions, showSearch: true }), async ({ select }) => {
674
674
  const trigger = select.querySelector('.select-trigger') as HTMLElement
675
675
  trigger.click()
676
- await sleepAsync(50)
676
+ await flushUpdates()
677
677
 
678
678
  const searchInput = select.querySelector('.dropdown-search') as HTMLInputElement
679
679
  searchInput.value = 'alp'
680
680
  searchInput.dispatchEvent(new Event('input', { bubbles: true }))
681
- await sleepAsync(100)
681
+ await flushUpdates()
682
682
 
683
683
  const items = select.querySelectorAll('.dropdown-item')
684
684
  expect(items.length).toBe(1)
@@ -690,12 +690,12 @@ describe('Select', () => {
690
690
  await usingAsync(await renderSelect({ options: defaultOptions, showSearch: true }), async ({ select }) => {
691
691
  const trigger = select.querySelector('.select-trigger') as HTMLElement
692
692
  trigger.click()
693
- await sleepAsync(50)
693
+ await flushUpdates()
694
694
 
695
695
  const searchInput = select.querySelector('.dropdown-search') as HTMLInputElement
696
696
  searchInput.value = 'zzz'
697
697
  searchInput.dispatchEvent(new Event('input', { bubbles: true }))
698
- await sleepAsync(100)
698
+ await flushUpdates()
699
699
 
700
700
  const noResults = select.querySelector('.dropdown-no-results')
701
701
  expect(noResults).not.toBeNull()
@@ -710,12 +710,12 @@ describe('Select', () => {
710
710
  async ({ select }) => {
711
711
  const trigger = select.querySelector('.select-trigger') as HTMLElement
712
712
  trigger.click()
713
- await sleepAsync(50)
713
+ await flushUpdates()
714
714
 
715
715
  const searchInput = select.querySelector('.dropdown-search') as HTMLInputElement
716
716
  searchInput.value = 'anything'
717
717
  searchInput.dispatchEvent(new Event('input', { bubbles: true }))
718
- await sleepAsync(100)
718
+ await flushUpdates()
719
719
 
720
720
  const items = select.querySelectorAll('.dropdown-item')
721
721
  expect(items.length).toBe(1)
@@ -743,7 +743,7 @@ describe('Select', () => {
743
743
  await usingAsync(await renderSelect({ optionGroups }), async ({ select }) => {
744
744
  const trigger = select.querySelector('.select-trigger') as HTMLElement
745
745
  trigger.click()
746
- await sleepAsync(50)
746
+ await flushUpdates()
747
747
 
748
748
  const groupLabels = select.querySelectorAll('.dropdown-group-label')
749
749
  expect(groupLabels.length).toBe(2)
@@ -772,12 +772,12 @@ describe('Select', () => {
772
772
  await usingAsync(await renderSelect({ optionGroups, showSearch: true }), async ({ select }) => {
773
773
  const trigger = select.querySelector('.select-trigger') as HTMLElement
774
774
  trigger.click()
775
- await sleepAsync(50)
775
+ await flushUpdates()
776
776
 
777
777
  const searchInput = select.querySelector('.dropdown-search') as HTMLInputElement
778
778
  searchInput.value = 'apple'
779
779
  searchInput.dispatchEvent(new Event('input', { bubbles: true }))
780
- await sleepAsync(100)
780
+ await flushUpdates()
781
781
 
782
782
  const items = select.querySelectorAll('.dropdown-item')
783
783
  expect(items.length).toBe(1)
@@ -845,7 +845,7 @@ describe('Select', () => {
845
845
  await usingAsync(await renderSelect(), async ({ select }) => {
846
846
  const trigger = select.querySelector('.select-trigger') as HTMLElement
847
847
  trigger.dispatchEvent(new FocusEvent('focus', { bubbles: true }))
848
- await sleepAsync(50)
848
+ await flushUpdates()
849
849
 
850
850
  // Focus handler sets data-focused on the inner container div (selectRootRef), not the host
851
851
  const innerContainer = select.querySelector('div') as HTMLElement
@@ -857,12 +857,12 @@ describe('Select', () => {
857
857
  await usingAsync(await renderSelect(), async ({ select }) => {
858
858
  const trigger = select.querySelector('.select-trigger') as HTMLElement
859
859
  trigger.dispatchEvent(new FocusEvent('focus', { bubbles: true }))
860
- await sleepAsync(50)
860
+ await flushUpdates()
861
861
  const innerContainer = select.querySelector('div') as HTMLElement
862
862
  expect(innerContainer.hasAttribute('data-focused')).toBe(true)
863
863
 
864
864
  trigger.dispatchEvent(new FocusEvent('blur', { bubbles: true }))
865
- await sleepAsync(50)
865
+ await flushUpdates()
866
866
  expect(innerContainer.hasAttribute('data-focused')).toBe(false)
867
867
  })
868
868
  })
@@ -948,7 +948,7 @@ describe('Select', () => {
948
948
  await usingAsync(await renderSelect(), async ({ select }) => {
949
949
  const trigger = select.querySelector('.select-trigger') as HTMLElement
950
950
  trigger.click()
951
- await sleepAsync(50)
951
+ await flushUpdates()
952
952
 
953
953
  // Re-query after re-render
954
954
  const trigger2 = select.querySelector('.select-trigger') as HTMLElement
@@ -960,7 +960,7 @@ describe('Select', () => {
960
960
  await usingAsync(await renderSelect(), async ({ select }) => {
961
961
  const trigger = select.querySelector('.select-trigger') as HTMLElement
962
962
  trigger.click()
963
- await sleepAsync(50)
963
+ await flushUpdates()
964
964
 
965
965
  const dropdown = select.querySelector('.dropdown')
966
966
  expect(dropdown?.getAttribute('role')).toBe('listbox')
@@ -971,7 +971,7 @@ describe('Select', () => {
971
971
  await usingAsync(await renderSelect(), async ({ select }) => {
972
972
  const trigger = select.querySelector('.select-trigger') as HTMLElement
973
973
  trigger.click()
974
- await sleepAsync(50)
974
+ await flushUpdates()
975
975
 
976
976
  const items = select.querySelectorAll('.dropdown-item')
977
977
  items.forEach((item) => {
@@ -984,7 +984,7 @@ describe('Select', () => {
984
984
  await usingAsync(await renderSelect({ options: defaultOptions, mode: 'multiple' }), async ({ select }) => {
985
985
  const trigger = select.querySelector('.select-trigger') as HTMLElement
986
986
  trigger.click()
987
- await sleepAsync(50)
987
+ await flushUpdates()
988
988
 
989
989
  const dropdown = select.querySelector('.dropdown')
990
990
  expect(dropdown?.getAttribute('aria-multiselectable')).toBe('true')
@@ -1006,11 +1006,11 @@ describe('Select', () => {
1006
1006
  async ({ select }) => {
1007
1007
  const trigger = select.querySelector('.select-trigger') as HTMLElement
1008
1008
  trigger.click()
1009
- await sleepAsync(50)
1009
+ await flushUpdates()
1010
1010
 
1011
1011
  const searchInput = select.querySelector('.dropdown-search') as HTMLInputElement
1012
1012
  searchInput.dispatchEvent(new KeyboardEvent('keydown', { key: 'Backspace', bubbles: true }))
1013
- await sleepAsync(50)
1013
+ await flushUpdates()
1014
1014
 
1015
1015
  expect(onMultiValueChange).toHaveBeenCalledWith(['a'])
1016
1016
  },
@@ -1024,22 +1024,22 @@ describe('Select', () => {
1024
1024
  await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
1025
1025
  const trigger = select.querySelector('.select-trigger') as HTMLElement
1026
1026
  trigger.click()
1027
- await sleepAsync(50)
1027
+ await flushUpdates()
1028
1028
 
1029
1029
  // Navigate to End first
1030
1030
  const trigger2 = select.querySelector('.select-trigger') as HTMLElement
1031
1031
  trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'End', bubbles: true }))
1032
- await sleepAsync(50)
1032
+ await flushUpdates()
1033
1033
 
1034
1034
  // Now ArrowUp
1035
1035
  const trigger3 = select.querySelector('.select-trigger') as HTMLElement
1036
1036
  trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp', bubbles: true }))
1037
- await sleepAsync(50)
1037
+ await flushUpdates()
1038
1038
 
1039
1039
  // Then select with Enter
1040
1040
  const trigger4 = select.querySelector('.select-trigger') as HTMLElement
1041
1041
  trigger4.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }))
1042
- await sleepAsync(50)
1042
+ await flushUpdates()
1043
1043
 
1044
1044
  expect(onValueChange).toHaveBeenCalledWith('b')
1045
1045
  })
@@ -1052,15 +1052,15 @@ describe('Select', () => {
1052
1052
  await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
1053
1053
  const trigger = select.querySelector('.select-trigger') as HTMLElement
1054
1054
  trigger.click()
1055
- await sleepAsync(50)
1055
+ await flushUpdates()
1056
1056
 
1057
1057
  const trigger2 = select.querySelector('.select-trigger') as HTMLElement
1058
1058
  trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }))
1059
- await sleepAsync(50)
1059
+ await flushUpdates()
1060
1060
 
1061
1061
  const trigger3 = select.querySelector('.select-trigger') as HTMLElement
1062
1062
  trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: ' ', bubbles: true }))
1063
- await sleepAsync(50)
1063
+ await flushUpdates()
1064
1064
 
1065
1065
  expect(onValueChange).toHaveBeenCalled()
1066
1066
  })
@@ -1073,11 +1073,11 @@ describe('Select', () => {
1073
1073
  async ({ select }) => {
1074
1074
  const trigger = select.querySelector('.select-trigger') as HTMLElement
1075
1075
  trigger.click()
1076
- await sleepAsync(50)
1076
+ await flushUpdates()
1077
1077
 
1078
1078
  const searchInput = select.querySelector('.dropdown-search') as HTMLInputElement
1079
1079
  searchInput.dispatchEvent(new KeyboardEvent('keydown', { key: ' ', bubbles: true }))
1080
- await sleepAsync(50)
1080
+ await flushUpdates()
1081
1081
 
1082
1082
  // Space should be ignored as a selection trigger when search is active
1083
1083
  expect(onValueChange).not.toHaveBeenCalled()
@@ -1092,15 +1092,15 @@ describe('Select', () => {
1092
1092
  await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
1093
1093
  const trigger = select.querySelector('.select-trigger') as HTMLElement
1094
1094
  trigger.click()
1095
- await sleepAsync(50)
1095
+ await flushUpdates()
1096
1096
 
1097
1097
  const trigger2 = select.querySelector('.select-trigger') as HTMLElement
1098
1098
  trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'Home', bubbles: true }))
1099
- await sleepAsync(50)
1099
+ await flushUpdates()
1100
1100
 
1101
1101
  const trigger3 = select.querySelector('.select-trigger') as HTMLElement
1102
1102
  trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }))
1103
- await sleepAsync(50)
1103
+ await flushUpdates()
1104
1104
 
1105
1105
  expect(onValueChange).toHaveBeenCalledWith('a')
1106
1106
  })
@@ -1142,11 +1142,11 @@ describe('Select', () => {
1142
1142
  async ({ select }) => {
1143
1143
  const trigger = select.querySelector('.select-trigger') as HTMLElement
1144
1144
  trigger.click()
1145
- await sleepAsync(50)
1145
+ await flushUpdates()
1146
1146
 
1147
1147
  const items = select.querySelectorAll('.dropdown-item')
1148
1148
  ;(items[1] as HTMLElement).click()
1149
- await sleepAsync(50)
1149
+ await flushUpdates()
1150
1150
 
1151
1151
  expect(onValueChange).toHaveBeenCalledWith('a,b')
1152
1152
  },
@@ -1167,7 +1167,7 @@ describe('Select', () => {
1167
1167
  async ({ select }) => {
1168
1168
  const chipRemoves = select.querySelectorAll('.select-chip-remove')
1169
1169
  ;(chipRemoves[0] as HTMLElement).click()
1170
- await sleepAsync(50)
1170
+ await flushUpdates()
1171
1171
 
1172
1172
  expect(onValueChange).toHaveBeenCalledWith('b')
1173
1173
  },
@@ -1204,12 +1204,12 @@ describe('Select', () => {
1204
1204
  await usingAsync(await renderSelect({ optionGroups, showSearch: true }), async ({ select }) => {
1205
1205
  const trigger = select.querySelector('.select-trigger') as HTMLElement
1206
1206
  trigger.click()
1207
- await sleepAsync(50)
1207
+ await flushUpdates()
1208
1208
 
1209
1209
  const searchInput = select.querySelector('.dropdown-search') as HTMLInputElement
1210
1210
  searchInput.value = 'zzz'
1211
1211
  searchInput.dispatchEvent(new Event('input', { bubbles: true }))
1212
- await sleepAsync(100)
1212
+ await flushUpdates()
1213
1213
 
1214
1214
  const noResults = select.querySelector('.dropdown-no-results')
1215
1215
  expect(noResults).not.toBeNull()
@@ -1223,13 +1223,13 @@ describe('Select', () => {
1223
1223
  await usingAsync(await renderSelect({ options: defaultOptions, mode: 'multiple' }), async ({ select }) => {
1224
1224
  const trigger = select.querySelector('.select-trigger') as HTMLElement
1225
1225
  trigger.click()
1226
- await sleepAsync(50)
1226
+ await flushUpdates()
1227
1227
  expect(select.hasAttribute('data-open')).toBe(true)
1228
1228
 
1229
1229
  // In multi mode, clicking trigger again should NOT close (only backdrop closes)
1230
1230
  const trigger2 = select.querySelector('.select-trigger') as HTMLElement
1231
1231
  trigger2.click()
1232
- await sleepAsync(50)
1232
+ await flushUpdates()
1233
1233
  // It should still remain open or re-open in multi mode
1234
1234
  })
1235
1235
  })