vxe-pc-ui 4.6.46 → 4.6.48

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.
Files changed (172) hide show
  1. package/es/icon/style.css +1 -1
  2. package/es/index.esm.js +6 -0
  3. package/es/input/src/input.js +4 -2
  4. package/es/language/ar-EG.js +1 -0
  5. package/es/language/de-DE.js +1 -0
  6. package/es/language/en-US.js +1 -0
  7. package/es/language/es-ES.js +1 -0
  8. package/es/language/fr-FR.js +1 -0
  9. package/es/language/hu-HU.js +1 -0
  10. package/es/language/hy-AM.js +1 -0
  11. package/es/language/id-ID.js +1 -0
  12. package/es/language/it-IT.js +1 -0
  13. package/es/language/ja-JP.js +1 -0
  14. package/es/language/ko-KR.js +1 -0
  15. package/es/language/ms-MY.js +1 -0
  16. package/es/language/nb-NO.js +1 -0
  17. package/es/language/pt-BR.js +1 -0
  18. package/es/language/ru-RU.js +1 -0
  19. package/es/language/th-TH.js +1 -0
  20. package/es/language/ug-CN.js +1 -0
  21. package/es/language/uk-UA.js +1 -0
  22. package/es/language/uz-UZ.js +1 -0
  23. package/es/language/vi-VN.js +1 -0
  24. package/es/language/zh-CHT.js +1 -0
  25. package/es/language/zh-CN.js +1 -0
  26. package/es/print/src/util.js +2 -2
  27. package/es/select/src/select.js +14 -3
  28. package/es/style.css +1 -1
  29. package/es/style.min.css +1 -1
  30. package/es/ui/index.js +5 -2
  31. package/es/ui/src/log.js +1 -1
  32. package/es/upload/src/upload.js +103 -44
  33. package/es/upload/style.css +45 -10
  34. package/es/upload/style.min.css +1 -1
  35. package/es/vxe-upload/style.css +45 -10
  36. package/es/vxe-upload/style.min.css +1 -1
  37. package/lib/icon/style/style.css +1 -1
  38. package/lib/icon/style/style.min.css +1 -1
  39. package/lib/index.common.js +6 -0
  40. package/lib/index.umd.js +124 -38
  41. package/lib/index.umd.min.js +1 -1
  42. package/lib/input/src/input.js +4 -1
  43. package/lib/input/src/input.min.js +1 -1
  44. package/lib/language/ar-EG.js +1 -0
  45. package/lib/language/ar-EG.min.js +1 -1
  46. package/lib/language/ar-EG.umd.js +1 -0
  47. package/lib/language/de-DE.js +1 -0
  48. package/lib/language/de-DE.min.js +1 -1
  49. package/lib/language/de-DE.umd.js +1 -0
  50. package/lib/language/en-US.js +1 -0
  51. package/lib/language/en-US.min.js +1 -1
  52. package/lib/language/en-US.umd.js +1 -0
  53. package/lib/language/es-ES.js +1 -0
  54. package/lib/language/es-ES.min.js +1 -1
  55. package/lib/language/es-ES.umd.js +1 -0
  56. package/lib/language/fr-FR.js +1 -0
  57. package/lib/language/fr-FR.min.js +1 -1
  58. package/lib/language/fr-FR.umd.js +1 -0
  59. package/lib/language/hu-HU.js +1 -0
  60. package/lib/language/hu-HU.min.js +1 -1
  61. package/lib/language/hu-HU.umd.js +1 -0
  62. package/lib/language/hy-AM.js +1 -0
  63. package/lib/language/hy-AM.min.js +1 -1
  64. package/lib/language/hy-AM.umd.js +1 -0
  65. package/lib/language/id-ID.js +1 -0
  66. package/lib/language/id-ID.min.js +1 -1
  67. package/lib/language/id-ID.umd.js +1 -0
  68. package/lib/language/it-IT.js +1 -0
  69. package/lib/language/it-IT.min.js +1 -1
  70. package/lib/language/it-IT.umd.js +1 -0
  71. package/lib/language/ja-JP.js +1 -0
  72. package/lib/language/ja-JP.min.js +1 -1
  73. package/lib/language/ja-JP.umd.js +1 -0
  74. package/lib/language/ko-KR.js +1 -0
  75. package/lib/language/ko-KR.min.js +1 -1
  76. package/lib/language/ko-KR.umd.js +1 -0
  77. package/lib/language/ms-MY.js +1 -0
  78. package/lib/language/ms-MY.min.js +1 -1
  79. package/lib/language/ms-MY.umd.js +1 -0
  80. package/lib/language/nb-NO.js +1 -0
  81. package/lib/language/nb-NO.min.js +1 -1
  82. package/lib/language/nb-NO.umd.js +1 -0
  83. package/lib/language/pt-BR.js +1 -0
  84. package/lib/language/pt-BR.min.js +1 -1
  85. package/lib/language/pt-BR.umd.js +1 -0
  86. package/lib/language/ru-RU.js +1 -0
  87. package/lib/language/ru-RU.min.js +1 -1
  88. package/lib/language/ru-RU.umd.js +1 -0
  89. package/lib/language/th-TH.js +1 -0
  90. package/lib/language/th-TH.min.js +1 -1
  91. package/lib/language/th-TH.umd.js +1 -0
  92. package/lib/language/ug-CN.js +1 -0
  93. package/lib/language/ug-CN.min.js +1 -1
  94. package/lib/language/ug-CN.umd.js +1 -0
  95. package/lib/language/uk-UA.js +1 -0
  96. package/lib/language/uk-UA.min.js +1 -1
  97. package/lib/language/uk-UA.umd.js +1 -0
  98. package/lib/language/uz-UZ.js +1 -0
  99. package/lib/language/uz-UZ.min.js +1 -1
  100. package/lib/language/uz-UZ.umd.js +1 -0
  101. package/lib/language/vi-VN.js +1 -0
  102. package/lib/language/vi-VN.min.js +1 -1
  103. package/lib/language/vi-VN.umd.js +1 -0
  104. package/lib/language/zh-CHT.js +1 -0
  105. package/lib/language/zh-CHT.min.js +1 -1
  106. package/lib/language/zh-CHT.umd.js +1 -0
  107. package/lib/language/zh-CN.js +1 -0
  108. package/lib/language/zh-CN.min.js +1 -1
  109. package/lib/language/zh-CN.umd.js +1 -0
  110. package/lib/print/src/util.js +1 -1
  111. package/lib/print/src/util.min.js +1 -1
  112. package/lib/select/src/select.js +12 -3
  113. package/lib/select/src/select.min.js +1 -1
  114. package/lib/style.css +1 -1
  115. package/lib/style.min.css +1 -1
  116. package/lib/ui/index.js +5 -2
  117. package/lib/ui/index.min.js +1 -1
  118. package/lib/ui/src/log.js +1 -1
  119. package/lib/ui/src/log.min.js +1 -1
  120. package/lib/upload/src/upload.js +100 -30
  121. package/lib/upload/src/upload.min.js +1 -1
  122. package/lib/upload/style/style.css +45 -10
  123. package/lib/upload/style/style.min.css +1 -1
  124. package/lib/vxe-upload/style/style.css +45 -10
  125. package/lib/vxe-upload/style/style.min.css +1 -1
  126. package/package.json +1 -1
  127. package/packages/index.ts +21 -0
  128. package/packages/input/src/input.ts +4 -2
  129. package/packages/language/ar-EG.ts +1 -0
  130. package/packages/language/de-DE.ts +1 -0
  131. package/packages/language/en-US.ts +1 -0
  132. package/packages/language/es-ES.ts +1 -0
  133. package/packages/language/fr-FR.ts +1 -0
  134. package/packages/language/hu-HU.ts +1 -0
  135. package/packages/language/hy-AM.ts +1 -0
  136. package/packages/language/id-ID.ts +1 -0
  137. package/packages/language/it-IT.ts +1 -0
  138. package/packages/language/ja-JP.ts +1 -0
  139. package/packages/language/ko-KR.ts +1 -0
  140. package/packages/language/ms-MY.ts +1 -0
  141. package/packages/language/nb-NO.ts +1 -0
  142. package/packages/language/pt-BR.ts +1 -0
  143. package/packages/language/ru-RU.ts +1 -0
  144. package/packages/language/th-TH.ts +1 -0
  145. package/packages/language/ug-CN.ts +1 -0
  146. package/packages/language/uk-UA.ts +1 -0
  147. package/packages/language/uz-UZ.ts +1 -0
  148. package/packages/language/vi-VN.ts +1 -0
  149. package/packages/language/zh-CHT.ts +1 -0
  150. package/packages/language/zh-CN.ts +1 -0
  151. package/packages/print/src/util.ts +2 -2
  152. package/packages/select/src/select.ts +13 -3
  153. package/packages/ui/index.ts +4 -1
  154. package/packages/upload/src/upload.ts +106 -46
  155. package/styles/components/upload.scss +74 -25
  156. package/types/components/column.d.ts +3 -3
  157. package/types/components/input.d.ts +2 -0
  158. package/types/components/upload.d.ts +14 -1
  159. package/types/ui/global-icon.d.ts +1 -0
  160. package/types/ui/renderer.d.ts +3 -0
  161. /package/es/icon/{iconfont.1751550166947.ttf → iconfont.1751850830299.ttf} +0 -0
  162. /package/es/icon/{iconfont.1751550166947.woff → iconfont.1751850830299.woff} +0 -0
  163. /package/es/icon/{iconfont.1751550166947.woff2 → iconfont.1751850830299.woff2} +0 -0
  164. /package/es/{iconfont.1751550166947.ttf → iconfont.1751850830299.ttf} +0 -0
  165. /package/es/{iconfont.1751550166947.woff → iconfont.1751850830299.woff} +0 -0
  166. /package/es/{iconfont.1751550166947.woff2 → iconfont.1751850830299.woff2} +0 -0
  167. /package/lib/icon/style/{iconfont.1751550166947.ttf → iconfont.1751850830299.ttf} +0 -0
  168. /package/lib/icon/style/{iconfont.1751550166947.woff → iconfont.1751850830299.woff} +0 -0
  169. /package/lib/icon/style/{iconfont.1751550166947.woff2 → iconfont.1751850830299.woff2} +0 -0
  170. /package/lib/{iconfont.1751550166947.ttf → iconfont.1751850830299.ttf} +0 -0
  171. /package/lib/{iconfont.1751550166947.woff → iconfont.1751850830299.woff} +0 -0
  172. /package/lib/{iconfont.1751550166947.woff2 → iconfont.1751850830299.woff2} +0 -0
package/es/ui/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { VxeUI, setConfig, setIcon } from '@vxe-ui/core';
2
2
  import { dynamicApp } from '../dynamics';
3
3
  import { warnLog } from './src/log';
4
- export const version = "4.6.46";
4
+ export const version = "4.6.48";
5
5
  VxeUI.uiVersion = version;
6
6
  VxeUI.dynamicApp = dynamicApp;
7
7
  export function config(options) {
@@ -372,7 +372,9 @@ setConfig({
372
372
  dragToUpload: true,
373
373
  // imageConfig: {},
374
374
  showLimitSize: true,
375
- showLimitCount: true
375
+ showLimitCount: true,
376
+ autoSubmit: true,
377
+ maxSimultaneousUploads: 5
376
378
  },
377
379
  watermark: {
378
380
  rotate: -30,
@@ -475,6 +477,7 @@ setIcon({
475
477
  UPLOAD_FILE_ADD: iconPrefix + 'upload',
476
478
  UPLOAD_FILE_REMOVE: iconPrefix + 'delete',
477
479
  UPLOAD_FILE_DOWNLOAD: iconPrefix + 'download',
480
+ UPLOAD_IMAGE_UPLOAD: iconPrefix + 'upload',
478
481
  UPLOAD_IMAGE_RE_UPLOAD: iconPrefix + 'repeat',
479
482
  UPLOAD_IMAGE_ADD: iconPrefix + 'add',
480
483
  UPLOAD_IMAGE_REMOVE: iconPrefix + 'close',
package/es/ui/src/log.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { log } from '@vxe-ui/core';
2
- const version = `ui v${"4.6.46"}`;
2
+ const version = `ui v${"4.6.48"}`;
3
3
  export const warnLog = log.create('warn', version);
4
4
  export const errLog = log.create('error', version);
@@ -24,6 +24,10 @@ export default defineVxeComponent({
24
24
  type: Boolean,
25
25
  default: null
26
26
  },
27
+ autoSubmit: {
28
+ type: Boolean,
29
+ default: () => getConfig().upload.autoSubmit
30
+ },
27
31
  mode: {
28
32
  type: String,
29
33
  default: () => getConfig().upload.mode
@@ -113,6 +117,7 @@ export default defineVxeComponent({
113
117
  type: [String, Number, Function],
114
118
  default: () => getConfig().upload.progressText
115
119
  },
120
+ showSubmitButton: Boolean,
116
121
  autoHiddenButton: {
117
122
  type: Boolean,
118
123
  default: () => getConfig().upload.autoHiddenButton
@@ -153,6 +158,10 @@ export default defineVxeComponent({
153
158
  type: Boolean,
154
159
  default: () => null
155
160
  },
161
+ maxSimultaneousUploads: {
162
+ type: Number,
163
+ default: () => getConfig().upload.maxSimultaneousUploads
164
+ },
156
165
  tipText: [String, Number, Function],
157
166
  hintText: String,
158
167
  previewMethod: Function,
@@ -525,6 +534,7 @@ export default defineVxeComponent({
525
534
  const cacheItem = fileCacheMaps[fileKey];
526
535
  if (cacheItem) {
527
536
  cacheItem.percent = 100;
537
+ cacheItem.status = 'success';
528
538
  }
529
539
  Object.assign(item, res);
530
540
  dispatchEvent('upload-success', { option: item, data: res }, null);
@@ -567,7 +577,7 @@ export default defineVxeComponent({
567
577
  if (uploadFn && cacheItem) {
568
578
  const file = cacheItem.file;
569
579
  cacheItem.loading = true;
570
- cacheItem.status = '';
580
+ cacheItem.status = 'pending';
571
581
  cacheItem.percent = 0;
572
582
  handleUploadResult(item, file).then(() => {
573
583
  if (urlMode) {
@@ -576,8 +586,8 @@ export default defineVxeComponent({
576
586
  });
577
587
  }
578
588
  };
579
- const uploadFile = (files, evnt) => {
580
- const { multiple, urlMode, showLimitSize, limitSizeText, showLimitCount, limitCountText } = props;
589
+ const handleUploadFile = (files, evnt) => {
590
+ const { multiple, urlMode, showLimitSize, limitSizeText, showLimitCount, limitCountText, autoSubmit } = props;
581
591
  const { fileList } = reactData;
582
592
  const uploadFn = props.uploadMethod || getConfig().upload.uploadMethod;
583
593
  const keyField = computeKeyField.value;
@@ -670,13 +680,13 @@ export default defineVxeComponent({
670
680
  if (uploadFn) {
671
681
  cacheMaps[fileKey] = {
672
682
  file: file,
673
- loading: true,
674
- status: '',
683
+ loading: !!autoSubmit,
684
+ status: 'pending',
675
685
  percent: 0
676
686
  };
677
687
  }
678
688
  const item = reactive(fileObj);
679
- if (uploadFn) {
689
+ if (uploadFn && autoSubmit) {
680
690
  uploadPromiseRests.push(handleUploadResult(item, file));
681
691
  }
682
692
  newFileList.push(item);
@@ -707,7 +717,7 @@ export default defineVxeComponent({
707
717
  multiple,
708
718
  types: isImage ? imageTypes : fileTypes
709
719
  }).then((params) => {
710
- uploadFile(params.files, evnt);
720
+ handleUploadFile(params.files, evnt);
711
721
  return params;
712
722
  });
713
723
  };
@@ -848,7 +858,7 @@ export default defineVxeComponent({
848
858
  }
849
859
  return;
850
860
  }
851
- uploadFile(files, evnt);
861
+ handleUploadFile(files, evnt);
852
862
  };
853
863
  const handleUploadDropEvent = (evnt) => {
854
864
  const dataTransfer = evnt.dataTransfer;
@@ -1102,12 +1112,46 @@ export default defineVxeComponent({
1102
1112
  dispatchEvent,
1103
1113
  choose() {
1104
1114
  return handleChoose(null);
1115
+ },
1116
+ submit(isFull) {
1117
+ const { maxSimultaneousUploads } = props;
1118
+ const msNum = XEUtils.toNumber(maxSimultaneousUploads || 1) || 1;
1119
+ const { fileList, fileCacheMaps } = reactData;
1120
+ const allPendingList = fileList.filter(item => {
1121
+ const fileKey = getFieldKey(item);
1122
+ const cacheItem = fileCacheMaps[fileKey];
1123
+ return cacheItem && (cacheItem.status === 'pending' || (isFull && cacheItem.status === 'error'));
1124
+ });
1125
+ const handleSubmit = (item) => {
1126
+ const fileKey = getFieldKey(item);
1127
+ const cacheItem = fileCacheMaps[fileKey];
1128
+ if (cacheItem) {
1129
+ const file = cacheItem.file;
1130
+ if (file && (cacheItem.status === 'pending' || (isFull && cacheItem.status === 'error'))) {
1131
+ cacheItem.loading = true;
1132
+ cacheItem.percent = 0;
1133
+ return handleUploadResult(item, file).then(handleNextSubmit);
1134
+ }
1135
+ }
1136
+ return handleNextSubmit();
1137
+ };
1138
+ const handleNextSubmit = () => {
1139
+ if (allPendingList.length) {
1140
+ const item = allPendingList[0];
1141
+ allPendingList.splice(0, 1);
1142
+ return handleSubmit(item).then(handleNextSubmit);
1143
+ }
1144
+ return Promise.resolve();
1145
+ };
1146
+ return Promise.all(allPendingList.splice(0, msNum).map(handleSubmit)).then(() => {
1147
+ // 完成
1148
+ });
1105
1149
  }
1106
1150
  };
1107
1151
  const uploadPrivateMethods = {};
1108
1152
  Object.assign($xeUpload, uploadMethods, uploadPrivateMethods);
1109
1153
  const renderFileItemList = (currList, isMoreView) => {
1110
- const { showRemoveButton, showDownloadButton, showProgress, progressText, showPreview, showErrorStatus, dragSort } = props;
1154
+ const { showRemoveButton, showDownloadButton, showProgress, progressText, showPreview, showErrorStatus, dragSort, autoSubmit, showSubmitButton } = props;
1111
1155
  const { fileCacheMaps } = reactData;
1112
1156
  const isDisabled = computeIsDisabled.value;
1113
1157
  const formReadonly = computeFormReadonly.value;
@@ -1123,11 +1167,19 @@ export default defineVxeComponent({
1123
1167
  return currList.map((item, index) => {
1124
1168
  const fileKey = getFieldKey(item);
1125
1169
  const cacheItem = fileCacheMaps[fileKey];
1126
- const isLoading = cacheItem && cacheItem.loading;
1127
- const isError = cacheItem && cacheItem.status === 'error';
1170
+ let isLoading = false;
1171
+ let isError = false;
1172
+ let isPending = false;
1173
+ const fileName = `${item[nameProp] || ''}`;
1174
+ if (cacheItem) {
1175
+ isLoading = cacheItem.loading;
1176
+ isError = cacheItem.status === 'error';
1177
+ isPending = cacheItem.status === 'pending';
1178
+ }
1128
1179
  return h('div', Object.assign({ key: dragSort ? fileKey : index, class: ['vxe-upload--file-item', {
1129
1180
  'is--preview': showPreview,
1130
1181
  'is--loading': isLoading,
1182
+ 'is--pending': isPending,
1131
1183
  'is--error': isError
1132
1184
  }], fileid: fileKey, draggable: dragSort ? true : null }, ons), [
1133
1185
  h('div', {
@@ -1139,12 +1191,13 @@ export default defineVxeComponent({
1139
1191
  ]),
1140
1192
  h('div', {
1141
1193
  class: 'vxe-upload--file-item-name',
1194
+ title: fileName,
1142
1195
  onClick(evnt) {
1143
1196
  if (!isLoading && !isError) {
1144
1197
  handlePreviewFileEvent(evnt, item);
1145
1198
  }
1146
1199
  }
1147
- }, `${item[nameProp] || ''}`),
1200
+ }, fileName),
1148
1201
  isLoading
1149
1202
  ? h('div', {
1150
1203
  class: 'vxe-upload--file-item-loading-icon'
@@ -1159,15 +1212,15 @@ export default defineVxeComponent({
1159
1212
  class: 'vxe-upload--file-item-loading-text'
1160
1213
  }, progressText ? XEUtils.toFormatString(`${XEUtils.isFunction(progressText) ? progressText({}) : progressText}`, { percent: cacheItem.percent }) : getI18n('vxe.upload.uploadProgress', [cacheItem.percent]))
1161
1214
  : renderEmptyElement($xeUpload),
1162
- showErrorStatus && isError
1215
+ !isLoading && ((isError && showErrorStatus) || (isPending && showSubmitButton && !autoSubmit))
1163
1216
  ? h('div', {
1164
- class: 'vxe-upload--image-item-error'
1217
+ class: 'vxe-upload--file-item-rebtn'
1165
1218
  }, [
1166
1219
  h(VxeButtonComponent, {
1167
- icon: getIcon().UPLOAD_IMAGE_RE_UPLOAD,
1220
+ icon: isError ? getIcon().UPLOAD_IMAGE_RE_UPLOAD : getIcon().UPLOAD_IMAGE_UPLOAD,
1168
1221
  mode: 'text',
1169
1222
  status: 'primary',
1170
- content: getI18n('vxe.upload.reUpload'),
1223
+ content: isError ? getI18n('vxe.upload.reUpload') : getI18n('vxe.upload.manualUpload'),
1171
1224
  onClick() {
1172
1225
  handleReUpload(item);
1173
1226
  }
@@ -1182,7 +1235,7 @@ export default defineVxeComponent({
1182
1235
  class: 'vxe-upload--file-item-corner'
1183
1236
  }, getSlotVNs(cornerSlot({ option: item, isMoreView, readonly: formReadonly })))
1184
1237
  : renderEmptyElement($xeUpload),
1185
- showDownloadButton && !isLoading
1238
+ showDownloadButton && !(isLoading || isPending)
1186
1239
  ? h('div', {
1187
1240
  class: 'vxe-upload--file-item-download-btn',
1188
1241
  onClick(evnt) {
@@ -1309,7 +1362,7 @@ export default defineVxeComponent({
1309
1362
  ]);
1310
1363
  };
1311
1364
  const renderImageItemList = (currList, isMoreView) => {
1312
- const { showRemoveButton, showProgress, progressText, showPreview, showErrorStatus, dragSort } = props;
1365
+ const { showRemoveButton, showProgress, progressText, showPreview, showErrorStatus, dragSort, autoSubmit, showSubmitButton } = props;
1313
1366
  const { fileCacheMaps } = reactData;
1314
1367
  const isDisabled = computeIsDisabled.value;
1315
1368
  const formReadonly = computeFormReadonly.value;
@@ -1327,18 +1380,24 @@ export default defineVxeComponent({
1327
1380
  return currList.map((item, index) => {
1328
1381
  const fileKey = getFieldKey(item);
1329
1382
  const cacheItem = fileCacheMaps[fileKey];
1330
- const isLoading = cacheItem && cacheItem.loading;
1331
- const isError = cacheItem && cacheItem.status === 'error';
1383
+ let isLoading = false;
1384
+ let isError = false;
1385
+ let isPending = false;
1386
+ if (cacheItem) {
1387
+ isLoading = cacheItem.loading;
1388
+ isError = cacheItem.status === 'error';
1389
+ isPending = cacheItem.status === 'pending';
1390
+ }
1332
1391
  return h('div', Object.assign({ key: dragSort ? fileKey : index, class: ['vxe-upload--image-item', {
1333
1392
  'is--preview': showPreview,
1334
1393
  'is--circle': imageOpts.circle,
1335
1394
  'is--loading': isLoading,
1395
+ 'is--pending': isPending,
1336
1396
  'is--error': isError
1337
1397
  }], fileid: fileKey, draggable: dragSort ? true : null }, ons), [
1338
1398
  h('div', {
1339
1399
  class: 'vxe-upload--image-item-box',
1340
1400
  style: isMoreView ? null : imgStyle,
1341
- title: getI18n('vxe.upload.viewItemTitle'),
1342
1401
  onClick(evnt) {
1343
1402
  if (!isLoading && !isError) {
1344
1403
  handlePreviewImageEvent(evnt, item, index);
@@ -1363,29 +1422,29 @@ export default defineVxeComponent({
1363
1422
  : renderEmptyElement($xeUpload)
1364
1423
  ])
1365
1424
  : renderEmptyElement($xeUpload),
1366
- !isLoading
1367
- ? (isError && showErrorStatus
1368
- ? h('div', {
1369
- class: 'vxe-upload--image-item-error'
1370
- }, [
1371
- h(VxeButtonComponent, {
1372
- icon: getIcon().UPLOAD_IMAGE_RE_UPLOAD,
1373
- mode: 'text',
1374
- status: 'primary',
1375
- content: getI18n('vxe.upload.reUpload'),
1376
- onClick() {
1377
- handleReUpload(item);
1378
- }
1379
- })
1380
- ])
1381
- : h('div', {
1382
- class: 'vxe-upload--image-item-img-wrapper'
1383
- }, [
1384
- h('img', {
1385
- class: 'vxe-upload--image-item-img',
1386
- src: getThumbnailFileUrl(item)
1387
- })
1388
- ]))
1425
+ h('div', {
1426
+ class: 'vxe-upload--image-item-img-wrapper',
1427
+ title: getI18n('vxe.upload.viewItemTitle')
1428
+ }, [
1429
+ h('img', {
1430
+ class: 'vxe-upload--image-item-img',
1431
+ src: getThumbnailFileUrl(item)
1432
+ })
1433
+ ]),
1434
+ !isLoading && ((isError && showErrorStatus) || (isPending && showSubmitButton && !autoSubmit))
1435
+ ? h('div', {
1436
+ class: 'vxe-upload--image-item-rebtn'
1437
+ }, [
1438
+ h(VxeButtonComponent, {
1439
+ icon: isError ? getIcon().UPLOAD_IMAGE_RE_UPLOAD : getIcon().UPLOAD_IMAGE_UPLOAD,
1440
+ mode: 'text',
1441
+ status: 'primary',
1442
+ content: isError ? getI18n('vxe.upload.reUpload') : getI18n('vxe.upload.manualUpload'),
1443
+ onClick() {
1444
+ handleReUpload(item);
1445
+ }
1446
+ })
1447
+ ])
1389
1448
  : renderEmptyElement($xeUpload),
1390
1449
  h('div', {
1391
1450
  class: 'vxe-upload--image-item-btn-wrapper',
@@ -80,18 +80,24 @@
80
80
  .vxe-upload--file-item:hover {
81
81
  background-color: var(--vxe-ui-base-hover-background-color);
82
82
  }
83
- .vxe-upload--file-item:hover:not(.is--loading) .vxe-upload--file-item-name {
83
+ .vxe-upload--file-item:hover .vxe-upload--file-item-name {
84
84
  color: var(--vxe-ui-font-primary-color);
85
85
  }
86
86
  .vxe-upload--file-item:last-child {
87
87
  margin-bottom: 0;
88
88
  }
89
+ .vxe-upload--file-item.is--preview .vxe-upload--file-item-name {
90
+ cursor: pointer;
91
+ }
89
92
  .vxe-upload--file-item.is--loading {
90
93
  cursor: progress;
91
94
  color: var(--vxe-ui-input-placeholder-color);
92
95
  }
93
- .vxe-upload--file-item.is--preview .vxe-upload--file-item-name {
94
- cursor: pointer;
96
+ .vxe-upload--file-item.is--loading:hover .vxe-upload--file-item-name {
97
+ color: var(--vxe-ui-input-placeholder-color);
98
+ }
99
+ .vxe-upload--file-item.is--pending {
100
+ color: var(--vxe-ui-input-placeholder-color);
95
101
  }
96
102
 
97
103
  .vxe-upload--file-over-more {
@@ -122,7 +128,7 @@
122
128
  color: var(--vxe-ui-input-placeholder-color);
123
129
  }
124
130
 
125
- .vxe-upload--file-item-error {
131
+ .vxe-upload--file-item-rebtn {
126
132
  padding-right: 0.4em;
127
133
  color: var(--vxe-ui-status-error-color);
128
134
  text-decoration: none;
@@ -251,10 +257,10 @@
251
257
  border-color: var(--vxe-ui-input-border-color);
252
258
  }
253
259
 
254
- .vxe-upload--image-item:hover:not(.is--loading) .vxe-upload--image-item-img-wrapper {
255
- border-color: var(--vxe-ui-font-primary-color);
260
+ .vxe-upload--image-item.is--loading .vxe-upload--image-item-box {
261
+ cursor: progress;
256
262
  }
257
- .vxe-upload--image-item:hover:not(.is--loading) .vxe-upload--image-item-img-wrapper::after {
263
+ .vxe-upload--image-item:hover .vxe-upload--image-item-img-wrapper::after, .vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper::after, .vxe-upload--image-item.is--pending .vxe-upload--image-item-img-wrapper::after {
258
264
  content: "";
259
265
  position: absolute;
260
266
  top: 0;
@@ -262,10 +268,15 @@
262
268
  width: 100%;
263
269
  height: 100%;
264
270
  pointer-events: none;
271
+ }
272
+ .vxe-upload--image-item:hover .vxe-upload--image-item-img-wrapper::after {
265
273
  background-color: rgba(0, 0, 0, 0.1);
266
274
  }
267
- .vxe-upload--image-item.is--loading .vxe-upload--image-item-box {
268
- cursor: progress;
275
+ .vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper::after, .vxe-upload--image-item.is--pending .vxe-upload--image-item-img-wrapper::after {
276
+ background-color: rgba(0, 0, 0, 0.4);
277
+ }
278
+ .vxe-upload--image-item.is--error:hover .vxe-upload--image-item-img-wrapper::after, .vxe-upload--image-item.is--pending:hover .vxe-upload--image-item-img-wrapper::after {
279
+ background-color: rgba(0, 0, 0, 0.5);
269
280
  }
270
281
  .vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper {
271
282
  border-color: var(--vxe-ui-status-error-color);
@@ -280,6 +291,10 @@
280
291
  .vxe-upload--image-item.is--circle .vxe-upload--image-item-img-wrapper::after {
281
292
  border-radius: 50%;
282
293
  }
294
+ .vxe-upload--image-item.is--circle .vxe-upload--image-item-loading,
295
+ .vxe-upload--image-item.is--circle .vxe-upload--image-item-rebtn {
296
+ border-radius: 50%;
297
+ }
283
298
 
284
299
  .vxe-upload--image-item-img-wrapper {
285
300
  display: flex;
@@ -308,13 +323,26 @@
308
323
  width: 100%;
309
324
  height: 100%;
310
325
  color: var(--vxe-ui-loading-color);
311
- background-color: var(--vxe-ui-loading-background-color);
326
+ background-color: rgba(0, 0, 0, 0.6);
312
327
  z-index: 1;
313
328
  -webkit-user-select: none;
314
329
  -moz-user-select: none;
315
330
  user-select: none;
316
331
  }
317
332
 
333
+ .vxe-upload--image-item-rebtn {
334
+ position: absolute;
335
+ display: flex;
336
+ flex-direction: row;
337
+ justify-content: center;
338
+ align-items: center;
339
+ top: 0;
340
+ left: 0;
341
+ width: 100%;
342
+ height: 100%;
343
+ background-color: rgba(0, 0, 0, 0.6);
344
+ }
345
+
318
346
  .vxe-upload--image-action-hint {
319
347
  font-size: 0.8em;
320
348
  word-break: break-all;
@@ -406,6 +434,13 @@
406
434
  .vxe-upload--more-popup .vxe-upload--file-list {
407
435
  max-height: none;
408
436
  }
437
+ .vxe-upload--more-popup .vxe-upload--file-action-btn {
438
+ width: 100%;
439
+ }
440
+ .vxe-upload--more-popup .vxe-upload--file-action-btn > .vxe-button {
441
+ width: 100%;
442
+ max-width: 100%;
443
+ }
409
444
 
410
445
  .vxe-upload,
411
446
  .vxe-upload--more-popup {
@@ -1 +1 @@
1
- @charset "UTF-8";.vxe-upload{position:relative;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family)}.vxe-upload.show--error .vxe-upload--file-item.is--error{color:var(--vxe-ui-status-error-color)}.vxe-upload.show--error .vxe-upload--file-item.is--error:hover .vxe-upload--file-item-name{color:var(--vxe-ui-status-error-color)}.vxe-upload.show--error .vxe-upload--file-item.is--error .vxe-upload--file-item-name{text-decoration:line-through}.vxe-upload--more-popup.is--active .vxe-upload--image-action-box,.vxe-upload.is--active .vxe-upload--image-action-box{border-color:var(--vxe-ui-font-primary-color)}.vxe-upload--more-popup.is--active .vxe-upload--file-action-btn>.vxe-button,.vxe-upload.is--active .vxe-upload--file-action-btn>.vxe-button{border-color:var(--vxe-ui-font-primary-color);border-style:var(--vxe-ui-upload-file-button-border-style)}.vxe-upload--more-popup.is--disabled .vxe-upload--file-action-btn,.vxe-upload--more-popup.is--disabled .vxe-upload--image-action-box,.vxe-upload.is--disabled .vxe-upload--file-action-btn,.vxe-upload.is--disabled .vxe-upload--image-action-box{cursor:no-drop}.vxe-upload--drag-placeholder{display:flex;flex-direction:row;align-items:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;font-weight:700;font-weight:var(--vxe-ui-font-darken-color);font-size:1.2em;border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-upload-drag-over-background-color);border:1px dotted var(--vxe-ui-font-lighten-color);z-index:9}.vxe-upload--file-list-wrapper.is--horizontal{display:flex;flex-direction:row}.vxe-upload--file-list-wrapper.is--horizontal>.vxe-upload--file-list{flex-grow:1;display:flex;flex-direction:column;justify-content:center}.vxe-upload--file-list-wrapper.is--horizontal>.vxe-upload--file-action{flex-shrink:0}.vxe-upload--file-list{max-height:294px;overflow:auto;outline:0}.vxe-upload--file-item{position:relative;display:flex;flex-direction:row;align-items:center;line-height:1.5em;padding:var(--vxe-ui-layout-padding-half)}.vxe-upload--file-item:hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-upload--file-item:hover:not(.is--loading) .vxe-upload--file-item-name{color:var(--vxe-ui-font-primary-color)}.vxe-upload--file-item:last-child{margin-bottom:0}.vxe-upload--file-item.is--loading{cursor:progress;color:var(--vxe-ui-input-placeholder-color)}.vxe-upload--file-item.is--preview .vxe-upload--file-item-name{cursor:pointer}.vxe-upload--file-over-more{display:flex;align-items:center;justify-content:center;flex-shrink:0}.vxe-upload--file-over-more .vxe-button{padding-top:0;padding-bottom:0}.vxe-upload--file-action-btn{display:inline-block}.vxe-upload--file-action-btn>.vxe-button{border-style:var(--vxe-ui-upload-file-button-border-style)}.vxe-upload--file-action-button:hover{border-color:var(--vxe-ui-font-primary-color)}.vxe-upload--file-action-tip{font-size:.9em;padding:var(--vxe-ui-layout-padding-half);color:var(--vxe-ui-input-placeholder-color)}.vxe-upload--file-item-error{padding-right:.4em;color:var(--vxe-ui-status-error-color);text-decoration:none;cursor:help}.vxe-upload--file-item-icon{flex-shrink:0;padding-right:.2em}.vxe-upload--file-item-name{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 .2em}.vxe-upload--file-item-btn-wrapper{display:inline-flex;flex-direction:row;justify-content:center}.vxe-upload--file-item-loading-icon{padding-right:.2em}.vxe-upload--file-item-loading-icon,.vxe-upload--file-item-loading-text{color:var(--vxe-ui-loading-color);flex-shrink:0}.vxe-upload--file-item-corner,.vxe-upload--file-item-download-btn,.vxe-upload--file-item-remove-btn{flex-shrink:0}.vxe-upload--file-item-download-btn,.vxe-upload--file-item-remove-btn{padding-left:.5em;cursor:pointer}.vxe-upload--file-item-download-btn{color:var(--vxe-ui-font-primary-color)}.vxe-upload--file-item-download-btn:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-upload--file-item-remove-btn{color:var(--vxe-ui-status-error-color)}.vxe-upload--file-item-remove-btn:hover{color:var(--vxe-ui-status-error-lighten-color)}.vxe-upload--image-list,.vxe-upload--image-more-list{display:flex;flex-direction:row;flex-wrap:wrap}.vxe-upload--image-action,.vxe-upload--image-item,.vxe-upload--image-over-more{flex-shrink:0;text-align:center;padding:var(--vxe-ui-layout-padding-half)}.vxe-upload--image-over-more{display:flex;align-items:center;justify-content:center}.vxe-upload--image-action-icon{font-size:1.2em;padding-bottom:.1em}.vxe-upload--image-action-content{font-size:.9em;padding:0 .15em .5em .15em}.vxe-upload--image-action-box,.vxe-upload--image-item-box{position:relative;border-radius:var(--vxe-ui-base-border-radius)}.vxe-upload--image-item-box{display:flex;flex-direction:row;align-items:center;justify-content:center}.vxe-upload--image-action-box{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px var(--vxe-ui-upload-image-button-border-style) var(--vxe-ui-input-border-color);cursor:pointer}.vxe-upload--image-action-box:hover{color:var(--vxe-ui-font-primary-color);border-color:var(--vxe-ui-font-primary-color)}.vxe-upload.is--disabled .vxe-upload--file-action-btn,.vxe-upload.is--disabled .vxe-upload--image-action-box{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-upload.is--disabled .vxe-upload--image-action-box:hover{color:var(--vxe-ui-font-disabled-color);border-color:var(--vxe-ui-input-border-color)}.vxe-upload--image-item:hover:not(.is--loading) .vxe-upload--image-item-img-wrapper{border-color:var(--vxe-ui-font-primary-color)}.vxe-upload--image-item:hover:not(.is--loading) .vxe-upload--image-item-img-wrapper::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;background-color:rgba(0,0,0,.1)}.vxe-upload--image-item.is--loading .vxe-upload--image-item-box{cursor:progress}.vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper{border-color:var(--vxe-ui-status-error-color)}.vxe-upload--image-item.is--preview .vxe-upload--image-item-box{cursor:pointer}.vxe-upload--image-item.is--circle .vxe-upload--image-item-img-wrapper{border-radius:50%;overflow:hidden}.vxe-upload--image-item.is--circle .vxe-upload--image-item-img-wrapper::after{border-radius:50%}.vxe-upload--image-item-img-wrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;height:100%;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-input-border-color)}.vxe-upload--image-item-img{max-width:100%;max-height:100%}.vxe-upload--image-item-loading{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;top:0;left:0;width:100%;height:100%;color:var(--vxe-ui-loading-color);background-color:var(--vxe-ui-loading-background-color);z-index:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-upload--image-action-hint{font-size:.8em;word-break:break-all;color:var(--vxe-ui-input-placeholder-color)}.vxe-upload--image-item-btn-wrapper{display:inline-flex;flex-direction:row;justify-content:center;position:absolute;top:calc(var(--vxe-ui-layout-padding-half) * -1);right:calc(var(--vxe-ui-layout-padding-half) * -1)}.vxe-upload--file-item-,.vxe-upload--image-item-remove-btn{flex-shrink:0}.vxe-upload--image-item-remove-btn{display:flex;flex-direction:row;justify-content:center;align-items:center;width:1.8em;height:1.8em;font-size:.8em;border-radius:50%;color:#fff;background-color:var(--vxe-ui-status-error-color);z-index:3;cursor:pointer}.vxe-upload--image-item-remove-btn:hover{background-color:var(--vxe-ui-status-error-lighten-color)}.vxe-upload--file-message-over-error .vxe-upload--file-message-over-extra{margin-top:.5em;max-height:160px;max-width:380px;overflow:auto;border:1px solid var(--vxe-ui-input-border-color);padding:var(--vxe-ui-layout-padding-half) var(--vxe-ui-layout-padding-default);outline:0}.vxe-upload--file-message-over-error .vxe-upload--file-message-over-extra-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-upload--drag-line{display:none;position:absolute;top:0;left:0;z-index:3;pointer-events:none}.vxe-upload--drag-line{width:1px;height:1px;border:2px solid transparent}.vxe-upload--drag-line[drag-pos=top]{border-top-color:var(--vxe-ui-font-primary-color)}.vxe-upload--drag-line[drag-pos=bottom]{border-bottom-color:var(--vxe-ui-font-primary-color)}.vxe-upload--drag-line[drag-pos=left]{border-left-color:var(--vxe-ui-font-primary-color)}.vxe-upload--drag-line[drag-pos=right]{border-right-color:var(--vxe-ui-font-primary-color)}.vxe-upload--drag-list-move{transition:transform .2s}.vxe-upload--more-popup{position:relative}.vxe-upload--more-popup .vxe-upload--file-list{max-height:none}.vxe-upload,.vxe-upload--more-popup{font-size:var(--vxe-ui-font-size-default)}.vxe-upload .vxe-upload--image-action-box,.vxe-upload .vxe-upload--image-item-box,.vxe-upload--more-popup .vxe-upload--image-action-box,.vxe-upload--more-popup .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-default);height:var(--vxe-ui-upload-image-wh-default)}.vxe-upload--more-popup.size--medium,.vxe-upload.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-upload--more-popup.size--medium .vxe-upload--image-action-box,.vxe-upload--more-popup.size--medium .vxe-upload--image-item-box,.vxe-upload.size--medium .vxe-upload--image-action-box,.vxe-upload.size--medium .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-medium);height:var(--vxe-ui-upload-image-wh-medium)}.vxe-upload--more-popup.size--small,.vxe-upload.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-upload--more-popup.size--small .vxe-upload--image-action-box,.vxe-upload--more-popup.size--small .vxe-upload--image-item-box,.vxe-upload.size--small .vxe-upload--image-action-box,.vxe-upload.size--small .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-small);height:var(--vxe-ui-upload-image-wh-small)}.vxe-upload--more-popup.size--mini,.vxe-upload.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-upload--more-popup.size--mini .vxe-upload--image-action-box,.vxe-upload--more-popup.size--mini .vxe-upload--image-item-box,.vxe-upload.size--mini .vxe-upload--image-action-box,.vxe-upload.size--mini .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-mini);height:var(--vxe-ui-upload-image-wh-mini)}.vxe-upload--image-more-list .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-default);height:var(--vxe-ui-upload-image-wh-default)}
1
+ @charset "UTF-8";.vxe-upload{position:relative;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family)}.vxe-upload.show--error .vxe-upload--file-item.is--error{color:var(--vxe-ui-status-error-color)}.vxe-upload.show--error .vxe-upload--file-item.is--error:hover .vxe-upload--file-item-name{color:var(--vxe-ui-status-error-color)}.vxe-upload.show--error .vxe-upload--file-item.is--error .vxe-upload--file-item-name{text-decoration:line-through}.vxe-upload--more-popup.is--active .vxe-upload--image-action-box,.vxe-upload.is--active .vxe-upload--image-action-box{border-color:var(--vxe-ui-font-primary-color)}.vxe-upload--more-popup.is--active .vxe-upload--file-action-btn>.vxe-button,.vxe-upload.is--active .vxe-upload--file-action-btn>.vxe-button{border-color:var(--vxe-ui-font-primary-color);border-style:var(--vxe-ui-upload-file-button-border-style)}.vxe-upload--more-popup.is--disabled .vxe-upload--file-action-btn,.vxe-upload--more-popup.is--disabled .vxe-upload--image-action-box,.vxe-upload.is--disabled .vxe-upload--file-action-btn,.vxe-upload.is--disabled .vxe-upload--image-action-box{cursor:no-drop}.vxe-upload--drag-placeholder{display:flex;flex-direction:row;align-items:center;justify-content:center;position:absolute;top:0;left:0;width:100%;height:100%;font-weight:700;font-weight:var(--vxe-ui-font-darken-color);font-size:1.2em;border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-upload-drag-over-background-color);border:1px dotted var(--vxe-ui-font-lighten-color);z-index:9}.vxe-upload--file-list-wrapper.is--horizontal{display:flex;flex-direction:row}.vxe-upload--file-list-wrapper.is--horizontal>.vxe-upload--file-list{flex-grow:1;display:flex;flex-direction:column;justify-content:center}.vxe-upload--file-list-wrapper.is--horizontal>.vxe-upload--file-action{flex-shrink:0}.vxe-upload--file-list{max-height:294px;overflow:auto;outline:0}.vxe-upload--file-item{position:relative;display:flex;flex-direction:row;align-items:center;line-height:1.5em;padding:var(--vxe-ui-layout-padding-half)}.vxe-upload--file-item:hover{background-color:var(--vxe-ui-base-hover-background-color)}.vxe-upload--file-item:hover .vxe-upload--file-item-name{color:var(--vxe-ui-font-primary-color)}.vxe-upload--file-item:last-child{margin-bottom:0}.vxe-upload--file-item.is--preview .vxe-upload--file-item-name{cursor:pointer}.vxe-upload--file-item.is--loading{cursor:progress;color:var(--vxe-ui-input-placeholder-color)}.vxe-upload--file-item.is--loading:hover .vxe-upload--file-item-name{color:var(--vxe-ui-input-placeholder-color)}.vxe-upload--file-item.is--pending{color:var(--vxe-ui-input-placeholder-color)}.vxe-upload--file-over-more{display:flex;align-items:center;justify-content:center;flex-shrink:0}.vxe-upload--file-over-more .vxe-button{padding-top:0;padding-bottom:0}.vxe-upload--file-action-btn{display:inline-block}.vxe-upload--file-action-btn>.vxe-button{border-style:var(--vxe-ui-upload-file-button-border-style)}.vxe-upload--file-action-button:hover{border-color:var(--vxe-ui-font-primary-color)}.vxe-upload--file-action-tip{font-size:.9em;padding:var(--vxe-ui-layout-padding-half);color:var(--vxe-ui-input-placeholder-color)}.vxe-upload--file-item-rebtn{padding-right:.4em;color:var(--vxe-ui-status-error-color);text-decoration:none;cursor:help}.vxe-upload--file-item-icon{flex-shrink:0;padding-right:.2em}.vxe-upload--file-item-name{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 .2em}.vxe-upload--file-item-btn-wrapper{display:inline-flex;flex-direction:row;justify-content:center}.vxe-upload--file-item-loading-icon{padding-right:.2em}.vxe-upload--file-item-loading-icon,.vxe-upload--file-item-loading-text{color:var(--vxe-ui-loading-color);flex-shrink:0}.vxe-upload--file-item-corner,.vxe-upload--file-item-download-btn,.vxe-upload--file-item-remove-btn{flex-shrink:0}.vxe-upload--file-item-download-btn,.vxe-upload--file-item-remove-btn{padding-left:.5em;cursor:pointer}.vxe-upload--file-item-download-btn{color:var(--vxe-ui-font-primary-color)}.vxe-upload--file-item-download-btn:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-upload--file-item-remove-btn{color:var(--vxe-ui-status-error-color)}.vxe-upload--file-item-remove-btn:hover{color:var(--vxe-ui-status-error-lighten-color)}.vxe-upload--image-list,.vxe-upload--image-more-list{display:flex;flex-direction:row;flex-wrap:wrap}.vxe-upload--image-action,.vxe-upload--image-item,.vxe-upload--image-over-more{flex-shrink:0;text-align:center;padding:var(--vxe-ui-layout-padding-half)}.vxe-upload--image-over-more{display:flex;align-items:center;justify-content:center}.vxe-upload--image-action-icon{font-size:1.2em;padding-bottom:.1em}.vxe-upload--image-action-content{font-size:.9em;padding:0 .15em .5em .15em}.vxe-upload--image-action-box,.vxe-upload--image-item-box{position:relative;border-radius:var(--vxe-ui-base-border-radius)}.vxe-upload--image-item-box{display:flex;flex-direction:row;align-items:center;justify-content:center}.vxe-upload--image-action-box{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px var(--vxe-ui-upload-image-button-border-style) var(--vxe-ui-input-border-color);cursor:pointer}.vxe-upload--image-action-box:hover{color:var(--vxe-ui-font-primary-color);border-color:var(--vxe-ui-font-primary-color)}.vxe-upload.is--disabled .vxe-upload--file-action-btn,.vxe-upload.is--disabled .vxe-upload--image-action-box{color:var(--vxe-ui-font-disabled-color);cursor:no-drop}.vxe-upload.is--disabled .vxe-upload--image-action-box:hover{color:var(--vxe-ui-font-disabled-color);border-color:var(--vxe-ui-input-border-color)}.vxe-upload--image-item.is--loading .vxe-upload--image-item-box{cursor:progress}.vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper::after,.vxe-upload--image-item.is--pending .vxe-upload--image-item-img-wrapper::after,.vxe-upload--image-item:hover .vxe-upload--image-item-img-wrapper::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.vxe-upload--image-item:hover .vxe-upload--image-item-img-wrapper::after{background-color:rgba(0,0,0,.1)}.vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper::after,.vxe-upload--image-item.is--pending .vxe-upload--image-item-img-wrapper::after{background-color:rgba(0,0,0,.4)}.vxe-upload--image-item.is--error:hover .vxe-upload--image-item-img-wrapper::after,.vxe-upload--image-item.is--pending:hover .vxe-upload--image-item-img-wrapper::after{background-color:rgba(0,0,0,.5)}.vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper{border-color:var(--vxe-ui-status-error-color)}.vxe-upload--image-item.is--preview .vxe-upload--image-item-box{cursor:pointer}.vxe-upload--image-item.is--circle .vxe-upload--image-item-img-wrapper{border-radius:50%;overflow:hidden}.vxe-upload--image-item.is--circle .vxe-upload--image-item-img-wrapper::after{border-radius:50%}.vxe-upload--image-item.is--circle .vxe-upload--image-item-loading,.vxe-upload--image-item.is--circle .vxe-upload--image-item-rebtn{border-radius:50%}.vxe-upload--image-item-img-wrapper{display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;height:100%;border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-input-border-color)}.vxe-upload--image-item-img{max-width:100%;max-height:100%}.vxe-upload--image-item-loading{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;top:0;left:0;width:100%;height:100%;color:var(--vxe-ui-loading-color);background-color:rgba(0,0,0,.6);z-index:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-upload--image-item-rebtn{position:absolute;display:flex;flex-direction:row;justify-content:center;align-items:center;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.6)}.vxe-upload--image-action-hint{font-size:.8em;word-break:break-all;color:var(--vxe-ui-input-placeholder-color)}.vxe-upload--image-item-btn-wrapper{display:inline-flex;flex-direction:row;justify-content:center;position:absolute;top:calc(var(--vxe-ui-layout-padding-half) * -1);right:calc(var(--vxe-ui-layout-padding-half) * -1)}.vxe-upload--file-item-,.vxe-upload--image-item-remove-btn{flex-shrink:0}.vxe-upload--image-item-remove-btn{display:flex;flex-direction:row;justify-content:center;align-items:center;width:1.8em;height:1.8em;font-size:.8em;border-radius:50%;color:#fff;background-color:var(--vxe-ui-status-error-color);z-index:3;cursor:pointer}.vxe-upload--image-item-remove-btn:hover{background-color:var(--vxe-ui-status-error-lighten-color)}.vxe-upload--file-message-over-error .vxe-upload--file-message-over-extra{margin-top:.5em;max-height:160px;max-width:380px;overflow:auto;border:1px solid var(--vxe-ui-input-border-color);padding:var(--vxe-ui-layout-padding-half) var(--vxe-ui-layout-padding-default);outline:0}.vxe-upload--file-message-over-error .vxe-upload--file-message-over-extra-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-upload--drag-line{display:none;position:absolute;top:0;left:0;z-index:3;pointer-events:none}.vxe-upload--drag-line{width:1px;height:1px;border:2px solid transparent}.vxe-upload--drag-line[drag-pos=top]{border-top-color:var(--vxe-ui-font-primary-color)}.vxe-upload--drag-line[drag-pos=bottom]{border-bottom-color:var(--vxe-ui-font-primary-color)}.vxe-upload--drag-line[drag-pos=left]{border-left-color:var(--vxe-ui-font-primary-color)}.vxe-upload--drag-line[drag-pos=right]{border-right-color:var(--vxe-ui-font-primary-color)}.vxe-upload--drag-list-move{transition:transform .2s}.vxe-upload--more-popup{position:relative}.vxe-upload--more-popup .vxe-upload--file-list{max-height:none}.vxe-upload--more-popup .vxe-upload--file-action-btn{width:100%}.vxe-upload--more-popup .vxe-upload--file-action-btn>.vxe-button{width:100%;max-width:100%}.vxe-upload,.vxe-upload--more-popup{font-size:var(--vxe-ui-font-size-default)}.vxe-upload .vxe-upload--image-action-box,.vxe-upload .vxe-upload--image-item-box,.vxe-upload--more-popup .vxe-upload--image-action-box,.vxe-upload--more-popup .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-default);height:var(--vxe-ui-upload-image-wh-default)}.vxe-upload--more-popup.size--medium,.vxe-upload.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-upload--more-popup.size--medium .vxe-upload--image-action-box,.vxe-upload--more-popup.size--medium .vxe-upload--image-item-box,.vxe-upload.size--medium .vxe-upload--image-action-box,.vxe-upload.size--medium .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-medium);height:var(--vxe-ui-upload-image-wh-medium)}.vxe-upload--more-popup.size--small,.vxe-upload.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-upload--more-popup.size--small .vxe-upload--image-action-box,.vxe-upload--more-popup.size--small .vxe-upload--image-item-box,.vxe-upload.size--small .vxe-upload--image-action-box,.vxe-upload.size--small .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-small);height:var(--vxe-ui-upload-image-wh-small)}.vxe-upload--more-popup.size--mini,.vxe-upload.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-upload--more-popup.size--mini .vxe-upload--image-action-box,.vxe-upload--more-popup.size--mini .vxe-upload--image-item-box,.vxe-upload.size--mini .vxe-upload--image-action-box,.vxe-upload.size--mini .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-mini);height:var(--vxe-ui-upload-image-wh-mini)}.vxe-upload--image-more-list .vxe-upload--image-item-box{width:var(--vxe-ui-upload-image-wh-default);height:var(--vxe-ui-upload-image-wh-default)}
@@ -80,18 +80,24 @@
80
80
  .vxe-upload--file-item:hover {
81
81
  background-color: var(--vxe-ui-base-hover-background-color);
82
82
  }
83
- .vxe-upload--file-item:hover:not(.is--loading) .vxe-upload--file-item-name {
83
+ .vxe-upload--file-item:hover .vxe-upload--file-item-name {
84
84
  color: var(--vxe-ui-font-primary-color);
85
85
  }
86
86
  .vxe-upload--file-item:last-child {
87
87
  margin-bottom: 0;
88
88
  }
89
+ .vxe-upload--file-item.is--preview .vxe-upload--file-item-name {
90
+ cursor: pointer;
91
+ }
89
92
  .vxe-upload--file-item.is--loading {
90
93
  cursor: progress;
91
94
  color: var(--vxe-ui-input-placeholder-color);
92
95
  }
93
- .vxe-upload--file-item.is--preview .vxe-upload--file-item-name {
94
- cursor: pointer;
96
+ .vxe-upload--file-item.is--loading:hover .vxe-upload--file-item-name {
97
+ color: var(--vxe-ui-input-placeholder-color);
98
+ }
99
+ .vxe-upload--file-item.is--pending {
100
+ color: var(--vxe-ui-input-placeholder-color);
95
101
  }
96
102
 
97
103
  .vxe-upload--file-over-more {
@@ -122,7 +128,7 @@
122
128
  color: var(--vxe-ui-input-placeholder-color);
123
129
  }
124
130
 
125
- .vxe-upload--file-item-error {
131
+ .vxe-upload--file-item-rebtn {
126
132
  padding-right: 0.4em;
127
133
  color: var(--vxe-ui-status-error-color);
128
134
  text-decoration: none;
@@ -251,10 +257,10 @@
251
257
  border-color: var(--vxe-ui-input-border-color);
252
258
  }
253
259
 
254
- .vxe-upload--image-item:hover:not(.is--loading) .vxe-upload--image-item-img-wrapper {
255
- border-color: var(--vxe-ui-font-primary-color);
260
+ .vxe-upload--image-item.is--loading .vxe-upload--image-item-box {
261
+ cursor: progress;
256
262
  }
257
- .vxe-upload--image-item:hover:not(.is--loading) .vxe-upload--image-item-img-wrapper::after {
263
+ .vxe-upload--image-item:hover .vxe-upload--image-item-img-wrapper::after, .vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper::after, .vxe-upload--image-item.is--pending .vxe-upload--image-item-img-wrapper::after {
258
264
  content: "";
259
265
  position: absolute;
260
266
  top: 0;
@@ -262,10 +268,15 @@
262
268
  width: 100%;
263
269
  height: 100%;
264
270
  pointer-events: none;
271
+ }
272
+ .vxe-upload--image-item:hover .vxe-upload--image-item-img-wrapper::after {
265
273
  background-color: rgba(0, 0, 0, 0.1);
266
274
  }
267
- .vxe-upload--image-item.is--loading .vxe-upload--image-item-box {
268
- cursor: progress;
275
+ .vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper::after, .vxe-upload--image-item.is--pending .vxe-upload--image-item-img-wrapper::after {
276
+ background-color: rgba(0, 0, 0, 0.4);
277
+ }
278
+ .vxe-upload--image-item.is--error:hover .vxe-upload--image-item-img-wrapper::after, .vxe-upload--image-item.is--pending:hover .vxe-upload--image-item-img-wrapper::after {
279
+ background-color: rgba(0, 0, 0, 0.5);
269
280
  }
270
281
  .vxe-upload--image-item.is--error .vxe-upload--image-item-img-wrapper {
271
282
  border-color: var(--vxe-ui-status-error-color);
@@ -280,6 +291,10 @@
280
291
  .vxe-upload--image-item.is--circle .vxe-upload--image-item-img-wrapper::after {
281
292
  border-radius: 50%;
282
293
  }
294
+ .vxe-upload--image-item.is--circle .vxe-upload--image-item-loading,
295
+ .vxe-upload--image-item.is--circle .vxe-upload--image-item-rebtn {
296
+ border-radius: 50%;
297
+ }
283
298
 
284
299
  .vxe-upload--image-item-img-wrapper {
285
300
  display: flex;
@@ -308,13 +323,26 @@
308
323
  width: 100%;
309
324
  height: 100%;
310
325
  color: var(--vxe-ui-loading-color);
311
- background-color: var(--vxe-ui-loading-background-color);
326
+ background-color: rgba(0, 0, 0, 0.6);
312
327
  z-index: 1;
313
328
  -webkit-user-select: none;
314
329
  -moz-user-select: none;
315
330
  user-select: none;
316
331
  }
317
332
 
333
+ .vxe-upload--image-item-rebtn {
334
+ position: absolute;
335
+ display: flex;
336
+ flex-direction: row;
337
+ justify-content: center;
338
+ align-items: center;
339
+ top: 0;
340
+ left: 0;
341
+ width: 100%;
342
+ height: 100%;
343
+ background-color: rgba(0, 0, 0, 0.6);
344
+ }
345
+
318
346
  .vxe-upload--image-action-hint {
319
347
  font-size: 0.8em;
320
348
  word-break: break-all;
@@ -406,6 +434,13 @@
406
434
  .vxe-upload--more-popup .vxe-upload--file-list {
407
435
  max-height: none;
408
436
  }
437
+ .vxe-upload--more-popup .vxe-upload--file-action-btn {
438
+ width: 100%;
439
+ }
440
+ .vxe-upload--more-popup .vxe-upload--file-action-btn > .vxe-button {
441
+ width: 100%;
442
+ max-width: 100%;
443
+ }
409
444
 
410
445
  .vxe-upload,
411
446
  .vxe-upload--more-popup {