UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 34.6 kB
(function(z,I){typeof exports=="object"&&typeof module<"u"?I(exports,require("../../components/common/index.umd.js"),require("../../components/dynamic-resolver/index.umd.js"),require("../../components/button-edit/index.umd.js"),require("vue"),require("../../components/locale/index.umd.js"),require("../../components/property-panel/index.umd.js"),require("../../components/designer-canvas/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","../../components/common/index.umd.js","../../components/dynamic-resolver/index.umd.js","../../components/button-edit/index.umd.js","vue","../../components/locale/index.umd.js","../../components/property-panel/index.umd.js","../../components/designer-canvas/index.umd.js"],I):(z=typeof globalThis<"u"?globalThis:z||self,I(z["button-edit"]={},z.common,z.dynamicResolver,z.FButtonEdit,z.Vue,z.locale,null,z.designerCanvas))})(this,function(z,I,A,ie,e,_,lt,me){"use strict";var nt=Object.defineProperty;var at=(z,I,A)=>I in z?nt(z,I,{enumerable:!0,configurable:!0,writable:!0,value:A}):z[I]=A;var U=(z,I,A)=>at(z,typeof I!="symbol"?I+"":I,A);const he={id:{type:String,default:""},buttonContent:{type:String,default:'<i class="f-icon f-icon-lookup"></i>'},buttonBehavior:{type:String,default:"Popup"},autoComplete:{type:Boolean,default:!1},customClass:{type:String,default:""},disable:{type:Boolean,default:!1},editable:{type:Boolean,default:!0},enableClear:{type:Boolean,default:!1},modelValue:{type:String,default:""},readonly:{type:Boolean,default:!1},showButtonWhenDisabled:{type:Boolean,default:!1},enableTitle:{type:Boolean,default:!1},inputType:{type:String,default:"text"},forcePlaceholder:{type:Boolean,default:!1},placeholder:{type:String,default:""},minLength:Number,maxLength:{type:Number},tabIndex:Number,popupHost:{type:Object},popupRightBoundary:{type:Object},popupOffsetX:{type:Object},popupOnInput:{type:Boolean,default:!1},popupOnFocus:{type:Boolean,default:!1},popupOnClick:{type:Boolean,default:!1},popupClass:{type:String,default:""},popupMinWidth:{type:Number,default:160},modalOptions:{type:Object,default:{}},wrapText:{type:Boolean,default:!1},multiSelect:{type:Boolean,default:!1},separator:{type:String,default:","},textAlign:{type:String,default:"left"},beforeClickButton:{type:Function,default:null},focusOnCreated:{type:Boolean,default:!1},selectOnCreated:{type:Boolean,default:!1},beforeOpen:{type:Function,default:null},updateOn:{type:String,default:"change"},keepWidthWithReference:{type:Boolean,default:!0},placement:{type:String,default:"bottom-left"},limitContentBySpace:{type:Boolean,default:!1},beforeClosePopup:{type:Function,default:null}},ve={popupContentPosition:{type:Object,default:{left:0,top:0}},host:{type:Object},backgroundColor:{type:String,default:""}},ye=e.defineComponent({name:"FOverlay",props:ve,emits:["click"],setup(t,n){const l=e.ref(t.popupContentPosition),o=e.ref(t.host),c=e.computed(()=>({backgroundColor:t.backgroundColor||"",pointerEvents:"auto"}));function r(s){n.emit("click"),s.preventDefault(),s.stopPropagation()}e.computed(()=>{const s=o.value;if(s){const d=s.getBoundingClientRect(),{left:h,top:x,height:y}=d;return{left:h,top:x+y}}return l.value});const m=e.computed(()=>({}));return()=>e.createVNode(e.Teleport,{to:"body"},{default:()=>{var s,d;return[e.createVNode("div",{class:"overlay-container",onClick:h=>r(h),style:c.value},[e.createVNode("div",{style:m.value},[(d=(s=n.slots).default)==null?void 0:d.call(s)])])]}})}});function ge(t){if(t.content&&t.content.render)return t.content.render;if(t.render&&typeof t.render=="function")return t.render}function be(t){const n=document.createElement("div");n.style.display="contents";let l;const o=t.onClickCallback||(()=>{}),c=()=>{o(),l&&l.unmount()};return l=e.createApp({setup(){e.onUnmounted(()=>{document.body.removeChild(n)});const r=ge(t);return()=>e.createVNode(ye,{"popup-content-position":t.popupPosition,host:t.host,onClick:c,backgroundColor:t.backgroundColor},{default:()=>[r&&r()]})}}),document.body.appendChild(n),l.mount(n),l}class we{static show(n){return be(n)}}const Ce={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},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},host:{type:Object,default:"body"},isMessager:{type:Boolean,default:!1},maximized:{type:Boolean,default:!1}};class N{constructor(n,l){this.x=n,this.y=l}static getTransformInfo(n){const o=window.getComputedStyle(n).getPropertyValue("transform").replace(/[^-\d,]/g,"").split(",");if(o.length>=6){const c=parseInt(o[4],10),r=parseInt(o[5],10);return{x:c,y:r}}return{x:0,y:0}}static fromEvent(n,l=null){if(this.isMouseEvent(n))return new N(n.clientX,n.clientY);if(l===null||n.changedTouches.length===1)return new N(n.changedTouches[0].clientX,n.changedTouches[0].clientY);for(let o=0;o<n.changedTouches.length;o++)if(n.changedTouches[o].target===l)return new N(n.changedTouches[o].clientX,n.changedTouches[o].clientY)}static isMouseEvent(n){return Object.prototype.toString.apply(n).indexOf("MouseEvent")===8}static isIPosition(n){return!!n&&"x"in n&&"y"in n}static getCurrent(n){const l=new N(0,0);if(window){const o=window.getComputedStyle(n);if(o){const c=parseInt(o.getPropertyValue("left"),10),r=parseInt(o.getPropertyValue("top"),10);l.x=isNaN(c)?0:c,l.y=isNaN(r)?0:r}return l}return null}static copy(n){return new N(0,0).set(n)}get value(){return{x:this.x,y:this.y}}add(n){return this.x+=n.x,this.y+=n.y,this}subtract(n){return this.x-=n.x,this.y-=n.y,this}multiply(n){this.x*=n,this.y*=n}divide(n){this.x/=n,this.y/=n}reset(){return this.x=0,this.y=0,this}set(n){return this.x=n.x,this.y=n.y,this}}class q{constructor(n,l){this.width=n,this.height=l}static getCurrent(n){const l=new q(0,0);if(window){const o=window.getComputedStyle(n);return o&&(l.width=parseInt(o.getPropertyValue("width"),10),l.height=parseInt(o.getPropertyValue("height"),10)),l}return null}static copy(n){return new q(0,0).set(n)}set(n){return this.width=n.width,this.height=n.height,this}}function xe(t,n){const l=e.ref(),o=e.ref(),c=e.ref(),r=e.ref(),m=e.ref(),s=e.ref(),d=e.ref(),h=e.ref(),x=e.ref(),y=e.ref(),O=e.ref(),w=e.ref(t.resizeable),M=e.ref(),B=e.ref(t.draggable),H=e.ref(!1);function j(){const i=o.value||document.body,u=window.getComputedStyle(i);if(!u||!l.value)return;const C=N.getTransformInfo(l.value),b={};d.value&&(b.deltaL=l.value.offsetLeft-d.value.x,b.deltaT=l.value.offsetTop-d.value.y);const T=u.getPropertyValue("position");b.width=i.clientWidth,b.height=i.clientHeight,b.pr=parseInt(u.getPropertyValue("padding-right"),10),b.pb=parseInt(u.getPropertyValue("padding-bottom"),10),b.position=u.getPropertyValue("position"),T==="static"&&(i.style.position="relative"),b.translateX=C.x,b.translateY=C.y,y.value=b}function E(i){if(l.value){r.value=q.getCurrent(l.value),m.value=N.getCurrent(l.value),s.value=r.value?q.copy(r.value):null,d.value=m.value?N.copy(m.value):null,j();const u=i.target.getAttribute("type")||"";h.value={n:!!u.match(/n/),s:!!u.match(/s/),w:!!u.match(/w/),e:!!u.match(/e/)}}}function V(){var i,u,C,b;if(l.value){const T=l.value;h.value&&((h.value.n||h.value.s)&&((i=s.value)!=null&&i.height)&&(T.style.height=s.value.height+"px"),(h.value.w||h.value.e)&&((u=s.value)!=null&&u.width)&&(T.style.width=s.value.width+"px"),d.value&&((C=d.value)!=null&&C.x&&(T.style.left=d.value.x+"px"),(b=d.value)!=null&&b.y&&(T.style.top=d.value.y+"px")))}}function W(){const i=t.minHeight?t.minHeight:1,u=t.minWidth?t.minWidth:1;s.value&&d.value&&h.value&&r.value&&(s.value.height<i&&(s.value.height=i,h.value.n&&m.value&&(d.value.y=m.value.y+(r.value.height-i))),s.value.width<u&&(s.value.width=u,h.value.w&&m.value&&(d.value.x=m.value.x+(r.value.width-u))),t.maxHeight&&s.value.height>t.maxHeight&&(s.value.height=t.maxHeight,m.value&&h.value.n&&(d.value.y=m.value.y+(r.value.height-t.maxHeight))),t.maxWidth&&s.value.width>t.maxWidth&&(s.value.width=t.maxWidth,h.value.w&&m.value&&(d.value.x=m.value.x+(r.value.width-t.maxWidth))))}function D(){if(o.value){const i=y.value;if(d.value&&s.value&&h.value&&r.value){const u=i.width-i.pr-i.deltaL-i.translateX-d.value.x,C=i.height-i.pb-i.deltaT-i.translateY-d.value.y;h.value.n&&d.value.y+i.translateY<0&&m.value&&(d.value.y=-i.translateY,s.value.height=r.value.height+m.value.y+i.translateY),h.value.w&&d.value.x+i.translateX<0&&m.value&&(d.value.x=-i.translateX,s.value.width=r.value.width+m.value.x+i.translateX),s.value.width>u&&(s.value.width=u),s.value.height>C&&(s.value.height=C)}}}function L(i){if(!c.value||!r.value||!m.value||!h.value)return;i.subtract(c.value);const u=i.x,C=i.y;h.value.n?(d.value.y=m.value.y+C,s.value.height=r.value.height-C):h.value.s&&(s.value.height=r.value.height+C),h.value.e?s.value.width=r.value.width+u:h.value.w&&(s.value.width=r.value.width-u,d.value.x=m.value.x+u),D(),W(),V()}function p(i){if(!x.value)return;const u=N.fromEvent(i);u&&L(u)}function f(){if(l.value){const{width:i,height:u,x:C,y:b}=l.value.getBoundingClientRect(),T=N.getTransformInfo(l.value);return{size:{width:i,height:u},position:{x:C-T.x,y:b-T.y}}}return null}function g(i){if(l.value){const u=f();O.value=u}c.value=void 0,r.value=null,m.value=null,s.value=null,d.value=null,h.value=null,x.value=null,document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",g)}function R(){document.addEventListener("mousemove",p),document.addEventListener("mouseup",g)}function k(i){i instanceof MouseEvent&&i.button===2||B.value&&(document.body.click(),i.stopPropagation(),i.preventDefault(),c.value=N.fromEvent(i),x.value=i.target,E(i),R())}function F(i){return l.value=i,w.value&&e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"fv-resizable-handle fv-resizable-n",type:"n",onMousedown:u=>k(u)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-e",type:"e",onMousedown:u=>k(u)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-s",type:"s",onMousedown:u=>k(u)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-w",type:"w",onMousedown:u=>k(u)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-ne",type:"ne",onMousedown:u=>k(u)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-se fv-resizable-diagonal",type:"se",onMousedown:u=>k(u)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-sw",type:"sw",onMousedown:u=>k(u)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-nw",type:"nw",onMousedown:u=>k(u)},null)])}function J(i=!0){document.body.click();const u=o.value||document.body,C=q.getCurrent(u),b=l.value;i&&b&&(M.value=f(),M.value.transform=b.style.transform),C&&b&&(s.value=C,s.value.height-=14,s.value.width-=14,b.style.height=s.value.height+"px",b.style.width=s.value.width+"px",b.style.left="7px",b.style.top="7px",b.style.transform="",O.value={size:s.value,position:{x:0,y:0}},B.value=!1,H.value=!0)}function te(){var i,u;if(document.body.click(),M.value){const C={width:M.value.size.width||0,height:M.value.size.height||0},b={x:(window.innerWidth-C.width)/2,y:(window.innerHeight-C.height)/2};(i=s.value)==null||i.set(C),(u=d.value)==null||u.set(b);const T=l.value;T.style.height=C.height+"px",T.style.width=C.width+"px",T.style.left=`${b.x}px`,T.style.top=`${b.y}px`,T.style.transform="",O.value={size:C,position:b},B.value=t.draggable,H.value=!1}}function Z(){if(l.value){const i=q.getCurrent(l.value);if(i){const{width:u,height:C}=i;l.value.style.left=`${(window.innerWidth-u)/2}px`,l.value.style.top=`${(window.innerHeight-C)/2}px`,l.value.style.transform=""}}}function Y(){const i=()=>{H.value?J(!1):Z(),document.body.click()};return window.addEventListener("resize",i),()=>{window.removeEventListener("resize",i)}}const ne=Y();return{renderResizeBar:F,boundingElement:o,resizedEventParam:O,maximize:J,restore:te,allowDrag:B,isMaximized:H,unWindowResizeHandle:ne,moveToCenter:Z}}function Me(t,n,l){const o=e.ref(),c=e.ref(t.draggable),r=e.ref(t.lockAxis),m=e.ref(),s=e.ref(),d=e.ref(!1),h=e.ref(new N(0,0)),x=e.ref(new N(0,0)),y=e.ref(new N(0,0)),O=e.ref(new N(0,0));e.watch(()=>l.value,p=>{m.value.style.cursor=p?"move":"default"});function w(p,f){if(f.tagName==="BUTTON")return!1;if(f===p)return!0;for(const g in f.children)if(Object.prototype.hasOwnProperty.call(f.children,g)&&w(p,f.children[g]))return!0;return!1}function M(){var R,k;let p=y.value.x+x.value.x,f=y.value.y+x.value.y;r.value==="x"?(p=((R=h.value)==null?void 0:R.x)||0,y.value.x=0):r.value==="y"&&(f=((k=h.value)==null?void 0:k.y)||0,y.value.y=0);const g=`translate3d(${Math.round(p)}px, ${Math.round(f)}px, 0px)`;o.value&&(o.value.style.transform=g),O.value.x=p,O.value.y=f}function B(){if(!s.value||!o.value)return null;const p=s.value.getBoundingClientRect(),f=o.value.getBoundingClientRect(),g={top:p.top<f.top,right:p.right>f.right,bottom:p.bottom>f.bottom,left:p.left<f.left};return g.top||(y.value.y-=f.top-p.top),g.bottom||(y.value.y-=f.bottom-p.bottom),g.right||(y.value.x-=f.right-p.right),g.left||(y.value.x-=f.left-p.left),M(),g}function H(p){p&&(h.value&&p.subtract(h.value),y.value.set(p),M(),B())}function j(p){d.value&&c.value&&(p.stopPropagation(),p.preventDefault(),H(N.fromEvent(p,m.value)))}function E(){var p;d.value&&(d.value=!1,x.value.add(y.value),y.value.reset(),(p=o.value)==null||p.classList.remove("ng-dragging"),n.emit("stopMove"),document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",E))}function V(){!d.value&&m.value&&(d.value=!0,m.value.classList.add("ng-dragging"),document.addEventListener("mousemove",j),document.addEventListener("mouseup",E))}function W(){if(o.value){const p=N.getTransformInfo(o.value);x.value.set(p);return}x.value.reset()}function D(p){if(!l.value||p instanceof MouseEvent&&p.button===2)return;const f=p.target||p.srcElement;m.value!==void 0&&f&&!w(f,m.value)||c.value!==!1&&(document.body.click(),p.stopPropagation(),p.preventDefault(),h.value=N.fromEvent(p,o.value),W(),V())}function L(p,f,g){if(c.value&&f){if(p)m.value=p;else if(t.dragHandle){if(t.dragHandle instanceof HTMLElement)m.value=t.dragHandle;else if(typeof t.dragHandle=="string"){const R=f.querySelector(t.dragHandle);R&&(m.value=R)}}o.value=f,s.value=g,m.value?(m.value.classList.add("ng-draggable"),m.value.addEventListener("mousedown",D)):c.value=!1}}return{registerDraggle:L,resetTranslate:W}}function se(t,n){if(t){const l=o=>{o.key.toLowerCase()===t.toLowerCase()&&n({event:o,key:t})};return document.addEventListener("keydown",l),()=>{document.removeEventListener("keydown",l)}}}function Be(t,n){const l=e.ref(t.enableEsc);let o=null;return l.value?(o=se("Escape",c=>{n.emit("esc",{event:c.event,type:"esc"})}),{remove:o}):null}function ke(t,n){const l=e.ref(t.enableEnter);let o=null;return l.value?(o=se("Enter",c=>{n.emit("enter",{event:c.event,type:"enter"})}),{remove:o}):null}const G=e.defineComponent({name:"FModal",props:Ce,emits:["update:modelValue","accept","cancel","closed","resize","esc","enter","stopMove"],setup(t,n){const l=e.ref(t.width||300),o=e.ref(t.height||200),c=e.ref(t.modelValue),r=e.ref(""),m=e.ref(t.class),s=e.ref(t.fitContent),d=e.ref(t.showHeader),h=e.ref(""),x=e.ref(t.showCloseButton),y=e.ref(t.showMaxButton),O=e.ref(!1),w=e.ref(t.dialogType),M=e.ref(t.src),B=e.ref(""),H=e.ref(t.showButtons),j=e.ref(t.title),E=e.ref(t.containment||null),V=e.ref();j.value==="错误提示"&&(j.value=_.LocaleService.getLocaleValue("messageBox.errorTitle"));const W=e.ref(!1);function D(a,v){const S=v?"accept":"cancel";Promise.resolve().then(()=>{var P;return(P=t.beforeClose)==null?void 0:P.call(t,{closeType:S})}).then(P=>{P&&(c.value=!1,n.emit("update:modelValue",!1),v!=null&&n.emit(v?"accept":"cancel"),n.emit("closed",a))})}const L=[{name:"cancel",text:_.LocaleService.getLocaleValue("messageBox.cancel")||"取消",class:"btn btn-secondary",handle:a=>{D(a,!1)}},{name:"accept",text:_.LocaleService.getLocaleValue("messageBox.ok")||"确定",class:"btn btn-primary",handle:a=>{D(a,!0)}}],p=e.ref(t.buttons&&t.buttons.length?t.buttons:L),f=e.computed(()=>!!h.value),g=e.computed(()=>!!H.value&&!!p.value),R=e.ref(),k=e.ref(),F=e.ref(t.maximized||!1),{renderResizeBar:J,maximize:te,restore:Z,boundingElement:Y,resizedEventParam:ne,allowDrag:i,unWindowResizeHandle:u,moveToCenter:C}=xe(t),{registerDraggle:b}=Me(t,n,i);function T(){return!!document.querySelectorAll(".farris-modal").length&&document.body.classList.contains("modal-open")}function Re(){const a=document.querySelectorAll(".farris-modal").length;(!a||a-1<=0)&&document.body.classList.remove("modal-open"),V.value&&V.value.classList.remove("show")}e.watch(()=>t.title,(a,v)=>{a!==v&&(j.value=a)}),e.watch(()=>t.modelValue,(a,v)=>{a!==v&&(c.value=a,c.value&&t.draggable&&e.nextTick(()=>{k.value&&!E.value&&(E.value=k.value.parentElement,Y.value=E.value,b(R.value,k.value,Y.value),C())}),a||(E.value&&(E.value=null),Re())),c.value?W.value=T():(F.value=!1,i.value=t.draggable)}),e.watch(()=>t.showHeader,(a,v)=>{a!==v&&(d.value=a)}),e.watch(()=>t.showButtons,(a,v)=>{a!==v&&(H.value=a)}),e.watch(()=>ne.value,(a,v)=>{const S=a||{},P=v||{};JSON.stringify(S)!==JSON.stringify(P)&&n.emit("resize",{newSize:a,oldSize:v,isMaximized:F.value})}),e.watch([()=>t.width,()=>t.height],(a,v)=>{(a[0]!==v[0]||a[1]!==v[1])&&(l.value=a[0]||500,o.value=a[1]||600)}),e.watch(()=>t.class,(a,v)=>{m.value=a});const Q=e.computed(()=>(c.value&&document.body.classList.add("modal-open"),c.value)),Pe=e.computed(()=>{var S;const a={modal:!0,"farris-modal":!0,fade:!0};a["f-modal-fitContent"]=!!s.value,a.show=!!Q.value;const v=(S=t.maskClass)==null?void 0:S.split(" ");return v==null||v.reduce((P,$)=>(P[$]=!0,P),a),a}),Le=e.computed(()=>{var S;const a={"modal-dialog":!0},v=(S=m.value)==null?void 0:S.split(" ");return v==null||v.reduce((P,$)=>(P[$]=!0,P),a),a}),de=()=>I.isMobilePhone()&&!t.isMessager,Fe=e.computed(()=>{const a=document.documentElement.clientWidth,v=document.documentElement.clientHeight;if(F.value)return{position:"fixed",top:"0px",left:"0px",width:"100vw",height:"100vh",margin:"0"};const S=Math.min(l.value,a),P=s.value?"auto":`${Math.min(o.value,v-10)}px`,$={position:"absolute",top:`${(window.innerHeight-parseInt(P==="auto"?"0":P))/2}px`,left:`${(window.innerWidth-S)/2}px`,width:`${S}px`,height:P};return de()&&($.top="0px",$.left="0px",$.width=`${window.innerWidth}px`,$.height=`${window.innerHeight}px`),t.mask||($.pointerEvents="auto"),$}),fe=e.ref(I.getMaxZIndex()||1050),We=e.computed(()=>{const a={display:"block",overflow:"hidden"};return t.mask||(a.pointerEvents="none",a.backgroundColor="transparent"),W.value&&(a.backgroundColor="transparent"),a.zIndex=fe.value,a}),De=e.computed(()=>({"modal-content":!0,"modal-content-has-header":d.value,"is-mobile":de()})),$e=e.computed(()=>{const a={display:d.value?"":"none"};return a["pointer-events"]=i.value?"auto":"none",a}),Ae=e.computed(()=>({"f-icon":!0,modal_maximize:!0,modalrevert:F.value})),qe=e.computed(()=>({"modal-body":!0,"f-utils-flex-column":w.value==="iframe","f-utils-fill":!0}));function Xe(){return{height:`${t.footerHeight||60}px`}}const Ye=e.computed(()=>{const a={textAlgin:B.value},v=Xe();return Object.assign(a,v)});function ae(a){if(a==null||a.stopPropagation(),F.value){F.value=!1,Z();return}te(),F.value=!0}async function Ue(a,v){a.handle&&await a.handle(v,a)&&n.emit("closed",v)}function Ge(a){a.width&&(l.value=a.width),a.height&&(o.value=a.height),a.buttons&&(p.value=a.buttons),a.title&&(j.value=a.title)}let le=null,oe=null;e.onBeforeMount(()=>{W.value=T()}),e.onMounted(()=>{k.value&&!E.value&&(E.value=k.value.parentElement,Y.value=E.value,b(R.value,k.value,Y.value)),Q.value&&document.body.classList.add("modal-open"),le=Be(t,n),oe=ke(t,n)}),e.onUnmounted(()=>{u&&u(),le&&le.remove(),oe&&oe.remove()}),n.expose({modalElementRef:k,updateModalOptions:Ge,close:D,maxDialog:ae,isMaximized:F,disableButtons:(a,v=!0)=>{p.value.forEach(S=>{S.name&&a.includes(S.name)&&(S.disabled=v)})}});function Ke(){return e.createVNode("ul",null,[O.value&&e.createVNode("li",{class:"f-btn-icon f-bare"},[e.createVNode("span",{class:"f-icon modal_minimize"},null)]),y.value&&e.createVNode("li",{onClick:ae,class:"f-btn-icon f-bare",style:"pointer-events: auto;"},[e.createVNode("span",{class:Ae.value},null)]),x.value&&e.createVNode("li",{class:"f-btn-icon f-bare",onClick:a=>D(a,!1),style:"pointer-events: auto;"},[e.createVNode("span",{class:"f-icon modal_close"},null)])])}function _e(){return e.createVNode("div",{class:"modal-footer",style:Ye.value},[p.value&&p.value.map(a=>{const v=e.ref(a.disabled);return e.createVNode("button",{name:a.name,style:a.styles,type:"button",disabled:v.value,class:a.class+(a.iconClass?" btn-icontext":""),onClick:S=>{Ue(a,S)}},[!!a.iconClass&&e.createVNode("i",{class:a.iconClass},null),a.text])})])}function pe(a){y.value&&ae()}function Je(){return e.createVNode(e.Fragment,null,[F.value&&e.createVNode("div",{class:"modal-header",style:"position: absolute;background: transparent;height: 45px;width: 100%;",onDblclick:a=>pe()},null),e.createVNode("div",{ref:R,class:"modal-header",style:$e.value,onDblclick:a=>pe()},[n.slots.headerTemplate?n.slots.headerTemplate():e.createVNode("div",{class:"modal-title"},[f.value&&e.createVNode("span",{class:h.value,style:"margin-right: 8px"},null),e.createVNode("span",{class:"modal-title-label"},[j.value])]),e.createVNode("div",{class:"actions"},[Ke()])])])}function Ze(){return n.slots.footerTemplate?n.slots.footerTemplate():g.value&&_e()}function Qe(a){if(a.stopPropagation(),t.allowClickMaskToClose){if(a.target!==V.value)return;D(a,!1)}}function et(){var a,v;return e.createVNode("div",{id:r.value,class:Le.value,style:Fe.value,ref:k},[e.createVNode("div",{class:De.value},[d.value&&Je(),e.createVNode("div",{class:qe.value},[(v=(a=n.slots).default)==null?void 0:v.call(a),w.value==="iframe"&&e.createVNode("iframe",{title:r.value,class:"f-utils-fill",width:"100%",frameborder:"0",src:M.value},null)]),Ze()]),!s.value&&k.value&&!F.value&&J(k.value)])}function tt(a){return a||"body"}return e.watchEffect(()=>{Q.value&&(fe.value=I.getMaxZIndex()||1050)}),()=>e.createVNode(e.Teleport,{to:tt(t.host)},{default:()=>[Q.value&&e.createVNode(e.Transition,{name:"fade",appear:!0},{default:()=>[e.createVNode("div",{ref:V,class:Pe.value,style:We.value,onClick:Qe},[et()])]})]})}});function re(t){if(t.content&&t.content.render)return t.content.render;if(t.render&&typeof t.render=="function")return t.render}function Ee(t){const n=document.createElement("div");n.style.display="contents";const l=e.createApp({setup(o,c){e.onUnmounted(()=>{document.body.removeChild(n)});const r=e.ref(),m=e.ref(t.class||""),s=e.ref(!!t.showButtons),d=e.ref(!!t.showHeader),h=e.ref(t.showCloseButton==null?!0:t.showCloseButton),x=e.ref(!0),y=e.ref(t.title||""),O=t.acceptCallback||(()=>{}),w=t.rejectCallback||(()=>{}),M=t.closedCallback||(V=>{}),B=t.resizeHandle||(V=>{}),H=t.stopMoveHandle||(V=>{}),j=re(t),E=V=>{x.value=!1,l.unmount(),M(V)};return e.onMounted(()=>{}),c.expose({modalRef:r}),()=>e.createVNode(G,{ref:r,class:m.value,modelValue:x.value,"onUpdate:modelValue":V=>x.value=V,title:y.value,width:t.width,height:t.height,buttons:t.buttons,"show-header":d.value,"show-buttons":s.value,"show-close-button":h.value,"show-max-button":!1,onAccept:O,onCancel:w,fitContent:t.fitContent==null?!0:t.fitContent,onClosed:E,onResize:B,onStopMove:H},{default:()=>[j&&j(l)]})}});return document.body.appendChild(n),l.use(_.LocaleService.i18n),l.mount(n),l}class ze{constructor(n){U(this,"appContext",null);U(this,"modalRef",e.ref());U(this,"activeModalIndex",e.ref(0));U(this,"modalRefs",{});U(this,"isUseEscCloseModal",e.ref(!1));this.app=n,this.appContext=n?n._context:null}getCurrentModal(){return this.modalRefs[this.activeModalIndex.value]}adaptToWindow(n,l){const{width:o,height:c}={width:window.innerWidth,height:window.innerHeight};return o<n&&(n=o-14),c<l&&(l=c-14),{width:n,height:l}}static show(n){const l=Object.assign({title:"",showButtons:!0,showHeader:!0},n);return Ee(l)}close(n){var l,o;n?(o=n.value)==null||o.close():(l=this.getCurrentModal())==null||l.close()}open(n){const l=document.createDocumentFragment();n.showMaxButton&&n.fitContent&&(n.showMaxButton=!1);const o=e.shallowRef(Object.assign({title:"",showButtons:!0,showHeader:!0,maximized:!1},n)),c=e.ref(!0),r=o.value.acceptCallback||(()=>{}),m=o.value.rejectCallback||(()=>{}),s=o.value.closedCallback||((f,g)=>{}),d=o.value.openedCallback||(f=>{}),h=o.value.resizeHandle||(f=>{}),x=n.stopMoveHandle||(f=>{});let y;const O=re(o.value),w=f=>{var R;c.value=!1;const g=(R=f==null?void 0:f.target)==null?void 0:R.classList.contains("modal_close");s(f,this.isUseEscCloseModal.value?"esc":g?"icon":"button")},M=f=>{w(f),y&&e.nextTick(()=>{if(this.modalRefs[this.activeModalIndex.value]&&delete this.modalRefs[this.activeModalIndex.value],e.render(null,l),y=null,this.modalRef.value=null,this.modalRefs){const g=Object.keys(this.modalRefs).map(R=>Number(R));g.length>0?this.activeModalIndex.value=Math.max(...g):this.activeModalIndex.value=0}this.isUseEscCloseModal.value=!1})},B=f=>{var g;this.isUseEscCloseModal.value=!0,(g=this.getCurrentModal())==null||g.close(f==null?void 0:f.event)},{width:H,height:j}=o.value,E=this.adaptToWindow(H||500,j||320);Object.assign(o.value,E);const V=e.ref(),W=()=>e.createVNode(G,e.mergeProps({ref:V,modelValue:c.value,"onUpdate:modelValue":f=>c.value=f},o.value,{isMessager:o.value.class&&o.value.class.indexOf("modal-message")>-1,onAccept:r,onCancel:m,onClosed:M,onResize:h,onEsc:B,onStopMove:x,maximized:o.value.maximized}),{default:()=>[O&&O(this.app)]});y=(f=>{const g=e.h(W,f);return g.appContext=this.appContext,e.render(g,l),g})({...o.value}),this.activeModalIndex.value++;const L=this.activeModalIndex.value;this.modalRefs[L]=V.value;const p=f=>{o.value={...o.value,...f},y&&e.render(e.cloneVNode(y,{...o}),l)};return e.nextTick(()=>{this.modalRefs[L]=V.value,this.modalRef.value=V.value,d(new Event("opened"))}),{update:p,destroy:M,modalRef:this.modalRef,close:()=>{this.modalRefs[L]&&this.modalRefs[L].close()},disableButtons:(f,g=!0)=>{this.modalRefs[L]&&this.modalRefs[L].disableButtons(f,g)}}}}const ue=Symbol("FModalService");G.install=t=>{t.component(G.name,G);const n=new ze(t);t.provide(ue,n),t.provide("FModalService",n)};function ce(t,n){function l(){const o=t.beforeOpen||t.beforeClickButton||null;let c=Promise.resolve(!0);if(o){const r=o(n.value);if(typeof r>"u")return c;typeof r=="boolean"?c=Promise.resolve(r):c=r}return c}return{judgeCanOpen:l}}function Oe(t,n,l,o,c){const r=e.ref(t.buttonBehavior),m=e.ref(t.popupOnInput),s=e.computed(()=>({"input-group-append":!0,"append-force-show":t.showButtonWhenDisabled&&(t.readonly||t.disable)})),{judgeCanOpen:d}=ce(t,c),h=e.computed(()=>t.showButtonWhenDisabled||(!t.editable||!t.readonly)&&!t.disable),x=e.inject(ue,null),y=e.ref();async function O(B){if(await d()&&h.value){const H=!!n.slots.default;if(r.value==="Modal"){const j=t.modalOptions,E=x==null?void 0:x.open({...j,render:()=>n.slots.default&&n.slots.default()});y.value=E==null?void 0:E.modalRef}r.value==="Overlay"&&we.show({host:document.body,backgroundColor:"rgba(0,0,0,.15)",render:()=>n.slots.default&&n.slots.default()}),H&&r.value==="Popup"&&o.togglePopup(!0),H&&m.value&&o.hidePopup(),n.emit("clickButton",{origin:B,value:t.modelValue})}}function w(B){n.emit("mouseEnterIcon",B)}function M(B){n.emit("mouseLeaveIcon",B)}return{buttonGroupClass:s,onClickButton:O,onMouseEnterButton:w,onMouseLeaveButton:M,modalRef:y}}const X="FarrisVue_PopoverInstancesKey";function Ve(t,n,l,o){const c=e.ref(),r=e.ref(!1),{judgeCanOpen:m}=ce(t,o);e.watch(()=>c.value,(w,M)=>{window[X]=window[X]||new WeakMap,w?window[X].set(l.value,w):window[X].delete(l.value)});function s(){if(window[X]){const w=window[X];document.querySelectorAll(".f-button-edit,.v-popover").forEach(M=>{const B=w.get(M);B&&M!==l.value&&!l.value.closest(".popover-fitcontent")&&B.hide()})}}function d(){const w=c.value;w&&w.show(l.value)}async function h(w=!1){if(!!n.slots.default){if(!w&&!r.value&&!await m())return;r.value=!r.value,r.value&&(await e.nextTick(),d())}}async function x(w=!1){if(!!n.slots.default){if(!w&&!await m())return;r.value=!0,await e.nextTick(),d()}}function y(){r.value=!1}function O(){r.value=!0,e.nextTick(()=>{d()})}return{hidePopup:y,showPopup:O,popup:x,shouldPopupContent:r,togglePopup:h,popoverRef:c,closeAllPopover:s}}function Ne(t,n,l){const{buttonGroupClass:o}=l,c=e.ref();return{renderButtonGroup:()=>e.createVNode("div",{id:t.id?`${t.id}-button-group`:void 0,class:o.value},[n.slots.buttonContent?e.createVNode("span",{class:"input-group-text input-group-append-button"},[n.slots.buttonContent()]):t.buttonContent?e.createVNode("span",{class:"input-group-text input-group-append-button",innerHTML:t.buttonContent,ref:c},null):null]),buttonHandleElement:c}}const K=e.defineComponent({name:"FButtonEdit",props:he,emits:["updateExtendInfo","clear","change","click","clickButton","blur","focus","mouseEnterIcon","mouseLeaveIcon","keyup","keydown","inputClick","input","update:modelValue"],setup(t,n){const l=e.ref(),o=e.inject("design-item-context"),c=me.useDesignerComponent(l,o),r=e.ref(t.customClass),m=e.ref(t.modelValue),s=Ve(t,n,l,m),d=Oe(t,n,l,s,m),h=e.ref(),x=e.computed(()=>({"f-cmp-inputgroup":!0,"input-group":!0,"f-state-disabled":!0,"f-state-editable":!1,"f-state-readonly":!0}));e.onMounted(()=>{l.value.componentInstance=c}),n.expose(c.value);const y=e.computed(()=>{const w={"f-button-edit":!0,"f-cmp-inputgroup":!0,"f-button-edit-nowrap":!t.wrapText};return r.value&&r.value.split(" ").reduce((M,B)=>(M[B]=!0,M),w),w}),{renderButtonGroup:O}=Ne(t,n,d);return()=>e.createVNode("div",e.mergeProps(n.attrs,{ref:l,class:y.value,id:t.id?t.id:void 0}),[e.createVNode("div",{class:x.value},[e.createVNode("input",{ref:h,class:"form-control",readonly:!0,placeholder:t.placeholder},null),O()])])}}),Se=new Map([["appearance",A.resolveAppearance]]);function Te(t,n,l){return n}const je={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/button-edit.schema.json",title:"button-edit",description:"A Farris Input Component",type:"object",properties:{id:{description:"The unique identifier for a Input Group",type:"string"},type:{description:"The type string of Input Group component",type:"string",default:"button-edit"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},binding:{description:"",type:"object",default:{}},disable:{type:"string",default:!1},editable:{description:"",type:"boolean",default:!0},enableLinkLabel:{description:"",type:"boolean",default:!1},label:{description:"",type:"string",default:""},lableWidth:{description:"",type:"number"},placeholder:{description:"",type:"string",default:""},forcePlaceholder:{description:"",type:"boolean",default:!1},readonly:{description:"",type:"boolean",default:!1},require:{description:"",type:"boolean",default:!1},tabindex:{description:"",type:"number",default:-1},textAlign:{description:"",type:"string",enum:["left","middle","right"],default:"left"},visible:{description:"",type:"boolean",default:!0},onBlur:{description:"",type:"string",default:""},onClickLinkLabel:{description:"",type:"string",default:""},autoComplete:{description:"",type:"boolean",default:!1},buttonContent:{description:"",type:"string",default:""},enableClear:{description:"",type:"boolean",default:!0},inputType:{description:"",type:"string",enum:["text","tag"],default:"text"},multiSelect:{description:"",type:"boolean",default:!1},popup:{description:"",type:"object",properties:{footerButtons:{type:"array",default:[]},height:{type:"number",default:600},dataMapping:{type:"object"},contents:{type:"array",default:[]},showMaxButton:{type:"boolean",default:!0},showCloseButton:{type:"boolean",default:!0},showFooter:{type:"boolean",default:!0},title:{type:"string",default:""},width:{type:"number",default:800}}},popupClass:{description:"",type:"string",default:""},separator:{type:"string",default:","},showButtonWhenDisabled:{description:"",type:"boolean",default:!1},wrapText:{type:"boolean",default:!1},onClear:{description:"",type:"string",default:""},onClickButton:{description:"",type:"string",default:""},modelValue:{description:"",type:"string",default:""}},required:["id","type"]},Ie={title:"buttonEdit",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"waiting for modification",enum:[]}}}},behavior:{description:"Basic Infomation",title:"行为",properties:{editable:{description:"",title:"允许编辑",type:"boolean"},readonly:{description:"",title:"只读",type:"string"},required:{description:"",title:"必填",type:"boolean"},visible:{description:"",title:"可见",type:"boolean"},placeholder:{description:"",title:"提示文本",type:"string"},tabindex:{description:"",title:"tab索引",type:"number"},textAlign:{description:"",title:"对齐方式",type:"enum",editor:{type:"combo-list",textField:"name",valueField:"value",data:[{value:"left",name:"左对齐"},{value:"center",name:"居中"},{value:"right",name:"右对齐"}]}}}}}},ee=A.createPropsResolver(ie.buttonEditProps,je,Se,Te,Ie);K.register=(t,n,l,o)=>{t["button-edit"]=ie,n["button-edit"]=ee},K.registerDesigner=(t,n,l)=>{t["button-edit"]=K,n["button-edit"]=ee};const He=I.withInstall(K);z.FButtonEditDesign=K,z.default=He,z.propsResolver=ee,Object.defineProperties(z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});