generateur_v3/frontend/src/context/Navigation.svelte

43 lines
1.1 KiB
Svelte

<script lang="ts">
import { browser } from '$app/environment';
import { goto, afterNavigate } from '$app/navigation';
import { setContext } from 'svelte';
import { page } from '$app/stores';
import { base } from '$app/paths';
let previous: string | null = base;
let first = true;
const navigate = (
url: string | number,
params: object | undefined,
options:
| {
replaceState?: boolean | undefined;
noScroll?: boolean | undefined;
keepFocus?: boolean | undefined;
state?: any;
invalidateAll?: boolean | undefined;
}
| undefined
) => {
if (browser) {
console.log('PREVIOUS', previous, typeof url == 'number', previous);
if (typeof url == 'number' && previous != null) {
goto(previous);
} else {
const parsedParams = new URLSearchParams(params as Record<string, string>);
goto(`${url}?${parsedParams.toString()}`, { ...options });
}
first = false;
}
};
afterNavigate(({ from }) => {
previous = from?.url.toString() || previous;
});
setContext('navigation', { navigate });
</script>
<slot />