znyg-frontend-common 1.1.15 → 1.1.16
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/es/hooks/useDrawerV2/src/index.mjs +1 -1
- package/es/hooks/useDrawerV2/src/index.mjs.map +1 -1
- package/es/index.mjs +1 -1
- package/es/index.mjs.map +1 -1
- package/lib/hooks/useDrawerV2/src/index.js +1 -1
- package/lib/hooks/useDrawerV2/src/index.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ref as e,nextTick as o,render as r,markRaw as n,reactive as t,unref as l,createVNode as c,mergeProps as s,Fragment as a,h as d,getCurrentInstance as i}from"vue";import{ElConfigProvider as p,ElDrawer as f,ElButton as u}from"element-plus";var w=Object.defineProperty,h=(e,o)=>w(e,"name",{value:o,configurable:!0});const m="zn-drawer-v2";let v,y,g=0;const C=new Map,L=new Map,I=[],D=new Map,k=[],x=e([]),b=new Set,R=h((()=>{const e=document.querySelector(":not(:root):fullscreen");return e||document.querySelector("body")}),"getFather"),O=h((e=>{o((()=>{const o=document.querySelector(`#${m}-${e} .el-drawer__body`);o&&(o.scrollTop=0);const r=document.querySelectorAll(`#${m}-${e} .el-scrollbar__wrap`);if(r&&r.length)for(let e=0;e<r.length;e++){const o=r[e];o&&(o.scrollTop=0)}}))}),"resetDrawerScroll"),$=h((e=>{if(D.has(e)){const o=D.get(e);if(void 0!==o)return o}if(I.length>0){const o=I.shift();if(void 0!==o)return D.set(e,o),o}const o=x.value.length;return x.value.push(!1),D.set(e,o),o}),"getDrawerIndex"),z=h((e=>{if(D.has(e)){const o=D.get(e);void 0!==o&&(I.push(o),D.delete(e))}}),"releaseDrawerIndex"),M=h((()=>{if(0!==k.length)return k[k.length-1]}),"getTopDrawerId"),E=h((()=>{[...k].forEach((e=>{_(e)})),k.length=0}),"closeAllDrawers"),_=h((e=>{const o=void 0!==e?e:M();if(void 0===o)return;if(b.has(o))return;b.add(o);const n=D.get(o);void 0!==n&&(x.value[n]=!1);const t=document.querySelector(`#${m}-${o}`);if(!t){const e=k.indexOf(o);return e>-1&&k.splice(e,1),void b.delete(o)}const l=C.get(o),c=k.indexOf(o);if(c>-1&&k.splice(c,1),l&&l.props&&"function"==typeof l.props.onDrawerClose)try{l.props.onDrawerClose()}catch(e){console.error("Error in onDrawerClose callback:",e)}const s=!l||!1!==l.destoryWhenClosed;if(!s&&l&&l.componentInstance&&l.props.beforeDrawerClose&&"function"==typeof l.props.beforeDrawerClose)try{l.props.beforeDrawerClose(l.componentInstance)}catch(e){console.error("Error in beforeDrawerClose callback:",e)}setTimeout((()=>{if(!s&&l&&l.props.afterDrawerClose&&"function"==typeof l.props.afterDrawerClose)try{l.props.afterDrawerClose(l.componentInstance)}catch(e){console.error("Error in afterDrawerClose callback:",e)}s?(z(o),t&&t.parentNode&&(r(null,t),R().removeChild(t),C.delete(o),L.delete(o),document.body.classList.remove("el-popup-parent--hidden"),document.body.style.width="")):void 0!==n&&(x.value[n]=!1),b.delete(o)}),500)}),"closeDrawer"),S=h((async(e,o)=>{_(o)}),"handleClose"),W=h((async(o,r,n)=>{if(o?.onConfirm&&void 0!==r){const t=n||e(!1),l=C.get(r),c=l?.componentInstance;o.onConfirm((()=>_(r)),t,c)}else void 0!==r&&_(r)}),"handleConfirm"),q=h((o=>({componentRef:e(null),close:h((()=>_(o)),"close"),drawerId:o,getInstance:h((()=>new Promise((e=>{const r=h((()=>{const n=C.get(o);n&&n.componentInstance?e(n.componentInstance):setTimeout(r,50)}),"checkInstance");r()}))),"getInstance")})),"createDrawerRef"),T=h(((i,w,I)=>{const z={...i,destoryWhenClosed:!1!==i.destoryWhenClosed};if(!1===z.destoryWhenClosed&&!z.drawerId)throw console.error("当destoryWhenClosed为false时,drawerId必传"),new Error("当destoryWhenClosed为false时,drawerId必传");if(z.drawerId)for(const[e,r]of C.entries())if(r.drawerId===z.drawerId){b.has(e)&&b.delete(e);const l=D.get(e);void 0!==l&&(x.value[l]=!0);const c=k.indexOf(e);c>-1&&k.splice(c,1),k.push(e);const s=document.querySelector(`#${m}-${e} .el-drawer__header .el-drawer__title`);s&&(s.textContent=z.title||"抽屉"),O(e);let a=L.get(e);if(a&&r.component===w){const e=I||{};Object.keys(a).forEach((e=>{a[e]=void 0})),Object.keys(e).forEach((o=>{a[o]=e[o]})),r.renderKey=(r.renderKey||0)+1}else{r.component=w;const o=n(w);r.component=o,a=t({...I||{}}),L.set(e,a),r.propsRef=a}return r.props=z,o((()=>{if(z.afterDrawerOpen&&"function"==typeof z.afterDrawerOpen){setTimeout(h((()=>{const o=C.get(e);if(o&&o.componentRef.value)try{z.afterDrawerOpen(o.componentRef.value)}catch(e){console.error("Error in afterDrawerOpen callback:",e)}}),"checkAndCallAfterOpen"),100)}O(e)})),{componentRef:r.componentRef,close:r.close||(()=>_(e)),drawerId:e,getInstance:r.getInstance}}const M=++g,E=e(!1);let T=null;const A=$(M);k.push(M);const j=t({...I||{}});L.set(M,j);const F=e(0),K=q(M),B=e(!1),P=h((()=>{const e=document.querySelector(`#${m}-${M} .${m}.el-drawer`);e&&e.classList.toggle("is-fullscreen"),E.value=!l(E)}),"toggleFull"),V=c(p,{namespace:"el",size:l(y)},{default:h((()=>[c(f,s({modelValue:x.value[A],title:"抽屉",size:"30%",onClose:h((()=>S(i,M)),"onClose")},z,{render:!0,headerRender:!0,footerRender:!0,class:m}),{default:h((()=>z.render?z.render():w?d(w,{...j,key:F.value,ref:h((e=>{e&&(T=e,K.componentRef.value=e)}),"ref")}):null),"default"),header:h((()=>z.headerRender?z.headerRender():c(a,null,[c("span",{class:".el-drawer__title"},[z.title]),!1!==z.fullscreenIcon&&(l(E)?c("div",{style:"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;",onClick:h((()=>P()),"onClick")},[c("svg",{t:"1676740839036",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2895","xmlns:xlink":"http://www.w3.org/1999/xlink",fill:"var(--el-color-info)"},[c("path",{d:"M391 240.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L280 333.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L401 410c5.1 0.6 9.5-3.7 8.9-8.9L391 240.9zM401.1 614.1L240.8 633c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7l18.9-160.1c0.6-5.1-3.7-9.4-8.8-8.8zM622.9 409.9L783.2 391c6.6-0.8 9.4-8.9 4.7-13.6l43.9-43.9L654 200c-3.1-3.1-3.1-8.2 0-11.3l-42.4-42.3c-3.1-3.1-8.2-3.1-11.3 0L614.1 279.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L614.1 401c-0.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L623 614c-5.1-0.6-9.5 3.7-8.9 8.9L633 783.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z","p-id":"2896"},null)])]):c("div",{style:"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;",onClick:h((()=>P()),"onClick")},[c("svg",{class:"icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",fill:"var(--el-color-info)"},[c("path",{d:"M290 236.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L169 160c-5.1-0.6-9.5 3.7-8.9 8.9L179 329.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zM642.7 423.7c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7L863.9 169c0.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.4zM845 694.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L734 787.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L855 864c5.1 0.6 9.5-3.7 8.9-8.9L845 694.9zM381.3 600.3c-3.1-3.1-8.2-3.1-11.3 0L236.3 733.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L160.1 855c-0.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-0.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z"},null)])]))])),"header"),footer:h((()=>z.footerRender?z.footerRender((()=>_(M))):!1!==z.showFooter?c(a,null,[c(u,{onClick:h((()=>x.value[A]=!1),"onClick")},{default:h((()=>[z.closeLabel||"取 消"]),"default")}),c(u,{type:"primary",loading:B.value,onClick:h((()=>W(z,M,B)),"onClick")},{default:h((()=>[z.confirmLabel||"确 定"]),"default")})]):void 0),"footer")})]),"default")});V.appContext=v,V.children?.length&&(V.children[0].appContext=v);const N=document.createElement("div");return N.id=`${m}-${M}`,R().appendChild(N),r(V,N),o((()=>{x.value[A]=!0})),C.set(M,{props:z,propsRef:j,destoryWhenClosed:z.destoryWhenClosed,container:N,componentInstance:T,drawerId:z.drawerId,component:w,renderKey:F.value,componentRef:K.componentRef,getInstance:K.getInstance}),o((()=>{if(T){const e=C.get(M);e&&(e.componentInstance=T,K.componentRef.value=T)}if(z.afterDrawerOpen&&"function"==typeof z.afterDrawerOpen){setTimeout(h((()=>{if(T)try{z.afterDrawerOpen(T)}catch(e){console.error("Error in afterDrawerOpen callback:",e)}}),"checkAndCallAfterOpen"),50)}z.fullscreen&&P(),O(M)})),K}),"showDrawer"),A=h((e=>{const{appContext:o}=e||i()||{};return v=o,y="default",{open:T}}),"initDrawerV2");export{E as closeAllDrawers,_ as closeDrawer,A as initDrawerV2,T as showDrawer};
|
|
1
|
+
import{ref as e,nextTick as o,render as r,markRaw as n,reactive as t,unref as l,createVNode as c,mergeProps as s,Fragment as a,h as d,getCurrentInstance as i}from"vue";import{ElConfigProvider as p,ElDrawer as f,ElButton as u}from"element-plus";var w=Object.defineProperty,h=(e,o)=>w(e,"name",{value:o,configurable:!0});const m="zn-drawer-v2";let v,y,g=0;const C=new Map,L=new Map,I=[],D=new Map,k=[],x=e([]),b=new Set,R=h((()=>{const e=document.querySelector(":not(:root):fullscreen");return e||document.querySelector("body")}),"getFather"),O=h((e=>{o((()=>{const o=document.querySelector(`#${m}-${e} .el-drawer__body`);o&&(o.scrollTop=0);const r=document.querySelectorAll(`#${m}-${e} .el-scrollbar__wrap`);if(r&&r.length)for(let e=0;e<r.length;e++){const o=r[e];o&&(o.scrollTop=0)}}))}),"resetDrawerScroll"),$=h((e=>{if(D.has(e)){const o=D.get(e);if(void 0!==o)return o}if(I.length>0){const o=I.shift();if(void 0!==o)return D.set(e,o),o}const o=x.value.length;return x.value.push(!1),D.set(e,o),o}),"getDrawerIndex"),z=h((e=>{if(D.has(e)){const o=D.get(e);void 0!==o&&(I.push(o),D.delete(e))}}),"releaseDrawerIndex"),M=h((()=>{if(0!==k.length)return k[k.length-1]}),"getTopDrawerId"),E=h((()=>{[...k].forEach((e=>{_(e)})),k.length=0}),"closeAllDrawers"),_=h((e=>{const o=void 0!==e?e:M();if(void 0===o)return;if(b.has(o))return;b.add(o);const n=D.get(o);void 0!==n&&(x.value[n]=!1);const t=document.querySelector(`#${m}-${o}`);if(!t){const e=k.indexOf(o);return e>-1&&k.splice(e,1),void b.delete(o)}const l=C.get(o),c=k.indexOf(o);if(c>-1&&k.splice(c,1),l&&l.props&&"function"==typeof l.props.onDrawerClose)try{l.props.onDrawerClose()}catch(e){console.error("Error in onDrawerClose callback:",e)}const s=!l||!1!==l.destoryWhenClosed;if(!s&&l&&l.componentInstance&&l.props.beforeDrawerClose&&"function"==typeof l.props.beforeDrawerClose)try{l.props.beforeDrawerClose(l.componentInstance)}catch(e){console.error("Error in beforeDrawerClose callback:",e)}setTimeout((()=>{if(!s&&l&&l.props.afterDrawerClose&&"function"==typeof l.props.afterDrawerClose)try{l.props.afterDrawerClose(l.componentInstance)}catch(e){console.error("Error in afterDrawerClose callback:",e)}s?(z(o),t&&t.parentNode&&(r(null,t),R().removeChild(t),C.delete(o),L.delete(o),document.body.classList.remove("el-popup-parent--hidden"),document.body.style.width="")):void 0!==n&&(x.value[n]=!1),b.delete(o)}),500)}),"closeDrawer"),S=h((async(e,o)=>{_(o)}),"handleClose"),W=h((async(o,r,n)=>{if(o?.onConfirm&&void 0!==r){const t=n||e(!1),l=C.get(r),c=l?.componentRef?.value||l?.componentInstance;o.onConfirm((()=>_(r)),t,c)}else void 0!==r&&_(r)}),"handleConfirm"),q=h((o=>({componentRef:e(null),close:h((()=>_(o)),"close"),drawerId:o,getInstance:h((()=>new Promise((e=>{const r=h((()=>{const n=C.get(o);n&&n.componentInstance?e(n.componentInstance):setTimeout(r,50)}),"checkInstance");r()}))),"getInstance")})),"createDrawerRef"),T=h(((i,w,I)=>{const z={...i,destoryWhenClosed:!1!==i.destoryWhenClosed};if(!1===z.destoryWhenClosed&&!z.drawerId)throw console.error("当destoryWhenClosed为false时,drawerId必传"),new Error("当destoryWhenClosed为false时,drawerId必传");if(z.drawerId)for(const[e,r]of C.entries())if(r.drawerId===z.drawerId){b.has(e)&&b.delete(e);const l=D.get(e);void 0!==l&&(x.value[l]=!0);const c=k.indexOf(e);c>-1&&k.splice(c,1),k.push(e);const s=document.querySelector(`#${m}-${e} .el-drawer__header .el-drawer__title`);s&&(s.textContent=z.title||"抽屉"),O(e);let a=L.get(e);if(a&&r.component===w){const e=I||{};Object.keys(a).forEach((e=>{a[e]=void 0})),Object.keys(e).forEach((o=>{a[o]=e[o]})),r.renderKey=(r.renderKey||0)+1}else{r.component=w;const o=n(w);r.component=o,a=t({...I||{}}),L.set(e,a),r.propsRef=a}return r.props=z,o((()=>{if(z.afterDrawerOpen&&"function"==typeof z.afterDrawerOpen){setTimeout(h((()=>{const o=C.get(e);if(o&&o.componentRef.value)try{z.afterDrawerOpen(o.componentRef.value)}catch(e){console.error("Error in afterDrawerOpen callback:",e)}}),"checkAndCallAfterOpen"),100)}O(e)})),{componentRef:r.componentRef,close:r.close||(()=>_(e)),drawerId:e,getInstance:r.getInstance}}const M=++g,E=e(!1);let T=null;const A=$(M);k.push(M);const j=t({...I||{}});L.set(M,j);const F=e(0),K=q(M),B=e(!1),P=h((()=>{const e=document.querySelector(`#${m}-${M} .${m}.el-drawer`);e&&e.classList.toggle("is-fullscreen"),E.value=!l(E)}),"toggleFull"),V=c(p,{namespace:"el",size:l(y)},{default:h((()=>[c(f,s({modelValue:x.value[A],title:"抽屉",size:"30%",onClose:h((()=>S(i,M)),"onClose")},z,{render:!0,headerRender:!0,footerRender:!0,class:m}),{default:h((()=>z.render?z.render():w?d(w,{...j,key:F.value,ref:h((e=>{e&&(T=e,K.componentRef.value=e)}),"ref")}):null),"default"),header:h((()=>z.headerRender?z.headerRender():c(a,null,[c("span",{class:".el-drawer__title"},[z.title]),!1!==z.fullscreenIcon&&(l(E)?c("div",{style:"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;",onClick:h((()=>P()),"onClick")},[c("svg",{t:"1676740839036",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2895","xmlns:xlink":"http://www.w3.org/1999/xlink",fill:"var(--el-color-info)"},[c("path",{d:"M391 240.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L280 333.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L401 410c5.1 0.6 9.5-3.7 8.9-8.9L391 240.9zM401.1 614.1L240.8 633c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7l18.9-160.1c0.6-5.1-3.7-9.4-8.8-8.8zM622.9 409.9L783.2 391c6.6-0.8 9.4-8.9 4.7-13.6l43.9-43.9L654 200c-3.1-3.1-3.1-8.2 0-11.3l-42.4-42.3c-3.1-3.1-8.2-3.1-11.3 0L614.1 279.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L614.1 401c-0.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L623 614c-5.1-0.6-9.5 3.7-8.9 8.9L633 783.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z","p-id":"2896"},null)])]):c("div",{style:"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;",onClick:h((()=>P()),"onClick")},[c("svg",{class:"icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",fill:"var(--el-color-info)"},[c("path",{d:"M290 236.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L169 160c-5.1-0.6-9.5 3.7-8.9 8.9L179 329.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zM642.7 423.7c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7L863.9 169c0.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.4zM845 694.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L734 787.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L855 864c5.1 0.6 9.5-3.7 8.9-8.9L845 694.9zM381.3 600.3c-3.1-3.1-8.2-3.1-11.3 0L236.3 733.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L160.1 855c-0.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-0.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z"},null)])]))])),"header"),footer:h((()=>z.footerRender?z.footerRender((()=>_(M))):!1!==z.showFooter?c(a,null,[c(u,{onClick:h((()=>x.value[A]=!1),"onClick")},{default:h((()=>[z.closeLabel||"取 消"]),"default")}),c(u,{type:"primary",loading:B.value,onClick:h((()=>W(z,M,B)),"onClick")},{default:h((()=>[z.confirmLabel||"确 定"]),"default")})]):void 0),"footer")})]),"default")});V.appContext=v,V.children?.length&&(V.children[0].appContext=v);const N=document.createElement("div");return N.id=`${m}-${M}`,R().appendChild(N),r(V,N),o((()=>{x.value[A]=!0})),C.set(M,{props:z,propsRef:j,destoryWhenClosed:z.destoryWhenClosed,container:N,componentInstance:T,drawerId:z.drawerId,component:w,renderKey:F.value,componentRef:K.componentRef,getInstance:K.getInstance}),o((()=>{if(T){const e=C.get(M);e&&(e.componentInstance=T,K.componentRef.value=T)}if(z.afterDrawerOpen&&"function"==typeof z.afterDrawerOpen){setTimeout(h((()=>{if(T)try{z.afterDrawerOpen(T)}catch(e){console.error("Error in afterDrawerOpen callback:",e)}}),"checkAndCallAfterOpen"),50)}z.fullscreen&&P(),O(M)})),K}),"showDrawer"),A=h((e=>{const{appContext:o}=e||i()||{};return v=o,y="default",{open:T}}),"initDrawerV2");export{E as closeAllDrawers,_ as closeDrawer,A as initDrawerV2,T as showDrawer};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/useDrawerV2/src/index.tsx"],"sourcesContent":["import {\n render,\n getCurrentInstance,\n unref,\n type Component,\n type ComponentInternalInstance,\n type VNode,\n type AppContext,\n nextTick,\n ref,\n Fragment,\n markRaw,\n reactive,\n h,\n type Ref\n} from 'vue'\nimport { ElDrawer, ElButton, type DrawerProps, ElConfigProvider } from 'element-plus'\n\nconst prefixClass = 'zn-drawer-v2'\n\nlet id = 0\n\nlet appContextConst: AppContext | undefined\nlet layoutSize: 'default' | 'small' | 'large' | undefined\n\n// 用于存储不销毁的抽屉实例\nconst drawerInstances = new Map<number, DrawerInstance>()\n\n// 用于管理组件的props更新\nconst propsStore = new Map<number, any>()\n\n// 存储可用的索引,用于复用已关闭的抽屉位置\nconst availableIndices: number[] = []\n\n// 存储抽屉索引与ID的映射关系\nconst drawerIndexMap = new Map<number, number>()\n\n// 抽屉栈:存储已打开的抽屉ID,按打开顺序(LIFO)\nconst drawerStack: number[] = []\n\n// 动态的抽屉显示列表,初始为10个,可根据需要扩展\nconst isShowList = ref<boolean[]>([])\n\n// 用于跟踪抽屉正在关闭的状态\nconst closingDrawers = new Set<number>()\n\nconst getFather = (): Element => {\n const fullScreen = document.querySelector(':not(:root):fullscreen')\n if (fullScreen) return fullScreen\n return document.querySelector('body') as HTMLBodyElement\n}\n\n/**\n * 重置抽屉的滚动条位置到顶部\n */\nconst resetDrawerScroll = (id: number) => {\n nextTick(() => {\n const drawerEl = document.querySelector(`#${prefixClass}-${id} .el-drawer__body`)\n if (drawerEl) {\n drawerEl.scrollTop = 0\n }\n\n // 同时处理可能存在的el-scrollbar元素\n const scrollbars = document.querySelectorAll(`#${prefixClass}-${id} .el-scrollbar__wrap`)\n if (scrollbars && scrollbars.length) {\n for (let i = 0; i < scrollbars.length; i++) {\n const scrollbar = scrollbars[i] as HTMLElement\n if (scrollbar) {\n scrollbar.scrollTop = 0\n }\n }\n }\n })\n}\n\nexport interface ZnDrawerProps extends Partial<DrawerProps> {\n /** 内容区渲染 TSX */\n render?: () => VNode\n /** 顶部渲染 TSX */\n headerRender?: () => VNode\n /** 底部渲染 TSX */\n footerRender?: (closeDrawer: () => void) => VNode\n /** 是否渲染顶部 */\n showFooter?: boolean\n /** 确认按钮点击事件 */\n onConfirm?: (closeDrawer: () => void, loading: Ref<boolean>, instance?: any) => any\n /** 关闭按钮点击事件 */\n onDrawerClose?: () => void\n /** 确认按钮文字,默认 确认 */\n confirmLabel?: string\n /** 关闭按钮文字,默认 关闭 */\n closeLabel?: string\n /** 是否默认全屏,默认 false */\n fullscreen?: boolean\n /** 是否渲染全屏图标,默认 true */\n fullscreenIcon?: boolean\n /** 是否在关闭时销毁组件,默认 true */\n destoryWhenClosed?: boolean\n /** 抽屉唯一标识,当destoryWhenClosed为false时必传 */\n drawerId?: string | number\n /** 组件卸载前调用的方法,接收组件实例作为参数,仅在destoryWhenClosed为false时执行 */\n beforeDrawerClose?: (instance: any) => void\n /** 关闭动画结束后调用的方法,500ms后执行,接收组件实例作为参数,仅在destoryWhenClosed为false时执行 */\n afterDrawerClose?: (instance: any) => void\n /** 抽屉打开后调用的方法,接收组件实例作为参数 */\n afterDrawerOpen?: (instance: any) => void\n}\n\n/**\n * 抽屉引用对象\n */\nexport interface DrawerRef {\n /** 组件实例的响应式引用 */\n componentRef: Ref<any>\n /** 关闭抽屉的方法 */\n close: () => void\n /** 抽屉的唯一ID */\n drawerId: number\n /** 异步获取组件实例的方法 */\n getInstance: () => Promise<any>\n}\n\n/**\n * 获取用于显示抽屉的索引\n * @param drawerId 抽屉ID\n * @returns 分配的索引\n */\nconst getDrawerIndex = (drawerId: number): number => {\n // 如果已经有映射关系,直接返回\n if (drawerIndexMap.has(drawerId)) {\n const index = drawerIndexMap.get(drawerId)\n if (index !== undefined) {\n return index\n }\n }\n\n // 如果有可用索引,使用第一个\n if (availableIndices.length > 0) {\n const index = availableIndices.shift()\n if (index !== undefined) {\n drawerIndexMap.set(drawerId, index)\n return index\n }\n }\n\n // 如果没有可用索引,扩展isShowList数组并使用新增的索引\n const newIndex = isShowList.value.length\n isShowList.value.push(false) // 初始为false,由showDrawer控制显示\n drawerIndexMap.set(drawerId, newIndex)\n return newIndex\n}\n\n/**\n * 释放抽屉索引,使其可供后续抽屉复用\n * @param drawerId 抽屉ID\n */\nconst releaseDrawerIndex = (drawerId: number): void => {\n if (drawerIndexMap.has(drawerId)) {\n const index = drawerIndexMap.get(drawerId)\n if (index !== undefined) {\n // 将该索引标记为可用\n availableIndices.push(index)\n // 清除映射关系\n drawerIndexMap.delete(drawerId)\n }\n }\n}\n\n/**\n * 获取栈顶抽屉ID(最后打开的)\n * @returns 栈顶抽屉ID,如果没有则返回undefined\n */\nconst getTopDrawerId = (): number | undefined => {\n if (drawerStack.length === 0) {\n return undefined\n }\n return drawerStack[drawerStack.length - 1]\n}\n\n/**\n * 关闭所有打开的抽屉\n */\nexport const closeAllDrawers = () => {\n // 复制当前栈,避免在遍历过程中修改\n const drawersToClose = [...drawerStack]\n\n drawersToClose.forEach((drawerId) => {\n closeDrawer(drawerId)\n })\n\n // 清空栈\n drawerStack.length = 0\n}\n\n/**\n * 关闭抽屉(支持栈管理)\n * 如果指定了ID,则关闭对应ID的抽屉\n * 如果未指定ID,则关闭栈顶的抽屉(最后打开的)\n * @param targetId 指定要关闭的抽屉ID,如不传则关闭栈顶抽屉\n */\nexport const closeDrawer = (targetId?: number) => {\n // 确定要关闭的抽屉ID\n const currentId = targetId !== undefined ? targetId : getTopDrawerId()\n\n // 如果没有可关闭的抽屉,直接返回\n if (currentId === undefined) return\n\n // 防止重复关闭\n if (closingDrawers.has(currentId)) return\n\n closingDrawers.add(currentId)\n\n // 获取抽屉索引\n const drawerIndex = drawerIndexMap.get(currentId)\n if (drawerIndex !== undefined) {\n isShowList.value[drawerIndex] = false\n }\n\n const vm = document.querySelector(`#${prefixClass}-${currentId}`) as HTMLElement\n if (!vm) {\n // 如果DOM元素不存在,立即清理状态\n const stackIndex = drawerStack.indexOf(currentId)\n if (stackIndex > -1) {\n drawerStack.splice(stackIndex, 1)\n }\n closingDrawers.delete(currentId)\n return\n }\n\n // 获取该抽屉是否需要在关闭时销毁\n const instance = drawerInstances.get(currentId)\n\n // 立即从抽屉栈中移除,避免快速关闭时的状态混乱\n const stackIndex = drawerStack.indexOf(currentId)\n if (stackIndex > -1) {\n drawerStack.splice(stackIndex, 1)\n }\n\n // 调用onDrawerClose回调\n if (instance && instance.props && typeof instance.props.onDrawerClose === 'function') {\n try {\n instance.props.onDrawerClose()\n } catch (err) {\n console.error('Error in onDrawerClose callback:', err)\n }\n }\n\n // 判断是否需要销毁组件\n const shouldDestroy = instance ? instance.destoryWhenClosed !== false : true\n\n // 只在不销毁的情况下调用关闭前的回调\n if (!shouldDestroy && instance && instance.componentInstance) {\n if (instance.props.beforeDrawerClose && typeof instance.props.beforeDrawerClose === 'function') {\n try {\n instance.props.beforeDrawerClose(instance.componentInstance)\n } catch (err) {\n console.error('Error in beforeDrawerClose callback:', err)\n }\n }\n }\n\n // 关闭动画结束后执行的逻辑\n setTimeout(() => {\n // 只在不销毁的情况下执行afterDrawerClose回调\n if (!shouldDestroy && instance && instance.props.afterDrawerClose && typeof instance.props.afterDrawerClose === 'function') {\n try {\n instance.props.afterDrawerClose(instance.componentInstance)\n } catch (err) {\n console.error('Error in afterDrawerClose callback:', err)\n }\n }\n\n if (shouldDestroy) {\n // 释放抽屉索引\n releaseDrawerIndex(currentId)\n\n if (vm && vm.parentNode) {\n render(null, vm)\n getFather().removeChild(vm)\n // 清除实例记录\n drawerInstances.delete(currentId)\n // 清除props存储\n propsStore.delete(currentId)\n document.body.classList.remove('el-popup-parent--hidden')\n document.body.style.width = ''\n }\n } else {\n // 不销毁的情况下,确保抽屉完全隐藏\n if (drawerIndex !== undefined) {\n isShowList.value[drawerIndex] = false\n }\n }\n\n // 从关闭集合中移除\n closingDrawers.delete(currentId)\n }, 500)\n}\n\nconst handleClose = async (_: any, currentId?: number) => {\n closeDrawer(currentId)\n}\n\nconst handleConfirm = async (drawerProps?: ZnDrawerProps, currentId?: number, loading?: Ref<boolean>) => {\n if (drawerProps?.onConfirm && currentId !== undefined) {\n const loadingRef = loading || ref(false)\n // 获取组件实例\n const instance = drawerInstances.get(currentId)\n const componentInstance = instance?.componentInstance\n drawerProps.onConfirm(() => closeDrawer(currentId), loadingRef, componentInstance)\n return\n }\n\n if (currentId !== undefined) {\n closeDrawer(currentId)\n }\n}\n\n// 修改存储的类型定义\ninterface DrawerInstance {\n props: ZnDrawerProps\n propsRef: Record<string, any>\n destoryWhenClosed: boolean | undefined\n container: HTMLDivElement\n componentInstance: any\n drawerId?: string | number\n component?: Component\n renderKey: number\n // 组件引用相关\n componentRef: Ref<any>\n getInstance: () => Promise<any>\n close?: () => void\n}\n\n/**\n * 创建抽屉引用对象\n */\nconst createDrawerRef = (drawerId: number): DrawerRef => {\n const componentRef = ref<any>(null)\n\n return {\n componentRef,\n close: () => closeDrawer(drawerId),\n drawerId,\n getInstance: () => {\n return new Promise((resolve) => {\n const checkInstance = () => {\n const instance = drawerInstances.get(drawerId)\n if (instance && instance.componentInstance) {\n resolve(instance.componentInstance)\n } else {\n // 如果实例还没准备好,继续等待\n setTimeout(checkInstance, 50)\n }\n }\n checkInstance()\n })\n }\n }\n}\n\n/**\n * 内容渲染方式有两种\n * 方式 1:在第一个参数里写 render,即可实现 el-drawer 的内容渲染\n * 方式 2:第二个参数为组件,第三个参数为组件的 props\n *\n * 在第一个参数里写 headerRender 和 footerRender,可以自定义 el-drawer 的 header 和 footer\n */\nexport const showDrawer = (drawerProps: ZnDrawerProps, component?: Component, componentsProps?: any): DrawerRef => {\n // 设置destoryWhenClosed的默认值为true\n const props = { ...drawerProps, destoryWhenClosed: drawerProps.destoryWhenClosed !== false }\n\n // 验证参数\n if (props.destoryWhenClosed === false && !props.drawerId) {\n console.error('当destoryWhenClosed为false时,drawerId必传')\n throw new Error('当destoryWhenClosed为false时,drawerId必传')\n }\n\n // 如果有drawerId,先检查是否已存在该抽屉\n if (props.drawerId) {\n // 查找是否有对应drawerId的抽屉实例\n for (const [existingId, instance] of drawerInstances.entries()) {\n if (instance.drawerId === props.drawerId) {\n // 如果抽屉正在关闭中,先从关闭集合中移除\n if (closingDrawers.has(existingId)) {\n closingDrawers.delete(existingId)\n }\n\n // 获取抽屉索引\n const drawerIndex = drawerIndexMap.get(existingId)\n if (drawerIndex !== undefined) {\n // 将抽屉显示出来\n isShowList.value[drawerIndex] = true\n }\n\n // 更新栈顺序,移到栈顶(表示最新打开)\n const index = drawerStack.indexOf(existingId)\n if (index > -1) {\n drawerStack.splice(index, 1)\n }\n drawerStack.push(existingId)\n\n // 更新抽屉标题和配置\n const drawerEl = document.querySelector(`#${prefixClass}-${existingId} .el-drawer__header .el-drawer__title`)\n if (drawerEl) {\n drawerEl.textContent = props.title || '抽屉'\n }\n\n // 重置滚动条位置到顶部\n resetDrawerScroll(existingId)\n\n // 获取对应的props响应式对象\n let propsRef = propsStore.get(existingId)\n // 如果没有或组件已变化,则创建新的\n if (!propsRef || instance.component !== component) {\n instance.component = component\n\n // 标记组件为非响应式,避免不必要的深层响应式转换\n const rawComponent = markRaw(component)\n instance.component = rawComponent\n\n // 创建一个深度响应式的props容器\n propsRef = reactive({ ...(componentsProps || {}) })\n propsStore.set(existingId, propsRef)\n\n // 设置到实例中,以便后续引用\n instance.propsRef = propsRef\n } else {\n // 更新现有的props引用\n const newProps = componentsProps || {}\n // 先清空对象\n Object.keys(propsRef).forEach((key) => {\n propsRef[key] = undefined\n })\n // 然后添加新属性\n Object.keys(newProps).forEach((key) => {\n propsRef[key] = newProps[key]\n })\n\n // 增加renderKey强制组件重新渲染\n instance.renderKey = (instance.renderKey || 0) + 1\n }\n\n // 更新实例中的props属性\n instance.props = props\n\n // 执行afterDrawerOpen回调\n nextTick(() => {\n if (props.afterDrawerOpen && typeof props.afterDrawerOpen === 'function') {\n // 等待组件实例准备好\n const checkAndCallAfterOpen = () => {\n // 重新获取最新的组件实例\n const updatedInstance = drawerInstances.get(existingId)\n if (updatedInstance && updatedInstance.componentRef.value) {\n try {\n props.afterDrawerOpen(updatedInstance.componentRef.value)\n } catch (err) {\n console.error('Error in afterDrawerOpen callback:', err)\n }\n }\n }\n // 延迟执行,确保组件已经挂载\n setTimeout(checkAndCallAfterOpen, 100)\n }\n\n // 确保滚动条重置\n resetDrawerScroll(existingId)\n })\n\n // 返回现有的 DrawerRef\n return {\n componentRef: instance.componentRef,\n close: instance.close || (() => closeDrawer(existingId)),\n drawerId: existingId,\n getInstance: instance.getInstance\n }\n }\n }\n }\n\n const currentId = ++id\n const isFullscreen = ref(false)\n let componentInstance: any = null\n // 为新抽屉分配索引\n const drawerIndex = getDrawerIndex(currentId)\n\n // 添加到抽屉栈中\n drawerStack.push(currentId)\n\n // 创建一个响应式引用\n const propsRef = reactive({ ...(componentsProps || {}) })\n // 存储到全局Map中\n propsStore.set(currentId, propsRef)\n\n // 创建一个渲染key\n const renderKey = ref(0)\n\n // 创建 DrawerRef 对象\n const drawerRef = createDrawerRef(currentId)\n\n // 创建确认按钮的loading状态\n const confirmLoading = ref(false)\n\n const toggleFull = () => {\n const elDrawerEl = document.querySelector(`${`#${prefixClass}-${currentId}`} .${prefixClass}.el-drawer`) as HTMLElement\n if (elDrawerEl) elDrawerEl.classList.toggle('is-fullscreen')\n isFullscreen.value = !unref(isFullscreen)\n }\n\n const vm = (\n <ElConfigProvider namespace=\"el\" size={unref(layoutSize)}>\n <ElDrawer\n modelValue={isShowList.value[drawerIndex]}\n title=\"抽屉\"\n size=\"30%\"\n onClose={() => handleClose(drawerProps, currentId)}\n {...props}\n render\n headerRender\n footerRender\n class={prefixClass}>\n {{\n default: () => {\n if (props.render) return props.render()\n\n // 使用h函数创建组件,确保props传递的响应式\n if (component) {\n return h(component, {\n ...propsRef,\n key: renderKey.value,\n ref: (el: any) => {\n if (el) {\n componentInstance = el\n // 更新 DrawerRef 的 componentRef\n drawerRef.componentRef.value = el\n }\n }\n })\n }\n return null\n },\n header: () => {\n if (props.headerRender) return props.headerRender()\n return (\n <Fragment>\n <span class={`.el-drawer__title`}>{props.title}</span>\n {props.fullscreenIcon !== false &&\n (unref(isFullscreen) ? (\n <div style=\"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;\" onClick={() => toggleFull()}>\n <svg\n t=\"1676740839036\"\n class=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"2895\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n fill=\"var(--el-color-info)\">\n <path\n d=\"M391 240.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L280 333.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L401 410c5.1 0.6 9.5-3.7 8.9-8.9L391 240.9zM401.1 614.1L240.8 633c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7l18.9-160.1c0.6-5.1-3.7-9.4-8.8-8.8zM622.9 409.9L783.2 391c6.6-0.8 9.4-8.9 4.7-13.6l43.9-43.9L654 200c-3.1-3.1-3.1-8.2 0-11.3l-42.4-42.3c-3.1-3.1-8.2-3.1-11.3 0L614.1 279.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L614.1 401c-0.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L623 614c-5.1-0.6-9.5 3.7-8.9 8.9L633 783.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\"\n p-id=\"2896\"></path>\n </svg>\n </div>\n ) : (\n <div style=\"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;\" onClick={() => toggleFull()}>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"var(--el-color-info)\">\n <path d=\"M290 236.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L169 160c-5.1-0.6-9.5 3.7-8.9 8.9L179 329.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zM642.7 423.7c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7L863.9 169c0.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.4zM845 694.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L734 787.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L855 864c5.1 0.6 9.5-3.7 8.9-8.9L845 694.9zM381.3 600.3c-3.1-3.1-8.2-3.1-11.3 0L236.3 733.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L160.1 855c-0.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-0.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\" />\n </svg>\n </div>\n ))}\n </Fragment>\n )\n },\n footer: () => {\n if (props.footerRender) return props.footerRender(() => closeDrawer(currentId))\n if (props.showFooter === false) return\n return (\n <Fragment>\n <ElButton onClick={() => (isShowList.value[drawerIndex] = false)}>{props.closeLabel || '取 消'}</ElButton>\n <ElButton type=\"primary\" loading={confirmLoading.value} onClick={() => handleConfirm(props, currentId, confirmLoading)}>\n {props.confirmLabel || '确 定'}\n </ElButton>\n </Fragment>\n )\n }\n }}\n </ElDrawer>\n </ElConfigProvider>\n )\n\n vm.appContext = appContextConst\n vm.children?.length && (vm.children[0].appContext = appContextConst)\n\n const container = document.createElement('div')\n container.id = `${prefixClass}-${currentId}`\n getFather().appendChild(container)\n render(vm, container)\n\n // 立即显示抽屉\n nextTick(() => {\n isShowList.value[drawerIndex] = true\n })\n\n // 存储抽屉实例\n drawerInstances.set(currentId, {\n props,\n propsRef,\n destoryWhenClosed: props.destoryWhenClosed,\n container,\n componentInstance,\n drawerId: props.drawerId,\n component,\n renderKey: renderKey.value,\n componentRef: drawerRef.componentRef,\n getInstance: drawerRef.getInstance\n } as DrawerInstance)\n\n // 延迟更新componentInstance,确保组件已经挂载\n nextTick(() => {\n if (componentInstance) {\n const instance = drawerInstances.get(currentId)\n if (instance) {\n instance.componentInstance = componentInstance\n // 更新 DrawerRef 的 componentRef\n drawerRef.componentRef.value = componentInstance\n }\n }\n\n // 执行afterDrawerOpen回调\n if (props.afterDrawerOpen && typeof props.afterDrawerOpen === 'function') {\n // 等待组件实例准备好\n const checkAndCallAfterOpen = () => {\n if (componentInstance) {\n try {\n props.afterDrawerOpen(componentInstance)\n } catch (err) {\n console.error('Error in afterDrawerOpen callback:', err)\n }\n }\n }\n setTimeout(checkAndCallAfterOpen, 50)\n }\n\n if (props.fullscreen) toggleFull()\n\n // 确保滚动条重置\n resetDrawerScroll(currentId)\n })\n\n // 始终返回 DrawerRef,提供一致的API\n return drawerRef\n}\n\nexport const initDrawerV2 = (ctx?: ComponentInternalInstance) => {\n const { appContext } = ctx || getCurrentInstance() || {}\n appContextConst = appContext\n layoutSize = 'default'\n\n return { open: showDrawer }\n}\n"],"names":["prefixClass","appContextConst","layoutSize","id","drawerInstances","Map","propsStore","availableIndices","drawerIndexMap","drawerStack","isShowList","ref","closingDrawers","Set","getFather","__name","fullScreen","document","querySelector","resetDrawerScroll","nextTick","drawerEl","scrollTop","scrollbars","querySelectorAll","length","i","scrollbar","getDrawerIndex","drawerId","has","index","get","undefined","shift","set","newIndex","value","push","releaseDrawerIndex","delete","getTopDrawerId","closeAllDrawers","forEach","closeDrawer","targetId","currentId","add","drawerIndex","vm","stackIndex","indexOf","splice","instance","props","onDrawerClose","err","error","shouldDestroy","destoryWhenClosed","componentInstance","beforeDrawerClose","setTimeout","afterDrawerClose","parentNode","render","removeChild","body","classList","remove","style","width","handleClose","_","handleConfirm","async","drawerProps","loading","onConfirm","loadingRef","createDrawerRef","componentRef","close","getInstance","Promise","resolve","checkInstance","showDrawer","component","componentsProps","console","Error","existingId","entries","textContent","title","propsRef","newProps","Object","keys","key","renderKey","rawComponent","markRaw","reactive","afterDrawerOpen","updatedInstance","checkAndCallAfterOpen","isFullscreen","drawerRef","confirmLoading","toggleFull","elDrawerEl","toggle","unref","_createVNode","ElConfigProvider","namespace","size","default","ElDrawer","_mergeProps","modelValue","onClose","headerRender","footerRender","class","h","el","header","_Fragment","fullscreenIcon","onClick","t","viewBox","version","xmlns","fill","d","footer","showFooter","ElButton","closeLabel","type","confirmLabel","appContext","children","container","createElement","appendChild","fullscreen","initDrawerV2","ctx","getCurrentInstance","open"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/useDrawerV2/src/index.tsx"],"sourcesContent":["import {\n render,\n getCurrentInstance,\n unref,\n type Component,\n type ComponentInternalInstance,\n type VNode,\n type AppContext,\n nextTick,\n ref,\n Fragment,\n markRaw,\n reactive,\n h,\n type Ref\n} from 'vue'\nimport { ElDrawer, ElButton, type DrawerProps, ElConfigProvider } from 'element-plus'\n\nconst prefixClass = 'zn-drawer-v2'\n\nlet id = 0\n\nlet appContextConst: AppContext | undefined\nlet layoutSize: 'default' | 'small' | 'large' | undefined\n\n// 用于存储不销毁的抽屉实例\nconst drawerInstances = new Map<number, DrawerInstance>()\n\n// 用于管理组件的props更新\nconst propsStore = new Map<number, any>()\n\n// 存储可用的索引,用于复用已关闭的抽屉位置\nconst availableIndices: number[] = []\n\n// 存储抽屉索引与ID的映射关系\nconst drawerIndexMap = new Map<number, number>()\n\n// 抽屉栈:存储已打开的抽屉ID,按打开顺序(LIFO)\nconst drawerStack: number[] = []\n\n// 动态的抽屉显示列表,初始为10个,可根据需要扩展\nconst isShowList = ref<boolean[]>([])\n\n// 用于跟踪抽屉正在关闭的状态\nconst closingDrawers = new Set<number>()\n\nconst getFather = (): Element => {\n const fullScreen = document.querySelector(':not(:root):fullscreen')\n if (fullScreen) return fullScreen\n return document.querySelector('body') as HTMLBodyElement\n}\n\n/**\n * 重置抽屉的滚动条位置到顶部\n */\nconst resetDrawerScroll = (id: number) => {\n nextTick(() => {\n const drawerEl = document.querySelector(`#${prefixClass}-${id} .el-drawer__body`)\n if (drawerEl) {\n drawerEl.scrollTop = 0\n }\n\n // 同时处理可能存在的el-scrollbar元素\n const scrollbars = document.querySelectorAll(`#${prefixClass}-${id} .el-scrollbar__wrap`)\n if (scrollbars && scrollbars.length) {\n for (let i = 0; i < scrollbars.length; i++) {\n const scrollbar = scrollbars[i] as HTMLElement\n if (scrollbar) {\n scrollbar.scrollTop = 0\n }\n }\n }\n })\n}\n\nexport interface ZnDrawerProps extends Partial<DrawerProps> {\n /** 内容区渲染 TSX */\n render?: () => VNode\n /** 顶部渲染 TSX */\n headerRender?: () => VNode\n /** 底部渲染 TSX */\n footerRender?: (closeDrawer: () => void) => VNode\n /** 是否渲染顶部 */\n showFooter?: boolean\n /** 确认按钮点击事件 */\n onConfirm?: (closeDrawer: () => void, loading: Ref<boolean>, instance?: any) => any\n /** 关闭按钮点击事件 */\n onDrawerClose?: () => void\n /** 确认按钮文字,默认 确认 */\n confirmLabel?: string\n /** 关闭按钮文字,默认 关闭 */\n closeLabel?: string\n /** 是否默认全屏,默认 false */\n fullscreen?: boolean\n /** 是否渲染全屏图标,默认 true */\n fullscreenIcon?: boolean\n /** 是否在关闭时销毁组件,默认 true */\n destoryWhenClosed?: boolean\n /** 抽屉唯一标识,当destoryWhenClosed为false时必传 */\n drawerId?: string | number\n /** 组件卸载前调用的方法,接收组件实例作为参数,仅在destoryWhenClosed为false时执行 */\n beforeDrawerClose?: (instance: any) => void\n /** 关闭动画结束后调用的方法,500ms后执行,接收组件实例作为参数,仅在destoryWhenClosed为false时执行 */\n afterDrawerClose?: (instance: any) => void\n /** 抽屉打开后调用的方法,接收组件实例作为参数 */\n afterDrawerOpen?: (instance: any) => void\n}\n\n/**\n * 抽屉引用对象\n */\nexport interface DrawerRef {\n /** 组件实例的响应式引用 */\n componentRef: Ref<any>\n /** 关闭抽屉的方法 */\n close: () => void\n /** 抽屉的唯一ID */\n drawerId: number\n /** 异步获取组件实例的方法 */\n getInstance: () => Promise<any>\n}\n\n/**\n * 获取用于显示抽屉的索引\n * @param drawerId 抽屉ID\n * @returns 分配的索引\n */\nconst getDrawerIndex = (drawerId: number): number => {\n // 如果已经有映射关系,直接返回\n if (drawerIndexMap.has(drawerId)) {\n const index = drawerIndexMap.get(drawerId)\n if (index !== undefined) {\n return index\n }\n }\n\n // 如果有可用索引,使用第一个\n if (availableIndices.length > 0) {\n const index = availableIndices.shift()\n if (index !== undefined) {\n drawerIndexMap.set(drawerId, index)\n return index\n }\n }\n\n // 如果没有可用索引,扩展isShowList数组并使用新增的索引\n const newIndex = isShowList.value.length\n isShowList.value.push(false) // 初始为false,由showDrawer控制显示\n drawerIndexMap.set(drawerId, newIndex)\n return newIndex\n}\n\n/**\n * 释放抽屉索引,使其可供后续抽屉复用\n * @param drawerId 抽屉ID\n */\nconst releaseDrawerIndex = (drawerId: number): void => {\n if (drawerIndexMap.has(drawerId)) {\n const index = drawerIndexMap.get(drawerId)\n if (index !== undefined) {\n // 将该索引标记为可用\n availableIndices.push(index)\n // 清除映射关系\n drawerIndexMap.delete(drawerId)\n }\n }\n}\n\n/**\n * 获取栈顶抽屉ID(最后打开的)\n * @returns 栈顶抽屉ID,如果没有则返回undefined\n */\nconst getTopDrawerId = (): number | undefined => {\n if (drawerStack.length === 0) {\n return undefined\n }\n return drawerStack[drawerStack.length - 1]\n}\n\n/**\n * 关闭所有打开的抽屉\n */\nexport const closeAllDrawers = () => {\n // 复制当前栈,避免在遍历过程中修改\n const drawersToClose = [...drawerStack]\n\n drawersToClose.forEach((drawerId) => {\n closeDrawer(drawerId)\n })\n\n // 清空栈\n drawerStack.length = 0\n}\n\n/**\n * 关闭抽屉(支持栈管理)\n * 如果指定了ID,则关闭对应ID的抽屉\n * 如果未指定ID,则关闭栈顶的抽屉(最后打开的)\n * @param targetId 指定要关闭的抽屉ID,如不传则关闭栈顶抽屉\n */\nexport const closeDrawer = (targetId?: number) => {\n // 确定要关闭的抽屉ID\n const currentId = targetId !== undefined ? targetId : getTopDrawerId()\n\n // 如果没有可关闭的抽屉,直接返回\n if (currentId === undefined) return\n\n // 防止重复关闭\n if (closingDrawers.has(currentId)) return\n\n closingDrawers.add(currentId)\n\n // 获取抽屉索引\n const drawerIndex = drawerIndexMap.get(currentId)\n if (drawerIndex !== undefined) {\n isShowList.value[drawerIndex] = false\n }\n\n const vm = document.querySelector(`#${prefixClass}-${currentId}`) as HTMLElement\n if (!vm) {\n // 如果DOM元素不存在,立即清理状态\n const stackIndex = drawerStack.indexOf(currentId)\n if (stackIndex > -1) {\n drawerStack.splice(stackIndex, 1)\n }\n closingDrawers.delete(currentId)\n return\n }\n\n // 获取该抽屉是否需要在关闭时销毁\n const instance = drawerInstances.get(currentId)\n\n // 立即从抽屉栈中移除,避免快速关闭时的状态混乱\n const stackIndex = drawerStack.indexOf(currentId)\n if (stackIndex > -1) {\n drawerStack.splice(stackIndex, 1)\n }\n\n // 调用onDrawerClose回调\n if (instance && instance.props && typeof instance.props.onDrawerClose === 'function') {\n try {\n instance.props.onDrawerClose()\n } catch (err) {\n console.error('Error in onDrawerClose callback:', err)\n }\n }\n\n // 判断是否需要销毁组件\n const shouldDestroy = instance ? instance.destoryWhenClosed !== false : true\n\n // 只在不销毁的情况下调用关闭前的回调\n if (!shouldDestroy && instance && instance.componentInstance) {\n if (instance.props.beforeDrawerClose && typeof instance.props.beforeDrawerClose === 'function') {\n try {\n instance.props.beforeDrawerClose(instance.componentInstance)\n } catch (err) {\n console.error('Error in beforeDrawerClose callback:', err)\n }\n }\n }\n\n // 关闭动画结束后执行的逻辑\n setTimeout(() => {\n // 只在不销毁的情况下执行afterDrawerClose回调\n if (!shouldDestroy && instance && instance.props.afterDrawerClose && typeof instance.props.afterDrawerClose === 'function') {\n try {\n instance.props.afterDrawerClose(instance.componentInstance)\n } catch (err) {\n console.error('Error in afterDrawerClose callback:', err)\n }\n }\n\n if (shouldDestroy) {\n // 释放抽屉索引\n releaseDrawerIndex(currentId)\n\n if (vm && vm.parentNode) {\n render(null, vm)\n getFather().removeChild(vm)\n // 清除实例记录\n drawerInstances.delete(currentId)\n // 清除props存储\n propsStore.delete(currentId)\n document.body.classList.remove('el-popup-parent--hidden')\n document.body.style.width = ''\n }\n } else {\n // 不销毁的情况下,确保抽屉完全隐藏\n if (drawerIndex !== undefined) {\n isShowList.value[drawerIndex] = false\n }\n }\n\n // 从关闭集合中移除\n closingDrawers.delete(currentId)\n }, 500)\n}\n\nconst handleClose = async (_: any, currentId?: number) => {\n closeDrawer(currentId)\n}\n\nconst handleConfirm = async (drawerProps?: ZnDrawerProps, currentId?: number, loading?: Ref<boolean>) => {\n if (drawerProps?.onConfirm && currentId !== undefined) {\n const loadingRef = loading || ref(false)\n // 获取组件实例\n const instance = drawerInstances.get(currentId)\n // 优先使用 componentRef.value,因为它在 ref 回调中会立即更新\n // 如果 componentRef.value 为空,再尝试使用 componentInstance\n const componentInstance = instance?.componentRef?.value || instance?.componentInstance\n drawerProps.onConfirm(() => closeDrawer(currentId), loadingRef, componentInstance)\n return\n }\n\n if (currentId !== undefined) {\n closeDrawer(currentId)\n }\n}\n\n// 修改存储的类型定义\ninterface DrawerInstance {\n props: ZnDrawerProps\n propsRef: Record<string, any>\n destoryWhenClosed: boolean | undefined\n container: HTMLDivElement\n componentInstance: any\n drawerId?: string | number\n component?: Component\n renderKey: number\n // 组件引用相关\n componentRef: Ref<any>\n getInstance: () => Promise<any>\n close?: () => void\n}\n\n/**\n * 创建抽屉引用对象\n */\nconst createDrawerRef = (drawerId: number): DrawerRef => {\n const componentRef = ref<any>(null)\n\n return {\n componentRef,\n close: () => closeDrawer(drawerId),\n drawerId,\n getInstance: () => {\n return new Promise((resolve) => {\n const checkInstance = () => {\n const instance = drawerInstances.get(drawerId)\n if (instance && instance.componentInstance) {\n resolve(instance.componentInstance)\n } else {\n // 如果实例还没准备好,继续等待\n setTimeout(checkInstance, 50)\n }\n }\n checkInstance()\n })\n }\n }\n}\n\n/**\n * 内容渲染方式有两种\n * 方式 1:在第一个参数里写 render,即可实现 el-drawer 的内容渲染\n * 方式 2:第二个参数为组件,第三个参数为组件的 props\n *\n * 在第一个参数里写 headerRender 和 footerRender,可以自定义 el-drawer 的 header 和 footer\n */\nexport const showDrawer = (drawerProps: ZnDrawerProps, component?: Component, componentsProps?: any): DrawerRef => {\n // 设置destoryWhenClosed的默认值为true\n const props = { ...drawerProps, destoryWhenClosed: drawerProps.destoryWhenClosed !== false }\n\n // 验证参数\n if (props.destoryWhenClosed === false && !props.drawerId) {\n console.error('当destoryWhenClosed为false时,drawerId必传')\n throw new Error('当destoryWhenClosed为false时,drawerId必传')\n }\n\n // 如果有drawerId,先检查是否已存在该抽屉\n if (props.drawerId) {\n // 查找是否有对应drawerId的抽屉实例\n for (const [existingId, instance] of drawerInstances.entries()) {\n if (instance.drawerId === props.drawerId) {\n // 如果抽屉正在关闭中,先从关闭集合中移除\n if (closingDrawers.has(existingId)) {\n closingDrawers.delete(existingId)\n }\n\n // 获取抽屉索引\n const drawerIndex = drawerIndexMap.get(existingId)\n if (drawerIndex !== undefined) {\n // 将抽屉显示出来\n isShowList.value[drawerIndex] = true\n }\n\n // 更新栈顺序,移到栈顶(表示最新打开)\n const index = drawerStack.indexOf(existingId)\n if (index > -1) {\n drawerStack.splice(index, 1)\n }\n drawerStack.push(existingId)\n\n // 更新抽屉标题和配置\n const drawerEl = document.querySelector(`#${prefixClass}-${existingId} .el-drawer__header .el-drawer__title`)\n if (drawerEl) {\n drawerEl.textContent = props.title || '抽屉'\n }\n\n // 重置滚动条位置到顶部\n resetDrawerScroll(existingId)\n\n // 获取对应的props响应式对象\n let propsRef = propsStore.get(existingId)\n // 如果没有或组件已变化,则创建新的\n if (!propsRef || instance.component !== component) {\n instance.component = component\n\n // 标记组件为非响应式,避免不必要的深层响应式转换\n const rawComponent = markRaw(component)\n instance.component = rawComponent\n\n // 创建一个深度响应式的props容器\n propsRef = reactive({ ...(componentsProps || {}) })\n propsStore.set(existingId, propsRef)\n\n // 设置到实例中,以便后续引用\n instance.propsRef = propsRef\n } else {\n // 更新现有的props引用\n const newProps = componentsProps || {}\n // 先清空对象\n Object.keys(propsRef).forEach((key) => {\n propsRef[key] = undefined\n })\n // 然后添加新属性\n Object.keys(newProps).forEach((key) => {\n propsRef[key] = newProps[key]\n })\n\n // 增加renderKey强制组件重新渲染\n instance.renderKey = (instance.renderKey || 0) + 1\n }\n\n // 更新实例中的props属性\n instance.props = props\n\n // 执行afterDrawerOpen回调\n nextTick(() => {\n if (props.afterDrawerOpen && typeof props.afterDrawerOpen === 'function') {\n // 等待组件实例准备好\n const checkAndCallAfterOpen = () => {\n // 重新获取最新的组件实例\n const updatedInstance = drawerInstances.get(existingId)\n if (updatedInstance && updatedInstance.componentRef.value) {\n try {\n props.afterDrawerOpen(updatedInstance.componentRef.value)\n } catch (err) {\n console.error('Error in afterDrawerOpen callback:', err)\n }\n }\n }\n // 延迟执行,确保组件已经挂载\n setTimeout(checkAndCallAfterOpen, 100)\n }\n\n // 确保滚动条重置\n resetDrawerScroll(existingId)\n })\n\n // 返回现有的 DrawerRef\n return {\n componentRef: instance.componentRef,\n close: instance.close || (() => closeDrawer(existingId)),\n drawerId: existingId,\n getInstance: instance.getInstance\n }\n }\n }\n }\n\n const currentId = ++id\n const isFullscreen = ref(false)\n let componentInstance: any = null\n // 为新抽屉分配索引\n const drawerIndex = getDrawerIndex(currentId)\n\n // 添加到抽屉栈中\n drawerStack.push(currentId)\n\n // 创建一个响应式引用\n const propsRef = reactive({ ...(componentsProps || {}) })\n // 存储到全局Map中\n propsStore.set(currentId, propsRef)\n\n // 创建一个渲染key\n const renderKey = ref(0)\n\n // 创建 DrawerRef 对象\n const drawerRef = createDrawerRef(currentId)\n\n // 创建确认按钮的loading状态\n const confirmLoading = ref(false)\n\n const toggleFull = () => {\n const elDrawerEl = document.querySelector(`${`#${prefixClass}-${currentId}`} .${prefixClass}.el-drawer`) as HTMLElement\n if (elDrawerEl) elDrawerEl.classList.toggle('is-fullscreen')\n isFullscreen.value = !unref(isFullscreen)\n }\n\n const vm = (\n <ElConfigProvider namespace=\"el\" size={unref(layoutSize)}>\n <ElDrawer\n modelValue={isShowList.value[drawerIndex]}\n title=\"抽屉\"\n size=\"30%\"\n onClose={() => handleClose(drawerProps, currentId)}\n {...props}\n render\n headerRender\n footerRender\n class={prefixClass}>\n {{\n default: () => {\n if (props.render) return props.render()\n\n // 使用h函数创建组件,确保props传递的响应式\n if (component) {\n return h(component, {\n ...propsRef,\n key: renderKey.value,\n ref: (el: any) => {\n if (el) {\n componentInstance = el\n // 更新 DrawerRef 的 componentRef\n drawerRef.componentRef.value = el\n }\n }\n })\n }\n return null\n },\n header: () => {\n if (props.headerRender) return props.headerRender()\n return (\n <Fragment>\n <span class={`.el-drawer__title`}>{props.title}</span>\n {props.fullscreenIcon !== false &&\n (unref(isFullscreen) ? (\n <div style=\"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;\" onClick={() => toggleFull()}>\n <svg\n t=\"1676740839036\"\n class=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"2895\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n fill=\"var(--el-color-info)\">\n <path\n d=\"M391 240.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L280 333.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L401 410c5.1 0.6 9.5-3.7 8.9-8.9L391 240.9zM401.1 614.1L240.8 633c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7l18.9-160.1c0.6-5.1-3.7-9.4-8.8-8.8zM622.9 409.9L783.2 391c6.6-0.8 9.4-8.9 4.7-13.6l43.9-43.9L654 200c-3.1-3.1-3.1-8.2 0-11.3l-42.4-42.3c-3.1-3.1-8.2-3.1-11.3 0L614.1 279.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L614.1 401c-0.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L623 614c-5.1-0.6-9.5 3.7-8.9 8.9L633 783.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\"\n p-id=\"2896\"></path>\n </svg>\n </div>\n ) : (\n <div style=\"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;\" onClick={() => toggleFull()}>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"var(--el-color-info)\">\n <path d=\"M290 236.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L169 160c-5.1-0.6-9.5 3.7-8.9 8.9L179 329.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zM642.7 423.7c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7L863.9 169c0.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.4zM845 694.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L734 787.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L855 864c5.1 0.6 9.5-3.7 8.9-8.9L845 694.9zM381.3 600.3c-3.1-3.1-8.2-3.1-11.3 0L236.3 733.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L160.1 855c-0.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-0.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\" />\n </svg>\n </div>\n ))}\n </Fragment>\n )\n },\n footer: () => {\n if (props.footerRender) return props.footerRender(() => closeDrawer(currentId))\n if (props.showFooter === false) return\n return (\n <Fragment>\n <ElButton onClick={() => (isShowList.value[drawerIndex] = false)}>{props.closeLabel || '取 消'}</ElButton>\n <ElButton type=\"primary\" loading={confirmLoading.value} onClick={() => handleConfirm(props, currentId, confirmLoading)}>\n {props.confirmLabel || '确 定'}\n </ElButton>\n </Fragment>\n )\n }\n }}\n </ElDrawer>\n </ElConfigProvider>\n )\n\n vm.appContext = appContextConst\n vm.children?.length && (vm.children[0].appContext = appContextConst)\n\n const container = document.createElement('div')\n container.id = `${prefixClass}-${currentId}`\n getFather().appendChild(container)\n render(vm, container)\n\n // 立即显示抽屉\n nextTick(() => {\n isShowList.value[drawerIndex] = true\n })\n\n // 存储抽屉实例\n drawerInstances.set(currentId, {\n props,\n propsRef,\n destoryWhenClosed: props.destoryWhenClosed,\n container,\n componentInstance,\n drawerId: props.drawerId,\n component,\n renderKey: renderKey.value,\n componentRef: drawerRef.componentRef,\n getInstance: drawerRef.getInstance\n } as DrawerInstance)\n\n // 延迟更新componentInstance,确保组件已经挂载\n nextTick(() => {\n if (componentInstance) {\n const instance = drawerInstances.get(currentId)\n if (instance) {\n instance.componentInstance = componentInstance\n // 更新 DrawerRef 的 componentRef\n drawerRef.componentRef.value = componentInstance\n }\n }\n\n // 执行afterDrawerOpen回调\n if (props.afterDrawerOpen && typeof props.afterDrawerOpen === 'function') {\n // 等待组件实例准备好\n const checkAndCallAfterOpen = () => {\n if (componentInstance) {\n try {\n props.afterDrawerOpen(componentInstance)\n } catch (err) {\n console.error('Error in afterDrawerOpen callback:', err)\n }\n }\n }\n setTimeout(checkAndCallAfterOpen, 50)\n }\n\n if (props.fullscreen) toggleFull()\n\n // 确保滚动条重置\n resetDrawerScroll(currentId)\n })\n\n // 始终返回 DrawerRef,提供一致的API\n return drawerRef\n}\n\nexport const initDrawerV2 = (ctx?: ComponentInternalInstance) => {\n const { appContext } = ctx || getCurrentInstance() || {}\n appContextConst = appContext\n layoutSize = 'default'\n\n return { open: showDrawer }\n}\n"],"names":["prefixClass","appContextConst","layoutSize","id","drawerInstances","Map","propsStore","availableIndices","drawerIndexMap","drawerStack","isShowList","ref","closingDrawers","Set","getFather","__name","fullScreen","document","querySelector","resetDrawerScroll","nextTick","drawerEl","scrollTop","scrollbars","querySelectorAll","length","i","scrollbar","getDrawerIndex","drawerId","has","index","get","undefined","shift","set","newIndex","value","push","releaseDrawerIndex","delete","getTopDrawerId","closeAllDrawers","forEach","closeDrawer","targetId","currentId","add","drawerIndex","vm","stackIndex","indexOf","splice","instance","props","onDrawerClose","err","error","shouldDestroy","destoryWhenClosed","componentInstance","beforeDrawerClose","setTimeout","afterDrawerClose","parentNode","render","removeChild","body","classList","remove","style","width","handleClose","_","handleConfirm","async","drawerProps","loading","onConfirm","loadingRef","componentRef","createDrawerRef","close","getInstance","Promise","resolve","checkInstance","showDrawer","component","componentsProps","console","Error","existingId","entries","textContent","title","propsRef","newProps","Object","keys","key","renderKey","rawComponent","markRaw","reactive","afterDrawerOpen","updatedInstance","checkAndCallAfterOpen","isFullscreen","drawerRef","confirmLoading","toggleFull","elDrawerEl","toggle","unref","_createVNode","ElConfigProvider","namespace","size","default","ElDrawer","_mergeProps","modelValue","onClose","headerRender","footerRender","class","h","el","header","_Fragment","fullscreenIcon","onClick","t","viewBox","version","xmlns","fill","d","footer","showFooter","ElButton","closeLabel","type","confirmLabel","appContext","children","container","createElement","appendChild","fullscreen","initDrawerV2","ctx","getCurrentInstance","open"],"mappings":"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"}
|
package/es/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import o from"./installer.mjs";export{install}from"./installer.mjs";import"./functions/index.mjs";import"./hooks/index.mjs";export{copyText,formatValue,treeListUtil,treeToList}from"./utils/index.mjs";import"./directives/index.mjs";import"./components/index.mjs";import e from"./functions/modules/log.mjs";export{useDialogV2}from"./hooks/useDialogV2/index.mjs";export{useDrawerV2}from"./hooks/useDrawerV2/index.mjs";export{closeAllDrawers}from"./hooks/useDrawerV2/src/index.mjs";export{closePopWindowById,closePopWindowByTag,getAllPopWindows,showPopWindow}from"./hooks/usePopWindow/src/index.mjs";export{usePopWindow}from"./hooks/usePopWindow/index.mjs";export{closePopWindowByIdV2,closePopWindowByTagV2,getAllPopWindowsV2,showPopWindowV2}from"./hooks/usePopWindowV2/src/index.mjs";export{usePopWindowV2}from"./hooks/usePopWindowV2/index.mjs";export{useDialog}from"./hooks/useDialog/index.mjs";export{default as ImageViewer}from"./hooks/useImageViewer/src/index.vue2.mjs";export{useImageViewer}from"./hooks/useImageViewer/index.mjs";export{useDrawer}from"./hooks/useDrawer/index.mjs";export{withInstall,withInstallDirectives}from"./utils/install.mjs";export{default as vCopy}from"./directives/modules/copy.mjs";export{default as vDrag}from"./directives/modules/drag.mjs";export{default as vAutoScroll}from"./directives/modules/autoScroll.mjs";export{default as vTooltip}from"./directives/modules/tooltip.mjs";export{default as vConfirm}from"./directives/modules/confirm.mjs";export{default as vCountTo}from"./directives/modules/countTo.mjs";export{default as utils}from"./functions/modules/uitls.mjs";import*as s from"./functions/modules/is.mjs";export{s as is};export{useZnForm}from"./components/znForm/src/hooks/useZnForm.mjs";export{useZnFormV2}from"./components/znFormV2/src/hooks/useZnFormV2.mjs";export{useZnSearch}from"./components/znSearch/src/hooks/useProSearch.mjs";export{ZnChart}from"./components/znChart/index.mjs";export{ZnCountTo}from"./components/znCountTo/index.mjs";export{default as ZnFormItem}from"./components/znForm/src/components/ZnFormItem.vue2.mjs";export{ZnForm}from"./components/znForm/index.mjs";export{batchExecute,camelCaseToHyphen,checkFeatureSupport,createUniqueId,debounce,delay,executeInIdle,getElementOffsetTop,getMemoryUsage,getObjectHash,isDeepEqual,isElementInViewport,isShallowEqual,throttle}from"./components/znFormV2/src/helper/index.mjs";export{default as ZnFormV2Item}from"./components/znFormV2/src/components/ZnFormV2Item.vue2.mjs";export{ZnFormV2}from"./components/znFormV2/index.mjs";export{ZnGrid,ZnGridItem}from"./components/znGrid/index.mjs";export{ZnNumberScroll}from"./components/znNumberScroll/index.mjs";export{ZnSearch}from"./components/znSearch/index.mjs";export{ZnTable}from"./components/znTable/index.mjs";export{ZnTest}from"./components/znTest/index.mjs";export{ZnTimeline}from"./components/znTimeLine/index.mjs";export{ZnTreeFilter}from"./components/znTreeFilter/index.mjs";export{ZnTreeSelect}from"./components/znTreeSelect/index.mjs";export{initVXETable,isVXETableInitialized}from"./components/znVirtualTable/src/utils/vxe-setup.mjs";export{ZnWorkGrid}from"./components/znWorkGrid/index.mjs";export{default as ZnVirtualTable}from"./components/znVirtualTable/src/index.vue2.mjs";globalThis.log=e;"function"==typeof globalThis?.log?.success&&globalThis.log.primary("1.1.
|
|
1
|
+
import o from"./installer.mjs";export{install}from"./installer.mjs";import"./functions/index.mjs";import"./hooks/index.mjs";export{copyText,formatValue,treeListUtil,treeToList}from"./utils/index.mjs";import"./directives/index.mjs";import"./components/index.mjs";import e from"./functions/modules/log.mjs";export{useDialogV2}from"./hooks/useDialogV2/index.mjs";export{useDrawerV2}from"./hooks/useDrawerV2/index.mjs";export{closeAllDrawers}from"./hooks/useDrawerV2/src/index.mjs";export{closePopWindowById,closePopWindowByTag,getAllPopWindows,showPopWindow}from"./hooks/usePopWindow/src/index.mjs";export{usePopWindow}from"./hooks/usePopWindow/index.mjs";export{closePopWindowByIdV2,closePopWindowByTagV2,getAllPopWindowsV2,showPopWindowV2}from"./hooks/usePopWindowV2/src/index.mjs";export{usePopWindowV2}from"./hooks/usePopWindowV2/index.mjs";export{useDialog}from"./hooks/useDialog/index.mjs";export{default as ImageViewer}from"./hooks/useImageViewer/src/index.vue2.mjs";export{useImageViewer}from"./hooks/useImageViewer/index.mjs";export{useDrawer}from"./hooks/useDrawer/index.mjs";export{withInstall,withInstallDirectives}from"./utils/install.mjs";export{default as vCopy}from"./directives/modules/copy.mjs";export{default as vDrag}from"./directives/modules/drag.mjs";export{default as vAutoScroll}from"./directives/modules/autoScroll.mjs";export{default as vTooltip}from"./directives/modules/tooltip.mjs";export{default as vConfirm}from"./directives/modules/confirm.mjs";export{default as vCountTo}from"./directives/modules/countTo.mjs";export{default as utils}from"./functions/modules/uitls.mjs";import*as s from"./functions/modules/is.mjs";export{s as is};export{useZnForm}from"./components/znForm/src/hooks/useZnForm.mjs";export{useZnFormV2}from"./components/znFormV2/src/hooks/useZnFormV2.mjs";export{useZnSearch}from"./components/znSearch/src/hooks/useProSearch.mjs";export{ZnChart}from"./components/znChart/index.mjs";export{ZnCountTo}from"./components/znCountTo/index.mjs";export{default as ZnFormItem}from"./components/znForm/src/components/ZnFormItem.vue2.mjs";export{ZnForm}from"./components/znForm/index.mjs";export{batchExecute,camelCaseToHyphen,checkFeatureSupport,createUniqueId,debounce,delay,executeInIdle,getElementOffsetTop,getMemoryUsage,getObjectHash,isDeepEqual,isElementInViewport,isShallowEqual,throttle}from"./components/znFormV2/src/helper/index.mjs";export{default as ZnFormV2Item}from"./components/znFormV2/src/components/ZnFormV2Item.vue2.mjs";export{ZnFormV2}from"./components/znFormV2/index.mjs";export{ZnGrid,ZnGridItem}from"./components/znGrid/index.mjs";export{ZnNumberScroll}from"./components/znNumberScroll/index.mjs";export{ZnSearch}from"./components/znSearch/index.mjs";export{ZnTable}from"./components/znTable/index.mjs";export{ZnTest}from"./components/znTest/index.mjs";export{ZnTimeline}from"./components/znTimeLine/index.mjs";export{ZnTreeFilter}from"./components/znTreeFilter/index.mjs";export{ZnTreeSelect}from"./components/znTreeSelect/index.mjs";export{initVXETable,isVXETableInitialized}from"./components/znVirtualTable/src/utils/vxe-setup.mjs";export{ZnWorkGrid}from"./components/znWorkGrid/index.mjs";export{default as ZnVirtualTable}from"./components/znVirtualTable/src/index.vue2.mjs";globalThis.log=e;"function"==typeof globalThis?.log?.success&&globalThis.log.primary("1.1.16","欢迎使用znyg-frontend-common,在线文档:http://192.168.99.34:10000/znyg-frontend-common-docs/");export{o as default,e as log};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/es/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../packages/index.ts"],"sourcesContent":["import installer from './installer'\nimport { log } from './functions'\nexport * from './hooks'\nexport * from './utils'\nexport * from './installer'\nexport * from './directives'\nexport * from './functions'\nexport * from './components'\n\nexport default installer\nglobalThis.log = log\nconst version = '1.1.
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../packages/index.ts"],"sourcesContent":["import installer from './installer'\nimport { log } from './functions'\nexport * from './hooks'\nexport * from './utils'\nexport * from './installer'\nexport * from './directives'\nexport * from './functions'\nexport * from './components'\n\nexport default installer\nglobalThis.log = log\nconst version = '1.1.16'\nif (typeof globalThis?.log?.success === 'function') {\n globalThis.log.primary(version, '欢迎使用znyg-frontend-common,在线文档:http://192.168.99.34:10000/znyg-frontend-common-docs/')\n}\n"],"names":["globalThis","log","success","primary"],"mappings":"sqGAUAA,WAAWC,IAAMA,EAEuB,mBAA7BD,YAAYC,KAAKC,SACfF,WAAAC,IAAIE,QAFD,SAEkB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("vue"),r=require("element-plus"),o=Object.defineProperty,t=(e,r)=>o(e,"name",{value:r,configurable:!0});const n="zn-drawer-v2";let c,l,a=0;const s=new Map,d=new Map,i=[],f=new Map,p=[],u=e.ref([]),w=new Set,h=t((()=>{const e=document.querySelector(":not(:root):fullscreen");return e||document.querySelector("body")}),"getFather"),m=t((r=>{e.nextTick((()=>{const e=document.querySelector(`#${n}-${r} .el-drawer__body`);e&&(e.scrollTop=0);const o=document.querySelectorAll(`#${n}-${r} .el-scrollbar__wrap`);if(o&&o.length)for(let e=0;e<o.length;e++){const r=o[e];r&&(r.scrollTop=0)}}))}),"resetDrawerScroll"),v=t((e=>{if(f.has(e)){const r=f.get(e);if(void 0!==r)return r}if(i.length>0){const r=i.shift();if(void 0!==r)return f.set(e,r),r}const r=u.value.length;return u.value.push(!1),f.set(e,r),r}),"getDrawerIndex"),g=t((e=>{if(f.has(e)){const r=f.get(e);void 0!==r&&(i.push(r),f.delete(e))}}),"releaseDrawerIndex"),y=t((()=>{if(0!==p.length)return p[p.length-1]}),"getTopDrawerId"),C=t((()=>{[...p].forEach((e=>{L(e)})),p.length=0}),"closeAllDrawers"),L=t((r=>{const o=void 0!==r?r:y();if(void 0===o)return;if(w.has(o))return;w.add(o);const t=f.get(o);void 0!==t&&(u.value[t]=!1);const c=document.querySelector(`#${n}-${o}`);if(!c){const e=p.indexOf(o);return e>-1&&p.splice(e,1),void w.delete(o)}const l=s.get(o),a=p.indexOf(o);if(a>-1&&p.splice(a,1),l&&l.props&&"function"==typeof l.props.onDrawerClose)try{l.props.onDrawerClose()}catch(e){console.error("Error in onDrawerClose callback:",e)}const i=!l||!1!==l.destoryWhenClosed;if(!i&&l&&l.componentInstance&&l.props.beforeDrawerClose&&"function"==typeof l.props.beforeDrawerClose)try{l.props.beforeDrawerClose(l.componentInstance)}catch(e){console.error("Error in beforeDrawerClose callback:",e)}setTimeout((()=>{if(!i&&l&&l.props.afterDrawerClose&&"function"==typeof l.props.afterDrawerClose)try{l.props.afterDrawerClose(l.componentInstance)}catch(e){console.error("Error in afterDrawerClose callback:",e)}i?(g(o),c&&c.parentNode&&(e.render(null,c),h().removeChild(c),s.delete(o),d.delete(o),document.body.classList.remove("el-popup-parent--hidden"),document.body.style.width="")):void 0!==t&&(u.value[t]=!1),w.delete(o)}),500)}),"closeDrawer"),D=t((async(e,r)=>{L(r)}),"handleClose"),I=t((async(r,o,t)=>{if(r?.onConfirm&&void 0!==o){const n=t||e.ref(!1),c=s.get(o),l=c?.componentInstance;r.onConfirm((()=>L(o)),n,l)}else void 0!==o&&L(o)}),"handleConfirm"),x=t((r=>({componentRef:e.ref(null),close:t((()=>L(r)),"close"),drawerId:r,getInstance:t((()=>new Promise((e=>{const o=t((()=>{const t=s.get(r);t&&t.componentInstance?e(t.componentInstance):setTimeout(o,50)}),"checkInstance");o()}))),"getInstance")})),"createDrawerRef"),k=t(((o,i,g)=>{const y={...o,destoryWhenClosed:!1!==o.destoryWhenClosed};if(!1===y.destoryWhenClosed&&!y.drawerId)throw console.error("当destoryWhenClosed为false时,drawerId必传"),new Error("当destoryWhenClosed为false时,drawerId必传");if(y.drawerId)for(const[r,o]of s.entries())if(o.drawerId===y.drawerId){w.has(r)&&w.delete(r);const c=f.get(r);void 0!==c&&(u.value[c]=!0);const l=p.indexOf(r);l>-1&&p.splice(l,1),p.push(r);const a=document.querySelector(`#${n}-${r} .el-drawer__header .el-drawer__title`);a&&(a.textContent=y.title||"抽屉"),m(r);let h=d.get(r);if(h&&o.component===i){const e=g||{};Object.keys(h).forEach((e=>{h[e]=void 0})),Object.keys(e).forEach((r=>{h[r]=e[r]})),o.renderKey=(o.renderKey||0)+1}else{o.component=i;const t=e.markRaw(i);o.component=t,h=e.reactive({...g||{}}),d.set(r,h),o.propsRef=h}return o.props=y,e.nextTick((()=>{if(y.afterDrawerOpen&&"function"==typeof y.afterDrawerOpen){setTimeout(t((()=>{const e=s.get(r);if(e&&e.componentRef.value)try{y.afterDrawerOpen(e.componentRef.value)}catch(e){console.error("Error in afterDrawerOpen callback:",e)}}),"checkAndCallAfterOpen"),100)}m(r)})),{componentRef:o.componentRef,close:o.close||(()=>L(r)),drawerId:r,getInstance:o.getInstance}}const C=++a,k=e.ref(!1);let b=null;const R=v(C);p.push(C);const O=e.reactive({...g||{}});d.set(C,O);const V=e.ref(0),E=x(C),N=e.ref(!1),$=t((()=>{const r=document.querySelector(`#${n}-${C} .${n}.el-drawer`);r&&r.classList.toggle("is-fullscreen"),k.value=!e.unref(k)}),"toggleFull"),z=e.createVNode(r.ElConfigProvider,{namespace:"el",size:e.unref(l)},{default:t((()=>[e.createVNode(r.ElDrawer,e.mergeProps({modelValue:u.value[R],title:"抽屉",size:"30%",onClose:t((()=>D(o,C)),"onClose")},y,{render:!0,headerRender:!0,footerRender:!0,class:n}),{default:t((()=>y.render?y.render():i?e.h(i,{...O,key:V.value,ref:t((e=>{e&&(b=e,E.componentRef.value=e)}),"ref")}):null),"default"),header:t((()=>y.headerRender?y.headerRender():e.createVNode(e.Fragment,null,[e.createVNode("span",{class:".el-drawer__title"},[y.title]),!1!==y.fullscreenIcon&&(e.unref(k)?e.createVNode("div",{style:"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;",onClick:t((()=>$()),"onClick")},[e.createVNode("svg",{t:"1676740839036",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2895","xmlns:xlink":"http://www.w3.org/1999/xlink",fill:"var(--el-color-info)"},[e.createVNode("path",{d:"M391 240.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L280 333.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L401 410c5.1 0.6 9.5-3.7 8.9-8.9L391 240.9zM401.1 614.1L240.8 633c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7l18.9-160.1c0.6-5.1-3.7-9.4-8.8-8.8zM622.9 409.9L783.2 391c6.6-0.8 9.4-8.9 4.7-13.6l43.9-43.9L654 200c-3.1-3.1-3.1-8.2 0-11.3l-42.4-42.3c-3.1-3.1-8.2-3.1-11.3 0L614.1 279.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L614.1 401c-0.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L623 614c-5.1-0.6-9.5 3.7-8.9 8.9L633 783.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z","p-id":"2896"},null)])]):e.createVNode("div",{style:"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;",onClick:t((()=>$()),"onClick")},[e.createVNode("svg",{class:"icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",fill:"var(--el-color-info)"},[e.createVNode("path",{d:"M290 236.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L169 160c-5.1-0.6-9.5 3.7-8.9 8.9L179 329.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zM642.7 423.7c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7L863.9 169c0.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.4zM845 694.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L734 787.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L855 864c5.1 0.6 9.5-3.7 8.9-8.9L845 694.9zM381.3 600.3c-3.1-3.1-8.2-3.1-11.3 0L236.3 733.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L160.1 855c-0.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-0.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z"},null)])]))])),"header"),footer:t((()=>y.footerRender?y.footerRender((()=>L(C))):!1!==y.showFooter?e.createVNode(e.Fragment,null,[e.createVNode(r.ElButton,{onClick:t((()=>u.value[R]=!1),"onClick")},{default:t((()=>[y.closeLabel||"取 消"]),"default")}),e.createVNode(r.ElButton,{type:"primary",loading:N.value,onClick:t((()=>I(y,C,N)),"onClick")},{default:t((()=>[y.confirmLabel||"确 定"]),"default")})]):void 0),"footer")})]),"default")});z.appContext=c,z.children?.length&&(z.children[0].appContext=c);const M=document.createElement("div");return M.id=`${n}-${C}`,h().appendChild(M),e.render(z,M),e.nextTick((()=>{u.value[R]=!0})),s.set(C,{props:y,propsRef:O,destoryWhenClosed:y.destoryWhenClosed,container:M,componentInstance:b,drawerId:y.drawerId,component:i,renderKey:V.value,componentRef:E.componentRef,getInstance:E.getInstance}),e.nextTick((()=>{if(b){const e=s.get(C);e&&(e.componentInstance=b,E.componentRef.value=b)}if(y.afterDrawerOpen&&"function"==typeof y.afterDrawerOpen){setTimeout(t((()=>{if(b)try{y.afterDrawerOpen(b)}catch(e){console.error("Error in afterDrawerOpen callback:",e)}}),"checkAndCallAfterOpen"),50)}y.fullscreen&&$(),m(C)})),E}),"showDrawer"),b=t((r=>{const{appContext:o}=r||e.getCurrentInstance()||{};return c=o,l="default",{open:k}}),"initDrawerV2");exports.closeAllDrawers=C,exports.closeDrawer=L,exports.initDrawerV2=b,exports.showDrawer=k;
|
|
1
|
+
"use strict";var e=require("vue"),r=require("element-plus"),o=Object.defineProperty,t=(e,r)=>o(e,"name",{value:r,configurable:!0});const n="zn-drawer-v2";let c,l,a=0;const s=new Map,d=new Map,i=[],f=new Map,p=[],u=e.ref([]),w=new Set,h=t((()=>{const e=document.querySelector(":not(:root):fullscreen");return e||document.querySelector("body")}),"getFather"),m=t((r=>{e.nextTick((()=>{const e=document.querySelector(`#${n}-${r} .el-drawer__body`);e&&(e.scrollTop=0);const o=document.querySelectorAll(`#${n}-${r} .el-scrollbar__wrap`);if(o&&o.length)for(let e=0;e<o.length;e++){const r=o[e];r&&(r.scrollTop=0)}}))}),"resetDrawerScroll"),v=t((e=>{if(f.has(e)){const r=f.get(e);if(void 0!==r)return r}if(i.length>0){const r=i.shift();if(void 0!==r)return f.set(e,r),r}const r=u.value.length;return u.value.push(!1),f.set(e,r),r}),"getDrawerIndex"),g=t((e=>{if(f.has(e)){const r=f.get(e);void 0!==r&&(i.push(r),f.delete(e))}}),"releaseDrawerIndex"),y=t((()=>{if(0!==p.length)return p[p.length-1]}),"getTopDrawerId"),C=t((()=>{[...p].forEach((e=>{L(e)})),p.length=0}),"closeAllDrawers"),L=t((r=>{const o=void 0!==r?r:y();if(void 0===o)return;if(w.has(o))return;w.add(o);const t=f.get(o);void 0!==t&&(u.value[t]=!1);const c=document.querySelector(`#${n}-${o}`);if(!c){const e=p.indexOf(o);return e>-1&&p.splice(e,1),void w.delete(o)}const l=s.get(o),a=p.indexOf(o);if(a>-1&&p.splice(a,1),l&&l.props&&"function"==typeof l.props.onDrawerClose)try{l.props.onDrawerClose()}catch(e){console.error("Error in onDrawerClose callback:",e)}const i=!l||!1!==l.destoryWhenClosed;if(!i&&l&&l.componentInstance&&l.props.beforeDrawerClose&&"function"==typeof l.props.beforeDrawerClose)try{l.props.beforeDrawerClose(l.componentInstance)}catch(e){console.error("Error in beforeDrawerClose callback:",e)}setTimeout((()=>{if(!i&&l&&l.props.afterDrawerClose&&"function"==typeof l.props.afterDrawerClose)try{l.props.afterDrawerClose(l.componentInstance)}catch(e){console.error("Error in afterDrawerClose callback:",e)}i?(g(o),c&&c.parentNode&&(e.render(null,c),h().removeChild(c),s.delete(o),d.delete(o),document.body.classList.remove("el-popup-parent--hidden"),document.body.style.width="")):void 0!==t&&(u.value[t]=!1),w.delete(o)}),500)}),"closeDrawer"),D=t((async(e,r)=>{L(r)}),"handleClose"),I=t((async(r,o,t)=>{if(r?.onConfirm&&void 0!==o){const n=t||e.ref(!1),c=s.get(o),l=c?.componentRef?.value||c?.componentInstance;r.onConfirm((()=>L(o)),n,l)}else void 0!==o&&L(o)}),"handleConfirm"),x=t((r=>({componentRef:e.ref(null),close:t((()=>L(r)),"close"),drawerId:r,getInstance:t((()=>new Promise((e=>{const o=t((()=>{const t=s.get(r);t&&t.componentInstance?e(t.componentInstance):setTimeout(o,50)}),"checkInstance");o()}))),"getInstance")})),"createDrawerRef"),k=t(((o,i,g)=>{const y={...o,destoryWhenClosed:!1!==o.destoryWhenClosed};if(!1===y.destoryWhenClosed&&!y.drawerId)throw console.error("当destoryWhenClosed为false时,drawerId必传"),new Error("当destoryWhenClosed为false时,drawerId必传");if(y.drawerId)for(const[r,o]of s.entries())if(o.drawerId===y.drawerId){w.has(r)&&w.delete(r);const c=f.get(r);void 0!==c&&(u.value[c]=!0);const l=p.indexOf(r);l>-1&&p.splice(l,1),p.push(r);const a=document.querySelector(`#${n}-${r} .el-drawer__header .el-drawer__title`);a&&(a.textContent=y.title||"抽屉"),m(r);let h=d.get(r);if(h&&o.component===i){const e=g||{};Object.keys(h).forEach((e=>{h[e]=void 0})),Object.keys(e).forEach((r=>{h[r]=e[r]})),o.renderKey=(o.renderKey||0)+1}else{o.component=i;const t=e.markRaw(i);o.component=t,h=e.reactive({...g||{}}),d.set(r,h),o.propsRef=h}return o.props=y,e.nextTick((()=>{if(y.afterDrawerOpen&&"function"==typeof y.afterDrawerOpen){setTimeout(t((()=>{const e=s.get(r);if(e&&e.componentRef.value)try{y.afterDrawerOpen(e.componentRef.value)}catch(e){console.error("Error in afterDrawerOpen callback:",e)}}),"checkAndCallAfterOpen"),100)}m(r)})),{componentRef:o.componentRef,close:o.close||(()=>L(r)),drawerId:r,getInstance:o.getInstance}}const C=++a,k=e.ref(!1);let b=null;const R=v(C);p.push(C);const O=e.reactive({...g||{}});d.set(C,O);const V=e.ref(0),E=x(C),N=e.ref(!1),$=t((()=>{const r=document.querySelector(`#${n}-${C} .${n}.el-drawer`);r&&r.classList.toggle("is-fullscreen"),k.value=!e.unref(k)}),"toggleFull"),z=e.createVNode(r.ElConfigProvider,{namespace:"el",size:e.unref(l)},{default:t((()=>[e.createVNode(r.ElDrawer,e.mergeProps({modelValue:u.value[R],title:"抽屉",size:"30%",onClose:t((()=>D(o,C)),"onClose")},y,{render:!0,headerRender:!0,footerRender:!0,class:n}),{default:t((()=>y.render?y.render():i?e.h(i,{...O,key:V.value,ref:t((e=>{e&&(b=e,E.componentRef.value=e)}),"ref")}):null),"default"),header:t((()=>y.headerRender?y.headerRender():e.createVNode(e.Fragment,null,[e.createVNode("span",{class:".el-drawer__title"},[y.title]),!1!==y.fullscreenIcon&&(e.unref(k)?e.createVNode("div",{style:"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;",onClick:t((()=>$()),"onClick")},[e.createVNode("svg",{t:"1676740839036",class:"icon",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"2895","xmlns:xlink":"http://www.w3.org/1999/xlink",fill:"var(--el-color-info)"},[e.createVNode("path",{d:"M391 240.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L280 333.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L401 410c5.1 0.6 9.5-3.7 8.9-8.9L391 240.9zM401.1 614.1L240.8 633c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7l18.9-160.1c0.6-5.1-3.7-9.4-8.8-8.8zM622.9 409.9L783.2 391c6.6-0.8 9.4-8.9 4.7-13.6l43.9-43.9L654 200c-3.1-3.1-3.1-8.2 0-11.3l-42.4-42.3c-3.1-3.1-8.2-3.1-11.3 0L614.1 279.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L614.1 401c-0.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L623 614c-5.1-0.6-9.5 3.7-8.9 8.9L633 783.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z","p-id":"2896"},null)])]):e.createVNode("div",{style:"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;",onClick:t((()=>$()),"onClick")},[e.createVNode("svg",{class:"icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",fill:"var(--el-color-info)"},[e.createVNode("path",{d:"M290 236.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L169 160c-5.1-0.6-9.5 3.7-8.9 8.9L179 329.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zM642.7 423.7c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7L863.9 169c0.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.4zM845 694.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L734 787.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L855 864c5.1 0.6 9.5-3.7 8.9-8.9L845 694.9zM381.3 600.3c-3.1-3.1-8.2-3.1-11.3 0L236.3 733.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L160.1 855c-0.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-0.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z"},null)])]))])),"header"),footer:t((()=>y.footerRender?y.footerRender((()=>L(C))):!1!==y.showFooter?e.createVNode(e.Fragment,null,[e.createVNode(r.ElButton,{onClick:t((()=>u.value[R]=!1),"onClick")},{default:t((()=>[y.closeLabel||"取 消"]),"default")}),e.createVNode(r.ElButton,{type:"primary",loading:N.value,onClick:t((()=>I(y,C,N)),"onClick")},{default:t((()=>[y.confirmLabel||"确 定"]),"default")})]):void 0),"footer")})]),"default")});z.appContext=c,z.children?.length&&(z.children[0].appContext=c);const M=document.createElement("div");return M.id=`${n}-${C}`,h().appendChild(M),e.render(z,M),e.nextTick((()=>{u.value[R]=!0})),s.set(C,{props:y,propsRef:O,destoryWhenClosed:y.destoryWhenClosed,container:M,componentInstance:b,drawerId:y.drawerId,component:i,renderKey:V.value,componentRef:E.componentRef,getInstance:E.getInstance}),e.nextTick((()=>{if(b){const e=s.get(C);e&&(e.componentInstance=b,E.componentRef.value=b)}if(y.afterDrawerOpen&&"function"==typeof y.afterDrawerOpen){setTimeout(t((()=>{if(b)try{y.afterDrawerOpen(b)}catch(e){console.error("Error in afterDrawerOpen callback:",e)}}),"checkAndCallAfterOpen"),50)}y.fullscreen&&$(),m(C)})),E}),"showDrawer"),b=t((r=>{const{appContext:o}=r||e.getCurrentInstance()||{};return c=o,l="default",{open:k}}),"initDrawerV2");exports.closeAllDrawers=C,exports.closeDrawer=L,exports.initDrawerV2=b,exports.showDrawer=k;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/useDrawerV2/src/index.tsx"],"sourcesContent":["import {\n render,\n getCurrentInstance,\n unref,\n type Component,\n type ComponentInternalInstance,\n type VNode,\n type AppContext,\n nextTick,\n ref,\n Fragment,\n markRaw,\n reactive,\n h,\n type Ref\n} from 'vue'\nimport { ElDrawer, ElButton, type DrawerProps, ElConfigProvider } from 'element-plus'\n\nconst prefixClass = 'zn-drawer-v2'\n\nlet id = 0\n\nlet appContextConst: AppContext | undefined\nlet layoutSize: 'default' | 'small' | 'large' | undefined\n\n// 用于存储不销毁的抽屉实例\nconst drawerInstances = new Map<number, DrawerInstance>()\n\n// 用于管理组件的props更新\nconst propsStore = new Map<number, any>()\n\n// 存储可用的索引,用于复用已关闭的抽屉位置\nconst availableIndices: number[] = []\n\n// 存储抽屉索引与ID的映射关系\nconst drawerIndexMap = new Map<number, number>()\n\n// 抽屉栈:存储已打开的抽屉ID,按打开顺序(LIFO)\nconst drawerStack: number[] = []\n\n// 动态的抽屉显示列表,初始为10个,可根据需要扩展\nconst isShowList = ref<boolean[]>([])\n\n// 用于跟踪抽屉正在关闭的状态\nconst closingDrawers = new Set<number>()\n\nconst getFather = (): Element => {\n const fullScreen = document.querySelector(':not(:root):fullscreen')\n if (fullScreen) return fullScreen\n return document.querySelector('body') as HTMLBodyElement\n}\n\n/**\n * 重置抽屉的滚动条位置到顶部\n */\nconst resetDrawerScroll = (id: number) => {\n nextTick(() => {\n const drawerEl = document.querySelector(`#${prefixClass}-${id} .el-drawer__body`)\n if (drawerEl) {\n drawerEl.scrollTop = 0\n }\n\n // 同时处理可能存在的el-scrollbar元素\n const scrollbars = document.querySelectorAll(`#${prefixClass}-${id} .el-scrollbar__wrap`)\n if (scrollbars && scrollbars.length) {\n for (let i = 0; i < scrollbars.length; i++) {\n const scrollbar = scrollbars[i] as HTMLElement\n if (scrollbar) {\n scrollbar.scrollTop = 0\n }\n }\n }\n })\n}\n\nexport interface ZnDrawerProps extends Partial<DrawerProps> {\n /** 内容区渲染 TSX */\n render?: () => VNode\n /** 顶部渲染 TSX */\n headerRender?: () => VNode\n /** 底部渲染 TSX */\n footerRender?: (closeDrawer: () => void) => VNode\n /** 是否渲染顶部 */\n showFooter?: boolean\n /** 确认按钮点击事件 */\n onConfirm?: (closeDrawer: () => void, loading: Ref<boolean>, instance?: any) => any\n /** 关闭按钮点击事件 */\n onDrawerClose?: () => void\n /** 确认按钮文字,默认 确认 */\n confirmLabel?: string\n /** 关闭按钮文字,默认 关闭 */\n closeLabel?: string\n /** 是否默认全屏,默认 false */\n fullscreen?: boolean\n /** 是否渲染全屏图标,默认 true */\n fullscreenIcon?: boolean\n /** 是否在关闭时销毁组件,默认 true */\n destoryWhenClosed?: boolean\n /** 抽屉唯一标识,当destoryWhenClosed为false时必传 */\n drawerId?: string | number\n /** 组件卸载前调用的方法,接收组件实例作为参数,仅在destoryWhenClosed为false时执行 */\n beforeDrawerClose?: (instance: any) => void\n /** 关闭动画结束后调用的方法,500ms后执行,接收组件实例作为参数,仅在destoryWhenClosed为false时执行 */\n afterDrawerClose?: (instance: any) => void\n /** 抽屉打开后调用的方法,接收组件实例作为参数 */\n afterDrawerOpen?: (instance: any) => void\n}\n\n/**\n * 抽屉引用对象\n */\nexport interface DrawerRef {\n /** 组件实例的响应式引用 */\n componentRef: Ref<any>\n /** 关闭抽屉的方法 */\n close: () => void\n /** 抽屉的唯一ID */\n drawerId: number\n /** 异步获取组件实例的方法 */\n getInstance: () => Promise<any>\n}\n\n/**\n * 获取用于显示抽屉的索引\n * @param drawerId 抽屉ID\n * @returns 分配的索引\n */\nconst getDrawerIndex = (drawerId: number): number => {\n // 如果已经有映射关系,直接返回\n if (drawerIndexMap.has(drawerId)) {\n const index = drawerIndexMap.get(drawerId)\n if (index !== undefined) {\n return index\n }\n }\n\n // 如果有可用索引,使用第一个\n if (availableIndices.length > 0) {\n const index = availableIndices.shift()\n if (index !== undefined) {\n drawerIndexMap.set(drawerId, index)\n return index\n }\n }\n\n // 如果没有可用索引,扩展isShowList数组并使用新增的索引\n const newIndex = isShowList.value.length\n isShowList.value.push(false) // 初始为false,由showDrawer控制显示\n drawerIndexMap.set(drawerId, newIndex)\n return newIndex\n}\n\n/**\n * 释放抽屉索引,使其可供后续抽屉复用\n * @param drawerId 抽屉ID\n */\nconst releaseDrawerIndex = (drawerId: number): void => {\n if (drawerIndexMap.has(drawerId)) {\n const index = drawerIndexMap.get(drawerId)\n if (index !== undefined) {\n // 将该索引标记为可用\n availableIndices.push(index)\n // 清除映射关系\n drawerIndexMap.delete(drawerId)\n }\n }\n}\n\n/**\n * 获取栈顶抽屉ID(最后打开的)\n * @returns 栈顶抽屉ID,如果没有则返回undefined\n */\nconst getTopDrawerId = (): number | undefined => {\n if (drawerStack.length === 0) {\n return undefined\n }\n return drawerStack[drawerStack.length - 1]\n}\n\n/**\n * 关闭所有打开的抽屉\n */\nexport const closeAllDrawers = () => {\n // 复制当前栈,避免在遍历过程中修改\n const drawersToClose = [...drawerStack]\n\n drawersToClose.forEach((drawerId) => {\n closeDrawer(drawerId)\n })\n\n // 清空栈\n drawerStack.length = 0\n}\n\n/**\n * 关闭抽屉(支持栈管理)\n * 如果指定了ID,则关闭对应ID的抽屉\n * 如果未指定ID,则关闭栈顶的抽屉(最后打开的)\n * @param targetId 指定要关闭的抽屉ID,如不传则关闭栈顶抽屉\n */\nexport const closeDrawer = (targetId?: number) => {\n // 确定要关闭的抽屉ID\n const currentId = targetId !== undefined ? targetId : getTopDrawerId()\n\n // 如果没有可关闭的抽屉,直接返回\n if (currentId === undefined) return\n\n // 防止重复关闭\n if (closingDrawers.has(currentId)) return\n\n closingDrawers.add(currentId)\n\n // 获取抽屉索引\n const drawerIndex = drawerIndexMap.get(currentId)\n if (drawerIndex !== undefined) {\n isShowList.value[drawerIndex] = false\n }\n\n const vm = document.querySelector(`#${prefixClass}-${currentId}`) as HTMLElement\n if (!vm) {\n // 如果DOM元素不存在,立即清理状态\n const stackIndex = drawerStack.indexOf(currentId)\n if (stackIndex > -1) {\n drawerStack.splice(stackIndex, 1)\n }\n closingDrawers.delete(currentId)\n return\n }\n\n // 获取该抽屉是否需要在关闭时销毁\n const instance = drawerInstances.get(currentId)\n\n // 立即从抽屉栈中移除,避免快速关闭时的状态混乱\n const stackIndex = drawerStack.indexOf(currentId)\n if (stackIndex > -1) {\n drawerStack.splice(stackIndex, 1)\n }\n\n // 调用onDrawerClose回调\n if (instance && instance.props && typeof instance.props.onDrawerClose === 'function') {\n try {\n instance.props.onDrawerClose()\n } catch (err) {\n console.error('Error in onDrawerClose callback:', err)\n }\n }\n\n // 判断是否需要销毁组件\n const shouldDestroy = instance ? instance.destoryWhenClosed !== false : true\n\n // 只在不销毁的情况下调用关闭前的回调\n if (!shouldDestroy && instance && instance.componentInstance) {\n if (instance.props.beforeDrawerClose && typeof instance.props.beforeDrawerClose === 'function') {\n try {\n instance.props.beforeDrawerClose(instance.componentInstance)\n } catch (err) {\n console.error('Error in beforeDrawerClose callback:', err)\n }\n }\n }\n\n // 关闭动画结束后执行的逻辑\n setTimeout(() => {\n // 只在不销毁的情况下执行afterDrawerClose回调\n if (!shouldDestroy && instance && instance.props.afterDrawerClose && typeof instance.props.afterDrawerClose === 'function') {\n try {\n instance.props.afterDrawerClose(instance.componentInstance)\n } catch (err) {\n console.error('Error in afterDrawerClose callback:', err)\n }\n }\n\n if (shouldDestroy) {\n // 释放抽屉索引\n releaseDrawerIndex(currentId)\n\n if (vm && vm.parentNode) {\n render(null, vm)\n getFather().removeChild(vm)\n // 清除实例记录\n drawerInstances.delete(currentId)\n // 清除props存储\n propsStore.delete(currentId)\n document.body.classList.remove('el-popup-parent--hidden')\n document.body.style.width = ''\n }\n } else {\n // 不销毁的情况下,确保抽屉完全隐藏\n if (drawerIndex !== undefined) {\n isShowList.value[drawerIndex] = false\n }\n }\n\n // 从关闭集合中移除\n closingDrawers.delete(currentId)\n }, 500)\n}\n\nconst handleClose = async (_: any, currentId?: number) => {\n closeDrawer(currentId)\n}\n\nconst handleConfirm = async (drawerProps?: ZnDrawerProps, currentId?: number, loading?: Ref<boolean>) => {\n if (drawerProps?.onConfirm && currentId !== undefined) {\n const loadingRef = loading || ref(false)\n // 获取组件实例\n const instance = drawerInstances.get(currentId)\n const componentInstance = instance?.componentInstance\n drawerProps.onConfirm(() => closeDrawer(currentId), loadingRef, componentInstance)\n return\n }\n\n if (currentId !== undefined) {\n closeDrawer(currentId)\n }\n}\n\n// 修改存储的类型定义\ninterface DrawerInstance {\n props: ZnDrawerProps\n propsRef: Record<string, any>\n destoryWhenClosed: boolean | undefined\n container: HTMLDivElement\n componentInstance: any\n drawerId?: string | number\n component?: Component\n renderKey: number\n // 组件引用相关\n componentRef: Ref<any>\n getInstance: () => Promise<any>\n close?: () => void\n}\n\n/**\n * 创建抽屉引用对象\n */\nconst createDrawerRef = (drawerId: number): DrawerRef => {\n const componentRef = ref<any>(null)\n\n return {\n componentRef,\n close: () => closeDrawer(drawerId),\n drawerId,\n getInstance: () => {\n return new Promise((resolve) => {\n const checkInstance = () => {\n const instance = drawerInstances.get(drawerId)\n if (instance && instance.componentInstance) {\n resolve(instance.componentInstance)\n } else {\n // 如果实例还没准备好,继续等待\n setTimeout(checkInstance, 50)\n }\n }\n checkInstance()\n })\n }\n }\n}\n\n/**\n * 内容渲染方式有两种\n * 方式 1:在第一个参数里写 render,即可实现 el-drawer 的内容渲染\n * 方式 2:第二个参数为组件,第三个参数为组件的 props\n *\n * 在第一个参数里写 headerRender 和 footerRender,可以自定义 el-drawer 的 header 和 footer\n */\nexport const showDrawer = (drawerProps: ZnDrawerProps, component?: Component, componentsProps?: any): DrawerRef => {\n // 设置destoryWhenClosed的默认值为true\n const props = { ...drawerProps, destoryWhenClosed: drawerProps.destoryWhenClosed !== false }\n\n // 验证参数\n if (props.destoryWhenClosed === false && !props.drawerId) {\n console.error('当destoryWhenClosed为false时,drawerId必传')\n throw new Error('当destoryWhenClosed为false时,drawerId必传')\n }\n\n // 如果有drawerId,先检查是否已存在该抽屉\n if (props.drawerId) {\n // 查找是否有对应drawerId的抽屉实例\n for (const [existingId, instance] of drawerInstances.entries()) {\n if (instance.drawerId === props.drawerId) {\n // 如果抽屉正在关闭中,先从关闭集合中移除\n if (closingDrawers.has(existingId)) {\n closingDrawers.delete(existingId)\n }\n\n // 获取抽屉索引\n const drawerIndex = drawerIndexMap.get(existingId)\n if (drawerIndex !== undefined) {\n // 将抽屉显示出来\n isShowList.value[drawerIndex] = true\n }\n\n // 更新栈顺序,移到栈顶(表示最新打开)\n const index = drawerStack.indexOf(existingId)\n if (index > -1) {\n drawerStack.splice(index, 1)\n }\n drawerStack.push(existingId)\n\n // 更新抽屉标题和配置\n const drawerEl = document.querySelector(`#${prefixClass}-${existingId} .el-drawer__header .el-drawer__title`)\n if (drawerEl) {\n drawerEl.textContent = props.title || '抽屉'\n }\n\n // 重置滚动条位置到顶部\n resetDrawerScroll(existingId)\n\n // 获取对应的props响应式对象\n let propsRef = propsStore.get(existingId)\n // 如果没有或组件已变化,则创建新的\n if (!propsRef || instance.component !== component) {\n instance.component = component\n\n // 标记组件为非响应式,避免不必要的深层响应式转换\n const rawComponent = markRaw(component)\n instance.component = rawComponent\n\n // 创建一个深度响应式的props容器\n propsRef = reactive({ ...(componentsProps || {}) })\n propsStore.set(existingId, propsRef)\n\n // 设置到实例中,以便后续引用\n instance.propsRef = propsRef\n } else {\n // 更新现有的props引用\n const newProps = componentsProps || {}\n // 先清空对象\n Object.keys(propsRef).forEach((key) => {\n propsRef[key] = undefined\n })\n // 然后添加新属性\n Object.keys(newProps).forEach((key) => {\n propsRef[key] = newProps[key]\n })\n\n // 增加renderKey强制组件重新渲染\n instance.renderKey = (instance.renderKey || 0) + 1\n }\n\n // 更新实例中的props属性\n instance.props = props\n\n // 执行afterDrawerOpen回调\n nextTick(() => {\n if (props.afterDrawerOpen && typeof props.afterDrawerOpen === 'function') {\n // 等待组件实例准备好\n const checkAndCallAfterOpen = () => {\n // 重新获取最新的组件实例\n const updatedInstance = drawerInstances.get(existingId)\n if (updatedInstance && updatedInstance.componentRef.value) {\n try {\n props.afterDrawerOpen(updatedInstance.componentRef.value)\n } catch (err) {\n console.error('Error in afterDrawerOpen callback:', err)\n }\n }\n }\n // 延迟执行,确保组件已经挂载\n setTimeout(checkAndCallAfterOpen, 100)\n }\n\n // 确保滚动条重置\n resetDrawerScroll(existingId)\n })\n\n // 返回现有的 DrawerRef\n return {\n componentRef: instance.componentRef,\n close: instance.close || (() => closeDrawer(existingId)),\n drawerId: existingId,\n getInstance: instance.getInstance\n }\n }\n }\n }\n\n const currentId = ++id\n const isFullscreen = ref(false)\n let componentInstance: any = null\n // 为新抽屉分配索引\n const drawerIndex = getDrawerIndex(currentId)\n\n // 添加到抽屉栈中\n drawerStack.push(currentId)\n\n // 创建一个响应式引用\n const propsRef = reactive({ ...(componentsProps || {}) })\n // 存储到全局Map中\n propsStore.set(currentId, propsRef)\n\n // 创建一个渲染key\n const renderKey = ref(0)\n\n // 创建 DrawerRef 对象\n const drawerRef = createDrawerRef(currentId)\n\n // 创建确认按钮的loading状态\n const confirmLoading = ref(false)\n\n const toggleFull = () => {\n const elDrawerEl = document.querySelector(`${`#${prefixClass}-${currentId}`} .${prefixClass}.el-drawer`) as HTMLElement\n if (elDrawerEl) elDrawerEl.classList.toggle('is-fullscreen')\n isFullscreen.value = !unref(isFullscreen)\n }\n\n const vm = (\n <ElConfigProvider namespace=\"el\" size={unref(layoutSize)}>\n <ElDrawer\n modelValue={isShowList.value[drawerIndex]}\n title=\"抽屉\"\n size=\"30%\"\n onClose={() => handleClose(drawerProps, currentId)}\n {...props}\n render\n headerRender\n footerRender\n class={prefixClass}>\n {{\n default: () => {\n if (props.render) return props.render()\n\n // 使用h函数创建组件,确保props传递的响应式\n if (component) {\n return h(component, {\n ...propsRef,\n key: renderKey.value,\n ref: (el: any) => {\n if (el) {\n componentInstance = el\n // 更新 DrawerRef 的 componentRef\n drawerRef.componentRef.value = el\n }\n }\n })\n }\n return null\n },\n header: () => {\n if (props.headerRender) return props.headerRender()\n return (\n <Fragment>\n <span class={`.el-drawer__title`}>{props.title}</span>\n {props.fullscreenIcon !== false &&\n (unref(isFullscreen) ? (\n <div style=\"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;\" onClick={() => toggleFull()}>\n <svg\n t=\"1676740839036\"\n class=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"2895\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n fill=\"var(--el-color-info)\">\n <path\n d=\"M391 240.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L280 333.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L401 410c5.1 0.6 9.5-3.7 8.9-8.9L391 240.9zM401.1 614.1L240.8 633c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7l18.9-160.1c0.6-5.1-3.7-9.4-8.8-8.8zM622.9 409.9L783.2 391c6.6-0.8 9.4-8.9 4.7-13.6l43.9-43.9L654 200c-3.1-3.1-3.1-8.2 0-11.3l-42.4-42.3c-3.1-3.1-8.2-3.1-11.3 0L614.1 279.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L614.1 401c-0.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L623 614c-5.1-0.6-9.5 3.7-8.9 8.9L633 783.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\"\n p-id=\"2896\"></path>\n </svg>\n </div>\n ) : (\n <div style=\"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;\" onClick={() => toggleFull()}>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"var(--el-color-info)\">\n <path d=\"M290 236.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L169 160c-5.1-0.6-9.5 3.7-8.9 8.9L179 329.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zM642.7 423.7c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7L863.9 169c0.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.4zM845 694.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L734 787.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L855 864c5.1 0.6 9.5-3.7 8.9-8.9L845 694.9zM381.3 600.3c-3.1-3.1-8.2-3.1-11.3 0L236.3 733.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L160.1 855c-0.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-0.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\" />\n </svg>\n </div>\n ))}\n </Fragment>\n )\n },\n footer: () => {\n if (props.footerRender) return props.footerRender(() => closeDrawer(currentId))\n if (props.showFooter === false) return\n return (\n <Fragment>\n <ElButton onClick={() => (isShowList.value[drawerIndex] = false)}>{props.closeLabel || '取 消'}</ElButton>\n <ElButton type=\"primary\" loading={confirmLoading.value} onClick={() => handleConfirm(props, currentId, confirmLoading)}>\n {props.confirmLabel || '确 定'}\n </ElButton>\n </Fragment>\n )\n }\n }}\n </ElDrawer>\n </ElConfigProvider>\n )\n\n vm.appContext = appContextConst\n vm.children?.length && (vm.children[0].appContext = appContextConst)\n\n const container = document.createElement('div')\n container.id = `${prefixClass}-${currentId}`\n getFather().appendChild(container)\n render(vm, container)\n\n // 立即显示抽屉\n nextTick(() => {\n isShowList.value[drawerIndex] = true\n })\n\n // 存储抽屉实例\n drawerInstances.set(currentId, {\n props,\n propsRef,\n destoryWhenClosed: props.destoryWhenClosed,\n container,\n componentInstance,\n drawerId: props.drawerId,\n component,\n renderKey: renderKey.value,\n componentRef: drawerRef.componentRef,\n getInstance: drawerRef.getInstance\n } as DrawerInstance)\n\n // 延迟更新componentInstance,确保组件已经挂载\n nextTick(() => {\n if (componentInstance) {\n const instance = drawerInstances.get(currentId)\n if (instance) {\n instance.componentInstance = componentInstance\n // 更新 DrawerRef 的 componentRef\n drawerRef.componentRef.value = componentInstance\n }\n }\n\n // 执行afterDrawerOpen回调\n if (props.afterDrawerOpen && typeof props.afterDrawerOpen === 'function') {\n // 等待组件实例准备好\n const checkAndCallAfterOpen = () => {\n if (componentInstance) {\n try {\n props.afterDrawerOpen(componentInstance)\n } catch (err) {\n console.error('Error in afterDrawerOpen callback:', err)\n }\n }\n }\n setTimeout(checkAndCallAfterOpen, 50)\n }\n\n if (props.fullscreen) toggleFull()\n\n // 确保滚动条重置\n resetDrawerScroll(currentId)\n })\n\n // 始终返回 DrawerRef,提供一致的API\n return drawerRef\n}\n\nexport const initDrawerV2 = (ctx?: ComponentInternalInstance) => {\n const { appContext } = ctx || getCurrentInstance() || {}\n appContextConst = appContext\n layoutSize = 'default'\n\n return { open: showDrawer }\n}\n"],"names":["prefixClass","appContextConst","layoutSize","id","drawerInstances","Map","propsStore","availableIndices","drawerIndexMap","drawerStack","isShowList","ref","closingDrawers","Set","getFather","__name","fullScreen","document","querySelector","resetDrawerScroll","nextTick","drawerEl","scrollTop","scrollbars","querySelectorAll","length","i","scrollbar","getDrawerIndex","drawerId","has","index","get","undefined","shift","set","newIndex","value","push","releaseDrawerIndex","delete","getTopDrawerId","closeAllDrawers","forEach","closeDrawer","targetId","currentId","add","drawerIndex","vm","stackIndex","indexOf","splice","instance","props","onDrawerClose","err","error","shouldDestroy","destoryWhenClosed","componentInstance","beforeDrawerClose","setTimeout","afterDrawerClose","parentNode","render","removeChild","body","classList","remove","style","width","handleClose","_","handleConfirm","async","drawerProps","loading","onConfirm","loadingRef","createDrawerRef","componentRef","close","getInstance","Promise","resolve","checkInstance","showDrawer","component","componentsProps","console","Error","existingId","entries","textContent","title","propsRef","newProps","Object","keys","key","renderKey","rawComponent","markRaw","reactive","afterDrawerOpen","updatedInstance","checkAndCallAfterOpen","isFullscreen","drawerRef","confirmLoading","toggleFull","elDrawerEl","toggle","unref","_createVNode","ElConfigProvider","namespace","size","default","ElDrawer","_mergeProps","modelValue","onClose","headerRender","footerRender","class","h","el","header","_Fragment","fullscreenIcon","onClick","t","viewBox","version","xmlns","fill","d","footer","showFooter","ElButton","closeLabel","type","confirmLabel","appContext","children","container","createElement","appendChild","fullscreen","initDrawerV2","ctx","getCurrentInstance","open"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../packages/hooks/useDrawerV2/src/index.tsx"],"sourcesContent":["import {\n render,\n getCurrentInstance,\n unref,\n type Component,\n type ComponentInternalInstance,\n type VNode,\n type AppContext,\n nextTick,\n ref,\n Fragment,\n markRaw,\n reactive,\n h,\n type Ref\n} from 'vue'\nimport { ElDrawer, ElButton, type DrawerProps, ElConfigProvider } from 'element-plus'\n\nconst prefixClass = 'zn-drawer-v2'\n\nlet id = 0\n\nlet appContextConst: AppContext | undefined\nlet layoutSize: 'default' | 'small' | 'large' | undefined\n\n// 用于存储不销毁的抽屉实例\nconst drawerInstances = new Map<number, DrawerInstance>()\n\n// 用于管理组件的props更新\nconst propsStore = new Map<number, any>()\n\n// 存储可用的索引,用于复用已关闭的抽屉位置\nconst availableIndices: number[] = []\n\n// 存储抽屉索引与ID的映射关系\nconst drawerIndexMap = new Map<number, number>()\n\n// 抽屉栈:存储已打开的抽屉ID,按打开顺序(LIFO)\nconst drawerStack: number[] = []\n\n// 动态的抽屉显示列表,初始为10个,可根据需要扩展\nconst isShowList = ref<boolean[]>([])\n\n// 用于跟踪抽屉正在关闭的状态\nconst closingDrawers = new Set<number>()\n\nconst getFather = (): Element => {\n const fullScreen = document.querySelector(':not(:root):fullscreen')\n if (fullScreen) return fullScreen\n return document.querySelector('body') as HTMLBodyElement\n}\n\n/**\n * 重置抽屉的滚动条位置到顶部\n */\nconst resetDrawerScroll = (id: number) => {\n nextTick(() => {\n const drawerEl = document.querySelector(`#${prefixClass}-${id} .el-drawer__body`)\n if (drawerEl) {\n drawerEl.scrollTop = 0\n }\n\n // 同时处理可能存在的el-scrollbar元素\n const scrollbars = document.querySelectorAll(`#${prefixClass}-${id} .el-scrollbar__wrap`)\n if (scrollbars && scrollbars.length) {\n for (let i = 0; i < scrollbars.length; i++) {\n const scrollbar = scrollbars[i] as HTMLElement\n if (scrollbar) {\n scrollbar.scrollTop = 0\n }\n }\n }\n })\n}\n\nexport interface ZnDrawerProps extends Partial<DrawerProps> {\n /** 内容区渲染 TSX */\n render?: () => VNode\n /** 顶部渲染 TSX */\n headerRender?: () => VNode\n /** 底部渲染 TSX */\n footerRender?: (closeDrawer: () => void) => VNode\n /** 是否渲染顶部 */\n showFooter?: boolean\n /** 确认按钮点击事件 */\n onConfirm?: (closeDrawer: () => void, loading: Ref<boolean>, instance?: any) => any\n /** 关闭按钮点击事件 */\n onDrawerClose?: () => void\n /** 确认按钮文字,默认 确认 */\n confirmLabel?: string\n /** 关闭按钮文字,默认 关闭 */\n closeLabel?: string\n /** 是否默认全屏,默认 false */\n fullscreen?: boolean\n /** 是否渲染全屏图标,默认 true */\n fullscreenIcon?: boolean\n /** 是否在关闭时销毁组件,默认 true */\n destoryWhenClosed?: boolean\n /** 抽屉唯一标识,当destoryWhenClosed为false时必传 */\n drawerId?: string | number\n /** 组件卸载前调用的方法,接收组件实例作为参数,仅在destoryWhenClosed为false时执行 */\n beforeDrawerClose?: (instance: any) => void\n /** 关闭动画结束后调用的方法,500ms后执行,接收组件实例作为参数,仅在destoryWhenClosed为false时执行 */\n afterDrawerClose?: (instance: any) => void\n /** 抽屉打开后调用的方法,接收组件实例作为参数 */\n afterDrawerOpen?: (instance: any) => void\n}\n\n/**\n * 抽屉引用对象\n */\nexport interface DrawerRef {\n /** 组件实例的响应式引用 */\n componentRef: Ref<any>\n /** 关闭抽屉的方法 */\n close: () => void\n /** 抽屉的唯一ID */\n drawerId: number\n /** 异步获取组件实例的方法 */\n getInstance: () => Promise<any>\n}\n\n/**\n * 获取用于显示抽屉的索引\n * @param drawerId 抽屉ID\n * @returns 分配的索引\n */\nconst getDrawerIndex = (drawerId: number): number => {\n // 如果已经有映射关系,直接返回\n if (drawerIndexMap.has(drawerId)) {\n const index = drawerIndexMap.get(drawerId)\n if (index !== undefined) {\n return index\n }\n }\n\n // 如果有可用索引,使用第一个\n if (availableIndices.length > 0) {\n const index = availableIndices.shift()\n if (index !== undefined) {\n drawerIndexMap.set(drawerId, index)\n return index\n }\n }\n\n // 如果没有可用索引,扩展isShowList数组并使用新增的索引\n const newIndex = isShowList.value.length\n isShowList.value.push(false) // 初始为false,由showDrawer控制显示\n drawerIndexMap.set(drawerId, newIndex)\n return newIndex\n}\n\n/**\n * 释放抽屉索引,使其可供后续抽屉复用\n * @param drawerId 抽屉ID\n */\nconst releaseDrawerIndex = (drawerId: number): void => {\n if (drawerIndexMap.has(drawerId)) {\n const index = drawerIndexMap.get(drawerId)\n if (index !== undefined) {\n // 将该索引标记为可用\n availableIndices.push(index)\n // 清除映射关系\n drawerIndexMap.delete(drawerId)\n }\n }\n}\n\n/**\n * 获取栈顶抽屉ID(最后打开的)\n * @returns 栈顶抽屉ID,如果没有则返回undefined\n */\nconst getTopDrawerId = (): number | undefined => {\n if (drawerStack.length === 0) {\n return undefined\n }\n return drawerStack[drawerStack.length - 1]\n}\n\n/**\n * 关闭所有打开的抽屉\n */\nexport const closeAllDrawers = () => {\n // 复制当前栈,避免在遍历过程中修改\n const drawersToClose = [...drawerStack]\n\n drawersToClose.forEach((drawerId) => {\n closeDrawer(drawerId)\n })\n\n // 清空栈\n drawerStack.length = 0\n}\n\n/**\n * 关闭抽屉(支持栈管理)\n * 如果指定了ID,则关闭对应ID的抽屉\n * 如果未指定ID,则关闭栈顶的抽屉(最后打开的)\n * @param targetId 指定要关闭的抽屉ID,如不传则关闭栈顶抽屉\n */\nexport const closeDrawer = (targetId?: number) => {\n // 确定要关闭的抽屉ID\n const currentId = targetId !== undefined ? targetId : getTopDrawerId()\n\n // 如果没有可关闭的抽屉,直接返回\n if (currentId === undefined) return\n\n // 防止重复关闭\n if (closingDrawers.has(currentId)) return\n\n closingDrawers.add(currentId)\n\n // 获取抽屉索引\n const drawerIndex = drawerIndexMap.get(currentId)\n if (drawerIndex !== undefined) {\n isShowList.value[drawerIndex] = false\n }\n\n const vm = document.querySelector(`#${prefixClass}-${currentId}`) as HTMLElement\n if (!vm) {\n // 如果DOM元素不存在,立即清理状态\n const stackIndex = drawerStack.indexOf(currentId)\n if (stackIndex > -1) {\n drawerStack.splice(stackIndex, 1)\n }\n closingDrawers.delete(currentId)\n return\n }\n\n // 获取该抽屉是否需要在关闭时销毁\n const instance = drawerInstances.get(currentId)\n\n // 立即从抽屉栈中移除,避免快速关闭时的状态混乱\n const stackIndex = drawerStack.indexOf(currentId)\n if (stackIndex > -1) {\n drawerStack.splice(stackIndex, 1)\n }\n\n // 调用onDrawerClose回调\n if (instance && instance.props && typeof instance.props.onDrawerClose === 'function') {\n try {\n instance.props.onDrawerClose()\n } catch (err) {\n console.error('Error in onDrawerClose callback:', err)\n }\n }\n\n // 判断是否需要销毁组件\n const shouldDestroy = instance ? instance.destoryWhenClosed !== false : true\n\n // 只在不销毁的情况下调用关闭前的回调\n if (!shouldDestroy && instance && instance.componentInstance) {\n if (instance.props.beforeDrawerClose && typeof instance.props.beforeDrawerClose === 'function') {\n try {\n instance.props.beforeDrawerClose(instance.componentInstance)\n } catch (err) {\n console.error('Error in beforeDrawerClose callback:', err)\n }\n }\n }\n\n // 关闭动画结束后执行的逻辑\n setTimeout(() => {\n // 只在不销毁的情况下执行afterDrawerClose回调\n if (!shouldDestroy && instance && instance.props.afterDrawerClose && typeof instance.props.afterDrawerClose === 'function') {\n try {\n instance.props.afterDrawerClose(instance.componentInstance)\n } catch (err) {\n console.error('Error in afterDrawerClose callback:', err)\n }\n }\n\n if (shouldDestroy) {\n // 释放抽屉索引\n releaseDrawerIndex(currentId)\n\n if (vm && vm.parentNode) {\n render(null, vm)\n getFather().removeChild(vm)\n // 清除实例记录\n drawerInstances.delete(currentId)\n // 清除props存储\n propsStore.delete(currentId)\n document.body.classList.remove('el-popup-parent--hidden')\n document.body.style.width = ''\n }\n } else {\n // 不销毁的情况下,确保抽屉完全隐藏\n if (drawerIndex !== undefined) {\n isShowList.value[drawerIndex] = false\n }\n }\n\n // 从关闭集合中移除\n closingDrawers.delete(currentId)\n }, 500)\n}\n\nconst handleClose = async (_: any, currentId?: number) => {\n closeDrawer(currentId)\n}\n\nconst handleConfirm = async (drawerProps?: ZnDrawerProps, currentId?: number, loading?: Ref<boolean>) => {\n if (drawerProps?.onConfirm && currentId !== undefined) {\n const loadingRef = loading || ref(false)\n // 获取组件实例\n const instance = drawerInstances.get(currentId)\n // 优先使用 componentRef.value,因为它在 ref 回调中会立即更新\n // 如果 componentRef.value 为空,再尝试使用 componentInstance\n const componentInstance = instance?.componentRef?.value || instance?.componentInstance\n drawerProps.onConfirm(() => closeDrawer(currentId), loadingRef, componentInstance)\n return\n }\n\n if (currentId !== undefined) {\n closeDrawer(currentId)\n }\n}\n\n// 修改存储的类型定义\ninterface DrawerInstance {\n props: ZnDrawerProps\n propsRef: Record<string, any>\n destoryWhenClosed: boolean | undefined\n container: HTMLDivElement\n componentInstance: any\n drawerId?: string | number\n component?: Component\n renderKey: number\n // 组件引用相关\n componentRef: Ref<any>\n getInstance: () => Promise<any>\n close?: () => void\n}\n\n/**\n * 创建抽屉引用对象\n */\nconst createDrawerRef = (drawerId: number): DrawerRef => {\n const componentRef = ref<any>(null)\n\n return {\n componentRef,\n close: () => closeDrawer(drawerId),\n drawerId,\n getInstance: () => {\n return new Promise((resolve) => {\n const checkInstance = () => {\n const instance = drawerInstances.get(drawerId)\n if (instance && instance.componentInstance) {\n resolve(instance.componentInstance)\n } else {\n // 如果实例还没准备好,继续等待\n setTimeout(checkInstance, 50)\n }\n }\n checkInstance()\n })\n }\n }\n}\n\n/**\n * 内容渲染方式有两种\n * 方式 1:在第一个参数里写 render,即可实现 el-drawer 的内容渲染\n * 方式 2:第二个参数为组件,第三个参数为组件的 props\n *\n * 在第一个参数里写 headerRender 和 footerRender,可以自定义 el-drawer 的 header 和 footer\n */\nexport const showDrawer = (drawerProps: ZnDrawerProps, component?: Component, componentsProps?: any): DrawerRef => {\n // 设置destoryWhenClosed的默认值为true\n const props = { ...drawerProps, destoryWhenClosed: drawerProps.destoryWhenClosed !== false }\n\n // 验证参数\n if (props.destoryWhenClosed === false && !props.drawerId) {\n console.error('当destoryWhenClosed为false时,drawerId必传')\n throw new Error('当destoryWhenClosed为false时,drawerId必传')\n }\n\n // 如果有drawerId,先检查是否已存在该抽屉\n if (props.drawerId) {\n // 查找是否有对应drawerId的抽屉实例\n for (const [existingId, instance] of drawerInstances.entries()) {\n if (instance.drawerId === props.drawerId) {\n // 如果抽屉正在关闭中,先从关闭集合中移除\n if (closingDrawers.has(existingId)) {\n closingDrawers.delete(existingId)\n }\n\n // 获取抽屉索引\n const drawerIndex = drawerIndexMap.get(existingId)\n if (drawerIndex !== undefined) {\n // 将抽屉显示出来\n isShowList.value[drawerIndex] = true\n }\n\n // 更新栈顺序,移到栈顶(表示最新打开)\n const index = drawerStack.indexOf(existingId)\n if (index > -1) {\n drawerStack.splice(index, 1)\n }\n drawerStack.push(existingId)\n\n // 更新抽屉标题和配置\n const drawerEl = document.querySelector(`#${prefixClass}-${existingId} .el-drawer__header .el-drawer__title`)\n if (drawerEl) {\n drawerEl.textContent = props.title || '抽屉'\n }\n\n // 重置滚动条位置到顶部\n resetDrawerScroll(existingId)\n\n // 获取对应的props响应式对象\n let propsRef = propsStore.get(existingId)\n // 如果没有或组件已变化,则创建新的\n if (!propsRef || instance.component !== component) {\n instance.component = component\n\n // 标记组件为非响应式,避免不必要的深层响应式转换\n const rawComponent = markRaw(component)\n instance.component = rawComponent\n\n // 创建一个深度响应式的props容器\n propsRef = reactive({ ...(componentsProps || {}) })\n propsStore.set(existingId, propsRef)\n\n // 设置到实例中,以便后续引用\n instance.propsRef = propsRef\n } else {\n // 更新现有的props引用\n const newProps = componentsProps || {}\n // 先清空对象\n Object.keys(propsRef).forEach((key) => {\n propsRef[key] = undefined\n })\n // 然后添加新属性\n Object.keys(newProps).forEach((key) => {\n propsRef[key] = newProps[key]\n })\n\n // 增加renderKey强制组件重新渲染\n instance.renderKey = (instance.renderKey || 0) + 1\n }\n\n // 更新实例中的props属性\n instance.props = props\n\n // 执行afterDrawerOpen回调\n nextTick(() => {\n if (props.afterDrawerOpen && typeof props.afterDrawerOpen === 'function') {\n // 等待组件实例准备好\n const checkAndCallAfterOpen = () => {\n // 重新获取最新的组件实例\n const updatedInstance = drawerInstances.get(existingId)\n if (updatedInstance && updatedInstance.componentRef.value) {\n try {\n props.afterDrawerOpen(updatedInstance.componentRef.value)\n } catch (err) {\n console.error('Error in afterDrawerOpen callback:', err)\n }\n }\n }\n // 延迟执行,确保组件已经挂载\n setTimeout(checkAndCallAfterOpen, 100)\n }\n\n // 确保滚动条重置\n resetDrawerScroll(existingId)\n })\n\n // 返回现有的 DrawerRef\n return {\n componentRef: instance.componentRef,\n close: instance.close || (() => closeDrawer(existingId)),\n drawerId: existingId,\n getInstance: instance.getInstance\n }\n }\n }\n }\n\n const currentId = ++id\n const isFullscreen = ref(false)\n let componentInstance: any = null\n // 为新抽屉分配索引\n const drawerIndex = getDrawerIndex(currentId)\n\n // 添加到抽屉栈中\n drawerStack.push(currentId)\n\n // 创建一个响应式引用\n const propsRef = reactive({ ...(componentsProps || {}) })\n // 存储到全局Map中\n propsStore.set(currentId, propsRef)\n\n // 创建一个渲染key\n const renderKey = ref(0)\n\n // 创建 DrawerRef 对象\n const drawerRef = createDrawerRef(currentId)\n\n // 创建确认按钮的loading状态\n const confirmLoading = ref(false)\n\n const toggleFull = () => {\n const elDrawerEl = document.querySelector(`${`#${prefixClass}-${currentId}`} .${prefixClass}.el-drawer`) as HTMLElement\n if (elDrawerEl) elDrawerEl.classList.toggle('is-fullscreen')\n isFullscreen.value = !unref(isFullscreen)\n }\n\n const vm = (\n <ElConfigProvider namespace=\"el\" size={unref(layoutSize)}>\n <ElDrawer\n modelValue={isShowList.value[drawerIndex]}\n title=\"抽屉\"\n size=\"30%\"\n onClose={() => handleClose(drawerProps, currentId)}\n {...props}\n render\n headerRender\n footerRender\n class={prefixClass}>\n {{\n default: () => {\n if (props.render) return props.render()\n\n // 使用h函数创建组件,确保props传递的响应式\n if (component) {\n return h(component, {\n ...propsRef,\n key: renderKey.value,\n ref: (el: any) => {\n if (el) {\n componentInstance = el\n // 更新 DrawerRef 的 componentRef\n drawerRef.componentRef.value = el\n }\n }\n })\n }\n return null\n },\n header: () => {\n if (props.headerRender) return props.headerRender()\n return (\n <Fragment>\n <span class={`.el-drawer__title`}>{props.title}</span>\n {props.fullscreenIcon !== false &&\n (unref(isFullscreen) ? (\n <div style=\"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;\" onClick={() => toggleFull()}>\n <svg\n t=\"1676740839036\"\n class=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"2895\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n fill=\"var(--el-color-info)\">\n <path\n d=\"M391 240.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L280 333.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L401 410c5.1 0.6 9.5-3.7 8.9-8.9L391 240.9zM401.1 614.1L240.8 633c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7l18.9-160.1c0.6-5.1-3.7-9.4-8.8-8.8zM622.9 409.9L783.2 391c6.6-0.8 9.4-8.9 4.7-13.6l43.9-43.9L654 200c-3.1-3.1-3.1-8.2 0-11.3l-42.4-42.3c-3.1-3.1-8.2-3.1-11.3 0L614.1 279.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L614.1 401c-0.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L623 614c-5.1-0.6-9.5 3.7-8.9 8.9L633 783.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z\"\n p-id=\"2896\"></path>\n </svg>\n </div>\n ) : (\n <div style=\"width:18px;height:18px; color:var(--el-color-info);cursor:pointer;\" onClick={() => toggleFull()}>\n <svg class=\"icon\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"var(--el-color-info)\">\n <path d=\"M290 236.4l43.9-43.9c4.7-4.7 1.9-12.8-4.7-13.6L169 160c-5.1-0.6-9.5 3.7-8.9 8.9L179 329.1c0.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zM642.7 423.7c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6 43.7 43.7c4.7 4.7 12.8 1.9 13.6-4.7L863.9 169c0.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6 0.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370c-3.1 3.1-3.1 8.2 0 11.3l42.4 42.4zM845 694.9c-0.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3c-3.1-3.1-8.2-3.1-11.3 0l-42.4 42.3c-3.1 3.1-3.1 8.2 0 11.3L734 787.6l-43.9 43.9c-4.7 4.7-1.9 12.8 4.7 13.6L855 864c5.1 0.6 9.5-3.7 8.9-8.9L845 694.9zM381.3 600.3c-3.1-3.1-8.2-3.1-11.3 0L236.3 733.9l-43.7-43.7c-4.7-4.7-12.8-1.9-13.6 4.7L160.1 855c-0.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-0.8 9.4-8.9 4.7-13.6L290 787.6 423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z\" />\n </svg>\n </div>\n ))}\n </Fragment>\n )\n },\n footer: () => {\n if (props.footerRender) return props.footerRender(() => closeDrawer(currentId))\n if (props.showFooter === false) return\n return (\n <Fragment>\n <ElButton onClick={() => (isShowList.value[drawerIndex] = false)}>{props.closeLabel || '取 消'}</ElButton>\n <ElButton type=\"primary\" loading={confirmLoading.value} onClick={() => handleConfirm(props, currentId, confirmLoading)}>\n {props.confirmLabel || '确 定'}\n </ElButton>\n </Fragment>\n )\n }\n }}\n </ElDrawer>\n </ElConfigProvider>\n )\n\n vm.appContext = appContextConst\n vm.children?.length && (vm.children[0].appContext = appContextConst)\n\n const container = document.createElement('div')\n container.id = `${prefixClass}-${currentId}`\n getFather().appendChild(container)\n render(vm, container)\n\n // 立即显示抽屉\n nextTick(() => {\n isShowList.value[drawerIndex] = true\n })\n\n // 存储抽屉实例\n drawerInstances.set(currentId, {\n props,\n propsRef,\n destoryWhenClosed: props.destoryWhenClosed,\n container,\n componentInstance,\n drawerId: props.drawerId,\n component,\n renderKey: renderKey.value,\n componentRef: drawerRef.componentRef,\n getInstance: drawerRef.getInstance\n } as DrawerInstance)\n\n // 延迟更新componentInstance,确保组件已经挂载\n nextTick(() => {\n if (componentInstance) {\n const instance = drawerInstances.get(currentId)\n if (instance) {\n instance.componentInstance = componentInstance\n // 更新 DrawerRef 的 componentRef\n drawerRef.componentRef.value = componentInstance\n }\n }\n\n // 执行afterDrawerOpen回调\n if (props.afterDrawerOpen && typeof props.afterDrawerOpen === 'function') {\n // 等待组件实例准备好\n const checkAndCallAfterOpen = () => {\n if (componentInstance) {\n try {\n props.afterDrawerOpen(componentInstance)\n } catch (err) {\n console.error('Error in afterDrawerOpen callback:', err)\n }\n }\n }\n setTimeout(checkAndCallAfterOpen, 50)\n }\n\n if (props.fullscreen) toggleFull()\n\n // 确保滚动条重置\n resetDrawerScroll(currentId)\n })\n\n // 始终返回 DrawerRef,提供一致的API\n return drawerRef\n}\n\nexport const initDrawerV2 = (ctx?: ComponentInternalInstance) => {\n const { appContext } = ctx || getCurrentInstance() || {}\n appContextConst = appContext\n layoutSize = 'default'\n\n return { open: showDrawer }\n}\n"],"names":["prefixClass","appContextConst","layoutSize","id","drawerInstances","Map","propsStore","availableIndices","drawerIndexMap","drawerStack","isShowList","ref","closingDrawers","Set","getFather","__name","fullScreen","document","querySelector","resetDrawerScroll","nextTick","drawerEl","scrollTop","scrollbars","querySelectorAll","length","i","scrollbar","getDrawerIndex","drawerId","has","index","get","undefined","shift","set","newIndex","value","push","releaseDrawerIndex","delete","getTopDrawerId","closeAllDrawers","forEach","closeDrawer","targetId","currentId","add","drawerIndex","vm","stackIndex","indexOf","splice","instance","props","onDrawerClose","err","error","shouldDestroy","destoryWhenClosed","componentInstance","beforeDrawerClose","setTimeout","afterDrawerClose","parentNode","render","removeChild","body","classList","remove","style","width","handleClose","_","handleConfirm","async","drawerProps","loading","onConfirm","loadingRef","componentRef","createDrawerRef","close","getInstance","Promise","resolve","checkInstance","showDrawer","component","componentsProps","console","Error","existingId","entries","textContent","title","propsRef","newProps","Object","keys","key","renderKey","rawComponent","markRaw","reactive","afterDrawerOpen","updatedInstance","checkAndCallAfterOpen","isFullscreen","drawerRef","confirmLoading","toggleFull","elDrawerEl","toggle","unref","_createVNode","ElConfigProvider","namespace","size","default","ElDrawer","_mergeProps","modelValue","onClose","headerRender","footerRender","class","h","el","header","_Fragment","fullscreenIcon","onClick","t","viewBox","version","xmlns","fill","d","footer","showFooter","ElButton","closeLabel","type","confirmLabel","appContext","children","container","createElement","appendChild","fullscreen","initDrawerV2","ctx","getCurrentInstance","open"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./installer.js");require("./functions/index.js"),require("./hooks/index.js");var o=require("./utils/index.js");require("./directives/index.js"),require("./components/index.js");var r=require("./functions/modules/log.js"),s=require("./hooks/useDialogV2/index.js"),t=require("./hooks/useDrawerV2/index.js"),n=require("./hooks/useDrawerV2/src/index.js"),i=require("./hooks/usePopWindow/src/index.js"),u=require("./hooks/usePopWindow/index.js"),l=require("./hooks/usePopWindowV2/src/index.js"),p=require("./hooks/usePopWindowV2/index.js"),d=require("./hooks/useDialog/index.js"),a=require("./hooks/useImageViewer/src/index.vue2.js"),x=require("./hooks/useImageViewer/index.js"),c=require("./hooks/useDrawer/index.js"),m=require("./utils/install.js"),q=require("./directives/modules/copy.js"),j=require("./directives/modules/drag.js"),h=require("./directives/modules/autoScroll.js"),w=require("./directives/modules/tooltip.js"),V=require("./directives/modules/confirm.js"),T=require("./directives/modules/countTo.js"),Z=require("./functions/modules/uitls.js"),g=require("./functions/modules/is.js"),f=require("./components/znForm/src/hooks/useZnForm.js"),I=require("./components/znFormV2/src/hooks/useZnFormV2.js"),W=require("./components/znSearch/src/hooks/useProSearch.js"),F=require("./components/znChart/index.js"),P=require("./components/znCountTo/index.js"),z=require("./components/znForm/src/components/ZnFormItem.vue2.js"),v=require("./components/znForm/index.js"),b=require("./components/znFormV2/src/helper/index.js"),y=require("./components/znFormV2/src/components/ZnFormV2Item.vue2.js"),k=require("./components/znFormV2/index.js"),D=require("./components/znGrid/index.js"),S=require("./components/znNumberScroll/index.js"),E=require("./components/znSearch/index.js"),C=require("./components/znTable/index.js"),B=require("./components/znTest/index.js"),G=require("./components/znTimeLine/index.js"),A=require("./components/znTreeFilter/index.js"),U=require("./components/znTreeSelect/index.js"),L=require("./components/znVirtualTable/src/utils/vxe-setup.js"),O=require("./components/znWorkGrid/index.js"),H=require("./components/znVirtualTable/src/index.vue2.js");globalThis.log=r.default;"function"==typeof globalThis?.log?.success&&globalThis.log.primary("1.1.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./installer.js");require("./functions/index.js"),require("./hooks/index.js");var o=require("./utils/index.js");require("./directives/index.js"),require("./components/index.js");var r=require("./functions/modules/log.js"),s=require("./hooks/useDialogV2/index.js"),t=require("./hooks/useDrawerV2/index.js"),n=require("./hooks/useDrawerV2/src/index.js"),i=require("./hooks/usePopWindow/src/index.js"),u=require("./hooks/usePopWindow/index.js"),l=require("./hooks/usePopWindowV2/src/index.js"),p=require("./hooks/usePopWindowV2/index.js"),d=require("./hooks/useDialog/index.js"),a=require("./hooks/useImageViewer/src/index.vue2.js"),x=require("./hooks/useImageViewer/index.js"),c=require("./hooks/useDrawer/index.js"),m=require("./utils/install.js"),q=require("./directives/modules/copy.js"),j=require("./directives/modules/drag.js"),h=require("./directives/modules/autoScroll.js"),w=require("./directives/modules/tooltip.js"),V=require("./directives/modules/confirm.js"),T=require("./directives/modules/countTo.js"),Z=require("./functions/modules/uitls.js"),g=require("./functions/modules/is.js"),f=require("./components/znForm/src/hooks/useZnForm.js"),I=require("./components/znFormV2/src/hooks/useZnFormV2.js"),W=require("./components/znSearch/src/hooks/useProSearch.js"),F=require("./components/znChart/index.js"),P=require("./components/znCountTo/index.js"),z=require("./components/znForm/src/components/ZnFormItem.vue2.js"),v=require("./components/znForm/index.js"),b=require("./components/znFormV2/src/helper/index.js"),y=require("./components/znFormV2/src/components/ZnFormV2Item.vue2.js"),k=require("./components/znFormV2/index.js"),D=require("./components/znGrid/index.js"),S=require("./components/znNumberScroll/index.js"),E=require("./components/znSearch/index.js"),C=require("./components/znTable/index.js"),B=require("./components/znTest/index.js"),G=require("./components/znTimeLine/index.js"),A=require("./components/znTreeFilter/index.js"),U=require("./components/znTreeSelect/index.js"),L=require("./components/znVirtualTable/src/utils/vxe-setup.js"),O=require("./components/znWorkGrid/index.js"),H=require("./components/znVirtualTable/src/index.vue2.js");globalThis.log=r.default;"function"==typeof globalThis?.log?.success&&globalThis.log.primary("1.1.16","欢迎使用znyg-frontend-common,在线文档:http://192.168.99.34:10000/znyg-frontend-common-docs/"),exports.default=e.default,exports.install=e.install,exports.copyText=o.copyText,exports.formatValue=o.formatValue,exports.treeListUtil=o.treeListUtil,exports.treeToList=o.treeToList,exports.log=r.default,exports.useDialogV2=s.useDialogV2,exports.useDrawerV2=t.useDrawerV2,exports.closeAllDrawers=n.closeAllDrawers,exports.closePopWindowById=i.closePopWindowById,exports.closePopWindowByTag=i.closePopWindowByTag,exports.getAllPopWindows=i.getAllPopWindows,exports.showPopWindow=i.showPopWindow,exports.usePopWindow=u.usePopWindow,exports.closePopWindowByIdV2=l.closePopWindowByIdV2,exports.closePopWindowByTagV2=l.closePopWindowByTagV2,exports.getAllPopWindowsV2=l.getAllPopWindowsV2,exports.showPopWindowV2=l.showPopWindowV2,exports.usePopWindowV2=p.usePopWindowV2,exports.useDialog=d.useDialog,exports.ImageViewer=a.default,exports.useImageViewer=x.useImageViewer,exports.useDrawer=c.useDrawer,exports.withInstall=m.withInstall,exports.withInstallDirectives=m.withInstallDirectives,exports.vCopy=q.default,exports.vDrag=j.default,exports.vAutoScroll=h.default,exports.vTooltip=w.default,exports.vConfirm=V.default,exports.vCountTo=T.default,exports.utils=Z.default,exports.is=g,exports.useZnForm=f.useZnForm,exports.useZnFormV2=I.useZnFormV2,exports.useZnSearch=W.useZnSearch,exports.ZnChart=F.ZnChart,exports.ZnCountTo=P.ZnCountTo,exports.ZnFormItem=z.default,exports.ZnForm=v.ZnForm,exports.batchExecute=b.batchExecute,exports.camelCaseToHyphen=b.camelCaseToHyphen,exports.checkFeatureSupport=b.checkFeatureSupport,exports.createUniqueId=b.createUniqueId,exports.debounce=b.debounce,exports.delay=b.delay,exports.executeInIdle=b.executeInIdle,exports.getElementOffsetTop=b.getElementOffsetTop,exports.getMemoryUsage=b.getMemoryUsage,exports.getObjectHash=b.getObjectHash,exports.isDeepEqual=b.isDeepEqual,exports.isElementInViewport=b.isElementInViewport,exports.isShallowEqual=b.isShallowEqual,exports.throttle=b.throttle,exports.ZnFormV2Item=y.default,exports.ZnFormV2=k.ZnFormV2,exports.ZnGrid=D.ZnGrid,exports.ZnGridItem=D.ZnGridItem,exports.ZnNumberScroll=S.ZnNumberScroll,exports.ZnSearch=E.ZnSearch,exports.ZnTable=C.ZnTable,exports.ZnTest=B.ZnTest,exports.ZnTimeline=G.ZnTimeline,exports.ZnTreeFilter=A.ZnTreeFilter,exports.ZnTreeSelect=U.ZnTreeSelect,exports.initVXETable=L.initVXETable,exports.isVXETableInitialized=L.isVXETableInitialized,exports.ZnWorkGrid=O.ZnWorkGrid,exports.ZnVirtualTable=H.default;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../packages/index.ts"],"sourcesContent":["import installer from './installer'\nimport { log } from './functions'\nexport * from './hooks'\nexport * from './utils'\nexport * from './installer'\nexport * from './directives'\nexport * from './functions'\nexport * from './components'\n\nexport default installer\nglobalThis.log = log\nconst version = '1.1.
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../packages/index.ts"],"sourcesContent":["import installer from './installer'\nimport { log } from './functions'\nexport * from './hooks'\nexport * from './utils'\nexport * from './installer'\nexport * from './directives'\nexport * from './functions'\nexport * from './components'\n\nexport default installer\nglobalThis.log = log\nconst version = '1.1.16'\nif (typeof globalThis?.log?.success === 'function') {\n globalThis.log.primary(version, '欢迎使用znyg-frontend-common,在线文档:http://192.168.99.34:10000/znyg-frontend-common-docs/')\n}\n"],"names":["globalThis","log","default","success","primary"],"mappings":"6sEAUAA,WAAWC,IAAMA,EAAAC,QAEuB,mBAA7BF,YAAYC,KAAKE,SACfH,WAAAC,IAAIG,QAFD,SAEkB"}
|