mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-12 03:50:36 +08:00
Co-authored-by: dnlklmn <pelicansinberlin@gmail.com> Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
34 lines
780 B
Svelte
34 lines
780 B
Svelte
<script lang="ts" strictEvents>
|
|
import type { Route } from "@app/lib/router/definitions";
|
|
|
|
import { createEventDispatcher } from "svelte";
|
|
import { push, routeToPath, useDefaultNavigation } from "@app/lib/router";
|
|
|
|
export let route: Route;
|
|
export let disabled: boolean = false;
|
|
export let title: string | undefined = undefined;
|
|
|
|
const dispatch = createEventDispatcher<{
|
|
afterNavigate: null;
|
|
}>();
|
|
|
|
function navigateToRoute(event: MouseEvent): void {
|
|
if (disabled) {
|
|
event.preventDefault();
|
|
return;
|
|
}
|
|
|
|
if (useDefaultNavigation(event)) {
|
|
return;
|
|
}
|
|
|
|
event.preventDefault();
|
|
void push(route);
|
|
dispatch("afterNavigate");
|
|
}
|
|
</script>
|
|
|
|
<a on:click={navigateToRoute} href={routeToPath(route)} {title}>
|
|
<slot />
|
|
</a>
|