From 62180b15e1d828523925b45f25f43553c19ffdd8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Fri, 16 May 2025 15:39:26 +0400 Subject: [PATCH] refac: command arrow up/down behaviour --- src/lib/components/chat/MessageInput.svelte | 22 +++++++++++++++++-- .../MessageInput/Commands/Knowledge.svelte | 9 ++++---- .../chat/MessageInput/Commands/Models.svelte | 9 ++++---- .../chat/MessageInput/Commands/Prompts.svelte | 9 ++++---- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 26bc6e226..ba705146f 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -878,20 +878,38 @@ e.preventDefault(); commandsElement.selectUp(); + const container = document.getElementById('command-options-container'); const commandOptionButton = [ ...document.getElementsByClassName('selected-command-option-button') ]?.at(-1); - commandOptionButton.scrollIntoView({ block: 'center' }); + + if (commandOptionButton && container) { + const elTop = commandOptionButton.offsetTop; + const elHeight = commandOptionButton.offsetHeight; + const containerHeight = container.clientHeight; + + // Center the selected button in the container + container.scrollTop = elTop - containerHeight / 2 + elHeight / 2; + } } if (commandsContainerElement && e.key === 'ArrowDown') { e.preventDefault(); commandsElement.selectDown(); + const container = document.getElementById('command-options-container'); const commandOptionButton = [ ...document.getElementsByClassName('selected-command-option-button') ]?.at(-1); - commandOptionButton.scrollIntoView({ block: 'center' }); + + if (commandOptionButton && container) { + const elTop = commandOptionButton.offsetTop; + const elHeight = commandOptionButton.offsetHeight; + const containerHeight = container.clientHeight; + + // Center the selected button in the container + container.scrollTop = elTop - containerHeight / 2 + elHeight / 2; + } } if (commandsContainerElement && e.key === 'Enter') { diff --git a/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte b/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte index adf82bb0f..d215dda42 100644 --- a/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte +++ b/src/lib/components/chat/MessageInput/Commands/Knowledge.svelte @@ -170,10 +170,11 @@ class="px-2 mb-2 text-left w-full absolute bottom-0 left-0 right-0 z-10" >
-
-
+
+
{#each filteredItems as item, idx}