@furystack/shades-common-components 12.4.0 → 12.5.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 (263) hide show
  1. package/CHANGELOG.md +56 -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 +40 -2
  36. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  37. package/esm/components/data-grid/data-grid.js +7 -10
  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.map +1 -1
  98. package/esm/components/data-grid/footer.js +24 -9
  99. package/esm/components/data-grid/footer.js.map +1 -1
  100. package/esm/components/data-grid/footer.spec.js +38 -36
  101. package/esm/components/data-grid/footer.spec.js.map +1 -1
  102. package/esm/components/data-grid/header.d.ts +6 -9
  103. package/esm/components/data-grid/header.d.ts.map +1 -1
  104. package/esm/components/data-grid/header.js +51 -117
  105. package/esm/components/data-grid/header.js.map +1 -1
  106. package/esm/components/data-grid/header.spec.js +116 -187
  107. package/esm/components/data-grid/header.spec.js.map +1 -1
  108. package/esm/components/data-grid/index.d.ts +1 -0
  109. package/esm/components/data-grid/index.d.ts.map +1 -1
  110. package/esm/components/data-grid/index.js +1 -0
  111. package/esm/components/data-grid/index.js.map +1 -1
  112. package/esm/components/data-grid/selection-cell.spec.js +8 -8
  113. package/esm/components/data-grid/selection-cell.spec.js.map +1 -1
  114. package/esm/components/drawer/drawer-toggle-button.spec.js +22 -22
  115. package/esm/components/drawer/drawer-toggle-button.spec.js.map +1 -1
  116. package/esm/components/drawer/index.spec.js +36 -36
  117. package/esm/components/drawer/index.spec.js.map +1 -1
  118. package/esm/components/dropdown.spec.js +38 -30
  119. package/esm/components/dropdown.spec.js.map +1 -1
  120. package/esm/components/fab.spec.js +4 -4
  121. package/esm/components/fab.spec.js.map +1 -1
  122. package/esm/components/form.spec.js +37 -37
  123. package/esm/components/form.spec.js.map +1 -1
  124. package/esm/components/grid.spec.js +3 -3
  125. package/esm/components/grid.spec.js.map +1 -1
  126. package/esm/components/image.spec.js +55 -52
  127. package/esm/components/image.spec.js.map +1 -1
  128. package/esm/components/inputs/autocomplete.spec.js +7 -14
  129. package/esm/components/inputs/autocomplete.spec.js.map +1 -1
  130. package/esm/components/inputs/checkbox.spec.js +22 -22
  131. package/esm/components/inputs/checkbox.spec.js.map +1 -1
  132. package/esm/components/inputs/input-number.spec.js +47 -47
  133. package/esm/components/inputs/input-number.spec.js.map +1 -1
  134. package/esm/components/inputs/input.spec.js +53 -53
  135. package/esm/components/inputs/input.spec.js.map +1 -1
  136. package/esm/components/inputs/radio-group.spec.js +14 -14
  137. package/esm/components/inputs/radio-group.spec.js.map +1 -1
  138. package/esm/components/inputs/radio.spec.js +16 -16
  139. package/esm/components/inputs/radio.spec.js.map +1 -1
  140. package/esm/components/inputs/select.spec.js +74 -74
  141. package/esm/components/inputs/select.spec.js.map +1 -1
  142. package/esm/components/inputs/slider.spec.js +16 -16
  143. package/esm/components/inputs/slider.spec.js.map +1 -1
  144. package/esm/components/inputs/switch.spec.js +24 -24
  145. package/esm/components/inputs/switch.spec.js.map +1 -1
  146. package/esm/components/inputs/text-area.spec.js +17 -17
  147. package/esm/components/inputs/text-area.spec.js.map +1 -1
  148. package/esm/components/linear-progress.spec.js +2 -2
  149. package/esm/components/list/list.spec.js +36 -36
  150. package/esm/components/list/list.spec.js.map +1 -1
  151. package/esm/components/markdown/markdown-display.spec.js +15 -15
  152. package/esm/components/markdown/markdown-display.spec.js.map +1 -1
  153. package/esm/components/markdown/markdown-editor.spec.js +8 -8
  154. package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
  155. package/esm/components/markdown/markdown-input.spec.js +17 -17
  156. package/esm/components/markdown/markdown-input.spec.js.map +1 -1
  157. package/esm/components/menu/menu.spec.js +28 -28
  158. package/esm/components/menu/menu.spec.js.map +1 -1
  159. package/esm/components/modal.spec.js +15 -18
  160. package/esm/components/modal.spec.js.map +1 -1
  161. package/esm/components/noty-list.spec.js +25 -23
  162. package/esm/components/noty-list.spec.js.map +1 -1
  163. package/esm/components/page-container/index.spec.js +16 -16
  164. package/esm/components/page-container/index.spec.js.map +1 -1
  165. package/esm/components/page-container/page-header.spec.js +16 -16
  166. package/esm/components/page-container/page-header.spec.js.map +1 -1
  167. package/esm/components/page-layout/index.spec.js +29 -29
  168. package/esm/components/page-layout/index.spec.js.map +1 -1
  169. package/esm/components/paper.spec.js +3 -3
  170. package/esm/components/paper.spec.js.map +1 -1
  171. package/esm/components/rating.spec.js +61 -61
  172. package/esm/components/rating.spec.js.map +1 -1
  173. package/esm/components/skeleton.spec.js +10 -6
  174. package/esm/components/skeleton.spec.js.map +1 -1
  175. package/esm/components/suggest/suggest-input.spec.js +4 -10
  176. package/esm/components/suggest/suggest-input.spec.js.map +1 -1
  177. package/esm/components/tabs.spec.js +30 -30
  178. package/esm/components/tabs.spec.js.map +1 -1
  179. package/esm/components/tree/tree.spec.js +27 -27
  180. package/esm/components/tree/tree.spec.js.map +1 -1
  181. package/esm/components/typography.spec.js +3 -3
  182. package/esm/components/typography.spec.js.map +1 -1
  183. package/esm/components/wizard/index.spec.js +5 -5
  184. package/esm/components/wizard/index.spec.js.map +1 -1
  185. package/esm/utils/promisify-animation.d.ts.map +1 -1
  186. package/esm/utils/promisify-animation.js +3 -0
  187. package/esm/utils/promisify-animation.js.map +1 -1
  188. package/package.json +2 -2
  189. package/src/components/app-bar-link.spec.tsx +16 -19
  190. package/src/components/app-bar.spec.tsx +6 -4
  191. package/src/components/avatar.spec.tsx +9 -9
  192. package/src/components/breadcrumb.spec.tsx +2 -2
  193. package/src/components/button-group.spec.tsx +155 -11
  194. package/src/components/button-group.tsx +49 -2
  195. package/src/components/button.spec.tsx +4 -4
  196. package/src/components/cache-view.spec.tsx +3 -3
  197. package/src/components/carousel.spec.tsx +47 -47
  198. package/src/components/circular-progress.spec.tsx +2 -2
  199. package/src/components/command-palette/command-palette-input.spec.tsx +23 -19
  200. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +27 -27
  201. package/src/components/command-palette/index.spec.tsx +64 -51
  202. package/src/components/context-menu/context-menu.spec.tsx +33 -33
  203. package/src/components/data-grid/body.spec.tsx +13 -13
  204. package/src/components/data-grid/data-grid-row.spec.tsx +8 -8
  205. package/src/components/data-grid/data-grid.spec.tsx +106 -28
  206. package/src/components/data-grid/data-grid.tsx +44 -11
  207. package/src/components/data-grid/filters/boolean-filter.spec.tsx +142 -0
  208. package/src/components/data-grid/filters/boolean-filter.tsx +45 -0
  209. package/src/components/data-grid/filters/date-filter.spec.tsx +181 -0
  210. package/src/components/data-grid/filters/date-filter.tsx +162 -0
  211. package/src/components/data-grid/filters/enum-filter.spec.tsx +168 -0
  212. package/src/components/data-grid/filters/enum-filter.tsx +119 -0
  213. package/src/components/data-grid/filters/filter-dropdown.spec.tsx +89 -0
  214. package/src/components/data-grid/filters/filter-dropdown.tsx +60 -0
  215. package/src/components/data-grid/filters/filter-styles.ts +26 -0
  216. package/src/components/data-grid/filters/index.ts +6 -0
  217. package/src/components/data-grid/filters/number-filter.spec.tsx +174 -0
  218. package/src/components/data-grid/filters/number-filter.tsx +115 -0
  219. package/src/components/data-grid/filters/string-filter.spec.tsx +157 -0
  220. package/src/components/data-grid/filters/string-filter.tsx +112 -0
  221. package/src/components/data-grid/footer.spec.tsx +38 -36
  222. package/src/components/data-grid/footer.tsx +21 -8
  223. package/src/components/data-grid/header.spec.tsx +128 -212
  224. package/src/components/data-grid/header.tsx +95 -183
  225. package/src/components/data-grid/index.tsx +1 -0
  226. package/src/components/data-grid/selection-cell.spec.tsx +8 -8
  227. package/src/components/drawer/drawer-toggle-button.spec.tsx +22 -22
  228. package/src/components/drawer/index.spec.tsx +36 -36
  229. package/src/components/dropdown.spec.tsx +38 -30
  230. package/src/components/fab.spec.tsx +4 -4
  231. package/src/components/form.spec.tsx +37 -37
  232. package/src/components/grid.spec.tsx +3 -3
  233. package/src/components/image.spec.tsx +55 -52
  234. package/src/components/inputs/autocomplete.spec.tsx +7 -14
  235. package/src/components/inputs/checkbox.spec.tsx +22 -22
  236. package/src/components/inputs/input-number.spec.tsx +47 -47
  237. package/src/components/inputs/input.spec.tsx +53 -53
  238. package/src/components/inputs/radio-group.spec.tsx +14 -14
  239. package/src/components/inputs/radio.spec.tsx +16 -16
  240. package/src/components/inputs/select.spec.tsx +74 -74
  241. package/src/components/inputs/slider.spec.tsx +16 -16
  242. package/src/components/inputs/switch.spec.tsx +24 -24
  243. package/src/components/inputs/text-area.spec.tsx +17 -17
  244. package/src/components/linear-progress.spec.tsx +2 -2
  245. package/src/components/list/list.spec.tsx +36 -36
  246. package/src/components/markdown/markdown-display.spec.tsx +15 -15
  247. package/src/components/markdown/markdown-editor.spec.tsx +8 -8
  248. package/src/components/markdown/markdown-input.spec.tsx +17 -17
  249. package/src/components/menu/menu.spec.tsx +28 -28
  250. package/src/components/modal.spec.tsx +15 -18
  251. package/src/components/noty-list.spec.tsx +25 -23
  252. package/src/components/page-container/index.spec.tsx +16 -16
  253. package/src/components/page-container/page-header.spec.tsx +16 -16
  254. package/src/components/page-layout/index.spec.tsx +29 -29
  255. package/src/components/paper.spec.tsx +3 -3
  256. package/src/components/rating.spec.tsx +61 -61
  257. package/src/components/skeleton.spec.tsx +10 -6
  258. package/src/components/suggest/suggest-input.spec.tsx +4 -10
  259. package/src/components/tabs.spec.tsx +30 -30
  260. package/src/components/tree/tree.spec.tsx +27 -27
  261. package/src/components/typography.spec.tsx +3 -3
  262. package/src/components/wizard/index.spec.tsx +5 -5
  263. 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, using, usingAsync } from '@furystack/utils'
2
+ import { createComponent, flushUpdates, initializeShadeRoot } from '@furystack/shades'
3
+ import { using, usingAsync } from '@furystack/utils'
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
5
5
  import { Form, FormService } from './form.js'
6
6
 
@@ -144,7 +144,7 @@ describe('Form component', () => {
144
144
  ),
145
145
  })
146
146
 
147
- await sleepAsync(50)
147
+ await flushUpdates()
148
148
 
149
149
  const form = document.querySelector('form[is="shade-form"]')
150
150
  expect(form).not.toBeNull()
@@ -177,7 +177,7 @@ describe('Form component', () => {
177
177
  ),
178
178
  })
179
179
 
180
- await sleepAsync(50)
180
+ await flushUpdates()
181
181
 
182
182
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
183
183
  const input = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -186,7 +186,7 @@ describe('Form component', () => {
186
186
  const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
187
187
  form.dispatchEvent(submitEvent)
188
188
 
189
- await sleepAsync(50)
189
+ await flushUpdates()
190
190
 
191
191
  expect(onSubmit).toHaveBeenCalledWith({ name: 'Test Name' })
192
192
  })
@@ -217,7 +217,7 @@ describe('Form component', () => {
217
217
  ),
218
218
  })
219
219
 
220
- await sleepAsync(50)
220
+ await flushUpdates()
221
221
 
222
222
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
223
223
  const nameInput = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -229,7 +229,7 @@ describe('Form component', () => {
229
229
  const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
230
230
  form.dispatchEvent(submitEvent)
231
231
 
232
- await sleepAsync(50)
232
+ await flushUpdates()
233
233
 
234
234
  expect(onSubmit).not.toHaveBeenCalled()
235
235
  })
@@ -258,7 +258,7 @@ describe('Form component', () => {
258
258
  ),
259
259
  })
260
260
 
261
- await sleepAsync(50)
261
+ await flushUpdates()
262
262
 
263
263
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
264
264
  const input = form.querySelector('input[name="email"]') as HTMLInputElement
@@ -267,7 +267,7 @@ describe('Form component', () => {
267
267
  const changeEvent = new Event('change', { bubbles: true })
268
268
  form.dispatchEvent(changeEvent)
269
269
 
270
- await sleepAsync(50)
270
+ await flushUpdates()
271
271
 
272
272
  const formInjector = (form as unknown as { injector: Injector }).injector
273
273
  const formService = formInjector.getInstance(FormService)
@@ -305,7 +305,7 @@ describe('Form component', () => {
305
305
  ),
306
306
  })
307
307
 
308
- await sleepAsync(50)
308
+ await flushUpdates()
309
309
 
310
310
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
311
311
  const input = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -314,7 +314,7 @@ describe('Form component', () => {
314
314
  const changeEvent = new Event('change', { bubbles: true })
315
315
  form.dispatchEvent(changeEvent)
316
316
 
317
- await sleepAsync(50)
317
+ await flushUpdates()
318
318
 
319
319
  const formInjector = (form as unknown as { injector: Injector }).injector
320
320
  const formService = formInjector.getInstance(FormService)
@@ -324,7 +324,7 @@ describe('Form component', () => {
324
324
  const resetEvent = new Event('reset', { bubbles: true })
325
325
  form.dispatchEvent(resetEvent)
326
326
 
327
- await sleepAsync(50)
327
+ await flushUpdates()
328
328
 
329
329
  expect(formService.rawFormData.getValue()).toBeNull()
330
330
  expect(formService.validationResult.getValue()).toEqual({ isValid: null })
@@ -354,7 +354,7 @@ describe('Form component', () => {
354
354
  ),
355
355
  })
356
356
 
357
- await sleepAsync(50)
357
+ await flushUpdates()
358
358
 
359
359
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
360
360
  const input = form.querySelector('input[name="username"]') as HTMLInputElement
@@ -363,7 +363,7 @@ describe('Form component', () => {
363
363
  const changeEvent = new Event('change', { bubbles: true })
364
364
  form.dispatchEvent(changeEvent)
365
365
 
366
- await sleepAsync(50)
366
+ await flushUpdates()
367
367
 
368
368
  const formInjector = (form as unknown as { injector: Injector }).injector
369
369
  const formService = formInjector.getInstance(FormService)
@@ -394,7 +394,7 @@ describe('Form component', () => {
394
394
  ),
395
395
  })
396
396
 
397
- await sleepAsync(50)
397
+ await flushUpdates()
398
398
 
399
399
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
400
400
  const input = form.querySelector('input[name="title"]') as HTMLInputElement
@@ -403,7 +403,7 @@ describe('Form component', () => {
403
403
  const changeEvent = new Event('change', { bubbles: true })
404
404
  form.dispatchEvent(changeEvent)
405
405
 
406
- await sleepAsync(50)
406
+ await flushUpdates()
407
407
 
408
408
  const formInjector = (form as unknown as { injector: Injector }).injector
409
409
  const formService = formInjector.getInstance(FormService)
@@ -430,7 +430,7 @@ describe('Form component', () => {
430
430
  ),
431
431
  })
432
432
 
433
- await sleepAsync(50)
433
+ await flushUpdates()
434
434
 
435
435
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
436
436
 
@@ -459,7 +459,7 @@ describe('Form component', () => {
459
459
  ),
460
460
  })
461
461
 
462
- await sleepAsync(50)
462
+ await flushUpdates()
463
463
 
464
464
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
465
465
  const formInjector = (form as unknown as { injector: Injector }).injector
@@ -495,7 +495,7 @@ describe('Form component', () => {
495
495
  ),
496
496
  })
497
497
 
498
- await sleepAsync(50)
498
+ await flushUpdates()
499
499
 
500
500
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
501
501
  const input = form.querySelector('input[name="required"]') as HTMLInputElement
@@ -503,7 +503,7 @@ describe('Form component', () => {
503
503
  const invalidEvent = new Event('invalid', { bubbles: true })
504
504
  input.dispatchEvent(invalidEvent)
505
505
 
506
- await sleepAsync(50)
506
+ await flushUpdates()
507
507
  })
508
508
  })
509
509
 
@@ -535,7 +535,7 @@ describe('Form component', () => {
535
535
  ),
536
536
  })
537
537
 
538
- await sleepAsync(50)
538
+ await flushUpdates()
539
539
 
540
540
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
541
541
  const input = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -549,11 +549,11 @@ describe('Form component', () => {
549
549
  const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
550
550
  form.dispatchEvent(submitEvent)
551
551
 
552
- await sleepAsync(50)
552
+ await flushUpdates()
553
553
  expect(formService.isSubmitting.getValue()).toBe(true)
554
554
 
555
555
  resolveSubmit!()
556
- await sleepAsync(50)
556
+ await flushUpdates()
557
557
  expect(formService.isSubmitting.getValue()).toBe(false)
558
558
  })
559
559
  })
@@ -585,7 +585,7 @@ describe('Form component', () => {
585
585
  ),
586
586
  })
587
587
 
588
- await sleepAsync(50)
588
+ await flushUpdates()
589
589
 
590
590
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
591
591
  const input = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -597,7 +597,7 @@ describe('Form component', () => {
597
597
  const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
598
598
  form.dispatchEvent(submitEvent)
599
599
 
600
- await sleepAsync(50)
600
+ await flushUpdates()
601
601
  expect(formService.isSubmitting.getValue()).toBe(false)
602
602
  expect(formService.submitError.getValue()).toBe(submitError)
603
603
  })
@@ -636,7 +636,7 @@ describe('Form component', () => {
636
636
  ),
637
637
  })
638
638
 
639
- await sleepAsync(50)
639
+ await flushUpdates()
640
640
 
641
641
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
642
642
  const input = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -646,17 +646,17 @@ describe('Form component', () => {
646
646
  const formService = formInjector.getInstance(FormService)
647
647
 
648
648
  form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }))
649
- await sleepAsync(50)
649
+ await flushUpdates()
650
650
  expect(formService.submitError.getValue()).toBeInstanceOf(Error)
651
651
 
652
652
  shouldThrow = false
653
653
  form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }))
654
- await sleepAsync(50)
654
+ await flushUpdates()
655
655
  expect(formService.submitError.getValue()).toBeUndefined()
656
656
  expect(formService.isSubmitting.getValue()).toBe(true)
657
657
 
658
658
  resolveSubmit!()
659
- await sleepAsync(50)
659
+ await flushUpdates()
660
660
  expect(formService.isSubmitting.getValue()).toBe(false)
661
661
  })
662
662
  })
@@ -690,7 +690,7 @@ describe('Form component', () => {
690
690
  ),
691
691
  })
692
692
 
693
- await sleepAsync(50)
693
+ await flushUpdates()
694
694
 
695
695
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
696
696
  const input = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -701,11 +701,11 @@ describe('Form component', () => {
701
701
  const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
702
702
  form.dispatchEvent(submitEvent)
703
703
 
704
- await sleepAsync(50)
704
+ await flushUpdates()
705
705
  expect(form.inert).toBe(true)
706
706
 
707
707
  resolveSubmit!()
708
- await sleepAsync(50)
708
+ await flushUpdates()
709
709
  expect(form.inert).toBe(false)
710
710
  })
711
711
  })
@@ -738,7 +738,7 @@ describe('Form component', () => {
738
738
  ),
739
739
  })
740
740
 
741
- await sleepAsync(50)
741
+ await flushUpdates()
742
742
 
743
743
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
744
744
  const input = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -747,11 +747,11 @@ describe('Form component', () => {
747
747
  const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
748
748
  form.dispatchEvent(submitEvent)
749
749
 
750
- await sleepAsync(50)
750
+ await flushUpdates()
751
751
  expect(form.inert).toBeFalsy()
752
752
 
753
753
  resolveSubmit!()
754
- await sleepAsync(50)
754
+ await flushUpdates()
755
755
  })
756
756
  })
757
757
 
@@ -781,7 +781,7 @@ describe('Form component', () => {
781
781
  ),
782
782
  })
783
783
 
784
- await sleepAsync(50)
784
+ await flushUpdates()
785
785
 
786
786
  const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
787
787
  const input = form.querySelector('input[name="name"]') as HTMLInputElement
@@ -790,7 +790,7 @@ describe('Form component', () => {
790
790
  const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
791
791
  form.dispatchEvent(submitEvent)
792
792
 
793
- await sleepAsync(50)
793
+ await flushUpdates()
794
794
  expect(form.inert).toBe(false)
795
795
  const formInjector = (form as unknown as { injector: Injector }).injector
796
796
  const formService = formInjector.getInstance(FormService)
@@ -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 } from 'vitest'
5
5
  import { Grid, type GridProps, type HeaderCells, type RowCells } from './grid.js'
6
6
 
@@ -24,7 +24,7 @@ describe('Grid', () => {
24
24
  rootElement: root,
25
25
  jsxElement: <Grid {...props} />,
26
26
  })
27
- await sleepAsync(50)
27
+ await flushUpdates()
28
28
  const grid = document.querySelector('shade-grid') as HTMLElement
29
29
  return {
30
30
  injector,