|
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; |
|
|