From 9710bd904c7536c9ecd26ef7cf063fcaee2585cd Mon Sep 17 00:00:00 2001 From: MT-Mint <798521692@qq.com> Date: Thu, 2 Apr 2026 16:25:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20=E7=A6=81=E6=AD=A2=20disabled?= =?UTF-8?q?=20=E7=8A=B6=E6=80=81=E4=B8=8B=E5=8F=91=E9=80=81=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 恢复 PromptInputSubmit 的 disabled 绑定,避免按钮可点击提交 - 在 PromptInput handleSubmit 增加 disabled 兜底拦截 - 确保点击与回车两种路径在 disabled=true 时都不会发送 --- frontend/public/favicon.ico | Bin 4286 -> 4356 bytes frontend/src/app/layout.tsx | 4 ++-- .../components/ai-elements/prompt-input.tsx | 13 ++++++++----- .../artifacts/artifact-file-detail.tsx | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico index 0bee3f2abcead94601620dc4dc0407f9dad61578..04167f9eec85878ebb6d341e349336c3323efeb7 100644 GIT binary patch literal 4356 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 CX5d=@ diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index c36c68f1..1ab6d05f 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -8,8 +8,8 @@ import { I18nProvider } from "@/core/i18n/context"; import { detectLocaleServer } from "@/core/i18n/server"; export const metadata: Metadata = { - title: "DeerFlow", - description: "A LangChain-based framework for building super agents.", + title: "XClaw", + description: "Desscriptions of XClawDesscriptions of XClawDesscriptions of XClaw", }; export default async function RootLayout({ diff --git a/frontend/src/components/ai-elements/prompt-input.tsx b/frontend/src/components/ai-elements/prompt-input.tsx index 4a26de18..07880164 100644 --- a/frontend/src/components/ai-elements/prompt-input.tsx +++ b/frontend/src/components/ai-elements/prompt-input.tsx @@ -752,6 +752,9 @@ export const PromptInput = ({ const handleSubmit: FormEventHandler = (event) => { event.preventDefault(); + if (disabled) { + return; + } const form = event.currentTarget; const text = usingProvider @@ -1081,9 +1084,9 @@ export const PromptInputSubmit = ({ : false; // 正在 streaming 时不允许发送 - // const isStreaming = status === "streaming" || status === "submitted"; + const isStreaming = status === "streaming" || status === "submitted"; - // const isDisabled = disabled || !hasContent || isStreaming; + const isDisabled = disabled || !hasContent || isStreaming; let Icon = ; @@ -1109,15 +1112,15 @@ export const PromptInputSubmit = ({ // 被button{bgc:#fff}覆盖了,只能加"!" className={cn( "h-[40px] w-[140px] rounded-[10px] border-0 font-bold transition-all", - // isDisabled - // ? "cursor-not-allowed !bg-gray-200 text-gray-400": + isDisabled + ? "cursor-not-allowed !bg-gray-200 text-gray-400": "!bg-[#F0E8FB] text-[#8E47F0] hover:!bg-[#8E47F0] hover:text-[#FFFFFF]", className, )} size={size} type="submit" variant={variant} - // disabled={isDisabled} + disabled={isDisabled} {...props} > {/* {children ?? Icon} */} diff --git a/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx b/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx index 9d30c567..b6b52ac8 100644 --- a/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx +++ b/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx @@ -515,7 +515,7 @@ export function ArtifactFilePreview({ if (language === "markdown") { return (