diff --git a/frontend/src/resources/css/_chat.scss b/frontend/src/resources/css/_chat.scss index d6f405f..d342d08 100644 --- a/frontend/src/resources/css/_chat.scss +++ b/frontend/src/resources/css/_chat.scss @@ -189,6 +189,7 @@ .message-content { word-wrap: break-word; margin-bottom: 0.3rem; + white-space: pre-wrap; } .message-reply { @@ -197,6 +198,7 @@ padding: 0.5rem; margin-bottom: 0.5rem; border-left: 3px solid $color-dark-primary; + user-select: none; .reply-content { display: flex; @@ -225,6 +227,7 @@ color: $color-dark-on-surface-variant; margin-top: 0.3rem; text-align: right; + user-select: none; } } diff --git a/frontend/src/ui/components/chat/ChatInputWrapper.tsx b/frontend/src/ui/components/chat/ChatInputWrapper.tsx index 587a878..19f4dd3 100644 --- a/frontend/src/ui/components/chat/ChatInputWrapper.tsx +++ b/frontend/src/ui/components/chat/ChatInputWrapper.tsx @@ -8,7 +8,7 @@ interface ChatInputWrapperProps { export function ChatInputWrapper({ onSendMessage }: ChatInputWrapperProps) { const [message, setMessage] = useState(""); - const handleSubmit = async (e: React.FormEvent) => { + const handleSubmit = async (e: React.FormEvent | Event) => { e.preventDefault(); if (message.trim()) { onSendMessage(message); @@ -27,7 +27,8 @@ export function ChatInputWrapper({ onSendMessage }: ChatInputWrapperProps) { autoComplete="off" text={message} rows={1} - onTextChange={(value) => setMessage(value)} /> + onTextChange={(value) => setMessage(value)} + onEnter={handleSubmit} /> diff --git a/frontend/src/ui/components/core/RichTextArea.tsx b/frontend/src/ui/components/core/RichTextArea.tsx index 75038cb..3543438 100644 --- a/frontend/src/ui/components/core/RichTextArea.tsx +++ b/frontend/src/ui/components/core/RichTextArea.tsx @@ -3,8 +3,8 @@ import { useEffect, useRef, useCallback, useLayoutEffect } from "react"; interface RichTextAreaProps { text: string; onTextChange: (value: string) => void; - onEnter?: "newLine" | null | (() => void); - onCtrlEnter?: (() => void) | null; + onEnter?: "newLine" | null | ((e: React.KeyboardEvent) => void); + onCtrlEnter?: ((e: React.KeyboardEvent) => void) | null; placeholder?: string; id?: string; className?: string; @@ -155,7 +155,7 @@ export function RichTextArea({ if (isCtrlEnter) { e.preventDefault(); if (typeof onCtrlEnter === "function") { - onCtrlEnter(); + onCtrlEnter(e); } return; } @@ -171,7 +171,7 @@ export function RichTextArea({ } if (typeof onEnter === "function") { e.preventDefault(); - onEnter(); + onEnter(e); return; } }