diff --git a/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte b/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte index 6bedae00c0..939a9605d1 100644 --- a/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte +++ b/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte @@ -1,23 +1,11 @@ diff --git a/frontend/src/lib/components/ModelTable/ModelTable.svelte b/frontend/src/lib/components/ModelTable/ModelTable.svelte index d3f10383bc..d8c8780d73 100644 --- a/frontend/src/lib/components/ModelTable/ModelTable.svelte +++ b/frontend/src/lib/components/ModelTable/ModelTable.svelte @@ -351,14 +351,20 @@ if (finalFilterValue) { finalFilterValue.forEach(({ value }) => page.url.searchParams.append(field, value)); } - - const hrefPattern = new RegExp(`^/${URLModel}(\\?.*)?$`); - const fullPath = page.url.pathname + page.url.search; - if (hrefPattern.test(fullPath)) { - breadcrumbs.updateCrumb(hrefPattern, { href: fullPath }); - } } history.replaceState(history.state, '', page.url.pathname + page.url.search); + // Sync the current crumb's href with the new filter query. + breadcrumbs.update((crumbs) => { + if (crumbs.length < 2) return crumbs; + const last = crumbs[crumbs.length - 1]; + const lastPath = last.href?.split('?')[0]; + if (lastPath !== page.url.pathname) return crumbs; + const newHref = page.url.pathname + page.url.search; + if (last.href === newHref) return crumbs; + const next = crumbs.slice(); + next[next.length - 1] = { ...last, href: newHref }; + return next; + }); // untracked so resetFilters can delete the entry without retriggering us if (isStandaloneTable) { untrack(() => { diff --git a/frontend/src/lib/components/SideBar/SideBarFooter.svelte b/frontend/src/lib/components/SideBar/SideBarFooter.svelte index fde717186d..6bd21307cf 100644 --- a/frontend/src/lib/components/SideBar/SideBarFooter.svelte +++ b/frontend/src/lib/components/SideBar/SideBarFooter.svelte @@ -1,5 +1,6 @@