@furystack/shades-common-components 11.0.0 → 12.0.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 (765) hide show
  1. package/CHANGELOG.md +430 -0
  2. package/esm/components/accordion/accordion-item.d.ts +31 -0
  3. package/esm/components/accordion/accordion-item.d.ts.map +1 -0
  4. package/esm/components/accordion/accordion-item.js +147 -0
  5. package/esm/components/accordion/accordion-item.js.map +1 -0
  6. package/esm/components/accordion/accordion.d.ts +27 -0
  7. package/esm/components/accordion/accordion.d.ts.map +1 -0
  8. package/esm/components/accordion/accordion.js +39 -0
  9. package/esm/components/accordion/accordion.js.map +1 -0
  10. package/esm/components/accordion/accordion.spec.d.ts +2 -0
  11. package/esm/components/accordion/accordion.spec.d.ts.map +1 -0
  12. package/esm/components/accordion/accordion.spec.js +284 -0
  13. package/esm/components/accordion/accordion.spec.js.map +1 -0
  14. package/esm/components/accordion/index.d.ts +3 -0
  15. package/esm/components/accordion/index.d.ts.map +1 -0
  16. package/esm/components/accordion/index.js +3 -0
  17. package/esm/components/accordion/index.js.map +1 -0
  18. package/esm/components/alert.d.ts +21 -0
  19. package/esm/components/alert.d.ts.map +1 -0
  20. package/esm/components/alert.js +131 -0
  21. package/esm/components/alert.js.map +1 -0
  22. package/esm/components/alert.spec.d.ts +2 -0
  23. package/esm/components/alert.spec.d.ts.map +1 -0
  24. package/esm/components/alert.spec.js +177 -0
  25. package/esm/components/alert.spec.js.map +1 -0
  26. package/esm/components/app-bar-link.d.ts +22 -2
  27. package/esm/components/app-bar-link.d.ts.map +1 -1
  28. package/esm/components/app-bar-link.js +20 -7
  29. package/esm/components/app-bar-link.js.map +1 -1
  30. package/esm/components/app-bar-link.spec.js +22 -19
  31. package/esm/components/app-bar-link.spec.js.map +1 -1
  32. package/esm/components/app-bar.d.ts +2 -0
  33. package/esm/components/app-bar.d.ts.map +1 -1
  34. package/esm/components/app-bar.js +16 -11
  35. package/esm/components/app-bar.js.map +1 -1
  36. package/esm/components/app-bar.spec.js +67 -52
  37. package/esm/components/app-bar.spec.js.map +1 -1
  38. package/esm/components/avatar.d.ts +2 -0
  39. package/esm/components/avatar.d.ts.map +1 -1
  40. package/esm/components/avatar.js +40 -37
  41. package/esm/components/avatar.js.map +1 -1
  42. package/esm/components/badge.d.ts +35 -0
  43. package/esm/components/badge.d.ts.map +1 -0
  44. package/esm/components/badge.js +68 -0
  45. package/esm/components/badge.js.map +1 -0
  46. package/esm/components/badge.spec.d.ts +2 -0
  47. package/esm/components/badge.spec.d.ts.map +1 -0
  48. package/esm/components/badge.spec.js +157 -0
  49. package/esm/components/badge.spec.js.map +1 -0
  50. package/esm/components/breadcrumb.d.ts +103 -0
  51. package/esm/components/breadcrumb.d.ts.map +1 -0
  52. package/esm/components/breadcrumb.js +121 -0
  53. package/esm/components/breadcrumb.js.map +1 -0
  54. package/esm/components/breadcrumb.spec.d.ts +2 -0
  55. package/esm/components/breadcrumb.spec.d.ts.map +1 -0
  56. package/esm/components/breadcrumb.spec.js +251 -0
  57. package/esm/components/breadcrumb.spec.js.map +1 -0
  58. package/esm/components/button-group.d.ts +85 -0
  59. package/esm/components/button-group.d.ts.map +1 -0
  60. package/esm/components/button-group.js +290 -0
  61. package/esm/components/button-group.js.map +1 -0
  62. package/esm/components/button-group.spec.d.ts +2 -0
  63. package/esm/components/button-group.spec.d.ts.map +1 -0
  64. package/esm/components/button-group.spec.js +502 -0
  65. package/esm/components/button-group.spec.js.map +1 -0
  66. package/esm/components/button.d.ts +44 -2
  67. package/esm/components/button.d.ts.map +1 -1
  68. package/esm/components/button.js +82 -73
  69. package/esm/components/button.js.map +1 -1
  70. package/esm/components/button.spec.js +205 -50
  71. package/esm/components/button.spec.js.map +1 -1
  72. package/esm/components/card.d.ts +117 -0
  73. package/esm/components/card.d.ts.map +1 -0
  74. package/esm/components/card.js +181 -0
  75. package/esm/components/card.js.map +1 -0
  76. package/esm/components/card.spec.d.ts +2 -0
  77. package/esm/components/card.spec.d.ts.map +1 -0
  78. package/esm/components/card.spec.js +278 -0
  79. package/esm/components/card.spec.js.map +1 -0
  80. package/esm/components/carousel.d.ts +50 -0
  81. package/esm/components/carousel.d.ts.map +1 -0
  82. package/esm/components/carousel.js +263 -0
  83. package/esm/components/carousel.js.map +1 -0
  84. package/esm/components/carousel.spec.d.ts +2 -0
  85. package/esm/components/carousel.spec.d.ts.map +1 -0
  86. package/esm/components/carousel.spec.js +677 -0
  87. package/esm/components/carousel.spec.js.map +1 -0
  88. package/esm/components/chip.d.ts +23 -0
  89. package/esm/components/chip.d.ts.map +1 -0
  90. package/esm/components/chip.js +139 -0
  91. package/esm/components/chip.js.map +1 -0
  92. package/esm/components/chip.spec.d.ts +2 -0
  93. package/esm/components/chip.spec.d.ts.map +1 -0
  94. package/esm/components/chip.spec.js +142 -0
  95. package/esm/components/chip.spec.js.map +1 -0
  96. package/esm/components/circular-progress.d.ts +37 -0
  97. package/esm/components/circular-progress.d.ts.map +1 -0
  98. package/esm/components/circular-progress.js +84 -0
  99. package/esm/components/circular-progress.js.map +1 -0
  100. package/esm/components/circular-progress.spec.d.ts +2 -0
  101. package/esm/components/circular-progress.spec.d.ts.map +1 -0
  102. package/esm/components/circular-progress.spec.js +228 -0
  103. package/esm/components/circular-progress.spec.js.map +1 -0
  104. package/esm/components/command-palette/command-palette-input.d.ts +3 -0
  105. package/esm/components/command-palette/command-palette-input.d.ts.map +1 -1
  106. package/esm/components/command-palette/command-palette-input.js +17 -9
  107. package/esm/components/command-palette/command-palette-input.js.map +1 -1
  108. package/esm/components/command-palette/command-palette-input.spec.js +172 -161
  109. package/esm/components/command-palette/command-palette-input.spec.js.map +1 -1
  110. package/esm/components/command-palette/command-palette-manager.spec.js +130 -114
  111. package/esm/components/command-palette/command-palette-manager.spec.js.map +1 -1
  112. package/esm/components/command-palette/command-palette-suggestion-list.d.ts +2 -0
  113. package/esm/components/command-palette/command-palette-suggestion-list.d.ts.map +1 -1
  114. package/esm/components/command-palette/command-palette-suggestion-list.js +20 -20
  115. package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
  116. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +296 -278
  117. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
  118. package/esm/components/command-palette/index.d.ts +2 -0
  119. package/esm/components/command-palette/index.d.ts.map +1 -1
  120. package/esm/components/command-palette/index.js +25 -94
  121. package/esm/components/command-palette/index.js.map +1 -1
  122. package/esm/components/command-palette/index.spec.js +12 -12
  123. package/esm/components/command-palette/index.spec.js.map +1 -1
  124. package/esm/components/context-menu/context-menu-item.d.ts +9 -0
  125. package/esm/components/context-menu/context-menu-item.d.ts.map +1 -0
  126. package/esm/components/context-menu/context-menu-item.js +56 -0
  127. package/esm/components/context-menu/context-menu-item.js.map +1 -0
  128. package/esm/components/context-menu/context-menu-manager.d.ts +52 -0
  129. package/esm/components/context-menu/context-menu-manager.d.ts.map +1 -0
  130. package/esm/components/context-menu/context-menu-manager.js +128 -0
  131. package/esm/components/context-menu/context-menu-manager.js.map +1 -0
  132. package/esm/components/context-menu/context-menu-manager.spec.d.ts +2 -0
  133. package/esm/components/context-menu/context-menu-manager.spec.d.ts.map +1 -0
  134. package/esm/components/context-menu/context-menu-manager.spec.js +332 -0
  135. package/esm/components/context-menu/context-menu-manager.spec.js.map +1 -0
  136. package/esm/components/context-menu/context-menu.d.ts +8 -0
  137. package/esm/components/context-menu/context-menu.d.ts.map +1 -0
  138. package/esm/components/context-menu/context-menu.js +79 -0
  139. package/esm/components/context-menu/context-menu.js.map +1 -0
  140. package/esm/components/context-menu/context-menu.spec.d.ts +2 -0
  141. package/esm/components/context-menu/context-menu.spec.d.ts.map +1 -0
  142. package/esm/components/context-menu/context-menu.spec.js +282 -0
  143. package/esm/components/context-menu/context-menu.spec.js.map +1 -0
  144. package/esm/components/context-menu/index.d.ts +4 -0
  145. package/esm/components/context-menu/index.d.ts.map +1 -0
  146. package/esm/components/context-menu/index.js +4 -0
  147. package/esm/components/context-menu/index.js.map +1 -0
  148. package/esm/components/data-grid/body.spec.js +194 -184
  149. package/esm/components/data-grid/body.spec.js.map +1 -1
  150. package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
  151. package/esm/components/data-grid/data-grid-row.js +66 -54
  152. package/esm/components/data-grid/data-grid-row.js.map +1 -1
  153. package/esm/components/data-grid/data-grid-row.spec.js +127 -95
  154. package/esm/components/data-grid/data-grid-row.spec.js.map +1 -1
  155. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  156. package/esm/components/data-grid/data-grid.js +17 -16
  157. package/esm/components/data-grid/data-grid.js.map +1 -1
  158. package/esm/components/data-grid/data-grid.spec.js +454 -429
  159. package/esm/components/data-grid/data-grid.spec.js.map +1 -1
  160. package/esm/components/data-grid/footer.spec.js +215 -203
  161. package/esm/components/data-grid/footer.spec.js.map +1 -1
  162. package/esm/components/data-grid/header.d.ts +3 -1
  163. package/esm/components/data-grid/header.d.ts.map +1 -1
  164. package/esm/components/data-grid/header.js +42 -30
  165. package/esm/components/data-grid/header.js.map +1 -1
  166. package/esm/components/data-grid/header.spec.js +330 -307
  167. package/esm/components/data-grid/header.spec.js.map +1 -1
  168. package/esm/components/data-grid/selection-cell.d.ts +2 -0
  169. package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
  170. package/esm/components/data-grid/selection-cell.js +2 -7
  171. package/esm/components/data-grid/selection-cell.js.map +1 -1
  172. package/esm/components/data-grid/selection-cell.spec.js +45 -36
  173. package/esm/components/data-grid/selection-cell.spec.js.map +1 -1
  174. package/esm/components/dialog.d.ts +46 -0
  175. package/esm/components/dialog.d.ts.map +1 -0
  176. package/esm/components/dialog.js +178 -0
  177. package/esm/components/dialog.js.map +1 -0
  178. package/esm/components/dialog.spec.d.ts +2 -0
  179. package/esm/components/dialog.spec.d.ts.map +1 -0
  180. package/esm/components/dialog.spec.js +113 -0
  181. package/esm/components/dialog.spec.js.map +1 -0
  182. package/esm/components/divider.d.ts +22 -0
  183. package/esm/components/divider.d.ts.map +1 -0
  184. package/esm/components/divider.js +113 -0
  185. package/esm/components/divider.js.map +1 -0
  186. package/esm/components/divider.spec.d.ts +2 -0
  187. package/esm/components/divider.spec.d.ts.map +1 -0
  188. package/esm/components/divider.spec.js +136 -0
  189. package/esm/components/divider.spec.js.map +1 -0
  190. package/esm/components/drawer/drawer-toggle-button.d.ts +36 -0
  191. package/esm/components/drawer/drawer-toggle-button.d.ts.map +1 -0
  192. package/esm/components/drawer/drawer-toggle-button.js +94 -0
  193. package/esm/components/drawer/drawer-toggle-button.js.map +1 -0
  194. package/esm/components/drawer/drawer-toggle-button.spec.d.ts +2 -0
  195. package/esm/components/drawer/drawer-toggle-button.spec.d.ts.map +1 -0
  196. package/esm/components/drawer/drawer-toggle-button.spec.js +306 -0
  197. package/esm/components/drawer/drawer-toggle-button.spec.js.map +1 -0
  198. package/esm/components/drawer/index.d.ts +56 -0
  199. package/esm/components/drawer/index.d.ts.map +1 -0
  200. package/esm/components/drawer/index.js +172 -0
  201. package/esm/components/drawer/index.js.map +1 -0
  202. package/esm/components/drawer/index.spec.d.ts +2 -0
  203. package/esm/components/drawer/index.spec.d.ts.map +1 -0
  204. package/esm/components/drawer/index.spec.js +538 -0
  205. package/esm/components/drawer/index.spec.js.map +1 -0
  206. package/esm/components/dropdown.d.ts +15 -0
  207. package/esm/components/dropdown.d.ts.map +1 -0
  208. package/esm/components/dropdown.js +262 -0
  209. package/esm/components/dropdown.js.map +1 -0
  210. package/esm/components/dropdown.spec.d.ts +2 -0
  211. package/esm/components/dropdown.spec.d.ts.map +1 -0
  212. package/esm/components/dropdown.spec.js +372 -0
  213. package/esm/components/dropdown.spec.js.map +1 -0
  214. package/esm/components/fab.d.ts +10 -1
  215. package/esm/components/fab.d.ts.map +1 -1
  216. package/esm/components/fab.js +24 -8
  217. package/esm/components/fab.js.map +1 -1
  218. package/esm/components/fab.spec.js +50 -39
  219. package/esm/components/fab.spec.js.map +1 -1
  220. package/esm/components/form.d.ts.map +1 -1
  221. package/esm/components/form.js +9 -7
  222. package/esm/components/form.js.map +1 -1
  223. package/esm/components/form.spec.js +209 -199
  224. package/esm/components/form.spec.js.map +1 -1
  225. package/esm/components/grid.js +10 -10
  226. package/esm/components/grid.js.map +1 -1
  227. package/esm/components/grid.spec.js +109 -85
  228. package/esm/components/grid.spec.js.map +1 -1
  229. package/esm/components/icons/icon-definitions.d.ts +140 -0
  230. package/esm/components/icons/icon-definitions.d.ts.map +1 -0
  231. package/esm/components/icons/icon-definitions.js +432 -0
  232. package/esm/components/icons/icon-definitions.js.map +1 -0
  233. package/esm/components/icons/icon-definitions.spec.d.ts +2 -0
  234. package/esm/components/icons/icon-definitions.spec.d.ts.map +1 -0
  235. package/esm/components/icons/icon-definitions.spec.js +59 -0
  236. package/esm/components/icons/icon-definitions.spec.js.map +1 -0
  237. package/esm/components/icons/icon-types.d.ts +48 -0
  238. package/esm/components/icons/icon-types.d.ts.map +1 -0
  239. package/esm/components/icons/icon-types.js +2 -0
  240. package/esm/components/icons/icon-types.js.map +1 -0
  241. package/esm/components/icons/icon.d.ts +56 -0
  242. package/esm/components/icons/icon.d.ts.map +1 -0
  243. package/esm/components/icons/icon.js +61 -0
  244. package/esm/components/icons/icon.js.map +1 -0
  245. package/esm/components/icons/icon.spec.d.ts +2 -0
  246. package/esm/components/icons/icon.spec.d.ts.map +1 -0
  247. package/esm/components/icons/icon.spec.js +224 -0
  248. package/esm/components/icons/icon.spec.js.map +1 -0
  249. package/esm/components/icons/index.d.ts +5 -0
  250. package/esm/components/icons/index.d.ts.map +1 -0
  251. package/esm/components/icons/index.js +3 -0
  252. package/esm/components/icons/index.js.map +1 -0
  253. package/esm/components/image.d.ts +62 -0
  254. package/esm/components/image.d.ts.map +1 -0
  255. package/esm/components/image.js +348 -0
  256. package/esm/components/image.js.map +1 -0
  257. package/esm/components/image.spec.d.ts +2 -0
  258. package/esm/components/image.spec.d.ts.map +1 -0
  259. package/esm/components/image.spec.js +542 -0
  260. package/esm/components/image.spec.js.map +1 -0
  261. package/esm/components/index.d.ts +32 -4
  262. package/esm/components/index.d.ts.map +1 -1
  263. package/esm/components/index.js +32 -4
  264. package/esm/components/index.js.map +1 -1
  265. package/esm/components/inputs/autocomplete.d.ts +2 -0
  266. package/esm/components/inputs/autocomplete.d.ts.map +1 -1
  267. package/esm/components/inputs/autocomplete.js +10 -6
  268. package/esm/components/inputs/autocomplete.js.map +1 -1
  269. package/esm/components/inputs/autocomplete.spec.js +10 -1
  270. package/esm/components/inputs/autocomplete.spec.js.map +1 -1
  271. package/esm/components/inputs/checkbox.d.ts +50 -0
  272. package/esm/components/inputs/checkbox.d.ts.map +1 -0
  273. package/esm/components/inputs/checkbox.js +126 -0
  274. package/esm/components/inputs/checkbox.js.map +1 -0
  275. package/esm/components/inputs/checkbox.spec.d.ts +2 -0
  276. package/esm/components/inputs/checkbox.spec.d.ts.map +1 -0
  277. package/esm/components/inputs/checkbox.spec.js +287 -0
  278. package/esm/components/inputs/checkbox.spec.js.map +1 -0
  279. package/esm/components/inputs/index.d.ts +7 -0
  280. package/esm/components/inputs/index.d.ts.map +1 -1
  281. package/esm/components/inputs/index.js +7 -0
  282. package/esm/components/inputs/index.js.map +1 -1
  283. package/esm/components/inputs/input-number.d.ts +79 -0
  284. package/esm/components/inputs/input-number.d.ts.map +1 -0
  285. package/esm/components/inputs/input-number.js +232 -0
  286. package/esm/components/inputs/input-number.js.map +1 -0
  287. package/esm/components/inputs/input-number.spec.d.ts +2 -0
  288. package/esm/components/inputs/input-number.spec.d.ts.map +1 -0
  289. package/esm/components/inputs/input-number.spec.js +516 -0
  290. package/esm/components/inputs/input-number.spec.js.map +1 -0
  291. package/esm/components/inputs/input.d.ts +2 -1
  292. package/esm/components/inputs/input.d.ts.map +1 -1
  293. package/esm/components/inputs/input.js +86 -116
  294. package/esm/components/inputs/input.js.map +1 -1
  295. package/esm/components/inputs/input.spec.js +461 -427
  296. package/esm/components/inputs/input.spec.js.map +1 -1
  297. package/esm/components/inputs/radio-group.d.ts +38 -0
  298. package/esm/components/inputs/radio-group.d.ts.map +1 -0
  299. package/esm/components/inputs/radio-group.js +58 -0
  300. package/esm/components/inputs/radio-group.js.map +1 -0
  301. package/esm/components/inputs/radio-group.spec.d.ts +2 -0
  302. package/esm/components/inputs/radio-group.spec.d.ts.map +1 -0
  303. package/esm/components/inputs/radio-group.spec.js +201 -0
  304. package/esm/components/inputs/radio-group.spec.js.map +1 -0
  305. package/esm/components/inputs/radio.d.ts +42 -0
  306. package/esm/components/inputs/radio.d.ts.map +1 -0
  307. package/esm/components/inputs/radio.js +134 -0
  308. package/esm/components/inputs/radio.js.map +1 -0
  309. package/esm/components/inputs/radio.spec.d.ts +2 -0
  310. package/esm/components/inputs/radio.spec.d.ts.map +1 -0
  311. package/esm/components/inputs/radio.spec.js +211 -0
  312. package/esm/components/inputs/radio.spec.js.map +1 -0
  313. package/esm/components/inputs/select.d.ts +67 -0
  314. package/esm/components/inputs/select.d.ts.map +1 -0
  315. package/esm/components/inputs/select.js +581 -0
  316. package/esm/components/inputs/select.js.map +1 -0
  317. package/esm/components/inputs/select.spec.d.ts +2 -0
  318. package/esm/components/inputs/select.spec.d.ts.map +1 -0
  319. package/esm/components/inputs/select.spec.js +1009 -0
  320. package/esm/components/inputs/select.spec.js.map +1 -0
  321. package/esm/components/inputs/slider.d.ts +66 -0
  322. package/esm/components/inputs/slider.d.ts.map +1 -0
  323. package/esm/components/inputs/slider.js +526 -0
  324. package/esm/components/inputs/slider.js.map +1 -0
  325. package/esm/components/inputs/slider.spec.d.ts +2 -0
  326. package/esm/components/inputs/slider.spec.d.ts.map +1 -0
  327. package/esm/components/inputs/slider.spec.js +812 -0
  328. package/esm/components/inputs/slider.spec.js.map +1 -0
  329. package/esm/components/inputs/switch.d.ts +50 -0
  330. package/esm/components/inputs/switch.d.ts.map +1 -0
  331. package/esm/components/inputs/switch.js +138 -0
  332. package/esm/components/inputs/switch.js.map +1 -0
  333. package/esm/components/inputs/switch.spec.d.ts +2 -0
  334. package/esm/components/inputs/switch.spec.d.ts.map +1 -0
  335. package/esm/components/inputs/switch.spec.js +313 -0
  336. package/esm/components/inputs/switch.spec.js.map +1 -0
  337. package/esm/components/inputs/text-area.d.ts +2 -0
  338. package/esm/components/inputs/text-area.d.ts.map +1 -1
  339. package/esm/components/inputs/text-area.js +13 -21
  340. package/esm/components/inputs/text-area.js.map +1 -1
  341. package/esm/components/inputs/text-area.spec.js +171 -156
  342. package/esm/components/inputs/text-area.spec.js.map +1 -1
  343. package/esm/components/linear-progress.d.ts +32 -0
  344. package/esm/components/linear-progress.d.ts.map +1 -0
  345. package/esm/components/linear-progress.js +79 -0
  346. package/esm/components/linear-progress.js.map +1 -0
  347. package/esm/components/linear-progress.spec.d.ts +2 -0
  348. package/esm/components/linear-progress.spec.d.ts.map +1 -0
  349. package/esm/components/linear-progress.spec.js +251 -0
  350. package/esm/components/linear-progress.spec.js.map +1 -0
  351. package/esm/components/list/index.d.ts +3 -0
  352. package/esm/components/list/index.d.ts.map +1 -0
  353. package/esm/components/list/index.js +3 -0
  354. package/esm/components/list/index.js.map +1 -0
  355. package/esm/components/list/list-item.d.ts +13 -0
  356. package/esm/components/list/list-item.d.ts.map +1 -0
  357. package/esm/components/list/list-item.js +81 -0
  358. package/esm/components/list/list-item.js.map +1 -0
  359. package/esm/components/list/list.d.ts +18 -0
  360. package/esm/components/list/list.d.ts.map +1 -0
  361. package/esm/components/list/list.js +42 -0
  362. package/esm/components/list/list.js.map +1 -0
  363. package/esm/components/list/list.spec.d.ts +2 -0
  364. package/esm/components/list/list.spec.d.ts.map +1 -0
  365. package/esm/components/list/list.spec.js +540 -0
  366. package/esm/components/list/list.spec.js.map +1 -0
  367. package/esm/components/loader.d.ts +2 -0
  368. package/esm/components/loader.d.ts.map +1 -1
  369. package/esm/components/loader.js +18 -10
  370. package/esm/components/loader.js.map +1 -1
  371. package/esm/components/loader.spec.js +191 -175
  372. package/esm/components/loader.spec.js.map +1 -1
  373. package/esm/components/menu/index.d.ts +3 -0
  374. package/esm/components/menu/index.d.ts.map +1 -0
  375. package/esm/components/menu/index.js +3 -0
  376. package/esm/components/menu/index.js.map +1 -0
  377. package/esm/components/menu/menu-types.d.ts +27 -0
  378. package/esm/components/menu/menu-types.d.ts.map +1 -0
  379. package/esm/components/menu/menu-types.js +22 -0
  380. package/esm/components/menu/menu-types.js.map +1 -0
  381. package/esm/components/menu/menu-types.spec.d.ts +2 -0
  382. package/esm/components/menu/menu-types.spec.d.ts.map +1 -0
  383. package/esm/components/menu/menu-types.spec.js +103 -0
  384. package/esm/components/menu/menu-types.spec.js.map +1 -0
  385. package/esm/components/menu/menu.d.ts +17 -0
  386. package/esm/components/menu/menu.d.ts.map +1 -0
  387. package/esm/components/menu/menu.js +240 -0
  388. package/esm/components/menu/menu.js.map +1 -0
  389. package/esm/components/menu/menu.spec.d.ts +2 -0
  390. package/esm/components/menu/menu.spec.d.ts.map +1 -0
  391. package/esm/components/menu/menu.spec.js +427 -0
  392. package/esm/components/menu/menu.spec.js.map +1 -0
  393. package/esm/components/modal.d.ts +3 -2
  394. package/esm/components/modal.d.ts.map +1 -1
  395. package/esm/components/modal.js +8 -5
  396. package/esm/components/modal.js.map +1 -1
  397. package/esm/components/modal.spec.js +50 -43
  398. package/esm/components/modal.spec.js.map +1 -1
  399. package/esm/components/noty-list.d.ts +4 -0
  400. package/esm/components/noty-list.d.ts.map +1 -1
  401. package/esm/components/noty-list.js +65 -53
  402. package/esm/components/noty-list.js.map +1 -1
  403. package/esm/components/noty-list.spec.js +71 -68
  404. package/esm/components/noty-list.spec.js.map +1 -1
  405. package/esm/components/page-container/index.d.ts +54 -0
  406. package/esm/components/page-container/index.d.ts.map +1 -0
  407. package/esm/components/page-container/index.js +63 -0
  408. package/esm/components/page-container/index.js.map +1 -0
  409. package/esm/components/page-container/index.spec.d.ts +2 -0
  410. package/esm/components/page-container/index.spec.d.ts.map +1 -0
  411. package/esm/components/page-container/index.spec.js +217 -0
  412. package/esm/components/page-container/index.spec.js.map +1 -0
  413. package/esm/components/page-container/page-header.d.ts +57 -0
  414. package/esm/components/page-container/page-header.d.ts.map +1 -0
  415. package/esm/components/page-container/page-header.js +93 -0
  416. package/esm/components/page-container/page-header.js.map +1 -0
  417. package/esm/components/page-container/page-header.spec.d.ts +2 -0
  418. package/esm/components/page-container/page-header.spec.d.ts.map +1 -0
  419. package/esm/components/page-container/page-header.spec.js +230 -0
  420. package/esm/components/page-container/page-header.spec.js.map +1 -0
  421. package/esm/components/page-layout/index.d.ts +83 -0
  422. package/esm/components/page-layout/index.d.ts.map +1 -0
  423. package/esm/components/page-layout/index.js +288 -0
  424. package/esm/components/page-layout/index.js.map +1 -0
  425. package/esm/components/page-layout/index.spec.d.ts +2 -0
  426. package/esm/components/page-layout/index.spec.d.ts.map +1 -0
  427. package/esm/components/page-layout/index.spec.js +637 -0
  428. package/esm/components/page-layout/index.spec.js.map +1 -0
  429. package/esm/components/pagination.d.ts +43 -0
  430. package/esm/components/pagination.d.ts.map +1 -0
  431. package/esm/components/pagination.js +165 -0
  432. package/esm/components/pagination.js.map +1 -0
  433. package/esm/components/pagination.spec.d.ts +2 -0
  434. package/esm/components/pagination.spec.d.ts.map +1 -0
  435. package/esm/components/pagination.spec.js +195 -0
  436. package/esm/components/pagination.spec.js.map +1 -0
  437. package/esm/components/paper.d.ts +3 -1
  438. package/esm/components/paper.d.ts.map +1 -1
  439. package/esm/components/paper.js +11 -9
  440. package/esm/components/paper.js.map +1 -1
  441. package/esm/components/paper.spec.js +26 -18
  442. package/esm/components/paper.spec.js.map +1 -1
  443. package/esm/components/rating.d.ts +62 -0
  444. package/esm/components/rating.d.ts.map +1 -0
  445. package/esm/components/rating.js +201 -0
  446. package/esm/components/rating.js.map +1 -0
  447. package/esm/components/rating.spec.d.ts +2 -0
  448. package/esm/components/rating.spec.d.ts.map +1 -0
  449. package/esm/components/rating.spec.js +663 -0
  450. package/esm/components/rating.spec.js.map +1 -0
  451. package/esm/components/result.d.ts +37 -0
  452. package/esm/components/result.d.ts.map +1 -0
  453. package/esm/components/result.js +109 -0
  454. package/esm/components/result.js.map +1 -0
  455. package/esm/components/result.spec.d.ts +2 -0
  456. package/esm/components/result.spec.d.ts.map +1 -0
  457. package/esm/components/result.spec.js +159 -0
  458. package/esm/components/result.spec.js.map +1 -0
  459. package/esm/components/searchable-input-styles.d.ts +8 -0
  460. package/esm/components/searchable-input-styles.d.ts.map +1 -0
  461. package/esm/components/searchable-input-styles.js +71 -0
  462. package/esm/components/searchable-input-styles.js.map +1 -0
  463. package/esm/components/skeleton.d.ts +2 -0
  464. package/esm/components/skeleton.d.ts.map +1 -1
  465. package/esm/components/skeleton.js +19 -6
  466. package/esm/components/skeleton.js.map +1 -1
  467. package/esm/components/skeleton.spec.js +103 -95
  468. package/esm/components/skeleton.spec.js.map +1 -1
  469. package/esm/components/styles.d.ts.map +1 -1
  470. package/esm/components/styles.js +14 -13
  471. package/esm/components/styles.js.map +1 -1
  472. package/esm/components/styles.spec.js +27 -26
  473. package/esm/components/styles.spec.js.map +1 -1
  474. package/esm/components/suggest/index.d.ts.map +1 -1
  475. package/esm/components/suggest/index.js +24 -85
  476. package/esm/components/suggest/index.js.map +1 -1
  477. package/esm/components/suggest/index.spec.js +402 -378
  478. package/esm/components/suggest/index.spec.js.map +1 -1
  479. package/esm/components/suggest/suggest-input.d.ts +2 -0
  480. package/esm/components/suggest/suggest-input.d.ts.map +1 -1
  481. package/esm/components/suggest/suggest-input.js +10 -8
  482. package/esm/components/suggest/suggest-input.js.map +1 -1
  483. package/esm/components/suggest/suggest-input.spec.js +83 -71
  484. package/esm/components/suggest/suggest-input.spec.js.map +1 -1
  485. package/esm/components/suggest/suggest-manager.spec.js +102 -92
  486. package/esm/components/suggest/suggest-manager.spec.js.map +1 -1
  487. package/esm/components/suggest/suggestion-list.d.ts.map +1 -1
  488. package/esm/components/suggest/suggestion-list.js +21 -22
  489. package/esm/components/suggest/suggestion-list.js.map +1 -1
  490. package/esm/components/suggest/suggestion-list.spec.js +165 -146
  491. package/esm/components/suggest/suggestion-list.spec.js.map +1 -1
  492. package/esm/components/tabs.d.ts +18 -2
  493. package/esm/components/tabs.d.ts.map +1 -1
  494. package/esm/components/tabs.js +154 -14
  495. package/esm/components/tabs.js.map +1 -1
  496. package/esm/components/tabs.spec.js +295 -7
  497. package/esm/components/tabs.spec.js.map +1 -1
  498. package/esm/components/timeline.d.ts +53 -0
  499. package/esm/components/timeline.d.ts.map +1 -0
  500. package/esm/components/timeline.js +162 -0
  501. package/esm/components/timeline.js.map +1 -0
  502. package/esm/components/timeline.spec.d.ts +2 -0
  503. package/esm/components/timeline.spec.d.ts.map +1 -0
  504. package/esm/components/timeline.spec.js +209 -0
  505. package/esm/components/timeline.spec.js.map +1 -0
  506. package/esm/components/tooltip.d.ts +25 -0
  507. package/esm/components/tooltip.d.ts.map +1 -0
  508. package/esm/components/tooltip.js +113 -0
  509. package/esm/components/tooltip.js.map +1 -0
  510. package/esm/components/tooltip.spec.d.ts +2 -0
  511. package/esm/components/tooltip.spec.d.ts.map +1 -0
  512. package/esm/components/tooltip.spec.js +152 -0
  513. package/esm/components/tooltip.spec.js.map +1 -0
  514. package/esm/components/tree/index.d.ts +3 -0
  515. package/esm/components/tree/index.d.ts.map +1 -0
  516. package/esm/components/tree/index.js +3 -0
  517. package/esm/components/tree/index.js.map +1 -0
  518. package/esm/components/tree/tree-item.d.ts +14 -0
  519. package/esm/components/tree/tree-item.d.ts.map +1 -0
  520. package/esm/components/tree/tree-item.js +118 -0
  521. package/esm/components/tree/tree-item.js.map +1 -0
  522. package/esm/components/tree/tree.d.ts +20 -0
  523. package/esm/components/tree/tree.d.ts.map +1 -0
  524. package/esm/components/tree/tree.js +66 -0
  525. package/esm/components/tree/tree.js.map +1 -0
  526. package/esm/components/tree/tree.spec.d.ts +2 -0
  527. package/esm/components/tree/tree.spec.d.ts.map +1 -0
  528. package/esm/components/tree/tree.spec.js +427 -0
  529. package/esm/components/tree/tree.spec.js.map +1 -0
  530. package/esm/components/typography.d.ts +48 -0
  531. package/esm/components/typography.d.ts.map +1 -0
  532. package/esm/components/typography.js +223 -0
  533. package/esm/components/typography.js.map +1 -0
  534. package/esm/components/typography.spec.d.ts +2 -0
  535. package/esm/components/typography.spec.d.ts.map +1 -0
  536. package/esm/components/typography.spec.js +199 -0
  537. package/esm/components/typography.spec.js.map +1 -0
  538. package/esm/components/wizard/index.d.ts +2 -0
  539. package/esm/components/wizard/index.d.ts.map +1 -1
  540. package/esm/components/wizard/index.spec.js +70 -56
  541. package/esm/components/wizard/index.spec.js.map +1 -1
  542. package/esm/services/click-away-service.d.ts +5 -2
  543. package/esm/services/click-away-service.d.ts.map +1 -1
  544. package/esm/services/click-away-service.js +7 -1
  545. package/esm/services/click-away-service.js.map +1 -1
  546. package/esm/services/css-variable-theme.d.ts +167 -1
  547. package/esm/services/css-variable-theme.d.ts.map +1 -1
  548. package/esm/services/css-variable-theme.js +102 -0
  549. package/esm/services/css-variable-theme.js.map +1 -1
  550. package/esm/services/css-variable-theme.spec.js +131 -1
  551. package/esm/services/css-variable-theme.spec.js.map +1 -1
  552. package/esm/services/default-dark-theme.d.ts +107 -2
  553. package/esm/services/default-dark-theme.d.ts.map +1 -1
  554. package/esm/services/default-dark-theme.js +87 -1
  555. package/esm/services/default-dark-theme.js.map +1 -1
  556. package/esm/services/default-light-theme.d.ts +107 -2
  557. package/esm/services/default-light-theme.d.ts.map +1 -1
  558. package/esm/services/default-light-theme.js +86 -0
  559. package/esm/services/default-light-theme.js.map +1 -1
  560. package/esm/services/index.d.ts +6 -2
  561. package/esm/services/index.d.ts.map +1 -1
  562. package/esm/services/index.js +6 -2
  563. package/esm/services/index.js.map +1 -1
  564. package/esm/services/layout-service.d.ts +217 -0
  565. package/esm/services/layout-service.d.ts.map +1 -0
  566. package/esm/services/layout-service.js +331 -0
  567. package/esm/services/layout-service.js.map +1 -0
  568. package/esm/services/layout-service.spec.d.ts +2 -0
  569. package/esm/services/layout-service.spec.d.ts.map +1 -0
  570. package/esm/services/layout-service.spec.js +425 -0
  571. package/esm/services/layout-service.spec.js.map +1 -0
  572. package/esm/services/list-service.d.ts +31 -0
  573. package/esm/services/list-service.d.ts.map +1 -0
  574. package/esm/services/list-service.js +149 -0
  575. package/esm/services/list-service.js.map +1 -0
  576. package/esm/services/list-service.spec.d.ts +2 -0
  577. package/esm/services/list-service.spec.d.ts.map +1 -0
  578. package/esm/services/list-service.spec.js +254 -0
  579. package/esm/services/list-service.spec.js.map +1 -0
  580. package/esm/services/palette-css-vars.d.ts +12 -0
  581. package/esm/services/palette-css-vars.d.ts.map +1 -0
  582. package/esm/services/palette-css-vars.js +44 -0
  583. package/esm/services/palette-css-vars.js.map +1 -0
  584. package/esm/services/theme-provider-service.d.ts +387 -2
  585. package/esm/services/theme-provider-service.d.ts.map +1 -1
  586. package/esm/services/theme-provider-service.js.map +1 -1
  587. package/esm/services/tree-service.d.ts +61 -0
  588. package/esm/services/tree-service.d.ts.map +1 -0
  589. package/esm/services/tree-service.js +149 -0
  590. package/esm/services/tree-service.js.map +1 -0
  591. package/esm/services/tree-service.spec.d.ts +2 -0
  592. package/esm/services/tree-service.spec.d.ts.map +1 -0
  593. package/esm/services/tree-service.spec.js +307 -0
  594. package/esm/services/tree-service.spec.js.map +1 -0
  595. package/esm/utils/promisify-animation.d.ts.map +1 -1
  596. package/esm/utils/promisify-animation.js +6 -1
  597. package/esm/utils/promisify-animation.js.map +1 -1
  598. package/package.json +4 -4
  599. package/src/components/accordion/accordion-item.tsx +197 -0
  600. package/src/components/accordion/accordion.spec.tsx +418 -0
  601. package/src/components/accordion/accordion.tsx +50 -0
  602. package/src/components/accordion/index.ts +2 -0
  603. package/src/components/alert.spec.tsx +256 -0
  604. package/src/components/alert.tsx +186 -0
  605. package/src/components/app-bar-link.spec.tsx +22 -19
  606. package/src/components/app-bar-link.tsx +29 -10
  607. package/src/components/app-bar.spec.tsx +73 -58
  608. package/src/components/app-bar.tsx +19 -12
  609. package/src/components/avatar.tsx +46 -47
  610. package/src/components/badge.spec.tsx +228 -0
  611. package/src/components/badge.tsx +104 -0
  612. package/src/components/breadcrumb.spec.tsx +396 -0
  613. package/src/components/breadcrumb.tsx +188 -0
  614. package/src/components/button-group.spec.tsx +611 -0
  615. package/src/components/button-group.tsx +423 -0
  616. package/src/components/button.spec.tsx +257 -67
  617. package/src/components/button.tsx +130 -80
  618. package/src/components/card.spec.tsx +389 -0
  619. package/src/components/card.tsx +261 -0
  620. package/src/components/carousel.spec.tsx +894 -0
  621. package/src/components/carousel.tsx +376 -0
  622. package/src/components/chip.spec.tsx +200 -0
  623. package/src/components/chip.tsx +188 -0
  624. package/src/components/circular-progress.spec.tsx +289 -0
  625. package/src/components/circular-progress.tsx +145 -0
  626. package/src/components/command-palette/command-palette-input.spec.tsx +209 -198
  627. package/src/components/command-palette/command-palette-input.tsx +25 -9
  628. package/src/components/command-palette/command-palette-manager.spec.ts +132 -117
  629. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +348 -330
  630. package/src/components/command-palette/command-palette-suggestion-list.tsx +22 -20
  631. package/src/components/command-palette/index.spec.tsx +12 -12
  632. package/src/components/command-palette/index.tsx +25 -102
  633. package/src/components/context-menu/context-menu-item.tsx +85 -0
  634. package/src/components/context-menu/context-menu-manager.spec.ts +478 -0
  635. package/src/components/context-menu/context-menu-manager.ts +148 -0
  636. package/src/components/context-menu/context-menu.spec.tsx +352 -0
  637. package/src/components/context-menu/context-menu.tsx +116 -0
  638. package/src/components/context-menu/index.ts +3 -0
  639. package/src/components/data-grid/body.spec.tsx +292 -278
  640. package/src/components/data-grid/data-grid-row.spec.tsx +165 -140
  641. package/src/components/data-grid/data-grid-row.tsx +72 -55
  642. package/src/components/data-grid/data-grid.spec.tsx +743 -718
  643. package/src/components/data-grid/data-grid.tsx +19 -15
  644. package/src/components/data-grid/footer.spec.tsx +249 -237
  645. package/src/components/data-grid/header.spec.tsx +374 -351
  646. package/src/components/data-grid/header.tsx +58 -39
  647. package/src/components/data-grid/selection-cell.spec.tsx +46 -45
  648. package/src/components/data-grid/selection-cell.tsx +2 -6
  649. package/src/components/dialog.spec.tsx +135 -0
  650. package/src/components/dialog.tsx +277 -0
  651. package/src/components/divider.spec.tsx +197 -0
  652. package/src/components/divider.tsx +147 -0
  653. package/src/components/drawer/drawer-toggle-button.spec.tsx +374 -0
  654. package/src/components/drawer/drawer-toggle-button.tsx +124 -0
  655. package/src/components/drawer/index.spec.tsx +748 -0
  656. package/src/components/drawer/index.tsx +227 -0
  657. package/src/components/dropdown.spec.tsx +445 -0
  658. package/src/components/dropdown.tsx +343 -0
  659. package/src/components/fab.spec.tsx +51 -40
  660. package/src/components/fab.tsx +32 -9
  661. package/src/components/form.spec.tsx +303 -293
  662. package/src/components/form.tsx +10 -7
  663. package/src/components/grid.spec.tsx +276 -183
  664. package/src/components/grid.tsx +10 -10
  665. package/src/components/icons/icon-definitions.spec.ts +68 -0
  666. package/src/components/icons/icon-definitions.ts +509 -0
  667. package/src/components/icons/icon-types.ts +48 -0
  668. package/src/components/icons/icon.spec.tsx +314 -0
  669. package/src/components/icons/icon.tsx +111 -0
  670. package/src/components/icons/index.ts +4 -0
  671. package/src/components/image.spec.tsx +748 -0
  672. package/src/components/image.tsx +520 -0
  673. package/src/components/index.ts +32 -4
  674. package/src/components/inputs/autocomplete.spec.tsx +10 -1
  675. package/src/components/inputs/autocomplete.tsx +13 -7
  676. package/src/components/inputs/checkbox.spec.tsx +377 -0
  677. package/src/components/inputs/checkbox.tsx +198 -0
  678. package/src/components/inputs/index.ts +7 -0
  679. package/src/components/inputs/input-number.spec.tsx +686 -0
  680. package/src/components/inputs/input-number.tsx +387 -0
  681. package/src/components/inputs/input.spec.tsx +544 -508
  682. package/src/components/inputs/input.tsx +91 -132
  683. package/src/components/inputs/radio-group.spec.tsx +281 -0
  684. package/src/components/inputs/radio-group.tsx +108 -0
  685. package/src/components/inputs/radio.spec.tsx +273 -0
  686. package/src/components/inputs/radio.tsx +199 -0
  687. package/src/components/inputs/select.spec.tsx +1237 -0
  688. package/src/components/inputs/select.tsx +775 -0
  689. package/src/components/inputs/slider.spec.tsx +1020 -0
  690. package/src/components/inputs/slider.tsx +696 -0
  691. package/src/components/inputs/switch.spec.tsx +410 -0
  692. package/src/components/inputs/switch.tsx +218 -0
  693. package/src/components/inputs/text-area.spec.tsx +186 -171
  694. package/src/components/inputs/text-area.tsx +13 -19
  695. package/src/components/linear-progress.spec.tsx +320 -0
  696. package/src/components/linear-progress.tsx +127 -0
  697. package/src/components/list/index.ts +2 -0
  698. package/src/components/list/list-item.tsx +106 -0
  699. package/src/components/list/list.spec.tsx +817 -0
  700. package/src/components/list/list.tsx +92 -0
  701. package/src/components/loader.spec.tsx +220 -204
  702. package/src/components/loader.tsx +17 -9
  703. package/src/components/menu/index.ts +2 -0
  704. package/src/components/menu/menu-types.spec.ts +122 -0
  705. package/src/components/menu/menu-types.ts +43 -0
  706. package/src/components/menu/menu.spec.tsx +483 -0
  707. package/src/components/menu/menu.tsx +326 -0
  708. package/src/components/modal.spec.tsx +65 -55
  709. package/src/components/modal.tsx +9 -6
  710. package/src/components/noty-list.spec.tsx +78 -75
  711. package/src/components/noty-list.tsx +76 -68
  712. package/src/components/page-container/index.spec.tsx +274 -0
  713. package/src/components/page-container/index.tsx +82 -0
  714. package/src/components/page-container/page-header.spec.tsx +308 -0
  715. package/src/components/page-container/page-header.tsx +127 -0
  716. package/src/components/page-layout/index.spec.tsx +882 -0
  717. package/src/components/page-layout/index.tsx +392 -0
  718. package/src/components/pagination.spec.tsx +275 -0
  719. package/src/components/pagination.tsx +249 -0
  720. package/src/components/paper.spec.tsx +26 -18
  721. package/src/components/paper.tsx +12 -10
  722. package/src/components/rating.spec.tsx +866 -0
  723. package/src/components/rating.tsx +286 -0
  724. package/src/components/result.spec.tsx +221 -0
  725. package/src/components/result.tsx +155 -0
  726. package/src/components/searchable-input-styles.ts +81 -0
  727. package/src/components/skeleton.spec.tsx +126 -118
  728. package/src/components/skeleton.tsx +23 -6
  729. package/src/components/styles.spec.ts +27 -28
  730. package/src/components/styles.tsx +15 -13
  731. package/src/components/suggest/index.spec.tsx +611 -587
  732. package/src/components/suggest/index.tsx +28 -95
  733. package/src/components/suggest/suggest-input.spec.tsx +95 -81
  734. package/src/components/suggest/suggest-input.tsx +9 -7
  735. package/src/components/suggest/suggest-manager.spec.ts +103 -93
  736. package/src/components/suggest/suggestion-list.spec.tsx +194 -173
  737. package/src/components/suggest/suggestion-list.tsx +23 -22
  738. package/src/components/tabs.spec.tsx +369 -7
  739. package/src/components/tabs.tsx +221 -18
  740. package/src/components/timeline.spec.tsx +294 -0
  741. package/src/components/timeline.tsx +221 -0
  742. package/src/components/tooltip.spec.tsx +223 -0
  743. package/src/components/tooltip.tsx +155 -0
  744. package/src/components/tree/index.ts +2 -0
  745. package/src/components/tree/tree-item.tsx +161 -0
  746. package/src/components/tree/tree.spec.tsx +677 -0
  747. package/src/components/tree/tree.tsx +111 -0
  748. package/src/components/typography.spec.tsx +235 -0
  749. package/src/components/typography.tsx +292 -0
  750. package/src/components/wizard/index.spec.tsx +77 -68
  751. package/src/services/click-away-service.ts +9 -3
  752. package/src/services/css-variable-theme.spec.ts +169 -1
  753. package/src/services/css-variable-theme.ts +107 -2
  754. package/src/services/default-dark-theme.ts +89 -3
  755. package/src/services/default-light-theme.ts +88 -2
  756. package/src/services/index.ts +6 -2
  757. package/src/services/layout-service.spec.ts +535 -0
  758. package/src/services/layout-service.ts +391 -0
  759. package/src/services/list-service.spec.ts +364 -0
  760. package/src/services/list-service.ts +169 -0
  761. package/src/services/palette-css-vars.ts +46 -0
  762. package/src/services/theme-provider-service.ts +246 -1
  763. package/src/services/tree-service.spec.ts +428 -0
  764. package/src/services/tree-service.ts +179 -0
  765. package/src/utils/promisify-animation.ts +7 -1
@@ -1,7 +1,7 @@
1
1
  import type { FindOptions } from '@furystack/core'
2
2
  import { Injector } from '@furystack/inject'
3
3
  import { createComponent, initializeShadeRoot } from '@furystack/shades'
4
- import { ObservableValue, sleepAsync } from '@furystack/utils'
4
+ import { ObservableValue, sleepAsync, usingAsync } from '@furystack/utils'
5
5
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
6
6
  import { DataGridHeader, OrderButton } from './header.js'
7
7
 
@@ -48,516 +48,539 @@ describe('DataGridHeader', () => {
48
48
 
49
49
  describe('rendering', () => {
50
50
  it('should render with custom element', async () => {
51
- const injector = new Injector()
52
- const rootElement = document.getElementById('root') as HTMLDivElement
53
- const findOptions = createFindOptions()
54
-
55
- initializeShadeRoot({
56
- injector,
57
- rootElement,
58
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
59
- })
51
+ await usingAsync(new Injector(), async (injector) => {
52
+ const rootElement = document.getElementById('root') as HTMLDivElement
53
+ const findOptions = createFindOptions()
54
+
55
+ initializeShadeRoot({
56
+ injector,
57
+ rootElement,
58
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
59
+ })
60
60
 
61
- await sleepAsync(50)
61
+ await sleepAsync(50)
62
62
 
63
- const header = document.querySelector('data-grid-header')
64
- expect(header).not.toBeNull()
63
+ const header = document.querySelector('data-grid-header')
64
+ expect(header).not.toBeNull()
65
+ })
65
66
  })
66
67
 
67
68
  it('should render field name', async () => {
68
- const injector = new Injector()
69
- const rootElement = document.getElementById('root') as HTMLDivElement
70
- const findOptions = createFindOptions()
71
-
72
- initializeShadeRoot({
73
- injector,
74
- rootElement,
75
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
76
- })
69
+ await usingAsync(new Injector(), async (injector) => {
70
+ const rootElement = document.getElementById('root') as HTMLDivElement
71
+ const findOptions = createFindOptions()
72
+
73
+ initializeShadeRoot({
74
+ injector,
75
+ rootElement,
76
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
77
+ })
77
78
 
78
- await sleepAsync(50)
79
+ await sleepAsync(50)
79
80
 
80
- const header = document.querySelector('data-grid-header')
81
- const fieldName = header?.querySelector('.header-field-name')
82
- expect(fieldName?.textContent).toBe('name')
81
+ const header = document.querySelector('data-grid-header')
82
+ const fieldName = header?.querySelector('.header-field-name')
83
+ expect(fieldName?.textContent).toBe('name')
84
+ })
83
85
  })
84
86
 
85
87
  it('should render order button', async () => {
86
- const injector = new Injector()
87
- const rootElement = document.getElementById('root') as HTMLDivElement
88
- const findOptions = createFindOptions()
89
-
90
- initializeShadeRoot({
91
- injector,
92
- rootElement,
93
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
94
- })
88
+ await usingAsync(new Injector(), async (injector) => {
89
+ const rootElement = document.getElementById('root') as HTMLDivElement
90
+ const findOptions = createFindOptions()
95
91
 
96
- await sleepAsync(50)
92
+ initializeShadeRoot({
93
+ injector,
94
+ rootElement,
95
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
96
+ })
97
97
 
98
- const orderButton = document.querySelector('data-grid-order-button')
99
- expect(orderButton).not.toBeNull()
98
+ await sleepAsync(50)
99
+
100
+ const orderButton = document.querySelector('data-grid-order-button')
101
+ expect(orderButton).not.toBeNull()
102
+ })
100
103
  })
101
104
 
102
105
  it('should render search button', async () => {
103
- const injector = new Injector()
104
- const rootElement = document.getElementById('root') as HTMLDivElement
105
- const findOptions = createFindOptions()
106
-
107
- initializeShadeRoot({
108
- injector,
109
- rootElement,
110
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
111
- })
106
+ await usingAsync(new Injector(), async (injector) => {
107
+ const rootElement = document.getElementById('root') as HTMLDivElement
108
+ const findOptions = createFindOptions()
109
+
110
+ initializeShadeRoot({
111
+ injector,
112
+ rootElement,
113
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
114
+ })
112
115
 
113
- await sleepAsync(50)
116
+ await sleepAsync(50)
114
117
 
115
- const searchButton = document.querySelector('data-grid-search-button')
116
- expect(searchButton).not.toBeNull()
118
+ const searchButton = document.querySelector('data-grid-search-button')
119
+ expect(searchButton).not.toBeNull()
120
+ })
117
121
  })
118
122
 
119
123
  it('should render search form', async () => {
120
- const injector = new Injector()
121
- const rootElement = document.getElementById('root') as HTMLDivElement
122
- const findOptions = createFindOptions()
123
-
124
- initializeShadeRoot({
125
- injector,
126
- rootElement,
127
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
128
- })
124
+ await usingAsync(new Injector(), async (injector) => {
125
+ const rootElement = document.getElementById('root') as HTMLDivElement
126
+ const findOptions = createFindOptions()
129
127
 
130
- await sleepAsync(50)
128
+ initializeShadeRoot({
129
+ injector,
130
+ rootElement,
131
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
132
+ })
131
133
 
132
- const searchForm = document.querySelector('data-grid-search-form')
133
- expect(searchForm).not.toBeNull()
134
+ await sleepAsync(50)
135
+
136
+ const searchForm = document.querySelector('data-grid-search-form')
137
+ expect(searchForm).not.toBeNull()
138
+ })
134
139
  })
135
140
  })
136
141
 
137
142
  describe('OrderButton', () => {
138
143
  it('should show neutral icon when no order is set', async () => {
139
- const injector = new Injector()
140
- const rootElement = document.getElementById('root') as HTMLDivElement
141
- const findOptions = createFindOptions()
142
-
143
- initializeShadeRoot({
144
- injector,
145
- rootElement,
146
- jsxElement: <OrderButton field="name" findOptions={findOptions} />,
147
- })
144
+ await usingAsync(new Injector(), async (injector) => {
145
+ const rootElement = document.getElementById('root') as HTMLDivElement
146
+ const findOptions = createFindOptions()
147
+
148
+ initializeShadeRoot({
149
+ injector,
150
+ rootElement,
151
+ jsxElement: <OrderButton field="name" findOptions={findOptions} />,
152
+ })
148
153
 
149
- await sleepAsync(50)
154
+ await sleepAsync(50)
150
155
 
151
- const button = document.querySelector('data-grid-order-button')
152
- expect(button?.textContent).toContain('')
156
+ const button = document.querySelector('data-grid-order-button')
157
+ expect(button?.querySelector('shade-icon')).not.toBeNull()
158
+ })
153
159
  })
154
160
 
155
161
  it('should show descending icon when ASC order is set for field', async () => {
156
- const injector = new Injector()
157
- const rootElement = document.getElementById('root') as HTMLDivElement
158
- const findOptions = createFindOptions({ order: { name: 'ASC' } })
159
-
160
- initializeShadeRoot({
161
- injector,
162
- rootElement,
163
- jsxElement: <OrderButton field="name" findOptions={findOptions} />,
164
- })
162
+ await usingAsync(new Injector(), async (injector) => {
163
+ const rootElement = document.getElementById('root') as HTMLDivElement
164
+ const findOptions = createFindOptions({ order: { name: 'ASC' } })
165
+
166
+ initializeShadeRoot({
167
+ injector,
168
+ rootElement,
169
+ jsxElement: <OrderButton field="name" findOptions={findOptions} />,
170
+ })
165
171
 
166
- await sleepAsync(50)
172
+ await sleepAsync(50)
167
173
 
168
- const button = document.querySelector('data-grid-order-button')
169
- expect(button?.textContent).toContain('')
174
+ const button = document.querySelector('data-grid-order-button')
175
+ expect(button?.querySelector('shade-icon')).not.toBeNull()
176
+ })
170
177
  })
171
178
 
172
179
  it('should show ascending icon when DESC order is set for field', async () => {
173
- const injector = new Injector()
174
- const rootElement = document.getElementById('root') as HTMLDivElement
175
- const findOptions = createFindOptions({ order: { name: 'DESC' } })
176
-
177
- initializeShadeRoot({
178
- injector,
179
- rootElement,
180
- jsxElement: <OrderButton field="name" findOptions={findOptions} />,
181
- })
180
+ await usingAsync(new Injector(), async (injector) => {
181
+ const rootElement = document.getElementById('root') as HTMLDivElement
182
+ const findOptions = createFindOptions({ order: { name: 'DESC' } })
182
183
 
183
- await sleepAsync(50)
184
+ initializeShadeRoot({
185
+ injector,
186
+ rootElement,
187
+ jsxElement: <OrderButton field="name" findOptions={findOptions} />,
188
+ })
184
189
 
185
- const button = document.querySelector('data-grid-order-button')
186
- expect(button?.textContent).toContain('⬆')
190
+ await sleepAsync(50)
191
+
192
+ const button = document.querySelector('data-grid-order-button')
193
+ expect(button?.querySelector('shade-icon')).not.toBeNull()
194
+ })
187
195
  })
188
196
 
189
197
  it('should show neutral icon when order is set for different field', async () => {
190
- const injector = new Injector()
191
- const rootElement = document.getElementById('root') as HTMLDivElement
192
- const findOptions = createFindOptions({ order: { id: 'ASC' } })
193
-
194
- initializeShadeRoot({
195
- injector,
196
- rootElement,
197
- jsxElement: <OrderButton field="name" findOptions={findOptions} />,
198
- })
198
+ await usingAsync(new Injector(), async (injector) => {
199
+ const rootElement = document.getElementById('root') as HTMLDivElement
200
+ const findOptions = createFindOptions({ order: { id: 'ASC' } })
201
+
202
+ initializeShadeRoot({
203
+ injector,
204
+ rootElement,
205
+ jsxElement: <OrderButton field="name" findOptions={findOptions} />,
206
+ })
199
207
 
200
- await sleepAsync(50)
208
+ await sleepAsync(50)
201
209
 
202
- const button = document.querySelector('data-grid-order-button')
203
- expect(button?.textContent).toContain('')
210
+ const button = document.querySelector('data-grid-order-button')
211
+ expect(button?.querySelector('shade-icon')).not.toBeNull()
212
+ })
204
213
  })
205
214
 
206
215
  it('should toggle order to ASC when clicking on unsorted field', async () => {
207
- const injector = new Injector()
208
- const rootElement = document.getElementById('root') as HTMLDivElement
209
- const findOptions = createFindOptions()
210
-
211
- initializeShadeRoot({
212
- injector,
213
- rootElement,
214
- jsxElement: <OrderButton field="name" findOptions={findOptions} />,
215
- })
216
+ await usingAsync(new Injector(), async (injector) => {
217
+ const rootElement = document.getElementById('root') as HTMLDivElement
218
+ const findOptions = createFindOptions()
216
219
 
217
- await sleepAsync(50)
220
+ initializeShadeRoot({
221
+ injector,
222
+ rootElement,
223
+ jsxElement: <OrderButton field="name" findOptions={findOptions} />,
224
+ })
218
225
 
219
- const button = document.querySelector('data-grid-order-button')?.querySelector('button')
220
- button?.click()
226
+ await sleepAsync(50)
221
227
 
222
- await sleepAsync(50)
228
+ const button = document.querySelector('data-grid-order-button')?.querySelector('button')
229
+ button?.click()
223
230
 
224
- const updatedOptions = findOptions.getValue()
225
- expect(updatedOptions.order).toEqual({ name: 'ASC' })
231
+ await sleepAsync(50)
232
+
233
+ const updatedOptions = findOptions.getValue()
234
+ expect(updatedOptions.order).toEqual({ name: 'ASC' })
235
+ })
226
236
  })
227
237
 
228
238
  it('should toggle order from ASC to DESC when clicking', async () => {
229
- const injector = new Injector()
230
- const rootElement = document.getElementById('root') as HTMLDivElement
231
- const findOptions = createFindOptions({ order: { name: 'ASC' } })
232
-
233
- initializeShadeRoot({
234
- injector,
235
- rootElement,
236
- jsxElement: <OrderButton field="name" findOptions={findOptions} />,
237
- })
239
+ await usingAsync(new Injector(), async (injector) => {
240
+ const rootElement = document.getElementById('root') as HTMLDivElement
241
+ const findOptions = createFindOptions({ order: { name: 'ASC' } })
242
+
243
+ initializeShadeRoot({
244
+ injector,
245
+ rootElement,
246
+ jsxElement: <OrderButton field="name" findOptions={findOptions} />,
247
+ })
238
248
 
239
- await sleepAsync(50)
249
+ await sleepAsync(50)
240
250
 
241
- const button = document.querySelector('data-grid-order-button')?.querySelector('button')
242
- button?.click()
251
+ const button = document.querySelector('data-grid-order-button')?.querySelector('button')
252
+ button?.click()
243
253
 
244
- await sleepAsync(50)
254
+ await sleepAsync(50)
245
255
 
246
- const updatedOptions = findOptions.getValue()
247
- expect(updatedOptions.order).toEqual({ name: 'DESC' })
256
+ const updatedOptions = findOptions.getValue()
257
+ expect(updatedOptions.order).toEqual({ name: 'DESC' })
258
+ })
248
259
  })
249
260
 
250
261
  it('should toggle order from DESC to ASC when clicking', async () => {
251
- const injector = new Injector()
252
- const rootElement = document.getElementById('root') as HTMLDivElement
253
- const findOptions = createFindOptions({ order: { name: 'DESC' } })
254
-
255
- initializeShadeRoot({
256
- injector,
257
- rootElement,
258
- jsxElement: <OrderButton field="name" findOptions={findOptions} />,
259
- })
262
+ await usingAsync(new Injector(), async (injector) => {
263
+ const rootElement = document.getElementById('root') as HTMLDivElement
264
+ const findOptions = createFindOptions({ order: { name: 'DESC' } })
260
265
 
261
- await sleepAsync(50)
266
+ initializeShadeRoot({
267
+ injector,
268
+ rootElement,
269
+ jsxElement: <OrderButton field="name" findOptions={findOptions} />,
270
+ })
262
271
 
263
- const button = document.querySelector('data-grid-order-button')?.querySelector('button')
264
- button?.click()
272
+ await sleepAsync(50)
265
273
 
266
- await sleepAsync(50)
274
+ const button = document.querySelector('data-grid-order-button')?.querySelector('button')
275
+ button?.click()
267
276
 
268
- const updatedOptions = findOptions.getValue()
269
- expect(updatedOptions.order).toEqual({ name: 'ASC' })
277
+ await sleepAsync(50)
278
+
279
+ const updatedOptions = findOptions.getValue()
280
+ expect(updatedOptions.order).toEqual({ name: 'ASC' })
281
+ })
270
282
  })
271
283
 
272
284
  it('should react to external findOptions changes', async () => {
273
- const injector = new Injector()
274
- const rootElement = document.getElementById('root') as HTMLDivElement
275
- const findOptions = createFindOptions()
276
-
277
- initializeShadeRoot({
278
- injector,
279
- rootElement,
280
- jsxElement: <OrderButton field="name" findOptions={findOptions} />,
281
- })
285
+ await usingAsync(new Injector(), async (injector) => {
286
+ const rootElement = document.getElementById('root') as HTMLDivElement
287
+ const findOptions = createFindOptions()
282
288
 
283
- await sleepAsync(50)
289
+ initializeShadeRoot({
290
+ injector,
291
+ rootElement,
292
+ jsxElement: <OrderButton field="name" findOptions={findOptions} />,
293
+ })
284
294
 
285
- let button = document.querySelector('data-grid-order-button')
286
- expect(button?.textContent).toContain('↕')
295
+ await sleepAsync(50)
287
296
 
288
- findOptions.setValue({ order: { name: 'ASC' } })
289
- await sleepAsync(50)
297
+ let button = document.querySelector('data-grid-order-button')
298
+ expect(button?.querySelector('shade-icon')).not.toBeNull()
290
299
 
291
- button = document.querySelector('data-grid-order-button')
292
- expect(button?.textContent).toContain('⬇')
300
+ findOptions.setValue({ order: { name: 'ASC' } })
301
+ await sleepAsync(50)
302
+
303
+ button = document.querySelector('data-grid-order-button')
304
+ expect(button?.querySelector('shade-icon')).not.toBeNull()
305
+ })
293
306
  })
294
307
  })
295
308
 
296
309
  describe('SearchButton', () => {
297
310
  it('should show inactive icon when no filter is set', async () => {
298
- const injector = new Injector()
299
- const rootElement = document.getElementById('root') as HTMLDivElement
300
- const findOptions = createFindOptions()
301
-
302
- initializeShadeRoot({
303
- injector,
304
- rootElement,
305
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
306
- })
311
+ await usingAsync(new Injector(), async (injector) => {
312
+ const rootElement = document.getElementById('root') as HTMLDivElement
313
+ const findOptions = createFindOptions()
314
+
315
+ initializeShadeRoot({
316
+ injector,
317
+ rootElement,
318
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
319
+ })
307
320
 
308
- await sleepAsync(50)
321
+ await sleepAsync(50)
309
322
 
310
- const searchButton = document.querySelector('data-grid-search-button')
311
- expect(searchButton?.textContent).toContain('🔎')
323
+ const searchButton = document.querySelector('data-grid-search-button')
324
+ expect(searchButton?.querySelector('shade-icon')).not.toBeNull()
325
+ })
312
326
  })
313
327
 
314
328
  it('should show active icon when filter is set for field', async () => {
315
- const injector = new Injector()
316
- const rootElement = document.getElementById('root') as HTMLDivElement
317
- const findOptions = createFindOptions({ filter: { name: { $regex: 'test' } } })
318
-
319
- initializeShadeRoot({
320
- injector,
321
- rootElement,
322
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
323
- })
329
+ await usingAsync(new Injector(), async (injector) => {
330
+ const rootElement = document.getElementById('root') as HTMLDivElement
331
+ const findOptions = createFindOptions({ filter: { name: { $regex: 'test' } } })
324
332
 
325
- await sleepAsync(50)
333
+ initializeShadeRoot({
334
+ injector,
335
+ rootElement,
336
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
337
+ })
326
338
 
327
- const searchButton = document.querySelector('data-grid-search-button')
328
- expect(searchButton?.textContent).toContain('🔍')
339
+ await sleepAsync(50)
340
+
341
+ const searchButton = document.querySelector('data-grid-search-button')
342
+ expect(searchButton?.querySelector('shade-icon')).not.toBeNull()
343
+ })
329
344
  })
330
345
 
331
346
  it('should show inactive icon when filter is set for different field', async () => {
332
- const injector = new Injector()
333
- const rootElement = document.getElementById('root') as HTMLDivElement
334
- const findOptions = createFindOptions({ filter: { email: { $regex: 'test' } } })
335
-
336
- initializeShadeRoot({
337
- injector,
338
- rootElement,
339
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
340
- })
347
+ await usingAsync(new Injector(), async (injector) => {
348
+ const rootElement = document.getElementById('root') as HTMLDivElement
349
+ const findOptions = createFindOptions({ filter: { email: { $regex: 'test' } } })
350
+
351
+ initializeShadeRoot({
352
+ injector,
353
+ rootElement,
354
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
355
+ })
341
356
 
342
- await sleepAsync(50)
357
+ await sleepAsync(50)
343
358
 
344
- const searchButton = document.querySelector('data-grid-search-button')
345
- expect(searchButton?.textContent).toContain('🔎')
359
+ const searchButton = document.querySelector('data-grid-search-button')
360
+ expect(searchButton?.querySelector('shade-icon')).not.toBeNull()
361
+ })
346
362
  })
347
363
  })
348
364
 
349
365
  describe('SearchForm', () => {
350
366
  it('should expand search form when search button is clicked', async () => {
351
- const injector = new Injector()
352
- const rootElement = document.getElementById('root') as HTMLDivElement
353
- const findOptions = createFindOptions()
354
-
355
- initializeShadeRoot({
356
- injector,
357
- rootElement,
358
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
359
- })
367
+ await usingAsync(new Injector(), async (injector) => {
368
+ const rootElement = document.getElementById('root') as HTMLDivElement
369
+ const findOptions = createFindOptions()
360
370
 
361
- await sleepAsync(50)
371
+ initializeShadeRoot({
372
+ injector,
373
+ rootElement,
374
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
375
+ })
362
376
 
363
- const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
364
- searchButton?.click()
377
+ await sleepAsync(50)
365
378
 
366
- await sleepAsync(150)
379
+ const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
380
+ searchButton?.click()
367
381
 
368
- const searchForm = document.querySelector('.search-form') as HTMLElement
369
- expect(searchForm.style.display).toBe('flex')
382
+ await sleepAsync(150)
383
+
384
+ const searchForm = document.querySelector('.search-form') as HTMLElement
385
+ expect(searchForm.style.display).toBe('flex')
386
+ })
370
387
  })
371
388
 
372
389
  it('should update findOptions when search is submitted', async () => {
373
- const injector = new Injector()
374
- const rootElement = document.getElementById('root') as HTMLDivElement
375
- const findOptions = createFindOptions()
376
-
377
- initializeShadeRoot({
378
- injector,
379
- rootElement,
380
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
381
- })
390
+ await usingAsync(new Injector(), async (injector) => {
391
+ const rootElement = document.getElementById('root') as HTMLDivElement
392
+ const findOptions = createFindOptions()
393
+
394
+ initializeShadeRoot({
395
+ injector,
396
+ rootElement,
397
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
398
+ })
382
399
 
383
- await sleepAsync(50)
400
+ await sleepAsync(50)
384
401
 
385
- const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
386
- searchButton?.click()
402
+ const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
403
+ searchButton?.click()
387
404
 
388
- await sleepAsync(150)
405
+ await sleepAsync(150)
389
406
 
390
- const input = document.querySelector('.search-form input') as HTMLInputElement
391
- input.value = 'test-search'
392
- input.dispatchEvent(new Event('input', { bubbles: true }))
407
+ const input = document.querySelector('.search-form input') as HTMLInputElement
408
+ input.value = 'test-search'
409
+ input.dispatchEvent(new Event('input', { bubbles: true }))
393
410
 
394
- const form = document.querySelector('.search-form') as HTMLFormElement
395
- form.dispatchEvent(new Event('submit', { bubbles: true }))
411
+ const form = document.querySelector('.search-form') as HTMLFormElement
412
+ form.dispatchEvent(new Event('submit', { bubbles: true }))
396
413
 
397
- await sleepAsync(50)
414
+ await sleepAsync(50)
398
415
 
399
- const updatedOptions = findOptions.getValue()
400
- expect(updatedOptions.filter).toEqual({ name: { $regex: 'test-search' } })
416
+ const updatedOptions = findOptions.getValue()
417
+ expect(updatedOptions.filter).toEqual({ name: { $regex: 'test-search' } })
418
+ })
401
419
  })
402
420
 
403
421
  it('should clear filter when clear button is clicked', async () => {
404
- const injector = new Injector()
405
- const rootElement = document.getElementById('root') as HTMLDivElement
406
- const findOptions = createFindOptions({ filter: { name: { $regex: 'existing' } } })
407
-
408
- initializeShadeRoot({
409
- injector,
410
- rootElement,
411
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
412
- })
422
+ await usingAsync(new Injector(), async (injector) => {
423
+ const rootElement = document.getElementById('root') as HTMLDivElement
424
+ const findOptions = createFindOptions({ filter: { name: { $regex: 'existing' } } })
425
+
426
+ initializeShadeRoot({
427
+ injector,
428
+ rootElement,
429
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
430
+ })
413
431
 
414
- await sleepAsync(50)
432
+ await sleepAsync(50)
415
433
 
416
- const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
417
- searchButton?.click()
434
+ const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
435
+ searchButton?.click()
418
436
 
419
- await sleepAsync(150)
437
+ await sleepAsync(150)
420
438
 
421
- const clearButton = document.querySelector('.search-form button[type="reset"]') as HTMLButtonElement
422
- clearButton?.click()
439
+ const clearButton = document.querySelector('.search-form button[type="reset"]') as HTMLButtonElement
440
+ clearButton?.click()
423
441
 
424
- await sleepAsync(50)
442
+ await sleepAsync(50)
425
443
 
426
- const updatedOptions = findOptions.getValue()
427
- expect(updatedOptions.filter?.name).toBeUndefined()
444
+ const updatedOptions = findOptions.getValue()
445
+ expect(updatedOptions.filter?.name).toBeUndefined()
446
+ })
428
447
  })
429
448
 
430
449
  it('should preserve filters for other fields when submitting search', async () => {
431
- const injector = new Injector()
432
- const rootElement = document.getElementById('root') as HTMLDivElement
433
- const findOptions = createFindOptions({ filter: { email: { $regex: 'existing' } } })
434
-
435
- initializeShadeRoot({
436
- injector,
437
- rootElement,
438
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
439
- })
450
+ await usingAsync(new Injector(), async (injector) => {
451
+ const rootElement = document.getElementById('root') as HTMLDivElement
452
+ const findOptions = createFindOptions({ filter: { email: { $regex: 'existing' } } })
440
453
 
441
- await sleepAsync(50)
454
+ initializeShadeRoot({
455
+ injector,
456
+ rootElement,
457
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
458
+ })
442
459
 
443
- const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
444
- searchButton?.click()
460
+ await sleepAsync(50)
445
461
 
446
- await sleepAsync(150)
462
+ const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
463
+ searchButton?.click()
447
464
 
448
- const input = document.querySelector('.search-form input') as HTMLInputElement
449
- input.value = 'new-search'
450
- input.dispatchEvent(new Event('input', { bubbles: true }))
465
+ await sleepAsync(150)
451
466
 
452
- const form = document.querySelector('.search-form') as HTMLFormElement
453
- form.dispatchEvent(new Event('submit', { bubbles: true }))
467
+ const input = document.querySelector('.search-form input') as HTMLInputElement
468
+ input.value = 'new-search'
469
+ input.dispatchEvent(new Event('input', { bubbles: true }))
454
470
 
455
- await sleepAsync(50)
471
+ const form = document.querySelector('.search-form') as HTMLFormElement
472
+ form.dispatchEvent(new Event('submit', { bubbles: true }))
456
473
 
457
- const updatedOptions = findOptions.getValue()
458
- expect(updatedOptions.filter).toEqual({
459
- email: { $regex: 'existing' },
460
- name: { $regex: 'new-search' },
474
+ await sleepAsync(50)
475
+
476
+ const updatedOptions = findOptions.getValue()
477
+ expect(updatedOptions.filter).toEqual({
478
+ email: { $regex: 'existing' },
479
+ name: { $regex: 'new-search' },
480
+ })
461
481
  })
462
482
  })
463
483
 
464
484
  it('should preserve other findOptions properties when updating filter', async () => {
465
- const injector = new Injector()
466
- const rootElement = document.getElementById('root') as HTMLDivElement
467
- const findOptions = createFindOptions({
468
- order: { id: 'ASC' },
469
- top: 10,
470
- skip: 20,
471
- })
485
+ await usingAsync(new Injector(), async (injector) => {
486
+ const rootElement = document.getElementById('root') as HTMLDivElement
487
+ const findOptions = createFindOptions({
488
+ order: { id: 'ASC' },
489
+ top: 10,
490
+ skip: 20,
491
+ })
472
492
 
473
- initializeShadeRoot({
474
- injector,
475
- rootElement,
476
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
477
- })
493
+ initializeShadeRoot({
494
+ injector,
495
+ rootElement,
496
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
497
+ })
478
498
 
479
- await sleepAsync(50)
499
+ await sleepAsync(50)
480
500
 
481
- const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
482
- searchButton?.click()
501
+ const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
502
+ searchButton?.click()
483
503
 
484
- await sleepAsync(150)
504
+ await sleepAsync(150)
485
505
 
486
- const input = document.querySelector('.search-form input') as HTMLInputElement
487
- input.value = 'search-value'
488
- input.dispatchEvent(new Event('input', { bubbles: true }))
506
+ const input = document.querySelector('.search-form input') as HTMLInputElement
507
+ input.value = 'search-value'
508
+ input.dispatchEvent(new Event('input', { bubbles: true }))
489
509
 
490
- const form = document.querySelector('.search-form') as HTMLFormElement
491
- form.dispatchEvent(new Event('submit', { bubbles: true }))
510
+ const form = document.querySelector('.search-form') as HTMLFormElement
511
+ form.dispatchEvent(new Event('submit', { bubbles: true }))
492
512
 
493
- await sleepAsync(50)
513
+ await sleepAsync(50)
494
514
 
495
- const updatedOptions = findOptions.getValue()
496
- expect(updatedOptions.order).toEqual({ id: 'ASC' })
497
- expect(updatedOptions.top).toBe(10)
498
- expect(updatedOptions.skip).toBe(20)
499
- expect(updatedOptions.filter).toEqual({ name: { $regex: 'search-value' } })
515
+ const updatedOptions = findOptions.getValue()
516
+ expect(updatedOptions.order).toEqual({ id: 'ASC' })
517
+ expect(updatedOptions.top).toBe(10)
518
+ expect(updatedOptions.skip).toBe(20)
519
+ expect(updatedOptions.filter).toEqual({ name: { $regex: 'search-value' } })
520
+ })
500
521
  })
501
522
 
502
523
  it('should show current filter value in search input', async () => {
503
- const injector = new Injector()
504
- const rootElement = document.getElementById('root') as HTMLDivElement
505
- const findOptions = createFindOptions({ filter: { name: { $regex: 'current-filter' } } })
506
-
507
- initializeShadeRoot({
508
- injector,
509
- rootElement,
510
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
511
- })
524
+ await usingAsync(new Injector(), async (injector) => {
525
+ const rootElement = document.getElementById('root') as HTMLDivElement
526
+ const findOptions = createFindOptions({ filter: { name: { $regex: 'current-filter' } } })
527
+
528
+ initializeShadeRoot({
529
+ injector,
530
+ rootElement,
531
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
532
+ })
512
533
 
513
- await sleepAsync(50)
534
+ await sleepAsync(50)
514
535
 
515
- const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
516
- searchButton?.click()
536
+ const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
537
+ searchButton?.click()
517
538
 
518
- await sleepAsync(150)
539
+ await sleepAsync(150)
519
540
 
520
- const input = document.querySelector('.search-form input') as HTMLInputElement
521
- expect(input.value).toBe('current-filter')
541
+ const input = document.querySelector('.search-form input') as HTMLInputElement
542
+ expect(input.value).toBe('current-filter')
543
+ })
522
544
  })
523
545
  })
524
546
 
525
547
  describe('integration', () => {
526
548
  it('should support both sorting and filtering simultaneously', async () => {
527
- const injector = new Injector()
528
- const rootElement = document.getElementById('root') as HTMLDivElement
529
- const findOptions = createFindOptions()
530
-
531
- initializeShadeRoot({
532
- injector,
533
- rootElement,
534
- jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
535
- })
549
+ await usingAsync(new Injector(), async (injector) => {
550
+ const rootElement = document.getElementById('root') as HTMLDivElement
551
+ const findOptions = createFindOptions()
536
552
 
537
- await sleepAsync(50)
553
+ initializeShadeRoot({
554
+ injector,
555
+ rootElement,
556
+ jsxElement: <DataGridHeader field="name" findOptions={findOptions} />,
557
+ })
538
558
 
539
- const orderButton = document.querySelector('data-grid-order-button')?.querySelector('button')
540
- orderButton?.click()
559
+ await sleepAsync(50)
541
560
 
542
- await sleepAsync(50)
561
+ const orderButton = document.querySelector('data-grid-order-button')?.querySelector('button')
562
+ orderButton?.click()
543
563
 
544
- const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
545
- searchButton?.click()
564
+ await sleepAsync(50)
546
565
 
547
- await sleepAsync(150)
566
+ const searchButton = document.querySelector('data-grid-search-button')?.querySelector('button')
567
+ searchButton?.click()
548
568
 
549
- const input = document.querySelector('.search-form input') as HTMLInputElement
550
- input.value = 'filter-value'
551
- input.dispatchEvent(new Event('input', { bubbles: true }))
569
+ await sleepAsync(150)
552
570
 
553
- const form = document.querySelector('.search-form') as HTMLFormElement
554
- form.dispatchEvent(new Event('submit', { bubbles: true }))
571
+ const input = document.querySelector('.search-form input') as HTMLInputElement
572
+ input.value = 'filter-value'
573
+ input.dispatchEvent(new Event('input', { bubbles: true }))
555
574
 
556
- await sleepAsync(50)
575
+ const form = document.querySelector('.search-form') as HTMLFormElement
576
+ form.dispatchEvent(new Event('submit', { bubbles: true }))
557
577
 
558
- const updatedOptions = findOptions.getValue()
559
- expect(updatedOptions.order).toEqual({ name: 'ASC' })
560
- expect(updatedOptions.filter).toEqual({ name: { $regex: 'filter-value' } })
578
+ await sleepAsync(50)
579
+
580
+ const updatedOptions = findOptions.getValue()
581
+ expect(updatedOptions.order).toEqual({ name: 'ASC' })
582
+ expect(updatedOptions.filter).toEqual({ name: { $regex: 'filter-value' } })
583
+ })
561
584
  })
562
585
  })
563
586
  })