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; + }); +})();