/* * @Author: ZhaoYing * @Date: 2026-02-03 16:27:44 * @Last Modified by: ZhaoYing * @Last Modified time: 2026-02-03 16:27:44 */ /** * Chat Variable Configuration Modal * Allows users to configure variable values before starting a chat session */ import { forwardRef, useImperativeHandle, useState } from 'react'; import { Form, Input, InputNumber } from 'antd'; import { useTranslation } from 'react-i18next'; import type { ChatVariableConfigModalRef } from '../types' import type { Variable } from './VariableList/types' import RbModal from '@/components/RbModal' /** * Component props */ interface VariableEditModalProps { /** Callback to update variables */ refresh: (values: Variable[]) => void; } /** * Modal for configuring chat variables */ const ChatVariableConfigModal = forwardRef(({ refresh, }, ref) => { const { t } = useTranslation(); const [visible, setVisible] = useState(false); const [form] = Form.useForm<{variables: Variable[]}>(); const [loading, setLoading] = useState(false) const [initialValues, setInitialValues] = useState([]) /** Close modal and reset form */ const handleClose = () => { setVisible(false); form.resetFields(); setLoading(false) }; /** Open modal with variable list */ const handleOpen = (values: Variable[]) => { console.log('values', values) setVisible(true); form.setFieldsValue({variables: values}) setInitialValues([...values]) }; /** Save variable configuration */ const handleSave = () => { form.validateFields().then((values) => { refresh([ ...(values?.variables ?? []), ]) handleClose() }) } /** Expose methods to parent component */ useImperativeHandle(ref, () => ({ handleOpen, handleClose })); console.log(form.getFieldValue('variables')) return (
{(fields) => ( <> {fields.map(({ name }, index) => { const field = initialValues[index] return ( { field.type === 'text' && } { field.type === 'number' && form.setFieldValue(['variables', name, 'value'], value)} /> } { field.type === 'paragraph' && } ) })} )}
); }); export default ChatVariableConfigModal;