@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 36.9 kB
JavaScript
(function(V,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/button/index.umd.js"),require("../../components/field-selector/index.umd.js"),require("../../components/collection-property-editor/index.umd.js/src/use-button-items.designer"),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/button/index.umd.js","../../components/field-selector/index.umd.js","../../components/collection-property-editor/index.umd.js/src/use-button-items.designer","../../components/designer-canvas/index.umd.js"],I):(V=typeof globalThis<"u"?globalThis:V||self,I(V["button-edit"]={},V.common,V.dynamicResolver,V.FButtonEdit,V.Vue,V.locale,null,null,null,null,V.designerCanvas))})(this,function(V,I,A,se,e,J,rt,ut,ct,dt,he){"use strict";var st=Object.defineProperty;var it=(V,I,A)=>I in V?st(V,I,{enumerable:!0,configurable:!0,writable:!0,value:A}):V[I]=A;var G=(V,I,A)=>it(V,typeof I!="symbol"?I+"":I,A);const ve={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},showAppendButton:{type:Boolean,default:!0},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,default:0},popupOffsetY:{type:Object,default:0},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},expandable:{type:Boolean,default:!1},expandMode:{type:String,default:"text"},expandContent:{type:String,default:""},expandDisabled:{type:Boolean,default:!1}},ye={popupContentPosition:{type:Object,default:{left:0,top:0}},host:{type:Object},backgroundColor:{type:String,default:""}},ge=e.defineComponent({name:"FOverlay",props:ye,emits:["click"],setup(t,n){const l=e.ref(t.popupContentPosition),o=e.ref(t.host),d=e.computed(()=>({backgroundColor:t.backgroundColor||"",pointerEvents:"auto"}));function i(r){n.emit("click"),r.preventDefault(),r.stopPropagation()}e.computed(()=>{const r=o.value;if(r){const f=r.getBoundingClientRect(),{left:h,top:B,height:y}=f;return{left:h,top:B+y}}return l.value});const p=e.computed(()=>({}));return()=>e.createVNode(e.Teleport,{to:"body"},{default:()=>{var r,f;return[e.createVNode("div",{class:"overlay-container",onClick:h=>i(h),style:d.value},[e.createVNode("div",{style:p.value},[(f=(r=n.slots).default)==null?void 0:f.call(r)])])]}})}});function be(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 n=document.createElement("div");n.style.display="contents";let l;const o=t.onClickCallback||(()=>{}),d=()=>{o(),l&&l.unmount()};return l=e.createApp({setup(){e.onUnmounted(()=>{document.body.removeChild(n)});const i=be(t);return()=>e.createVNode(ge,{"popup-content-position":t.popupPosition,host:t.host,onClick:d,backgroundColor:t.backgroundColor},{default:()=>[i&&i()]})}}),document.body.appendChild(n),l.mount(n),l}class Ce{static show(n){return we(n)}}const xe={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 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 d=parseInt(o[4],10),i=parseInt(o[5],10);return{x:d,y:i}}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 d=parseInt(o.getPropertyValue("left"),10),i=parseInt(o.getPropertyValue("top"),10);l.x=isNaN(d)?0:d,l.y=isNaN(i)?0:i}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 ${constructor(n,l){this.width=n,this.height=l}static getCurrent(n){const l=new $(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 $(0,0).set(n)}set(n){return this.width=n.width,this.height=n.height,this}}function Me(t,n){const l=e.ref(),o=e.ref(),d=e.ref(),i=e.ref(),p=e.ref(),r=e.ref(),f=e.ref(),h=e.ref(),B=e.ref(),y=e.ref(),z=e.ref(),w=e.ref(t.resizeable),x=e.ref(),M=e.ref(t.draggable),j=e.ref(!1);function P(){const u=o.value||document.body,c=window.getComputedStyle(u);if(!c||!l.value)return;const C=N.getTransformInfo(l.value),b={};f.value&&(b.deltaL=l.value.offsetLeft-f.value.x,b.deltaT=l.value.offsetTop-f.value.y);const T=c.getPropertyValue("position");b.width=u.clientWidth,b.height=u.clientHeight,b.pr=parseInt(c.getPropertyValue("padding-right"),10),b.pb=parseInt(c.getPropertyValue("padding-bottom"),10),b.position=c.getPropertyValue("position"),T==="static"&&(u.style.position="relative"),b.translateX=C.x,b.translateY=C.y,y.value=b}function k(u){if(l.value){i.value=$.getCurrent(l.value),p.value=N.getCurrent(l.value),r.value=i.value?$.copy(i.value):null,f.value=p.value?N.copy(p.value):null,P();const c=u.target.getAttribute("type")||"";h.value={n:!!c.match(/n/),s:!!c.match(/s/),w:!!c.match(/w/),e:!!c.match(/e/)}}}function S(){var u,c,C,b;if(l.value){const T=l.value;h.value&&((h.value.n||h.value.s)&&((u=r.value)!=null&&u.height)&&(T.style.height=r.value.height+"px"),(h.value.w||h.value.e)&&((c=r.value)!=null&&c.width)&&(T.style.width=r.value.width+"px"),f.value&&((C=f.value)!=null&&C.x&&(T.style.left=f.value.x+"px"),(b=f.value)!=null&&b.y&&(T.style.top=f.value.y+"px")))}}function H(){const u=t.minHeight?t.minHeight:1,c=t.minWidth?t.minWidth:1;r.value&&f.value&&h.value&&i.value&&(r.value.height<u&&(r.value.height=u,h.value.n&&p.value&&(f.value.y=p.value.y+(i.value.height-u))),r.value.width<c&&(r.value.width=c,h.value.w&&p.value&&(f.value.x=p.value.x+(i.value.width-c))),t.maxHeight&&r.value.height>t.maxHeight&&(r.value.height=t.maxHeight,p.value&&h.value.n&&(f.value.y=p.value.y+(i.value.height-t.maxHeight))),t.maxWidth&&r.value.width>t.maxWidth&&(r.value.width=t.maxWidth,h.value.w&&p.value&&(f.value.x=p.value.x+(i.value.width-t.maxWidth))))}function q(){if(o.value){const u=y.value;if(f.value&&r.value&&h.value&&i.value){const c=u.width-u.pr-u.deltaL-u.translateX-f.value.x,C=u.height-u.pb-u.deltaT-u.translateY-f.value.y;h.value.n&&f.value.y+u.translateY<0&&p.value&&(f.value.y=-u.translateY,r.value.height=i.value.height+p.value.y+u.translateY),h.value.w&&f.value.x+u.translateX<0&&p.value&&(f.value.x=-u.translateX,r.value.width=i.value.width+p.value.x+u.translateX),r.value.width>c&&(r.value.width=c),r.value.height>C&&(r.value.height=C)}}}function F(u){if(!d.value||!i.value||!p.value||!h.value)return;u.subtract(d.value);const c=u.x,C=u.y;h.value.n?(f.value.y=p.value.y+C,r.value.height=i.value.height-C):h.value.s&&(r.value.height=i.value.height+C),h.value.e?r.value.width=i.value.width+c:h.value.w&&(r.value.width=i.value.width-c,f.value.x=p.value.x+c),q(),H(),S()}function m(u){if(!B.value)return;const c=N.fromEvent(u);c&&F(c)}function s(){if(l.value){const{width:u,height:c,x:C,y:b}=l.value.getBoundingClientRect(),T=N.getTransformInfo(l.value);return{size:{width:u,height:c},position:{x:C-T.x,y:b-T.y}}}return null}function g(u){if(l.value){const c=s();z.value=c}d.value=void 0,i.value=null,p.value=null,r.value=null,f.value=null,h.value=null,B.value=null,document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",g)}function R(){document.addEventListener("mousemove",m),document.addEventListener("mouseup",g)}function L(u){u instanceof MouseEvent&&u.button===2||M.value&&(document.body.click(),u.stopPropagation(),u.preventDefault(),d.value=N.fromEvent(u),B.value=u.target,k(u),R())}function D(u){return l.value=u,w.value&&e.createVNode(e.Fragment,null,[e.createVNode("div",{class:"fv-resizable-handle fv-resizable-n",type:"n",onMousedown:c=>L(c)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-e",type:"e",onMousedown:c=>L(c)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-s",type:"s",onMousedown:c=>L(c)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-w",type:"w",onMousedown:c=>L(c)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-ne",type:"ne",onMousedown:c=>L(c)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-se fv-resizable-diagonal",type:"se",onMousedown:c=>L(c)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-sw",type:"sw",onMousedown:c=>L(c)},null),e.createVNode("div",{class:"fv-resizable-handle fv-resizable-nw",type:"nw",onMousedown:c=>L(c)},null)])}function W(u=!0){document.body.click();const c=o.value||document.body,C=$.getCurrent(c),b=l.value;u&&b&&(x.value=s(),x.value.transform=b.style.transform),C&&b&&(r.value=C,r.value.height-=14,r.value.width-=14,b.style.height=r.value.height+"px",b.style.width=r.value.width+"px",b.style.left="7px",b.style.top="7px",b.style.transform="",z.value={size:r.value,position:{x:0,y:0}},M.value=!1,j.value=!0)}function te(){var u,c;if(document.body.click(),x.value){const C={width:x.value.size.width||0,height:x.value.size.height||0},b={x:(window.innerWidth-C.width)/2,y:(window.innerHeight-C.height)/2};(u=r.value)==null||u.set(C),(c=f.value)==null||c.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="",z.value={size:C,position:b},M.value=t.draggable,j.value=!1}}function Z(){if(l.value){const u=$.getCurrent(l.value);if(u){const{width:c,height:C}=u;l.value.style.left=`${(window.innerWidth-c)/2}px`,l.value.style.top=`${(window.innerHeight-C)/2}px`,l.value.style.transform=""}}}function ne(){const u=()=>{j.value?W(!1):Z(),document.body.click()};return window.addEventListener("resize",u),()=>{window.removeEventListener("resize",u)}}const U=ne();return{renderResizeBar:D,boundingElement:o,resizedEventParam:z,maximize:W,restore:te,allowDrag:M,isMaximized:j,unWindowResizeHandle:U,moveToCenter:Z}}function Be(t,n,l){const o=e.ref(),d=e.ref(t.draggable),i=e.ref(t.lockAxis),p=e.ref(),r=e.ref(),f=e.ref(!1),h=e.ref(new N(0,0)),B=e.ref(new N(0,0)),y=e.ref(new N(0,0)),z=e.ref(new N(0,0));e.watch(()=>l.value,m=>{p.value.style.cursor=m?"move":"default"});function w(m,s){if(s.tagName==="BUTTON")return!1;if(s===m)return!0;for(const g in s.children)if(Object.prototype.hasOwnProperty.call(s.children,g)&&w(m,s.children[g]))return!0;return!1}function x(){var R,L;let m=y.value.x+B.value.x,s=y.value.y+B.value.y;i.value==="x"?(m=((R=h.value)==null?void 0:R.x)||0,y.value.x=0):i.value==="y"&&(s=((L=h.value)==null?void 0:L.y)||0,y.value.y=0);const g=`translate3d(${Math.round(m)}px, ${Math.round(s)}px, 0px)`;o.value&&(o.value.style.transform=g),z.value.x=m,z.value.y=s}function M(){if(!r.value||!o.value)return null;const m=r.value.getBoundingClientRect(),s=o.value.getBoundingClientRect(),g={top:m.top<s.top,right:m.right>s.right,bottom:m.bottom>s.bottom,left:m.left<s.left};return g.top||(y.value.y-=s.top-m.top),g.bottom||(y.value.y-=s.bottom-m.bottom),g.right||(y.value.x-=s.right-m.right),g.left||(y.value.x-=s.left-m.left),x(),g}function j(m){m&&(h.value&&m.subtract(h.value),y.value.set(m),x(),M())}function P(m){f.value&&d.value&&(m.stopPropagation(),m.preventDefault(),j(N.fromEvent(m,p.value)))}function k(){var m;if(f.value){if(f.value=!1,B.value.add(y.value),y.value.reset(),(m=o.value)==null||m.classList.remove("ng-dragging"),!t.useTransform&&o.value){const{left:s,top:g}=o.value.getBoundingClientRect();o.value.style.left=Math.ceil(s)+"px",o.value.style.top=Math.ceil(g)+"px",o.value.style.transform="none"}n.emit("stopMove"),document.removeEventListener("mousemove",P),document.removeEventListener("mouseup",k)}}function S(){!f.value&&p.value&&(f.value=!0,p.value.classList.add("ng-dragging"),document.addEventListener("mousemove",P),document.addEventListener("mouseup",k))}function H(){if(o.value){const m=N.getTransformInfo(o.value);B.value.set(m);return}B.value.reset()}function q(m){if(!l.value||m instanceof MouseEvent&&m.button===2)return;const s=m.target||m.srcElement;p.value!==void 0&&s&&!w(s,p.value)||d.value!==!1&&(document.body.click(),m.stopPropagation(),m.preventDefault(),h.value=N.fromEvent(m,o.value),H(),S())}function F(m,s,g){if(d.value&&s){if(m)p.value=m;else if(t.dragHandle){if(t.dragHandle instanceof HTMLElement)p.value=t.dragHandle;else if(typeof t.dragHandle=="string"){const R=s.querySelector(t.dragHandle);R&&(p.value=R)}}o.value=s,r.value=g,p.value?(p.value.classList.add("ng-draggable"),p.value.addEventListener("mousedown",q)):d.value=!1}}return{registerDraggle:F,resetTranslate:H}}function ie(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 ke(t,n){const l=e.ref(t.enableEsc);let o=null;return l.value?(o=ie("Escape",d=>{n.emit("esc",{event:d.event,type:"esc"})}),{remove:o}):null}function Ee(t,n){const l=e.ref(t.enableEnter);let o=null;return l.value?(o=ie("Enter",d=>{n.emit("enter",{event:d.event,type:"enter"})}),{remove:o}):null}const K=e.defineComponent({name:"FModal",props:xe,emits:["update:modelValue","accept","cancel","closed","resize","esc","enter","stopMove","buttonClick"],setup(t,n){const l=e.ref(t.width||300),o=e.ref(t.height||200),d=e.ref(t.modelValue),i=e.ref(""),p=e.ref(t.class),r=e.ref(t.fitContent),f=e.ref(t.showHeader),h=e.ref(""),B=e.ref(t.showCloseButton),y=e.ref(t.showMaxButton),z=e.ref(!1),w=e.ref(t.dialogType),x=e.ref(t.src),M=e.ref(""),j=e.ref(t.showButtons),P=e.ref(t.title),k=e.ref(t.containment||null),S=e.ref();P.value==="错误提示"&&(P.value=J.LocaleService.getLocaleValue("messageBox.errorTitle"));const H=e.ref(!1);function q(){const a=document.querySelectorAll(".farris-modal").length;(!a||a-1<=0)&&S.value===document.querySelectorAll(".farris-modal")[0]&&document.body.classList.remove("modal-open"),S.value&&S.value.classList.remove("show")}function F(a,v){const E=v?"accept":"cancel";Promise.resolve().then(()=>{var O;return(O=t.beforeClose)==null?void 0:O.call(t,{closeType:E})}).then(O=>{O&&(d.value=!1,n.emit("update:modelValue",!1),v!=null&&n.emit(v?"accept":"cancel"),n.emit("closed",a),q())})}const m=[{name:"cancel",text:J.LocaleService.getLocaleValue("messageBox.cancel")||"取消",class:"btn btn-secondary",handle:a=>{F(a,!1)}},{name:"accept",text:J.LocaleService.getLocaleValue("messageBox.ok")||"确定",class:"btn btn-primary",handle:a=>{F(a,!0)}}],s=e.ref(t.buttons&&t.buttons.length?t.buttons:m),g=e.computed(()=>!!h.value),R=e.computed(()=>!!j.value&&!!s.value),L=e.ref(),D=e.ref(),W=e.ref(t.maximized||!1),{renderResizeBar:te,maximize:Z,restore:ne,boundingElement:U,resizedEventParam:u,allowDrag:c,unWindowResizeHandle:C,moveToCenter:b}=Me(t),{registerDraggle:T}=Be(t,n,c);function de(){return!!document.querySelectorAll(".farris-modal").length&&document.body.classList.contains("modal-open")}e.watch(()=>t.title,(a,v)=>{a!==v&&(P.value=a)}),e.watch(()=>t.modelValue,(a,v)=>{a!==v&&(d.value=a,d.value&&t.draggable&&e.nextTick(()=>{D.value&&!k.value&&(k.value=D.value.parentElement,U.value=k.value,T(L.value,D.value,U.value),b())}),a||(k.value&&(k.value=null),q())),d.value?H.value=de():(W.value=!1,c.value=t.draggable)}),e.watch(()=>t.showHeader,(a,v)=>{a!==v&&(f.value=a)}),e.watch(()=>t.showButtons,(a,v)=>{a!==v&&(j.value=a)}),e.watch(()=>u.value,(a,v)=>{const E=a||{},O=v||{};JSON.stringify(E)!==JSON.stringify(O)&&n.emit("resize",{newSize:a,oldSize:v,isMaximized:W.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)=>{p.value=a});const Q=e.computed(()=>(d.value&&document.body.classList.add("modal-open"),d.value)),Pe=e.computed(()=>{var E;const a={modal:!0,"farris-modal":!0,fade:!0,"fe-cmp-page-modal":!!t.showFloatingClose};a["f-modal-fitContent"]=!!r.value,a.show=!!Q.value;const v=(E=t.maskClass)==null?void 0:E.split(" ");return v==null||v.reduce((O,Y)=>(O[Y]=!0,O),a),a}),Le=e.computed(()=>{var E;const a={"modal-dialog":!0},v=(E=p.value)==null?void 0:E.split(" ");return v==null||v.reduce((O,Y)=>(O[Y]=!0,O),a),a}),Fe=()=>I.isMobilePhone()&&!t.isMessager||!!t.fullscreen,We=e.computed(()=>{const a=document.documentElement.clientWidth,v=document.documentElement.clientHeight;if(W.value)return{position:"fixed",top:"0px",left:"0px",width:"100vw",height:"100vh",margin:"0"};const E=Math.min(l.value,a),O=t.position==="right"?"100%":r.value?"auto":`${Math.min(o.value,v-10)}px`,Y=`${(window.innerHeight-(O==="100%"||O==="auto"?0:parseInt(O)))/2}px`,ot=t.position==="right"?`${window.innerWidth-E}px`:`${(window.innerWidth-E)/2}px`,me={position:"absolute",top:Y,left:ot,width:I.isMobilePhone()?"auto":`${E}px`,height:O};return t.mask||(me.pointerEvents="auto"),me}),fe=e.ref(I.getMaxZIndex()||1050),De=e.computed(()=>{const a={display:"block",overflow:"hidden"};return t.mask||(a.pointerEvents="none",a.backgroundColor="transparent"),H.value&&(a.backgroundColor="transparent"),a.zIndex=fe.value,a}),Ae=e.computed(()=>({"modal-content":!0,"modal-content-has-header":f.value,"is-mobile":Fe()})),$e=e.computed(()=>{const a={display:f.value?"":"none"};return a["pointer-events"]=c.value?"auto":"none",a}),qe=e.computed(()=>({"f-icon":!0,modal_maximize:!0,modalrevert:W.value})),Ye=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 Ue=e.computed(()=>{const a={textAlgin:M.value},v=Xe();return Object.assign(a,v)});function ae(a){if(a==null||a.stopPropagation(),W.value){W.value=!1,ne();return}Z(),W.value=!0}async function Ge(a,v){a.handle?await a.handle(v,a)&&n.emit("closed",v):n.emit("buttonClick",{button:a,$event:v})}function Ke(a){a.width&&(l.value=a.width),a.height&&(o.value=a.height),a.buttons&&(s.value=a.buttons),a.title&&(P.value=a.title)}let le=null,oe=null;e.onBeforeMount(()=>{H.value=de()}),e.onMounted(()=>{D.value&&!k.value&&(k.value=D.value.parentElement,U.value=k.value,T(L.value,D.value,U.value)),Q.value&&document.body.classList.add("modal-open"),le=ke(t,n),oe=Ee(t,n)}),e.onUnmounted(()=>{C&&C(),le&&le.remove(),oe&&oe.remove()}),n.expose({modalElementRef:D,updateModalOptions:Ke,close:F,maxDialog:ae,isMaximized:W,disableButtons:(a,v=!0)=>{s.value.forEach(E=>{E.name&&a.includes(E.name)&&(E.disabled=v)})}});function _e(){return e.createVNode("div",{class:"action-wrapper",onClick:a=>F(a,!1)},[e.createVNode("span",{class:"close-icon"},[e.createVNode("i",{class:"f-icon f-icon-close"},null)])])}function Je(){return e.createVNode("ul",null,[z.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:qe.value},null)]),B.value&&e.createVNode("li",{class:"f-btn-icon f-bare",onClick:a=>F(a,!1),style:"pointer-events: auto;"},[e.createVNode("span",{class:"f-icon modal_close"},null)])])}const Ze=a=>{a.preventDefault();const v=a.currentTarget,E=a.deltaY*.5;v.scrollLeft+=E};function Qe(){return e.createVNode("div",{class:"modal-footer",style:Ue.value},[s.value&&e.createVNode("div",{class:"buttons",onWheel:Ze},[s.value.map(a=>{var O;const v=e.ref(a.disabled),E=a.class||((O=a.appearance)==null?void 0:O.class);return e.createVNode("button",{name:a.name,style:a.styles,type:"button",disabled:v.value,class:E+(a.iconClass?" btn-icontext":"")+(a.visible===!1?"d-none":""),onClick:Y=>{Ge(a,Y)}},[!!a.iconClass&&e.createVNode("i",{class:a.iconClass},null),a.text])})])])}function pe(a){y.value&&ae()}function et(){return e.createVNode(e.Fragment,null,[W.value&&e.createVNode("div",{class:"modal-header",style:"position: absolute;background: transparent;height: 45px;width: 100%;",onDblclick:a=>pe()},null),e.createVNode("div",{ref:L,class:"modal-header",style:$e.value,onDblclick:a=>pe()},[n.slots.headerTemplate?n.slots.headerTemplate():e.createVNode("div",{class:"modal-title"},[g.value&&e.createVNode("span",{class:h.value,style:"margin-right: 8px"},null),e.createVNode("span",{class:"modal-title-label"},[P.value])]),e.createVNode("div",{class:"actions"},[Je()])])])}function tt(){return n.slots.footerTemplate?n.slots.footerTemplate():R.value&&Qe()}function nt(a){if(a.stopPropagation(),t.allowClickMaskToClose){if(a.target!==S.value)return;F(a,!1)}}function at(){var a,v;return e.createVNode("div",{id:i.value,class:Le.value,style:We.value,ref:D},[t.showFloatingClose&&_e(),e.createVNode("div",{class:Ae.value},[f.value&&et(),e.createVNode("div",{class:Ye.value},[(v=(a=n.slots).default)==null?void 0:v.call(a),w.value==="iframe"&&e.createVNode("iframe",{title:i.value,class:"f-utils-fill",width:"100%",frameborder:"0",src:x.value},null)]),tt()]),!r.value&&D.value&&!W.value&&te(D.value)])}function lt(a){return a||"body"}return e.watchEffect(()=>{Q.value&&(fe.value=I.getMaxZIndex()||1050)}),()=>e.createVNode(e.Teleport,{to:lt(t.host)},{default:()=>[Q.value&&e.createVNode(e.Transition,{name:"fade",appear:!0},{default:()=>[e.createVNode("div",{ref:S,class:Pe.value,style:De.value,onClick:nt},[at()])]})]})}});function re(t){if(t.content&&t.content.render)return t.content.render;if(t.render&&typeof t.render=="function")return t.render}function Ve(t){const n=document.createElement("div");n.style.display="contents";const l=e.createApp({setup(o,d){e.onUnmounted(()=>{document.body.removeChild(n)});const i=e.ref(),p=e.ref(t.class||""),r=e.ref(!!t.showButtons),f=e.ref(!!t.showHeader),h=e.ref(t.showCloseButton==null?!0:t.showCloseButton),B=e.ref(!!t.showFloatingClose),y=e.ref(!0),z=e.ref(t.title||""),w=t.acceptCallback||(()=>{}),x=t.rejectCallback||(()=>{}),M=t.closedCallback||(H=>{}),j=t.resizeHandle||(H=>{}),P=t.stopMoveHandle||(H=>{}),k=re(t),S=H=>{y.value=!1,l.unmount(),M(H)};return e.onMounted(()=>{}),d.expose({modalRef:i}),()=>e.createVNode(K,{ref:i,class:p.value,modelValue:y.value,"onUpdate:modelValue":H=>y.value=H,title:z.value,width:t.width,height:t.height,buttons:t.buttons,"show-header":f.value,"show-buttons":r.value,"show-close-button":h.value,"show-max-button":!1,showFloatingClose:B.value,onAccept:w,onCancel:x,fitContent:t.fitContent==null?!0:t.fitContent,onClosed:S,onResize:j,onStopMove:P},{default:()=>[k&&k(l)]})}});return document.body.appendChild(n),l.use(J.LocaleService.i18n),l.mount(n),l}class ze{constructor(n){G(this,"appContext",null);G(this,"modalRef",e.ref());G(this,"activeModalIndex",e.ref(0));G(this,"modalRefs",{});G(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:d}={width:window.innerWidth,height:window.innerHeight};return o<n&&(n=o-14),d<l&&(l=d-14),{width:n,height:l}}static show(n){const l=Object.assign({title:"",showButtons:!0,showHeader:!0},n);return Ve(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)),d=e.ref(!0),i=o.value.acceptCallback||(()=>{}),p=o.value.rejectCallback||(()=>{}),r=o.value.closedCallback||((s,g)=>{}),f=o.value.openedCallback||(s=>{}),h=o.value.resizeHandle||(s=>{}),B=n.stopMoveHandle||(s=>{});let y;const z=re(o.value),w=s=>{var R;d.value=!1;const g=(R=s==null?void 0:s.target)==null?void 0:R.classList.contains("modal_close");r(s,this.isUseEscCloseModal.value?"esc":g?"icon":"button")},x=s=>{w(s),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.modalRefs[this.activeModalIndex.value]&&(this.modalRef.value=this.modalRefs[this.activeModalIndex.value])}this.isUseEscCloseModal.value=!1})},M=s=>{var g;this.isUseEscCloseModal.value=!0,(g=this.getCurrentModal())==null||g.close(s==null?void 0:s.event)},{width:j,height:P}=o.value,k=this.adaptToWindow(j||500,P||320);Object.assign(o.value,k);const S=e.ref(),H=()=>e.createVNode(K,e.mergeProps({ref:S,modelValue:d.value,"onUpdate:modelValue":s=>d.value=s},o.value,{isMessager:o.value.class&&o.value.class.indexOf("modal-message")>-1,onAccept:i,onCancel:p,onClosed:x,onResize:h,onEsc:M,onStopMove:B,maximized:o.value.maximized}),{default:()=>[z&&z(this.app)]});y=(s=>{const g=e.h(H,s);return g.appContext=this.appContext,e.render(g,l),g})({...o.value}),this.activeModalIndex.value++;const F=this.activeModalIndex.value;this.modalRefs[F]=S.value;const m=s=>{o.value={...o.value,...s},y&&e.render(e.cloneVNode(y,{...o}),l)};return e.nextTick(()=>{this.modalRefs[F]=S.value,this.modalRef.value=S.value,f(new Event("opened"))}),{update:m,destroy:x,modalRef:S,close:()=>{var s;(s=S.value)==null||s.close()},disableButtons:(s,g=!0)=>{var R;(R=S.value)==null||R.disableButtons(s,g)}}}}const ue=Symbol("FModalService");K.install=t=>{t.component(K.name,K);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 d=Promise.resolve(!0);if(o){const i=o(n.value);if(typeof i>"u")return d;typeof i=="boolean"?d=Promise.resolve(i):d=i}return d}return{judgeCanOpen:l}}function Oe(t,n,l,o,d){const i=e.ref(t.buttonBehavior),p=e.ref(t.popupOnInput),r=e.computed(()=>({"input-group-append":!0,"append-force-show":t.showButtonWhenDisabled&&(t.readonly||t.disable)})),{judgeCanOpen:f}=ce(t,d),h=e.computed(()=>t.showButtonWhenDisabled||(!t.editable||!t.readonly)&&!t.disable),B=e.inject(ue,null),y=e.ref();async function z(M){if(await f()&&h.value){const j=!!n.slots.default;if(i.value==="Modal"){const P=t.modalOptions,k=B==null?void 0:B.open({...P,render:()=>n.slots.default&&n.slots.default()});y.value=k==null?void 0:k.modalRef}i.value==="Overlay"&&Ce.show({host:document.body,backgroundColor:"rgba(0,0,0,.15)",render:()=>n.slots.default&&n.slots.default()}),j&&i.value==="Popup"&&o.togglePopup(!0),j&&p.value&&o.hidePopup(),n.emit("clickButton",{origin:M,value:t.modelValue})}}function w(M){n.emit("mouseEnterIcon",M)}function x(M){n.emit("mouseLeaveIcon",M)}return{buttonGroupClass:r,onClickButton:z,onMouseEnterButton:w,onMouseLeaveButton:x,modalRef:y}}const X="FarrisVue_PopoverInstancesKey";function Ne(t,n,l,o){const d=e.ref(),i=e.ref(!1),{judgeCanOpen:p}=ce(t,o);e.watch(()=>d.value,(w,x)=>{window[X]=window[X]||new WeakMap,w?window[X].set(l.value,w):window[X].delete(l.value)});function r(){if(window[X]){const w=window[X];document.querySelectorAll(".f-button-edit,.v-popover").forEach(x=>{const M=w.get(x);M&&x!==l.value&&!l.value.closest(".popover-fitcontent")&&M.hide()})}}function f(){const w=d.value;w&&(w.show?w.show(l.value):w.open&&w.open(l.value))}async function h(w=!1){if(!!n.slots.default){if(!w&&!i.value&&!await p())return;i.value=!i.value,i.value&&(await e.nextTick(),f())}}async function B(w=!1){if(!!n.slots.default){if(!w&&!await p())return;i.value=!0,await e.nextTick(),f()}}function y(){i.value=!1}function z(){i.value=!0,e.nextTick(()=>{f()})}return{hidePopup:y,showPopup:z,popup:B,shouldPopupContent:i,togglePopup:h,popoverRef:d,closeAllPopover:r}}function Se(t,n,l){const{buttonGroupClass:o}=l,d=e.ref(),i=e.computed(()=>({"input-group-append input-append-wrapper":!0,"input-append-button":t.expandMode==="button","input-append-text":t.expandMode==="text"}));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:d},null):null,t.expandable&&t.expandContent&&e.createVNode("div",{class:i.value},[e.createVNode("div",{class:"input-group-text",innerHTML:t.expandContent},null)])]),buttonHandleElement:d}}const _=e.defineComponent({name:"FButtonEdit",props:ve,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"),d=he.useDesignerComponent(l,o),i=e.ref(t.customClass),p=e.ref(t.modelValue),r=Ne(t,n,l,p),f=Oe(t,n,l,r,p),h=e.ref(),B=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=d}),n.expose(d.value);const y=e.computed(()=>{const x={"f-button-edit":!0,"f-cmp-inputgroup":!0,"f-button-edit-nowrap":!t.wrapText};return i.value&&i.value.split(" ").reduce((M,j)=>(M[j]=!0,M),x),x}),z=e.computed(()=>({"text-left":t.textAlign==="left","text-center":t.textAlign==="center","text-right":t.textAlign==="right","form-control":!0,"f-utils-fill":!0})),{renderButtonGroup:w}=Se(t,n,f);return()=>e.createVNode("div",e.mergeProps(n.attrs,{ref:l,class:y.value,id:t.id?t.id:void 0,style:"pointer-events: none;"}),[e.createVNode("div",{class:B.value},[e.createVNode("input",{ref:h,class:z.value,readonly:!0,placeholder:t.placeholder},null),w()])])}}),je=new Map([["appearance",A.resolveAppearance]]);function Te(t,n,l){return n}const Ie={$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},showAppendButton:{description:"",type:"boolean",default:!0},wrapText:{type:"boolean",default:!1},onClear:{description:"",type:"string",default:""},onClickButton:{description:"",type:"string",default:""},modelValue:{description:"",type:"string",default:""}},required:["id","type"]},He={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(se.buttonEditProps,Ie,je,Te,He);_.register=(t,n,l,o)=>{t["button-edit"]=se,n["button-edit"]=ee},_.registerDesigner=(t,n,l)=>{t["button-edit"]=_,n["button-edit"]=ee};const Re=I.withInstall(_);V.FButtonEditDesign=_,V.default=Re,V.propsResolver=ee,Object.defineProperties(V,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});