feat(backend): 添加流程模型与服务支持 feat(frontend): 实现流程编辑器UI与交互 feat(assets): 添加流程节点图标资源 feat(plugins): 实现上下文菜单和运行时插件 feat(components): 新增基础节点和侧边栏组件 feat(routes): 添加流程相关路由配置 feat(models): 创建流程和运行日志数据模型 feat(services): 实现流程服务层逻辑 feat(migration): 添加流程相关数据库迁移 feat(config): 更新前端配置支持流程编辑器 feat(utils): 增强axios错误处理和工具函数
51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
/**
|
|
* 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>
|
|
);
|
|
}
|