@qynpm/ui 1.1.0 → 1.2.0

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.
@@ -0,0 +1 @@
1
+ "use strict";const M=require("element-plus"),t=require("vue"),I=require("@element-plus/icons-vue"),g=require("element-plus"),Ze=require("./js.cookie-BmJmHEx1.cjs"),Je=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),Qe="Admin-Token";function Ne(T=Qe){return Ze.api.get(T)}const Ge=Object.assign({name:"QyUpload"},{__name:"index",props:{modelValue:{type:[Object,Array,String],default:void 0},selectedFiles:{type:Array,default:()=>[]},autoUpload:{type:Boolean,default:!0},variant:{type:String,default:"media-card"},defaultValue:{type:Object,default:()=>({files:"",text:""})},valueFormat:{type:String,default:"object"},showText:{type:Boolean,default:!0},showPasteInput:{type:Boolean,default:!1},pastePlaceholder:{type:String,default:"输入文字"},multiple:{type:Boolean,default:!0},disabled:{type:Boolean,default:void 0},fileType:{type:Array,default:()=>[]},fileSize:{type:Number,default:10},limit:{type:Number,default:9},isShowTip:{type:Boolean,default:!1},api:{type:String,default:"/permission-api/common/uploads"},name:{type:String,default:"file"},tokenKey:{type:String,default:"Admin-Token"},supportVideo:{type:Boolean,default:!1},size:{type:String,default:"default"},disableDrag:{type:Boolean,default:!1},callBack:{type:Function,default:null},extraData:{type:Object,default:()=>({})},uploadRequest:{type:Function,default:null}},emits:["update:modelValue","update:selectedFiles","selectedFilesChange","change","success","error","remove","invalid","preview"],setup(T,{expose:r,emit:p}){const n=T,m=p,ie=t.ref(null),y=t.ref(null),L=t.ref(null),s=t.ref([]),P=t.ref(null),W=t.ref(null),k=new Map,U=new WeakMap;let d=Date.now(),b=!1;const C=t.ref(!1),X=t.ref([]),re=t.ref(0),se=t.ref(!1),ue=t.ref(""),de=t.ref(""),q=new Set,B=new Map;function E(e){q.delete(e)&&URL.revokeObjectURL(e)}function H(){for(const e of q)E(e)}function S(e){const a=B.get(e);a&&(B.delete(e),a.close())}function Z(){for(const e of B.keys())S(e)}function J(e){var a;(a=k.get(e))==null||a()}function Q(){for(const e of k.values())e()}const j=t.ref(!1),_=t.ref(""),De=t.ref(!1);t.onMounted(()=>{n.modelValue!==void 0||!n.autoUpload||Y(n.defaultValue)});const Fe=t.computed(()=>({large:"160px",default:"140px",small:"80px"})[n.size]??n.size),w=g.useFormDisabled(),Me=t.computed(()=>s.value.some(e=>e.status==="uploading")),Te=t.computed(()=>n.variant==="file-list"||n.supportVideo?"text":"picture-card"),ce=t.computed(()=>n.supportVideo?1:!n.autoUpload&&!n.multiple?2:n.limit),qe=t.computed(()=>{var e;return n.isShowTip&&(n.fileSize||((e=x.value)==null?void 0:e.length))}),x=t.computed(()=>{var e;return(e=n.fileType)!=null&&e.length?n.fileType.map(a=>String(a).trim().replace(/^\./,"").toLowerCase()).filter(Boolean):n.variant==="file-list"?[]:n.supportVideo?["mp4","mov","avi"]:["jpg","jpeg","png","gif","webp"]}),z=t.computed(()=>{if(!n.autoUpload&&!n.multiple)return!1;const e=n.supportVideo?1:n.limit;return s.value.length>=e}),Ee=t.computed(()=>x.value.map(e=>`.${e}`).join(",")),Se=t.computed(()=>({"qy-upload--attachment-card":n.variant==="attachment-card","qy-upload--reached-limit":z.value,"qy-upload--disabled":w.value,"qy-upload--video":n.supportVideo,"qy-upload--without-text":!n.showText&&!n.showPasteInput}));t.watch(_,()=>{b||D()}),t.watch(()=>n.modelValue,e=>{n.autoUpload&&e!==void 0&&Y(e)},{immediate:!0,deep:!0}),t.watch(()=>[n.autoUpload,n.selectedFiles],([e,a])=>{e||(s.value=N(a))},{immediate:!0,deep:!0});function G(e){return Array.isArray(e)?e.filter(Boolean):e?String(e).split(",").filter(Boolean):[]}function fe(e){return Array.isArray(e)?{files:e,text:""}:typeof e=="string"?{files:G(e),text:""}:e&&typeof e=="object"?{files:G(e.files),text:e.text??""}:{files:[],text:""}}function pe(e=[]){return e.map((a,l)=>({name:(n.variant==="attachment-card"?String(a).split(/[?#]/,1)[0]:String(a)).split("/").pop()||`file-${l}`,url:a,status:"success",uid:g.genFileId()}))}function N(e=[]){return e.filter(Boolean).map((a,l)=>{const o=t.toRaw(a);return{name:o.name,raw:o,status:"ready",uid:me(o,l)}})}function me(e,a){if(e.uid!=null)return e.uid;const l=U.get(e);return l??(d+=a+1,U.set(e,d),d)}function A(e=s.value){return e.map(a=>{const l=a.raw??(a instanceof File?a:null);return l?t.toRaw(l):null}).filter(Boolean)}function R(e){m("update:selectedFiles",e),m("selectedFilesChange",e)}function Re(e,a){if(n.autoUpload)return;const l=e==null?void 0:e.raw;if(l&&!O(l)){s.value=N(n.selectedFiles);return}const o=A(a);l&&!o.includes(l)&&o.push(l);const i=n.multiple?o:o.slice(-1);s.value=N(i),R(i)}function ge(e){const a=new Set(e.map(o=>o.url)),l=s.value.filter(o=>(o.status==="ready"||o.status==="uploading")&&!a.has(o.url));return[...e,...l]}function Y(e){const a=fe(e);b=!0,_.value=a.text,s.value=ge(pe(a.files)),t.nextTick(()=>{b=!1})}function $(e){return n.valueFormat==="array"?e.files:n.valueFormat==="string"?e.files.join(","):e}function Ie(){var e;(e=P.value)==null||e.focus()}function Le(e){e.target.value=""}function D(e){const o={files:(e??s.value).filter(i=>i.status==="success"&&i.url).map(i=>i.url),text:_.value};m("update:modelValue",$(o)),m("change",o),n.callBack&&n.callBack(o)}function Pe(e,a){if(S(e.uid),J(e.uid),E(e.url),!n.autoUpload){const l=A(a);s.value=N(l),R(l),m("remove",e,a);return}D(a),m("remove",e,a)}function ee(e){var l;const a=(e==null?void 0:e.name)||"";return a.includes(".")&&((l=a.split(".").pop())==null?void 0:l.toLowerCase())||""}function te(e){var i,u,c;const a=((u=(i=e==null?void 0:e.type)==null?void 0:i.toLowerCase)==null?void 0:u.call(i))||"",l={"image/jpeg":["jpg","jpeg"],"image/png":["png"],"image/gif":["gif"],"image/bmp":["bmp"],"image/webp":["webp"],"video/mp4":["mp4"],"video/quicktime":["mov"],"video/x-msvideo":["avi"],"video/webm":["webm"]};if(l[a])return l[a];const o=(c=a.split("/")[1])==null?void 0:c.split("+")[0];return o?[o]:[]}function ve(e){if(!x.value.length)return!0;const a=ee(e);if(n.variant==="attachment-card")return x.value.includes(a);const l=te(e);return[a,...l].some(o=>x.value.includes(o))}function O(e){if(n.fileSize>0&&e.size>n.fileSize*1024*1024){const l={code:"size",file:e,message:`文件大小不能超过${n.fileSize}M`};return g.ElMessage.warning(l.message),m("invalid",l),!1}if(!ve(e)){const l={code:"extension",file:e,message:`格式不支持,仅允许: ${x.value.join("/")}`};return g.ElMessage.warning(l.message),m("invalid",l),!1}return!0}async function he(e,a,l,o,i){const u=ne(e),c={close:()=>o.close()};B.set(i,c);const h=()=>B.get(i)===c;try{const f=await n.uploadRequest({file:e,formData:u,api:n.api,name:n.name,tokenKey:n.tokenKey,extraData:n.extraData});if(!h())return;const F=ye(f);if(!F){const V=new Error("上传失败,未返回文件地址");g.ElMessage.error(V.message),m("error",V),l==null||l(V);return}g.ElMessage.success("上传成功"),a==null||a({...typeof f=="object"&&f?f:{},url:F})}catch(f){if(!h())return;g.ElMessage.error("上传失败"),m("error",f),l==null||l(f)}finally{h()&&S(i)}}function ne(e){const a=new FormData;return a.append(n.name,e),n.extraData&&Object.entries(n.extraData).forEach(([l,o])=>a.append(l,o)),a}function ye(e){var o,i;if(typeof e=="string")return e;const a=e||{},l=a.urls??a.url??((o=a.data)==null?void 0:o.urls)??((i=a.data)==null?void 0:i.url)??"";return Array.isArray(l)?l[0]||"":l||""}function ae(e,a,l,o,i=e.uid){const u=g.ElLoading.service({target:y.value,text:"上传中",background:"rgba(255,255,255,0.7)"});if(n.uploadRequest){he(e,l,o,u,i);return}const c=n.api.startsWith("http")?n.api:window.location.origin+n.api.replace(/^([^/])/,"/$1"),h=ne(e),f=new XMLHttpRequest;let F=!1;const V=()=>F?!1:(F=!0,k.delete(i),u.close(),!0);k.set(i,()=>{V()&&f.abort()}),f.onabort=V,f.open("POST",c);const Be=Ne(n.tokenKey);Be&&f.setRequestHeader("Authorization",`Bearer ${Be}`),f.upload.onprogress=v=>{!F&&v.total>0&&(a==null||a({percent:v.loaded/v.total*100}))},f.onload=()=>{if(V()){if(f.status<200||f.status>=300){const v=`上传失败 (HTTP ${f.status})`;g.ElMessage.error(v),m("error",{msg:v,status:f.status}),o==null||o(new Error(v));return}try{const v=JSON.parse(f.responseText);v.code===200&&v.urls?(g.ElMessage.success("上传成功"),l==null||l({...v,url:v.urls})):(g.ElMessage.error(v.msg||"上传失败"),m("error",v),o==null||o(v))}catch{g.ElMessage.error("上传失败,响应格式错误"),m("error",new Error("Response parse error")),o==null||o(new Error("Response parse error"))}}},f.onerror=()=>{V()&&(g.ElMessage.error("上传失败,网络异常"),m("error",new Error("Network error")),o==null||o(new Error("Network error")))},f.send(h)}function we(e){return w.value?!1:O(e)}function xe(e,a){const l=s.value.find(o=>{var i;return o.uid===(e==null?void 0:e.uid)||((i=o.raw)==null?void 0:i.uid)===(e==null?void 0:e.uid)});l&&(l.url=a,l.status="success")}function je(e){ae(e.file,e.onProgress,a=>{xe(e.file,a.url),e.onSuccess(a),D(),m("success",a)},a=>e.onError(a))}function le(e){var l;const a=((l=e.name)==null?void 0:l.split(/[?#]/,1)[0])||"";try{return decodeURIComponent(a)}catch{return a}}function oe(e){return/\.(?:jpe?g|png|gif|bmp|webp|avif|svg|ico)$/i.test(le(e))}function ze(e){var i;if(!e.url)return;const a=n.variant==="attachment-card";if(a&&!oe(e)){m("preview",{url:e.url,name:le(e)});return}const l=((i=e.url.split(".").pop())==null?void 0:i.toLowerCase())||"";if(["mp4","mov","avi","webm"].includes(l)){ue.value=e.url,de.value=e.name||"视频预览",se.value=!0;return}const o=s.value.filter(u=>{var c;return u.status==="success"&&u.url&&(a?oe(u):!["mp4","mov","avi","webm"].includes((c=u.url.split(".").pop())==null?void 0:c.toLowerCase()))});X.value=o.map(u=>u.url),re.value=o.findIndex(u=>u.uid===e.uid)||0,C.value=!0}function Ae(){C.value=!1,X.value=[]}function Ve(e,a){if(e.name&&ee(e))return e;const l=te(e).find(o=>x.value.includes(o));return l?new File([e],`paste-${Date.now()+a}.${l}`,{type:e.type,lastModified:e.lastModified}):e}function K(e){if(!n.autoUpload){const a=A(),l=e.filter(i=>O(i));if(!l.length)return;const o=n.multiple?[...a,...l].slice(0,n.limit):l.slice(-1);s.value=N(o),R(o);return}for(let a=0;a<e.length&&!(s.value.length>=ce.value);a++){const l=Ve(e[a],a);if(!we(l))continue;const o=g.genFileId(),i=URL.createObjectURL(l);q.add(i),s.value.push({uid:o,name:l.name||`file-${o}`,status:"uploading",percentage:0,url:i}),ae(l,u=>{const c=s.value.find(h=>h.uid===o);c&&(c.percentage=u.percent)},u=>{const c=s.value.find(h=>h.uid===o);c&&(c.url!==u.url&&E(c.url),c.status="success",c.url=u.url,D(),m("success",u))},()=>be(o),o)}}function Oe(e){const a=e.target,l=Array.from(a.files||[]);if(a.value="",w.value||!l.length)return;const o=n.supportVideo||!n.multiple?l.slice(0,1):l;K(o)}function ke(e){const a=Array.from((e==null?void 0:e.files)||[]).filter(u=>{var c;return(c=u.type)==null?void 0:c.startsWith("image/")});if(a.length)return a;const l=e==null?void 0:e.items;if(!l)return[];const o=[],i=new Set;for(let u=0;u<l.length;u++){const c=l[u];if(c.kind==="file"&&c.type.startsWith("image/")){const h=c.getAsFile();h&&!i.has(h)&&(i.add(h),o.push(h))}}return o}function Ke(e){if(w.value)return;const a=ke(e.clipboardData);a.length&&(e.preventDefault(),K(a))}function We(){w.value||n.disableDrag||(j.value=!0)}function Xe(){j.value=!1}function He(e){var l;if(j.value=!1,w.value||n.disableDrag||z.value)return;const a=Array.from(((l=e.dataTransfer)==null?void 0:l.files)||[]);a.length&&K(a)}function be(e){S(e),J(e);const a=s.value.findIndex(l=>l.uid===e);a!==-1&&(E(s.value[a].url),s.value.splice(a,1))}t.onBeforeUnmount(()=>{Z(),Q(),H()});function _e(){var e;w.value||z.value||(e=L.value)==null||e.click()}function Ue(){var e;Z(),Q();for(const a of s.value)(e=a.url)!=null&&e.startsWith("blob:")&&q.add(a.url);H(),s.value=[],_.value="",R([]),n.autoUpload&&D()}r({openFileDialog:_e,getPathList:()=>s.value.filter(e=>e.status==="success").map(e=>e.url),clearFiles:Ue,getValue:()=>({files:s.value.filter(e=>e.status==="success"&&e.url).map(e=>e.url),text:_.value}),getModelValue:()=>$({files:s.value.filter(e=>e.status==="success"&&e.url).map(e=>e.url),text:_.value})});const Ce={props:n,emit:m,uploadRef:ie,rootRef:y,nativeInputRef:L,fileList:s,inputRef:P,pasteInputRef:W,pendingXhrs:k,selectedFileUids:U,get selectedFileUid(){return d},set selectedFileUid(e){d=e},get syncingFromValue(){return b},set syncingFromValue(e){b=e},viewerVisible:C,viewerUrlList:X,viewerIndex:re,videoVisible:se,videoUrl:ue,videoTitle:de,objectUrls:q,pendingCustomUploads:B,releaseObjectUrl:E,releaseObjectUrls:H,cancelCustomUpload:S,cancelCustomUploads:Z,cancelXhr:J,cancelXhrs:Q,isDragOver:j,localText:_,textExpanded:De,sizeValue:Fe,isUploadDisabled:w,isUploading:Me,uploadListType:Te,effectiveLimit:ce,shouldShowTip:qe,allowedExtensions:x,isReachedLimit:z,acceptAttr:Ee,uploadClasses:Se,normalizeFilesInput:G,parseValue:fe,createFileList:pe,createSelectedFileList:N,getSelectedFileUid:me,getSelectedRawFiles:A,emitSelectedFiles:R,handleFileChange:Re,mergePendingFileList:ge,syncValueToState:Y,formatModelValue:$,focusTextarea:Ie,clearPasteInput:Le,handleSyncValue:D,handleRemove:Pe,getFileNameExtension:ee,getMimeExtensions:te,isAllowedFileType:ve,validateFile:O,uploadViaCustomRequest:he,createUploadFormData:ne,resolveUploadUrl:ye,uploadViaXhr:ae,handleBeforeUpload:we,applyUploadResultToFile:xe,handleCustomUpload:je,attachmentName:le,isAttachmentImage:oe,handlePreview:ze,closeViewer:Ae,createNamedPasteFile:Ve,uploadFiles:K,handleNativeInputChange:Oe,collectImageFilesFromClipboard:ke,handlePaste:Ke,handleDragOver:We,handleDragLeave:Xe,handleDrop:He,handleRemoveByUid:be,openFileDialog:_e,clearFiles:Ue,ref:t.ref,computed:t.computed,watch:t.watch,onMounted:t.onMounted,onBeforeUnmount:t.onBeforeUnmount,nextTick:t.nextTick,toRaw:t.toRaw,get Plus(){return I.Plus},get InfoFilled(){return I.InfoFilled},get Document(){return I.Document},get ZoomIn(){return I.ZoomIn},get Delete(){return I.Delete},get ElMessage(){return g.ElMessage},get ElLoading(){return g.ElLoading},get genFileId(){return g.genFileId},get useFormDisabled(){return g.useFormDisabled},get getToken(){return Ne}};return Object.defineProperty(Ce,"__isScriptSetup",{enumerable:!1,value:!0}),Ce}}),Ye=["accept","multiple","disabled"],$e={class:"qy-upload__attachment"},et=["src","alt"],tt=["title"],nt={key:2,class:"qy-upload__attachment-progress",role:"status"},at={key:3,class:"qy-upload__attachment-actions"},lt=["onClick"],ot=["onClick"],it=["disabled"],rt={class:"qy-upload__hint"},st=["placeholder","disabled"],ut=["src"],dt={key:1,class:"qy-upload__tip"},ct={class:"error"},ft={class:"error"};function pt(T,r,p,n,m,ie){var U;const y=M.ElIcon,L=M.ElInput,s=M.ElPopover,P=M.ElUpload,W=M.ElImageViewer,k=M.ElDialog;return t.openBlock(),t.createElementBlock("div",{ref:"rootRef",class:t.normalizeClass(["qy-upload",n.uploadClasses]),style:t.normalizeStyle({"--qy-upload-size":n.sizeValue})},[t.createElementVNode("input",{ref:"nativeInputRef",class:"qy-upload__native-input",type:"file",accept:n.acceptAttr,multiple:p.supportVideo?!1:p.multiple,disabled:n.isUploadDisabled,onChange:n.handleNativeInputChange},null,40,Ye),t.createVNode(P,{ref:"uploadRef","file-list":n.fileList,"onUpdate:fileList":r[7]||(r[7]=d=>n.fileList=d),action:"#",multiple:p.supportVideo?!1:p.multiple,limit:n.effectiveLimit,"auto-upload":p.autoUpload,"list-type":n.uploadListType,accept:n.acceptAttr,disabled:n.isUploadDisabled,"http-request":n.handleCustomUpload,"before-upload":n.handleBeforeUpload,"on-change":n.handleFileChange,"on-preview":n.handlePreview,"on-remove":n.handleRemove},t.createSlots({default:t.withCtx(()=>[p.variant!=="file-list"&&!n.isReachedLimit?(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["qy-upload__trigger",{"is-dragover":n.isDragOver}]),onPaste:n.handlePaste,onDragover:t.withModifiers(n.handleDragOver,["prevent"]),onDragleave:t.withModifiers(n.handleDragLeave,["prevent"]),onDrop:t.withModifiers(n.handleDrop,["prevent"])},[t.createVNode(y,{class:"qy-upload__icon"},{default:t.withCtx(()=>[t.createVNode(n.Plus)]),_:1}),p.supportVideo?(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[r[10]||(r[10]=t.createElementVNode("span",{class:"qy-upload__label"},"点击上传视频",-1)),t.createElementVNode("span",rt,"支持 "+t.toDisplayString(n.allowedExtensions.join(" / "))+",不超过 "+t.toDisplayString(p.fileSize)+"MB",1)],64)):t.createCommentVNode("v-if",!0),t.createCommentVNode(" 文字输入框:可通过 showText 关闭,凭证上传这类纯图片场景不需要展示 "),p.showText?(t.openBlock(),t.createElementBlock("div",{key:1,class:"qy-upload__text",onClick:r[4]||(r[4]=t.withModifiers(()=>{},["stop"])),onPaste:t.withModifiers(n.handlePaste,["stop"])},[t.createVNode(s,{visible:n.textExpanded,"onUpdate:visible":r[3]||(r[3]=d=>n.textExpanded=d),placement:"bottom-start",width:220,trigger:"click","popper-class":"qy-upload__text-popover",onAfterEnter:n.focusTextarea},{reference:t.withCtx(()=>[t.createElementVNode("div",{class:t.normalizeClass(["qy-upload__text-preview",{"is-placeholder":!n.localText}])},t.toDisplayString(n.localText||p.pastePlaceholder),3)]),default:t.withCtx(()=>[t.createVNode(L,{ref:"inputRef",modelValue:n.localText,"onUpdate:modelValue":r[1]||(r[1]=d=>n.localText=d),type:"textarea",autosize:{minRows:2,maxRows:5},placeholder:p.pastePlaceholder,disabled:n.isUploadDisabled,onBlur:r[2]||(r[2]=d=>n.textExpanded=!1),onPaste:t.withModifiers(n.handlePaste,["stop"])},null,8,["modelValue","placeholder","disabled"])]),_:1},8,["visible"])],32)):p.showPasteInput?(t.openBlock(),t.createElementBlock(t.Fragment,{key:2},[t.createCommentVNode(" 纯粘贴入口:不保存文字,只提供一个可聚焦区域承接 Ctrl+V 图片 "),t.createElementVNode("div",{class:"qy-upload__text",onClick:r[6]||(r[6]=t.withModifiers(()=>{},["stop"])),onPaste:t.withModifiers(n.handlePaste,["stop"])},[t.createElementVNode("input",{ref:"pasteInputRef",class:"qy-upload__paste-input",placeholder:p.pastePlaceholder,disabled:n.isUploadDisabled,onPaste:t.withModifiers(n.handlePaste,["stop"]),onInput:n.clearPasteInput,onClick:r[5]||(r[5]=t.withModifiers(()=>{},["stop"]))},null,40,st)],32)],2112)):t.createCommentVNode("v-if",!0)],34)):t.createCommentVNode("v-if",!0)]),_:2},[p.variant==="attachment-card"?{name:"file",fn:t.withCtx(({file:d})=>[t.createElementVNode("div",$e,[n.isAttachmentImage(d)&&d.url?(t.openBlock(),t.createElementBlock("img",{key:0,class:"qy-upload__attachment-image",src:d.url,alt:n.attachmentName(d)},null,8,et)):(t.openBlock(),t.createElementBlock("div",{key:1,class:"qy-upload__attachment-file",title:n.attachmentName(d)},[t.createVNode(y,null,{default:t.withCtx(()=>[t.createVNode(n.Document)]),_:1}),t.createElementVNode("span",null,t.toDisplayString(n.attachmentName(d)),1)],8,tt)),d.status==="uploading"?(t.openBlock(),t.createElementBlock("span",nt,"上传中")):t.createCommentVNode("v-if",!0),d.status==="success"||!n.isUploadDisabled?(t.openBlock(),t.createElementBlock("div",at,[d.status==="success"?(t.openBlock(),t.createElementBlock("button",{key:0,type:"button","aria-label":"预览附件",onClick:t.withModifiers(b=>n.handlePreview(d),["stop"])},[t.createVNode(y,null,{default:t.withCtx(()=>[t.createVNode(n.ZoomIn)]),_:1})],8,lt)):t.createCommentVNode("v-if",!0),n.isUploadDisabled?t.createCommentVNode("v-if",!0):(t.openBlock(),t.createElementBlock("button",{key:1,type:"button","aria-label":"删除附件",onClick:t.withModifiers(b=>{var C;return(C=n.uploadRef)==null?void 0:C.handleRemove(d)},["stop"])},[t.createVNode(y,null,{default:t.withCtx(()=>[t.createVNode(n.Delete)]),_:1})],8,ot))])):t.createCommentVNode("v-if",!0)])]),key:"0"}:void 0,p.variant==="file-list"?{name:"trigger",fn:t.withCtx(()=>[t.createElementVNode("div",{class:"qy-upload__file-trigger",onClick:r[0]||(r[0]=t.withModifiers(()=>{},["stop"])),onDragover:t.withModifiers(n.handleDragOver,["prevent"]),onDragleave:t.withModifiers(n.handleDragLeave,["prevent"]),onDrop:t.withModifiers(n.handleDrop,["prevent"])},[t.renderSlot(T.$slots,"trigger",{open:n.openFileDialog,disabled:n.isUploadDisabled,uploading:n.isUploading},()=>[t.createElementVNode("button",{class:"qy-upload__file-button",type:"button",disabled:n.isUploadDisabled,onClick:n.openFileDialog}," 选择文件 ",8,it)],!0)],32)]),key:"1"}:void 0]),1032,["file-list","multiple","limit","auto-upload","list-type","accept","disabled"]),n.viewerVisible?(t.openBlock(),t.createBlock(W,{key:0,teleported:p.variant==="attachment-card","url-list":n.viewerUrlList,"initial-index":n.viewerIndex,onClose:n.closeViewer},null,8,["teleported","url-list","initial-index"])):t.createCommentVNode("v-if",!0),t.createCommentVNode(" 视频预览弹窗 "),t.createVNode(k,{modelValue:n.videoVisible,"onUpdate:modelValue":r[8]||(r[8]=d=>n.videoVisible=d),title:n.videoTitle,width:"640px","append-to-body":"","destroy-on-close":"",onClose:r[9]||(r[9]=d=>n.videoVisible=!1)},{default:t.withCtx(()=>[n.videoVisible?(t.openBlock(),t.createElementBlock("video",{key:0,src:n.videoUrl,controls:"",autoplay:"",style:{width:"100%","max-height":"400px","border-radius":"4px"}},null,8,ut)):t.createCommentVNode("v-if",!0)]),_:1},8,["modelValue","title"]),n.shouldShowTip?(t.openBlock(),t.createElementBlock("div",dt,[t.createVNode(y,null,{default:t.withCtx(()=>[t.createVNode(n.InfoFilled)]),_:1}),t.createElementVNode("span",null,[r[13]||(r[13]=t.createTextVNode(" 请上传 ",-1)),p.fileSize?(t.openBlock(),t.createElementBlock(t.Fragment,{key:0},[r[11]||(r[11]=t.createTextVNode("大小不超过 ",-1)),t.createElementVNode("b",ct,t.toDisplayString(p.fileSize)+"MB",1)],64)):t.createCommentVNode("v-if",!0),(U=n.allowedExtensions)!=null&&U.length?(t.openBlock(),t.createElementBlock(t.Fragment,{key:1},[r[12]||(r[12]=t.createTextVNode(",格式为 ",-1)),t.createElementVNode("b",ft,t.toDisplayString(n.allowedExtensions.join("/")),1)],64)):t.createCommentVNode("v-if",!0),r[14]||(r[14]=t.createTextVNode(" 的文件。 ",-1))])])):t.createCommentVNode("v-if",!0)],6)}const mt=Je._export_sfc(Ge,[["render",pt],["__scopeId","data-v-61da1df2"],["__file","/home/runner/work/qy-component/qy-component/packages/ui/lib/upload/index.vue"]]);exports.Upload=mt;
@@ -1 +1 @@
1
- "use strict";const e=require("vue"),y=require("./index-B7uUS7TF.cjs"),k=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),q=e.defineComponent({name:"QyFilePicker",__name:"index",props:{modelValue:{type:null,required:!1,default:null},extensions:{type:Array,required:!1,default:()=>[]},maxSizeMb:{type:Number,required:!1,default:20},disabled:{type:Boolean,required:!1,default:!1},drag:{type:Boolean,required:!1,default:!0},placeholder:{type:String,required:!1,default:"请选择文件"}},emits:["update:modelValue","change","clear","invalid"],setup(c,{expose:u,emit:a}){const l=c,n=a,r=e.ref(null),t=e.ref(!1),o=e.computed(()=>l.modelValue?[l.modelValue]:[]);let d=!1;function f(){var i;l.disabled||(i=r.value)==null||i.openFileDialog()}function s(){var i;l.disabled||(d=!0,(i=r.value)==null||i.clearFiles(),d=!1,n("update:modelValue",null),n("change",null),n("clear"))}function h(){l.disabled||s()}function g(){!l.disabled&&l.drag&&(t.value=!0)}function p(){t.value=!1}function v(i){if(d)return;const m=i[0]??null;n("update:modelValue",m),n("change",m)}function b(i){n("invalid",i)}u({openFileDialog:f,clear:s});const _={props:l,emit:n,uploadRef:r,isDragover:t,selectedFiles:o,get clearing(){return d},set clearing(i){d=i},openFileDialog:f,clear:s,handleClearClick:h,handleDragenter:g,handleDragleave:p,handleSelectedFiles:v,handleInvalid:b,QyUpload:y.Upload};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),x=["tabindex","aria-disabled","onClick","onKeydown"],D={class:"qy-file-picker__label"},w={key:0,class:"qy-file-picker__hint"},V=["disabled"];function C(c,u,a,l,n,r){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["qy-file-picker",{"is-disabled":a.disabled,"is-dragover":l.isDragover}])},[e.createVNode(l.QyUpload,{ref:"uploadRef",variant:"file-list","auto-upload":!1,"selected-files":l.selectedFiles,"file-type":a.extensions,"file-size":a.maxSizeMb,disabled:a.disabled,"disable-drag":!a.drag,multiple:!1,limit:1,"show-text":!1,"show-paste-input":!1,"onUpdate:selectedFiles":l.handleSelectedFiles,onInvalid:l.handleInvalid},{trigger:e.withCtx(({open:t})=>{var o;return[e.createElementVNode("div",{class:e.normalizeClass(["qy-file-picker__dropzone",{"is-click-only":!a.drag}]),role:"button",tabindex:a.disabled?-1:0,"aria-disabled":a.disabled?"true":void 0,onClick:t,onKeydown:[e.withKeys(e.withModifiers(t,["prevent"]),["enter"]),e.withKeys(e.withModifiers(t,["prevent"]),["space"])],onDragenter:e.withModifiers(l.handleDragenter,["prevent"]),onDragover:e.withModifiers(l.handleDragenter,["prevent"]),onDragleave:e.withModifiers(l.handleDragleave,["prevent"]),onDrop:l.handleDragleave},[e.createElementVNode("span",D,e.toDisplayString(((o=a.modelValue)==null?void 0:o.name)||a.placeholder),1),a.drag?(e.openBlock(),e.createElementBlock("span",w," 点击选择或拖拽单个文件到此处 ")):e.createCommentVNode("v-if",!0)],42,x)]}),_:1},8,["selected-files","file-type","file-size","disabled","disable-drag"]),a.modelValue?(e.openBlock(),e.createElementBlock("button",{key:0,class:"qy-file-picker__clear",type:"button",disabled:a.disabled,onClick:e.withModifiers(l.handleClearClick,["stop"])}," 清空 ",8,V)):e.createCommentVNode("v-if",!0)],2)}const F=k._export_sfc(q,[["render",C],["__scopeId","data-v-89753530"],["__file","/home/runner/work/qy-component/qy-component/packages/ui/lib/qy-file-picker/index.vue"]]);exports.FilePicker=F;
1
+ "use strict";const e=require("vue"),y=require("./index-BoyiE_59.cjs"),k=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),q=e.defineComponent({name:"QyFilePicker",__name:"index",props:{modelValue:{type:null,required:!1,default:null},extensions:{type:Array,required:!1,default:()=>[]},maxSizeMb:{type:Number,required:!1,default:20},disabled:{type:Boolean,required:!1,default:!1},drag:{type:Boolean,required:!1,default:!0},placeholder:{type:String,required:!1,default:"请选择文件"}},emits:["update:modelValue","change","clear","invalid"],setup(c,{expose:u,emit:a}){const l=c,n=a,r=e.ref(null),t=e.ref(!1),o=e.computed(()=>l.modelValue?[l.modelValue]:[]);let d=!1;function f(){var i;l.disabled||(i=r.value)==null||i.openFileDialog()}function s(){var i;l.disabled||(d=!0,(i=r.value)==null||i.clearFiles(),d=!1,n("update:modelValue",null),n("change",null),n("clear"))}function h(){l.disabled||s()}function g(){!l.disabled&&l.drag&&(t.value=!0)}function p(){t.value=!1}function v(i){if(d)return;const m=i[0]??null;n("update:modelValue",m),n("change",m)}function b(i){n("invalid",i)}u({openFileDialog:f,clear:s});const _={props:l,emit:n,uploadRef:r,isDragover:t,selectedFiles:o,get clearing(){return d},set clearing(i){d=i},openFileDialog:f,clear:s,handleClearClick:h,handleDragenter:g,handleDragleave:p,handleSelectedFiles:v,handleInvalid:b,QyUpload:y.Upload};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}}),x=["tabindex","aria-disabled","onClick","onKeydown"],D={class:"qy-file-picker__label"},w={key:0,class:"qy-file-picker__hint"},V=["disabled"];function C(c,u,a,l,n,r){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["qy-file-picker",{"is-disabled":a.disabled,"is-dragover":l.isDragover}])},[e.createVNode(l.QyUpload,{ref:"uploadRef",variant:"file-list","auto-upload":!1,"selected-files":l.selectedFiles,"file-type":a.extensions,"file-size":a.maxSizeMb,disabled:a.disabled,"disable-drag":!a.drag,multiple:!1,limit:1,"show-text":!1,"show-paste-input":!1,"onUpdate:selectedFiles":l.handleSelectedFiles,onInvalid:l.handleInvalid},{trigger:e.withCtx(({open:t})=>{var o;return[e.createElementVNode("div",{class:e.normalizeClass(["qy-file-picker__dropzone",{"is-click-only":!a.drag}]),role:"button",tabindex:a.disabled?-1:0,"aria-disabled":a.disabled?"true":void 0,onClick:t,onKeydown:[e.withKeys(e.withModifiers(t,["prevent"]),["enter"]),e.withKeys(e.withModifiers(t,["prevent"]),["space"])],onDragenter:e.withModifiers(l.handleDragenter,["prevent"]),onDragover:e.withModifiers(l.handleDragenter,["prevent"]),onDragleave:e.withModifiers(l.handleDragleave,["prevent"]),onDrop:l.handleDragleave},[e.createElementVNode("span",D,e.toDisplayString(((o=a.modelValue)==null?void 0:o.name)||a.placeholder),1),a.drag?(e.openBlock(),e.createElementBlock("span",w," 点击选择或拖拽单个文件到此处 ")):e.createCommentVNode("v-if",!0)],42,x)]}),_:1},8,["selected-files","file-type","file-size","disabled","disable-drag"]),a.modelValue?(e.openBlock(),e.createElementBlock("button",{key:0,class:"qy-file-picker__clear",type:"button",disabled:a.disabled,onClick:e.withModifiers(l.handleClearClick,["stop"])}," 清空 ",8,V)):e.createCommentVNode("v-if",!0)],2)}const F=k._export_sfc(q,[["render",C],["__scopeId","data-v-89753530"],["__file","/home/runner/work/qy-component/qy-component/packages/ui/lib/qy-file-picker/index.vue"]]);exports.FilePicker=F;