@furystack/shades-common-components 13.5.0 → 15.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 (540) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/README.md +3 -3
  3. package/esm/components/accordion/accordion-item.d.ts.map +1 -1
  4. package/esm/components/accordion/accordion-item.js +7 -10
  5. package/esm/components/accordion/accordion-item.js.map +1 -1
  6. package/esm/components/accordion/accordion.d.ts +7 -0
  7. package/esm/components/accordion/accordion.d.ts.map +1 -1
  8. package/esm/components/accordion/accordion.js +5 -2
  9. package/esm/components/accordion/accordion.js.map +1 -1
  10. package/esm/components/accordion/accordion.spec.js +91 -50
  11. package/esm/components/accordion/accordion.spec.js.map +1 -1
  12. package/esm/components/alert.js +1 -1
  13. package/esm/components/alert.js.map +1 -1
  14. package/esm/components/app-bar-link.js +1 -1
  15. package/esm/components/app-bar-link.js.map +1 -1
  16. package/esm/components/app-bar.js +1 -1
  17. package/esm/components/app-bar.js.map +1 -1
  18. package/esm/components/avatar.js +1 -1
  19. package/esm/components/avatar.js.map +1 -1
  20. package/esm/components/badge.js +1 -1
  21. package/esm/components/badge.js.map +1 -1
  22. package/esm/components/breadcrumb.js +1 -1
  23. package/esm/components/breadcrumb.js.map +1 -1
  24. package/esm/components/breadcrumb.spec.js +3 -3
  25. package/esm/components/breadcrumb.spec.js.map +1 -1
  26. package/esm/components/button-group.js +4 -4
  27. package/esm/components/button-group.js.map +1 -1
  28. package/esm/components/button.js +1 -1
  29. package/esm/components/button.js.map +1 -1
  30. package/esm/components/button.spec.js +1 -1
  31. package/esm/components/button.spec.js.map +1 -1
  32. package/esm/components/cache-view.js +1 -1
  33. package/esm/components/cache-view.js.map +1 -1
  34. package/esm/components/cache-view.spec.js +2 -2
  35. package/esm/components/cache-view.spec.js.map +1 -1
  36. package/esm/components/card.js +5 -5
  37. package/esm/components/card.js.map +1 -1
  38. package/esm/components/carousel.js +2 -2
  39. package/esm/components/carousel.js.map +1 -1
  40. package/esm/components/chip.d.ts.map +1 -1
  41. package/esm/components/chip.js +5 -3
  42. package/esm/components/chip.js.map +1 -1
  43. package/esm/components/chip.spec.js +42 -0
  44. package/esm/components/chip.spec.js.map +1 -1
  45. package/esm/components/circular-progress.d.ts +2 -4
  46. package/esm/components/circular-progress.d.ts.map +1 -1
  47. package/esm/components/circular-progress.js +3 -6
  48. package/esm/components/circular-progress.js.map +1 -1
  49. package/esm/components/circular-progress.spec.js +19 -14
  50. package/esm/components/circular-progress.spec.js.map +1 -1
  51. package/esm/components/command-palette/command-palette-input.js +1 -1
  52. package/esm/components/command-palette/command-palette-input.js.map +1 -1
  53. package/esm/components/command-palette/command-palette-suggestion-list.js +1 -1
  54. package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
  55. package/esm/components/command-palette/command-palette-suggestion-list.spec.js +1 -1
  56. package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
  57. package/esm/components/command-palette/index.d.ts.map +1 -1
  58. package/esm/components/command-palette/index.js +15 -2
  59. package/esm/components/command-palette/index.js.map +1 -1
  60. package/esm/components/command-palette/index.spec.js +78 -33
  61. package/esm/components/command-palette/index.spec.js.map +1 -1
  62. package/esm/components/context-menu/context-menu-item.js +1 -1
  63. package/esm/components/context-menu/context-menu-item.js.map +1 -1
  64. package/esm/components/context-menu/context-menu.js +1 -1
  65. package/esm/components/context-menu/context-menu.js.map +1 -1
  66. package/esm/components/data-grid/body.js +1 -1
  67. package/esm/components/data-grid/body.js.map +1 -1
  68. package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
  69. package/esm/components/data-grid/data-grid-row.js +19 -3
  70. package/esm/components/data-grid/data-grid-row.js.map +1 -1
  71. package/esm/components/data-grid/data-grid.d.ts +12 -2
  72. package/esm/components/data-grid/data-grid.d.ts.map +1 -1
  73. package/esm/components/data-grid/data-grid.js +33 -13
  74. package/esm/components/data-grid/data-grid.js.map +1 -1
  75. package/esm/components/data-grid/data-grid.spec.js +170 -90
  76. package/esm/components/data-grid/data-grid.spec.js.map +1 -1
  77. package/esm/components/data-grid/filters/boolean-filter.d.ts +2 -2
  78. package/esm/components/data-grid/filters/boolean-filter.d.ts.map +1 -1
  79. package/esm/components/data-grid/filters/boolean-filter.js +4 -4
  80. package/esm/components/data-grid/filters/boolean-filter.js.map +1 -1
  81. package/esm/components/data-grid/filters/boolean-filter.spec.js +18 -17
  82. package/esm/components/data-grid/filters/boolean-filter.spec.js.map +1 -1
  83. package/esm/components/data-grid/filters/date-filter.d.ts +2 -2
  84. package/esm/components/data-grid/filters/date-filter.d.ts.map +1 -1
  85. package/esm/components/data-grid/filters/date-filter.js +6 -6
  86. package/esm/components/data-grid/filters/date-filter.js.map +1 -1
  87. package/esm/components/data-grid/filters/date-filter.spec.js +26 -21
  88. package/esm/components/data-grid/filters/date-filter.spec.js.map +1 -1
  89. package/esm/components/data-grid/filters/enum-filter.d.ts +2 -2
  90. package/esm/components/data-grid/filters/enum-filter.d.ts.map +1 -1
  91. package/esm/components/data-grid/filters/enum-filter.js +5 -5
  92. package/esm/components/data-grid/filters/enum-filter.js.map +1 -1
  93. package/esm/components/data-grid/filters/enum-filter.spec.js +21 -19
  94. package/esm/components/data-grid/filters/enum-filter.spec.js.map +1 -1
  95. package/esm/components/data-grid/filters/filter-dropdown.js +1 -1
  96. package/esm/components/data-grid/filters/filter-dropdown.js.map +1 -1
  97. package/esm/components/data-grid/filters/number-filter.d.ts +2 -2
  98. package/esm/components/data-grid/filters/number-filter.d.ts.map +1 -1
  99. package/esm/components/data-grid/filters/number-filter.js +5 -5
  100. package/esm/components/data-grid/filters/number-filter.js.map +1 -1
  101. package/esm/components/data-grid/filters/number-filter.spec.js +23 -21
  102. package/esm/components/data-grid/filters/number-filter.spec.js.map +1 -1
  103. package/esm/components/data-grid/filters/string-filter.d.ts +2 -2
  104. package/esm/components/data-grid/filters/string-filter.d.ts.map +1 -1
  105. package/esm/components/data-grid/filters/string-filter.js +5 -5
  106. package/esm/components/data-grid/filters/string-filter.js.map +1 -1
  107. package/esm/components/data-grid/filters/string-filter.spec.js +21 -19
  108. package/esm/components/data-grid/filters/string-filter.spec.js.map +1 -1
  109. package/esm/components/data-grid/footer.d.ts +2 -2
  110. package/esm/components/data-grid/footer.d.ts.map +1 -1
  111. package/esm/components/data-grid/footer.js +8 -13
  112. package/esm/components/data-grid/footer.js.map +1 -1
  113. package/esm/components/data-grid/footer.spec.js +38 -27
  114. package/esm/components/data-grid/footer.spec.js.map +1 -1
  115. package/esm/components/data-grid/header.d.ts +6 -6
  116. package/esm/components/data-grid/header.d.ts.map +1 -1
  117. package/esm/components/data-grid/header.js +16 -17
  118. package/esm/components/data-grid/header.js.map +1 -1
  119. package/esm/components/data-grid/header.spec.js +66 -60
  120. package/esm/components/data-grid/header.spec.js.map +1 -1
  121. package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
  122. package/esm/components/data-grid/selection-cell.js +2 -2
  123. package/esm/components/data-grid/selection-cell.js.map +1 -1
  124. package/esm/components/dialog.d.ts +11 -0
  125. package/esm/components/dialog.d.ts.map +1 -1
  126. package/esm/components/dialog.js +3 -3
  127. package/esm/components/dialog.js.map +1 -1
  128. package/esm/components/dialog.spec.js +54 -2
  129. package/esm/components/dialog.spec.js.map +1 -1
  130. package/esm/components/divider.js +1 -1
  131. package/esm/components/divider.js.map +1 -1
  132. package/esm/components/drawer/drawer-toggle-button.js +1 -1
  133. package/esm/components/drawer/drawer-toggle-button.js.map +1 -1
  134. package/esm/components/drawer/index.js +1 -1
  135. package/esm/components/drawer/index.js.map +1 -1
  136. package/esm/components/dropdown.d.ts.map +1 -1
  137. package/esm/components/dropdown.js +2 -2
  138. package/esm/components/dropdown.js.map +1 -1
  139. package/esm/components/dropdown.spec.js +8 -0
  140. package/esm/components/dropdown.spec.js.map +1 -1
  141. package/esm/components/fab.js +1 -1
  142. package/esm/components/fab.js.map +1 -1
  143. package/esm/components/form.js +1 -1
  144. package/esm/components/form.js.map +1 -1
  145. package/esm/components/grid.js +1 -1
  146. package/esm/components/grid.js.map +1 -1
  147. package/esm/components/icons/icon.js +1 -1
  148. package/esm/components/icons/icon.js.map +1 -1
  149. package/esm/components/image.d.ts.map +1 -1
  150. package/esm/components/image.js +17 -8
  151. package/esm/components/image.js.map +1 -1
  152. package/esm/components/image.spec.js +60 -0
  153. package/esm/components/image.spec.js.map +1 -1
  154. package/esm/components/inputs/autocomplete.js +1 -1
  155. package/esm/components/inputs/autocomplete.js.map +1 -1
  156. package/esm/components/inputs/checkbox.d.ts.map +1 -1
  157. package/esm/components/inputs/checkbox.js +2 -1
  158. package/esm/components/inputs/checkbox.js.map +1 -1
  159. package/esm/components/inputs/checkbox.spec.js +1 -1
  160. package/esm/components/inputs/checkbox.spec.js.map +1 -1
  161. package/esm/components/inputs/input-number.js +1 -1
  162. package/esm/components/inputs/input-number.js.map +1 -1
  163. package/esm/components/inputs/input-number.spec.js +1 -1
  164. package/esm/components/inputs/input-number.spec.js.map +1 -1
  165. package/esm/components/inputs/input.js +1 -1
  166. package/esm/components/inputs/input.js.map +1 -1
  167. package/esm/components/inputs/input.spec.js +1 -1
  168. package/esm/components/inputs/input.spec.js.map +1 -1
  169. package/esm/components/inputs/radio-group.js +1 -1
  170. package/esm/components/inputs/radio-group.js.map +1 -1
  171. package/esm/components/inputs/radio-group.spec.js +1 -1
  172. package/esm/components/inputs/radio-group.spec.js.map +1 -1
  173. package/esm/components/inputs/radio.d.ts.map +1 -1
  174. package/esm/components/inputs/radio.js +2 -1
  175. package/esm/components/inputs/radio.js.map +1 -1
  176. package/esm/components/inputs/radio.spec.js +1 -1
  177. package/esm/components/inputs/radio.spec.js.map +1 -1
  178. package/esm/components/inputs/select.js +1 -1
  179. package/esm/components/inputs/select.js.map +1 -1
  180. package/esm/components/inputs/slider.d.ts.map +1 -1
  181. package/esm/components/inputs/slider.js +2 -1
  182. package/esm/components/inputs/slider.js.map +1 -1
  183. package/esm/components/inputs/switch.d.ts.map +1 -1
  184. package/esm/components/inputs/switch.js +2 -1
  185. package/esm/components/inputs/switch.js.map +1 -1
  186. package/esm/components/inputs/switch.spec.js +1 -1
  187. package/esm/components/inputs/switch.spec.js.map +1 -1
  188. package/esm/components/inputs/text-area.js +1 -1
  189. package/esm/components/inputs/text-area.js.map +1 -1
  190. package/esm/components/inputs/text-area.spec.js +1 -1
  191. package/esm/components/inputs/text-area.spec.js.map +1 -1
  192. package/esm/components/linear-progress.d.ts +2 -4
  193. package/esm/components/linear-progress.d.ts.map +1 -1
  194. package/esm/components/linear-progress.js +3 -6
  195. package/esm/components/linear-progress.js.map +1 -1
  196. package/esm/components/linear-progress.spec.js +21 -18
  197. package/esm/components/linear-progress.spec.js.map +1 -1
  198. package/esm/components/list/list-item.d.ts.map +1 -1
  199. package/esm/components/list/list-item.js +22 -6
  200. package/esm/components/list/list-item.js.map +1 -1
  201. package/esm/components/list/list.d.ts +7 -0
  202. package/esm/components/list/list.d.ts.map +1 -1
  203. package/esm/components/list/list.js +29 -9
  204. package/esm/components/list/list.js.map +1 -1
  205. package/esm/components/list/list.spec.js +117 -23
  206. package/esm/components/list/list.spec.js.map +1 -1
  207. package/esm/components/loader.js +1 -1
  208. package/esm/components/loader.js.map +1 -1
  209. package/esm/components/loader.spec.js +1 -1
  210. package/esm/components/loader.spec.js.map +1 -1
  211. package/esm/components/markdown/markdown-display.d.ts.map +1 -1
  212. package/esm/components/markdown/markdown-display.js +12 -2
  213. package/esm/components/markdown/markdown-display.js.map +1 -1
  214. package/esm/components/markdown/markdown-display.spec.js +98 -1
  215. package/esm/components/markdown/markdown-display.spec.js.map +1 -1
  216. package/esm/components/markdown/markdown-editor.js +1 -1
  217. package/esm/components/markdown/markdown-editor.js.map +1 -1
  218. package/esm/components/markdown/markdown-editor.spec.js +88 -1
  219. package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
  220. package/esm/components/markdown/markdown-input.js +1 -1
  221. package/esm/components/markdown/markdown-input.js.map +1 -1
  222. package/esm/components/markdown/markdown-input.spec.js +1 -1
  223. package/esm/components/markdown/markdown-input.spec.js.map +1 -1
  224. package/esm/components/menu/menu.js +2 -2
  225. package/esm/components/menu/menu.js.map +1 -1
  226. package/esm/components/modal.d.ts +10 -0
  227. package/esm/components/modal.d.ts.map +1 -1
  228. package/esm/components/modal.js +25 -5
  229. package/esm/components/modal.js.map +1 -1
  230. package/esm/components/modal.spec.js +89 -4
  231. package/esm/components/modal.spec.js.map +1 -1
  232. package/esm/components/noty-list.js +2 -2
  233. package/esm/components/noty-list.js.map +1 -1
  234. package/esm/components/page-container/index.js +1 -1
  235. package/esm/components/page-container/index.js.map +1 -1
  236. package/esm/components/page-container/page-header.js +1 -1
  237. package/esm/components/page-container/page-header.js.map +1 -1
  238. package/esm/components/page-layout/index.js +2 -2
  239. package/esm/components/page-layout/index.js.map +1 -1
  240. package/esm/components/page-layout/index.spec.js +14 -0
  241. package/esm/components/page-layout/index.spec.js.map +1 -1
  242. package/esm/components/pagination.js +1 -1
  243. package/esm/components/pagination.js.map +1 -1
  244. package/esm/components/paper.js +1 -1
  245. package/esm/components/paper.js.map +1 -1
  246. package/esm/components/rating.d.ts.map +1 -1
  247. package/esm/components/rating.js +29 -22
  248. package/esm/components/rating.js.map +1 -1
  249. package/esm/components/rating.spec.js +152 -5
  250. package/esm/components/rating.spec.js.map +1 -1
  251. package/esm/components/result.js +1 -1
  252. package/esm/components/result.js.map +1 -1
  253. package/esm/components/skeleton.js +1 -1
  254. package/esm/components/skeleton.js.map +1 -1
  255. package/esm/components/suggest/index.d.ts.map +1 -1
  256. package/esm/components/suggest/index.js +15 -2
  257. package/esm/components/suggest/index.js.map +1 -1
  258. package/esm/components/suggest/index.spec.js +99 -44
  259. package/esm/components/suggest/index.spec.js.map +1 -1
  260. package/esm/components/suggest/suggest-input.js +1 -1
  261. package/esm/components/suggest/suggest-input.js.map +1 -1
  262. package/esm/components/suggest/suggest-input.spec.js +1 -1
  263. package/esm/components/suggest/suggest-input.spec.js.map +1 -1
  264. package/esm/components/suggest/suggestion-list.js +1 -1
  265. package/esm/components/suggest/suggestion-list.js.map +1 -1
  266. package/esm/components/suggest/suggestion-list.spec.js +1 -1
  267. package/esm/components/suggest/suggestion-list.spec.js.map +1 -1
  268. package/esm/components/tabs.d.ts.map +1 -1
  269. package/esm/components/tabs.js +6 -2
  270. package/esm/components/tabs.js.map +1 -1
  271. package/esm/components/timeline.js +2 -2
  272. package/esm/components/timeline.js.map +1 -1
  273. package/esm/components/tooltip.js +1 -1
  274. package/esm/components/tooltip.js.map +1 -1
  275. package/esm/components/tree/tree-item.d.ts.map +1 -1
  276. package/esm/components/tree/tree-item.js +19 -6
  277. package/esm/components/tree/tree-item.js.map +1 -1
  278. package/esm/components/tree/tree.d.ts +7 -0
  279. package/esm/components/tree/tree.d.ts.map +1 -1
  280. package/esm/components/tree/tree.js +13 -4
  281. package/esm/components/tree/tree.js.map +1 -1
  282. package/esm/components/tree/tree.spec.js +64 -2
  283. package/esm/components/tree/tree.spec.js.map +1 -1
  284. package/esm/components/typography.js +1 -1
  285. package/esm/components/typography.js.map +1 -1
  286. package/esm/components/wizard/index.js +1 -1
  287. package/esm/components/wizard/index.js.map +1 -1
  288. package/esm/components/wizard/index.spec.js +3 -3
  289. package/esm/components/wizard/index.spec.js.map +1 -1
  290. package/esm/services/collection-service.d.ts +9 -0
  291. package/esm/services/collection-service.d.ts.map +1 -1
  292. package/esm/services/collection-service.js +33 -11
  293. package/esm/services/collection-service.js.map +1 -1
  294. package/esm/services/collection-service.spec.js +33 -24
  295. package/esm/services/collection-service.spec.js.map +1 -1
  296. package/esm/services/css-variable-theme.d.ts +7 -0
  297. package/esm/services/css-variable-theme.d.ts.map +1 -1
  298. package/esm/services/css-variable-theme.js +23 -0
  299. package/esm/services/css-variable-theme.js.map +1 -1
  300. package/esm/services/css-variable-theme.spec.js +1 -0
  301. package/esm/services/css-variable-theme.spec.js.map +1 -1
  302. package/esm/services/list-service.d.ts +9 -0
  303. package/esm/services/list-service.d.ts.map +1 -1
  304. package/esm/services/list-service.js +13 -13
  305. package/esm/services/list-service.js.map +1 -1
  306. package/esm/services/list-service.spec.js +13 -33
  307. package/esm/services/list-service.spec.js.map +1 -1
  308. package/esm/services/theme-provider-service.d.ts +3 -0
  309. package/esm/services/theme-provider-service.d.ts.map +1 -1
  310. package/esm/services/theme-provider-service.js.map +1 -1
  311. package/esm/services/tree-service.d.ts.map +1 -1
  312. package/esm/services/tree-service.js +5 -9
  313. package/esm/services/tree-service.js.map +1 -1
  314. package/esm/services/tree-service.spec.js +12 -9
  315. package/esm/services/tree-service.spec.js.map +1 -1
  316. package/esm/themes/architect-theme.d.ts +1 -0
  317. package/esm/themes/architect-theme.d.ts.map +1 -1
  318. package/esm/themes/architect-theme.js +1 -0
  319. package/esm/themes/architect-theme.js.map +1 -1
  320. package/esm/themes/auditore-theme.d.ts +1 -0
  321. package/esm/themes/auditore-theme.d.ts.map +1 -1
  322. package/esm/themes/auditore-theme.js +1 -0
  323. package/esm/themes/auditore-theme.js.map +1 -1
  324. package/esm/themes/black-mesa-theme.d.ts +1 -0
  325. package/esm/themes/black-mesa-theme.d.ts.map +1 -1
  326. package/esm/themes/black-mesa-theme.js +1 -0
  327. package/esm/themes/black-mesa-theme.js.map +1 -1
  328. package/esm/themes/chieftain-theme.d.ts +1 -0
  329. package/esm/themes/chieftain-theme.d.ts.map +1 -1
  330. package/esm/themes/chieftain-theme.js +1 -0
  331. package/esm/themes/chieftain-theme.js.map +1 -1
  332. package/esm/themes/default-dark-theme.d.ts +1 -0
  333. package/esm/themes/default-dark-theme.d.ts.map +1 -1
  334. package/esm/themes/default-dark-theme.js +1 -0
  335. package/esm/themes/default-dark-theme.js.map +1 -1
  336. package/esm/themes/default-light-theme.d.ts +1 -0
  337. package/esm/themes/default-light-theme.d.ts.map +1 -1
  338. package/esm/themes/default-light-theme.js +1 -0
  339. package/esm/themes/default-light-theme.js.map +1 -1
  340. package/esm/themes/dragonborn-theme.d.ts +1 -0
  341. package/esm/themes/dragonborn-theme.d.ts.map +1 -1
  342. package/esm/themes/dragonborn-theme.js +1 -0
  343. package/esm/themes/dragonborn-theme.js.map +1 -1
  344. package/esm/themes/hawkins-theme.d.ts +1 -0
  345. package/esm/themes/hawkins-theme.d.ts.map +1 -1
  346. package/esm/themes/hawkins-theme.js +1 -0
  347. package/esm/themes/hawkins-theme.js.map +1 -1
  348. package/esm/themes/jedi-theme.d.ts +1 -0
  349. package/esm/themes/jedi-theme.d.ts.map +1 -1
  350. package/esm/themes/jedi-theme.js +1 -0
  351. package/esm/themes/jedi-theme.js.map +1 -1
  352. package/esm/themes/neon-runner-theme.d.ts +1 -0
  353. package/esm/themes/neon-runner-theme.d.ts.map +1 -1
  354. package/esm/themes/neon-runner-theme.js +1 -0
  355. package/esm/themes/neon-runner-theme.js.map +1 -1
  356. package/esm/themes/paladin-theme.d.ts +1 -0
  357. package/esm/themes/paladin-theme.d.ts.map +1 -1
  358. package/esm/themes/paladin-theme.js +1 -0
  359. package/esm/themes/paladin-theme.js.map +1 -1
  360. package/esm/themes/plumber-theme.d.ts +1 -0
  361. package/esm/themes/plumber-theme.d.ts.map +1 -1
  362. package/esm/themes/plumber-theme.js +1 -0
  363. package/esm/themes/plumber-theme.js.map +1 -1
  364. package/esm/themes/replicant-theme.d.ts +1 -0
  365. package/esm/themes/replicant-theme.d.ts.map +1 -1
  366. package/esm/themes/replicant-theme.js +1 -0
  367. package/esm/themes/replicant-theme.js.map +1 -1
  368. package/esm/themes/sandworm-theme.d.ts +1 -0
  369. package/esm/themes/sandworm-theme.d.ts.map +1 -1
  370. package/esm/themes/sandworm-theme.js +1 -0
  371. package/esm/themes/sandworm-theme.js.map +1 -1
  372. package/esm/themes/shadow-broker-theme.d.ts +1 -0
  373. package/esm/themes/shadow-broker-theme.d.ts.map +1 -1
  374. package/esm/themes/shadow-broker-theme.js +1 -0
  375. package/esm/themes/shadow-broker-theme.js.map +1 -1
  376. package/esm/themes/sith-theme.d.ts +1 -0
  377. package/esm/themes/sith-theme.d.ts.map +1 -1
  378. package/esm/themes/sith-theme.js +1 -0
  379. package/esm/themes/sith-theme.js.map +1 -1
  380. package/esm/themes/vault-dweller-theme.d.ts +1 -0
  381. package/esm/themes/vault-dweller-theme.d.ts.map +1 -1
  382. package/esm/themes/vault-dweller-theme.js +1 -0
  383. package/esm/themes/vault-dweller-theme.js.map +1 -1
  384. package/esm/themes/wild-hunt-theme.d.ts +1 -0
  385. package/esm/themes/wild-hunt-theme.d.ts.map +1 -1
  386. package/esm/themes/wild-hunt-theme.js +1 -0
  387. package/esm/themes/wild-hunt-theme.js.map +1 -1
  388. package/esm/themes/xenomorph-theme.d.ts +1 -0
  389. package/esm/themes/xenomorph-theme.d.ts.map +1 -1
  390. package/esm/themes/xenomorph-theme.js +1 -0
  391. package/esm/themes/xenomorph-theme.js.map +1 -1
  392. package/package.json +3 -3
  393. package/src/components/accordion/accordion-item.tsx +10 -15
  394. package/src/components/accordion/accordion.spec.tsx +134 -79
  395. package/src/components/accordion/accordion.tsx +14 -2
  396. package/src/components/alert.tsx +1 -1
  397. package/src/components/app-bar-link.tsx +1 -1
  398. package/src/components/app-bar.tsx +1 -1
  399. package/src/components/avatar.tsx +1 -1
  400. package/src/components/badge.tsx +1 -1
  401. package/src/components/breadcrumb.spec.tsx +3 -3
  402. package/src/components/breadcrumb.tsx +1 -1
  403. package/src/components/button-group.tsx +4 -4
  404. package/src/components/button.spec.tsx +1 -1
  405. package/src/components/button.tsx +1 -1
  406. package/src/components/cache-view.spec.tsx +2 -2
  407. package/src/components/cache-view.tsx +3 -3
  408. package/src/components/card.tsx +5 -5
  409. package/src/components/carousel.tsx +2 -2
  410. package/src/components/chip.spec.tsx +64 -0
  411. package/src/components/chip.tsx +5 -2
  412. package/src/components/circular-progress.spec.tsx +20 -14
  413. package/src/components/circular-progress.tsx +5 -11
  414. package/src/components/command-palette/command-palette-input.tsx +1 -1
  415. package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +1 -1
  416. package/src/components/command-palette/command-palette-suggestion-list.tsx +1 -1
  417. package/src/components/command-palette/index.spec.tsx +95 -33
  418. package/src/components/command-palette/index.tsx +16 -4
  419. package/src/components/context-menu/context-menu-item.tsx +1 -1
  420. package/src/components/context-menu/context-menu.tsx +1 -1
  421. package/src/components/data-grid/body.tsx +1 -1
  422. package/src/components/data-grid/data-grid-row.tsx +21 -3
  423. package/src/components/data-grid/data-grid.spec.tsx +246 -92
  424. package/src/components/data-grid/data-grid.tsx +52 -21
  425. package/src/components/data-grid/filters/boolean-filter.spec.tsx +29 -18
  426. package/src/components/data-grid/filters/boolean-filter.tsx +6 -6
  427. package/src/components/data-grid/filters/date-filter.spec.tsx +35 -22
  428. package/src/components/data-grid/filters/date-filter.tsx +8 -8
  429. package/src/components/data-grid/filters/enum-filter.spec.tsx +35 -20
  430. package/src/components/data-grid/filters/enum-filter.tsx +7 -7
  431. package/src/components/data-grid/filters/filter-dropdown.tsx +1 -1
  432. package/src/components/data-grid/filters/number-filter.spec.tsx +32 -22
  433. package/src/components/data-grid/filters/number-filter.tsx +7 -7
  434. package/src/components/data-grid/filters/string-filter.spec.tsx +32 -20
  435. package/src/components/data-grid/filters/string-filter.tsx +7 -7
  436. package/src/components/data-grid/footer.spec.tsx +79 -31
  437. package/src/components/data-grid/footer.tsx +10 -15
  438. package/src/components/data-grid/header.spec.tsx +152 -68
  439. package/src/components/data-grid/header.tsx +64 -27
  440. package/src/components/data-grid/selection-cell.tsx +2 -1
  441. package/src/components/dialog.spec.tsx +77 -2
  442. package/src/components/dialog.tsx +15 -2
  443. package/src/components/divider.tsx +1 -1
  444. package/src/components/drawer/drawer-toggle-button.tsx +1 -1
  445. package/src/components/drawer/index.tsx +1 -1
  446. package/src/components/dropdown.spec.tsx +9 -0
  447. package/src/components/dropdown.tsx +2 -1
  448. package/src/components/fab.tsx +1 -1
  449. package/src/components/form.tsx +1 -1
  450. package/src/components/grid.tsx +1 -1
  451. package/src/components/icons/icon.tsx +1 -1
  452. package/src/components/image.spec.tsx +82 -0
  453. package/src/components/image.tsx +18 -9
  454. package/src/components/inputs/autocomplete.tsx +1 -1
  455. package/src/components/inputs/checkbox.spec.tsx +1 -1
  456. package/src/components/inputs/checkbox.tsx +2 -1
  457. package/src/components/inputs/input-number.spec.tsx +1 -1
  458. package/src/components/inputs/input-number.tsx +1 -1
  459. package/src/components/inputs/input.spec.tsx +1 -1
  460. package/src/components/inputs/input.tsx +1 -1
  461. package/src/components/inputs/radio-group.spec.tsx +1 -1
  462. package/src/components/inputs/radio-group.tsx +1 -1
  463. package/src/components/inputs/radio.spec.tsx +1 -1
  464. package/src/components/inputs/radio.tsx +2 -1
  465. package/src/components/inputs/select.tsx +1 -1
  466. package/src/components/inputs/slider.tsx +2 -1
  467. package/src/components/inputs/switch.spec.tsx +1 -1
  468. package/src/components/inputs/switch.tsx +2 -1
  469. package/src/components/inputs/text-area.spec.tsx +1 -1
  470. package/src/components/inputs/text-area.tsx +1 -1
  471. package/src/components/linear-progress.spec.tsx +22 -18
  472. package/src/components/linear-progress.tsx +5 -11
  473. package/src/components/list/list-item.tsx +23 -5
  474. package/src/components/list/list.spec.tsx +165 -32
  475. package/src/components/list/list.tsx +38 -11
  476. package/src/components/loader.spec.tsx +1 -1
  477. package/src/components/loader.tsx +1 -1
  478. package/src/components/markdown/markdown-display.spec.tsx +133 -1
  479. package/src/components/markdown/markdown-display.tsx +13 -2
  480. package/src/components/markdown/markdown-editor.spec.tsx +124 -1
  481. package/src/components/markdown/markdown-editor.tsx +1 -1
  482. package/src/components/markdown/markdown-input.spec.tsx +1 -1
  483. package/src/components/markdown/markdown-input.tsx +1 -1
  484. package/src/components/menu/menu.tsx +2 -2
  485. package/src/components/modal.spec.tsx +127 -4
  486. package/src/components/modal.tsx +42 -4
  487. package/src/components/noty-list.tsx +2 -2
  488. package/src/components/page-container/index.tsx +1 -1
  489. package/src/components/page-container/page-header.tsx +1 -1
  490. package/src/components/page-layout/index.spec.tsx +20 -0
  491. package/src/components/page-layout/index.tsx +2 -2
  492. package/src/components/pagination.tsx +1 -1
  493. package/src/components/paper.tsx +1 -1
  494. package/src/components/rating.spec.tsx +200 -5
  495. package/src/components/rating.tsx +29 -23
  496. package/src/components/result.tsx +1 -1
  497. package/src/components/skeleton.tsx +1 -1
  498. package/src/components/suggest/index.spec.tsx +148 -44
  499. package/src/components/suggest/index.tsx +16 -3
  500. package/src/components/suggest/suggest-input.spec.tsx +1 -1
  501. package/src/components/suggest/suggest-input.tsx +1 -1
  502. package/src/components/suggest/suggestion-list.spec.tsx +1 -1
  503. package/src/components/suggest/suggestion-list.tsx +1 -1
  504. package/src/components/tabs.tsx +6 -2
  505. package/src/components/timeline.tsx +2 -2
  506. package/src/components/tooltip.tsx +1 -1
  507. package/src/components/tree/tree-item.tsx +20 -5
  508. package/src/components/tree/tree.spec.tsx +101 -2
  509. package/src/components/tree/tree.tsx +22 -4
  510. package/src/components/typography.tsx +1 -1
  511. package/src/components/wizard/index.spec.tsx +3 -3
  512. package/src/components/wizard/index.tsx +1 -1
  513. package/src/services/collection-service.spec.ts +33 -24
  514. package/src/services/collection-service.ts +35 -13
  515. package/src/services/css-variable-theme.spec.ts +1 -0
  516. package/src/services/css-variable-theme.ts +25 -0
  517. package/src/services/list-service.spec.ts +13 -42
  518. package/src/services/list-service.ts +15 -13
  519. package/src/services/theme-provider-service.ts +2 -0
  520. package/src/services/tree-service.spec.ts +12 -9
  521. package/src/services/tree-service.ts +5 -8
  522. package/src/themes/architect-theme.ts +1 -0
  523. package/src/themes/auditore-theme.ts +1 -0
  524. package/src/themes/black-mesa-theme.ts +1 -0
  525. package/src/themes/chieftain-theme.ts +1 -0
  526. package/src/themes/default-dark-theme.ts +1 -0
  527. package/src/themes/default-light-theme.ts +1 -0
  528. package/src/themes/dragonborn-theme.ts +1 -0
  529. package/src/themes/hawkins-theme.ts +1 -0
  530. package/src/themes/jedi-theme.ts +1 -0
  531. package/src/themes/neon-runner-theme.ts +1 -0
  532. package/src/themes/paladin-theme.ts +1 -0
  533. package/src/themes/plumber-theme.ts +1 -0
  534. package/src/themes/replicant-theme.ts +1 -0
  535. package/src/themes/sandworm-theme.ts +1 -0
  536. package/src/themes/shadow-broker-theme.ts +1 -0
  537. package/src/themes/sith-theme.ts +1 -0
  538. package/src/themes/vault-dweller-theme.ts +1 -0
  539. package/src/themes/wild-hunt-theme.ts +1 -0
  540. package/src/themes/xenomorph-theme.ts +1 -0
@@ -121,12 +121,16 @@ describe('CommandPalette', () => {
121
121
  })
122
122
 
123
123
  describe('keyboard navigation', () => {
124
- const triggerKeyup = (input: HTMLInputElement, key: string) => {
125
- const event = new KeyboardEvent('keyup', { key, bubbles: true })
124
+ const triggerKeydown = (input: HTMLInputElement, key: string) => {
125
+ const event = new KeyboardEvent('keydown', { key, bubbles: true })
126
126
  Object.defineProperty(event, 'target', { value: input, writable: false })
127
127
  input.dispatchEvent(event)
128
128
  }
129
129
 
130
+ const triggerInput = (input: HTMLInputElement) => {
131
+ input.dispatchEvent(new Event('input', { bubbles: true }))
132
+ }
133
+
130
134
  const getSuggestionItems = (commandPalette: HTMLElement) => {
131
135
  const suggestionList = commandPalette.querySelector('shade-command-palette-suggestion-list') as HTMLElement
132
136
  return suggestionList?.querySelectorAll('.suggestion-item') || []
@@ -155,13 +159,13 @@ describe('CommandPalette', () => {
155
159
 
156
160
  // Open and trigger suggestions
157
161
  input.value = 'test'
158
- triggerKeyup(input, 'a')
162
+ triggerInput(input)
159
163
 
160
164
  await vi.advanceTimersByTimeAsync(300)
161
165
  await flushUpdates()
162
166
 
163
167
  // Press ArrowDown
164
- triggerKeyup(input, 'ArrowDown')
168
+ triggerKeydown(input, 'ArrowDown')
165
169
  await flushUpdates()
166
170
 
167
171
  const suggestionItems = getSuggestionItems(commandPalette)
@@ -192,15 +196,15 @@ describe('CommandPalette', () => {
192
196
 
193
197
  // Open and trigger suggestions
194
198
  input.value = 'test'
195
- triggerKeyup(input, 'a')
199
+ triggerInput(input)
196
200
 
197
201
  await vi.advanceTimersByTimeAsync(300)
198
202
  await flushUpdates()
199
203
 
200
204
  // Navigate down then up
201
- triggerKeyup(input, 'ArrowDown')
205
+ triggerKeydown(input, 'ArrowDown')
202
206
  await flushUpdates()
203
- triggerKeyup(input, 'ArrowUp')
207
+ triggerKeydown(input, 'ArrowUp')
204
208
  await flushUpdates()
205
209
 
206
210
  const suggestionItems = getSuggestionItems(commandPalette)
@@ -226,15 +230,15 @@ describe('CommandPalette', () => {
226
230
  const input = commandPalette.querySelector('input') as HTMLInputElement
227
231
 
228
232
  input.value = 'test'
229
- triggerKeyup(input, 'a')
233
+ triggerInput(input)
230
234
 
231
235
  await vi.advanceTimersByTimeAsync(300)
232
236
  await flushUpdates()
233
237
 
234
238
  // Press ArrowDown multiple times
235
- triggerKeyup(input, 'ArrowDown')
236
- triggerKeyup(input, 'ArrowDown')
237
- triggerKeyup(input, 'ArrowDown')
239
+ triggerKeydown(input, 'ArrowDown')
240
+ triggerKeydown(input, 'ArrowDown')
241
+ triggerKeydown(input, 'ArrowDown')
238
242
  await flushUpdates()
239
243
 
240
244
  const suggestionItems = getSuggestionItems(commandPalette)
@@ -260,13 +264,13 @@ describe('CommandPalette', () => {
260
264
  const input = commandPalette.querySelector('input') as HTMLInputElement
261
265
 
262
266
  input.value = 'test'
263
- triggerKeyup(input, 'a')
267
+ triggerInput(input)
264
268
 
265
269
  await vi.advanceTimersByTimeAsync(300)
266
270
  await flushUpdates()
267
271
 
268
272
  // Press ArrowUp when already at first item
269
- triggerKeyup(input, 'ArrowUp')
273
+ triggerKeydown(input, 'ArrowUp')
270
274
  await flushUpdates()
271
275
 
272
276
  const suggestionItems = getSuggestionItems(commandPalette)
@@ -293,13 +297,13 @@ describe('CommandPalette', () => {
293
297
  const input = commandPalette.querySelector('input') as HTMLInputElement
294
298
 
295
299
  input.value = 'test'
296
- triggerKeyup(input, 'a')
300
+ triggerInput(input)
297
301
 
298
302
  await vi.advanceTimersByTimeAsync(300)
299
303
  await flushUpdates()
300
304
 
301
305
  // Press Enter
302
- triggerKeyup(input, 'Enter')
306
+ triggerKeydown(input, 'Enter')
303
307
  await flushUpdates()
304
308
 
305
309
  expect(onSelected).toHaveBeenCalledTimes(1)
@@ -309,12 +313,16 @@ describe('CommandPalette', () => {
309
313
  })
310
314
 
311
315
  describe('selection', () => {
312
- const triggerKeyup = (input: HTMLInputElement, key: string) => {
313
- const event = new KeyboardEvent('keyup', { key, bubbles: true })
316
+ const triggerKeydown = (input: HTMLInputElement, key: string) => {
317
+ const event = new KeyboardEvent('keydown', { key, bubbles: true })
314
318
  Object.defineProperty(event, 'target', { value: input, writable: false })
315
319
  input.dispatchEvent(event)
316
320
  }
317
321
 
322
+ const triggerInput = (input: HTMLInputElement) => {
323
+ input.dispatchEvent(new Event('input', { bubbles: true }))
324
+ }
325
+
318
326
  const getSuggestionItems = (commandPalette: HTMLElement) => {
319
327
  const suggestionList = commandPalette.querySelector('shade-command-palette-suggestion-list') as HTMLElement
320
328
  return suggestionList?.querySelectorAll('.suggestion-item') || []
@@ -345,7 +353,7 @@ describe('CommandPalette', () => {
345
353
 
346
354
  const input = commandPalette.querySelector('input') as HTMLInputElement
347
355
  input.value = 'test'
348
- triggerKeyup(input, 'a')
356
+ triggerInput(input)
349
357
 
350
358
  await vi.advanceTimersByTimeAsync(300)
351
359
  await flushUpdates()
@@ -386,12 +394,13 @@ describe('CommandPalette', () => {
386
394
 
387
395
  const input = commandPalette.querySelector('input') as HTMLInputElement
388
396
  input.value = 'test'
389
- triggerKeyup(input, 'a')
397
+ triggerInput(input)
390
398
 
399
+ await vi.advanceTimersByTimeAsync(300)
391
400
  await flushUpdates()
392
401
 
393
402
  // Select via Enter
394
- triggerKeyup(input, 'Enter')
403
+ triggerKeydown(input, 'Enter')
395
404
  await flushUpdates()
396
405
 
397
406
  expect(commandPalette.hasAttribute('data-opened')).toBe(false)
@@ -400,10 +409,8 @@ describe('CommandPalette', () => {
400
409
  })
401
410
 
402
411
  describe('command providers', () => {
403
- const triggerKeyup = (input: HTMLInputElement, key: string) => {
404
- const event = new KeyboardEvent('keyup', { key, bubbles: true })
405
- Object.defineProperty(event, 'target', { value: input, writable: false })
406
- input.dispatchEvent(event)
412
+ const triggerInput = (input: HTMLInputElement) => {
413
+ input.dispatchEvent(new Event('input', { bubbles: true }))
407
414
  }
408
415
 
409
416
  const getSuggestionItems = (commandPalette: HTMLElement) => {
@@ -430,7 +437,7 @@ describe('CommandPalette', () => {
430
437
  const input = commandPalette.querySelector('input') as HTMLInputElement
431
438
 
432
439
  input.value = 'search'
433
- triggerKeyup(input, 'h')
440
+ triggerInput(input)
434
441
 
435
442
  await vi.advanceTimersByTimeAsync(300)
436
443
  await flushUpdates()
@@ -459,7 +466,7 @@ describe('CommandPalette', () => {
459
466
  const input = commandPalette.querySelector('input') as HTMLInputElement
460
467
 
461
468
  input.value = 'search'
462
- triggerKeyup(input, 'h')
469
+ triggerInput(input)
463
470
 
464
471
  await vi.advanceTimersByTimeAsync(300)
465
472
  await flushUpdates()
@@ -493,7 +500,7 @@ describe('CommandPalette', () => {
493
500
  const input = commandPalette.querySelector('input') as HTMLInputElement
494
501
 
495
502
  input.value = 'search'
496
- triggerKeyup(input, 'h')
503
+ triggerInput(input)
497
504
 
498
505
  await vi.advanceTimersByTimeAsync(300)
499
506
  await flushUpdates()
@@ -585,9 +592,7 @@ describe('CommandPalette', () => {
585
592
  const input = commandPalette.querySelector('input') as HTMLInputElement
586
593
 
587
594
  input.value = 'test'
588
- const event = new KeyboardEvent('keyup', { key: 't', bubbles: true })
589
- Object.defineProperty(event, 'target', { value: input, writable: false })
590
- input.dispatchEvent(event)
595
+ input.dispatchEvent(new Event('input', { bubbles: true }))
591
596
 
592
597
  await vi.advanceTimersByTimeAsync(260)
593
598
  await flushUpdates()
@@ -602,6 +607,65 @@ describe('CommandPalette', () => {
602
607
  })
603
608
  })
604
609
 
610
+ describe('spatial navigation attributes', () => {
611
+ it('should have data-spatial-nav-target on the host element', async () => {
612
+ await usingAsync(new Injector(), async (injector) => {
613
+ const rootElement = document.getElementById('root') as HTMLDivElement
614
+
615
+ initializeShadeRoot({
616
+ injector,
617
+ rootElement,
618
+ jsxElement: <CommandPalette commandProviders={[]} defaultPrefix=">" />,
619
+ })
620
+
621
+ await flushUpdates()
622
+
623
+ const commandPalette = document.querySelector('shade-command-palette') as HTMLElement
624
+ expect(commandPalette.hasAttribute('data-spatial-nav-target')).toBe(true)
625
+ })
626
+ })
627
+
628
+ it('should have tabIndex of -1 on the host element', async () => {
629
+ await usingAsync(new Injector(), async (injector) => {
630
+ const rootElement = document.getElementById('root') as HTMLDivElement
631
+
632
+ initializeShadeRoot({
633
+ injector,
634
+ rootElement,
635
+ jsxElement: <CommandPalette commandProviders={[]} defaultPrefix=">" />,
636
+ })
637
+
638
+ await flushUpdates()
639
+
640
+ const commandPalette = document.querySelector('shade-command-palette') as HTMLElement
641
+ expect(commandPalette.tabIndex).toBe(-1)
642
+ })
643
+ })
644
+
645
+ it('should delegate focus to the inner input when the host is focused', async () => {
646
+ await usingAsync(new Injector(), async (injector) => {
647
+ const rootElement = document.getElementById('root') as HTMLDivElement
648
+
649
+ initializeShadeRoot({
650
+ injector,
651
+ rootElement,
652
+ jsxElement: <CommandPalette commandProviders={[]} defaultPrefix=">" />,
653
+ })
654
+
655
+ await flushUpdates()
656
+
657
+ const commandPalette = document.querySelector('shade-command-palette') as HTMLElement
658
+ const input = commandPalette.querySelector('input') as HTMLInputElement
659
+
660
+ commandPalette.dispatchEvent(new FocusEvent('focus', { bubbles: false }))
661
+
662
+ await flushUpdates()
663
+
664
+ expect(document.activeElement).toBe(input)
665
+ })
666
+ })
667
+ })
668
+
605
669
  describe('click away', () => {
606
670
  it('should close when clicking outside the component', async () => {
607
671
  await usingAsync(new Injector(), async (injector) => {
@@ -681,9 +745,7 @@ describe('CommandPalette', () => {
681
745
 
682
746
  const input = commandPalette.querySelector('input') as HTMLInputElement
683
747
  input.value = 'test'
684
- const event = new KeyboardEvent('keyup', { key: 't', bubbles: true })
685
- Object.defineProperty(event, 'target', { value: input, writable: false })
686
- input.dispatchEvent(event)
748
+ input.dispatchEvent(new Event('input', { bubbles: true }))
687
749
 
688
750
  await flushUpdates()
689
751
 
@@ -23,7 +23,7 @@ export interface CommandPaletteProps {
23
23
  }
24
24
 
25
25
  export const CommandPalette = Shade<CommandPaletteProps>({
26
- shadowDomName: 'shade-command-palette',
26
+ customElementName: 'shade-command-palette',
27
27
  css: {
28
28
  ...searchableInputStyles,
29
29
  fontFamily: cssVariableTheme.typography.fontFamily,
@@ -62,13 +62,25 @@ export const CommandPalette = Shade<CommandPaletteProps>({
62
62
  useHostProps({
63
63
  ...(isLoading ? { 'data-loading': '' } : {}),
64
64
  ...(isOpenedAtRender ? { 'data-opened': '' } : {}),
65
+ tabIndex: -1,
66
+ 'data-spatial-nav-target': '',
67
+ onfocus: (ev: FocusEvent) => {
68
+ const host = ev.currentTarget as HTMLElement
69
+ const input = host.querySelector('input')
70
+ if (input) {
71
+ input.focus()
72
+ }
73
+ },
65
74
  })
66
75
 
67
76
  return (
68
77
  <div
69
78
  ref={wrapperRef}
70
79
  className="command-palette-wrapper"
71
- onkeyup={(ev) => {
80
+ onkeydown={(ev) => {
81
+ const hasSuggestions = manager.isOpened.getValue() && manager.currentSuggestions.getValue().length > 0
82
+ if (!hasSuggestions) return
83
+
72
84
  if (ev.key === 'Enter') {
73
85
  ev.preventDefault()
74
86
  manager.selectSuggestion(injector)
@@ -84,11 +96,11 @@ export const CommandPalette = Shade<CommandPaletteProps>({
84
96
  Math.min(manager.selectedIndex.getValue() + 1, manager.currentSuggestions.getValue().length - 1),
85
97
  )
86
98
  }
87
-
99
+ }}
100
+ oninput={(ev) => {
88
101
  if (!manager.isOpened.getValue()) {
89
102
  manager.isOpened.setValue(true)
90
103
  }
91
-
92
104
  void manager.getSuggestion({ injector, term: (ev.target as HTMLInputElement).value })
93
105
  }}
94
106
  >
@@ -11,7 +11,7 @@ export type ContextMenuItemProps<T> = {
11
11
 
12
12
  export const ContextMenuItemComponent: <T>(props: ContextMenuItemProps<T>, children: ChildrenList) => JSX.Element<any> =
13
13
  Shade<ContextMenuItemProps<any>>({
14
- shadowDomName: 'shade-context-menu-item',
14
+ customElementName: 'shade-context-menu-item',
15
15
  css: {
16
16
  display: 'flex',
17
17
  fontFamily: cssVariableTheme.typography.fontFamily,
@@ -12,7 +12,7 @@ export type ContextMenuProps<T> = {
12
12
  export const ContextMenu: <T>(props: ContextMenuProps<T>, children: ChildrenList) => JSX.Element<any> = Shade<
13
13
  ContextMenuProps<any>
14
14
  >({
15
- shadowDomName: 'shade-context-menu',
15
+ customElementName: 'shade-context-menu',
16
16
  css: {
17
17
  fontFamily: cssVariableTheme.typography.fontFamily,
18
18
  '& .context-menu-backdrop': {
@@ -24,7 +24,7 @@ export const DataGridBody: <T, Column extends string>(
24
24
  props: DataGridBodyProps<T, Column>,
25
25
  children: ChildrenList,
26
26
  ) => JSX.Element<any> = Shade({
27
- shadowDomName: 'shade-data-grid-body',
27
+ customElementName: 'shade-data-grid-body',
28
28
  elementBase: HTMLTableSectionElement,
29
29
  elementBaseName: 'tbody',
30
30
  css: {
@@ -21,7 +21,7 @@ export const DataGridRow: <T, Column extends string>(
21
21
  props: DataGridRowProps<T, Column>,
22
22
  children: ChildrenList,
23
23
  ) => JSX.Element<any> = Shade({
24
- shadowDomName: 'shades-data-grid-row',
24
+ customElementName: 'shades-data-grid-row',
25
25
  css: {
26
26
  display: 'table-row',
27
27
  fontFamily: cssVariableTheme.typography.fontFamily,
@@ -75,7 +75,20 @@ export const DataGridRow: <T, Column extends string>(
75
75
  }
76
76
 
77
77
  useHostProps({
78
+ tabIndex: isFocused ? 0 : -1,
79
+ 'data-spatial-nav-target': '',
78
80
  'aria-selected': isSelected.toString(),
81
+ onpointerdown: () => {
82
+ service.setFocusAnchor()
83
+ },
84
+ onfocus: () => {
85
+ if (service.focusedEntry.getValue() !== entry) {
86
+ service.focusedEntry.setValue(entry)
87
+ }
88
+ if (!service.hasFocus.getValue()) {
89
+ service.hasFocus.setValue(true)
90
+ }
91
+ },
79
92
  ...(isSelected ? { 'data-selected': '' } : {}),
80
93
  ...(isFocused ? { 'data-focused': '' } : {}),
81
94
  ...(Object.keys(rowStyle).length > 0 ? { style: rowStyle } : {}),
@@ -89,6 +102,11 @@ export const DataGridRow: <T, Column extends string>(
89
102
  if (!el) return
90
103
  const hostEl = el.closest('shades-data-grid-row') as HTMLElement
91
104
  if (!hostEl) return
105
+
106
+ if (document.activeElement !== hostEl) {
107
+ hostEl.focus({ preventScroll: true })
108
+ }
109
+
92
110
  const scrollContainer = hostEl.closest('shade-data-grid') as HTMLElement
93
111
  if (!scrollContainer) return
94
112
 
@@ -106,13 +124,13 @@ export const DataGridRow: <T, Column extends string>(
106
124
  const scrollAdjustment = rowTopInContainer - headerHeight
107
125
  scrollContainer.scrollTo({
108
126
  top: scrollContainer.scrollTop + scrollAdjustment,
109
- behavior: 'smooth',
127
+ behavior: 'instant',
110
128
  })
111
129
  } else if (rowBottomInContainer > scrollContainer.clientHeight - footerHeight) {
112
130
  const scrollAdjustment = rowBottomInContainer - (scrollContainer.clientHeight - footerHeight)
113
131
  scrollContainer.scrollTo({
114
132
  top: scrollContainer.scrollTop + scrollAdjustment,
115
- behavior: 'smooth',
133
+ behavior: 'instant',
116
134
  })
117
135
  }
118
136
  })