@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 } from 'vitest'
5
5
  import { LayoutService } from '../../services/layout-service.js'
6
6
  import { PageLayout, type AppBarConfig, type DrawerConfig } from './index.js'
@@ -37,7 +37,7 @@ describe('PageLayout component', () => {
37
37
  ),
38
38
  })
39
39
 
40
- await sleepAsync(50)
40
+ await flushUpdates()
41
41
 
42
42
  const pageLayout = document.querySelector('shade-page-layout') as HTMLElement & { injector: Injector }
43
43
 
@@ -71,7 +71,7 @@ describe('PageLayout component', () => {
71
71
  ),
72
72
  })
73
73
 
74
- await sleepAsync(50)
74
+ await flushUpdates()
75
75
  expect(document.body.innerHTML).toContain('page-layout-content')
76
76
  })
77
77
  })
@@ -120,7 +120,7 @@ describe('PageLayout component', () => {
120
120
  ),
121
121
  })
122
122
 
123
- await sleepAsync(50)
123
+ await flushUpdates()
124
124
  expect(document.body.innerHTML).toContain('page-layout-appbar')
125
125
  expect(document.body.innerHTML).toContain('my-appbar')
126
126
  })
@@ -140,7 +140,7 @@ describe('PageLayout component', () => {
140
140
  ),
141
141
  })
142
142
 
143
- await sleepAsync(50)
143
+ await flushUpdates()
144
144
  expect(document.body.innerHTML).not.toContain('page-layout-appbar')
145
145
  })
146
146
  })
@@ -193,7 +193,7 @@ describe('PageLayout component', () => {
193
193
  ),
194
194
  })
195
195
 
196
- await sleepAsync(50)
196
+ await flushUpdates()
197
197
  const pageLayout = document.querySelector('shade-page-layout')
198
198
  expect(pageLayout?.hasAttribute('data-appbar-auto-hide')).toBe(true)
199
199
  })
@@ -218,7 +218,7 @@ describe('PageLayout component', () => {
218
218
  ),
219
219
  })
220
220
 
221
- await sleepAsync(50)
221
+ await flushUpdates()
222
222
  const pageLayout = document.querySelector('shade-page-layout')
223
223
  expect(pageLayout?.hasAttribute('data-appbar-auto-hide')).toBe(false)
224
224
  })
@@ -243,7 +243,7 @@ describe('PageLayout component', () => {
243
243
  ),
244
244
  })
245
245
 
246
- await sleepAsync(50)
246
+ await flushUpdates()
247
247
  // Auto-hide appbars should start hidden (no data-appbar-visible attribute)
248
248
  const pageLayout = document.querySelector('shade-page-layout')
249
249
  expect(pageLayout?.hasAttribute('data-appbar-visible')).toBe(false)
@@ -273,7 +273,7 @@ describe('PageLayout component', () => {
273
273
  ),
274
274
  })
275
275
 
276
- await sleepAsync(50)
276
+ await flushUpdates()
277
277
  expect(document.body.innerHTML).toContain('page-layout-drawer-left')
278
278
  expect(document.body.innerHTML).toContain('left-drawer')
279
279
  })
@@ -293,7 +293,7 @@ describe('PageLayout component', () => {
293
293
  ),
294
294
  })
295
295
 
296
- await sleepAsync(50)
296
+ await flushUpdates()
297
297
  expect(document.body.innerHTML).not.toContain('page-layout-drawer-left')
298
298
  })
299
299
  })
@@ -402,7 +402,7 @@ describe('PageLayout component', () => {
402
402
  ),
403
403
  })
404
404
 
405
- await sleepAsync(50)
405
+ await flushUpdates()
406
406
  const pageLayout = document.querySelector('shade-page-layout')
407
407
  expect(pageLayout?.hasAttribute('data-drawer-left-closed')).toBe(true)
408
408
  })
@@ -431,7 +431,7 @@ describe('PageLayout component', () => {
431
431
  ),
432
432
  })
433
433
 
434
- await sleepAsync(50)
434
+ await flushUpdates()
435
435
  expect(document.body.innerHTML).toContain('page-layout-drawer-right')
436
436
  expect(document.body.innerHTML).toContain('right-drawer')
437
437
  })
@@ -451,7 +451,7 @@ describe('PageLayout component', () => {
451
451
  ),
452
452
  })
453
453
 
454
- await sleepAsync(50)
454
+ await flushUpdates()
455
455
  expect(document.body.innerHTML).not.toContain('page-layout-drawer-right')
456
456
  })
457
457
  })
@@ -504,7 +504,7 @@ describe('PageLayout component', () => {
504
504
  ),
505
505
  })
506
506
 
507
- await sleepAsync(50)
507
+ await flushUpdates()
508
508
  expect(document.body.innerHTML).toContain('page-layout-drawer-left')
509
509
  expect(document.body.innerHTML).toContain('page-layout-drawer-right')
510
510
  })
@@ -559,7 +559,7 @@ describe('PageLayout component', () => {
559
559
  ),
560
560
  })
561
561
 
562
- await sleepAsync(50)
562
+ await flushUpdates()
563
563
  expect(document.body.innerHTML).toContain('page-layout-drawer-backdrop')
564
564
  })
565
565
  })
@@ -586,7 +586,7 @@ describe('PageLayout component', () => {
586
586
  ),
587
587
  })
588
588
 
589
- await sleepAsync(50)
589
+ await flushUpdates()
590
590
  const pageLayout = document.querySelector('shade-page-layout')
591
591
  expect(pageLayout?.hasAttribute('data-backdrop-visible')).toBe(true)
592
592
  })
@@ -614,13 +614,13 @@ describe('PageLayout component', () => {
614
614
  ),
615
615
  })
616
616
 
617
- await sleepAsync(50)
617
+ await flushUpdates()
618
618
  const pageLayout = document.querySelector('shade-page-layout')
619
619
  expect(pageLayout?.hasAttribute('data-drawer-left-closed')).toBe(false)
620
620
 
621
621
  const backdrop = document.querySelector('.page-layout-drawer-backdrop') as HTMLElement
622
622
  backdrop.click()
623
- await sleepAsync(50)
623
+ await flushUpdates()
624
624
 
625
625
  expect(pageLayout?.hasAttribute('data-drawer-left-closed')).toBe(true)
626
626
  })
@@ -642,7 +642,7 @@ describe('PageLayout component', () => {
642
642
  ),
643
643
  })
644
644
 
645
- await sleepAsync(50)
645
+ await flushUpdates()
646
646
  expect(document.body.innerHTML).toContain('page-layout-content')
647
647
  })
648
648
  })
@@ -661,7 +661,7 @@ describe('PageLayout component', () => {
661
661
  ),
662
662
  })
663
663
 
664
- await sleepAsync(50)
664
+ await flushUpdates()
665
665
  const pageLayout = document.querySelector('shade-page-layout') as HTMLElement
666
666
  // AppBar height is 0 when not configured, so contentPaddingTop = calc(0px + 0px)
667
667
  expect(pageLayout.style.getPropertyValue('--layout-appbar-height')).toBe('0px')
@@ -689,7 +689,7 @@ describe('PageLayout component', () => {
689
689
  ),
690
690
  })
691
691
 
692
- await sleepAsync(50)
692
+ await flushUpdates()
693
693
  const pageLayout = document.querySelector('shade-page-layout') as HTMLElement
694
694
  // Content padding top CSS variable should be calculated from appBarHeight + topGap
695
695
  expect(pageLayout.style.getPropertyValue('--layout-appbar-height')).toBe('64px')
@@ -718,7 +718,7 @@ describe('PageLayout component', () => {
718
718
  ),
719
719
  })
720
720
 
721
- await sleepAsync(50)
721
+ await flushUpdates()
722
722
  const pageLayout = document.querySelector('shade-page-layout') as HTMLElement
723
723
  expect(pageLayout.style.getPropertyValue('--layout-top-gap')).toBe('16px')
724
724
  expect(pageLayout.style.getPropertyValue('--layout-content-padding-top')).toBe('calc(48px + 16px)')
@@ -739,7 +739,7 @@ describe('PageLayout component', () => {
739
739
  ),
740
740
  })
741
741
 
742
- await sleepAsync(50)
742
+ await flushUpdates()
743
743
  const pageLayout = document.querySelector('shade-page-layout') as HTMLElement
744
744
  expect(pageLayout.style.getPropertyValue('--layout-side-gap')).toBe('24px')
745
745
  })
@@ -774,7 +774,7 @@ describe('PageLayout component', () => {
774
774
  ),
775
775
  })
776
776
 
777
- await sleepAsync(50)
777
+ await flushUpdates()
778
778
 
779
779
  const pageLayout = document.querySelector('shade-page-layout') as HTMLElement & { injector: Injector }
780
780
  const layoutService = pageLayout.injector.getInstance(LayoutService)
@@ -784,7 +784,7 @@ describe('PageLayout component', () => {
784
784
 
785
785
  // Close via LayoutService
786
786
  layoutService.setDrawerOpen('left', false)
787
- await sleepAsync(50)
787
+ await flushUpdates()
788
788
 
789
789
  expect(pageLayout.hasAttribute('data-drawer-left-closed')).toBe(true)
790
790
  })
@@ -809,7 +809,7 @@ describe('PageLayout component', () => {
809
809
  ),
810
810
  })
811
811
 
812
- await sleepAsync(50)
812
+ await flushUpdates()
813
813
 
814
814
  const pageLayout = document.querySelector('shade-page-layout') as HTMLElement & { injector: Injector }
815
815
  const layoutService = pageLayout.injector.getInstance(LayoutService)
@@ -820,7 +820,7 @@ describe('PageLayout component', () => {
820
820
 
821
821
  // Setting appBarVisible to true should persist across re-renders
822
822
  layoutService.appBarVisible.setValue(true)
823
- await sleepAsync(50)
823
+ await flushUpdates()
824
824
 
825
825
  expect(layoutService.appBarVisible.getValue()).toBe(true)
826
826
  expect(pageLayout.hasAttribute('data-appbar-visible')).toBe(true)
@@ -861,7 +861,7 @@ describe('PageLayout component', () => {
861
861
  ),
862
862
  })
863
863
 
864
- await sleepAsync(50)
864
+ await flushUpdates()
865
865
 
866
866
  expect(document.body.innerHTML).toContain('page-layout-appbar')
867
867
  expect(document.body.innerHTML).toContain('page-layout-drawer-left')
@@ -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 { Paper } from './paper.js'
6
6
 
@@ -21,7 +21,7 @@ describe('Paper', () => {
21
21
  rootElement: root,
22
22
  jsxElement: <Paper {...props}>{children}</Paper>,
23
23
  })
24
- await sleepAsync(50)
24
+ await flushUpdates()
25
25
  return {
26
26
  injector,
27
27
  paper: root.querySelector('div[is="shade-paper"]') as HTMLDivElement,