feat(flows): 新增流程编辑器基础功能与相关组件
feat(backend): 添加流程模型与服务支持 feat(frontend): 实现流程编辑器UI与交互 feat(assets): 添加流程节点图标资源 feat(plugins): 实现上下文菜单和运行时插件 feat(components): 新增基础节点和侧边栏组件 feat(routes): 添加流程相关路由配置 feat(models): 创建流程和运行日志数据模型 feat(services): 实现流程服务层逻辑 feat(migration): 添加流程相关数据库迁移 feat(config): 更新前端配置支持流程编辑器 feat(utils): 增强axios错误处理和工具函数
This commit is contained in:
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
import { useRef, useEffect } from 'react';
|
||||
|
||||
import { Field, FieldRenderProps } from '@flowgram.ai/free-layout-editor';
|
||||
import { Typography, Input } from '@douyinfe/semi-ui';
|
||||
|
||||
import { Title } from './styles';
|
||||
import { Feedback } from '../feedback';
|
||||
const { Text } = Typography;
|
||||
|
||||
export function TitleInput(props: {
|
||||
readonly: boolean;
|
||||
titleEdit: boolean;
|
||||
updateTitleEdit: (setEdit: boolean) => void;
|
||||
}): JSX.Element {
|
||||
const { readonly, titleEdit, updateTitleEdit } = props;
|
||||
const ref = useRef<any>();
|
||||
const titleEditing = titleEdit && !readonly;
|
||||
useEffect(() => {
|
||||
if (titleEditing) {
|
||||
ref.current?.focus();
|
||||
}
|
||||
}, [titleEditing]);
|
||||
|
||||
return (
|
||||
<Title>
|
||||
<Field name="title">
|
||||
{({ field: { value, onChange }, fieldState }: FieldRenderProps<string>) => (
|
||||
<div style={{ height: 24 }}>
|
||||
{titleEditing ? (
|
||||
<Input
|
||||
value={value}
|
||||
onChange={onChange}
|
||||
ref={ref}
|
||||
onBlur={() => updateTitleEdit(false)}
|
||||
/>
|
||||
) : (
|
||||
<Text ellipsis={{ showTooltip: true }}>{value}</Text>
|
||||
)}
|
||||
<Feedback errors={fieldState?.errors} />
|
||||
</div>
|
||||
)}
|
||||
</Field>
|
||||
</Title>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user