diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 9016e979d..042159bb4 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -592,29 +592,6 @@ placeholder={placeholder ? placeholder : $i18n.t('Send a Message')} largeTextAsFile={$settings?.largeTextAsFile ?? false} bind:value={prompt} - on:enter={async (e) => { - const commandsContainerElement = - document.getElementById('commands-container'); - if (commandsContainerElement) { - e.preventDefault(); - - const commandOptionButton = [ - ...document.getElementsByClassName('selected-command-option-button') - ]?.at(-1); - - if (commandOptionButton) { - commandOptionButton?.click(); - return; - } - } - - if (prompt !== '') { - dispatch('submit', prompt); - } - }} - on:keypress={(e) => { - e = e.detail.event; - }} on:keydown={async (e) => { e = e.detail.event; @@ -657,34 +634,69 @@ editButton?.click(); } - if (commandsContainerElement && e.key === 'ArrowUp') { - e.preventDefault(); - commandsElement.selectUp(); + if (commandsContainerElement) { + if (commandsContainerElement && e.key === 'ArrowUp') { + e.preventDefault(); + commandsElement.selectUp(); - const commandOptionButton = [ - ...document.getElementsByClassName('selected-command-option-button') - ]?.at(-1); - commandOptionButton.scrollIntoView({ block: 'center' }); - } + const commandOptionButton = [ + ...document.getElementsByClassName('selected-command-option-button') + ]?.at(-1); + commandOptionButton.scrollIntoView({ block: 'center' }); + } - if (commandsContainerElement && e.key === 'ArrowDown') { - e.preventDefault(); - commandsElement.selectDown(); + if (commandsContainerElement && e.key === 'ArrowDown') { + e.preventDefault(); + commandsElement.selectDown(); - const commandOptionButton = [ - ...document.getElementsByClassName('selected-command-option-button') - ]?.at(-1); - commandOptionButton.scrollIntoView({ block: 'center' }); - } + const commandOptionButton = [ + ...document.getElementsByClassName('selected-command-option-button') + ]?.at(-1); + commandOptionButton.scrollIntoView({ block: 'center' }); + } - if (commandsContainerElement && e.key === 'Tab') { - e.preventDefault(); + if (commandsContainerElement && e.key === 'Tab') { + e.preventDefault(); - const commandOptionButton = [ - ...document.getElementsByClassName('selected-command-option-button') - ]?.at(-1); + const commandOptionButton = [ + ...document.getElementsByClassName('selected-command-option-button') + ]?.at(-1); - commandOptionButton?.click(); + commandOptionButton?.click(); + } + + if (commandsContainerElement && e.key === 'Enter') { + e.preventDefault(); + + const commandOptionButton = [ + ...document.getElementsByClassName('selected-command-option-button') + ]?.at(-1); + + if (commandOptionButton) { + commandOptionButton?.click(); + } else { + document.getElementById('send-message-button')?.click(); + } + } + } else { + if ( + !$mobile || + !( + 'ontouchstart' in window || + navigator.maxTouchPoints > 0 || + navigator.msMaxTouchPoints > 0 + ) + ) { + // Prevent Enter key from creating a new line + if (e.keyCode === 13 && !e.shiftKey) { + e.preventDefault(); + } + + // Submit the prompt when Enter key is pressed + if (prompt !== '' && e.keyCode === 13 && !e.shiftKey) { + dispatch('submit', prompt); + } + } } if (e.key === 'Escape') { diff --git a/src/lib/components/common/RichTextInput.svelte b/src/lib/components/common/RichTextInput.svelte index 8200154fa..fc24ab063 100644 --- a/src/lib/components/common/RichTextInput.svelte +++ b/src/lib/components/common/RichTextInput.svelte @@ -171,11 +171,10 @@ eventDispatch('focus', { event }); return false; }, - keypress: (view, event) => { - eventDispatch('keypress', { event }); + keyup: (view, event) => { + eventDispatch('keyup', { event }); return false; }, - keydown: (view, event) => { // Handle Tab Key if (event.key === 'Tab') { @@ -217,22 +216,12 @@ // Handle shift + Enter for a line break if (shiftEnter) { - if (event.key === 'Enter' && event.shiftKey) { + if (event.key === 'Enter' && event.shiftKey && !event.ctrlKey && !event.metaKey) { editor.commands.setHardBreak(); // Insert a hard break view.dispatch(view.state.tr.scrollIntoView()); // Move viewport to the cursor event.preventDefault(); return true; } - if (event.key === 'Enter') { - eventDispatch('enter', { event }); - event.preventDefault(); - return true; - } - } - if (event.key === 'Enter') { - eventDispatch('enter', { event }); - event.preventDefault(); - return true; } } eventDispatch('keydown', { event });