upend/ui/src/components/UpLink.svelte

42 lines
930 B
Svelte
Raw Normal View History

2021-11-11 23:37:42 +01:00
<script lang="ts">
import { getContext } from "svelte";
import { Link, useLocation, useParams } from "svelte-navigator";
import type { Writable } from "svelte/store";
2021-11-11 23:37:42 +01:00
import type { Address, VALUE_TYPE } from "upend/types";
const params = useParams();
const location = useLocation();
2021-11-11 23:37:42 +01:00
export let to: {
2021-11-11 23:37:42 +01:00
entity?: Address;
attribute?: string;
value?: { t: VALUE_TYPE; c: string };
};
2021-11-11 23:37:42 +01:00
const { index } = getContext("browse") as { index: Writable<number> };
2021-11-11 23:37:42 +01:00
let routerTo = "#";
2021-11-30 23:28:50 +01:00
$: {
if ($location.pathname.startsWith("/browse") && to.entity) {
let addresses = $params.addresses.split(",");
routerTo =
"/browse/" +
addresses
.slice(0, $index + 1)
.concat([to.entity])
.join(",");
2021-11-30 23:28:50 +01:00
}
2021-11-11 23:37:42 +01:00
}
</script>
<Link class="uplink" to={routerTo}>
2021-11-11 23:37:42 +01:00
<slot />
</Link>
<style lang="scss">
:global(.uplink) {
text-decoration: none;
}
</style>