refactor(flow): 将Decision节点重命名为Condition节点 feat(flow): 新增多语言脚本执行器(Rhai/JS/Python) feat(flow): 实现变量映射和执行功能 feat(flow): 添加条件节点执行逻辑 feat(frontend): 为开始/结束节点添加多语言描述 test: 添加yaml条件转换测试 chore: 移除废弃的storage模块
54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
/**
|
|
* Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
import { useRef, useEffect } from 'react';
|
|
|
|
import { Field, FieldRenderProps, I18n } 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)}
|
|
/>
|
|
) : (
|
|
// 对默认的 Start/End 标题进行按需本地化显示
|
|
<Text ellipsis={{ showTooltip: true }}>{
|
|
value === 'Start' || value === 'End' ? I18n.t(value as any) : (value as any)
|
|
}</Text>
|
|
)}
|
|
<Feedback errors={fieldState?.errors} />
|
|
</div>
|
|
)}
|
|
</Field>
|
|
</Title>
|
|
);
|
|
}
|