From 6ea1cfed90ec8f70fa15737a43b4d08d591ce54e Mon Sep 17 00:00:00 2001 From: Yash Date: Mon, 27 Apr 2026 00:06:38 +0530 Subject: [PATCH] feat: add scroll to top/bottom buttons in chat component --- src/lib/components/chat/Chat.svelte | 25 +++++- src/lib/components/chat/MessageInput.svelte | 85 +++++++++++++++------ 2 files changed, 84 insertions(+), 26 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 03af994a68..28333f4aef 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -121,9 +121,26 @@ let messageInput: MessageInput | undefined; let autoScroll = true; + let showScrollToTop = false; + let showScrollToBottom = false; let processing = ''; let messagesContainerElement: HTMLDivElement; + const updateScrollButtonsState = () => { + if (!messagesContainerElement) return; + + const distanceFromBottom = + messagesContainerElement.scrollHeight - + messagesContainerElement.scrollTop - + messagesContainerElement.clientHeight; + const distanceFromTop = messagesContainerElement.scrollTop; + const visibilityThreshold = Math.max(120, messagesContainerElement.clientHeight * 0.5); + + autoScroll = distanceFromBottom <= 5; + showScrollToBottom = distanceFromBottom > visibilityThreshold; + showScrollToTop = !autoScroll && distanceFromTop > visibilityThreshold; + }; + let navbarElement; let showEventConfirmation = false; @@ -2903,13 +2920,11 @@
{#if ($settings?.landingPageMode === 'chat' && !$selectedFolder) || createMessagesList(history, history.currentId).length > 0}