From 4cdb4bde6fa9ba8274b69b838ef668a7599f66e8 Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Sat, 3 Aug 2024 11:58:41 +0200 Subject: [PATCH] Add scroll preserving snippet --- src/front/index.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/front/index.ts b/src/front/index.ts index a6c2953..7fb054e 100644 --- a/src/front/index.ts +++ b/src/front/index.ts @@ -1 +1,31 @@ export * from "./controllers.js"; + +(function enableScrollPreservation() { + /* https://github.com/hotwired/turbo/issues/37#issuecomment-1422200868 */ + Turbo.scrollTop = 0; + + Turbo.shouldPreserveScroll = false; + + let shouldPreserveScroll = 0; + + document.addEventListener("turbo:click", function (event) { + if (event.target.hasAttribute("data-turbo-preserve-scroll")) { + shouldPreserveScroll = true; + } else { + shouldPreserveScroll = false; + } + }); + + document.addEventListener("turbo:visit", function (event) { + if (shouldPreserveScroll) { + Turbo.scrollTop = document.documentElement.scrollTop; + } else { + Turbo.scrollTop = 0; + } + }); + + addEventListener("turbo:visit", () => { + Turbo.navigator.currentVisit.scrolled = true; + document.documentElement.scrollTop = Turbo.scrollTop; + }); +})();