feat(cms): extract all-releases grid as embeddable ALL-tab component (9.8.B)

CmsAllReleasesGrid self-loads the cross-medium release list so 8.A can host it as the ALL tab with no VM plumbing; TrackList's Albums mode renders it now. Preserves sort/delete/expand/edit and the 8.D Type chip.
This commit is contained in:
daniel-c-harvey
2026-06-13 21:26:43 -04:00
parent 2991d9ec5d
commit e78a61c3b1
4 changed files with 77 additions and 30 deletions
@@ -54,9 +54,11 @@
}
else if (VM.Mode == BrowseMode.Albums)
{
<CmsAlbumBrowser Releases="VM.Albums"
IsLoading="VM.AlbumsLoading"
OnReleasesChanged="OnAlbumsChanged" />
@* The all-releases grid is now a self-contained component (Phase 9 §8.B): it owns its own load
and refresh, so the host renders it with no parameters. The 8.A tab strip hosts this same
component as its ALL tab. Genre mode still uses the VM cache below; only album loading moved
into the component, so VM.Albums / VM.AlbumsLoading are no longer read here. *@
<CmsAllReleasesGrid OnReleasesChanged="OnAlbumsChanged" />
}
else if (VM.Mode == BrowseMode.Archive)
{
@@ -76,8 +78,8 @@
@code {
private CmsTrackGrid? _grid;
// The album browser owns its own row state and removes a deleted release locally. Invalidate the
// VM cache so genres and album counts reflect the deletion on next mode switch.
// The all-releases grid refreshes its own list after a delete; this notification lets us invalidate
// the VM's genre cache so genre counts reflect the deletion on the next switch into Genre mode.
private void OnAlbumsChanged()
{
VM.Invalidate();