Skip to content

Commit 5874262

Browse files
authored
scrolly (#308)
save sidebar scrolltop on beforeunload; restore on load closes #305
1 parent 2cfac7e commit 5874262

File tree

21 files changed

+63
-0
lines changed

21 files changed

+63
-0
lines changed

src/render.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ function renderSidebar(title = "Home", pages: (Page | Section)[], path: string):
138138
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
139139
}
140140
}
141+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
142+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
143+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
141144
}</script>`;
142145
}
143146

test/output/build/archives/tar.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@
7676
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
7777
}
7878
}
79+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
80+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
81+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
7982
}</script>
8083
<div id="observablehq-center">
8184
<main id="observablehq-main" class="observablehq">

test/output/build/archives/zip.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@
6262
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
6363
}
6464
}
65+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
66+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
67+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
6568
}</script>
6669
<div id="observablehq-center">
6770
<main id="observablehq-main" class="observablehq">

test/output/build/config/closed/page.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
4242
}
4343
}
44+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
45+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
46+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
4447
}</script>
4548
<div id="observablehq-center">
4649
<main id="observablehq-main" class="observablehq">

test/output/build/config/index.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
4242
}
4343
}
44+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
45+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
46+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
4447
}</script>
4548
<div id="observablehq-center">
4649
<main id="observablehq-main" class="observablehq">

test/output/build/config/one.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
4242
}
4343
}
44+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
45+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
46+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
4447
}</script>
4548
<div id="observablehq-center">
4649
<main id="observablehq-main" class="observablehq">

test/output/build/config/sub/two.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
4242
}
4343
}
44+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
45+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
46+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
4447
}</script>
4548
<div id="observablehq-center">
4649
<main id="observablehq-main" class="observablehq">

test/output/build/config/toc-override.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
4242
}
4343
}
44+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
45+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
46+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
4447
}</script>
4548
<aside id="observablehq-toc" data-selector="#observablehq-main h1:not(:first-of-type), #observablehq-main h2:not(h1 + h2)">
4649
<nav>

test/output/build/config/toc.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
4242
}
4343
}
44+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
45+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
46+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
4447
}</script>
4548
<aside id="observablehq-toc" data-selector="#observablehq-main h1:not(:first-of-type), #observablehq-main h2:not(h1 + h2)">
4649
<nav>

test/output/build/fetches/foo.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@
4343
case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break;
4444
}
4545
}
46+
addEventListener("beforeunload", () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop));
47+
const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly");
48+
if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly;
4649
}</script>
4750
<div id="observablehq-center">
4851
<main id="observablehq-main" class="observablehq">

0 commit comments

Comments
 (0)