diff options
author | mat <github@matdoes.dev> | 2022-04-09 17:29:51 -0500 |
---|---|---|
committer | mat <github@matdoes.dev> | 2022-04-09 17:29:51 -0500 |
commit | a6fe057b4626b6dfb1c5c715dfb516036de72204 (patch) | |
tree | d4e8637b6b0b7c1744193499ee4f246ecf817bba /src/lib/Collapsible.svelte | |
parent | f3abc77ac9333ee115704645437511baacee85e8 (diff) | |
download | skyblock-stats-a6fe057b4626b6dfb1c5c715dfb516036de72204.tar.gz skyblock-stats-a6fe057b4626b6dfb1c5c715dfb516036de72204.tar.bz2 skyblock-stats-a6fe057b4626b6dfb1c5c715dfb516036de72204.zip |
fix leaderboard toc and scrolling behavior
Diffstat (limited to 'src/lib/Collapsible.svelte')
-rw-r--r-- | src/lib/Collapsible.svelte | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/lib/Collapsible.svelte b/src/lib/Collapsible.svelte index e1f28b2..a7b6105 100644 --- a/src/lib/Collapsible.svelte +++ b/src/lib/Collapsible.svelte @@ -5,23 +5,39 @@ --> <script lang="ts"> import { browser } from '$app/env' + import { onMount } from 'svelte' import { cleanId } from './utils' let open: boolean export let id: string | undefined = undefined + $: elementId = id?.replace(/_/, '-') export let lazy = true + let detailsEl + function checkHash() { - if (id && id === location.hash.slice(1)) { + if (elementId && elementId === location.hash.slice(1)) { + console.log('open') open = true + requestAnimationFrame(() => { + // scroll to the element + window.scrollTo({ + top: detailsEl.offsetTop, + behavior: 'smooth', + }) + }) } } + + onMount(() => { + if (browser) checkHash() + }) if (browser) checkHash() </script> <svelte:window on:hashchange={checkHash} /> -<details bind:open {id}> +<details bind:open id={elementId} bind:this={detailsEl}> <summary> <slot name="title"> <h2>{id ? cleanId(id) : 'Details'}</h2> |