@nutui/nutui-react-taro 1.4.9-beta.0 → 1.4.9-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/dist/esm/ActionSheet.js +3 -3
- package/dist/esm/Address.js +3 -3
- package/dist/esm/Badge.js +3 -2
- package/dist/esm/Calendar.js +4 -4
- package/dist/esm/CalendarItem.js +3 -2
- package/dist/esm/Card.js +3 -3
- package/dist/esm/Cascader.js +4 -4
- package/dist/esm/Checkbox.js +2 -2
- package/dist/esm/CheckboxGroup.js +2 -2
- package/dist/esm/CircleProgress.js +3 -2
- package/dist/esm/Collapse.js +3 -2
- package/dist/esm/DatePicker.js +5 -4
- package/dist/esm/Form/style/index.js +1 -1
- package/dist/esm/FormItem/style/index.js +1 -1
- package/dist/esm/Grid.js +3 -2
- package/dist/esm/GridItem.js +3 -2
- package/dist/esm/ImagePreview.js +3 -3
- package/dist/esm/Indicator.js +2 -2
- package/dist/esm/MenuItem/style/index.js +1 -1
- package/dist/esm/NavBar/style/index.js +1 -1
- package/dist/esm/NumberKeyboard/style/index.js +1 -1
- package/dist/esm/NumberKeyboard.js +3 -3
- package/dist/esm/Picker.js +3 -3
- package/dist/esm/Popover/style/index.js +2 -1
- package/dist/esm/Popup.js +2 -2
- package/dist/esm/Rate.js +3 -2
- package/dist/esm/SearchBar/style/index.js +1 -1
- package/dist/esm/ShortPassword.js +3 -3
- package/dist/esm/SideNavBar/style/index.js +1 -1
- package/dist/esm/SideNavBar.js +3 -3
- package/dist/esm/Skeleton/style/index.js +1 -1
- package/dist/esm/Sticky.js +6 -3
- package/dist/esm/Swipe.js +3 -2
- package/dist/esm/Table/style/index.js +1 -1
- package/dist/esm/Tabs/style/index.js +2 -1
- package/dist/esm/Tabs.js +3 -2
- package/dist/esm/TimeSelect/style/index.js +1 -0
- package/dist/esm/TimeSelect.js +3 -3
- package/dist/esm/Uploader/style/index.js +1 -0
- package/dist/esm/Uploader.js +4 -2
- package/dist/esm/{actionsheet.taro-166ce936.js → actionsheet.taro-c5ccaf4e.js} +1 -1
- package/dist/esm/{address.taro-55f308f1.js → address.taro-f977bad0.js} +1 -1
- package/dist/esm/{badge.taro-116b2521.js → badge.taro-a2e7dd5a.js} +5 -2
- package/dist/esm/{calendar.taro-c95e6998.js → calendar.taro-2dee4f90.js} +2 -2
- package/dist/esm/{calendaritem.taro-86412398.js → calendaritem.taro-f5da0936.js} +6 -2
- package/dist/esm/{card.taro-a03f0dfc.js → card.taro-4fb6bc4e.js} +2 -1
- package/dist/esm/{cascader.taro-e0fb7e63.js → cascader.taro-a2ee549c.js} +2 -2
- package/dist/esm/{checkbox.taro-b76b1c82.js → checkbox.taro-6aab93c3.js} +60 -69
- package/dist/esm/{circleprogress.taro-47db537c.js → circleprogress.taro-897ea24b.js} +1 -2
- package/dist/esm/{collapse.taro-af58206c.js → collapse.taro-c903a060.js} +2 -1
- package/dist/esm/{datepicker.taro-c61c6586.js → datepicker.taro-e5f3aa90.js} +11 -10
- package/dist/esm/{grid.taro-e6decfce.js → grid.taro-9410ff69.js} +4 -1
- package/dist/esm/{griditem.taro-5406bd2c.js → griditem.taro-26863577.js} +9 -2
- package/dist/esm/{imagepreview.taro-2d23d0ae.js → imagepreview.taro-3a5722e8.js} +1 -1
- package/dist/esm/index-a90733f9.js +7 -0
- package/dist/esm/{indicator.taro-183ea169.js → indicator.taro-25682172.js} +1 -1
- package/dist/esm/{numberkeyboard.taro-c6b5b0e1.js → numberkeyboard.taro-78224b3a.js} +1 -1
- package/dist/esm/nutui-react.es.js +28 -27
- package/dist/esm/{picker.taro-fa937ea1.js → picker.taro-4298ce4e.js} +2 -2
- package/dist/esm/{popup.taro-4c18f46c.js → popup.taro-6e81162a.js} +1 -1
- package/dist/esm/{rate.taro-17b84a51.js → rate.taro-f18381f3.js} +5 -2
- package/dist/esm/{shortpassword.taro-53b7ee7b.js → shortpassword.taro-e8ea4593.js} +1 -1
- package/dist/esm/{sidenavbar.taro-51a133e6.js → sidenavbar.taro-e03a5287.js} +1 -1
- package/dist/esm/{sticky.taro-2d9b2804.js → sticky.taro-b15d1173.js} +9 -4
- package/dist/esm/{swipe.taro-6532405d.js → swipe.taro-9375a9a1.js} +2 -1
- package/dist/esm/{tabs.taro-4629d66c.js → tabs.taro-95edd45d.js} +2 -0
- package/dist/esm/{timeselect.taro-4fb46162.js → timeselect.taro-f276b0a9.js} +1 -1
- package/dist/esm/types/src/packages/checkbox/checkbox.d.ts +2 -7
- package/dist/esm/types/src/packages/checkbox/checkbox.taro.d.ts +2 -7
- package/dist/esm/types/src/packages/checkboxgroup/checkboxgroup.d.ts +4 -5
- package/dist/esm/types/src/packages/checkboxgroup/checkboxgroup.taro.d.ts +4 -5
- package/dist/esm/types/src/packages/checkboxgroup/context.d.ts +10 -0
- package/dist/esm/types/src/packages/tabs/tabs.d.ts +4 -1
- package/dist/esm/types/src/packages/tabs/tabs.taro.d.ts +4 -1
- package/dist/esm/types/src/packages/uploader/upload.d.ts +3 -0
- package/dist/esm/types/src/packages/uploader/uploader.d.ts +4 -1
- package/dist/esm/types/src/packages/uploader/uploader.taro.d.ts +15 -6
- package/dist/esm/types/src/utils/Interceptor.d.ts +6 -0
- package/dist/esm/types/src/utils/index.d.ts +2 -0
- package/dist/esm/{uploader.taro-c830b573.js → uploader.taro-77396b5d.js} +183 -81
- package/dist/locales/base.js +1 -1
- package/dist/locales/en-US.js +1 -1
- package/dist/locales/id-ID.js +1 -1
- package/dist/locales/zh-CN.js +1 -1
- package/dist/locales/zh-TW.js +1 -1
- package/dist/locales/zh-UG.js +1 -1
- package/dist/nutui.react.es.js +320 -219
- package/dist/nutui.react.umd.js +319 -218
- package/dist/packages/datepicker/datepicker.scss +0 -3
- package/dist/packages/form/form.scss +1 -0
- package/dist/packages/formitem/formitem.scss +13 -0
- package/dist/packages/menuitem/menuitem.scss +4 -0
- package/dist/packages/navbar/navbar.scss +24 -0
- package/dist/packages/numberkeyboard/numberkeyboard.scss +1 -0
- package/dist/packages/picker/picker.scss +47 -14
- package/dist/packages/searchbar/searchbar.scss +1 -0
- package/dist/packages/sidenavbar/sidenavbar.scss +13 -0
- package/dist/packages/skeleton/skeleton.scss +7 -0
- package/dist/packages/table/table.scss +22 -0
- package/dist/packages/tabs/tabs.scss +65 -35
- package/dist/packages/timeselect/timeselect.scss +7 -0
- package/dist/packages/uploader/uploader.scss +85 -28
- package/dist/style.css +1 -1
- package/dist/style.es.js +1 -1
- package/dist/styles/variables.scss +95 -21
- package/dist/types/index.d.ts +28 -21
- package/package.json +1 -1
- package/dist/esm/types/src/packages/tabbar/use-props-value.d.ts +0 -7
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React__default, { useState, useEffect, useImperativeHandle } from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
|
-
import { uploadFile, getEnv, chooseImage } from '@tarojs/taro';
|
|
3
|
+
import Taro, { uploadFile, getEnv, chooseMedia, chooseImage } from '@tarojs/taro';
|
|
4
4
|
import { I as Icon } from './icon.taro-c9254a81.js';
|
|
5
5
|
import { B as Button } from './button.taro-dc4795a3.js';
|
|
6
6
|
import { P as Progress } from './progress.taro-773482ed.js';
|
|
7
|
+
import { Image } from '@tarojs/components';
|
|
7
8
|
import { c as cn } from './bem-893ad28d.js';
|
|
8
9
|
import { u as useConfig } from './configprovider.taro-26882dd2.js';
|
|
10
|
+
import { i as isPromise } from './index-a90733f9.js';
|
|
9
11
|
import { C as ComponentDefaults } from './typings-1c5f2628.js';
|
|
10
12
|
|
|
11
13
|
class UploadOptions {
|
|
@@ -67,59 +69,93 @@ class Upload {
|
|
|
67
69
|
console.warn('浏览器不支持 XMLHttpRequest');
|
|
68
70
|
}
|
|
69
71
|
}
|
|
72
|
+
}
|
|
73
|
+
class UploaderTaro extends Upload {
|
|
74
|
+
constructor(options) {
|
|
75
|
+
super(options);
|
|
76
|
+
}
|
|
70
77
|
uploadTaro(uploadFile, env) {
|
|
71
78
|
const options = this.options;
|
|
72
79
|
if (env === 'WEB') {
|
|
73
80
|
this.upload();
|
|
74
81
|
}
|
|
75
|
-
else if (options.beforeXhrUpload) {
|
|
76
|
-
options.beforeXhrUpload(uploadFile, options);
|
|
77
|
-
}
|
|
78
82
|
else {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
options.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
83
|
+
if (options.beforeXhrUpload) {
|
|
84
|
+
options.beforeXhrUpload(uploadFile, options);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
const uploadTask = uploadFile({
|
|
88
|
+
url: options.url,
|
|
89
|
+
filePath: options.taroFilePath,
|
|
90
|
+
fileType: options.fileType,
|
|
91
|
+
header: {
|
|
92
|
+
'Content-Type': 'multipart/form-data',
|
|
93
|
+
...options.headers,
|
|
94
|
+
},
|
|
95
|
+
formData: options.formData,
|
|
96
|
+
name: options.name,
|
|
97
|
+
success(response) {
|
|
98
|
+
if (options.xhrState == response.statusCode) {
|
|
99
|
+
options.onSuccess?.(response, options);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
options.onFailure?.(response, options);
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
fail(e) {
|
|
106
|
+
options.onFailure?.(e, options);
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
options.onStart?.(options);
|
|
110
|
+
uploadTask.progress((res) => {
|
|
111
|
+
options.onProgress?.(res, options);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
109
114
|
}
|
|
110
115
|
}
|
|
111
116
|
}
|
|
112
117
|
|
|
118
|
+
const funcInterceptor = (interceptor, { args = [], done, canceled, }) => {
|
|
119
|
+
if (interceptor) {
|
|
120
|
+
const returnVal = interceptor.apply(null, args);
|
|
121
|
+
if (isPromise(returnVal)) {
|
|
122
|
+
returnVal
|
|
123
|
+
.then((value) => {
|
|
124
|
+
if (value) {
|
|
125
|
+
done(value);
|
|
126
|
+
}
|
|
127
|
+
else if (canceled) {
|
|
128
|
+
canceled();
|
|
129
|
+
}
|
|
130
|
+
})
|
|
131
|
+
.catch(() => { });
|
|
132
|
+
}
|
|
133
|
+
else if (returnVal) {
|
|
134
|
+
done();
|
|
135
|
+
}
|
|
136
|
+
else if (canceled) {
|
|
137
|
+
canceled();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
done();
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
113
145
|
const defaultProps = {
|
|
114
146
|
...ComponentDefaults,
|
|
115
147
|
url: '',
|
|
116
|
-
maximum:
|
|
148
|
+
maximum: 1,
|
|
117
149
|
sizeType: ['original', 'compressed'],
|
|
118
150
|
sourceType: ['album', 'camera'],
|
|
151
|
+
mediaType: ['image', 'video'],
|
|
152
|
+
camera: 'back',
|
|
119
153
|
uploadIcon: 'photograph',
|
|
120
154
|
uploadIconSize: '',
|
|
155
|
+
uploadIconTip: '',
|
|
121
156
|
listType: 'picture',
|
|
122
157
|
name: 'file',
|
|
158
|
+
accept: '*',
|
|
123
159
|
disabled: false,
|
|
124
160
|
autoUpload: true,
|
|
125
161
|
multiple: false,
|
|
@@ -132,6 +168,7 @@ const defaultProps = {
|
|
|
132
168
|
timeout: 1000 * 30,
|
|
133
169
|
isPreview: true,
|
|
134
170
|
isDeletable: true,
|
|
171
|
+
maxDuration: 10,
|
|
135
172
|
onBeforeDelete: (file, files) => {
|
|
136
173
|
return true;
|
|
137
174
|
},
|
|
@@ -149,7 +186,7 @@ class FileItem {
|
|
|
149
186
|
}
|
|
150
187
|
const InternalUploader = (props, ref) => {
|
|
151
188
|
const { locale } = useConfig();
|
|
152
|
-
const { children, uploadIcon, uploadIconSize, name, defaultFileList, listType, disabled, url, defaultImg, headers, timeout, method, xhrState, data, isPreview, isDeletable, maximum, maximize,
|
|
189
|
+
const { children, uploadIcon, uploadIconSize, uploadIconTip, accept, name, camera, defaultFileList, listType, disabled, multiple, url, defaultImg, headers, timeout, method, xhrState, data, isPreview, isDeletable, maximum, maximize, mediaType, className, autoUpload, sizeType, sourceType, maxDuration, iconClassPrefix, iconFontClassName, onStart, onRemove, onChange, onFileItemClick, onProgress, onSuccess, onUpdate, onFailure, onOversize, onBeforeXhrUpload, onBeforeDelete, ...restProps } = { ...defaultProps, ...props };
|
|
153
190
|
const [fileList, setFileList] = useState([]);
|
|
154
191
|
const [uploadQueue, setUploadQueue] = useState([]);
|
|
155
192
|
useEffect(() => {
|
|
@@ -165,6 +202,9 @@ const InternalUploader = (props, ref) => {
|
|
|
165
202
|
res.forEach((i) => i.uploadTaro(uploadFile, getEnv()));
|
|
166
203
|
});
|
|
167
204
|
},
|
|
205
|
+
clear: () => {
|
|
206
|
+
clearUploadQueue();
|
|
207
|
+
},
|
|
168
208
|
}));
|
|
169
209
|
const clearUploadQueue = (index = -1) => {
|
|
170
210
|
if (index > -1) {
|
|
@@ -173,20 +213,64 @@ const InternalUploader = (props, ref) => {
|
|
|
173
213
|
}
|
|
174
214
|
else {
|
|
175
215
|
setUploadQueue([]);
|
|
216
|
+
fileList.splice(0, fileList.length);
|
|
217
|
+
setFileList([...fileList]);
|
|
176
218
|
}
|
|
177
219
|
};
|
|
178
220
|
const _chooseImage = () => {
|
|
179
221
|
if (disabled) {
|
|
180
222
|
return;
|
|
181
223
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
224
|
+
if (Taro.getEnv() == 'WEB') {
|
|
225
|
+
let el = document.getElementById('taroChooseImage');
|
|
226
|
+
if (el) {
|
|
227
|
+
el?.setAttribute('accept', accept);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
const obj = document.createElement('input');
|
|
231
|
+
obj.setAttribute('type', 'file');
|
|
232
|
+
obj.setAttribute('id', 'taroChooseImage');
|
|
233
|
+
obj.setAttribute('accept', accept);
|
|
234
|
+
obj.setAttribute('style', 'position: fixed; top: -4000px; left: -3000px; z-index: -300;');
|
|
235
|
+
document.body.appendChild(obj);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (getEnv() == 'WEAPP') {
|
|
239
|
+
// chooseMedia 目前只支持微信小程序原生,其余端全部使用 chooseImage API
|
|
240
|
+
chooseMedia({
|
|
241
|
+
/** 最多可以选择的文件个数 */
|
|
242
|
+
count: multiple ? maximum * 1 - fileList.length : 1,
|
|
243
|
+
/** 文件类型 */
|
|
244
|
+
mediaType: mediaType,
|
|
245
|
+
/** 图片和视频选择的来源 */
|
|
246
|
+
sourceType: sourceType,
|
|
247
|
+
/** 拍摄视频最长拍摄时间,单位秒。时间范围为 3s 至 30s 之间 */
|
|
248
|
+
maxDuration: maxDuration,
|
|
249
|
+
/** 仅对 mediaType 为 image 时有效,是否压缩所选文件 */
|
|
250
|
+
sizeType: [],
|
|
251
|
+
/** 仅在 sourceType 为 camera 时生效,使用前置或后置摄像头 */
|
|
252
|
+
camera: camera,
|
|
253
|
+
/** 接口调用失败的回调函数 */
|
|
254
|
+
fail: (res) => {
|
|
255
|
+
onFailure && onFailure(res);
|
|
256
|
+
},
|
|
257
|
+
/** 接口调用成功的回调函数 */
|
|
258
|
+
success: onChangeMedia,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
chooseImage({
|
|
263
|
+
// 选择数量
|
|
264
|
+
count: multiple ? maximum * 1 - fileList.length : 1,
|
|
265
|
+
// 可以指定是原图还是压缩图,默认二者都有
|
|
266
|
+
sizeType,
|
|
267
|
+
sourceType,
|
|
268
|
+
success: onChangeImage,
|
|
269
|
+
fail: (res) => {
|
|
270
|
+
onFailure && onFailure(res);
|
|
271
|
+
},
|
|
272
|
+
});
|
|
273
|
+
}
|
|
190
274
|
};
|
|
191
275
|
const executeUpload = (fileItem, index) => {
|
|
192
276
|
const uploadOption = new UploadOptions();
|
|
@@ -241,6 +325,7 @@ const InternalUploader = (props, ref) => {
|
|
|
241
325
|
onSuccess({
|
|
242
326
|
responseText,
|
|
243
327
|
option,
|
|
328
|
+
fileList,
|
|
244
329
|
});
|
|
245
330
|
};
|
|
246
331
|
uploadOption.onFailure = (responseText, option) => {
|
|
@@ -257,9 +342,10 @@ const InternalUploader = (props, ref) => {
|
|
|
257
342
|
onFailure({
|
|
258
343
|
responseText,
|
|
259
344
|
option,
|
|
345
|
+
fileList,
|
|
260
346
|
});
|
|
261
347
|
};
|
|
262
|
-
const task = new
|
|
348
|
+
const task = new UploaderTaro(uploadOption);
|
|
263
349
|
if (props.autoUpload) {
|
|
264
350
|
task.uploadTaro(uploadFile, getEnv());
|
|
265
351
|
}
|
|
@@ -271,19 +357,30 @@ const InternalUploader = (props, ref) => {
|
|
|
271
357
|
}
|
|
272
358
|
};
|
|
273
359
|
const readFile = (files) => {
|
|
274
|
-
const imgReg = /\.(png|jpeg|jpg|webp|gif)$/i;
|
|
275
360
|
files.forEach((file, index) => {
|
|
276
|
-
console.log('file', file);
|
|
277
361
|
let fileType = file.type;
|
|
362
|
+
let filepath = (file.tempFilePath || file.path);
|
|
278
363
|
const fileItem = new FileItem();
|
|
279
|
-
if (
|
|
280
|
-
fileType =
|
|
364
|
+
if (file.fileType) {
|
|
365
|
+
fileType = file.fileType;
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
const imgReg = /\.(png|jpeg|jpg|webp|gif)$/i;
|
|
369
|
+
if (!fileType &&
|
|
370
|
+
(imgReg.test(filepath) || filepath.includes('data:image'))) {
|
|
371
|
+
fileType = 'image';
|
|
372
|
+
}
|
|
281
373
|
}
|
|
282
|
-
fileItem.path =
|
|
283
|
-
fileItem.name =
|
|
374
|
+
fileItem.path = filepath;
|
|
375
|
+
fileItem.name = filepath;
|
|
284
376
|
fileItem.status = 'ready';
|
|
285
|
-
fileItem.message = locale.uploader.readyUpload;
|
|
286
377
|
fileItem.type = fileType;
|
|
378
|
+
if (autoUpload) {
|
|
379
|
+
fileItem.message = locale.uploader.readyUpload;
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
fileItem.message = locale.uploader.waitingUpload;
|
|
383
|
+
}
|
|
287
384
|
if (getEnv() === 'WEB') {
|
|
288
385
|
const formData = new FormData();
|
|
289
386
|
for (const [key, value] of Object.entries(data)) {
|
|
@@ -298,7 +395,7 @@ const InternalUploader = (props, ref) => {
|
|
|
298
395
|
fileItem.formData = data;
|
|
299
396
|
}
|
|
300
397
|
if (isPreview) {
|
|
301
|
-
fileItem.url = file.
|
|
398
|
+
fileItem.url = fileType == 'video' ? file.thumbTempFilePath : filepath;
|
|
302
399
|
}
|
|
303
400
|
fileList.push(fileItem);
|
|
304
401
|
setFileList([...fileList]);
|
|
@@ -325,30 +422,30 @@ const InternalUploader = (props, ref) => {
|
|
|
325
422
|
}
|
|
326
423
|
return filterFile;
|
|
327
424
|
};
|
|
425
|
+
const deleted = (file, index) => {
|
|
426
|
+
fileList.splice(index, 1);
|
|
427
|
+
onRemove && onRemove(file, fileList);
|
|
428
|
+
setFileList([...fileList]);
|
|
429
|
+
};
|
|
328
430
|
const onDelete = (file, index) => {
|
|
329
431
|
clearUploadQueue(index);
|
|
330
|
-
|
|
331
|
-
fileList
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
console.log(locale.uploader.deleteWord);
|
|
337
|
-
}
|
|
432
|
+
funcInterceptor(onBeforeDelete, {
|
|
433
|
+
args: [file, fileList],
|
|
434
|
+
done: () => deleted(file, index),
|
|
435
|
+
});
|
|
338
436
|
};
|
|
339
|
-
const
|
|
437
|
+
const onChangeMedia = (res) => {
|
|
340
438
|
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
|
|
341
439
|
const { tempFiles } = res;
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
}
|
|
440
|
+
const _files = filterFiles(tempFiles);
|
|
441
|
+
readFile(_files);
|
|
442
|
+
onChange && onChange({ fileList });
|
|
443
|
+
};
|
|
444
|
+
const onChangeImage = (res) => {
|
|
445
|
+
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
|
|
446
|
+
const { tempFiles } = res;
|
|
447
|
+
const _files = filterFiles(tempFiles);
|
|
448
|
+
readFile(_files);
|
|
352
449
|
onChange && onChange({ fileList });
|
|
353
450
|
};
|
|
354
451
|
const handleItemClick = (file) => {
|
|
@@ -363,27 +460,32 @@ const InternalUploader = (props, ref) => {
|
|
|
363
460
|
fileList.map((item, index) => {
|
|
364
461
|
return (React__default.createElement("div", { className: `nut-uploader__preview ${listType}`, key: item.uid },
|
|
365
462
|
listType === 'picture' && !children && (React__default.createElement("div", { className: "nut-uploader__preview-img" },
|
|
463
|
+
isDeletable && (React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, color: "rgba(0,0,0,0.6)", className: "close", name: "failure", onClick: () => onDelete(item, index) })),
|
|
366
464
|
item.status === 'ready' ? (React__default.createElement("div", { className: "nut-uploader__preview__progress" },
|
|
367
465
|
React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message))) : (item.status !== 'success' && (React__default.createElement("div", { className: "nut-uploader__preview__progress" },
|
|
368
|
-
|
|
466
|
+
item.failIcon === ' ' ||
|
|
467
|
+
item.loadingIcon === ' ' ? null : (React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, color: "#fff", name: `${item.status === 'error'
|
|
468
|
+
? `${item.failIcon || 'failure'}`
|
|
469
|
+
: `${item.loadingIcon || 'loading'}`}` })),
|
|
369
470
|
React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)))),
|
|
370
|
-
|
|
371
|
-
item.type.includes('image') ? (React__default.createElement(React__default.Fragment, null, item.url && (React__default.createElement("img", { className: "nut-uploader__preview-img__c", src: item.url, alt: "", onClick: () => handleItemClick(item) })))) : (React__default.createElement(React__default.Fragment, null, defaultImg ? (React__default.createElement("img", { className: "nut-uploader__preview-img__c", src: defaultImg, alt: "", onClick: () => handleItemClick(item) })) : (React__default.createElement("div", { className: "nut-uploader__preview-img__file" },
|
|
471
|
+
item.type.includes('image') ? (React__default.createElement(React__default.Fragment, null, item.url && (React__default.createElement(Image, { className: "nut-uploader__preview-img__c", mode: "aspectFit", src: item.url, onClick: () => handleItemClick(item) })))) : (React__default.createElement(React__default.Fragment, null, defaultImg ? (React__default.createElement(Image, { className: "nut-uploader__preview-img__c", mode: "aspectFit", src: defaultImg, onClick: () => handleItemClick(item) })) : (React__default.createElement("div", { className: "nut-uploader__preview-img__file" },
|
|
372
472
|
React__default.createElement("div", { onClick: () => handleItemClick(item), className: "nut-uploader__preview-img__file__name" },
|
|
373
|
-
React__default.createElement(Icon, { classPrefix:
|
|
473
|
+
React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, color: "#808080", name: "link" }),
|
|
374
474
|
"\u00A0",
|
|
375
475
|
item.name))))),
|
|
376
|
-
React__default.createElement("div", { className: "tips" }, item.name))),
|
|
476
|
+
item.status === 'success' ? (React__default.createElement("div", { className: "tips" }, item.name)) : null)),
|
|
377
477
|
listType === 'list' && (React__default.createElement("div", { className: "nut-uploader__preview-list" },
|
|
378
478
|
React__default.createElement("div", { className: `nut-uploader__preview-img__file__name ${item.status}`, onClick: () => handleItemClick(item) },
|
|
379
|
-
React__default.createElement(Icon, { classPrefix:
|
|
479
|
+
React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, name: "link" }),
|
|
380
480
|
"\u00A0",
|
|
381
481
|
item.name),
|
|
382
|
-
isDeletable && (React__default.createElement(Icon, { classPrefix:
|
|
482
|
+
isDeletable && (React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, color: "#808080", className: "nut-uploader__preview-img__file__del", name: "del", onClick: () => onDelete(item, index) })),
|
|
383
483
|
item.status === 'uploading' && (React__default.createElement(Progress, { size: "small", percentage: item.percentage, strokeColor: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)", showText: false }))))));
|
|
384
484
|
}),
|
|
385
|
-
maximum > fileList.length && listType === 'picture' && !children && (React__default.createElement("div", { className: `nut-uploader__upload ${listType}` },
|
|
386
|
-
React__default.createElement(
|
|
485
|
+
maximum > fileList.length && listType === 'picture' && !children && (React__default.createElement("div", { className: `nut-uploader__upload ${listType} ${disabled ? 'nut-uploader__upload-disabled' : ''}` },
|
|
486
|
+
React__default.createElement("div", { className: "nut-uploader__icon" },
|
|
487
|
+
React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, size: uploadIconSize, color: "#808080", name: uploadIcon }),
|
|
488
|
+
React__default.createElement("span", { className: "nut-uploader__icon-tip" }, uploadIconTip)),
|
|
387
489
|
React__default.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage })))));
|
|
388
490
|
};
|
|
389
491
|
const Uploader = React__default.forwardRef(InternalUploader);
|
package/dist/locales/base.js
CHANGED
package/dist/locales/en-US.js
CHANGED
package/dist/locales/id-ID.js
CHANGED
package/dist/locales/zh-CN.js
CHANGED
package/dist/locales/zh-TW.js
CHANGED
package/dist/locales/zh-UG.js
CHANGED