From 2e84de0798c0b20d76fbdcf87f6b5472d85314a1 Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Mon, 3 Aug 2026 10:52:25 +0800 Subject: [PATCH] feat(workflow): edit node names in drawer header --- .../assistant-editor/editor-controls.tsx | 33 +++++++++++++++---- .../components/workflow/WorkflowCanvas.tsx | 20 +++++++++-- .../components/workflow/WorkflowSidePanel.tsx | 4 +-- .../workflow/panels/AgentNodePanel.tsx | 17 ---------- .../workflow/panels/NodeSettingsPanel.tsx | 19 +---------- 5 files changed, 48 insertions(+), 45 deletions(-) diff --git a/frontend/src/components/assistant-editor/editor-controls.tsx b/frontend/src/components/assistant-editor/editor-controls.tsx index f2fc8e9..7ed4dfe 100644 --- a/frontend/src/components/assistant-editor/editor-controls.tsx +++ b/frontend/src/components/assistant-editor/editor-controls.tsx @@ -90,9 +90,15 @@ export function AssistantIdentity({ assistantId }: { assistantId: string | null export function EditableTitle({ value, onChange, + placeholder = "未命名助手", + editLabel = "助手名称", + variant = "page", }: { value: string; onChange: (value: string) => void; + placeholder?: string; + editLabel?: string; + variant?: "page" | "panel"; }) { const [editing, setEditing] = useState(false); const [draft, setDraft] = useState(value); @@ -134,7 +140,12 @@ export function EditableTitle({ setEditing(false); } }} - className="font-display display-sm w-[min(60vw,420px)] border-b border-primary bg-transparent text-ink outline-none" + aria-label={`修改${editLabel}`} + className={ + variant === "panel" + ? "min-w-0 flex-1 border-b border-primary bg-transparent px-3 py-1.5 text-sm font-medium text-foreground outline-none" + : "font-display display-sm w-[min(60vw,420px)] border-b border-primary bg-transparent text-ink outline-none" + } /> ); } @@ -143,14 +154,24 @@ export function EditableTitle({ diff --git a/frontend/src/components/workflow/WorkflowCanvas.tsx b/frontend/src/components/workflow/WorkflowCanvas.tsx index 4e5e867..a8d6d56 100644 --- a/frontend/src/components/workflow/WorkflowCanvas.tsx +++ b/frontend/src/components/workflow/WorkflowCanvas.tsx @@ -25,6 +25,7 @@ import { useState, } from "react"; +import { EditableTitle } from "@/components/assistant-editor/editor-controls"; import { Button } from "@/components/ui/button"; import { Tooltip, @@ -680,7 +681,22 @@ export function WorkflowCanvas({ ? "工作流设置" : editingEdge ? "编辑连接条件" - : `编辑${editingSpec?.displayName ?? "节点"}` + : editingNode && editingSpec + ? ( + + updateNodeData(editingNode.id, { name }) + } + /> + ) + : "编辑节点" } closeLabel={ dynamicVariablesOpen @@ -719,7 +735,7 @@ export function WorkflowCanvas({ /> ) : editingNode && editingSpec ? ( void; children: ReactNode; @@ -27,7 +27,7 @@ export function WorkflowSidePanel({ > -

+

{title}

diff --git a/frontend/src/components/workflow/panels/AgentNodePanel.tsx b/frontend/src/components/workflow/panels/AgentNodePanel.tsx index ad8249d..52905ba 100644 --- a/frontend/src/components/workflow/panels/AgentNodePanel.tsx +++ b/frontend/src/components/workflow/panels/AgentNodePanel.tsx @@ -7,7 +7,6 @@ import { MessageSquareText, Settings2, Sparkles, - Tag, Wrench, } from "lucide-react"; @@ -15,7 +14,6 @@ import { KnowledgeRetrievalConfigDialog } from "@/components/editor/knowledge-re import { SectionCard } from "@/components/editor/section-card"; import { VisionConfigSection } from "@/components/editor/vision-config-section"; import { TurnConfigEditor } from "@/components/turn-config-editor"; -import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { Textarea } from "@/components/ui/textarea"; import type { KnowledgeRetrievalConfig } from "@/lib/api"; @@ -102,21 +100,6 @@ export function AgentNodePanel({ return (
- } - title="节点信息" - description="节点在画布上显示的名称" - > - - - } title="配置范围" diff --git a/frontend/src/components/workflow/panels/NodeSettingsPanel.tsx b/frontend/src/components/workflow/panels/NodeSettingsPanel.tsx index 117ee9d..4d50d2b 100644 --- a/frontend/src/components/workflow/panels/NodeSettingsPanel.tsx +++ b/frontend/src/components/workflow/panels/NodeSettingsPanel.tsx @@ -1,6 +1,6 @@ "use client"; -import { Flag, PhoneForwarded, Tag } from "lucide-react"; +import { Flag, PhoneForwarded } from "lucide-react"; import { useState } from "react"; import { SectionCard } from "@/components/editor/section-card"; @@ -297,23 +297,6 @@ function WorkflowNodePanelForm({ }) { return (
- } - title="节点信息" - description="节点在画布上显示的名称" - > - - - {spec.type === "action" && (