🛠️ Refactor search handling in search.svelte and +page.svelte; implement custom addParams and deleteParam utility

This commit is contained in:
pheralb
2025-09-01 11:34:24 +01:00
parent e6d441e9f2
commit 2a38b834c3
4 changed files with 110 additions and 55 deletions
+35
View File
@@ -0,0 +1,35 @@
import { page } from "$app/state";
import { goto } from "$app/navigation";
import { SvelteURLSearchParams } from "svelte/reactivity";
interface SearchParams {
params: Record<string, string | null>;
}
const addParams = ({ params }: SearchParams) => {
const searchParams = new SvelteURLSearchParams(page.url.searchParams);
Object.entries(params).forEach(([key, value]) => {
if (value) {
searchParams.set(key, value);
} else {
searchParams.delete(key);
}
});
goto(`?${searchParams.toString()}`, {
keepFocus: true,
noScroll: true,
replaceState: true,
});
};
const deleteParam = (key: string) => {
const params = new SvelteURLSearchParams(page.url.searchParams);
params.delete(key);
goto(`?${params.toString()}`, {
keepFocus: true,
noScroll: true,
replaceState: true,
});
};
export { addParams, deleteParam };