@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 30.2 kB
JavaScript
(function(x,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("../locale/index.umd.js"),require("../common/index.umd.js"),require("../property-panel/index.umd.js"),require("../button/index.umd.js"),require("../field-selector/index.umd.js"),require("../collection-property-editor/index.umd.js/src/use-button-items.designer")):typeof define=="function"&&define.amd?define(["exports","vue","../locale/index.umd.js","../common/index.umd.js","../property-panel/index.umd.js","../button/index.umd.js","../field-selector/index.umd.js","../collection-property-editor/index.umd.js/src/use-button-items.designer"],e):(x=typeof globalThis<"u"?globalThis:x||self,e(x.modal={},x.Vue,x.locale,x.common,x.propertyPanel,x.button,x.fieldSelector,x.useButtonItems_designer))})(this,function(x,e,D,_,me,ve,ge,ye){"use strict";var qe=Object.defineProperty;var Xe=(x,e,D)=>e in x?qe(x,e,{enumerable:!0,configurable:!0,writable:!0,value:D}):x[e]=D;var $=(x,e,D)=>Xe(x,typeof e!="symbol"?e+"":e,D);const le={allowClickMaskToClose:{type:Boolean,default:!1},beforeClose:{type:Function,default:()=>!0},class:{type:String,default:""},maskClass:{type:String,default:""},title:{type:String,default:""},width:{type:Number,default:500},height:{type:Number,default:320},buttons:{type:Array,default:[]},modelValue:{type:Boolean,default:!1},mask:{type:Boolean,default:!0},showHeader:{type:Boolean,default:!0},showButtons:{type:Boolean,default:!0},fitContent:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},showFloatingClose:{type:Boolean,default:!1},showMaxButton:{type:Boolean,default:!1},minHeight:{type:Number},maxHeight:{type:Number},minWidth:{type:Number},maxWidth:{type:Number},containment:{type:Object,default:null},resizeable:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},dragHandle:{type:Object,default:null},closedCallback:{type:Function,default:null},openedCallback:{type:Function,default:null},resizeHandle:{type:Function,default:null},render:{type:Function,default:null},acceptCallback:{type:Function,default:null},rejectCallback:{type:Function,default:null},enableEsc:{type:Boolean,default:!0},enableEnter:{type:Boolean,default:!1},dialogType:{type:String,default:""},src:{type:String,default:""},footerHeight:{type:Number,default:60},position:{type:String,default:"center"},host:{type:Object,default:"body"},isMessager:{type:Boolean,default:!1},fullscreen:{type:Boolean,default:!1},maximized:{type:Boolean,default:!1},useTransform:{type:Boolean,default:!0}};class z{constructor(a,o){this.x=a,this.y=o}static getTransformInfo(a){const n=window.getComputedStyle(a).getPropertyValue("transform").replace(/[^-\d,]/g,"").split(",");if(n.length>=6){const u=parseInt(n[4],10),f=parseInt(n[5],10);return{x:u,y:f}}return{x:0,y:0}}static fromEvent(a,o=null){if(this.isMouseEvent(a))return new z(a.clientX,a.clientY);if(o===null||a.changedTouches.length===1)return new z(a.changedTouches[0].clientX,a.changedTouches[0].clientY);for(let n=0;n<a.changedTouches.length;n++)if(a.changedTouches[n].target===o)return new z(a.changedTouches[n].clientX,a.changedTouches[n].clientY)}static isMouseEvent(a){return Object.prototype.toString.apply(a).indexOf("MouseEvent")===8}static isIPosition(a){return!!a&&"x"in a&&"y"in a}static getCurrent(a){const o=new z(0,0);if(window){const n=window.getComputedStyle(a);if(n){const u=parseInt(n.getPropertyValue("left"),10),f=parseInt(n.getPropertyValue("top"),10);o.x=isNaN(u)?0:u,o.y=isNaN(f)?0:f}return o}return null}static copy(a){return new z(0,0).set(a)}get value(){return{x:this.x,y:this.y}}add(a){return this.x+=a.x,this.y+=a.y,this}subtract(a){return this.x-=a.x,this.y-=a.y,this}multiply(a){this.x*=a,this.y*=a}divide(a){this.x/=a,this.y/=a}reset(){return this.x=0,this.y=0,this}set(a){return this.x=a.x,this.y=a.y,this}}class A{constructor(a,o){this.width=a,this.height=o}static getCurrent(a){const o=new A(0,0);if(window){const n=window.getComputedStyle(a);return n&&(o.width=parseInt(n.getPropertyValue("width"),10),o.height=parseInt(n.getPropertyValue("height"),10)),o}return null}static copy(a){return new A(0,0).set(a)}set(a){return this.width=a.width,this.height=a.height,this}}function ae(t,a){const o=e.ref(),n=e.ref(),u=e.ref(),f=e.ref(),m=e.ref(),d=e.ref(),h=e.ref(),g=e.ref(),M=e.ref(),b=e.ref(),N=e.ref(),W=e.ref(t.resizeable),V=e.ref(),L=e.ref(t.draggable),F=e.ref(!1);function I(){const s=n.value||document.body,r=window.getComputedStyle(s);if(!r||!o.value)return;const w=z.getTransformInfo(o.value),p={};h.value&&(p.deltaL=o.value.offsetLeft-h.value.x,p.deltaT=o.value.offsetTop-h.value.y);const P=r.getPropertyValue("position");p.width=s.clientWidth,p.height=s.clientHeight,p.pr=parseInt(r.getPropertyValue("padding-right"),10),p.pb=parseInt(r.getPropertyValue("padding-bottom"),10),p.position=r.getPropertyValue("position"),P==="static"&&(s.style.position="relative"),p.translateX=w.x,p.translateY=w.y,b.value=p}function k(s){if(o.value){f.value=A.getCurrent(o.value),m.value=z.getCurrent(o.value),d.value=f.value?A.copy(f.value):null,h.value=m.value?z.copy(m.value):null,I();const r=s.target.getAttribute("type")||"";g.value={n:!!r.match(/n/),s:!!r.match(/s/),w:!!r.match(/w/),e:!!r.match(/e/)}}}function B(){var s,r,w,p;if(o.value){const P=o.value;g.value&&((g.value.n||g.value.s)&&((s=d.value)!=null&&s.height)&&(P.style.height=d.value.height+"px"),(g.value.w||g.value.e)&&((r=d.value)!=null&&r.width)&&(P.style.width=d.value.width+"px"),h.value&&((w=h.value)!=null&&w.x&&(P.style.left=h.value.x+"px"),(p=h.value)!=null&&p.y&&(P.style.top=h.value.y+"px")))}}function T(){const s=t.minHeight?t.minHeight:1,r=t.minWidth?t.minWidth:1;d.value&&h.value&&g.value&&f.value&&(d.value.height<s&&(d.value.height=s,g.value.n&&m.value&&(h.value.y=m.value.y+(f.value.height-s))),d.value.width<r&&(d.value.width=r,g.value.w&&m.value&&(h.value.x=m.value.x+(f.value.width-r))),t.maxHeight&&d.value.height>t.maxHeight&&(d.value.height=t.maxHeight,m.value&&g.value.n&&(h.value.y=m.value.y+(f.value.height-t.maxHeight))),t.maxWidth&&d.value.width>t.maxWidth&&(d.value.width=t.maxWidth,g.value.w&&m.value&&(h.value.x=m.value.x+(f.value.width-t.maxWidth))))}function Y(){if(n.value){const s=b.value;if(h.value&&d.value&&g.value&&f.value){const r=s.width-s.pr-s.deltaL-s.translateX-h.value.x,w=s.height-s.pb-s.deltaT-s.translateY-h.value.y;g.value.n&&h.value.y+s.translateY<0&&m.value&&(h.value.y=-s.translateY,d.value.height=f.value.height+m.value.y+s.translateY),g.value.w&&h.value.x+s.translateX<0&&m.value&&(h.value.x=-s.translateX,d.value.width=f.value.width+m.value.x+s.translateX),d.value.width>r&&(d.value.width=r),d.value.height>w&&(d.value.height=w)}}}function R(s){if(!u.value||!f.value||!m.value||!g.value)return;s.subtract(u.value);const r=s.x,w=s.y;g.value.n?(h.value.y=m.value.y+w,d.value.height=f.value.height-w):g.value.s&&(d.value.height=f.value.height+w),g.value.e?d.value.width=f.value.width+r:g.value.w&&(d.value.width=f.value.width-r,h.value.x=m.value.x+r),Y(),T(),B()}function c(s){if(!M.value)return;const r=z.fromEvent(s);r&&R(r)}function i(){if(o.value){const{width:s,height:r,x:w,y:p}=o.value.getBoundingClientRect(),P=z.getTransformInfo(o.value);return{size:{width:s,height:r},position:{x:w-P.x,y:p-P.y}}}return null}function y(s){if(o.value){const r=i();N.value=r}u.value=void 0,f.value=null,m.value=null,d.value=null,h.value=null,g.value=null,M.value=null,document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",y)}function S(){document.addEventListener("mousemove",c),document.addEventListener("mouseup",y)}function H(s){s instanceof MouseEvent&&s.button===2||L.value&&(document.body.click(),s.stopPropagation(),s.preventDefault(),u.value=z.fromEvent(s),M.value=s.target,k(s),S())}function j(s){return o.value=s,W.value&&e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"fv-resizable-handle fv-resizable-n",type:"n",onMousedown:r=>H(r)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-e",type:"e",onMousedown:r=>H(r)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-s",type:"s",onMousedown:r=>H(r)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-w",type:"w",onMousedown:r=>H(r)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-ne",type:"ne",onMousedown:r=>H(r)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-se fv-resizable-diagonal",type:"se",onMousedown:r=>H(r)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-sw",type:"sw",onMousedown:r=>H(r)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-nw",type:"nw",onMousedown:r=>H(r)},null)])}function O(s=!0){document.body.click();const r=n.value||document.body,w=A.getCurrent(r),p=o.value;s&&p&&(V.value=i(),V.value.transform=p.style.transform),w&&p&&(d.value=w,d.value.height-=14,d.value.width-=14,p.style.height=d.value.height+"px",p.style.width=d.value.width+"px",p.style.left="7px",p.style.top="7px",p.style.transform="",N.value={size:d.value,position:{x:0,y:0}},L.value=!1,F.value=!0)}function Z(){var s,r;if(document.body.click(),V.value){const w={width:V.value.size.width||0,height:V.value.size.height||0},p={x:(window.innerWidth-w.width)/2,y:(window.innerHeight-w.height)/2};(s=d.value)==null||s.set(w),(r=h.value)==null||r.set(p);const P=o.value;P.style.height=w.height+"px",P.style.width=w.width+"px",P.style.left=`${p.x}px`,P.style.top=`${p.y}px`,P.style.transform="",N.value={size:w,position:p},L.value=t.draggable,F.value=!1}}function J(){if(o.value){const s=A.getCurrent(o.value);if(s){const{width:r,height:w}=s;o.value.style.left=`${(window.innerWidth-r)/2}px`,o.value.style.top=`${(window.innerHeight-w)/2}px`,o.value.style.transform=""}}}function G(){const s=()=>{F.value?O(!1):J(),document.body.click()};return window.addEventListener("resize",s),()=>{window.removeEventListener("resize",s)}}const X=G();return{renderResizeBar:j,boundingElement:n,resizedEventParam:N,maximize:O,restore:Z,allowDrag:L,isMaximized:F,unWindowResizeHandle:X,moveToCenter:J}}function ne(t,a,o){const n=e.ref(),u=e.ref(t.draggable),f=e.ref(t.lockAxis),m=e.ref(),d=e.ref(),h=e.ref(!1),g=e.ref(new z(0,0)),M=e.ref(new z(0,0)),b=e.ref(new z(0,0)),N=e.ref(new z(0,0));e.watch(()=>o.value,c=>{m.value.style.cursor=c?"move":"default"});function W(c,i){if(i.tagName==="BUTTON")return!1;if(i===c)return!0;for(const y in i.children)if(Object.prototype.hasOwnProperty.call(i.children,y)&&W(c,i.children[y]))return!0;return!1}function V(){var S,H;let c=b.value.x+M.value.x,i=b.value.y+M.value.y;f.value==="x"?(c=((S=g.value)==null?void 0:S.x)||0,b.value.x=0):f.value==="y"&&(i=((H=g.value)==null?void 0:H.y)||0,b.value.y=0);const y=`translate3d(${Math.round(c)}px, ${Math.round(i)}px, 0px)`;n.value&&(n.value.style.transform=y),N.value.x=c,N.value.y=i}function L(){if(!d.value||!n.value)return null;const c=d.value.getBoundingClientRect(),i=n.value.getBoundingClientRect(),y={top:c.top<i.top,right:c.right>i.right,bottom:c.bottom>i.bottom,left:c.left<i.left};return y.top||(b.value.y-=i.top-c.top),y.bottom||(b.value.y-=i.bottom-c.bottom),y.right||(b.value.x-=i.right-c.right),y.left||(b.value.x-=i.left-c.left),V(),y}function F(c){c&&(g.value&&c.subtract(g.value),b.value.set(c),V(),L())}function I(c){h.value&&u.value&&(c.stopPropagation(),c.preventDefault(),F(z.fromEvent(c,m.value)))}function k(){var c;if(h.value){if(h.value=!1,M.value.add(b.value),b.value.reset(),(c=n.value)==null||c.classList.remove("ng-dragging"),!t.useTransform&&n.value){const{left:i,top:y}=n.value.getBoundingClientRect();n.value.style.left=Math.ceil(i)+"px",n.value.style.top=Math.ceil(y)+"px",n.value.style.transform="none"}a.emit("stopMove"),document.removeEventListener("mousemove",I),document.removeEventListener("mouseup",k)}}function B(){!h.value&&m.value&&(h.value=!0,m.value.classList.add("ng-dragging"),document.addEventListener("mousemove",I),document.addEventListener("mouseup",k))}function T(){if(n.value){const c=z.getTransformInfo(n.value);M.value.set(c);return}M.value.reset()}function Y(c){if(!o.value||c instanceof MouseEvent&&c.button===2)return;const i=c.target||c.srcElement;m.value!==void 0&&i&&!W(i,m.value)||u.value!==!1&&(document.body.click(),c.stopPropagation(),c.preventDefault(),g.value=z.fromEvent(c,n.value),T(),B())}function R(c,i,y){if(u.value&&i){if(c)m.value=c;else if(t.dragHandle){if(t.dragHandle instanceof HTMLElement)m.value=t.dragHandle;else if(typeof t.dragHandle=="string"){const S=i.querySelector(t.dragHandle);S&&(m.value=S)}}n.value=i,d.value=y,m.value?(m.value.classList.add("ng-draggable"),m.value.addEventListener("mousedown",Y)):u.value=!1}}return{registerDraggle:R,resetTranslate:T}}function oe(t,a){if(t){const o=n=>{n.key.toLowerCase()===t.toLowerCase()&&a({event:n,key:t})};return document.addEventListener("keydown",o),()=>{document.removeEventListener("keydown",o)}}}function be(t,a){const o=e.ref(t.enableEsc);let n=null;return o.value?(n=oe("Escape",u=>{a.emit("esc",{event:u.event,type:"esc"})}),{remove:n}):null}function pe(t,a){const o=e.ref(t.enableEnter);let n=null;return o.value?(n=oe("Enter",u=>{a.emit("enter",{event:u.event,type:"enter"})}),{remove:n}):null}const U=e.defineComponent({name:"FModal",props:le,emits:["update:modelValue","accept","cancel","closed","resize","esc","enter","stopMove","buttonClick"],setup(t,a){const o=e.ref(t.width||300),n=e.ref(t.height||200),u=e.ref(t.modelValue),f=e.ref(""),m=e.ref(t.class),d=e.ref(t.fitContent),h=e.ref(t.showHeader),g=e.ref(""),M=e.ref(t.showCloseButton),b=e.ref(t.showMaxButton),N=e.ref(!1),W=e.ref(t.dialogType),V=e.ref(t.src),L=e.ref(""),F=e.ref(t.showButtons),I=e.ref(t.title),k=e.ref(t.containment||null),B=e.ref();I.value==="错误提示"&&(I.value=D.LocaleService.getLocaleValue("messageBox.errorTitle"));const T=e.ref(!1);function Y(){const l=document.querySelectorAll(".farris-modal").length;(!l||l-1<=0)&&B.value===document.querySelectorAll(".farris-modal")[0]&&document.body.classList.remove("modal-open"),B.value&&B.value.classList.remove("show")}function R(l,v){const C=v?"accept":"cancel";Promise.resolve().then(()=>{var E;return(E=t.beforeClose)==null?void 0:E.call(t,{closeType:C})}).then(E=>{E&&(u.value=!1,a.emit("update:modelValue",!1),v!=null&&a.emit(v?"accept":"cancel"),a.emit("closed",l),Y())})}const c=[{name:"cancel",text:D.LocaleService.getLocaleValue("messageBox.cancel")||"取消",class:"btn btn-secondary",handle:l=>{R(l,!1)}},{name:"accept",text:D.LocaleService.getLocaleValue("messageBox.ok")||"确定",class:"btn btn-primary",handle:l=>{R(l,!0)}}],i=e.ref(t.buttons&&t.buttons.length?t.buttons:c),y=e.computed(()=>!!g.value),S=e.computed(()=>!!F.value&&!!i.value),H=e.ref(),j=e.ref(),O=e.ref(t.maximized||!1),{renderResizeBar:Z,maximize:J,restore:G,boundingElement:X,resizedEventParam:s,allowDrag:r,unWindowResizeHandle:w,moveToCenter:p}=ae(t),{registerDraggle:P}=ne(t,a,r);function de(){return!!document.querySelectorAll(".farris-modal").length&&document.body.classList.contains("modal-open")}e.watch(()=>t.title,(l,v)=>{l!==v&&(I.value=l)}),e.watch(()=>t.modelValue,(l,v)=>{l!==v&&(u.value=l,u.value&&t.draggable&&e.nextTick(()=>{j.value&&!k.value&&(k.value=j.value.parentElement,X.value=k.value,P(H.value,j.value,X.value),p())}),l||(k.value&&(k.value=null),Y())),u.value?T.value=de():(O.value=!1,r.value=t.draggable)}),e.watch(()=>t.showHeader,(l,v)=>{l!==v&&(h.value=l)}),e.watch(()=>t.showButtons,(l,v)=>{l!==v&&(F.value=l)}),e.watch(()=>s.value,(l,v)=>{const C=l||{},E=v||{};JSON.stringify(C)!==JSON.stringify(E)&&a.emit("resize",{newSize:l,oldSize:v,isMaximized:O.value})}),e.watch([()=>t.width,()=>t.height],(l,v)=>{(l[0]!==v[0]||l[1]!==v[1])&&(o.value=l[0]||500,n.value=l[1]||600)}),e.watch(()=>t.class,(l,v)=>{m.value=l});const K=e.computed(()=>(u.value&&document.body.classList.add("modal-open"),u.value)),Me=e.computed(()=>{var C;const l={modal:!0,"farris-modal":!0,fade:!0,"fe-cmp-page-modal":!!t.showFloatingClose};l["f-modal-fitContent"]=!!d.value,l.show=!!K.value;const v=(C=t.maskClass)==null?void 0:C.split(" ");return v==null||v.reduce((E,q)=>(E[q]=!0,E),l),l}),Ee=e.computed(()=>{var C;const l={"modal-dialog":!0},v=(C=m.value)==null?void 0:C.split(" ");return v==null||v.reduce((E,q)=>(E[q]=!0,E),l),l}),ze=()=>_.isMobilePhone()&&!t.isMessager||!!t.fullscreen,Be=e.computed(()=>{const l=document.documentElement.clientWidth,v=document.documentElement.clientHeight;if(O.value)return{position:"fixed",top:"0px",left:"0px",width:"100vw",height:"100vh",margin:"0"};const C=Math.min(o.value,l),E=t.position==="right"?"100%":d.value?"auto":`${Math.min(n.value,v-10)}px`,q=`${(window.innerHeight-(E==="100%"||E==="auto"?0:parseInt(E)))/2}px`,Ye=t.position==="right"?`${window.innerWidth-C}px`:`${(window.innerWidth-C)/2}px`,he={position:"absolute",top:q,left:Ye,width:_.isMobilePhone()?"auto":`${C}px`,height:E};return t.mask||(he.pointerEvents="auto"),he}),ce=e.ref(_.getMaxZIndex()||1050),ke=e.computed(()=>{const l={display:"block",overflow:"hidden"};return t.mask||(l.pointerEvents="none",l.backgroundColor="transparent"),T.value&&(l.backgroundColor="transparent"),l.zIndex=ce.value,l}),Pe=e.computed(()=>({"modal-content":!0,"modal-content-has-header":h.value,"is-mobile":ze()})),Te=e.computed(()=>{const l={display:h.value?"":"none"};return l["pointer-events"]=r.value?"auto":"none",l}),Se=e.computed(()=>({"f-icon":!0,modal_maximize:!0,modalrevert:O.value})),Ve=e.computed(()=>({"modal-body":!0,"f-utils-flex-column":W.value==="iframe","f-utils-fill":!0}));function He(){return{height:`${t.footerHeight||60}px`}}const Ne=e.computed(()=>{const l={textAlgin:L.value},v=He();return Object.assign(l,v)});function Q(l){if(l==null||l.stopPropagation(),O.value){O.value=!1,G();return}J(),O.value=!0}async function Ie(l,v){l.handle?await l.handle(v,l)&&a.emit("closed",v):a.emit("buttonClick",{button:l,$event:v})}function Fe(l){l.width&&(o.value=l.width),l.height&&(n.value=l.height),l.buttons&&(i.value=l.buttons),l.title&&(I.value=l.title)}let ee=null,te=null;e.onBeforeMount(()=>{T.value=de()}),e.onMounted(()=>{j.value&&!k.value&&(k.value=j.value.parentElement,X.value=k.value,P(H.value,j.value,X.value)),K.value&&document.body.classList.add("modal-open"),ee=be(t,a),te=pe(t,a)}),e.onUnmounted(()=>{w&&w(),ee&&ee.remove(),te&&te.remove()}),a.expose({modalElementRef:j,updateModalOptions:Fe,close:R,maxDialog:Q,isMaximized:O,disableButtons:(l,v=!0)=>{i.value.forEach(C=>{C.name&&l.includes(C.name)&&(C.disabled=v)})}});function Re(){return e.createVNode("div",{class:"action-wrapper",onClick:l=>R(l,!1)},[e.createVNode("span",{class:"close-icon"},[e.createVNode("i",{class:"f-icon f-icon-close"},null)])])}function Oe(){return e.createVNode("ul",null,[N.value&&e.createVNode("li",{class:"f-btn-icon f-bare"},[e.createVNode("span",{class:"f-icon modal_minimize"},null)]),b.value&&e.createVNode("li",{onClick:Q,class:"f-btn-icon f-bare",style:"pointer-events: auto;"},[e.createVNode("span",{class:Se.value},null)]),M.value&&e.createVNode("li",{class:"f-btn-icon f-bare",onClick:l=>R(l,!1),style:"pointer-events: auto;"},[e.createVNode("span",{class:"f-icon modal_close"},null)])])}const Le=l=>{l.preventDefault();const v=l.currentTarget,C=l.deltaY*.5;v.scrollLeft+=C};function je(){return e.createVNode("div",{class:"modal-footer",style:Ne.value},[i.value&&e.createVNode("div",{class:"buttons",onWheel:Le},[i.value.map(l=>{var E;const v=e.ref(l.disabled),C=l.class||((E=l.appearance)==null?void 0:E.class);return e.createVNode("button",{name:l.name,style:l.styles,type:"button",disabled:v.value,class:C+(l.iconClass?" btn-icontext":"")+(l.visible===!1?"d-none":""),onClick:q=>{Ie(l,q)}},[!!l.iconClass&&e.createVNode("i",{class:l.iconClass},null),l.text])})])])}function fe(l){b.value&&Q()}function We(){return e.createVNode(e.Fragment,null,[O.value&&e.createVNode("div",{class:"modal-header",style:"position: absolute;background: transparent;height: 45px;width: 100%;",onDblclick:l=>fe()},null),e.createVNode("div",{ref:H,class:"modal-header",style:Te.value,onDblclick:l=>fe()},[a.slots.headerTemplate?a.slots.headerTemplate():e.createVNode("div",{class:"modal-title"},[y.value&&e.createVNode("span",{class:g.value,style:"margin-right: 8px"},null),e.createVNode("span",{class:"modal-title-label"},[I.value])]),e.createVNode("div",{class:"actions"},[Oe()])])])}function De(){return a.slots.footerTemplate?a.slots.footerTemplate():S.value&&je()}function $e(l){if(l.stopPropagation(),t.allowClickMaskToClose){if(l.target!==B.value)return;R(l,!1)}}function Ae(){var l,v;return e.createVNode("div",{id:f.value,class:Ee.value,style:Be.value,ref:j},[t.showFloatingClose&&Re(),e.createVNode("div",{class:Pe.value},[h.value&&We(),e.createVNode("div",{class:Ve.value},[(v=(l=a.slots).default)==null?void 0:v.call(l),W.value==="iframe"&&e.createVNode("iframe",{title:f.value,class:"f-utils-fill",width:"100%",frameborder:"0",src:V.value},null)]),De()]),!d.value&&j.value&&!O.value&&Z(j.value)])}function Ue(l){return l||"body"}return e.watchEffect(()=>{K.value&&(ce.value=_.getMaxZIndex()||1050)}),()=>e.createVNode(e.Teleport,{to:Ue(t.host)},{default:()=>[K.value&&e.createVNode(e.Transition,{name:"fade",appear:!0},{default:()=>[e.createVNode("div",{ref:B,class:Me.value,style:ke.value,onClick:$e},[Ae()])]})]})}});function ie(t){if(t.content&&t.content.render)return t.content.render;if(t.render&&typeof t.render=="function")return t.render}function we(t){const a=document.createElement("div");a.style.display="contents";const o=e.createApp({setup(n,u){e.onUnmounted(()=>{document.body.removeChild(a)});const f=e.ref(),m=e.ref(t.class||""),d=e.ref(!!t.showButtons),h=e.ref(!!t.showHeader),g=e.ref(t.showCloseButton==null?!0:t.showCloseButton),M=e.ref(!!t.showFloatingClose),b=e.ref(!0),N=e.ref(t.title||""),W=t.acceptCallback||(()=>{}),V=t.rejectCallback||(()=>{}),L=t.closedCallback||(T=>{}),F=t.resizeHandle||(T=>{}),I=t.stopMoveHandle||(T=>{}),k=ie(t),B=T=>{b.value=!1,o.unmount(),L(T)};return e.onMounted(()=>{}),u.expose({modalRef:f}),()=>e.createVNode(U,{ref:f,class:m.value,modelValue:b.value,"onUpdate:modelValue":T=>b.value=T,title:N.value,width:t.width,height:t.height,buttons:t.buttons,"show-header":h.value,"show-buttons":d.value,"show-close-button":g.value,"show-max-button":!1,showFloatingClose:M.value,onAccept:W,onCancel:V,fitContent:t.fitContent==null?!0:t.fitContent,onClosed:B,onResize:F,onStopMove:I},{default:()=>[k&&k(o)]})}});return document.body.appendChild(a),o.use(D.LocaleService.i18n),o.mount(a),o}class se{constructor(a){$(this,"appContext",null);$(this,"modalRef",e.ref());$(this,"activeModalIndex",e.ref(0));$(this,"modalRefs",{});$(this,"isUseEscCloseModal",e.ref(!1));this.app=a,this.appContext=a?a._context:null}getCurrentModal(){return this.modalRefs[this.activeModalIndex.value]}adaptToWindow(a,o){const{width:n,height:u}={width:window.innerWidth,height:window.innerHeight};return n<a&&(a=n-14),u<o&&(o=u-14),{width:a,height:o}}static show(a){const o=Object.assign({title:"",showButtons:!0,showHeader:!0},a);return we(o)}close(a){var o,n;a?(n=a.value)==null||n.close():(o=this.getCurrentModal())==null||o.close()}open(a){const o=document.createDocumentFragment();a.showMaxButton&&a.fitContent&&(a.showMaxButton=!1);const n=e.shallowRef(Object.assign({title:"",showButtons:!0,showHeader:!0,maximized:!1},a)),u=e.ref(!0),f=n.value.acceptCallback||(()=>{}),m=n.value.rejectCallback||(()=>{}),d=n.value.closedCallback||((i,y)=>{}),h=n.value.openedCallback||(i=>{}),g=n.value.resizeHandle||(i=>{}),M=a.stopMoveHandle||(i=>{});let b;const N=ie(n.value),W=i=>{var S;u.value=!1;const y=(S=i==null?void 0:i.target)==null?void 0:S.classList.contains("modal_close");d(i,this.isUseEscCloseModal.value?"esc":y?"icon":"button")},V=i=>{W(i),b&&e.nextTick(()=>{if(this.modalRefs[this.activeModalIndex.value]&&delete this.modalRefs[this.activeModalIndex.value],e.render(null,o),b=null,this.modalRef.value=null,this.modalRefs){const y=Object.keys(this.modalRefs).map(S=>Number(S));y.length>0?this.activeModalIndex.value=Math.max(...y):this.activeModalIndex.value=0,this.modalRefs[this.activeModalIndex.value]&&(this.modalRef.value=this.modalRefs[this.activeModalIndex.value])}this.isUseEscCloseModal.value=!1})},L=i=>{var y;this.isUseEscCloseModal.value=!0,(y=this.getCurrentModal())==null||y.close(i==null?void 0:i.event)},{width:F,height:I}=n.value,k=this.adaptToWindow(F||500,I||320);Object.assign(n.value,k);const B=e.ref(),T=()=>e.createVNode(U,e.mergeProps({ref:B,modelValue:u.value,"onUpdate:modelValue":i=>u.value=i},n.value,{isMessager:n.value.class&&n.value.class.indexOf("modal-message")>-1,onAccept:f,onCancel:m,onClosed:V,onResize:g,onEsc:L,onStopMove:M,maximized:n.value.maximized}),{default:()=>[N&&N(this.app)]});b=(i=>{const y=e.h(T,i);return y.appContext=this.appContext,e.render(y,o),y})({...n.value}),this.activeModalIndex.value++;const R=this.activeModalIndex.value;this.modalRefs[R]=B.value;const c=i=>{n.value={...n.value,...i},b&&e.render(e.cloneVNode(b,{...n}),o)};return e.nextTick(()=>{this.modalRefs[R]=B.value,this.modalRef.value=B.value,h(new Event("opened"))}),{update:c,destroy:V,modalRef:B,close:()=>{var i;(i=B.value)==null||i.close()},disableButtons:(i,y=!0)=>{var S;(S=B.value)==null||S.disableButtons(i,y)}}}}const xe=[{label:"beforeClose",name:"关闭前事件"},{label:"onAccept",name:"确定事件"},{label:"onCancel",name:"取消事件"}],re=t=>t&&t.length?t.map(a=>`${a.name}[${a.bindingPath}]`).join(","):"";class Ce extends me.BaseControlProperty{constructor(o,n){super(o,n);$(this,"numberEditor",{type:"number-spinner",useThousands:!1});$(this,"buttonProperty",new ve.ButtonProperty(this.componentId,this.designerHostService,!1))}getPropertyConfig(o){const n=this.getEventPropConfig(o);return this.propertyConfig.categories.dialog=this.getDialogPropertyConfig(o),this.propertyConfig.categories.eventsEditor=n,this.propertyConfig}getToDataSource(){const o=this.designViewModelUtils.getAllFields2TreeByVMId(this.viewModelId),n=this.schemaService.getPrimaryField();return n?o.filter(u=>u.data.bindingPath!==n):o}getModalButtons(o){const n=this.formSchemaUtils.getExternalComponents().find(u=>u.id===o);return n?n.buttons||[]:[]}setModalButtons(o,n){const u=this.formSchemaUtils.getExternalComponents().find(f=>f.id===o);u&&(u.buttons=n)}getDialogPropertyConfig(o){const n=this.getModalButtons(o.id);return{description:"窗口尺寸配置",title:"窗口",parentPropertyID:"dialog",properties:{showHeader:{description:"是否展示头部",title:"是否展示头部",type:"boolean",refreshPanelAfterChanged:!0},title:{description:"标题",title:"标题",type:"string",visible:!!o.showHeader},width:{description:"窗口宽度,单位:px,最小值:300px,最大值:3000px",title:"宽度",type:"number",editor:{...this.numberEditor,min:300,max:3e3}},height:{description:"窗口高度,单位:px,最小值:200px,最大值:2000px",title:"高度",type:"number",editor:{...this.numberEditor,min:200,max:2e3}},resizeable:{description:"允许鼠标拖拽窗口边缘调整尺寸",title:"允许调整窗口尺寸",type:"boolean",visible:!0},enableEsc:{description:"允许ESC关闭",title:"允许ESC关闭",type:"boolean",visible:!1},showMaxButton:{description:"显示最大化按钮",title:"显示最大化按钮",type:"boolean",visible:!0},showCloseButton:{description:"显示关闭按钮",title:"显示关闭按钮",type:"boolean",visible:!0},mapFields:{description:"弹出表单选中的数据映射到表单字段",title:"映射字段",type:"string",visible:!1,editor:{type:"mapping-editor",modalWidth:800,modalHeight:600,editable:!1,beforeOpen:({fromDataSource:u,toDataSource:f,gridColumns:m,repository:d})=>{if(!o.contents||!o.contents.length||!o.contents[0].externalComponent)return{open:!1,messager:"请选择一个表单"};const{id:h,relativePath:g}=o.contents[0].externalComponent;return f.value=this.getToDataSource(),m[1].editor.data=f.value,this.metadataService.getRefMetadata(g,h).then(M=>{let b=JSON.parse(M.data.content).Contents;typeof b=="string"&&(b=JSON.parse(b)),u.value=d.buildTreeData(b.module.entity[0]),m[0].editor.data=f.value}),!0},fromData:{editable:!0,formatter:(u,f)=>`${f.raw.name} [${f.raw.bindingPath}]`,idField:"bindingPath",textField:"name",valueField:"bindingPath",searchFields:["name","bindingPath"],repositoryToken:ge.FieldSelectorRepositoryToken,displayFormatter:re},toData:{editable:!1,idField:"bindingPath",textField:"name",valueField:"bindingPath",searchFields:["name","bindingPath"],formatter:(u,f)=>`${f.raw.name} [${f.raw.bindingPath}]`,displayFormatter:re}}},showButtons:{description:"是否显示底部按钮组",title:"显示底部按钮组",type:"boolean",refreshPanelAfterChanged:!0,visible:!0},buttons:{description:"弹窗底部自定义按钮, 未设置时使用默认按钮,显示取消、确定",title:"按钮组",type:"array",defaultValue:`共 ${n.length} 项`,visible:!1,$converter:{convertFrom:()=>`共 ${n.length} 项`},editor:{type:"button-edit",editable:!1,enableClear:!0,buttonContent:'<i class="f-icon f-icon-lookup"></i>',onClear:()=>{const{messagerService:u}=this.designerHostService;u.question("您确定要清空所有按钮吗?","",()=>{this.setModalButtons(o.id,[]),this.getFormDesignerInstance().reloadPropertyPanel()},()=>{this.getFormDesignerInstance().reloadPropertyPanel()})},onClickButton:()=>{ye.useButtonItemsDesigner(this.designerHostService,{buttons:n,modalPropertyData:o,componentId:this.componentId,viewModelId:this.viewModelId,forModalFooter:!0}).show(()=>{this.getFormDesignerInstance().reloadPropertyPanel()})}}}}}}getEventPropConfig(o){const n=this,u=xe,f=n.eventsEditorUtils.formProperties(o,n.viewModelId,u);return{title:"事件",hideTitle:!0,properties:n.createBaseEventProperty(f),refreshPanelAfterChanged:!0,tabId:_.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(d,h){const g=d.propertyValue;delete o[n.viewModelId],g&&n.eventsEditorUtils.saveRelatedParameters(o,n.viewModelId,g.events,g),u.forEach(M=>{h[M.label]=o[M.label]})}}}}const ue=Symbol("FModalService");U.install=t=>{t.component(U.name,U);const a=new se(t);t.provide(ue,a),t.provide("FModalService",a)},x.FModal=U,x.FModalService=se,x.F_MODAL_SERVICE_TOKEN=ue,x.ModalProperty=Ce,x.default=U,x.modalProps=le,x.useDraggable=ne,x.useResizeable=ae,Object.defineProperties(x,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});