import { Form, Input, Modal } from 'antd'; | |
import { IModalProps } from '@/interfaces/common'; | |
import { IFeedbackRequestBody } from '@/interfaces/request/chat'; | |
import { useCallback } from 'react'; | |
type FieldType = { | |
feedback?: string; | |
}; | |
const FeedbackModal = ({ | |
visible, | |
hideModal, | |
onOk, | |
loading, | |
}: IModalProps<IFeedbackRequestBody>) => { | |
const [form] = Form.useForm(); | |
const handleOk = useCallback(async () => { | |
const ret = await form.validateFields(); | |
return onOk?.({ thumbup: false, feedback: ret.feedback }); | |
}, [onOk, form]); | |
return ( | |
<Modal | |
title="Feedback" | |
open={visible} | |
onOk={handleOk} | |
onCancel={hideModal} | |
confirmLoading={loading} | |
> | |
<Form | |
name="basic" | |
labelCol={{ span: 0 }} | |
wrapperCol={{ span: 24 }} | |
style={{ maxWidth: 600 }} | |
autoComplete="off" | |
form={form} | |
> | |
<Form.Item<FieldType> | |
name="feedback" | |
rules={[{ required: true, message: 'Please input your feedback!' }]} | |
> | |
<Input.TextArea rows={8} placeholder="Please input your feedback!" /> | |
</Form.Item> | |
</Form> | |
</Modal> | |
); | |
}; | |
export default FeedbackModal; | |