This commit is contained in:
roomote-v0[bot] 2026-04-23 10:40:35 +00:00 committed by GitHub
commit 4361e7ce36
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 16 additions and 4 deletions

View file

@ -43,6 +43,7 @@ interface ChatTextAreaProps {
selectedImages: string[]
setSelectedImages: React.Dispatch<React.SetStateAction<string[]>>
onSend: () => void
onAccept?: () => void // Called when Enter should trigger approval (when action buttons are visible)
onSelectImages: () => void
shouldDisableImages: boolean
onHeightChange?: (height: number) => void
@ -68,6 +69,7 @@ export const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
selectedImages,
setSelectedImages,
onSend,
onAccept,
onSelectImages,
shouldDisableImages,
onHeightChange,
@ -490,20 +492,23 @@ export const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
// Handle Enter key based on enterBehavior setting
if (event.key === "Enter" && !isComposing) {
// Determine the action handler: use onAccept if provided (for approval behavior), otherwise onSend
const actionHandler = onAccept ?? onSend
if (enterBehavior === "newline") {
// New behavior: Enter = newline, Shift+Enter or Ctrl+Enter = send
// New behavior: Enter = newline, Shift+Enter or Ctrl+Enter = send/accept
if (event.shiftKey || event.ctrlKey || event.metaKey) {
event.preventDefault()
resetHistoryNavigation()
onSend()
actionHandler()
}
// Otherwise, let Enter create newline (don't preventDefault)
} else {
// Default behavior: Enter = send, Shift+Enter = newline
// Default behavior: Enter = send/accept, Shift+Enter = newline
if (!event.shiftKey) {
event.preventDefault()
resetHistoryNavigation()
onSend()
actionHandler()
}
}
}
@ -554,6 +559,7 @@ export const ChatTextArea = forwardRef<HTMLTextAreaElement, ChatTextAreaProps>(
},
[
onSend,
onAccept,
showContextMenu,
searchQuery,
selectedMenuIndex,

View file

@ -1803,6 +1803,12 @@ const ChatViewComponent: React.ForwardRefRenderFunction<ChatViewRef, ChatViewPro
selectedImages={selectedImages}
setSelectedImages={setSelectedImages}
onSend={() => handleSendMessage(inputValue, selectedImages)}
onAccept={
// When action buttons are visible, Enter should trigger approval (primary button click)
enableButtons && primaryButtonText
? () => handlePrimaryButtonClick(inputValue, selectedImages)
: undefined
}
onSelectImages={selectImages}
shouldDisableImages={shouldDisableImages}
onHeightChange={() => {