vxe-pc-ui 4.15.2 → 4.15.4
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/dist/all.esm.js +866 -257
- package/es/backtop/src/backtop.js +2 -1
- package/es/button/src/button.js +3 -2
- package/es/calendar/src/calendar.js +2 -1
- package/es/cascader/src/cascader.js +72 -29
- package/es/checkbox/src/group.js +5 -1
- package/es/date-panel/src/util.js +27 -16
- package/es/date-picker/src/date-picker.js +572 -74
- package/es/date-range-picker/src/date-range-picker.js +3 -2
- package/es/drawer/src/drawer.js +2 -0
- package/es/form/render/index.js +3 -2
- package/es/form/src/form.js +6 -5
- package/es/form/src/itemInfo.js +6 -5
- package/es/input/src/input.js +2 -1
- package/es/menu/src/menu.js +2 -1
- package/es/modal/src/modal.js +5 -2
- package/es/pager/src/pager.js +4 -3
- package/es/radio/src/group.js +5 -1
- package/es/select/src/select.js +25 -20
- package/es/splitter/src/splitter.js +7 -6
- package/es/table-select/src/table-select.js +21 -16
- package/es/tabs/src/tabs.js +4 -3
- package/es/textarea/src/textarea.js +2 -1
- package/es/tree/src/tree.js +3 -2
- package/es/tree-select/src/tree-select.js +16 -19
- package/es/ui/index.js +4 -1
- package/es/ui/src/log.js +14 -4
- package/es/upload/src/upload.js +12 -3
- package/lib/backtop/src/backtop.js +5 -2
- package/lib/backtop/src/backtop.min.js +1 -1
- package/lib/button/src/button.js +4 -1
- package/lib/button/src/button.min.js +1 -1
- package/lib/calendar/src/calendar.js +4 -1
- package/lib/calendar/src/calendar.min.js +1 -1
- package/lib/cascader/src/cascader.js +80 -30
- package/lib/cascader/src/cascader.min.js +1 -1
- package/lib/checkbox/src/group.js +5 -1
- package/lib/checkbox/src/group.min.js +1 -1
- package/lib/date-panel/src/util.js +37 -19
- package/lib/date-panel/src/util.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +620 -77
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +4 -1
- package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
- package/lib/drawer/src/drawer.js +2 -0
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/form/render/index.js +4 -1
- package/lib/form/render/index.min.js +1 -1
- package/lib/form/src/form.js +8 -4
- package/lib/form/src/form.min.js +1 -1
- package/lib/form/src/itemInfo.js +7 -4
- package/lib/form/src/itemInfo.min.js +1 -1
- package/lib/index.umd.js +941 -215
- package/lib/index.umd.min.js +1 -1
- package/lib/input/src/input.js +6 -3
- package/lib/input/src/input.min.js +1 -1
- package/lib/menu/src/menu.js +4 -1
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +8 -2
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/pager/src/pager.js +6 -2
- package/lib/pager/src/pager.min.js +1 -1
- package/lib/radio/src/group.js +5 -1
- package/lib/radio/src/group.min.js +1 -1
- package/lib/select/src/select.js +27 -20
- package/lib/select/src/select.min.js +1 -1
- package/lib/splitter/src/splitter.js +12 -8
- package/lib/splitter/src/splitter.min.js +1 -1
- package/lib/table-select/src/table-select.js +22 -15
- package/lib/table-select/src/table-select.min.js +1 -1
- package/lib/tabs/src/tabs.js +7 -3
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/textarea/src/textarea.js +4 -1
- package/lib/textarea/src/textarea.min.js +1 -1
- package/lib/tree/src/tree.js +7 -4
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +14 -10
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +4 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +16 -3
- package/lib/ui/src/log.min.js +1 -1
- package/lib/upload/src/upload.js +20 -3
- package/lib/upload/src/upload.min.js +1 -1
- package/package.json +1 -1
- package/packages/backtop/src/backtop.ts +3 -1
- package/packages/button/src/button.ts +4 -2
- package/packages/calendar/src/calendar.ts +3 -1
- package/packages/cascader/src/cascader.ts +71 -29
- package/packages/checkbox/src/group.ts +6 -2
- package/packages/date-panel/src/util.ts +28 -16
- package/packages/date-picker/src/date-picker.ts +583 -75
- package/packages/date-range-picker/src/date-range-picker.ts +4 -2
- package/packages/drawer/src/drawer.ts +2 -0
- package/packages/form/render/index.ts +4 -2
- package/packages/form/src/form.ts +7 -5
- package/packages/form/src/itemInfo.ts +7 -5
- package/packages/input/src/input.ts +3 -1
- package/packages/menu/src/menu.ts +3 -1
- package/packages/modal/src/modal.ts +6 -2
- package/packages/pager/src/pager.ts +5 -3
- package/packages/radio/src/group.ts +6 -2
- package/packages/select/src/select.ts +29 -22
- package/packages/splitter/src/splitter.ts +8 -6
- package/packages/table-select/src/table-select.ts +24 -17
- package/packages/tabs/src/tabs.ts +5 -3
- package/packages/textarea/src/textarea.ts +3 -1
- package/packages/tree/src/tree.ts +4 -2
- package/packages/tree-select/src/tree-select.ts +17 -19
- package/packages/ui/index.ts +3 -0
- package/packages/ui/src/log.ts +16 -4
- package/packages/upload/src/upload.ts +14 -3
- package/types/components/cascader.d.ts +4 -0
- package/types/components/date-picker.d.ts +14 -6
- package/types/components/drawer.d.ts +2 -0
- package/types/components/modal.d.ts +2 -0
- package/types/components/upload.d.ts +28 -1
- /package/es/icon/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/es/icon/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
- /package/es/icon/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/es/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/es/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
- /package/es/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
- /package/lib/icon/style/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
- /package/lib/{iconfont.1781753592499.ttf → iconfont.1781876596706.ttf} +0 -0
- /package/lib/{iconfont.1781753592499.woff → iconfont.1781876596706.woff} +0 -0
- /package/lib/{iconfont.1781753592499.woff2 → iconfont.1781876596706.woff2} +0 -0
package/lib/upload/src/upload.js
CHANGED
|
@@ -14,6 +14,10 @@ var _dom = require("../../ui/src/dom");
|
|
|
14
14
|
var _util = require("./util");
|
|
15
15
|
var _button = _interopRequireDefault(require("../../button/src/button"));
|
|
16
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
const {
|
|
18
|
+
warnLog,
|
|
19
|
+
errLog
|
|
20
|
+
} = (0, _log.createComponentLog)('upload');
|
|
17
21
|
function createReactData() {
|
|
18
22
|
return {
|
|
19
23
|
isDragUploadStatus: false,
|
|
@@ -214,7 +218,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
214
218
|
default: () => (0, _ui.getConfig)().upload.size || (0, _ui.getConfig)().size
|
|
215
219
|
}
|
|
216
220
|
},
|
|
217
|
-
emits: ['update:modelValue', 'add', 'remove', 'remove-fail', 'download', 'download-fail', 'upload-success', 'upload-error', 'sort-dragend', 'more-visible'],
|
|
221
|
+
emits: ['update:modelValue', 'add', 'remove', 'remove-fail', 'download', 'download-fail', 'upload-start', 'upload-success', 'upload-error', 'upload-end', 'upload-queue-start', 'upload-queue-end', 'sort-dragend', 'more-visible'],
|
|
218
222
|
setup(props, context) {
|
|
219
223
|
const {
|
|
220
224
|
emit,
|
|
@@ -593,6 +597,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
593
597
|
const fileKey = getFieldKey(item);
|
|
594
598
|
const uploadFn = props.uploadMethod || (0, _ui.getConfig)().upload.uploadMethod;
|
|
595
599
|
if (uploadFn) {
|
|
600
|
+
dispatchEvent('upload-start', {
|
|
601
|
+
option: item
|
|
602
|
+
}, null);
|
|
596
603
|
return Promise.resolve(uploadFn({
|
|
597
604
|
$upload: $xeUpload,
|
|
598
605
|
file,
|
|
@@ -646,6 +653,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
646
653
|
if (cacheItem) {
|
|
647
654
|
cacheItem.loading = false;
|
|
648
655
|
}
|
|
656
|
+
dispatchEvent('upload-end', {
|
|
657
|
+
option: item
|
|
658
|
+
}, null);
|
|
649
659
|
});
|
|
650
660
|
} else {
|
|
651
661
|
const {
|
|
@@ -772,6 +782,9 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
772
782
|
}
|
|
773
783
|
}
|
|
774
784
|
}
|
|
785
|
+
dispatchEvent('upload-queue-start', {
|
|
786
|
+
files: selectFiles
|
|
787
|
+
}, evnt);
|
|
775
788
|
const cacheMaps = Object.assign({}, reactData.fileCacheMaps);
|
|
776
789
|
const newFileList = multiple ? fileList : [];
|
|
777
790
|
const uploadPromiseRests = [];
|
|
@@ -815,6 +828,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
815
828
|
});
|
|
816
829
|
Promise.all(urlMode ? uploadPromiseRests : []).then(() => {
|
|
817
830
|
const restFileList = reactData.fileList;
|
|
831
|
+
dispatchEvent('upload-queue-end', {
|
|
832
|
+
options: restFileList,
|
|
833
|
+
files: selectFiles
|
|
834
|
+
}, evnt);
|
|
818
835
|
handleChange(restFileList);
|
|
819
836
|
// 自动更新校验状态
|
|
820
837
|
if ($xeForm && formItemInfo) {
|
|
@@ -1935,10 +1952,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
1935
1952
|
});
|
|
1936
1953
|
(0, _vue.onMounted)(() => {
|
|
1937
1954
|
if (props.multiple && props.singleMode) {
|
|
1938
|
-
|
|
1955
|
+
errLog('vxe.error.errConflicts', ['multiple', 'single-mode']);
|
|
1939
1956
|
}
|
|
1940
1957
|
if (props.imageStyle) {
|
|
1941
|
-
|
|
1958
|
+
warnLog('vxe.error.delProp', ['image-style', 'image-config']);
|
|
1942
1959
|
}
|
|
1943
1960
|
if (props.dragSort) {
|
|
1944
1961
|
(0, _dom.initTpImg)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log"),_dom=require("../../ui/src/dom"),_util=require("./util"),_button=_interopRequireDefault(require("../../button/src/button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function createReactData(){return{isDragUploadStatus:!1,showMorePopup:!1,isActivated:!1,fileList:[],fileCacheMaps:{},isDragMove:!1,dragIndex:-1,dragTipText:""}}function createInternalData(){return{moreId:_xeUtils.default.uniqueId("upload"),imagePreviewTypes:["jpg","jpeg","png","gif"],prevDragIndex:-1}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeUpload",props:{modelValue:[Array,String,Object],showList:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showList},moreConfig:Object,readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},autoSubmit:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.autoSubmit},mode:{type:String,default:()=>(0,_ui.getConfig)().upload.mode},imageTypes:{type:Array,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageTypes,!0)},imageConfig:{type:Object,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageConfig,!0)},imageStyle:{type:Object,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageStyle,!0)},fileTypes:{type:Array,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.fileTypes,!0)},dragSort:Boolean,dragToUpload:{type:Boolean,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.dragToUpload,!0)},dragPlaceholder:{type:String,default:()=>(0,_ui.getConfig)().upload.dragPlaceholder},pasteToUpload:{type:Boolean,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.pasteToUpload,!0)},keyField:String,singleMode:Boolean,urlMode:Boolean,urlArgs:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.urlArgs},multiple:Boolean,limitSize:{type:[String,Number],default:()=>(0,_ui.getConfig)().upload.limitSize},showLimitSize:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showLimitSize},limitSizeText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.limitSizeText},limitCount:{type:[String,Number],default:()=>(0,_ui.getConfig)().upload.limitCount},showLimitCount:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showLimitCount},limitCountText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.limitCountText},nameField:{type:String,default:()=>(0,_ui.getConfig)().upload.nameField},typeField:{type:String,default:()=>(0,_ui.getConfig)().upload.typeField},urlField:{type:String,default:()=>(0,_ui.getConfig)().upload.urlField},sizeField:{type:String,default:()=>(0,_ui.getConfig)().upload.sizeField},showErrorStatus:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showErrorStatus},showProgress:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showProgress},progressText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.progressText},previewImageConfig:Object,showSubmitButton:Boolean,autoHiddenButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.autoHiddenButton},showUploadButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showUploadButton},buttonText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.buttonText},buttonIcon:{type:String,default:()=>(0,_ui.getConfig)().upload.buttonIcon},showButtonText:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showButtonText},showButtonIcon:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showButtonIcon},showRemoveButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showRemoveButton},showDownloadButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showDownloadButton},showPreview:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showPreview},showTip:{type:Boolean,default:()=>null},maxSimultaneousUploads:{type:Number,default:()=>(0,_ui.getConfig)().upload.maxSimultaneousUploads},tipText:[String,Number,Function],hintText:String,previewMethod:Function,beforeSelectMethod:Function,uploadMethod:Function,beforeRemoveMethod:Function,removeMethod:Function,beforeDownloadMethod:Function,downloadMethod:Function,getUrlMethod:Function,getThumbnailUrlMethod:Function,size:{type:String,default:()=>(0,_ui.getConfig)().upload.size||(0,_ui.getConfig)().size}},emits:["update:modelValue","add","remove","remove-fail","download","download-fail","upload-success","upload-error","sort-dragend","more-visible"],setup(T,e){let{emit:i,slots:D}=e,U=(0,_vue.inject)("$xeForm",null),C=(0,_vue.inject)("xeFormItemInfo",null),l=(0,_vue.inject)("$xeTable",null);var t=_xeUtils.default.uniqueId();let G=(0,_ui.useSize)(T).computeSize,m=(0,_vue.ref)(),_=(0,_vue.ref)(),c=(0,_vue.ref)(),f=(0,_vue.ref)(),B=(0,_vue.reactive)(createReactData()),r=createInternalData(),a={refElem:m},L=(0,_vue.computed)(()=>{var e=T.readonly;return null===e?!!U&&U.props.readonly:e}),P=(0,_vue.computed)(()=>{var e=T.disabled;return null===e?!!U&&U.props.disabled:e}),E=(0,_vue.computed)(()=>T.keyField||"_X_KEY"),h=(0,_vue.computed)(()=>"image"===T.mode),V=(0,_vue.computed)(()=>T.nameField||"name"),F=(0,_vue.computed)(()=>T.typeField||"type"),M=(0,_vue.computed)(()=>T.urlField||"url"),S=(0,_vue.computed)(()=>T.sizeField||"size"),H=(0,_vue.computed)(()=>1024*_xeUtils.default.toNumber(T.limitSize)*1024),Y=(0,_vue.computed)(()=>T.multiple?_xeUtils.default.toNumber(T.limitCount):1),Q=(0,_vue.computed)(()=>{var e=T.showDownloadButton;return Object.assign({showDownloadButton:e},(0,_ui.getConfig)().upload.previewImageConfig,T.previewImageConfig)}),X=(0,_vue.computed)(()=>{var e=T.multiple,t=B.fileList,o=Y.value;return e?!o||t.length>=o:1<=t.length}),W=(0,_vue.computed)(()=>{var e=_xeUtils.default.toNumber(T.limitSize);return e?1048576<e?e/1048576+"T":1024<e?e/1024+"G":e+"M":""}),K=(0,_vue.computed)(()=>{var{showTip:e,tipText:t}=T;return _xeUtils.default.isBoolean(e)||(e=(0,_ui.getConfig)().upload.showTip,_xeUtils.default.isBoolean(e))?e:!!t}),J=(0,_vue.computed)(()=>{var{limitSize:e,fileTypes:t,multiple:o,limitCount:i}=T,l=T.tipText||T.hintText,a=h.value,u=W.value;return _xeUtils.default.isString(l)?l:_xeUtils.default.isFunction(l)?""+l({}):(l=[],a?(o&&i&&l.push((0,_ui.getI18n)("vxe.upload.imgCountHint",[i])),e&&u&&l.push((0,_ui.getI18n)("vxe.upload.imgSizeHint",[u]))):(t&&t.length&&l.push((0,_ui.getI18n)("vxe.upload.fileTypeHint",[t.join("/")])),e&&u&&l.push((0,_ui.getI18n)("vxe.upload.fileSizeHint",[u])),o&&i&&l.push((0,_ui.getI18n)("vxe.upload.fileCountHint",[i]))),l.join((0,_ui.getI18n)("vxe.base.comma")))}),u=(0,_vue.computed)(()=>Object.assign({},T.imageConfig||T.imageStyle)),Z=(0,_vue.computed)(()=>{var{width:e,height:t}=u.value,o={};return e&&(o.width=(0,_dom.toCssUnit)(e)),t&&(o.height=(0,_dom.toCssUnit)(t)),o}),ee=(0,_vue.computed)(()=>Object.assign({showMoreButton:!0},T.moreConfig)),n={computeUrlProp:M},O={xID:t,props:T,context:e,reactData:B,internalData:r,getRefMaps:()=>a,getComputeMaps:()=>n},A=()=>_xeUtils.default.uniqueId(),N=e=>e[E.value],d=()=>{var{modelValue:e,multiple:t}=T,o=L.value;let l=E.value,a=V.value,u=F.value,n=M.value,r=S.value;e=e?(e?_xeUtils.default.isArray(e)?e:[e]:[]).map(t=>{if(!t||_xeUtils.default.isString(t)){var o=""+(t||""),i=_xeUtils.default.parseUrl(t);let e=(i?i.searchQuery[a]:"")||decodeURIComponent(""+(o||"")).split("/").pop()||"";return{[a]:e,[u]:(i?i.searchQuery[u]:"")||z(e),[n]:o,[r]:_xeUtils.default.toNumber(i?i.searchQuery[r]:0)||0,[l]:A()}}let e=t[a]||"";return t[a]=e,t[u]=t[u]||z(e),t[n]=t[n]||"",t[r]=t[r]||0,t[l]=t[l]||A(),t}):[];B.fileList=o||t?e:e.slice(0,1)},z=e=>{var t=e.lastIndexOf(".");return 0<t?e.substring(t+1).toLowerCase():""},j=(e,t,o)=>{i(e,(0,_ui.createEvent)(o,{$upload:O},t))},s=e=>{i("update:modelValue",e)},k=e=>{let{singleMode:t,urlMode:o,urlArgs:i}=T,l=M.value,a=V.value,u=e?e.slice(0):[];o&&(u=u.map(e=>{var t=e[l];if(t&&i){var o=_xeUtils.default.parseUrl(t);if(!o.searchQuery[a]&&-1===t.indexOf("blob:"))return""+t+(-1===t.indexOf("?")?"?":"&")+a+"="+encodeURIComponent(e[a]||"")}return t})),s(t?u[0]||null:u)},R=e=>{var t=T.getUrlMethod||(0,_ui.getConfig)().upload.getUrlMethod,o=M.value;return t?t({$upload:O,option:e}):e[o]},te=t=>{var{imageTypes:e,showDownloadButton:o}=T;let i=F.value;var l=Q.value;let a=T.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;var u=r.imagePreviewTypes;u.concat(e||[]).some(e=>(""+e).toLowerCase()===(""+t[i]).toLowerCase())&&_ui.VxeUI.previewImage&&_ui.VxeUI.previewImage(Object.assign(Object.assign({},l),{urlList:[R(t)],showDownloadButton:o,beforeDownloadMethod:a?()=>a({$upload:O,option:t}):void 0}))},$=(i,e)=>{let l=T.showErrorStatus,a=N(i);var t=T.uploadMethod||(0,_ui.getConfig)().upload.uploadMethod;return t?Promise.resolve(t({$upload:O,file:e,option:i,updateProgress(e){var t=B.fileCacheMaps,t=t[N(i)];t&&(t.percent=Math.max(0,Math.min(99,_xeUtils.default.toNumber(e))))}})).then(e=>{var t=B.fileCacheMaps,t=t[a];t&&(t.percent=100,t.status="success"),Object.assign(i,e),j("upload-success",{option:i,data:e},null)}).catch(e=>{var t=B.fileCacheMaps,o=t[a];o&&(o.status="error"),l?Object.assign(i,e):(B.fileList=B.fileList.filter(e=>N(e)!==a),delete t[a]),j("upload-error",{option:i,data:e},null)}).finally(()=>{var e=B.fileCacheMaps,e=e[a];e&&(e.loading=!1)}):(t=B.fileCacheMaps,(e=t[a])&&(e.loading=!1),Promise.resolve())},oe=e=>{let{uploadMethod:t,urlMode:o}=T;var i,l=B.fileCacheMaps,l=l[N(e)];(t||(0,_ui.getConfig)().upload.uploadMethod)&&l&&(i=l.file,l.loading=!0,l.status="pending",l.percent=0,$(e,i).then(()=>{o&&k(B.fileList)}))},p=(t,o)=>{let{multiple:e,urlMode:i,showLimitSize:l,limitSizeText:a,showLimitCount:u,limitCountText:n,autoSubmit:r}=T;var d=B.fileList;let s=T.beforeSelectMethod||(0,_ui.getConfig)().upload.beforeSelectMethod,p=T.uploadMethod||(0,_ui.getConfig)().upload.uploadMethod,v=E.value,g=V.value,m=F.value,_=M.value,c=S.value;var f=H.value;let h=Y.value;var x=W.value;let w=t;if(e&&h){if(u&&d.length>=h)return void(_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:n?""+(_xeUtils.default.isFunction(n)?n({maxCount:h}):n):(0,_ui.getI18n)("vxe.upload.overCountErr",[h])}));let t=w.length-(h-d.length);if(u&&0<t){let e=w.slice(h-d.length);n?_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:""+(_xeUtils.default.isFunction(n)?n({maxCount:h}):n)}):_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",width:null,slots:{default(){return(0,_vue.h)("div",{class:"vxe-upload--file-message-over-error"},[(0,_vue.h)("div",{},(0,_ui.getI18n)("vxe.upload.overCountExtraErr",[h,t])),(0,_vue.h)("div",{class:"vxe-upload--file-message-over-extra"},e.map((e,t)=>(0,_vue.h)("div",{key:t,class:"vxe-upload--file-message-over-extra-item"},e.name)))])}}})}w=w.slice(0,h-d.length)}if(l&&f)for(let e=0;e<t.length;e++)if(t[0].size>f)return void(_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:a?""+(_xeUtils.default.isFunction(a)?a({maxSize:f}):a):(0,_ui.getI18n)("vxe.upload.overSizeErr",[x])}));let y=Object.assign({},B.fileCacheMaps),b=e?d:[],I=[];w.forEach(e=>{var t=e.name,o=A(),t={[g]:t,[m]:z(t),[c]:e.size,[_]:URL.createObjectURL(e),[v]:o},o=(p&&(y[o]={file:e,loading:!!r,status:"pending",percent:0}),(0,_vue.reactive)(t));s&&!s({$upload:O,file:e})||(p&&r&&I.push($(o,e)),b.push(o))}),B.fileList=b,B.fileCacheMaps=y,b.forEach(e=>{j("add",{option:e},o)}),Promise.all(i?I:[]).then(()=>{var e=B.fileList;k(e),U&&C&&U.triggerItemEvent(o,C.itemConfig.field,e)})},v=t=>{var{multiple:e,imageTypes:o,fileTypes:i}=T,l=P.value,a=h.value;return l?Promise.resolve({status:!1,files:[],file:null}):(0,_util.readLocalFile)({multiple:e,types:a?o:i}).then(e=>(p(e.files,t),e))},ie=e=>{v(e).catch(()=>{})},g=(e,t,o)=>{var i=B.fileList;i.splice(o,1),k(i),U&&C&&U.triggerItemEvent(e||{type:"remove"},C.itemConfig.field,i),e&&j("remove",{option:t},e)},q=(t,o,i)=>{var e=T.beforeRemoveMethod||(0,_ui.getConfig)().upload.beforeRemoveMethod;let l=T.removeMethod||(0,_ui.getConfig)().upload.removeMethod;return Promise.resolve(!e||e({$upload:O,option:o})).then(e=>(e?l?Promise.resolve(l({$upload:O,option:o})).then(()=>{g(t,o,i)}).catch(e=>e):g(t,o,i):t&&j("remove-fail",{option:o},t),e))},le=(e,t)=>{j("download",{option:t},e)},ae=e=>{var t,o,i,l=e.currentTarget,{clientX:e,clientY:a}=e;l&&({x:l,y:t,height:o,width:i}=l.getBoundingClientRect(),e<l||l+i<e||a<t||t+o<a)&&(B.isDragUploadStatus=!1)},ue=e=>{var t=e.dataTransfer;t&&(t=t.items,t)&&t.length&&(e.preventDefault(),B.isDragUploadStatus=!0)},ne=(e,t)=>{let{imageTypes:i,fileTypes:l}=T;var a=r.imagePreviewTypes;if(h.value){let o=a.concat(i&&i.length?i:[]);t=t.filter(e=>{let t=(""+(e.type.split("/")[1]||"")).toLowerCase();return!!o.some(e=>(""+e).toLowerCase()===t)})}else if(l&&l.length){let o=[];if(t.forEach(e=>{let t=z(e.name);l.some(e=>(""+e).toLowerCase()===t)||o.push(t)}),o.length)return void(_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:(0,_ui.getI18n)("vxe.error.notType",[o.join(", ")]),status:"error"}))}t.length?p(t,e):_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:(0,_ui.getI18n)("vxe.upload.uploadTypeErr")})},re=e=>{var t=e.dataTransfer;t&&(t=t.items,t)&&t.length&&(e.preventDefault(),(t=de(t)).length)&&ne(e,t),B.isDragUploadStatus=!1},de=e=>{let t=[];return _xeUtils.default.arrayEach(e,e=>{e=e.getAsFile();e&&t.push(e)}),t},x=e=>{let v=L.value,g=h.value;e=e.$event;_ui.VxeUI.modal&&(_ui.VxeUI.modal.open({id:r.moreId,title:v?(0,_ui.getI18n)("vxe.upload.morePopup.readTitle"):(0,_ui.getI18n)("vxe.upload.morePopup."+(g?"imageTitle":"fileTitle")),width:660,height:500,escClosable:!0,showMaximize:!0,resize:!0,maskClosable:!0,slots:{default(){var{showErrorStatus:e,dragToUpload:t,dragSort:o,dragPlaceholder:i}=T,{isActivated:l,isDragMove:a,isDragUploadStatus:u,dragIndex:n}=B;let r=B.fileList;var d=P.value,s=D.moreContent||D["more-content"],p={};return t&&-1===n&&(p.onDragover=ue,p.onDragleave=ae,p.onDrop=re),(0,_vue.h)("div",Object.assign({ref:_,class:["vxe-upload--more-popup",{"is--readonly":v,"is--disabled":d,"is--active":l,"show--error":e,"is--drag":u}]},p),s?(0,_vn.getSlotVNs)(s({options:r})):[g?o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(a?"":"-disabled"),tag:"div",class:"vxe-upload--image-more-list"},{default:()=>b(r,!0).concat(I(!0))}):(0,_vue.h)("div",{class:"vxe-upload--image-more-list"},b(r,!0).concat(I(!0))):(0,_vue.h)("div",{class:"vxe-upload--file-more-list"},[y(!0),o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(a?"":"-disabled"),tag:"div",class:"vxe-upload--file-list"},{default:()=>w(r,!1)}):(0,_vue.h)("div",{class:"vxe-upload--file-list"},w(r,!0))]),o?(0,_vue.h)("div",{ref:f,class:"vxe-upload--drag-line"}):(0,_ui.renderEmptyElement)(O),u?(0,_vue.h)("div",{class:"vxe-upload--drag-placeholder"},i||(0,_ui.getI18n)("vxe.upload.dragPlaceholder")):(0,_ui.renderEmptyElement)(O)])}},onShow(){B.showMorePopup=!0},onHide({$event:e}){B.showMorePopup=!1,e&&j("more-visible",{visible:!1},e)}}),e)&&j("more-visible",{visible:!0},e)},se=(e,t,o)=>{var i,l=B.showMorePopup,a=m.value,u=_.value,u=l?u:a;u&&(a=u.getBoundingClientRect(),u=c.value,i=f.value,l=l?i:u)&&(i=t.getBoundingClientRect(),l.style.display="block",l.style.top=Math.max(1,i.y-a.y)+"px",l.style.left=Math.max(1,i.x-a.x)+"px",l.style.height=i.height+"px",l.style.width=i.width-1+"px",l.setAttribute("drag-pos",o))},pe=()=>{var e=c.value,t=f.value;e&&(e.style.display=""),t&&(t.style.display="")},ve=e=>{e.stopPropagation(),e.dataTransfer&&e.dataTransfer.setDragImage((0,_dom.getTpImg)(),0,0);let t=e.currentTarget;e=t.parentElement,e=_xeUtils.default.findIndexOf(Array.from(e.children),e=>t===e);B.isDragMove=!0,B.dragIndex=e,setTimeout(()=>{B.isDragMove=!1},500)},ge=o=>{o.stopPropagation(),o.preventDefault();var i=B.dragIndex;if(-1!==i){var l=h.value;let t=o.currentTarget;var a=t.parentElement,a=_xeUtils.default.findIndexOf(Array.from(a.children),e=>t===e);let e="";e=l?o.clientX-t.getBoundingClientRect().x<t.clientWidth/2?"left":"right":o.clientY-t.getBoundingClientRect().y<t.clientHeight/2?"top":"bottom",i===a?se(o,t,e):(se(o,t,e),r.prevDragIndex=a,r.prevDragPos=e)}},me=e=>{var{fileList:t,dragIndex:o}=B,{prevDragIndex:i,prevDragPos:l}=r,a="bottom"===l||"right"===l?1:0,u=t[o];let n=t[i];u&&n&&(t.splice(o,1),i=_xeUtils.default.findIndexOf(t,e=>n===e)+a,t.splice(i,0,u),j("sort-dragend",{oldItem:u,newItem:n,dragPos:l,offsetIndex:a,_index:{newIndex:i,oldIndex:o}},e)),pe(),B.dragIndex=-1},_e=e=>{l&&e.stopPropagation(),B.isActivated=!0},ce=e=>{var t=T.pasteToUpload,o=B.isActivated;o&&t&&(o=e.clipboardData||e.originalEvent.clipboardData)&&(t=o.items,t)&&(o=de(t)).length&&(e.preventDefault(),ne(e,o))},fe=e=>{var t=m.value,o=_.value;let i=(0,_dom.getEventTargetNode)(e,t).flag;!i&&o&&(o=(t=o.parentElement||o)&&t.parentElement,i=(0,_dom.getEventTargetNode)(e,o).flag),B.isActivated=i},he=()=>{B.isActivated=!1},xe=o=>{var e=B.fileList;let i=M.value,l=[];return _xeUtils.default.lastEach(e,(t,e)=>{l.push(q(o,t,e).then(e=>({url:t[i],status:e})))}),Promise.all(l)},we=(o,e)=>{let i=B.fileList,l=M.value;e=_xeUtils.default.isArray(e)?e:[e];let a=[];return e.forEach(e=>{if(e){let t=_xeUtils.default.isString(e)?e:e[l];e=_xeUtils.default.findIndexOf(i,e=>e[l]===t);-1<e&&a.push(q(o,i[e],e).then(e=>({url:t,status:e})))}}),Promise.all(a)};t={dispatchEvent:j,choose(){return v(null)},clear(){return xe(null)},clearByEvent(e){return xe(e)},getPendingFiles(){let{fileList:e,fileCacheMaps:t}=B,o=[];return e.forEach(e=>{e=N(e),e=t[e];e&&"pending"===e.status&&o.push(e.file)}),o},submit(i){var e=T.maxSimultaneousUploads,e=_xeUtils.default.toNumber(e||1)||1;let{fileList:t,fileCacheMaps:l}=B,o=t.filter(e=>{e=N(e),e=l[e];return e&&("pending"===e.status||i&&"error"===e.status)}),a=e=>{var t=N(e),t=l[t];if(t){var o=t.file;if(o&&("pending"===t.status||i&&"error"===t.status))return t.loading=!0,t.percent=0,$(e,o).then(u)}return u()},u=()=>{var e;return o.length?(e=o[0],o.splice(0,1),a(e).then(u)):Promise.resolve()};return Promise.all(o.splice(0,e).map(a)).then(()=>{})},getMoreVisible(){return B.showMorePopup},openMore(){return x({$event:new Event("click")}),(0,_vue.nextTick)()},openMoreByEvent(e){return x({$event:e}),(0,_vue.nextTick)()},closeMore(){return _ui.VxeUI.modal&&_ui.VxeUI.modal.close(r.moreId),(0,_vue.nextTick)()},remove(e){return we(null,e)},removeByEvent(e,t){return we(e,t)}},e={removeFileEvent:q};Object.assign(O,t,e);let w=(e,r)=>{let{showRemoveButton:d,showDownloadButton:s,showProgress:p,progressText:v,showPreview:g,showErrorStatus:m,dragSort:_,autoSubmit:c,showSubmitButton:f}=T,{fileList:h,fileCacheMaps:x}=B,w=P.value,y=L.value,b=V.value,I=F.value,U=D.option,C=D.action,E=D.corner,M=D.name,S={};return _&&1<e.length&&(S.onDragstart=ve,S.onDragover=ge,S.onDragend=me),e.map((i,t)=>{var e=N(i),o=x[e];let l=!1,a=!1,u=!1;var n=""+(i[b]||"");return o&&(l=o.loading,a="error"===o.status,u="pending"===o.status),(0,_vue.h)("div",Object.assign({key:_?e:t,class:["vxe-upload--file-item",{"is--preview":g,"is--loading":l,"is--pending":u,"is--error":a}],fileid:e,draggable:!!_||null},S),U?(0,_vn.getSlotVNs)(U({option:i,isMoreView:r,options:h})):[(0,_vue.h)("div",{class:"vxe-upload--file-item-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)()["UPLOAD_FILE_TYPE_"+(""+i[I]).toLocaleUpperCase()]||(0,_ui.getIcon)().UPLOAD_FILE_TYPE_DEFAULT})]),(0,_vue.h)("div",{class:"vxe-upload--file-item-name",title:n,onClick(e){var t,o;l||a||(t=i,o=T.previewMethod||(0,_ui.getConfig)().upload.previewMethod,T.showPreview&&(o?o({$upload:O,option:t}):te(t)))}},M?(0,_vn.getSlotVNs)(M({option:i,isMoreView:r,options:h})):n),l?(0,_vue.h)("div",{class:"vxe-upload--file-item-loading-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_LOADING})]):(0,_ui.renderEmptyElement)(O),p&&l&&o?(0,_vue.h)("div",{class:"vxe-upload--file-item-loading-text"},v?_xeUtils.default.toFormatString(""+(_xeUtils.default.isFunction(v)?v({}):v),{percent:o.percent}):(0,_ui.getI18n)("vxe.upload.uploadProgress",[o.percent])):(0,_ui.renderEmptyElement)(O),!l&&(a&&m||u&&f&&!c)?(0,_vue.h)("div",{class:"vxe-upload--file-item-rebtn"},[(0,_vue.h)(_button.default,{icon:a?(0,_ui.getIcon)().UPLOAD_IMAGE_RE_UPLOAD:(0,_ui.getIcon)().UPLOAD_IMAGE_UPLOAD,mode:"text",status:"primary",content:a?(0,_ui.getI18n)("vxe.upload.reUpload"):(0,_ui.getI18n)("vxe.upload.manualUpload"),onClick(){oe(i)}})]):(0,_ui.renderEmptyElement)(O),(0,_vue.h)("div",{class:"vxe-upload--file-item-btn-wrapper"},C?(0,_vn.getSlotVNs)(C({option:i,isMoreView:r,options:h,readonly:y})):[E?(0,_vue.h)("div",{class:"vxe-upload--file-item-action"},(0,_vn.getSlotVNs)(E({option:i,isMoreView:r,options:h,readonly:y}))):(0,_ui.renderEmptyElement)(O),!s||l||u?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--file-item-download-btn",onClick(e){((t,o)=>{var e=T.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;let i=T.downloadMethod||(0,_ui.getConfig)().upload.downloadMethod;Promise.resolve(!e||e({$upload:O,option:o})).then(e=>{e?i?Promise.resolve(i({$upload:O,option:o})).then(()=>{le(t,o)}).catch(e=>e):le(t,o):j("download-fail",{option:o},t)})})(e,i)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_FILE_DOWNLOAD})]),!d||y||w||l?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--file-item-remove-btn",onClick(e){q(e,i,t)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_FILE_REMOVE})])])])})},y=e=>{var{showUploadButton:t,buttonText:o,buttonIcon:i,showButtonText:l,showButtonIcon:a,autoHiddenButton:u}=T,n=B.fileList,r=P.value,d=L.value,s=K.value,p=J.value,v=X.value,g=D.default,m=D.tip||D.hint;return d||!t?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--file-action"},[u&&v?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--file-action-btn",onClick:ie},g?(0,_vn.getSlotVNs)(g({isMoreView:e,options:n,$upload:O})):[(0,_vue.h)(_button.default,{class:"vxe-upload--file-action-button",content:e||l?o?""+(_xeUtils.default.isFunction(o)?o({}):o):(0,_ui.getI18n)("vxe.upload.fileBtnText"):"",icon:a?i||(0,_ui.getIcon)().UPLOAD_FILE_ADD:"",disabled:r})]),s&&(p||m)?(0,_vue.h)("div",{class:"vxe-upload--file-action-tip"},m?(0,_vn.getSlotVNs)(m({isMoreView:e,options:n,$upload:O})):""+p):(0,_ui.renderEmptyElement)(O)])},b=(e,n)=>{let{showRemoveButton:r,showProgress:d,progressText:s,showPreview:p,showErrorStatus:v,dragSort:g,autoSubmit:m,showSubmitButton:_}=T,{fileList:c,fileCacheMaps:f}=B,h=P.value,x=L.value,w=u.value,y=Z.value,b=D.option,I=D.action,U=D.corner,C={onMousedown:_e};return g&&1<e.length&&(C.onDragstart=ve,C.onDragover=ge,C.onDragend=me),e.map((t,o)=>{var e=N(t),i=f[e];let l=!1,a=!1,u=!1;return i&&(l=i.loading,a="error"===i.status,u="pending"===i.status),(0,_vue.h)("div",Object.assign({key:g?e:o,class:["vxe-upload--image-item",{"is--preview":p,"is--circle":w.circle,"is--loading":l,"is--pending":u,"is--error":a}],fileid:e,draggable:!!g||null},C),b?(0,_vn.getSlotVNs)(b({option:t,isMoreView:n,options:c})):[(0,_vue.h)("div",{class:"vxe-upload--image-item-box",style:n?null:y,onClick(e){l||a||((e,t)=>{var o=T.showDownloadButton;let i=B.fileList;var l=Q.value,a=T.previewMethod||(0,_ui.getConfig)().upload.previewMethod;let u=T.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;T.showPreview&&(a?a({$upload:O,option:e}):_ui.VxeUI.previewImage&&_ui.VxeUI.previewImage(Object.assign(Object.assign({},l),{urlList:i.map(e=>R(e)),activeIndex:t,showDownloadButton:o,beforeDownloadMethod:u?({index:e})=>u({$upload:O,option:i[e]}):void 0})))})(t,o)}},[l&&i?(0,_vue.h)("div",{class:"vxe-upload--image-item-loading"},[(0,_vue.h)("div",{class:"vxe-upload--image-item-loading-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_LOADING})]),d?(0,_vue.h)("div",{class:"vxe-upload--image-item-loading-text"},s?_xeUtils.default.toFormatString(""+(_xeUtils.default.isFunction(s)?s({}):s),{percent:i.percent}):(0,_ui.getI18n)("vxe.upload.uploadProgress",[i.percent])):(0,_ui.renderEmptyElement)(O)]):(0,_ui.renderEmptyElement)(O),(0,_vue.h)("div",{class:"vxe-upload--image-item-img-wrapper",title:(0,_ui.getI18n)("vxe.upload.viewItemTitle")},[(0,_vue.h)("img",{class:"vxe-upload--image-item-img",src:(e=t,(i=T.getThumbnailUrlMethod||(0,_ui.getConfig)().upload.getThumbnailUrlMethod)?i({$upload:O,option:e}):R(e))})]),!l&&(a&&v||u&&_&&!m)?(0,_vue.h)("div",{class:"vxe-upload--image-item-rebtn"},[(0,_vue.h)(_button.default,{icon:a?(0,_ui.getIcon)().UPLOAD_IMAGE_RE_UPLOAD:(0,_ui.getIcon)().UPLOAD_IMAGE_UPLOAD,mode:"text",status:"primary",content:a?(0,_ui.getI18n)("vxe.upload.reUpload"):(0,_ui.getI18n)("vxe.upload.manualUpload"),onClick(){oe(t)}})]):(0,_ui.renderEmptyElement)(O),(0,_vue.h)("div",{class:"vxe-upload--image-item-btn-wrapper",onClick(e){e.stopPropagation()}},I?(0,_vn.getSlotVNs)(I({option:t,isMoreView:n,options:c,readonly:x})):[U?(0,_vue.h)("div",{class:"vxe-upload--file-item-action"},(0,_vn.getSlotVNs)(U({option:t,isMoreView:n,options:c,readonly:x}))):(0,_ui.renderEmptyElement)(O),!r||x||h||l?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--image-item-remove-btn",onClick(e){e.stopPropagation(),q(e,t,o)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_IMAGE_REMOVE})])])])])})},I=e=>{var{showUploadButton:t,buttonText:o,buttonIcon:i,showButtonText:l,showButtonIcon:a,autoHiddenButton:u}=T,n=B.fileList,r=L.value,d=K.value,s=J.value,p=X.value,v=Z.value,g=D.default,m=D.tip||D.hint;return r||!t||u&&p?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{key:"action",class:"vxe-upload--image-action"},[(0,_vue.h)("div",{class:"vxe-upload--image-action-btn",onClick:ie},g?g({isMoreView:e,options:n,$upload:O}):[(0,_vue.h)("div",{class:"vxe-upload--image-action-box",style:e?null:v},[a?(0,_vue.h)("div",{class:"vxe-upload--image-action-icon"},[(0,_vue.h)("i",{class:i||(0,_ui.getIcon)().UPLOAD_IMAGE_ADD})]):(0,_ui.renderEmptyElement)(O),e||l?(0,_vue.h)("div",{class:"vxe-upload--image-action-content"},o?""+(_xeUtils.default.isFunction(o)?o({}):o):(0,_ui.getI18n)("vxe.upload.imgBtnText")):(0,_ui.renderEmptyElement)(O),d&&(s||m)?(0,_vue.h)("div",{class:"vxe-upload--image-action-hint"},m?(0,_vn.getSlotVNs)(m({isMoreView:e,options:n,$upload:O})):""+s):(0,_ui.renderEmptyElement)(O)])])])};let o=(0,_vue.ref)(0);return(0,_vue.watch)(()=>T.modelValue?T.modelValue.length:0,()=>{o.value++}),(0,_vue.watch)(()=>T.modelValue,()=>{o.value++}),(0,_vue.watch)(o,()=>{d()}),(0,_vue.onMounted)(()=>{T.multiple&&T.singleMode&&(0,_log.errLog)("vxe.error.errConflicts",["[upload] multiple","single-mode"]),T.imageStyle&&(0,_log.warnLog)("vxe.error.delProp",["[upload] image-style","image-config"]),T.dragSort&&(0,_dom.initTpImg)(),_ui.globalEvents.on(O,"paste",ce),_ui.globalEvents.on(O,"click",fe),_ui.globalEvents.on(O,"blur",he)}),(0,_vue.onBeforeUnmount)(()=>{B.isDragUploadStatus=!1,_ui.globalEvents.off(O,"paste"),_ui.globalEvents.off(O,"click"),_ui.globalEvents.off(O,"blur"),_xeUtils.default.assign(B,createReactData()),_xeUtils.default.assign(r,createInternalData())}),d(),O.renderVN=()=>{var{showErrorStatus:e,dragToUpload:t,pasteToUpload:o,dragSort:i,dragPlaceholder:l}=T,{isDragUploadStatus:a,showMorePopup:u,isActivated:n,dragIndex:r}=B,d=G.value,s=P.value,p=L.value,v=h.value,g={onMousedown:_e};return t&&-1===r&&(g.onDragover=ue,g.onDragleave=ae,g.onDrop=re),(0,_vue.h)("div",Object.assign({ref:m,class:["vxe-upload",{["size--"+d]:d,"is--active":n,"is--readonly":p,"is--disabled":s,"is--paste":o,"show--error":e,"is--drag":a}]},g),[(v?()=>{var{showList:e,dragSort:t}=T;let{fileList:o,isDragMove:i}=B;var l=ee.value;let a=D.moreButton||D["more-button"],{maxCount:u,showMoreButton:n,moreButtonText:r}=l,d=o,s=0,p=!1,v=!1;return _xeUtils.default.isNumber(u)&&o.length>u&&(p=!0,v=0===u,s=o.length-u,d=o.slice(0,u)),(0,_vue.h)("div",{key:"image",class:"vxe-upload--image-wrapper"},e?[t?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(i?"":"-disabled"),tag:"div",class:"vxe-upload--image-list"},{default:()=>b(d,!1).concat([n&&s?(0,_vue.h)("div",{key:"om",class:"vxe-upload--image-over-more"},a?(0,_vn.getSlotVNs)(a({options:o})):[(0,_vue.h)(_button.default,{mode:"text",content:r?_xeUtils.default.isFunction(r)?r({$upload:O,options:o}):_xeUtils.default.toFormatString(r,[o.length]):(0,_ui.getI18n)(p&&v?"vxe.upload.moreImgBtnText":"vxe.upload.moreBtnText",[o.length]),status:"primary",onClick:x})]):(0,_ui.renderEmptyElement)(O),I(!1)])}):(0,_vue.h)("div",{class:"vxe-upload--image-list"},b(d,!1).concat([n&&s?(0,_vue.h)("div",{class:"vxe-upload--image-over-more"},a?(0,_vn.getSlotVNs)(a({options:o})):[(0,_vue.h)(_button.default,{mode:"text",content:r?_xeUtils.default.isFunction(r)?r({$upload:O,options:o}):_xeUtils.default.toFormatString(r,[o.length]):(0,_ui.getI18n)(p&&v?"vxe.upload.moreImgBtnText":"vxe.upload.moreBtnText",[o.length]),status:"primary",onClick:x})]):(0,_ui.renderEmptyElement)(O),I(!1)]))]:[(0,_vue.h)("div",{class:"vxe-upload--image-list"},[I(!1)])])}:()=>{var{showList:e,moreConfig:t,dragSort:o}=T,{fileList:i,isDragMove:l}=B,{maxCount:a,showMoreButton:u,layout:n,moreButtonText:r}=ee.value,n="horizontal"===n,d=D.moreButton||D["more-button"];let s=i,p=0,v=!1,g=!1;return _xeUtils.default.isNumber(a)&&i.length>a&&(v=!0,g=0===a,p=i.length-a,s=i.slice(0,a)),(0,_vue.h)("div",{key:"all",class:"vxe-upload--file-wrapper"},e?[u&&t&&n?(0,_ui.renderEmptyElement)(O):y(!0),(0,_vue.h)("div",{class:["vxe-upload--file-list-wrapper",{"is--horizontal":n}]},[s.length?o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(l?"":"-disabled"),tag:"div",class:"vxe-upload--file-list"},{default:()=>w(s,!1)}):(0,_vue.h)("div",{class:"vxe-upload--file-list"},w(s,!1)):(0,_ui.renderEmptyElement)(O),u&&p?(0,_vue.h)("div",{class:"vxe-upload--file-over-more"},d?(0,_vn.getSlotVNs)(d({options:i})):[(0,_vue.h)(_button.default,{mode:"text",content:r?_xeUtils.default.isFunction(r)?r({$upload:O,options:i}):_xeUtils.default.toFormatString(r,[i.length]):(0,_ui.getI18n)(v&&g?"vxe.upload.moreFileBtnText":"vxe.upload.moreBtnText",[i.length]),status:"primary",onClick:x})]):(0,_ui.renderEmptyElement)(O),u&&t&&n?y(!1):(0,_ui.renderEmptyElement)(O)])]:[y(!1)])})(),i?(0,_vue.h)("div",{ref:c,class:"vxe-upload--drag-line"}):(0,_ui.renderEmptyElement)(O),a&&!u?(0,_vue.h)("div",{class:"vxe-upload--drag-placeholder"},l||(0,_ui.getI18n)("vxe.upload.dragPlaceholder")):(0,_ui.renderEmptyElement)(O)])},O},render(){return this.renderVN()}});
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_vn=require("../../ui/src/vn"),_log=require("../../ui/src/log"),_dom=require("../../ui/src/dom"),_util=require("./util"),_button=_interopRequireDefault(require("../../button/src/button"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{warnLog,errLog}=(0,_log.createComponentLog)("upload");function createReactData(){return{isDragUploadStatus:!1,showMorePopup:!1,isActivated:!1,fileList:[],fileCacheMaps:{},isDragMove:!1,dragIndex:-1,dragTipText:""}}function createInternalData(){return{moreId:_xeUtils.default.uniqueId("upload"),imagePreviewTypes:["jpg","jpeg","png","gif"],prevDragIndex:-1}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeUpload",props:{modelValue:[Array,String,Object],showList:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showList},moreConfig:Object,readonly:{type:Boolean,default:null},disabled:{type:Boolean,default:null},autoSubmit:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.autoSubmit},mode:{type:String,default:()=>(0,_ui.getConfig)().upload.mode},imageTypes:{type:Array,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageTypes,!0)},imageConfig:{type:Object,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageConfig,!0)},imageStyle:{type:Object,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.imageStyle,!0)},fileTypes:{type:Array,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.fileTypes,!0)},dragSort:Boolean,dragToUpload:{type:Boolean,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.dragToUpload,!0)},dragPlaceholder:{type:String,default:()=>(0,_ui.getConfig)().upload.dragPlaceholder},pasteToUpload:{type:Boolean,default:()=>_xeUtils.default.clone((0,_ui.getConfig)().upload.pasteToUpload,!0)},keyField:String,singleMode:Boolean,urlMode:Boolean,urlArgs:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.urlArgs},multiple:Boolean,limitSize:{type:[String,Number],default:()=>(0,_ui.getConfig)().upload.limitSize},showLimitSize:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showLimitSize},limitSizeText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.limitSizeText},limitCount:{type:[String,Number],default:()=>(0,_ui.getConfig)().upload.limitCount},showLimitCount:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showLimitCount},limitCountText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.limitCountText},nameField:{type:String,default:()=>(0,_ui.getConfig)().upload.nameField},typeField:{type:String,default:()=>(0,_ui.getConfig)().upload.typeField},urlField:{type:String,default:()=>(0,_ui.getConfig)().upload.urlField},sizeField:{type:String,default:()=>(0,_ui.getConfig)().upload.sizeField},showErrorStatus:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showErrorStatus},showProgress:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showProgress},progressText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.progressText},previewImageConfig:Object,showSubmitButton:Boolean,autoHiddenButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.autoHiddenButton},showUploadButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showUploadButton},buttonText:{type:[String,Number,Function],default:()=>(0,_ui.getConfig)().upload.buttonText},buttonIcon:{type:String,default:()=>(0,_ui.getConfig)().upload.buttonIcon},showButtonText:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showButtonText},showButtonIcon:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showButtonIcon},showRemoveButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showRemoveButton},showDownloadButton:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showDownloadButton},showPreview:{type:Boolean,default:()=>(0,_ui.getConfig)().upload.showPreview},showTip:{type:Boolean,default:()=>null},maxSimultaneousUploads:{type:Number,default:()=>(0,_ui.getConfig)().upload.maxSimultaneousUploads},tipText:[String,Number,Function],hintText:String,previewMethod:Function,beforeSelectMethod:Function,uploadMethod:Function,beforeRemoveMethod:Function,removeMethod:Function,beforeDownloadMethod:Function,downloadMethod:Function,getUrlMethod:Function,getThumbnailUrlMethod:Function,size:{type:String,default:()=>(0,_ui.getConfig)().upload.size||(0,_ui.getConfig)().size}},emits:["update:modelValue","add","remove","remove-fail","download","download-fail","upload-start","upload-success","upload-error","upload-end","upload-queue-start","upload-queue-end","sort-dragend","more-visible"],setup(T,e){let{emit:i,slots:D}=e,U=(0,_vue.inject)("$xeForm",null),C=(0,_vue.inject)("xeFormItemInfo",null),l=(0,_vue.inject)("$xeTable",null);var t=_xeUtils.default.uniqueId();let G=(0,_ui.useSize)(T).computeSize,m=(0,_vue.ref)(),_=(0,_vue.ref)(),c=(0,_vue.ref)(),f=(0,_vue.ref)(),B=(0,_vue.reactive)(createReactData()),r=createInternalData(),a={refElem:m},L=(0,_vue.computed)(()=>{var e=T.readonly;return null===e?!!U&&U.props.readonly:e}),P=(0,_vue.computed)(()=>{var e=T.disabled;return null===e?!!U&&U.props.disabled:e}),E=(0,_vue.computed)(()=>T.keyField||"_X_KEY"),h=(0,_vue.computed)(()=>"image"===T.mode),V=(0,_vue.computed)(()=>T.nameField||"name"),F=(0,_vue.computed)(()=>T.typeField||"type"),M=(0,_vue.computed)(()=>T.urlField||"url"),S=(0,_vue.computed)(()=>T.sizeField||"size"),H=(0,_vue.computed)(()=>1024*_xeUtils.default.toNumber(T.limitSize)*1024),Y=(0,_vue.computed)(()=>T.multiple?_xeUtils.default.toNumber(T.limitCount):1),Q=(0,_vue.computed)(()=>{var e=T.showDownloadButton;return Object.assign({showDownloadButton:e},(0,_ui.getConfig)().upload.previewImageConfig,T.previewImageConfig)}),X=(0,_vue.computed)(()=>{var e=T.multiple,t=B.fileList,o=Y.value;return e?!o||t.length>=o:1<=t.length}),W=(0,_vue.computed)(()=>{var e=_xeUtils.default.toNumber(T.limitSize);return e?1048576<e?e/1048576+"T":1024<e?e/1024+"G":e+"M":""}),K=(0,_vue.computed)(()=>{var{showTip:e,tipText:t}=T;return _xeUtils.default.isBoolean(e)||(e=(0,_ui.getConfig)().upload.showTip,_xeUtils.default.isBoolean(e))?e:!!t}),J=(0,_vue.computed)(()=>{var{limitSize:e,fileTypes:t,multiple:o,limitCount:i}=T,l=T.tipText||T.hintText,a=h.value,u=W.value;return _xeUtils.default.isString(l)?l:_xeUtils.default.isFunction(l)?""+l({}):(l=[],a?(o&&i&&l.push((0,_ui.getI18n)("vxe.upload.imgCountHint",[i])),e&&u&&l.push((0,_ui.getI18n)("vxe.upload.imgSizeHint",[u]))):(t&&t.length&&l.push((0,_ui.getI18n)("vxe.upload.fileTypeHint",[t.join("/")])),e&&u&&l.push((0,_ui.getI18n)("vxe.upload.fileSizeHint",[u])),o&&i&&l.push((0,_ui.getI18n)("vxe.upload.fileCountHint",[i]))),l.join((0,_ui.getI18n)("vxe.base.comma")))}),u=(0,_vue.computed)(()=>Object.assign({},T.imageConfig||T.imageStyle)),Z=(0,_vue.computed)(()=>{var{width:e,height:t}=u.value,o={};return e&&(o.width=(0,_dom.toCssUnit)(e)),t&&(o.height=(0,_dom.toCssUnit)(t)),o}),ee=(0,_vue.computed)(()=>Object.assign({showMoreButton:!0},T.moreConfig)),n={computeUrlProp:M},O={xID:t,props:T,context:e,reactData:B,internalData:r,getRefMaps:()=>a,getComputeMaps:()=>n},A=()=>_xeUtils.default.uniqueId(),N=e=>e[E.value],d=()=>{var{modelValue:e,multiple:t}=T,o=L.value;let l=E.value,a=V.value,u=F.value,n=M.value,r=S.value;e=e?(e?_xeUtils.default.isArray(e)?e:[e]:[]).map(t=>{if(!t||_xeUtils.default.isString(t)){var o=""+(t||""),i=_xeUtils.default.parseUrl(t);let e=(i?i.searchQuery[a]:"")||decodeURIComponent(""+(o||"")).split("/").pop()||"";return{[a]:e,[u]:(i?i.searchQuery[u]:"")||z(e),[n]:o,[r]:_xeUtils.default.toNumber(i?i.searchQuery[r]:0)||0,[l]:A()}}let e=t[a]||"";return t[a]=e,t[u]=t[u]||z(e),t[n]=t[n]||"",t[r]=t[r]||0,t[l]=t[l]||A(),t}):[];B.fileList=o||t?e:e.slice(0,1)},z=e=>{var t=e.lastIndexOf(".");return 0<t?e.substring(t+1).toLowerCase():""},j=(e,t,o)=>{i(e,(0,_ui.createEvent)(o,{$upload:O},t))},s=e=>{i("update:modelValue",e)},k=e=>{let{singleMode:t,urlMode:o,urlArgs:i}=T,l=M.value,a=V.value,u=e?e.slice(0):[];o&&(u=u.map(e=>{var t=e[l];if(t&&i){var o=_xeUtils.default.parseUrl(t);if(!o.searchQuery[a]&&-1===t.indexOf("blob:"))return""+t+(-1===t.indexOf("?")?"?":"&")+a+"="+encodeURIComponent(e[a]||"")}return t})),s(t?u[0]||null:u)},R=e=>{var t=T.getUrlMethod||(0,_ui.getConfig)().upload.getUrlMethod,o=M.value;return t?t({$upload:O,option:e}):e[o]},te=t=>{var{imageTypes:e,showDownloadButton:o}=T;let i=F.value;var l=Q.value;let a=T.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;var u=r.imagePreviewTypes;u.concat(e||[]).some(e=>(""+e).toLowerCase()===(""+t[i]).toLowerCase())&&_ui.VxeUI.previewImage&&_ui.VxeUI.previewImage(Object.assign(Object.assign({},l),{urlList:[R(t)],showDownloadButton:o,beforeDownloadMethod:a?()=>a({$upload:O,option:t}):void 0}))},$=(i,e)=>{let l=T.showErrorStatus,a=N(i);var t=T.uploadMethod||(0,_ui.getConfig)().upload.uploadMethod;return t?(j("upload-start",{option:i},null),Promise.resolve(t({$upload:O,file:e,option:i,updateProgress(e){var t=B.fileCacheMaps,t=t[N(i)];t&&(t.percent=Math.max(0,Math.min(99,_xeUtils.default.toNumber(e))))}})).then(e=>{var t=B.fileCacheMaps,t=t[a];t&&(t.percent=100,t.status="success"),Object.assign(i,e),j("upload-success",{option:i,data:e},null)}).catch(e=>{var t=B.fileCacheMaps,o=t[a];o&&(o.status="error"),l?Object.assign(i,e):(B.fileList=B.fileList.filter(e=>N(e)!==a),delete t[a]),j("upload-error",{option:i,data:e},null)}).finally(()=>{var e=B.fileCacheMaps,e=e[a];e&&(e.loading=!1),j("upload-end",{option:i},null)})):(t=B.fileCacheMaps,(e=t[a])&&(e.loading=!1),Promise.resolve())},oe=e=>{let{uploadMethod:t,urlMode:o}=T;var i,l=B.fileCacheMaps,l=l[N(e)];(t||(0,_ui.getConfig)().upload.uploadMethod)&&l&&(i=l.file,l.loading=!0,l.status="pending",l.percent=0,$(e,i).then(()=>{o&&k(B.fileList)}))},p=(t,o)=>{let{multiple:e,urlMode:i,showLimitSize:l,limitSizeText:a,showLimitCount:u,limitCountText:n,autoSubmit:r}=T;var d=B.fileList;let s=T.beforeSelectMethod||(0,_ui.getConfig)().upload.beforeSelectMethod,p=T.uploadMethod||(0,_ui.getConfig)().upload.uploadMethod,v=E.value,g=V.value,m=F.value,_=M.value,c=S.value;var f=H.value;let h=Y.value;var x=W.value;let w=t;if(e&&h){if(u&&d.length>=h)return void(_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:n?""+(_xeUtils.default.isFunction(n)?n({maxCount:h}):n):(0,_ui.getI18n)("vxe.upload.overCountErr",[h])}));let t=w.length-(h-d.length);if(u&&0<t){let e=w.slice(h-d.length);n?_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:""+(_xeUtils.default.isFunction(n)?n({maxCount:h}):n)}):_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",width:null,slots:{default(){return(0,_vue.h)("div",{class:"vxe-upload--file-message-over-error"},[(0,_vue.h)("div",{},(0,_ui.getI18n)("vxe.upload.overCountExtraErr",[h,t])),(0,_vue.h)("div",{class:"vxe-upload--file-message-over-extra"},e.map((e,t)=>(0,_vue.h)("div",{key:t,class:"vxe-upload--file-message-over-extra-item"},e.name)))])}}})}w=w.slice(0,h-d.length)}if(l&&f)for(let e=0;e<t.length;e++)if(t[0].size>f)return void(_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:a?""+(_xeUtils.default.isFunction(a)?a({maxSize:f}):a):(0,_ui.getI18n)("vxe.upload.overSizeErr",[x])}));j("upload-queue-start",{files:w},o);let y=Object.assign({},B.fileCacheMaps),b=e?d:[],I=[];w.forEach(e=>{var t=e.name,o=A(),t={[g]:t,[m]:z(t),[c]:e.size,[_]:URL.createObjectURL(e),[v]:o},o=(p&&(y[o]={file:e,loading:!!r,status:"pending",percent:0}),(0,_vue.reactive)(t));s&&!s({$upload:O,file:e})||(p&&r&&I.push($(o,e)),b.push(o))}),B.fileList=b,B.fileCacheMaps=y,b.forEach(e=>{j("add",{option:e},o)}),Promise.all(i?I:[]).then(()=>{var e=B.fileList;j("upload-queue-end",{options:e,files:w},o),k(e),U&&C&&U.triggerItemEvent(o,C.itemConfig.field,e)})},v=t=>{var{multiple:e,imageTypes:o,fileTypes:i}=T,l=P.value,a=h.value;return l?Promise.resolve({status:!1,files:[],file:null}):(0,_util.readLocalFile)({multiple:e,types:a?o:i}).then(e=>(p(e.files,t),e))},ie=e=>{v(e).catch(()=>{})},g=(e,t,o)=>{var i=B.fileList;i.splice(o,1),k(i),U&&C&&U.triggerItemEvent(e||{type:"remove"},C.itemConfig.field,i),e&&j("remove",{option:t},e)},q=(t,o,i)=>{var e=T.beforeRemoveMethod||(0,_ui.getConfig)().upload.beforeRemoveMethod;let l=T.removeMethod||(0,_ui.getConfig)().upload.removeMethod;return Promise.resolve(!e||e({$upload:O,option:o})).then(e=>(e?l?Promise.resolve(l({$upload:O,option:o})).then(()=>{g(t,o,i)}).catch(e=>e):g(t,o,i):t&&j("remove-fail",{option:o},t),e))},le=(e,t)=>{j("download",{option:t},e)},ae=e=>{var t,o,i,l=e.currentTarget,{clientX:e,clientY:a}=e;l&&({x:l,y:t,height:o,width:i}=l.getBoundingClientRect(),e<l||l+i<e||a<t||t+o<a)&&(B.isDragUploadStatus=!1)},ue=e=>{var t=e.dataTransfer;t&&(t=t.items,t)&&t.length&&(e.preventDefault(),B.isDragUploadStatus=!0)},ne=(e,t)=>{let{imageTypes:i,fileTypes:l}=T;var a=r.imagePreviewTypes;if(h.value){let o=a.concat(i&&i.length?i:[]);t=t.filter(e=>{let t=(""+(e.type.split("/")[1]||"")).toLowerCase();return!!o.some(e=>(""+e).toLowerCase()===t)})}else if(l&&l.length){let o=[];if(t.forEach(e=>{let t=z(e.name);l.some(e=>(""+e).toLowerCase()===t)||o.push(t)}),o.length)return void(_ui.VxeUI.modal&&_ui.VxeUI.modal.message({content:(0,_ui.getI18n)("vxe.error.notType",[o.join(", ")]),status:"error"}))}t.length?p(t,e):_ui.VxeUI.modal&&_ui.VxeUI.modal.notification({title:(0,_ui.getI18n)("vxe.modal.errTitle"),status:"error",content:(0,_ui.getI18n)("vxe.upload.uploadTypeErr")})},re=e=>{var t=e.dataTransfer;t&&(t=t.items,t)&&t.length&&(e.preventDefault(),(t=de(t)).length)&&ne(e,t),B.isDragUploadStatus=!1},de=e=>{let t=[];return _xeUtils.default.arrayEach(e,e=>{e=e.getAsFile();e&&t.push(e)}),t},x=e=>{let v=L.value,g=h.value;e=e.$event;_ui.VxeUI.modal&&(_ui.VxeUI.modal.open({id:r.moreId,title:v?(0,_ui.getI18n)("vxe.upload.morePopup.readTitle"):(0,_ui.getI18n)("vxe.upload.morePopup."+(g?"imageTitle":"fileTitle")),width:660,height:500,escClosable:!0,showMaximize:!0,resize:!0,maskClosable:!0,slots:{default(){var{showErrorStatus:e,dragToUpload:t,dragSort:o,dragPlaceholder:i}=T,{isActivated:l,isDragMove:a,isDragUploadStatus:u,dragIndex:n}=B;let r=B.fileList;var d=P.value,s=D.moreContent||D["more-content"],p={};return t&&-1===n&&(p.onDragover=ue,p.onDragleave=ae,p.onDrop=re),(0,_vue.h)("div",Object.assign({ref:_,class:["vxe-upload--more-popup",{"is--readonly":v,"is--disabled":d,"is--active":l,"show--error":e,"is--drag":u}]},p),s?(0,_vn.getSlotVNs)(s({options:r})):[g?o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(a?"":"-disabled"),tag:"div",class:"vxe-upload--image-more-list"},{default:()=>b(r,!0).concat(I(!0))}):(0,_vue.h)("div",{class:"vxe-upload--image-more-list"},b(r,!0).concat(I(!0))):(0,_vue.h)("div",{class:"vxe-upload--file-more-list"},[y(!0),o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(a?"":"-disabled"),tag:"div",class:"vxe-upload--file-list"},{default:()=>w(r,!1)}):(0,_vue.h)("div",{class:"vxe-upload--file-list"},w(r,!0))]),o?(0,_vue.h)("div",{ref:f,class:"vxe-upload--drag-line"}):(0,_ui.renderEmptyElement)(O),u?(0,_vue.h)("div",{class:"vxe-upload--drag-placeholder"},i||(0,_ui.getI18n)("vxe.upload.dragPlaceholder")):(0,_ui.renderEmptyElement)(O)])}},onShow(){B.showMorePopup=!0},onHide({$event:e}){B.showMorePopup=!1,e&&j("more-visible",{visible:!1},e)}}),e)&&j("more-visible",{visible:!0},e)},se=(e,t,o)=>{var i,l=B.showMorePopup,a=m.value,u=_.value,u=l?u:a;u&&(a=u.getBoundingClientRect(),u=c.value,i=f.value,l=l?i:u)&&(i=t.getBoundingClientRect(),l.style.display="block",l.style.top=Math.max(1,i.y-a.y)+"px",l.style.left=Math.max(1,i.x-a.x)+"px",l.style.height=i.height+"px",l.style.width=i.width-1+"px",l.setAttribute("drag-pos",o))},pe=()=>{var e=c.value,t=f.value;e&&(e.style.display=""),t&&(t.style.display="")},ve=e=>{e.stopPropagation(),e.dataTransfer&&e.dataTransfer.setDragImage((0,_dom.getTpImg)(),0,0);let t=e.currentTarget;e=t.parentElement,e=_xeUtils.default.findIndexOf(Array.from(e.children),e=>t===e);B.isDragMove=!0,B.dragIndex=e,setTimeout(()=>{B.isDragMove=!1},500)},ge=o=>{o.stopPropagation(),o.preventDefault();var i=B.dragIndex;if(-1!==i){var l=h.value;let t=o.currentTarget;var a=t.parentElement,a=_xeUtils.default.findIndexOf(Array.from(a.children),e=>t===e);let e="";e=l?o.clientX-t.getBoundingClientRect().x<t.clientWidth/2?"left":"right":o.clientY-t.getBoundingClientRect().y<t.clientHeight/2?"top":"bottom",i===a?se(o,t,e):(se(o,t,e),r.prevDragIndex=a,r.prevDragPos=e)}},me=e=>{var{fileList:t,dragIndex:o}=B,{prevDragIndex:i,prevDragPos:l}=r,a="bottom"===l||"right"===l?1:0,u=t[o];let n=t[i];u&&n&&(t.splice(o,1),i=_xeUtils.default.findIndexOf(t,e=>n===e)+a,t.splice(i,0,u),j("sort-dragend",{oldItem:u,newItem:n,dragPos:l,offsetIndex:a,_index:{newIndex:i,oldIndex:o}},e)),pe(),B.dragIndex=-1},_e=e=>{l&&e.stopPropagation(),B.isActivated=!0},ce=e=>{var t=T.pasteToUpload,o=B.isActivated;o&&t&&(o=e.clipboardData||e.originalEvent.clipboardData)&&(t=o.items,t)&&(o=de(t)).length&&(e.preventDefault(),ne(e,o))},fe=e=>{var t=m.value,o=_.value;let i=(0,_dom.getEventTargetNode)(e,t).flag;!i&&o&&(o=(t=o.parentElement||o)&&t.parentElement,i=(0,_dom.getEventTargetNode)(e,o).flag),B.isActivated=i},he=()=>{B.isActivated=!1},xe=o=>{var e=B.fileList;let i=M.value,l=[];return _xeUtils.default.lastEach(e,(t,e)=>{l.push(q(o,t,e).then(e=>({url:t[i],status:e})))}),Promise.all(l)},we=(o,e)=>{let i=B.fileList,l=M.value;e=_xeUtils.default.isArray(e)?e:[e];let a=[];return e.forEach(e=>{if(e){let t=_xeUtils.default.isString(e)?e:e[l];e=_xeUtils.default.findIndexOf(i,e=>e[l]===t);-1<e&&a.push(q(o,i[e],e).then(e=>({url:t,status:e})))}}),Promise.all(a)};t={dispatchEvent:j,choose(){return v(null)},clear(){return xe(null)},clearByEvent(e){return xe(e)},getPendingFiles(){let{fileList:e,fileCacheMaps:t}=B,o=[];return e.forEach(e=>{e=N(e),e=t[e];e&&"pending"===e.status&&o.push(e.file)}),o},submit(i){var e=T.maxSimultaneousUploads,e=_xeUtils.default.toNumber(e||1)||1;let{fileList:t,fileCacheMaps:l}=B,o=t.filter(e=>{e=N(e),e=l[e];return e&&("pending"===e.status||i&&"error"===e.status)}),a=e=>{var t=N(e),t=l[t];if(t){var o=t.file;if(o&&("pending"===t.status||i&&"error"===t.status))return t.loading=!0,t.percent=0,$(e,o).then(u)}return u()},u=()=>{var e;return o.length?(e=o[0],o.splice(0,1),a(e).then(u)):Promise.resolve()};return Promise.all(o.splice(0,e).map(a)).then(()=>{})},getMoreVisible(){return B.showMorePopup},openMore(){return x({$event:new Event("click")}),(0,_vue.nextTick)()},openMoreByEvent(e){return x({$event:e}),(0,_vue.nextTick)()},closeMore(){return _ui.VxeUI.modal&&_ui.VxeUI.modal.close(r.moreId),(0,_vue.nextTick)()},remove(e){return we(null,e)},removeByEvent(e,t){return we(e,t)}},e={removeFileEvent:q};Object.assign(O,t,e);let w=(e,r)=>{let{showRemoveButton:d,showDownloadButton:s,showProgress:p,progressText:v,showPreview:g,showErrorStatus:m,dragSort:_,autoSubmit:c,showSubmitButton:f}=T,{fileList:h,fileCacheMaps:x}=B,w=P.value,y=L.value,b=V.value,I=F.value,U=D.option,C=D.action,E=D.corner,M=D.name,S={};return _&&1<e.length&&(S.onDragstart=ve,S.onDragover=ge,S.onDragend=me),e.map((i,t)=>{var e=N(i),o=x[e];let l=!1,a=!1,u=!1;var n=""+(i[b]||"");return o&&(l=o.loading,a="error"===o.status,u="pending"===o.status),(0,_vue.h)("div",Object.assign({key:_?e:t,class:["vxe-upload--file-item",{"is--preview":g,"is--loading":l,"is--pending":u,"is--error":a}],fileid:e,draggable:!!_||null},S),U?(0,_vn.getSlotVNs)(U({option:i,isMoreView:r,options:h})):[(0,_vue.h)("div",{class:"vxe-upload--file-item-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)()["UPLOAD_FILE_TYPE_"+(""+i[I]).toLocaleUpperCase()]||(0,_ui.getIcon)().UPLOAD_FILE_TYPE_DEFAULT})]),(0,_vue.h)("div",{class:"vxe-upload--file-item-name",title:n,onClick(e){var t,o;l||a||(t=i,o=T.previewMethod||(0,_ui.getConfig)().upload.previewMethod,T.showPreview&&(o?o({$upload:O,option:t}):te(t)))}},M?(0,_vn.getSlotVNs)(M({option:i,isMoreView:r,options:h})):n),l?(0,_vue.h)("div",{class:"vxe-upload--file-item-loading-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_LOADING})]):(0,_ui.renderEmptyElement)(O),p&&l&&o?(0,_vue.h)("div",{class:"vxe-upload--file-item-loading-text"},v?_xeUtils.default.toFormatString(""+(_xeUtils.default.isFunction(v)?v({}):v),{percent:o.percent}):(0,_ui.getI18n)("vxe.upload.uploadProgress",[o.percent])):(0,_ui.renderEmptyElement)(O),!l&&(a&&m||u&&f&&!c)?(0,_vue.h)("div",{class:"vxe-upload--file-item-rebtn"},[(0,_vue.h)(_button.default,{icon:a?(0,_ui.getIcon)().UPLOAD_IMAGE_RE_UPLOAD:(0,_ui.getIcon)().UPLOAD_IMAGE_UPLOAD,mode:"text",status:"primary",content:a?(0,_ui.getI18n)("vxe.upload.reUpload"):(0,_ui.getI18n)("vxe.upload.manualUpload"),onClick(){oe(i)}})]):(0,_ui.renderEmptyElement)(O),(0,_vue.h)("div",{class:"vxe-upload--file-item-btn-wrapper"},C?(0,_vn.getSlotVNs)(C({option:i,isMoreView:r,options:h,readonly:y})):[E?(0,_vue.h)("div",{class:"vxe-upload--file-item-action"},(0,_vn.getSlotVNs)(E({option:i,isMoreView:r,options:h,readonly:y}))):(0,_ui.renderEmptyElement)(O),!s||l||u?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--file-item-download-btn",onClick(e){((t,o)=>{var e=T.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;let i=T.downloadMethod||(0,_ui.getConfig)().upload.downloadMethod;Promise.resolve(!e||e({$upload:O,option:o})).then(e=>{e?i?Promise.resolve(i({$upload:O,option:o})).then(()=>{le(t,o)}).catch(e=>e):le(t,o):j("download-fail",{option:o},t)})})(e,i)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_FILE_DOWNLOAD})]),!d||y||w||l?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--file-item-remove-btn",onClick(e){q(e,i,t)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_FILE_REMOVE})])])])})},y=e=>{var{showUploadButton:t,buttonText:o,buttonIcon:i,showButtonText:l,showButtonIcon:a,autoHiddenButton:u}=T,n=B.fileList,r=P.value,d=L.value,s=K.value,p=J.value,v=X.value,g=D.default,m=D.tip||D.hint;return d||!t?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--file-action"},[u&&v?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--file-action-btn",onClick:ie},g?(0,_vn.getSlotVNs)(g({isMoreView:e,options:n,$upload:O})):[(0,_vue.h)(_button.default,{class:"vxe-upload--file-action-button",content:e||l?o?""+(_xeUtils.default.isFunction(o)?o({}):o):(0,_ui.getI18n)("vxe.upload.fileBtnText"):"",icon:a?i||(0,_ui.getIcon)().UPLOAD_FILE_ADD:"",disabled:r})]),s&&(p||m)?(0,_vue.h)("div",{class:"vxe-upload--file-action-tip"},m?(0,_vn.getSlotVNs)(m({isMoreView:e,options:n,$upload:O})):""+p):(0,_ui.renderEmptyElement)(O)])},b=(e,n)=>{let{showRemoveButton:r,showProgress:d,progressText:s,showPreview:p,showErrorStatus:v,dragSort:g,autoSubmit:m,showSubmitButton:_}=T,{fileList:c,fileCacheMaps:f}=B,h=P.value,x=L.value,w=u.value,y=Z.value,b=D.option,I=D.action,U=D.corner,C={onMousedown:_e};return g&&1<e.length&&(C.onDragstart=ve,C.onDragover=ge,C.onDragend=me),e.map((t,o)=>{var e=N(t),i=f[e];let l=!1,a=!1,u=!1;return i&&(l=i.loading,a="error"===i.status,u="pending"===i.status),(0,_vue.h)("div",Object.assign({key:g?e:o,class:["vxe-upload--image-item",{"is--preview":p,"is--circle":w.circle,"is--loading":l,"is--pending":u,"is--error":a}],fileid:e,draggable:!!g||null},C),b?(0,_vn.getSlotVNs)(b({option:t,isMoreView:n,options:c})):[(0,_vue.h)("div",{class:"vxe-upload--image-item-box",style:n?null:y,onClick(e){l||a||((e,t)=>{var o=T.showDownloadButton;let i=B.fileList;var l=Q.value,a=T.previewMethod||(0,_ui.getConfig)().upload.previewMethod;let u=T.beforeDownloadMethod||(0,_ui.getConfig)().upload.beforeDownloadMethod;T.showPreview&&(a?a({$upload:O,option:e}):_ui.VxeUI.previewImage&&_ui.VxeUI.previewImage(Object.assign(Object.assign({},l),{urlList:i.map(e=>R(e)),activeIndex:t,showDownloadButton:o,beforeDownloadMethod:u?({index:e})=>u({$upload:O,option:i[e]}):void 0})))})(t,o)}},[l&&i?(0,_vue.h)("div",{class:"vxe-upload--image-item-loading"},[(0,_vue.h)("div",{class:"vxe-upload--image-item-loading-icon"},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_LOADING})]),d?(0,_vue.h)("div",{class:"vxe-upload--image-item-loading-text"},s?_xeUtils.default.toFormatString(""+(_xeUtils.default.isFunction(s)?s({}):s),{percent:i.percent}):(0,_ui.getI18n)("vxe.upload.uploadProgress",[i.percent])):(0,_ui.renderEmptyElement)(O)]):(0,_ui.renderEmptyElement)(O),(0,_vue.h)("div",{class:"vxe-upload--image-item-img-wrapper",title:(0,_ui.getI18n)("vxe.upload.viewItemTitle")},[(0,_vue.h)("img",{class:"vxe-upload--image-item-img",src:(e=t,(i=T.getThumbnailUrlMethod||(0,_ui.getConfig)().upload.getThumbnailUrlMethod)?i({$upload:O,option:e}):R(e))})]),!l&&(a&&v||u&&_&&!m)?(0,_vue.h)("div",{class:"vxe-upload--image-item-rebtn"},[(0,_vue.h)(_button.default,{icon:a?(0,_ui.getIcon)().UPLOAD_IMAGE_RE_UPLOAD:(0,_ui.getIcon)().UPLOAD_IMAGE_UPLOAD,mode:"text",status:"primary",content:a?(0,_ui.getI18n)("vxe.upload.reUpload"):(0,_ui.getI18n)("vxe.upload.manualUpload"),onClick(){oe(t)}})]):(0,_ui.renderEmptyElement)(O),(0,_vue.h)("div",{class:"vxe-upload--image-item-btn-wrapper",onClick(e){e.stopPropagation()}},I?(0,_vn.getSlotVNs)(I({option:t,isMoreView:n,options:c,readonly:x})):[U?(0,_vue.h)("div",{class:"vxe-upload--file-item-action"},(0,_vn.getSlotVNs)(U({option:t,isMoreView:n,options:c,readonly:x}))):(0,_ui.renderEmptyElement)(O),!r||x||h||l?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{class:"vxe-upload--image-item-remove-btn",onClick(e){e.stopPropagation(),q(e,t,o)}},[(0,_vue.h)("i",{class:(0,_ui.getIcon)().UPLOAD_IMAGE_REMOVE})])])])])})},I=e=>{var{showUploadButton:t,buttonText:o,buttonIcon:i,showButtonText:l,showButtonIcon:a,autoHiddenButton:u}=T,n=B.fileList,r=L.value,d=K.value,s=J.value,p=X.value,v=Z.value,g=D.default,m=D.tip||D.hint;return r||!t||u&&p?(0,_ui.renderEmptyElement)(O):(0,_vue.h)("div",{key:"action",class:"vxe-upload--image-action"},[(0,_vue.h)("div",{class:"vxe-upload--image-action-btn",onClick:ie},g?g({isMoreView:e,options:n,$upload:O}):[(0,_vue.h)("div",{class:"vxe-upload--image-action-box",style:e?null:v},[a?(0,_vue.h)("div",{class:"vxe-upload--image-action-icon"},[(0,_vue.h)("i",{class:i||(0,_ui.getIcon)().UPLOAD_IMAGE_ADD})]):(0,_ui.renderEmptyElement)(O),e||l?(0,_vue.h)("div",{class:"vxe-upload--image-action-content"},o?""+(_xeUtils.default.isFunction(o)?o({}):o):(0,_ui.getI18n)("vxe.upload.imgBtnText")):(0,_ui.renderEmptyElement)(O),d&&(s||m)?(0,_vue.h)("div",{class:"vxe-upload--image-action-hint"},m?(0,_vn.getSlotVNs)(m({isMoreView:e,options:n,$upload:O})):""+s):(0,_ui.renderEmptyElement)(O)])])])};let o=(0,_vue.ref)(0);return(0,_vue.watch)(()=>T.modelValue?T.modelValue.length:0,()=>{o.value++}),(0,_vue.watch)(()=>T.modelValue,()=>{o.value++}),(0,_vue.watch)(o,()=>{d()}),(0,_vue.onMounted)(()=>{T.multiple&&T.singleMode&&errLog("vxe.error.errConflicts",["multiple","single-mode"]),T.imageStyle&&warnLog("vxe.error.delProp",["image-style","image-config"]),T.dragSort&&(0,_dom.initTpImg)(),_ui.globalEvents.on(O,"paste",ce),_ui.globalEvents.on(O,"click",fe),_ui.globalEvents.on(O,"blur",he)}),(0,_vue.onBeforeUnmount)(()=>{B.isDragUploadStatus=!1,_ui.globalEvents.off(O,"paste"),_ui.globalEvents.off(O,"click"),_ui.globalEvents.off(O,"blur"),_xeUtils.default.assign(B,createReactData()),_xeUtils.default.assign(r,createInternalData())}),d(),O.renderVN=()=>{var{showErrorStatus:e,dragToUpload:t,pasteToUpload:o,dragSort:i,dragPlaceholder:l}=T,{isDragUploadStatus:a,showMorePopup:u,isActivated:n,dragIndex:r}=B,d=G.value,s=P.value,p=L.value,v=h.value,g={onMousedown:_e};return t&&-1===r&&(g.onDragover=ue,g.onDragleave=ae,g.onDrop=re),(0,_vue.h)("div",Object.assign({ref:m,class:["vxe-upload",{["size--"+d]:d,"is--active":n,"is--readonly":p,"is--disabled":s,"is--paste":o,"show--error":e,"is--drag":a}]},g),[(v?()=>{var{showList:e,dragSort:t}=T;let{fileList:o,isDragMove:i}=B;var l=ee.value;let a=D.moreButton||D["more-button"],{maxCount:u,showMoreButton:n,moreButtonText:r}=l,d=o,s=0,p=!1,v=!1;return _xeUtils.default.isNumber(u)&&o.length>u&&(p=!0,v=0===u,s=o.length-u,d=o.slice(0,u)),(0,_vue.h)("div",{key:"image",class:"vxe-upload--image-wrapper"},e?[t?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(i?"":"-disabled"),tag:"div",class:"vxe-upload--image-list"},{default:()=>b(d,!1).concat([n&&s?(0,_vue.h)("div",{key:"om",class:"vxe-upload--image-over-more"},a?(0,_vn.getSlotVNs)(a({options:o})):[(0,_vue.h)(_button.default,{mode:"text",content:r?_xeUtils.default.isFunction(r)?r({$upload:O,options:o}):_xeUtils.default.toFormatString(r,[o.length]):(0,_ui.getI18n)(p&&v?"vxe.upload.moreImgBtnText":"vxe.upload.moreBtnText",[o.length]),status:"primary",onClick:x})]):(0,_ui.renderEmptyElement)(O),I(!1)])}):(0,_vue.h)("div",{class:"vxe-upload--image-list"},b(d,!1).concat([n&&s?(0,_vue.h)("div",{class:"vxe-upload--image-over-more"},a?(0,_vn.getSlotVNs)(a({options:o})):[(0,_vue.h)(_button.default,{mode:"text",content:r?_xeUtils.default.isFunction(r)?r({$upload:O,options:o}):_xeUtils.default.toFormatString(r,[o.length]):(0,_ui.getI18n)(p&&v?"vxe.upload.moreImgBtnText":"vxe.upload.moreBtnText",[o.length]),status:"primary",onClick:x})]):(0,_ui.renderEmptyElement)(O),I(!1)]))]:[(0,_vue.h)("div",{class:"vxe-upload--image-list"},[I(!1)])])}:()=>{var{showList:e,moreConfig:t,dragSort:o}=T,{fileList:i,isDragMove:l}=B,{maxCount:a,showMoreButton:u,layout:n,moreButtonText:r}=ee.value,n="horizontal"===n,d=D.moreButton||D["more-button"];let s=i,p=0,v=!1,g=!1;return _xeUtils.default.isNumber(a)&&i.length>a&&(v=!0,g=0===a,p=i.length-a,s=i.slice(0,a)),(0,_vue.h)("div",{key:"all",class:"vxe-upload--file-wrapper"},e?[u&&t&&n?(0,_ui.renderEmptyElement)(O):y(!0),(0,_vue.h)("div",{class:["vxe-upload--file-list-wrapper",{"is--horizontal":n}]},[s.length?o?(0,_vue.h)(_vue.TransitionGroup,{name:"vxe-upload--drag-list"+(l?"":"-disabled"),tag:"div",class:"vxe-upload--file-list"},{default:()=>w(s,!1)}):(0,_vue.h)("div",{class:"vxe-upload--file-list"},w(s,!1)):(0,_ui.renderEmptyElement)(O),u&&p?(0,_vue.h)("div",{class:"vxe-upload--file-over-more"},d?(0,_vn.getSlotVNs)(d({options:i})):[(0,_vue.h)(_button.default,{mode:"text",content:r?_xeUtils.default.isFunction(r)?r({$upload:O,options:i}):_xeUtils.default.toFormatString(r,[i.length]):(0,_ui.getI18n)(v&&g?"vxe.upload.moreFileBtnText":"vxe.upload.moreBtnText",[i.length]),status:"primary",onClick:x})]):(0,_ui.renderEmptyElement)(O),u&&t&&n?y(!1):(0,_ui.renderEmptyElement)(O)])]:[y(!1)])})(),i?(0,_vue.h)("div",{ref:c,class:"vxe-upload--drag-line"}):(0,_ui.renderEmptyElement)(O),a&&!u?(0,_vue.h)("div",{class:"vxe-upload--drag-placeholder"},l||(0,_ui.getI18n)("vxe.upload.dragPlaceholder")):(0,_ui.renderEmptyElement)(O)])},O},render(){return this.renderVN()}});
|
package/package.json
CHANGED
|
@@ -2,13 +2,15 @@ import { ref, h, reactive, PropType, watch, onMounted, nextTick, computed, onBef
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
4
|
import { getConfig, getIcon, createEvent, useSize, renderEmptyElement } from '../../ui'
|
|
5
|
-
import {
|
|
5
|
+
import { createComponentLog } from '../../ui/src/log'
|
|
6
6
|
import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
|
|
7
7
|
import { toCssUnit } from '../../ui/src/dom'
|
|
8
8
|
import VxeButtonComponent from '../../button'
|
|
9
9
|
|
|
10
10
|
import type { BacktopInternalData, BacktopReactData, VxeBacktopPropTypes, BacktopPrivateRef, VxeBacktopEmits, VxeComponentStyleType, VxeBacktopPrivateComputed, BacktopMethods, BacktopPrivateMethods, VxeBacktopConstructor, VxeBacktopPrivateMethods, ValueOf } from '../../../types'
|
|
11
11
|
|
|
12
|
+
const { errLog } = createComponentLog('backtop')
|
|
13
|
+
|
|
12
14
|
function createInternalData (): BacktopInternalData {
|
|
13
15
|
return {
|
|
14
16
|
targetEl: null
|
|
@@ -5,12 +5,14 @@ import { getConfig, globalEvents, getIcon, createEvent, useSize, renderer, usePe
|
|
|
5
5
|
import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom'
|
|
6
6
|
import { getFuncText, getLastZIndex, nextZIndex } from '../../ui/src/utils'
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
8
|
-
import {
|
|
8
|
+
import { createComponentLog } from '../../ui/src/log'
|
|
9
9
|
import VxeTooltipComponent from '../../tooltip'
|
|
10
10
|
|
|
11
11
|
import type { VxeButtonConstructor, VxeButtonPropTypes, VxeButtonEmits, ButtonReactData, ButtonMethods, VxeButtonDefines, ButtonPrivateRef, ButtonInternalData, VxeButtonGroupConstructor, VxeButtonGroupPrivateMethods, VxeDrawerConstructor, VxeDrawerMethods, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods, ValueOf, VxeTreeConstructor, VxeTreePrivateMethods } from '../../../types'
|
|
12
12
|
import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
|
|
13
13
|
|
|
14
|
+
const { warnLog } = createComponentLog('button')
|
|
15
|
+
|
|
14
16
|
const VxeButtonComponent = defineVxeComponent({
|
|
15
17
|
name: 'VxeButton',
|
|
16
18
|
props: {
|
|
@@ -817,7 +819,7 @@ const VxeButtonComponent = defineVxeComponent({
|
|
|
817
819
|
|
|
818
820
|
onMounted(() => {
|
|
819
821
|
if (props.type === 'text') {
|
|
820
|
-
warnLog('vxe.error.delProp', ['
|
|
822
|
+
warnLog('vxe.error.delProp', ['type=text', 'mode=text'])
|
|
821
823
|
}
|
|
822
824
|
|
|
823
825
|
globalEvents.on($xeButton, 'mousewheel', handleGlobalMousewheelEvent)
|
|
@@ -4,12 +4,14 @@ import { VxeUI, createEvent, useSize, renderEmptyElement } from '../../ui'
|
|
|
4
4
|
import { getDateQuarter } from '../../date-panel/src/util'
|
|
5
5
|
import { toCssUnit } from '../../ui/src/dom'
|
|
6
6
|
import { isEnableConf } from '../../ui/src/utils'
|
|
7
|
-
import {
|
|
7
|
+
import { createComponentLog } from '../../ui/src/log'
|
|
8
8
|
import VxeButtonComponent from '../../button/src/button'
|
|
9
9
|
import XEUtils from 'xe-utils'
|
|
10
10
|
|
|
11
11
|
import type { VxeCalendarConstructor, VxeCalendarEmits, CalendarInternalData, CalendarReactData, CalendarMethods, VxeCalendarPropTypes, CalendarPrivateRef, VxeDatePanelDefines, ValueOf } from '../../../types'
|
|
12
12
|
|
|
13
|
+
const { errLog } = createComponentLog('calendar')
|
|
14
|
+
|
|
13
15
|
const { menus, getConfig, getI18n } = VxeUI
|
|
14
16
|
|
|
15
17
|
export default defineVxeComponent({
|
|
@@ -4,7 +4,6 @@ import { getConfig, getI18n, getIcon, globalEvents, createEvent, useSize, render
|
|
|
4
4
|
import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/src/dom'
|
|
5
5
|
import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
|
|
6
6
|
import { enNodeValue, deNodeValue } from './util'
|
|
7
|
-
import { errLog } from '../../ui/src/log'
|
|
8
7
|
import XEUtils from 'xe-utils'
|
|
9
8
|
import VxeListComponent from '../../list/src/list'
|
|
10
9
|
import VxeInputComponent from '../../input/src/input'
|
|
@@ -637,7 +636,6 @@ export default defineVxeComponent({
|
|
|
637
636
|
}
|
|
638
637
|
|
|
639
638
|
const handleData = (force?: boolean) => {
|
|
640
|
-
const { nodeMaps } = internalData
|
|
641
639
|
let fullList: any[] = internalData.afterVisibleList
|
|
642
640
|
if (force) {
|
|
643
641
|
// 更新数据,处理筛选和排序
|
|
@@ -646,17 +644,56 @@ export default defineVxeComponent({
|
|
|
646
644
|
fullList = handleTreeToList()
|
|
647
645
|
}
|
|
648
646
|
const treeList = fullList.slice(0)
|
|
649
|
-
treeList.forEach((item, $index) => {
|
|
650
|
-
const nodeid = getNodeId(item)
|
|
651
|
-
const itemRest = nodeMaps[nodeid]
|
|
652
|
-
if (itemRest) {
|
|
653
|
-
itemRest.$index = $index
|
|
654
|
-
}
|
|
655
|
-
})
|
|
656
647
|
reactData.treeList = treeList
|
|
657
648
|
}
|
|
658
649
|
|
|
659
|
-
|
|
650
|
+
/**
|
|
651
|
+
* 获取第一个拥有子节点的节点
|
|
652
|
+
*/
|
|
653
|
+
function handleHasChildNodeIds (treeList: any[], type: 'first' | 'last') {
|
|
654
|
+
const childrenField = computeChildrenField.value
|
|
655
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
656
|
+
const treeOpts = computeTreeOpts.value
|
|
657
|
+
const { transform } = treeOpts
|
|
658
|
+
const childField = transform ? mapChildrenField : childrenField
|
|
659
|
+
const nodeIds = []
|
|
660
|
+
let currList = treeList
|
|
661
|
+
while (currList.length) {
|
|
662
|
+
let targetNode = null
|
|
663
|
+
for (const item of currList) {
|
|
664
|
+
const kids = item[childField]
|
|
665
|
+
if (XEUtils.isArray(kids) && kids.length > 0) {
|
|
666
|
+
targetNode = item
|
|
667
|
+
break
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
if (targetNode) {
|
|
671
|
+
nodeIds.push(getNodeId(targetNode))
|
|
672
|
+
currList = targetNode[childField]
|
|
673
|
+
} else {
|
|
674
|
+
const endNode = XEUtils[type](currList)
|
|
675
|
+
nodeIds.push(getNodeId(endNode))
|
|
676
|
+
break
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
return nodeIds
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
const triggerSearchEvent = XEUtils.debounce(() => {
|
|
683
|
+
handleData(true)
|
|
684
|
+
updateModelChecked()
|
|
685
|
+
const filterOpts = computeFilterOpts.value
|
|
686
|
+
const { autoExpandMode } = filterOpts
|
|
687
|
+
const { afterTreeList } = internalData
|
|
688
|
+
// 默认展开第
|
|
689
|
+
if (autoExpandMode === 'first' || autoExpandMode === 'last') {
|
|
690
|
+
const stItems = handleHasChildNodeIds(afterTreeList, autoExpandMode)
|
|
691
|
+
reactData.currentItems = stItems
|
|
692
|
+
} else {
|
|
693
|
+
handleCurrentItems()
|
|
694
|
+
}
|
|
695
|
+
updateCurrentChunk()
|
|
696
|
+
}, 350, { trailing: true })
|
|
660
697
|
|
|
661
698
|
const loadData = (list: any[]) => {
|
|
662
699
|
const treeOpts = computeTreeOpts.value
|
|
@@ -685,17 +722,20 @@ export default defineVxeComponent({
|
|
|
685
722
|
|
|
686
723
|
const updateCurrentChunk = () => {
|
|
687
724
|
const { currentItems } = reactData
|
|
688
|
-
const {
|
|
725
|
+
const { afterTreeList } = internalData
|
|
689
726
|
const childrenField = computeChildrenField.value
|
|
690
|
-
const
|
|
727
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
728
|
+
const treeOpts = computeTreeOpts.value
|
|
729
|
+
const { transform } = treeOpts
|
|
730
|
+
const currentCunkList: any[][] = [afterTreeList]
|
|
691
731
|
if (currentItems.length) {
|
|
692
732
|
let chunkIndex = 0
|
|
693
733
|
let stNodeid = currentItems[chunkIndex]
|
|
694
|
-
let optList =
|
|
734
|
+
let optList = afterTreeList
|
|
695
735
|
while (stNodeid && optList && optList.length) {
|
|
696
736
|
stNodeid = currentItems[chunkIndex++]
|
|
697
737
|
const currOption = optList.find(item => stNodeid === getNodeId(item))
|
|
698
|
-
optList = currOption ? currOption[childrenField] : []
|
|
738
|
+
optList = currOption ? currOption[transform ? mapChildrenField : childrenField] : []
|
|
699
739
|
if (!optList || !optList.length) {
|
|
700
740
|
break
|
|
701
741
|
}
|
|
@@ -706,7 +746,7 @@ export default defineVxeComponent({
|
|
|
706
746
|
}
|
|
707
747
|
|
|
708
748
|
const handleCurrentItems = () => {
|
|
709
|
-
const {
|
|
749
|
+
const { afterTreeList } = internalData
|
|
710
750
|
const selectVals = computeSelectVals.value
|
|
711
751
|
const childrenField = computeChildrenField.value
|
|
712
752
|
const mapChildrenField = computeMapChildrenField.value
|
|
@@ -716,7 +756,7 @@ export default defineVxeComponent({
|
|
|
716
756
|
const expandedMaps: Record<string, boolean> = {}
|
|
717
757
|
if (selectVals.length) {
|
|
718
758
|
const lastVal = enNodeValue(XEUtils.last(selectVals))
|
|
719
|
-
const stRest = XEUtils.findTree(
|
|
759
|
+
const stRest = XEUtils.findTree(afterTreeList, (item) => lastVal === getNodeId(item), { children: transform ? mapChildrenField : childrenField })
|
|
720
760
|
if (stRest) {
|
|
721
761
|
const { nodes } = stRest
|
|
722
762
|
nodes.forEach(item => {
|
|
@@ -828,10 +868,11 @@ export default defineVxeComponent({
|
|
|
828
868
|
})
|
|
829
869
|
}
|
|
830
870
|
|
|
831
|
-
const
|
|
871
|
+
const clearSelectedNode = () => {
|
|
832
872
|
internalData.indeterminateRowMaps = {}
|
|
833
873
|
internalData.selectCheckboxMaps = {}
|
|
834
874
|
reactData.updateCheckboxFlag++
|
|
875
|
+
reactData.selectRadioKey = null
|
|
835
876
|
updateCheckboxStatus()
|
|
836
877
|
return nextTick().then(() => {
|
|
837
878
|
return { checkNodeKeys: [], checkNodes: [] }
|
|
@@ -878,7 +919,7 @@ export default defineVxeComponent({
|
|
|
878
919
|
const { $event } = params
|
|
879
920
|
const { multiple, checkedClosable } = props
|
|
880
921
|
const value = multiple ? [] : null
|
|
881
|
-
|
|
922
|
+
clearSelectedNode().then(() => {
|
|
882
923
|
if (checkedClosable) {
|
|
883
924
|
hideOptionPanel($event)
|
|
884
925
|
}
|
|
@@ -967,9 +1008,12 @@ export default defineVxeComponent({
|
|
|
967
1008
|
const { nodeMaps } = internalData
|
|
968
1009
|
const radioOpts = computeRadioOpts.value
|
|
969
1010
|
const childrenField = computeChildrenField.value
|
|
1011
|
+
const treeOpts = computeTreeOpts.value
|
|
1012
|
+
const { transform } = treeOpts
|
|
1013
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
970
1014
|
const { checkMode, checkMethod } = radioOpts
|
|
971
1015
|
const nodeid = getNodeId(node)
|
|
972
|
-
const childList: any[] = node[childrenField]
|
|
1016
|
+
const childList: any[] = node[transform ? mapChildrenField : childrenField]
|
|
973
1017
|
const isExistChild = childList && childList.length > 0
|
|
974
1018
|
const nodeItem = nodeMaps[nodeid] || {}
|
|
975
1019
|
const nLevel = nodeItem.level
|
|
@@ -1133,7 +1177,7 @@ export default defineVxeComponent({
|
|
|
1133
1177
|
const childRowList: any[][] = []
|
|
1134
1178
|
XEUtils.eachTree(afterTreeList, (node) => {
|
|
1135
1179
|
const nodeid = getNodeId(node)
|
|
1136
|
-
const childList = node[childrenField]
|
|
1180
|
+
const childList = node[transform ? mapChildrenField : childrenField]
|
|
1137
1181
|
if (childList && childList.length && !childRowMaps[nodeid]) {
|
|
1138
1182
|
childRowMaps[nodeid] = 1
|
|
1139
1183
|
childRowList.unshift([node, nodeid, childList])
|
|
@@ -1233,7 +1277,7 @@ export default defineVxeComponent({
|
|
|
1233
1277
|
const treeOpts = computeTreeOpts.value
|
|
1234
1278
|
const { transform } = treeOpts
|
|
1235
1279
|
const nodeid = getNodeId(node)
|
|
1236
|
-
const childList: any[] = node[childrenField]
|
|
1280
|
+
const childList: any[] = node[transform ? mapChildrenField : childrenField]
|
|
1237
1281
|
const isExistChild = childList && childList.length > 0
|
|
1238
1282
|
const nodeItem = nodeMaps[nodeid] || {}
|
|
1239
1283
|
const nLevel = nodeItem.level
|
|
@@ -1488,11 +1532,12 @@ export default defineVxeComponent({
|
|
|
1488
1532
|
const { currentNode, selectRadioKey, updateCheckboxFlag, updateExpandedFlag } = reactData
|
|
1489
1533
|
const { nodeMaps, selectCheckboxMaps, indeterminateRowMaps, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData
|
|
1490
1534
|
const treeOpts = computeTreeOpts.value
|
|
1491
|
-
const { lazy, iconLoaded, iconOpen, iconClose } = treeOpts
|
|
1535
|
+
const { lazy, transform, iconLoaded, iconOpen, iconClose } = treeOpts
|
|
1492
1536
|
const childrenField = computeChildrenField.value
|
|
1537
|
+
const mapChildrenField = computeMapChildrenField.value
|
|
1493
1538
|
const labelField = computeLabelField.value
|
|
1494
1539
|
const hasChildField = computeHasChildField.value
|
|
1495
|
-
const childList: any[] = node[childrenField]
|
|
1540
|
+
const childList: any[] = node[transform ? mapChildrenField : childrenField]
|
|
1496
1541
|
const isExistChild = childList && childList.length > 0
|
|
1497
1542
|
const iconSlot = slots.icon
|
|
1498
1543
|
const titleSlot = slots.title
|
|
@@ -1679,7 +1724,7 @@ export default defineVxeComponent({
|
|
|
1679
1724
|
h('div', {
|
|
1680
1725
|
class: 'vxe-tree-select--header-button'
|
|
1681
1726
|
}, [
|
|
1682
|
-
showCheckedButton && showClearButton
|
|
1727
|
+
(showCheckedButton && multiple) || showClearButton
|
|
1683
1728
|
? h('div', {
|
|
1684
1729
|
class: 'vxe-tree-select--selected-btns'
|
|
1685
1730
|
}, [
|
|
@@ -1730,7 +1775,7 @@ export default defineVxeComponent({
|
|
|
1730
1775
|
})
|
|
1731
1776
|
])
|
|
1732
1777
|
]),
|
|
1733
|
-
footerSlot || showTotalButton ||
|
|
1778
|
+
footerSlot || showTotalButton || showCloseButton
|
|
1734
1779
|
? h('div', {
|
|
1735
1780
|
class: 'vxe-cascader--panel-footer'
|
|
1736
1781
|
}, footerSlot
|
|
@@ -1744,7 +1789,7 @@ export default defineVxeComponent({
|
|
|
1744
1789
|
class: 'vxe-cascader--total-btns'
|
|
1745
1790
|
}, getI18n('vxe.treeSelect.total', [selectVals.length]))
|
|
1746
1791
|
: renderEmptyElement($xeCascader),
|
|
1747
|
-
showCloseButton
|
|
1792
|
+
showCloseButton
|
|
1748
1793
|
? h('div', {
|
|
1749
1794
|
class: 'vxe-cascader--oper-btns'
|
|
1750
1795
|
}, [
|
|
@@ -1791,9 +1836,6 @@ export default defineVxeComponent({
|
|
|
1791
1836
|
loadData(props.options || [])
|
|
1792
1837
|
|
|
1793
1838
|
onMounted(() => {
|
|
1794
|
-
if (props.filterable) {
|
|
1795
|
-
errLog('vxe.error.notProp', ['filterable'])
|
|
1796
|
-
}
|
|
1797
1839
|
globalEvents.on($xeCascader, 'mousewheel', handleGlobalMousewheelEvent)
|
|
1798
1840
|
globalEvents.on($xeCascader, 'mousedown', handleGlobalMousedownEvent)
|
|
1799
1841
|
globalEvents.on($xeCascader, 'blur', handleGlobalBlurEvent)
|
|
@@ -6,6 +6,10 @@ import VxeCheckboxComponent from './checkbox'
|
|
|
6
6
|
|
|
7
7
|
import type { VxeCheckboxGroupConstructor, CheckboxGroupInternalData, VxeCheckboxGroupEmits, ValueOf, CheckboxGroupReactData, VxeCheckboxGroupPrivateMethods, CheckboxGroupPrivateMethods, CheckboxGroupPrivateComputed, CheckboxGroupMethods, VxeCheckboxGroupPropTypes, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines } from '../../../types'
|
|
8
8
|
|
|
9
|
+
function createReactData (): CheckboxGroupReactData {
|
|
10
|
+
return {}
|
|
11
|
+
}
|
|
12
|
+
|
|
9
13
|
function createInternalData (): CheckboxGroupInternalData {
|
|
10
14
|
return {
|
|
11
15
|
// isLoaded: false
|
|
@@ -48,8 +52,7 @@ export default defineVxeComponent({
|
|
|
48
52
|
|
|
49
53
|
const xID = XEUtils.uniqueId()
|
|
50
54
|
|
|
51
|
-
const reactData: CheckboxGroupReactData = reactive(
|
|
52
|
-
})
|
|
55
|
+
const reactData: CheckboxGroupReactData = reactive(createReactData())
|
|
53
56
|
|
|
54
57
|
const internalData = createInternalData()
|
|
55
58
|
|
|
@@ -231,6 +234,7 @@ export default defineVxeComponent({
|
|
|
231
234
|
})
|
|
232
235
|
|
|
233
236
|
onUnmounted(() => {
|
|
237
|
+
XEUtils.assign(reactData, createReactData())
|
|
234
238
|
XEUtils.assign(internalData, createInternalData())
|
|
235
239
|
})
|
|
236
240
|
|
|
@@ -2,6 +2,19 @@ import XEUtils from 'xe-utils'
|
|
|
2
2
|
|
|
3
3
|
import type { VxeDatePanelPropTypes } from '../../../types'
|
|
4
4
|
|
|
5
|
+
export function getChunkDefaultNum (selectKey: string) {
|
|
6
|
+
const currDate = new Date()
|
|
7
|
+
switch (selectKey) {
|
|
8
|
+
case 'y': return currDate.getFullYear()
|
|
9
|
+
case 'M': return currDate.getMonth() + 1
|
|
10
|
+
case 'd': return currDate.getDate()
|
|
11
|
+
case 'H': return currDate.getHours()
|
|
12
|
+
case 'm': return currDate.getMinutes()
|
|
13
|
+
case 's': return currDate.getSeconds()
|
|
14
|
+
}
|
|
15
|
+
return 0
|
|
16
|
+
}
|
|
17
|
+
|
|
5
18
|
export function hasTimestampValueType (valueFormat?: string) {
|
|
6
19
|
return valueFormat === 'timestamp'
|
|
7
20
|
}
|
|
@@ -25,19 +38,6 @@ export function handleValueFormat (type: string, valueFormat?: string) {
|
|
|
25
38
|
return 'yyyy-MM-dd'
|
|
26
39
|
}
|
|
27
40
|
|
|
28
|
-
export function handleInputFormat (type: string, inputFormat?: string) {
|
|
29
|
-
if (inputFormat) {
|
|
30
|
-
return inputFormat
|
|
31
|
-
}
|
|
32
|
-
if (type === 'time') {
|
|
33
|
-
return 'HH:mm:ss'
|
|
34
|
-
}
|
|
35
|
-
if (type === 'datetime') {
|
|
36
|
-
return 'yyyy-MM-dd HH:mm:ss'
|
|
37
|
-
}
|
|
38
|
-
return 'yyyy-MM-dd'
|
|
39
|
-
}
|
|
40
|
-
|
|
41
41
|
export function toStringTimeDate (str: string | number | Date | null | undefined) {
|
|
42
42
|
const rest = new Date(2e3, 0, 1)
|
|
43
43
|
if (str) {
|
|
@@ -80,9 +80,9 @@ export function getDateQuarter (date: Date) {
|
|
|
80
80
|
return 4
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
export
|
|
83
|
+
export function parseDateValue (val: string | number | Date | null | undefined, type: VxeDatePanelPropTypes.Type, options: {
|
|
84
84
|
valueFormat: string
|
|
85
|
-
})
|
|
85
|
+
}) {
|
|
86
86
|
const { valueFormat } = options
|
|
87
87
|
if (val) {
|
|
88
88
|
if (type === 'time') {
|
|
@@ -252,6 +252,18 @@ export function getRangeDateByCode (code: 'last1' | 'last3' | 'last7' | 'last30'
|
|
|
252
252
|
/**
|
|
253
253
|
* 判断周的年份是否跨年
|
|
254
254
|
*/
|
|
255
|
-
|
|
255
|
+
function checkWeekOfsetYear (W: number | string, M: number | string) {
|
|
256
256
|
return `${W}` === '1' && `${M}` === '12'
|
|
257
257
|
}
|
|
258
|
+
|
|
259
|
+
export function isAllSameChar (str: string, char: string) {
|
|
260
|
+
if (str.length === 0) {
|
|
261
|
+
return false
|
|
262
|
+
}
|
|
263
|
+
for (let i = 0; i < str.length; i++) {
|
|
264
|
+
if (str[i] !== char) {
|
|
265
|
+
return false
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return true
|
|
269
|
+
}
|