From 8e431e83f79ad063226f11bea2561dab1ed96342 Mon Sep 17 00:00:00 2001 From: FragginWagon Date: Wed, 28 Jan 2026 20:12:39 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Improve=20scroll-to-result=20functi?= =?UTF-8?q?onality=20with=20smoother=20scrolling=20and=20better=20fallback?= =?UTF-8?q?=20handling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pokedex.online/src/views/GamemasterExplorer.vue | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code/websites/pokedex.online/src/views/GamemasterExplorer.vue b/code/websites/pokedex.online/src/views/GamemasterExplorer.vue index b8cf825..955f309 100644 --- a/code/websites/pokedex.online/src/views/GamemasterExplorer.vue +++ b/code/websites/pokedex.online/src/views/GamemasterExplorer.vue @@ -619,15 +619,17 @@ function scrollToResult() { const lineNumber = lineIndex + 1; // Convert to 1-based line number const lineElement = document.querySelector(`[data-line="${lineNumber}"]`); - + if (lineElement) { // Scroll to element lineElement.scrollIntoView({ behavior: 'smooth', block: 'center' }); - + // For virtual scroller, ensure it's rendered by waiting a tick if (!lineElement.textContent) { setTimeout(() => { - const retryElement = document.querySelector(`[data-line="${lineNumber}"]`); + const retryElement = document.querySelector( + `[data-line="${lineNumber}"]` + ); retryElement?.scrollIntoView({ behavior: 'smooth', block: 'center' }); }, 100); } @@ -635,7 +637,9 @@ function scrollToResult() { // Fallback: scroll container to approximate position const container = document.querySelector('.scroller, .lines-container'); if (container) { - const estimatedScroll = (lineIndex / displayLines.value.length) * (container.scrollHeight - container.clientHeight); + const estimatedScroll = + (lineIndex / displayLines.value.length) * + (container.scrollHeight - container.clientHeight); container.scrollTop = estimatedScroll; } }