aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-04-09 17:29:51 -0500
committermat <github@matdoes.dev>2022-04-09 17:29:51 -0500
commita6fe057b4626b6dfb1c5c715dfb516036de72204 (patch)
treed4e8637b6b0b7c1744193499ee4f246ecf817bba /src/lib
parentf3abc77ac9333ee115704645437511baacee85e8 (diff)
downloadskyblock-stats-a6fe057b4626b6dfb1c5c715dfb516036de72204.tar.gz
skyblock-stats-a6fe057b4626b6dfb1c5c715dfb516036de72204.tar.bz2
skyblock-stats-a6fe057b4626b6dfb1c5c715dfb516036de72204.zip
fix leaderboard toc and scrolling behavior
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Collapsible.svelte20
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>