|
import { InboxOutlined } from '@ant-design/icons'; |
|
import { Modal, Segmented, Upload, UploadProps, message } from 'antd'; |
|
import { useState } from 'react'; |
|
|
|
const { Dragger } = Upload; |
|
|
|
const FileUploadModal = () => { |
|
const [isModalOpen, setIsModalOpen] = useState(false); |
|
|
|
const props: UploadProps = { |
|
name: 'file', |
|
multiple: true, |
|
action: 'https://660d2bd96ddfa2943b33731c.mockapi.io/api/upload', |
|
onChange(info) { |
|
const { status } = info.file; |
|
if (status !== 'uploading') { |
|
console.log(info.file, info.fileList); |
|
} |
|
if (status === 'done') { |
|
message.success(`${info.file.name} file uploaded successfully.`); |
|
} else if (status === 'error') { |
|
message.error(`${info.file.name} file upload failed.`); |
|
} |
|
}, |
|
onDrop(e) { |
|
console.log('Dropped files', e.dataTransfer.files); |
|
}, |
|
}; |
|
|
|
const handleOk = () => { |
|
setIsModalOpen(false); |
|
}; |
|
|
|
const handleCancel = () => { |
|
setIsModalOpen(false); |
|
}; |
|
|
|
return ( |
|
<> |
|
<Modal |
|
title="File upload" |
|
open={isModalOpen} |
|
onOk={handleOk} |
|
onCancel={handleCancel} |
|
> |
|
<Segmented options={['Local uploads', 'S3 uploads']} block /> |
|
<Dragger {...props}> |
|
<p className="ant-upload-drag-icon"> |
|
<InboxOutlined /> |
|
</p> |
|
<p className="ant-upload-text"> |
|
Click or drag file to this area to upload |
|
</p> |
|
<p className="ant-upload-hint"> |
|
Support for a single or bulk upload. Strictly prohibited from |
|
uploading company data or other banned files. |
|
</p> |
|
</Dragger> |
|
</Modal> |
|
</> |
|
); |
|
}; |
|
|
|
export default FileUploadModal; |
|
|