From e9b1ceca2345face362f8d88f4c34b6e03548ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 4 Dec 2023 12:12:09 +0100 Subject: [PATCH 1/4] save sidebar scrolltop on beforeunload restore on load closes #305 --- src/render.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/render.ts b/src/render.ts index f6d0bffe4..2727efb4b 100644 --- a/src/render.ts +++ b/src/render.ts @@ -138,6 +138,9 @@ function renderSidebar(title = "Home", pages: (Page | Section)[], path: string): case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break; } } + window.onbeforeunload = () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop); + const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly"); + if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly; }`; } From 630bc703d304c119f50f3ccc8f1e85b30e23aafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Mon, 4 Dec 2023 12:12:21 +0100 Subject: [PATCH 2/4] fix tests --- test/output/build/archives/tar.html | 3 +++ test/output/build/archives/zip.html | 3 +++ test/output/build/config/closed/page.html | 3 +++ test/output/build/config/index.html | 3 +++ test/output/build/config/one.html | 3 +++ test/output/build/config/sub/two.html | 3 +++ test/output/build/config/toc-override.html | 3 +++ test/output/build/config/toc.html | 3 +++ test/output/build/fetches/foo.html | 3 +++ test/output/build/fetches/top.html | 3 +++ test/output/build/files/files.html | 3 +++ test/output/build/files/subsection/subfiles.html | 3 +++ test/output/build/imports/foo/foo.html | 3 +++ test/output/build/missing-file/index.html | 3 +++ test/output/build/missing-import/index.html | 3 +++ test/output/build/multi/index.html | 3 +++ test/output/build/multi/subsection/index.html | 3 +++ test/output/build/simple-public/index.html | 3 +++ test/output/build/simple/simple.html | 3 +++ test/output/build/subtitle/index.html | 3 +++ 20 files changed, 60 insertions(+) diff --git a/test/output/build/archives/tar.html b/test/output/build/archives/tar.html index 0c1bf3e2a..9f6c8a885 100644 --- a/test/output/build/archives/tar.html +++ b/test/output/build/archives/tar.html @@ -76,6 +76,9 @@ case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break; } } + window.onbeforeunload = () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop); + const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly"); + if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly; }
diff --git a/test/output/build/archives/zip.html b/test/output/build/archives/zip.html index 75552f62b..9a34b9c03 100644 --- a/test/output/build/archives/zip.html +++ b/test/output/build/archives/zip.html @@ -62,6 +62,9 @@ case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break; } } + window.onbeforeunload = () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop); + const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly"); + if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly; }
diff --git a/test/output/build/config/closed/page.html b/test/output/build/config/closed/page.html index 2faa66baa..82577a191 100644 --- a/test/output/build/config/closed/page.html +++ b/test/output/build/config/closed/page.html @@ -41,6 +41,9 @@ case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break; } } + window.onbeforeunload = () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop); + const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly"); + if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly; }
diff --git a/test/output/build/config/index.html b/test/output/build/config/index.html index 6b93a330b..a02e66255 100644 --- a/test/output/build/config/index.html +++ b/test/output/build/config/index.html @@ -41,6 +41,9 @@ case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break; } } + window.onbeforeunload = () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop); + const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly"); + if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly; }
diff --git a/test/output/build/config/one.html b/test/output/build/config/one.html index 6404db548..650732177 100644 --- a/test/output/build/config/one.html +++ b/test/output/build/config/one.html @@ -41,6 +41,9 @@ case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break; } } + window.onbeforeunload = () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop); + const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly"); + if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly; }
diff --git a/test/output/build/config/sub/two.html b/test/output/build/config/sub/two.html index d06f97028..fd7b9b239 100644 --- a/test/output/build/config/sub/two.html +++ b/test/output/build/config/sub/two.html @@ -41,6 +41,9 @@ case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break; } } + window.onbeforeunload = () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop); + const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly"); + if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly; }
diff --git a/test/output/build/config/toc-override.html b/test/output/build/config/toc-override.html index acfb0b134..8efcf9909 100644 --- a/test/output/build/config/toc-override.html +++ b/test/output/build/config/toc-override.html @@ -41,6 +41,9 @@ case "false": if (!details.classList.contains("observablehq-section-active")) details.open = false; break; } } + window.onbeforeunload = () => sessionStorage.setItem("observablehq-sidebar-scrolly", document.querySelector("#observablehq-sidebar").scrollTop); + const scrolly = +sessionStorage.getItem("observablehq-sidebar-scrolly"); + if (scrolly) document.querySelector("#observablehq-sidebar").scrollTop = scrolly; }