File size: 1,435 Bytes
5365cac 13080d4 be99f83 13080d4 be99f83 5365cac 13080d4 5365cac be99f83 5365cac be99f83 5365cac be99f83 13080d4 be99f83 5365cac |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import { IModalProps } from '@/interfaces/common';
import { Drawer, Form } from 'antd';
import { useEffect } from 'react';
import { Node } from 'reactflow';
import AnswerForm from '../answer-form';
import BeginForm from '../begin-form';
import { Operator } from '../constant';
import GenerateForm from '../generate-form';
import { useHandleFormValuesChange } from '../hooks';
import RetrievalForm from '../retrieval-form';
interface IProps {
node?: Node;
}
const FormMap = {
[Operator.Begin]: BeginForm,
[Operator.Retrieval]: RetrievalForm,
[Operator.Generate]: GenerateForm,
[Operator.Answer]: AnswerForm,
};
const FlowDrawer = ({
visible,
hideModal,
node,
}: IModalProps<any> & IProps) => {
const operatorName: Operator = node?.data.label;
const OperatorForm = FormMap[operatorName];
const [form] = Form.useForm();
const { handleValuesChange } = useHandleFormValuesChange(node?.id);
useEffect(() => {
if (visible) {
form.setFieldsValue(node?.data?.form);
}
}, [visible, form, node?.data?.form]);
return (
<Drawer
title={node?.data.label}
placement="right"
onClose={hideModal}
open={visible}
getContainer={false}
mask={false}
width={470}
>
{visible && (
<OperatorForm
onValuesChange={handleValuesChange}
form={form}
></OperatorForm>
)}
</Drawer>
);
};
export default FlowDrawer;
|