@gopowerteam/modal-render 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,14 +2,14 @@ import type { Component } from 'vue';
2
2
  import type { SizeOptions } from '../interfaces';
3
3
  declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
4
4
  id: string;
5
- formId?: string;
5
+ form?: string;
6
6
  component: Component;
7
7
  componentProps: Record<string, any>;
8
8
  width?: number | string;
9
9
  maxWidth?: number | string;
10
10
  maxHeight?: number | string;
11
11
  sizes: SizeOptions;
12
- size: 'small' | 'middle' | 'large';
12
+ size: 'small' | 'middle' | 'large' | 'fullscreen';
13
13
  title?: string;
14
14
  header?: boolean;
15
15
  footer?: boolean;
@@ -17,6 +17,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
17
17
  esc?: boolean;
18
18
  maskClosable?: boolean;
19
19
  draggable?: boolean;
20
+ mode?: 'dialog' | 'drawer';
20
21
  }>, {
21
22
  header: boolean;
22
23
  closeable: boolean;
@@ -26,18 +27,19 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
26
27
  size: string;
27
28
  esc: boolean;
28
29
  draggable: boolean;
30
+ mode: string;
29
31
  }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
32
  submit: (...args: any[]) => void;
31
33
  }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
32
34
  id: string;
33
- formId?: string;
35
+ form?: string;
34
36
  component: Component;
35
37
  componentProps: Record<string, any>;
36
38
  width?: number | string;
37
39
  maxWidth?: number | string;
38
40
  maxHeight?: number | string;
39
41
  sizes: SizeOptions;
40
- size: 'small' | 'middle' | 'large';
42
+ size: 'small' | 'middle' | 'large' | 'fullscreen';
41
43
  title?: string;
42
44
  header?: boolean;
43
45
  footer?: boolean;
@@ -45,6 +47,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
45
47
  esc?: boolean;
46
48
  maskClosable?: boolean;
47
49
  draggable?: boolean;
50
+ mode?: 'dialog' | 'drawer';
48
51
  }>, {
49
52
  header: boolean;
50
53
  closeable: boolean;
@@ -54,6 +57,7 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
54
57
  size: string;
55
58
  esc: boolean;
56
59
  draggable: boolean;
60
+ mode: string;
57
61
  }>>> & {
58
62
  onSubmit?: (...args: any[]) => any;
59
63
  }, {
@@ -61,9 +65,10 @@ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_T
61
65
  closeable: boolean;
62
66
  footer: boolean;
63
67
  maskClosable: boolean;
64
- size: 'small' | 'middle' | 'large';
68
+ size: 'small' | 'middle' | 'large' | 'fullscreen';
65
69
  esc: boolean;
66
70
  draggable: boolean;
71
+ mode: 'dialog' | 'drawer';
67
72
  }, {}>;
68
73
  export default _default;
69
74
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue");const B=Symbol("__MODAL__");function R(o){return e.getCurrentScope()?(e.onScopeDispose(o),!0):!1}function g(o){return typeof o=="function"?o():e.unref(o)}const V=typeof window<"u"&&typeof document<"u",W=Object.prototype.toString,D=o=>W.call(o)==="[object Object]",T=()=>{};function F(o,a={}){if(!e.isRef(o))return e.toRefs(o);const t=Array.isArray(o.value)?Array.from({length:o.value.length}):{};for(const n in o.value)t[n]=e.customRef(()=>({get(){return o.value[n]},set(r){var u;if((u=g(a.replaceRef))!=null?u:!0)if(Array.isArray(o.value)){const p=[...o.value];p[n]=r,o.value=p}else{const p={...o.value,[n]:r};Object.setPrototypeOf(p,Object.getPrototypeOf(o.value)),o.value=p}else o.value[n]=r}}));return t}function H(o){var a;const t=g(o);return(a=t==null?void 0:t.$el)!=null?a:t}const z=V?window:void 0;function A(...o){let a,t,n,r;if(typeof o[0]=="string"||Array.isArray(o[0])?([t,n,r]=o,a=z):[a,t,n,r]=o,!a)return T;Array.isArray(t)||(t=[t]),Array.isArray(n)||(n=[n]);const u=[],v=()=>{u.forEach(d=>d()),u.length=0},p=(d,c,f,m)=>(d.addEventListener(c,f,m),()=>d.removeEventListener(c,f,m)),_=e.watch(()=>[H(a),g(r)],([d,c])=>{if(v(),!d)return;const f=D(c)?{...c}:c;u.push(...t.flatMap(m=>n.map(w=>p(d,m,w,f))))},{immediate:!0,flush:"post"}),s=()=>{_(),v()};return R(s),s}function I(o,a={}){var t,n;const{pointerTypes:r,preventDefault:u,stopPropagation:v,exact:p,onMove:_,onEnd:s,onStart:d,initialValue:c,axis:f="both",draggingElement:m=z,containerElement:w,handle:M=o}=a,y=e.ref((t=g(c))!=null?t:{x:0,y:0}),b=e.ref(),k=l=>r?r.includes(l.pointerType):!0,E=l=>{g(u)&&l.preventDefault(),g(v)&&l.stopPropagation()},S=l=>{var h;if(!k(l)||g(p)&&l.target!==g(o))return;const N=((h=g(w))!=null?h:g(o)).getBoundingClientRect(),O={x:l.clientX-N.left,y:l.clientY-N.top};(d==null?void 0:d(O,l))!==!1&&(b.value=O,E(l))},x=l=>{if(!k(l)||!b.value)return;let{x:h,y:C}=y.value;(f==="x"||f==="both")&&(h=l.clientX-b.value.x),(f==="y"||f==="both")&&(C=l.clientY-b.value.y),y.value={x:h,y:C},_==null||_(y.value,l),E(l)},i=l=>{k(l)&&b.value&&(b.value=void 0,s==null||s(y.value,l),E(l))};if(V){const l={capture:(n=a.capture)!=null?n:!0};A(M,"pointerdown",S,l),A(m,"pointermove",x,l),A(m,"pointerup",i,l)}return{...F(y),position:y,isDragging:e.computed(()=>!!b.value),style:e.computed(()=>`left:${y.value.x}px;top:${y.value.y}px;`)}}const X={class:"modal-container"},Y={class:"title font-bold"},K={class:"action"},q={key:1,class:"modal-footer space-x-2"},G=["form"],U={name:"ModalContainer",inheritAttrs:!0},J=e.defineComponent({...U,props:{id:{},formId:{},component:{},componentProps:{},width:{},maxWidth:{},maxHeight:{},sizes:{},size:{default:"middle"},title:{},header:{type:Boolean,default:!0},footer:{type:Boolean,default:!1},closeable:{type:Boolean,default:!0},esc:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1}},emits:["submit"],setup(o,{emit:a}){const t=o,n=a,r=e.inject(B);let u=0,v=0,p;const _=e.shallowRef(),s=e.shallowRef(),{x:d,y:c}=I(s,{initialValue:{x:0,y:0}});function f(){r==null||r.close(t.id)}function m(i){if(typeof i=="number")return`${i}px`;if(typeof i=="string")return i}const w=e.computed(()=>{const i={};return t.size&&(i.width=m(t.sizes[t.size])),t.width&&(i.width=m(t.width)),t.maxWidth&&(i.maxWidth=m(t.maxWidth)),t.draggable&&(i.transform=`translate(${d.value-u}px, ${c.value-v}px)`),i}),M=e.computed(()=>{const i={};return t.draggable&&(i.cursor="move"),i}),y=e.computed(()=>{var l;const i={};return t.maxHeight&&(i.maxHeight=`calc(${(l=m(t.maxWidth))==null?void 0:l.replace("%","vh")} - 50px)`),i});function b(){n("submit")}function k(){r==null||r.close(t.id)}function E(){window&&window.addEventListener("resize",()=>{e.triggerRef(_),e.triggerRef(s),u=s.value.offsetLeft,v=s.value.offsetTop})}function S(){if(t.closeable&&t.esc){const i=({key:l})=>{l==="Escape"&&(r==null||r.close(t.id),window.removeEventListener("keydown",i))};window.addEventListener("keydown",i)}}function x(){p=new MutationObserver(i=>{i.forEach(l=>{const h=s.value.offsetLeft,C=s.value.offsetTop;h!==u&&(u=h),C!==v&&(v=h)})}),p.observe(s.value,{attributes:!0,attributeFilter:["style","offsetHeight","offsetWidth","clientHeight","clientWidth"],attributeOldValue:!0})}return e.onMounted(()=>{S(),x(),E()}),e.onUnmounted(()=>{p&&(p.disconnect(),p.takeRecords())}),(i,l)=>(e.openBlock(),e.createElementBlock("div",X,[e.createElementVNode("div",{ref_key:"wrapperRef",ref:_,class:"modal-wrapper",onClick:l[0]||(l[0]=e.withModifiers(h=>i.maskClosable&&f(),["self"]))},[e.createElementVNode("div",{ref_key:"contentRef",ref:s,class:"modal-content",style:e.normalizeStyle(w.value)},[i.header?(e.openBlock(),e.createElementBlock("div",{key:0,ref:"",class:"modal-header",style:e.normalizeStyle(M.value)},[e.createElementVNode("div",Y,e.toDisplayString(i.title),1),e.createElementVNode("div",K,[i.closeable?(e.openBlock(),e.createElementBlock("div",{key:0,class:"i-icon-park-outline:close block cursor-pointer",onClick:f})):e.createCommentVNode("",!0)])],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"modal-body",style:e.normalizeStyle(y.value)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.component),e.normalizeProps(e.guardReactiveProps(i.componentProps)),null,16))],4),i.footer?(e.openBlock(),e.createElementBlock("div",q,[e.createElementVNode("button",{class:"submit-button",form:i.formId,type:"submit",onClick:b}," 确定 ",8,G),e.createElementVNode("button",{class:"cancel-button",type:"button",onClick:k}," 取消 ")])):e.createCommentVNode("",!0)],4)],512)]))}});const L=(o,a)=>{const t=o.__vccOpts||o;for(const[n,r]of a)t[n]=r;return t},$=L(J,[["__scopeId","data-v-e6f6653f"]]),Q={key:0,class:"modal-teleport"},Z={name:"ModalProvider",inheritAttrs:!0},j=e.defineComponent({...Z,props:{appendToBody:{type:Boolean,default:!1},sizes:{default:()=>({small:520,middle:860,large:1190})},maxWidth:{default:"80%"},maxHeight:{default:"80%"}},setup(o,{expose:a}){const t=e.shallowRef([]),n=e.ref(!1);async function r(s,d,c){const f=e.defineAsyncComponent(()=>Promise.resolve(s));return new Promise(m=>{t.value.push({id:Math.random().toString(32).slice(2),component:f,props:d,options:c,resolve:m,onSubmit:e.ref(()=>{})}),e.triggerRef(t)})}function u(s,d){const c=t.value.findIndex(m=>m.id===s);if(c<0)return;const f=t.value[c];f==null||f.resolve(d),t.value.splice(c,1),e.triggerRef(t)}function v(){t.value.forEach(s=>{s.resolve()}),t.value=[],e.triggerRef(t)}function p(s){return t.value.find(d=>d.id===s)}function _(s,d){const c=t.value.find(f=>f.id===s);c&&(c.onSubmit.value=d)}return e.provide(B,{open:r,close:u,closeAll:v,getElement:p,addSubmitListener:_}),a({elements:t}),e.onMounted(()=>{n.value=!0}),(s,d)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(s.$slots,"default",{},void 0,!0),n.value?(e.openBlock(),e.createElementBlock("div",Q,[(e.openBlock(),e.createBlock(e.Teleport,{disabled:!s.appendToBody,to:"body"},[e.createVNode(e.TransitionGroup,{name:"modal-fade"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,c=>(e.openBlock(),e.createBlock($,e.mergeProps({id:c.id,key:c.id,component:c.component,"component-props":c.props,"max-height":s.maxHeight,"max-width":s.maxWidth,sizes:s.sizes},c.options,{onSubmit:c.onSubmit.value}),null,16,["id","component","component-props","max-height","max-width","sizes","onSubmit"]))),128))]),_:1})],8,["disabled"]))])):e.createCommentVNode("",!0)],64))}});const ee=L(j,[["__scopeId","data-v-171d9bdd"]]);function P(o,a){var n,r;let t=o==null?void 0:o.parent;for(;t&&((n=t==null?void 0:t.type)==null?void 0:n.name)!==a;)t=t.parent;return((r=t==null?void 0:t.type)==null?void 0:r.name)===a?t:null}function te(){const o=e.inject(B),a=e.getCurrentInstance();return{open(t,n,r){if(!o)throw new Error("Not Found Modal Provider Component");return o.open(t,n||{},r||{})},close(t){var u;if(!o)throw new Error("Not Found Modal Provider Component");const n=P(a,"ModalContainer"),r=(u=n==null?void 0:n.props)==null?void 0:u.id;if(!r)throw new Error("Not Found Current Modal Container");o.close(r,t)},closeAll(){if(!o)throw new Error("Not Found Modal Provider Component");o.closeAll()},onSubmit(t){const n=P(a,"ModalContainer");if(!(n==null?void 0:n.props.id))throw new Error("Not Found Current Modal Container")}}}function oe(o){var u;const a=e.inject(B),t=e.getCurrentInstance(),n=P(t,"ModalContainer"),r=(u=n==null?void 0:n.props)==null?void 0:u.id;a&&r&&a.addSubmitListener(r,o)}exports.ModalContainer=$;exports.ModalProvider=ee;exports.onSubmit=oe;exports.useModal=te;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue");const E=Symbol("__MODAL__");function O(n){return e.getCurrentScope()?(e.onScopeDispose(n),!0):!1}function g(n){return typeof n=="function"?n():e.unref(n)}const V=typeof window<"u"&&typeof document<"u",D=Object.prototype.toString,H=n=>D.call(n)==="[object Object]",T=()=>{};function W(n,i={}){if(!e.isRef(n))return e.toRefs(n);const t=Array.isArray(n.value)?Array.from({length:n.value.length}):{};for(const r in n.value)t[r]=e.customRef(()=>({get(){return n.value[r]},set(l){var u;if((u=g(i.replaceRef))!=null?u:!0)if(Array.isArray(n.value)){const m=[...n.value];m[r]=l,n.value=m}else{const m={...n.value,[r]:l};Object.setPrototypeOf(m,Object.getPrototypeOf(n.value)),n.value=m}else n.value[r]=l}}));return t}function F(n){var i;const t=g(n);return(i=t==null?void 0:t.$el)!=null?i:t}const $=V?window:void 0;function z(...n){let i,t,r,l;if(typeof n[0]=="string"||Array.isArray(n[0])?([t,r,l]=n,i=$):[i,t,r,l]=n,!i)return T;Array.isArray(t)||(t=[t]),Array.isArray(r)||(r=[r]);const u=[],y=()=>{u.forEach(c=>c()),u.length=0},m=(c,s,d,f)=>(c.addEventListener(s,d,f),()=>c.removeEventListener(s,d,f)),v=e.watch(()=>[F(i),g(l)],([c,s])=>{if(y(),!c)return;const d=H(s)?{...s}:s;u.push(...t.flatMap(f=>r.map(w=>m(c,f,w,d))))},{immediate:!0,flush:"post"}),a=()=>{v(),y()};return O(a),a}function I(n,i={}){var t,r;const{pointerTypes:l,preventDefault:u,stopPropagation:y,exact:m,onMove:v,onEnd:a,onStart:c,initialValue:s,axis:d="both",draggingElement:f=$,containerElement:w,handle:x=n}=i,h=e.ref((t=g(s))!=null?t:{x:0,y:0}),_=e.ref(),b=o=>l?l.includes(o.pointerType):!0,k=o=>{g(u)&&o.preventDefault(),g(y)&&o.stopPropagation()},S=o=>{var p;if(!b(o)||g(m)&&o.target!==g(n))return;const P=((p=g(w))!=null?p:g(n)).getBoundingClientRect(),N={x:o.clientX-P.left,y:o.clientY-P.top};(c==null?void 0:c(N,o))!==!1&&(_.value=N,k(o))},M=o=>{if(!b(o)||!_.value)return;let{x:p,y:C}=h.value;(d==="x"||d==="both")&&(p=o.clientX-_.value.x),(d==="y"||d==="both")&&(C=o.clientY-_.value.y),h.value={x:p,y:C},v==null||v(h.value,o),k(o)},B=o=>{b(o)&&_.value&&(_.value=void 0,a==null||a(h.value,o),k(o))};if(V){const o={capture:(r=i.capture)!=null?r:!0};z(x,"pointerdown",S,o),z(f,"pointermove",M,o),z(f,"pointerup",B,o)}return{...W(h),position:h,isDragging:e.computed(()=>!!_.value),style:e.computed(()=>`left:${h.value.x}px;top:${h.value.y}px;`)}}const X={class:"modal-container fixed inset-0"},Y={class:"title font-bold"},q={class:"action"},K={key:1,class:"modal-footer space-x-2"},j=["form"],G={name:"ModalContainer",inheritAttrs:!0},U=e.defineComponent({...G,props:{id:{},form:{},component:{},componentProps:{},width:{},maxWidth:{},maxHeight:{},sizes:{},size:{default:"middle"},title:{},header:{type:Boolean,default:!0},footer:{type:Boolean,default:!1},closeable:{type:Boolean,default:!0},esc:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},mode:{default:"dialog"}},emits:["submit"],setup(n,{emit:i}){const t=n,r=i,l=e.inject(E);let u=0,y=0;const m=e.shallowRef(),v=e.shallowRef(),a=e.shallowRef(),{x:c,y:s}=I(a,{initialValue:{x:0,y:0}});function d(){l==null||l.close(t.id)}function f(o){if(typeof o=="number")return`${o}px`;if(typeof o=="string")return o}const w=e.computed(()=>{const o={};return t.mode==="dialog"&&(o.justifyContent="center"),t.mode==="drawer"&&(o.justifyContent="flex-end"),o}),x=e.computed(()=>{const o={};return t.size&&(o.width=f(t.sizes[t.size])),t.width&&(o.width=f(t.width)),t.maxWidth&&(o.maxWidth=f(t.maxWidth)),t.size==="fullscreen"&&(o.maxWidth="unset",o.position="fixed",o.top=0,o.left=0,o.bottom=0,o.right=0),t.draggable&&t.size!=="fullscreen"&&t.mode==="dialog"&&(o.transform=`translate3d(${c.value-u}px, ${s.value-y}px, 0px)`),o}),h=e.computed(()=>{const o={};return t.draggable&&t.size!=="fullscreen"&&t.mode==="dialog"&&(o.cursor="move"),o}),_=e.computed(()=>{var p;const o={};return t.maxHeight&&(o.maxHeight=`calc(${(p=f(t.maxHeight))==null?void 0:p.replace("%","vh")} - 50px)`),t.mode==="drawer"&&(o.maxHeight=`calc(100vh - ${(t.header?50:0)+(t.footer?50:0)}px)`),t.size==="fullscreen"&&(o.maxHeight=`calc(100vh - ${(t.header?50:0)+(t.footer?50:0)}px)`),o});function b(){const o=v.value;if(t.form&&o){const p=o.querySelector(`form[name="${t.form}"]`);p&&p.dispatchEvent(new Event("submit"))}r("submit")}function k(){l==null||l.close(t.id)}function S(){window&&window.addEventListener("resize",()=>{e.triggerRef(m),e.triggerRef(v),u=v.value.offsetLeft,y=v.value.offsetTop})}function M(){if(t.closeable&&t.esc){const o=({key:p})=>{p==="Escape"&&(l==null||l.close(t.id),window.removeEventListener("keydown",o))};window.addEventListener("keydown",o)}}function B(){u=v.value.offsetLeft,y=v.value.offsetTop}return e.onMounted(()=>{M(),S()}),e.onUnmounted(()=>{}),(o,p)=>(e.openBlock(),e.createElementBlock("div",X,[e.createElementVNode("div",{ref_key:"wrapperRef",ref:m,class:"modal-wrapper",style:e.normalizeStyle(w.value),onClick:p[0]||(p[0]=e.withModifiers(C=>o.maskClosable&&d(),["self"]))},[e.createElementVNode("div",{ref_key:"contentRef",ref:v,class:e.normalizeClass(["modal-content",{[`${o.mode}-mode`]:!0}]),style:e.normalizeStyle(x.value)},[o.header?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"headerRef",ref:a,class:"modal-header",style:e.normalizeStyle(h.value),onMousedown:B},[e.createElementVNode("div",Y,e.toDisplayString(o.title),1),e.createElementVNode("div",q,[o.closeable?(e.openBlock(),e.createElementBlock("div",{key:0,class:"i-icon-park-outline:close block cursor-pointer",onClick:d})):e.createCommentVNode("",!0)])],36)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"modal-body",style:e.normalizeStyle(_.value)},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o.component),e.normalizeProps(e.guardReactiveProps(o.componentProps)),null,16))],4),o.footer?(e.openBlock(),e.createElementBlock("div",K,[e.createElementVNode("button",{class:"submit-button",form:o.form,type:"submit",onClick:b}," 确定 ",8,j),e.createElementVNode("button",{class:"cancel-button",type:"button",onClick:k}," 取消 ")])):e.createCommentVNode("",!0)],6)],4)]))}});const R=(n,i)=>{const t=n.__vccOpts||n;for(const[r,l]of i)t[r]=l;return t},L=R(U,[["__scopeId","data-v-581eba51"]]),J={key:0,class:"modal-teleport"},Q={name:"ModalProvider",inheritAttrs:!0},Z=e.defineComponent({...Q,props:{appendToBody:{type:Boolean,default:!1},sizes:{default:()=>({small:520,middle:860,large:1190})},maxWidth:{default:"80%"},maxHeight:{default:"80%"}},setup(n,{expose:i}){const t=e.shallowRef([]),r=e.ref(!1);async function l(a,c,s){const d=e.defineAsyncComponent(()=>Promise.resolve(a));return new Promise(f=>{t.value.push({id:Math.random().toString(32).slice(2),component:d,props:c,options:s,resolve:f,onSubmit:e.ref(()=>{})}),e.triggerRef(t)})}function u(a,c){const s=t.value.findIndex(f=>f.id===a);if(s<0)return;const d=t.value[s];d==null||d.resolve(c),t.value.splice(s,1),e.triggerRef(t)}function y(){t.value.forEach(a=>{a.resolve()}),t.value=[],e.triggerRef(t)}function m(a){return t.value.find(c=>c.id===a)}function v(a,c){const s=t.value.find(d=>d.id===a);s&&(s.onSubmit.value=c)}return e.provide(E,{open:l,close:u,closeAll:y,getElement:m,addSubmitListener:v}),i({elements:t}),e.onMounted(()=>{r.value=!0}),(a,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.renderSlot(a.$slots,"default",{},void 0,!0),r.value?(e.openBlock(),e.createElementBlock("div",J,[(e.openBlock(),e.createBlock(e.Teleport,{disabled:!a.appendToBody,to:"body"},[e.createVNode(e.TransitionGroup,{name:"modal-fade"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,s=>(e.openBlock(),e.createBlock(L,e.mergeProps({id:s.id,key:s.id,component:s.component,"component-props":s.props,"max-height":a.maxHeight,"max-width":a.maxWidth,sizes:a.sizes},s.options,{onSubmit:s.onSubmit.value}),null,16,["id","component","component-props","max-height","max-width","sizes","onSubmit"]))),128))]),_:1})],8,["disabled"]))])):e.createCommentVNode("",!0)],64))}});const ee=R(Z,[["__scopeId","data-v-1ef03c20"]]);function A(n,i){var r,l;let t=n==null?void 0:n.parent;for(;t&&((r=t==null?void 0:t.type)==null?void 0:r.name)!==i;)t=t.parent;return((l=t==null?void 0:t.type)==null?void 0:l.name)===i?t:null}function te(){const n=e.inject(E),i=e.getCurrentInstance();return{open(t,r,l){if(!n)throw new Error("Not Found Modal Provider Component");return n.open(t,r||{},l||{})},close(t){var u;if(!n)throw new Error("Not Found Modal Provider Component");const r=A(i,"ModalContainer"),l=(u=r==null?void 0:r.props)==null?void 0:u.id;if(!l)throw new Error("Not Found Current Modal Container");n.close(l,t)},closeAll(){if(!n)throw new Error("Not Found Modal Provider Component");n.closeAll()},onSubmit(t){const r=A(i,"ModalContainer");if(!(r==null?void 0:r.props.id))throw new Error("Not Found Current Modal Container")}}}function oe(n){var u;const i=e.inject(E),t=e.getCurrentInstance(),r=A(t,"ModalContainer"),l=(u=r==null?void 0:r.props)==null?void 0:u.id;i&&l&&i.addSubmitListener(l,n)}exports.ModalContainer=L;exports.ModalProvider=ee;exports.onSubmit=oe;exports.useModal=te;
package/dist/index.js CHANGED
@@ -1,130 +1,130 @@
1
- import { unref as J, isRef as Q, toRefs as Z, customRef as j, getCurrentScope as ee, onScopeDispose as te, ref as O, computed as k, watch as ne, defineComponent as X, inject as V, shallowRef as H, onMounted as Y, onUnmounted as oe, openBlock as _, createElementBlock as C, createElementVNode as w, withModifiers as re, normalizeStyle as W, toDisplayString as ie, createCommentVNode as P, createBlock as N, resolveDynamicComponent as se, normalizeProps as le, guardReactiveProps as ae, triggerRef as A, provide as ue, Fragment as R, renderSlot as ce, Teleport as de, createVNode as fe, TransitionGroup as pe, withCtx as ve, renderList as me, mergeProps as ye, defineAsyncComponent as he, getCurrentInstance as K } from "vue";
2
- const z = Symbol("__MODAL__");
3
- function _e(t) {
4
- return ee() ? (te(t), !0) : !1;
1
+ import { unref as J, isRef as Q, toRefs as Z, customRef as j, getCurrentScope as ee, onScopeDispose as te, ref as $, computed as x, watch as oe, defineComponent as X, inject as R, shallowRef as A, onMounted as Y, onUnmounted as ne, openBlock as g, createElementBlock as b, createElementVNode as w, normalizeStyle as z, withModifiers as re, normalizeClass as ie, toDisplayString as se, createCommentVNode as P, createBlock as N, resolveDynamicComponent as le, normalizeProps as ae, guardReactiveProps as ue, triggerRef as S, provide as de, Fragment as I, renderSlot as ce, Teleport as fe, createVNode as pe, TransitionGroup as me, withCtx as ve, renderList as ye, mergeProps as he, defineAsyncComponent as ge, getCurrentInstance as K } from "vue";
2
+ const B = Symbol("__MODAL__");
3
+ function _e(o) {
4
+ return ee() ? (te(o), !0) : !1;
5
5
  }
6
- function h(t) {
7
- return typeof t == "function" ? t() : J(t);
6
+ function h(o) {
7
+ return typeof o == "function" ? o() : J(o);
8
8
  }
9
- const G = typeof window < "u" && typeof document < "u", ge = Object.prototype.toString, be = (t) => ge.call(t) === "[object Object]", we = () => {
9
+ const q = typeof window < "u" && typeof document < "u", we = Object.prototype.toString, be = (o) => we.call(o) === "[object Object]", xe = () => {
10
10
  };
11
- function Ce(t, l = {}) {
12
- if (!Q(t))
13
- return Z(t);
14
- const e = Array.isArray(t.value) ? Array.from({ length: t.value.length }) : {};
15
- for (const n in t.value)
11
+ function Ce(o, i = {}) {
12
+ if (!Q(o))
13
+ return Z(o);
14
+ const e = Array.isArray(o.value) ? Array.from({ length: o.value.length }) : {};
15
+ for (const n in o.value)
16
16
  e[n] = j(() => ({
17
17
  get() {
18
- return t.value[n];
18
+ return o.value[n];
19
19
  },
20
- set(o) {
20
+ set(r) {
21
21
  var u;
22
- if ((u = h(l.replaceRef)) != null ? u : !0)
23
- if (Array.isArray(t.value)) {
24
- const f = [...t.value];
25
- f[n] = o, t.value = f;
22
+ if ((u = h(i.replaceRef)) != null ? u : !0)
23
+ if (Array.isArray(o.value)) {
24
+ const p = [...o.value];
25
+ p[n] = r, o.value = p;
26
26
  } else {
27
- const f = { ...t.value, [n]: o };
28
- Object.setPrototypeOf(f, Object.getPrototypeOf(t.value)), t.value = f;
27
+ const p = { ...o.value, [n]: r };
28
+ Object.setPrototypeOf(p, Object.getPrototypeOf(o.value)), o.value = p;
29
29
  }
30
30
  else
31
- t.value[n] = o;
31
+ o.value[n] = r;
32
32
  }
33
33
  }));
34
34
  return e;
35
35
  }
36
- function xe(t) {
37
- var l;
38
- const e = h(t);
39
- return (l = e == null ? void 0 : e.$el) != null ? l : e;
36
+ function Ee(o) {
37
+ var i;
38
+ const e = h(o);
39
+ return (i = e == null ? void 0 : e.$el) != null ? i : e;
40
40
  }
41
- const U = G ? window : void 0;
42
- function D(...t) {
43
- let l, e, n, o;
44
- if (typeof t[0] == "string" || Array.isArray(t[0]) ? ([e, n, o] = t, l = U) : [l, e, n, o] = t, !l)
45
- return we;
41
+ const G = q ? window : void 0;
42
+ function W(...o) {
43
+ let i, e, n, r;
44
+ if (typeof o[0] == "string" || Array.isArray(o[0]) ? ([e, n, r] = o, i = G) : [i, e, n, r] = o, !i)
45
+ return xe;
46
46
  Array.isArray(e) || (e = [e]), Array.isArray(n) || (n = [n]);
47
47
  const u = [], v = () => {
48
- u.forEach((c) => c()), u.length = 0;
49
- }, f = (c, a, d, p) => (c.addEventListener(a, d, p), () => c.removeEventListener(a, d, p)), g = ne(
50
- () => [xe(l), h(o)],
51
- ([c, a]) => {
52
- if (v(), !c)
48
+ u.forEach((a) => a()), u.length = 0;
49
+ }, p = (a, s, d, c) => (a.addEventListener(s, d, c), () => a.removeEventListener(s, d, c)), m = oe(
50
+ () => [Ee(i), h(r)],
51
+ ([a, s]) => {
52
+ if (v(), !a)
53
53
  return;
54
- const d = be(a) ? { ...a } : a;
54
+ const d = be(s) ? { ...s } : s;
55
55
  u.push(
56
- ...e.flatMap((p) => n.map((x) => f(c, p, x, d)))
56
+ ...e.flatMap((c) => n.map((C) => p(a, c, C, d)))
57
57
  );
58
58
  },
59
59
  { immediate: !0, flush: "post" }
60
- ), s = () => {
61
- g(), v();
60
+ ), l = () => {
61
+ m(), v();
62
62
  };
63
- return _e(s), s;
63
+ return _e(l), l;
64
64
  }
65
- function Ee(t, l = {}) {
65
+ function Me(o, i = {}) {
66
66
  var e, n;
67
67
  const {
68
- pointerTypes: o,
68
+ pointerTypes: r,
69
69
  preventDefault: u,
70
70
  stopPropagation: v,
71
- exact: f,
72
- onMove: g,
73
- onEnd: s,
74
- onStart: c,
75
- initialValue: a,
71
+ exact: p,
72
+ onMove: m,
73
+ onEnd: l,
74
+ onStart: a,
75
+ initialValue: s,
76
76
  axis: d = "both",
77
- draggingElement: p = U,
78
- containerElement: x,
79
- handle: B = t
80
- } = l, m = O(
81
- (e = h(a)) != null ? e : { x: 0, y: 0 }
82
- ), b = O(), E = (r) => o ? o.includes(r.pointerType) : !0, M = (r) => {
83
- h(u) && r.preventDefault(), h(v) && r.stopPropagation();
84
- }, $ = (r) => {
85
- var y;
86
- if (!E(r) || h(f) && r.target !== h(t))
77
+ draggingElement: c = G,
78
+ containerElement: C,
79
+ handle: L = o
80
+ } = i, y = $(
81
+ (e = h(s)) != null ? e : { x: 0, y: 0 }
82
+ ), _ = $(), E = (t) => r ? r.includes(t.pointerType) : !0, M = (t) => {
83
+ h(u) && t.preventDefault(), h(v) && t.stopPropagation();
84
+ }, D = (t) => {
85
+ var f;
86
+ if (!E(t) || h(p) && t.target !== h(o))
87
87
  return;
88
- const F = ((y = h(x)) != null ? y : h(t)).getBoundingClientRect(), I = {
89
- x: r.clientX - F.left,
90
- y: r.clientY - F.top
88
+ const V = ((f = h(C)) != null ? f : h(o)).getBoundingClientRect(), F = {
89
+ x: t.clientX - V.left,
90
+ y: t.clientY - V.top
91
91
  };
92
- (c == null ? void 0 : c(I, r)) !== !1 && (b.value = I, M(r));
93
- }, L = (r) => {
94
- if (!E(r) || !b.value)
92
+ (a == null ? void 0 : a(F, t)) !== !1 && (_.value = F, M(t));
93
+ }, O = (t) => {
94
+ if (!E(t) || !_.value)
95
95
  return;
96
- let { x: y, y: S } = m.value;
97
- (d === "x" || d === "both") && (y = r.clientX - b.value.x), (d === "y" || d === "both") && (S = r.clientY - b.value.y), m.value = {
98
- x: y,
99
- y: S
100
- }, g == null || g(m.value, r), M(r);
101
- }, i = (r) => {
102
- E(r) && b.value && (b.value = void 0, s == null || s(m.value, r), M(r));
96
+ let { x: f, y: k } = y.value;
97
+ (d === "x" || d === "both") && (f = t.clientX - _.value.x), (d === "y" || d === "both") && (k = t.clientY - _.value.y), y.value = {
98
+ x: f,
99
+ y: k
100
+ }, m == null || m(y.value, t), M(t);
101
+ }, H = (t) => {
102
+ E(t) && _.value && (_.value = void 0, l == null || l(y.value, t), M(t));
103
103
  };
104
- if (G) {
105
- const r = { capture: (n = l.capture) != null ? n : !0 };
106
- D(B, "pointerdown", $, r), D(p, "pointermove", L, r), D(p, "pointerup", i, r);
104
+ if (q) {
105
+ const t = { capture: (n = i.capture) != null ? n : !0 };
106
+ W(L, "pointerdown", D, t), W(c, "pointermove", O, t), W(c, "pointerup", H, t);
107
107
  }
108
108
  return {
109
- ...Ce(m),
110
- position: m,
111
- isDragging: k(() => !!b.value),
112
- style: k(
113
- () => `left:${m.value.x}px;top:${m.value.y}px;`
109
+ ...Ce(y),
110
+ position: y,
111
+ isDragging: x(() => !!_.value),
112
+ style: x(
113
+ () => `left:${y.value.x}px;top:${y.value.y}px;`
114
114
  )
115
115
  };
116
116
  }
117
- const Me = { class: "modal-container" }, Se = { class: "title font-bold" }, ke = { class: "action" }, Ae = {
117
+ const Se = { class: "modal-container fixed inset-0" }, ke = { class: "title font-bold" }, ze = { class: "action" }, Ae = {
118
118
  key: 1,
119
119
  class: "modal-footer space-x-2"
120
- }, Pe = ["form"], Oe = {
120
+ }, Pe = ["form"], $e = {
121
121
  name: "ModalContainer",
122
122
  inheritAttrs: !0
123
- }, ze = /* @__PURE__ */ X({
124
- ...Oe,
123
+ }, Be = /* @__PURE__ */ X({
124
+ ...$e,
125
125
  props: {
126
126
  id: {},
127
- formId: {},
127
+ form: {},
128
128
  component: {},
129
129
  componentProps: {},
130
130
  width: {},
@@ -138,135 +138,137 @@ const Me = { class: "modal-container" }, Se = { class: "title font-bold" }, ke =
138
138
  closeable: { type: Boolean, default: !0 },
139
139
  esc: { type: Boolean, default: !1 },
140
140
  maskClosable: { type: Boolean, default: !1 },
141
- draggable: { type: Boolean, default: !1 }
141
+ draggable: { type: Boolean, default: !1 },
142
+ mode: { default: "dialog" }
142
143
  },
143
144
  emits: ["submit"],
144
- setup(t, { emit: l }) {
145
- const e = t, n = l, o = V(z);
146
- let u = 0, v = 0, f;
147
- const g = H(), s = H(), { x: c, y: a } = Ee(s, {
145
+ setup(o, { emit: i }) {
146
+ const e = o, n = i, r = R(B);
147
+ let u = 0, v = 0;
148
+ const p = A(), m = A(), l = A(), { x: a, y: s } = Me(l, {
148
149
  initialValue: { x: 0, y: 0 }
149
150
  });
150
151
  function d() {
151
- o == null || o.close(e.id);
152
+ r == null || r.close(e.id);
152
153
  }
153
- function p(i) {
154
- if (typeof i == "number")
155
- return `${i}px`;
156
- if (typeof i == "string")
157
- return i;
154
+ function c(t) {
155
+ if (typeof t == "number")
156
+ return `${t}px`;
157
+ if (typeof t == "string")
158
+ return t;
158
159
  }
159
- const x = k(() => {
160
- const i = {};
161
- return e.size && (i.width = p(e.sizes[e.size])), e.width && (i.width = p(e.width)), e.maxWidth && (i.maxWidth = p(e.maxWidth)), e.draggable && (i.transform = `translate(${c.value - u}px, ${a.value - v}px)`), i;
162
- }), B = k(() => {
163
- const i = {};
164
- return e.draggable && (i.cursor = "move"), i;
165
- }), m = k(() => {
166
- var r;
167
- const i = {};
168
- return e.maxHeight && (i.maxHeight = `calc(${(r = p(e.maxWidth)) == null ? void 0 : r.replace("%", "vh")} - 50px)`), i;
160
+ const C = x(() => {
161
+ const t = {};
162
+ return e.mode === "dialog" && (t.justifyContent = "center"), e.mode === "drawer" && (t.justifyContent = "flex-end"), t;
163
+ }), L = x(() => {
164
+ const t = {};
165
+ return e.size && (t.width = c(e.sizes[e.size])), e.width && (t.width = c(e.width)), e.maxWidth && (t.maxWidth = c(e.maxWidth)), e.size === "fullscreen" && (t.maxWidth = "unset", t.position = "fixed", t.top = 0, t.left = 0, t.bottom = 0, t.right = 0), e.draggable && e.size !== "fullscreen" && e.mode === "dialog" && (t.transform = `translate3d(${a.value - u}px, ${s.value - v}px, 0px)`), t;
166
+ }), y = x(() => {
167
+ const t = {};
168
+ return e.draggable && e.size !== "fullscreen" && e.mode === "dialog" && (t.cursor = "move"), t;
169
+ }), _ = x(() => {
170
+ var f;
171
+ const t = {};
172
+ return e.maxHeight && (t.maxHeight = `calc(${(f = c(e.maxHeight)) == null ? void 0 : f.replace("%", "vh")} - 50px)`), e.mode === "drawer" && (t.maxHeight = `calc(100vh - ${(e.header ? 50 : 0) + (e.footer ? 50 : 0)}px)`), e.size === "fullscreen" && (t.maxHeight = `calc(100vh - ${(e.header ? 50 : 0) + (e.footer ? 50 : 0)}px)`), t;
169
173
  });
170
- function b() {
171
- n("submit");
172
- }
173
174
  function E() {
174
- o == null || o.close(e.id);
175
+ const t = m.value;
176
+ if (e.form && t) {
177
+ const f = t.querySelector(`form[name="${e.form}"]`);
178
+ f && f.dispatchEvent(new Event("submit"));
179
+ }
180
+ n("submit");
175
181
  }
176
182
  function M() {
183
+ r == null || r.close(e.id);
184
+ }
185
+ function D() {
177
186
  window && window.addEventListener("resize", () => {
178
- A(g), A(s), u = s.value.offsetLeft, v = s.value.offsetTop;
187
+ S(p), S(m), u = m.value.offsetLeft, v = m.value.offsetTop;
179
188
  });
180
189
  }
181
- function $() {
190
+ function O() {
182
191
  if (e.closeable && e.esc) {
183
- const i = ({ key: r }) => {
184
- r === "Escape" && (o == null || o.close(e.id), window.removeEventListener("keydown", i));
192
+ const t = ({ key: f }) => {
193
+ f === "Escape" && (r == null || r.close(e.id), window.removeEventListener("keydown", t));
185
194
  };
186
- window.addEventListener("keydown", i);
195
+ window.addEventListener("keydown", t);
187
196
  }
188
197
  }
189
- function L() {
190
- f = new MutationObserver((i) => {
191
- i.forEach((r) => {
192
- const y = s.value.offsetLeft, S = s.value.offsetTop;
193
- y !== u && (u = y), S !== v && (v = y);
194
- });
195
- }), f.observe(s.value, {
196
- attributes: !0,
197
- attributeFilter: ["style", "offsetHeight", "offsetWidth", "clientHeight", "clientWidth"],
198
- attributeOldValue: !0
199
- });
198
+ function H() {
199
+ u = m.value.offsetLeft, v = m.value.offsetTop;
200
200
  }
201
201
  return Y(() => {
202
- $(), L(), M();
203
- }), oe(() => {
204
- f && (f.disconnect(), f.takeRecords());
205
- }), (i, r) => (_(), C("div", Me, [
202
+ O(), D();
203
+ }), ne(() => {
204
+ }), (t, f) => (g(), b("div", Se, [
206
205
  w("div", {
207
206
  ref_key: "wrapperRef",
208
- ref: g,
207
+ ref: p,
209
208
  class: "modal-wrapper",
210
- onClick: r[0] || (r[0] = re((y) => i.maskClosable && d(), ["self"]))
209
+ style: z(C.value),
210
+ onClick: f[0] || (f[0] = re((k) => t.maskClosable && d(), ["self"]))
211
211
  }, [
212
212
  w("div", {
213
213
  ref_key: "contentRef",
214
- ref: s,
215
- class: "modal-content",
216
- style: W(x.value)
214
+ ref: m,
215
+ class: ie(["modal-content", { [`${t.mode}-mode`]: !0 }]),
216
+ style: z(L.value)
217
217
  }, [
218
- i.header ? (_(), C("div", {
218
+ t.header ? (g(), b("div", {
219
219
  key: 0,
220
- ref: "",
220
+ ref_key: "headerRef",
221
+ ref: l,
221
222
  class: "modal-header",
222
- style: W(B.value)
223
+ style: z(y.value),
224
+ onMousedown: H
223
225
  }, [
224
- w("div", Se, ie(i.title), 1),
225
- w("div", ke, [
226
- i.closeable ? (_(), C("div", {
226
+ w("div", ke, se(t.title), 1),
227
+ w("div", ze, [
228
+ t.closeable ? (g(), b("div", {
227
229
  key: 0,
228
230
  class: "i-icon-park-outline:close block cursor-pointer",
229
231
  onClick: d
230
232
  })) : P("", !0)
231
233
  ])
232
- ], 4)) : P("", !0),
234
+ ], 36)) : P("", !0),
233
235
  w("div", {
234
236
  class: "modal-body",
235
- style: W(m.value)
237
+ style: z(_.value)
236
238
  }, [
237
- (_(), N(se(i.component), le(ae(i.componentProps)), null, 16))
239
+ (g(), N(le(t.component), ae(ue(t.componentProps)), null, 16))
238
240
  ], 4),
239
- i.footer ? (_(), C("div", Ae, [
241
+ t.footer ? (g(), b("div", Ae, [
240
242
  w("button", {
241
243
  class: "submit-button",
242
- form: i.formId,
244
+ form: t.form,
243
245
  type: "submit",
244
- onClick: b
246
+ onClick: E
245
247
  }, " 确定 ", 8, Pe),
246
248
  w("button", {
247
249
  class: "cancel-button",
248
250
  type: "button",
249
- onClick: E
251
+ onClick: M
250
252
  }, " 取消 ")
251
253
  ])) : P("", !0)
252
- ], 4)
253
- ], 512)
254
+ ], 6)
255
+ ], 4)
254
256
  ]));
255
257
  }
256
258
  });
257
- const q = (t, l) => {
258
- const e = t.__vccOpts || t;
259
- for (const [n, o] of l)
260
- e[n] = o;
259
+ const U = (o, i) => {
260
+ const e = o.__vccOpts || o;
261
+ for (const [n, r] of i)
262
+ e[n] = r;
261
263
  return e;
262
- }, Be = /* @__PURE__ */ q(ze, [["__scopeId", "data-v-e6f6653f"]]), $e = {
264
+ }, Le = /* @__PURE__ */ U(Be, [["__scopeId", "data-v-581eba51"]]), De = {
263
265
  key: 0,
264
266
  class: "modal-teleport"
265
- }, Le = {
267
+ }, Oe = {
266
268
  name: "ModalProvider",
267
269
  inheritAttrs: !0
268
- }, We = /* @__PURE__ */ X({
269
- ...Le,
270
+ }, He = /* @__PURE__ */ X({
271
+ ...Oe,
270
272
  props: {
271
273
  appendToBody: { type: Boolean, default: !1 },
272
274
  sizes: { default: () => ({
@@ -277,72 +279,72 @@ const q = (t, l) => {
277
279
  maxWidth: { default: "80%" },
278
280
  maxHeight: { default: "80%" }
279
281
  },
280
- setup(t, { expose: l }) {
281
- const e = H([]), n = O(!1);
282
- async function o(s, c, a) {
283
- const d = he(
284
- () => Promise.resolve(s)
282
+ setup(o, { expose: i }) {
283
+ const e = A([]), n = $(!1);
284
+ async function r(l, a, s) {
285
+ const d = ge(
286
+ () => Promise.resolve(l)
285
287
  );
286
- return new Promise((p) => {
288
+ return new Promise((c) => {
287
289
  e.value.push({
288
290
  id: Math.random().toString(32).slice(2),
289
291
  component: d,
290
- props: c,
291
- options: a,
292
- resolve: p,
293
- onSubmit: O(() => {
292
+ props: a,
293
+ options: s,
294
+ resolve: c,
295
+ onSubmit: $(() => {
294
296
  })
295
- }), A(e);
297
+ }), S(e);
296
298
  });
297
299
  }
298
- function u(s, c) {
299
- const a = e.value.findIndex((p) => p.id === s);
300
- if (a < 0)
300
+ function u(l, a) {
301
+ const s = e.value.findIndex((c) => c.id === l);
302
+ if (s < 0)
301
303
  return;
302
- const d = e.value[a];
303
- d == null || d.resolve(c), e.value.splice(a, 1), A(e);
304
+ const d = e.value[s];
305
+ d == null || d.resolve(a), e.value.splice(s, 1), S(e);
304
306
  }
305
307
  function v() {
306
- e.value.forEach((s) => {
307
- s.resolve();
308
- }), e.value = [], A(e);
308
+ e.value.forEach((l) => {
309
+ l.resolve();
310
+ }), e.value = [], S(e);
309
311
  }
310
- function f(s) {
311
- return e.value.find((c) => c.id === s);
312
+ function p(l) {
313
+ return e.value.find((a) => a.id === l);
312
314
  }
313
- function g(s, c) {
314
- const a = e.value.find((d) => d.id === s);
315
- a && (a.onSubmit.value = c);
315
+ function m(l, a) {
316
+ const s = e.value.find((d) => d.id === l);
317
+ s && (s.onSubmit.value = a);
316
318
  }
317
- return ue(z, {
318
- open: o,
319
+ return de(B, {
320
+ open: r,
319
321
  close: u,
320
322
  closeAll: v,
321
- getElement: f,
322
- addSubmitListener: g
323
- }), l({
323
+ getElement: p,
324
+ addSubmitListener: m
325
+ }), i({
324
326
  elements: e
325
327
  }), Y(() => {
326
328
  n.value = !0;
327
- }), (s, c) => (_(), C(R, null, [
328
- ce(s.$slots, "default", {}, void 0, !0),
329
- n.value ? (_(), C("div", $e, [
330
- (_(), N(de, {
331
- disabled: !s.appendToBody,
329
+ }), (l, a) => (g(), b(I, null, [
330
+ ce(l.$slots, "default", {}, void 0, !0),
331
+ n.value ? (g(), b("div", De, [
332
+ (g(), N(fe, {
333
+ disabled: !l.appendToBody,
332
334
  to: "body"
333
335
  }, [
334
- fe(pe, { name: "modal-fade" }, {
336
+ pe(me, { name: "modal-fade" }, {
335
337
  default: ve(() => [
336
- (_(!0), C(R, null, me(e.value, (a) => (_(), N(Be, ye({
337
- id: a.id,
338
- key: a.id,
339
- component: a.component,
340
- "component-props": a.props,
341
- "max-height": s.maxHeight,
342
- "max-width": s.maxWidth,
343
- sizes: s.sizes
344
- }, a.options, {
345
- onSubmit: a.onSubmit.value
338
+ (g(!0), b(I, null, ye(e.value, (s) => (g(), N(Le, he({
339
+ id: s.id,
340
+ key: s.id,
341
+ component: s.component,
342
+ "component-props": s.props,
343
+ "max-height": l.maxHeight,
344
+ "max-width": l.maxWidth,
345
+ sizes: l.sizes
346
+ }, s.options, {
347
+ onSubmit: s.onSubmit.value
346
348
  }), null, 16, ["id", "component", "component-props", "max-height", "max-width", "sizes", "onSubmit"]))), 128))
347
349
  ]),
348
350
  _: 1
@@ -352,51 +354,51 @@ const q = (t, l) => {
352
354
  ], 64));
353
355
  }
354
356
  });
355
- const He = /* @__PURE__ */ q(We, [["__scopeId", "data-v-171d9bdd"]]);
356
- function T(t, l) {
357
- var n, o;
358
- let e = t == null ? void 0 : t.parent;
359
- for (; e && ((n = e == null ? void 0 : e.type) == null ? void 0 : n.name) !== l; )
357
+ const Ne = /* @__PURE__ */ U(He, [["__scopeId", "data-v-1ef03c20"]]);
358
+ function T(o, i) {
359
+ var n, r;
360
+ let e = o == null ? void 0 : o.parent;
361
+ for (; e && ((n = e == null ? void 0 : e.type) == null ? void 0 : n.name) !== i; )
360
362
  e = e.parent;
361
- return ((o = e == null ? void 0 : e.type) == null ? void 0 : o.name) === l ? e : null;
363
+ return ((r = e == null ? void 0 : e.type) == null ? void 0 : r.name) === i ? e : null;
362
364
  }
363
- function Ne() {
364
- const t = V(z), l = K();
365
+ function Te() {
366
+ const o = R(B), i = K();
365
367
  return {
366
- open(e, n, o) {
367
- if (!t)
368
+ open(e, n, r) {
369
+ if (!o)
368
370
  throw new Error("Not Found Modal Provider Component");
369
- return t.open(e, n || {}, o || {});
371
+ return o.open(e, n || {}, r || {});
370
372
  },
371
373
  close(e) {
372
374
  var u;
373
- if (!t)
374
- throw new Error("Not Found Modal Provider Component");
375
- const n = T(l, "ModalContainer"), o = (u = n == null ? void 0 : n.props) == null ? void 0 : u.id;
376
375
  if (!o)
376
+ throw new Error("Not Found Modal Provider Component");
377
+ const n = T(i, "ModalContainer"), r = (u = n == null ? void 0 : n.props) == null ? void 0 : u.id;
378
+ if (!r)
377
379
  throw new Error("Not Found Current Modal Container");
378
- t.close(o, e);
380
+ o.close(r, e);
379
381
  },
380
382
  closeAll() {
381
- if (!t)
383
+ if (!o)
382
384
  throw new Error("Not Found Modal Provider Component");
383
- t.closeAll();
385
+ o.closeAll();
384
386
  },
385
387
  onSubmit(e) {
386
- const n = T(l, "ModalContainer");
388
+ const n = T(i, "ModalContainer");
387
389
  if (!(n == null ? void 0 : n.props.id))
388
390
  throw new Error("Not Found Current Modal Container");
389
391
  }
390
392
  };
391
393
  }
392
- function Te(t) {
394
+ function Re(o) {
393
395
  var u;
394
- const l = V(z), e = K(), n = T(e, "ModalContainer"), o = (u = n == null ? void 0 : n.props) == null ? void 0 : u.id;
395
- l && o && l.addSubmitListener(o, t);
396
+ const i = R(B), e = K(), n = T(e, "ModalContainer"), r = (u = n == null ? void 0 : n.props) == null ? void 0 : u.id;
397
+ i && r && i.addSubmitListener(r, o);
396
398
  }
397
399
  export {
398
- Be as ModalContainer,
399
- He as ModalProvider,
400
- Te as onSubmit,
401
- Ne as useModal
400
+ Le as ModalContainer,
401
+ Ne as ModalProvider,
402
+ Re as onSubmit,
403
+ Te as useModal
402
404
  };
@@ -13,8 +13,10 @@ export interface OpenModalOptions {
13
13
  header?: boolean;
14
14
  footer?: boolean;
15
15
  width?: number | string;
16
- size?: 'large' | 'middle' | 'small';
16
+ size?: 'large' | 'middle' | 'small' | 'fullscreen';
17
17
  draggable?: boolean;
18
+ form?: string;
19
+ mode?: 'dialog' | 'drawer';
18
20
  }
19
21
  export interface ModalElement extends OpenModalOptions {
20
22
  id: string;
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- *,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.i-icon-park-outline\:close{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 48 48' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='4' d='m8 8l32 32M8 40L40 8'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.fixed{position:fixed}.block{display:block}.flex{display:flex}.cursor-pointer{cursor:pointer}.resize{resize:both}.space-x-2>:not([hidden])~:not([hidden]){--un-space-x-reverse:0;margin-left:calc(.5rem * calc(1 - var(--un-space-x-reverse)));margin-right:calc(.5rem * var(--un-space-x-reverse))}.px{padding-left:1rem;padding-right:1rem}.font-bold{font-weight:700}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}.modal-wrapper[data-v-e6f6653f]{z-index:1000;position:fixed;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,.3)}.modal-content[data-v-e6f6653f]{background:#ffffff;border-radius:5px}.modal-header[data-v-e6f6653f]{box-sizing:border-box;padding:10px;height:50px;display:flex;justify-content:space-between;align-items:center;border-bottom:solid 1px var(--color-border-1, #E8E8E8)}.modal-body[data-v-e6f6653f]{padding:20px 10px;box-sizing:border-box;max-height:10vw;overflow:auto}.modal-footer[data-v-e6f6653f]{box-sizing:border-box;height:50px;border-top:solid 1px var(--color-border-1, #E8E8E8);display:flex;justify-content:end;padding:10px}.modal-footer button[data-v-e6f6653f]{height:28px;line-height:28px;width:80px;outline:none;border-color:transparent;font-size:14px;border-radius:4px;padding:0;box-sizing:content-box}.modal-footer button.submit-button[data-v-e6f6653f]{color:#fff;background-color:rgb(var(--primary-6, 45, 106, 251))}.modal-footer button.submit-button[data-v-e6f6653f]:hover{background-color:rgb(var(--primary-5, 28, 76, 207))}.modal-footer button.cancel-button[data-v-e6f6653f]{color:rgb(var(--color-text-2, 78, 89, 105));background-color:rgb(var(--color-fill-1, 245, 245, 245))}.modal-footer button.cancel-button[data-v-e6f6653f]:hover{background-color:rgb(var(--color-fill-4, 201, 205, 212))}.modal-fade-enter-active[data-v-171d9bdd],.modal-fade-leave-active[data-v-171d9bdd]{transition:all .5s ease}.modal-fade-enter-from[data-v-171d9bdd],.modal-fade-leave-to[data-v-171d9bdd]{opacity:0}
1
+ *,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.i-icon-park-outline\:close{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 48 48' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='4' d='m8 8l32 32M8 40L40 8'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em}.fixed{position:fixed}.inset-0{top:0;right:0;bottom:0;left:0}.block{display:block}.flex{display:flex}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.cursor-pointer{cursor:pointer}.resize{resize:both}.space-x-2>:not([hidden])~:not([hidden]){--un-space-x-reverse:0;margin-left:calc(.5rem * calc(1 - var(--un-space-x-reverse)));margin-right:calc(.5rem * var(--un-space-x-reverse))}.px{padding-left:1rem;padding-right:1rem}.font-bold{font-weight:700}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}.modal-wrapper[data-v-581eba51]{z-index:1000;position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;background:rgba(0,0,0,.3)}.modal-content[data-v-581eba51]{background:#ffffff;border-radius:5px}.modal-header[data-v-581eba51]{box-sizing:border-box;padding:10px;height:50px;display:flex;justify-content:space-between;align-items:center;border-bottom:solid 1px var(--color-border-1, #e8e8e8)}.modal-body[data-v-581eba51]{padding:20px 10px;box-sizing:border-box;max-height:10vw;overflow:auto}.modal-footer[data-v-581eba51]{box-sizing:border-box;height:50px;border-top:solid 1px var(--color-border-1, #e8e8e8);display:flex;justify-content:end;padding:10px}.modal-footer button[data-v-581eba51]{height:28px;line-height:28px;width:80px;outline:none;border-color:transparent;font-size:14px;border-radius:4px;padding:0;box-sizing:content-box}.modal-footer button.submit-button[data-v-581eba51]{color:#fff;background-color:rgb(var(--primary-6, 45, 106, 251))}.modal-footer button.submit-button[data-v-581eba51]:hover{background-color:rgb(var(--primary-5, 28, 76, 207))}.modal-footer button.cancel-button[data-v-581eba51]{color:rgb(var(--color-text-2, 78, 89, 105));background-color:var(--color-fill-1, #f5f5f5)}.modal-footer button.cancel-button[data-v-581eba51]:hover{background-color:var(--color-fill-4, #c9cdd4)}.modal-fade-enter-active[data-v-1ef03c20],.modal-fade-leave-active[data-v-1ef03c20]{transition:opacity .5s ease}.modal-fade-enter-active[data-v-1ef03c20] .modal-content.drawer-mode,.modal-fade-leave-active[data-v-1ef03c20] .modal-content.drawer-mode{transition:transform .5s ease}.modal-fade-enter-from[data-v-1ef03c20],.modal-fade-leave-to[data-v-1ef03c20]{opacity:0}.modal-fade-enter-from[data-v-1ef03c20] .modal-content.drawer-mode,.modal-fade-leave-to[data-v-1ef03c20] .modal-content.drawer-mode{transform:translate3d(100%,0,0)}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gopowerteam/modal-render",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.0.4",
5
5
  "author": {
6
6
  "name": "zhuchentong",
7
7
  "email": "2037630@gmail.com"