diff --git a/public/js/smartfeeds.js b/public/js/smartfeeds.js index e46378f..8793238 100644 --- a/public/js/smartfeeds.js +++ b/public/js/smartfeeds.js @@ -68,6 +68,7 @@ function smarten_feeds() { return feed.__target_element?.(item) ?? feed; }; + feed.__autoscroll_debounce_timeout = undefined; feed.__render = async (item) => { feed.__context = feed.__context ?? @@ -118,6 +119,24 @@ function smarten_feeds() { ); break; } + + if (feed.dataset.autoscroll) { + if (feed.__autoscroll_debounce_timeout) { + clearTimeout(feed.__autoscroll_debounce_timeout); + } + + feed.__autoscroll_debounce_timeout = setTimeout(() => { + feed.scrollTo({ + behavior: "auto", + left: 0, + top: + (feed.dataset.insert ?? "append") === "append" + ? feed.scrollHeight + : 0, + }); + feed.__autoscroll_debounce_timeout = undefined; + }, 15); + } } }; @@ -182,22 +201,12 @@ function smarten_feeds() { feed.dataset.hydrated = true; feed.dataset.last_update = new Date().toISOString(); feed.__attempts_since_last_successful_update = 0; - - if (feed.dataset.autoscroll) { - setTimeout(() => { - feed.scrollTop = - (feed.dataset.insert ?? "append") === "append" - ? feed.scrollHeight - : 0; - }, 50); - } }) .catch((error) => { if (error === "smartfeed:stopped") { return; } - debugger; feed.dataset.error = JSON.stringify(error); console.trace(error); }) diff --git a/public/js/smartforms.js b/public/js/smartforms.js index e28c9bd..a644732 100644 --- a/public/js/smartforms.js +++ b/public/js/smartforms.js @@ -195,6 +195,7 @@ function smarten_forms() { form.querySelectorAll("[enter-key-submits]").forEach((element) => { element.addEventListener("keypress", (event) => { if (event.key === "Enter" && !event.shiftKey) { + event.preventDefault(); form.requestSubmit(); } });