| import { IModalManagerChildrenProps } from '@/components/modal-manager'; | |
| import { useTranslate } from '@/hooks/common-hooks'; | |
| import { Form, Input, Modal } from 'antd'; | |
| import React from 'react'; | |
| interface IProps extends Omit<IModalManagerChildrenProps, 'showModal'> { | |
| loading: boolean; | |
| onOk: (name: string, url: string) => void; | |
| showModal?(): void; | |
| } | |
| const WebCrawlModal: React.FC<IProps> = ({ visible, hideModal, onOk }) => { | |
| const [form] = Form.useForm(); | |
| const { t } = useTranslate('knowledgeDetails'); | |
| const handleOk = async () => { | |
| const values = await form.validateFields(); | |
| onOk(values.name, values.url); | |
| }; | |
| return ( | |
| <Modal | |
| title={t('webCrawl')} | |
| open={visible} | |
| onOk={handleOk} | |
| onCancel={hideModal} | |
| > | |
| <Form | |
| form={form} | |
| name="validateOnly" | |
| labelCol={{ span: 4 }} | |
| wrapperCol={{ span: 20 }} | |
| style={{ maxWidth: 600 }} | |
| autoComplete="off" | |
| > | |
| <Form.Item | |
| label="Name" | |
| name="name" | |
| rules={[ | |
| { required: true, message: 'Please input name!' }, | |
| { | |
| max: 10, | |
| message: 'The maximum length of name is 128 characters', | |
| }, | |
| ]} | |
| > | |
| <Input placeholder="Document name" /> | |
| </Form.Item> | |
| <Form.Item | |
| label="URL" | |
| name="url" | |
| rules={[ | |
| { required: true, message: 'Please input url!' }, | |
| { | |
| pattern: new RegExp( | |
| '(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]', | |
| ), | |
| message: 'Please enter a valid URL!', | |
| }, | |
| ]} | |
| > | |
| <Input placeholder="https://www.baidu.com" /> | |
| </Form.Item> | |
| </Form> | |
| </Modal> | |
| ); | |
| }; | |
| export default WebCrawlModal; | |