Files

30 lines
921 B
JavaScript
Raw Permalink Normal View History

2023-06-08 12:23:31 -04:00
import * as Turbo from 'https://cdn.jsdelivr.net/npm/@hotwired/turbo@7.3.0/+esm';
2023-06-07 17:23:57 -04:00
2023-06-08 12:23:31 -04:00
(() => {
2023-06-07 17:23:57 -04:00
if (!window.scrollPositions) {
window.scrollPositions = {};
}
2023-06-08 12:23:31 -04:00
function preserveScroll() {
document.querySelectorAll('[data-preserve-scroll').forEach(element => {
2023-06-07 17:23:57 -04:00
scrollPositions[element.id] = element.scrollTop;
2023-06-08 12:23:31 -04:00
});
2023-06-07 17:23:57 -04:00
}
2023-06-08 12:23:31 -04:00
function restoreScroll(event) {
document.querySelectorAll('[data-preserve-scroll').forEach(element => {
2023-06-07 17:23:57 -04:00
element.scrollTop = scrollPositions[element.id];
2023-06-08 12:23:31 -04:00
});
2023-06-08 00:15:07 -04:00
if (event.detail && event.detail.newBody) {
2023-06-08 12:23:31 -04:00
event.detail.newBody.querySelectorAll('[data-preserve-scroll').forEach(element => {
2023-06-08 00:15:07 -04:00
element.scrollTop = scrollPositions[element.id];
2023-06-08 12:23:31 -04:00
});
2023-06-08 00:15:07 -04:00
}
2023-06-07 17:23:57 -04:00
}
2023-06-08 12:23:31 -04:00
window.addEventListener('turbo:before-cache', preserveScroll);
window.addEventListener('turbo:before-render', restoreScroll);
window.addEventListener('turbo:render', restoreScroll);
})();