better uplink behavior

This commit is contained in:
Tomáš Mládek 2021-12-19 19:25:16 +01:00
parent 78152c94d6
commit 36d3479f0d

View file

@ -1,11 +1,12 @@
<script lang="ts"> <script lang="ts">
import { getContext } from "svelte"; import { getContext } from "svelte";
import { Link, useLocation, useParams } from "svelte-navigator"; import { useNavigate, useLocation, useParams } from "svelte-navigator";
import type { Writable } from "svelte/store"; import type { Writable } from "svelte/store";
import type { Address, VALUE_TYPE } from "upend/types"; import type { Address, VALUE_TYPE } from "upend/types";
const params = useParams(); const params = useParams();
const location = useLocation(); const location = useLocation();
const navigate = useNavigate();
export let to: { export let to: {
entity?: Address; entity?: Address;
@ -15,24 +16,30 @@
const { index } = getContext("browse") as { index: Writable<number> }; const { index } = getContext("browse") as { index: Writable<number> };
let routerTo = "#"; function onClick() {
$: {
if ($location.pathname.startsWith("/browse") && to.entity) { if ($location.pathname.startsWith("/browse") && to.entity) {
let addresses = $params.addresses.split(","); let addresses = $params.addresses.split(",");
routerTo = const routerTo =
"/browse/" + "/browse/" +
addresses addresses
.slice(0, $index + 1) .slice(0, $index + 1)
.concat([to.entity]) .concat([to.entity])
.join(","); .join(",");
navigate(routerTo);
return true;
} }
} }
</script> </script>
<Link class="uplink" to={routerTo}> <a
class="uplink"
href="/#/browse/{to.entity}"
on:click|preventDefault={onClick}
>
<slot /> <slot />
</Link> </a>
<style lang="scss"> <style lang="scss">
:global(.uplink) { :global(.uplink) {