### What problem does this PR solve? feat: add icon to title of operator form #918 ### Type of change - [x] New Feature (non-breaking change which adds functionality)tags/v0.8.0
| operation: 'operation', | operation: 'operation', | ||||
| run: 'Run', | run: 'Run', | ||||
| save: 'Save', | save: 'Save', | ||||
| title: 'Title:', | |||||
| beginDescription: 'This is where the flow begin', | beginDescription: 'This is where the flow begin', | ||||
| answerDescription: `This component is used as an interface between bot and human. It receives input of user and display the result of the computation of the bot.`, | answerDescription: `This component is used as an interface between bot and human. It receives input of user and display the result of the computation of the bot.`, | ||||
| retrievalDescription: `This component is for the process of retrieving relevent information from knowledge base. So, knowledgebases should be selected. If there's nothing retrieved, the 'Empty response' will be returned.`, | retrievalDescription: `This component is for the process of retrieving relevent information from knowledge base. So, knowledgebases should be selected. If there's nothing retrieved, the 'Empty response' will be returned.`, |
| operation: '操作', | operation: '操作', | ||||
| run: '運行', | run: '運行', | ||||
| save: '儲存', | save: '儲存', | ||||
| title: '標題:', | |||||
| beginDescription: '這是流程開始的地方', | beginDescription: '這是流程開始的地方', | ||||
| answerDescription: `該組件用作機器人與人類之間的介面。它接收使用者的輸入並顯示機器人的計算結果。`, | answerDescription: `該組件用作機器人與人類之間的介面。它接收使用者的輸入並顯示機器人的計算結果。`, | ||||
| retrievalDescription: `此元件用於從知識庫中檢索相關資訊。選擇知識庫。如果沒有檢索到任何內容,將傳回「空響應」。`, | retrievalDescription: `此元件用於從知識庫中檢索相關資訊。選擇知識庫。如果沒有檢索到任何內容,將傳回「空響應」。`, |
| operation: '操作', | operation: '操作', | ||||
| run: '运行', | run: '运行', | ||||
| save: '保存', | save: '保存', | ||||
| title: '标题:', | |||||
| beginDescription: '这是流程开始的地方', | beginDescription: '这是流程开始的地方', | ||||
| answerDescription: `该组件用作机器人与人类之间的接口。它接收用户的输入并显示机器人的计算结果。`, | answerDescription: `该组件用作机器人与人类之间的接口。它接收用户的输入并显示机器人的计算结果。`, | ||||
| retrievalDescription: `此组件用于从知识库中检索相关信息。选择知识库。如果没有检索到任何内容,将返回“空响应”。`, | retrievalDescription: `此组件用于从知识库中检索相关信息。选择知识库。如果没有检索到任何内容,将返回“空响应”。`, |
| .title { | |||||
| flex-basis: 60px; | |||||
| } |
| import { useTranslate } from '@/hooks/commonHooks'; | |||||
| import { IModalProps } from '@/interfaces/common'; | import { IModalProps } from '@/interfaces/common'; | ||||
| import { Drawer, Form, Input } from 'antd'; | |||||
| import { Drawer, Flex, Form, Input } from 'antd'; | |||||
| import { useEffect } from 'react'; | import { useEffect } from 'react'; | ||||
| import { Node } from 'reactflow'; | import { Node } from 'reactflow'; | ||||
| import AnswerForm from '../answer-form'; | import AnswerForm from '../answer-form'; | ||||
| import GenerateForm from '../generate-form'; | import GenerateForm from '../generate-form'; | ||||
| import { useHandleFormValuesChange, useHandleNodeNameChange } from '../hooks'; | import { useHandleFormValuesChange, useHandleNodeNameChange } from '../hooks'; | ||||
| import MessageForm from '../message-form'; | import MessageForm from '../message-form'; | ||||
| import OperatorIcon from '../operator-icon'; | |||||
| import RelevantForm from '../relevant-form'; | import RelevantForm from '../relevant-form'; | ||||
| import RetrievalForm from '../retrieval-form'; | import RetrievalForm from '../retrieval-form'; | ||||
| import RewriteQuestionForm from '../rewrite-question-form'; | import RewriteQuestionForm from '../rewrite-question-form'; | ||||
| import styles from './index.less'; | |||||
| interface IProps { | interface IProps { | ||||
| node?: Node; | node?: Node; | ||||
| } | } | ||||
| const [form] = Form.useForm(); | const [form] = Form.useForm(); | ||||
| const { name, handleNameBlur, handleNameChange } = | const { name, handleNameBlur, handleNameChange } = | ||||
| useHandleNodeNameChange(node); | useHandleNodeNameChange(node); | ||||
| const { t } = useTranslate('flow'); | |||||
| const { handleValuesChange } = useHandleFormValuesChange(node?.id); | const { handleValuesChange } = useHandleFormValuesChange(node?.id); | ||||
| return ( | return ( | ||||
| <Drawer | <Drawer | ||||
| title={ | title={ | ||||
| <Input | |||||
| value={name} | |||||
| onBlur={handleNameBlur} | |||||
| onChange={handleNameChange} | |||||
| ></Input> | |||||
| <Flex gap={'middle'} align="center"> | |||||
| <OperatorIcon name={operatorName}></OperatorIcon> | |||||
| <Flex align="center" gap={'small'} flex={1}> | |||||
| <label htmlFor="" className={styles.title}> | |||||
| {t('title')} | |||||
| </label> | |||||
| <Input | |||||
| value={name} | |||||
| onBlur={handleNameBlur} | |||||
| onChange={handleNameChange} | |||||
| ></Input> | |||||
| </Flex> | |||||
| </Flex> | |||||
| } | } | ||||
| placement="right" | placement="right" | ||||
| onClose={hideModal} | onClose={hideModal} |
| return ( | return ( | ||||
| <Form | <Form | ||||
| name="basic" | name="basic" | ||||
| labelCol={{ span: 6 }} | |||||
| wrapperCol={{ span: 18 }} | |||||
| labelCol={{ span: 5 }} | |||||
| wrapperCol={{ span: 19 }} | |||||
| autoComplete="off" | autoComplete="off" | ||||
| form={form} | form={form} | ||||
| onValuesChange={onValuesChange} | onValuesChange={onValuesChange} |
| return ( | return ( | ||||
| <Form | <Form | ||||
| name="basic" | name="basic" | ||||
| labelCol={{ span: 6 }} | |||||
| wrapperCol={{ span: 18 }} | |||||
| labelCol={{ span: 4 }} | |||||
| wrapperCol={{ span: 20 }} | |||||
| onValuesChange={onValuesChange} | onValuesChange={onValuesChange} | ||||
| autoComplete="off" | autoComplete="off" | ||||
| form={form} | form={form} |
| return ( | return ( | ||||
| <Form | <Form | ||||
| name="basic" | name="basic" | ||||
| labelCol={{ span: 6 }} | |||||
| wrapperCol={{ span: 18 }} | |||||
| labelCol={{ span: 4 }} | |||||
| wrapperCol={{ span: 20 }} | |||||
| onValuesChange={onValuesChange} | onValuesChange={onValuesChange} | ||||
| autoComplete="off" | autoComplete="off" | ||||
| form={form} | form={form} |