From 74374e21a8128697402ae48e41f9c968dc9fcc93 Mon Sep 17 00:00:00 2001 From: Isaac Janzen <50783505+janzenisaac@users.noreply.github.com> Date: Tue, 25 Feb 2025 11:16:10 -0600 Subject: [PATCH] DEV: Add `correct-scroll-position` behavior transformer (#31486) Add `correct-scroll-position` behavior transformer --- .../app/lib/composer/composer-position.js | 26 +++++++++---------- .../discourse/app/lib/transformer/registry.js | 1 + 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/discourse/app/lib/composer/composer-position.js b/app/assets/javascripts/discourse/app/lib/composer/composer-position.js index 279eca9c148..e8b5c3ed65d 100644 --- a/app/assets/javascripts/discourse/app/lib/composer/composer-position.js +++ b/app/assets/javascripts/discourse/app/lib/composer/composer-position.js @@ -49,17 +49,17 @@ function correctScrollPosition() { // This pushes the fixed element offscreen // Here we detect when the composer's top position is above the window's // current scroll offset and correct it - later(() => { - const el = document.querySelector("#reply-control"); - const rect = el.getBoundingClientRect(); - - if (rect.top < -1) { - const scrollAmount = window.scrollY + rect.top; - - window.scrollTo({ - top: scrollAmount, - behavior: "instant", - }); - } - }, 150); + applyBehaviorTransformer("composer-position:correct-scroll-position", () => { + later(() => { + const el = document.querySelector("#reply-control"); + const rect = el.getBoundingClientRect(); + if (rect.top < -1) { + const scrollAmount = window.scrollY + rect.top; + window.scrollTo({ + top: scrollAmount, + behavior: "instant", + }); + } + }, 150); + }); } diff --git a/app/assets/javascripts/discourse/app/lib/transformer/registry.js b/app/assets/javascripts/discourse/app/lib/transformer/registry.js index 79cdf596f4e..4a9e4f3ca9b 100644 --- a/app/assets/javascripts/discourse/app/lib/transformer/registry.js +++ b/app/assets/javascripts/discourse/app/lib/transformer/registry.js @@ -1,5 +1,6 @@ export const BEHAVIOR_TRANSFORMERS = Object.freeze([ // use only lowercase names + "composer-position:correct-scroll-position", "composer-position:editor-touch-move", "discovery-topic-list-load-more", "full-page-search-load-more",