diff --git a/app/w/components/control-bar/control-bar.tsx b/app/w/components/control-bar/control-bar.tsx index 8581d59a3f..e5b4bfa703 100644 --- a/app/w/components/control-bar/control-bar.tsx +++ b/app/w/components/control-bar/control-bar.tsx @@ -37,9 +37,11 @@ import { export function ControlBar() { const { notifications, getWorkflowNotifications } = useNotificationStore() const { history, undo, redo, revertToHistoryState } = useWorkflowStore() + const [isEditing, setIsEditing] = useState(false) + const [editedName, setEditedName] = useState('') + const { workflows, updateWorkflow, activeWorkflowId } = useWorkflowRegistry() const [, forceUpdate] = useState({}) const { isExecuting, handleRunWorkflow } = useWorkflowExecution() - const { workflows, removeWorkflow, activeWorkflowId } = useWorkflowRegistry() const router = useRouter() // Use client-side only rendering for the timestamp @@ -59,7 +61,7 @@ export function ControlBar() { delete newWorkflows[activeWorkflowId] const remainingIds = Object.keys(newWorkflows) - removeWorkflow(activeWorkflowId) + updateWorkflow(activeWorkflowId, { name: editedName.trim() }) if (remainingIds.length > 0) { router.push(`/w/${remainingIds[0]}`) @@ -74,13 +76,50 @@ export function ControlBar() { return () => clearInterval(interval) }, []) + const handleNameClick = () => { + if (activeWorkflowId) { + setEditedName(workflows[activeWorkflowId].name) + setIsEditing(true) + } + } + + const handleNameSubmit = () => { + if (activeWorkflowId && editedName.trim()) { + updateWorkflow(activeWorkflowId, { name: editedName.trim() }) + setIsEditing(false) + } + } + + const handleNameKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'Enter') { + handleNameSubmit() + } else if (e.key === 'Escape') { + setIsEditing(false) + } + } + return (
Saved{' '}