Skip to content

Commit b1a3972

Browse files
authored
demo: upload replace modal to image (ant-design#48105)
1 parent 3e156b0 commit b1a3972

File tree

3 files changed

+36
-22
lines changed

3 files changed

+36
-22
lines changed

components/upload/demo/file-type.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
PictureTwoTone,
99
PlusOutlined,
1010
} from '@ant-design/icons';
11-
import { Modal, Upload } from 'antd';
11+
import { Image, Upload } from 'antd';
1212
import type { GetProp, UploadFile, UploadProps } from 'antd';
1313

1414
type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
@@ -54,8 +54,6 @@ const App: React.FC = () => {
5454
},
5555
]);
5656

57-
const handleCancel = () => setPreviewOpen(false);
58-
5957
const handlePreview = async (file: UploadFile) => {
6058
if (!file.url && !file.preview) {
6159
file.preview = await getBase64(file.originFileObj as FileType);
@@ -113,9 +111,17 @@ const App: React.FC = () => {
113111
>
114112
{fileList.length >= 8 ? null : uploadButton}
115113
</Upload>
116-
<Modal open={previewOpen} footer={null} onCancel={handleCancel}>
117-
<img alt="example" style={{ width: '100%' }} src={previewImage} />
118-
</Modal>
114+
{previewImage && (
115+
<Image
116+
wrapperStyle={{ display: 'none' }}
117+
preview={{
118+
visible: previewOpen,
119+
onVisibleChange: (visible) => setPreviewOpen(visible),
120+
afterOpenChange: (visible) => !visible && setPreviewImage(''),
121+
}}
122+
src={previewImage}
123+
/>
124+
)}
119125
</>
120126
);
121127
};

components/upload/demo/picture-card.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useState } from 'react';
22
import { PlusOutlined } from '@ant-design/icons';
3-
import { Modal, Upload } from 'antd';
3+
import { Image, Upload } from 'antd';
44
import type { GetProp, UploadFile, UploadProps } from 'antd';
55

66
type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
@@ -16,7 +16,6 @@ const getBase64 = (file: FileType): Promise<string> =>
1616
const App: React.FC = () => {
1717
const [previewOpen, setPreviewOpen] = useState(false);
1818
const [previewImage, setPreviewImage] = useState('');
19-
const [previewTitle, setPreviewTitle] = useState('');
2019
const [fileList, setFileList] = useState<UploadFile[]>([
2120
{
2221
uid: '-1',
@@ -56,16 +55,13 @@ const App: React.FC = () => {
5655
},
5756
]);
5857

59-
const handleCancel = () => setPreviewOpen(false);
60-
6158
const handlePreview = async (file: UploadFile) => {
6259
if (!file.url && !file.preview) {
6360
file.preview = await getBase64(file.originFileObj as FileType);
6461
}
6562

6663
setPreviewImage(file.url || (file.preview as string));
6764
setPreviewOpen(true);
68-
setPreviewTitle(file.name || file.url!.substring(file.url!.lastIndexOf('/') + 1));
6965
};
7066

7167
const handleChange: UploadProps['onChange'] = ({ fileList: newFileList }) =>
@@ -88,9 +84,17 @@ const App: React.FC = () => {
8884
>
8985
{fileList.length >= 8 ? null : uploadButton}
9086
</Upload>
91-
<Modal open={previewOpen} title={previewTitle} footer={null} onCancel={handleCancel}>
92-
<img alt="example" style={{ width: '100%' }} src={previewImage} />
93-
</Modal>
87+
{previewImage && (
88+
<Image
89+
wrapperStyle={{ display: 'none' }}
90+
preview={{
91+
visible: previewOpen,
92+
onVisibleChange: (visible) => setPreviewOpen(visible),
93+
afterOpenChange: (visible) => !visible && setPreviewImage(''),
94+
}}
95+
src={previewImage}
96+
/>
97+
)}
9498
</>
9599
);
96100
};

components/upload/demo/picture-circle.tsx

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useState } from 'react';
22
import { PlusOutlined } from '@ant-design/icons';
3-
import { Modal, Upload } from 'antd';
3+
import { Image, Upload } from 'antd';
44
import type { GetProp, UploadFile, UploadProps } from 'antd';
55

66
type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
@@ -16,7 +16,6 @@ const getBase64 = (file: FileType): Promise<string> =>
1616
const App: React.FC = () => {
1717
const [previewOpen, setPreviewOpen] = useState(false);
1818
const [previewImage, setPreviewImage] = useState('');
19-
const [previewTitle, setPreviewTitle] = useState('');
2019
const [fileList, setFileList] = useState<UploadFile[]>([
2120
{
2221
uid: '-1',
@@ -38,16 +37,13 @@ const App: React.FC = () => {
3837
},
3938
]);
4039

41-
const handleCancel = () => setPreviewOpen(false);
42-
4340
const handlePreview = async (file: UploadFile) => {
4441
if (!file.url && !file.preview) {
4542
file.preview = await getBase64(file.originFileObj as FileType);
4643
}
4744

4845
setPreviewImage(file.url || (file.preview as string));
4946
setPreviewOpen(true);
50-
setPreviewTitle(file.name || file.url!.substring(file.url!.lastIndexOf('/') + 1));
5147
};
5248

5349
const handleChange: UploadProps['onChange'] = ({ fileList: newFileList }) =>
@@ -70,9 +66,17 @@ const App: React.FC = () => {
7066
>
7167
{fileList.length >= 8 ? null : uploadButton}
7268
</Upload>
73-
<Modal open={previewOpen} title={previewTitle} footer={null} onCancel={handleCancel}>
74-
<img alt="example" style={{ width: '100%' }} src={previewImage} />
75-
</Modal>
69+
{previewImage && (
70+
<Image
71+
wrapperStyle={{ display: 'none' }}
72+
preview={{
73+
visible: previewOpen,
74+
onVisibleChange: (visible) => setPreviewOpen(visible),
75+
afterOpenChange: (visible) => !visible && setPreviewImage(''),
76+
}}
77+
src={previewImage}
78+
/>
79+
)}
7680
</>
7781
);
7882
};

0 commit comments

Comments
 (0)