UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

2 lines (1 loc) 37.8 kB
(function(I,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("../locale/index.umd.js"),require("../common/index.umd.js"),require("../property-panel/index.umd.js"),require("../tags/index.umd.js"),require("lodash-es"),require("../popover/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../locale/index.umd.js","../common/index.umd.js","../property-panel/index.umd.js","../tags/index.umd.js","lodash-es","../popover/index.umd.js"],t):(I=typeof globalThis<"u"?globalThis:I||self,t(I["button-edit"]={},I.Vue,I.locale,I.common,null,I.FTags,I.LodashES,I.FPopover))})(this,function(I,t,q,J,lt,fe,he,me){"use strict";var nt=Object.defineProperty;var at=(I,t,q)=>t in I?nt(I,t,{enumerable:!0,configurable:!0,writable:!0,value:q}):I[t]=q;var _=(I,t,q)=>at(I,typeof t!="symbol"?t+"":t,q);const ae={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:""}},ge=t.defineComponent({name:"FOverlay",props:ve,emits:["click"],setup(e,n){const a=t.ref(e.popupContentPosition),l=t.ref(e.host),i=t.computed(()=>({backgroundColor:e.backgroundColor||"",pointerEvents:"auto"}));function s(u){n.emit("click"),u.preventDefault(),u.stopPropagation()}t.computed(()=>{const u=l.value;if(u){const f=u.getBoundingClientRect(),{left:g,top:b,height:p}=f;return{left:g,top:b+p}}return a.value});const c=t.computed(()=>({}));return()=>t.createVNode(t.Teleport,{to:"body"},{default:()=>{var u,f;return[t.createVNode("div",{class:"overlay-container",onClick:g=>s(g),style:i.value},[t.createVNode("div",{style:c.value},[(f=(u=n.slots).default)==null?void 0:f.call(u)])])]}})}});function ye(e){if(e.content&&e.content.render)return e.content.render;if(e.render&&typeof e.render=="function")return e.render}function pe(e){const n=document.createElement("div");n.style.display="contents";let a;const l=e.onClickCallback||(()=>{}),i=()=>{l(),a&&a.unmount()};return a=t.createApp({setup(){t.onUnmounted(()=>{document.body.removeChild(n)});const s=ye(e);return()=>t.createVNode(ge,{"popup-content-position":e.popupPosition,host:e.host,onClick:i,backgroundColor:e.backgroundColor},{default:()=>[s&&s()]})}}),document.body.appendChild(n),a.mount(n),a}class be{static show(n){return pe(n)}}const we={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 R{constructor(n,a){this.x=n,this.y=a}static getTransformInfo(n){const l=window.getComputedStyle(n).getPropertyValue("transform").replace(/[^-\d,]/g,"").split(",");if(l.length>=6){const i=parseInt(l[4],10),s=parseInt(l[5],10);return{x:i,y:s}}return{x:0,y:0}}static fromEvent(n,a=null){if(this.isMouseEvent(n))return new R(n.clientX,n.clientY);if(a===null||n.changedTouches.length===1)return new R(n.changedTouches[0].clientX,n.changedTouches[0].clientY);for(let l=0;l<n.changedTouches.length;l++)if(n.changedTouches[l].target===a)return new R(n.changedTouches[l].clientX,n.changedTouches[l].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 a=new R(0,0);if(window){const l=window.getComputedStyle(n);if(l){const i=parseInt(l.getPropertyValue("left"),10),s=parseInt(l.getPropertyValue("top"),10);a.x=isNaN(i)?0:i,a.y=isNaN(s)?0:s}return a}return null}static copy(n){return new R(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 K{constructor(n,a){this.width=n,this.height=a}static getCurrent(n){const a=new K(0,0);if(window){const l=window.getComputedStyle(n);return l&&(a.width=parseInt(l.getPropertyValue("width"),10),a.height=parseInt(l.getPropertyValue("height"),10)),a}return null}static copy(n){return new K(0,0).set(n)}set(n){return this.width=n.width,this.height=n.height,this}}function xe(e,n){const a=t.ref(),l=t.ref(),i=t.ref(),s=t.ref(),c=t.ref(),u=t.ref(),f=t.ref(),g=t.ref(),b=t.ref(),p=t.ref(),B=t.ref(),x=t.ref(e.resizeable),y=t.ref(),M=t.ref(e.draggable),E=t.ref(!1);function P(){const r=l.value||document.body,m=window.getComputedStyle(r);if(!m||!a.value)return;const O=R.getTransformInfo(a.value),k={};f.value&&(k.deltaL=a.value.offsetLeft-f.value.x,k.deltaT=a.value.offsetTop-f.value.y);const L=m.getPropertyValue("position");k.width=r.clientWidth,k.height=r.clientHeight,k.pr=parseInt(m.getPropertyValue("padding-right"),10),k.pb=parseInt(m.getPropertyValue("padding-bottom"),10),k.position=m.getPropertyValue("position"),L==="static"&&(r.style.position="relative"),k.translateX=O.x,k.translateY=O.y,p.value=k}function S(r){if(a.value){s.value=K.getCurrent(a.value),c.value=R.getCurrent(a.value),u.value=s.value?K.copy(s.value):null,f.value=c.value?R.copy(c.value):null,P();const m=r.target.getAttribute("type")||"";g.value={n:!!m.match(/n/),s:!!m.match(/s/),w:!!m.match(/w/),e:!!m.match(/e/)}}}function T(){var r,m,O,k;if(a.value){const L=a.value;g.value&&((g.value.n||g.value.s)&&((r=u.value)!=null&&r.height)&&(L.style.height=u.value.height+"px"),(g.value.w||g.value.e)&&((m=u.value)!=null&&m.width)&&(L.style.width=u.value.width+"px"),f.value&&((O=f.value)!=null&&O.x&&(L.style.left=f.value.x+"px"),(k=f.value)!=null&&k.y&&(L.style.top=f.value.y+"px")))}}function F(){const r=e.minHeight?e.minHeight:1,m=e.minWidth?e.minWidth:1;u.value&&f.value&&g.value&&s.value&&(u.value.height<r&&(u.value.height=r,g.value.n&&c.value&&(f.value.y=c.value.y+(s.value.height-r))),u.value.width<m&&(u.value.width=m,g.value.w&&c.value&&(f.value.x=c.value.x+(s.value.width-m))),e.maxHeight&&u.value.height>e.maxHeight&&(u.value.height=e.maxHeight,c.value&&g.value.n&&(f.value.y=c.value.y+(s.value.height-e.maxHeight))),e.maxWidth&&u.value.width>e.maxWidth&&(u.value.width=e.maxWidth,g.value.w&&c.value&&(f.value.x=c.value.x+(s.value.width-e.maxWidth))))}function W(){if(l.value){const r=p.value;if(f.value&&u.value&&g.value&&s.value){const m=r.width-r.pr-r.deltaL-r.translateX-f.value.x,O=r.height-r.pb-r.deltaT-r.translateY-f.value.y;g.value.n&&f.value.y+r.translateY<0&&c.value&&(f.value.y=-r.translateY,u.value.height=s.value.height+c.value.y+r.translateY),g.value.w&&f.value.x+r.translateX<0&&c.value&&(f.value.x=-r.translateX,u.value.width=s.value.width+c.value.x+r.translateX),u.value.width>m&&(u.value.width=m),u.value.height>O&&(u.value.height=O)}}}function j(r){if(!i.value||!s.value||!c.value||!g.value)return;r.subtract(i.value);const m=r.x,O=r.y;g.value.n?(f.value.y=c.value.y+O,u.value.height=s.value.height-O):g.value.s&&(u.value.height=s.value.height+O),g.value.e?u.value.width=s.value.width+m:g.value.w&&(u.value.width=s.value.width-m,f.value.x=c.value.x+m),W(),F(),T()}function d(r){if(!b.value)return;const m=R.fromEvent(r);m&&j(m)}function h(){if(a.value){const{width:r,height:m,x:O,y:k}=a.value.getBoundingClientRect(),L=R.getTransformInfo(a.value);return{size:{width:r,height:m},position:{x:O-L.x,y:k-L.y}}}return null}function C(r){if(a.value){const m=h();B.value=m}i.value=void 0,s.value=null,c.value=null,u.value=null,f.value=null,g.value=null,b.value=null,document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",C)}function N(){document.addEventListener("mousemove",d),document.addEventListener("mouseup",C)}function v(r){r instanceof MouseEvent&&r.button===2||M.value&&(document.body.click(),r.stopPropagation(),r.preventDefault(),i.value=R.fromEvent(r),b.value=r.target,S(r),N())}function z(r){return a.value=r,x.value&&t.createVNode(t.Fragment,null,[t.createVNode("div",{class:"fv-resizable-handle fv-resizable-n",type:"n",onMousedown:m=>v(m)},null),t.createVNode("div",{class:"fv-resizable-handle fv-resizable-e",type:"e",onMousedown:m=>v(m)},null),t.createVNode("div",{class:"fv-resizable-handle fv-resizable-s",type:"s",onMousedown:m=>v(m)},null),t.createVNode("div",{class:"fv-resizable-handle fv-resizable-w",type:"w",onMousedown:m=>v(m)},null),t.createVNode("div",{class:"fv-resizable-handle fv-resizable-ne",type:"ne",onMousedown:m=>v(m)},null),t.createVNode("div",{class:"fv-resizable-handle fv-resizable-se fv-resizable-diagonal",type:"se",onMousedown:m=>v(m)},null),t.createVNode("div",{class:"fv-resizable-handle fv-resizable-sw",type:"sw",onMousedown:m=>v(m)},null),t.createVNode("div",{class:"fv-resizable-handle fv-resizable-nw",type:"nw",onMousedown:m=>v(m)},null)])}function G(r=!0){document.body.click();const m=l.value||document.body,O=K.getCurrent(m),k=a.value;r&&k&&(y.value=h(),y.value.transform=k.style.transform),O&&k&&(u.value=O,u.value.height-=14,u.value.width-=14,k.style.height=u.value.height+"px",k.style.width=u.value.width+"px",k.style.left="7px",k.style.top="7px",k.style.transform="",B.value={size:u.value,position:{x:0,y:0}},M.value=!1,E.value=!0)}function U(){var r,m;if(document.body.click(),y.value){const O={width:y.value.size.width||0,height:y.value.size.height||0},k={x:(window.innerWidth-O.width)/2,y:(window.innerHeight-O.height)/2};(r=u.value)==null||r.set(O),(m=f.value)==null||m.set(k);const L=a.value;L.style.height=O.height+"px",L.style.width=O.width+"px",L.style.left=`${k.x}px`,L.style.top=`${k.y}px`,L.style.transform="",B.value={size:O,position:k},M.value=e.draggable,E.value=!1}}function $(){if(a.value){const r=K.getCurrent(a.value);if(r){const{width:m,height:O}=r;a.value.style.left=`${(window.innerWidth-m)/2}px`,a.value.style.top=`${(window.innerHeight-O)/2}px`,a.value.style.transform=""}}}function V(){const r=()=>{E.value?G(!1):$(),document.body.click()};return window.addEventListener("resize",r),()=>{window.removeEventListener("resize",r)}}const D=V();return{renderResizeBar:z,boundingElement:l,resizedEventParam:B,maximize:G,restore:U,allowDrag:M,isMaximized:E,unWindowResizeHandle:D,moveToCenter:$}}function Ce(e,n,a){const l=t.ref(),i=t.ref(e.draggable),s=t.ref(e.lockAxis),c=t.ref(),u=t.ref(),f=t.ref(!1),g=t.ref(new R(0,0)),b=t.ref(new R(0,0)),p=t.ref(new R(0,0)),B=t.ref(new R(0,0));t.watch(()=>a.value,d=>{c.value.style.cursor=d?"move":"default"});function x(d,h){if(h.tagName==="BUTTON")return!1;if(h===d)return!0;for(const C in h.children)if(Object.prototype.hasOwnProperty.call(h.children,C)&&x(d,h.children[C]))return!0;return!1}function y(){var N,v;let d=p.value.x+b.value.x,h=p.value.y+b.value.y;s.value==="x"?(d=((N=g.value)==null?void 0:N.x)||0,p.value.x=0):s.value==="y"&&(h=((v=g.value)==null?void 0:v.y)||0,p.value.y=0);const C=`translate3d(${Math.round(d)}px, ${Math.round(h)}px, 0px)`;l.value&&(l.value.style.transform=C),B.value.x=d,B.value.y=h}function M(){if(!u.value||!l.value)return null;const d=u.value.getBoundingClientRect(),h=l.value.getBoundingClientRect(),C={top:d.top<h.top,right:d.right>h.right,bottom:d.bottom>h.bottom,left:d.left<h.left};return C.top||(p.value.y-=h.top-d.top),C.bottom||(p.value.y-=h.bottom-d.bottom),C.right||(p.value.x-=h.right-d.right),C.left||(p.value.x-=h.left-d.left),y(),C}function E(d){d&&(g.value&&d.subtract(g.value),p.value.set(d),y(),M())}function P(d){f.value&&i.value&&(d.stopPropagation(),d.preventDefault(),E(R.fromEvent(d,c.value)))}function S(){var d;f.value&&(f.value=!1,b.value.add(p.value),p.value.reset(),(d=l.value)==null||d.classList.remove("ng-dragging"),n.emit("stopMove"),document.removeEventListener("mousemove",P),document.removeEventListener("mouseup",S))}function T(){!f.value&&c.value&&(f.value=!0,c.value.classList.add("ng-dragging"),document.addEventListener("mousemove",P),document.addEventListener("mouseup",S))}function F(){if(l.value){const d=R.getTransformInfo(l.value);b.value.set(d);return}b.value.reset()}function W(d){if(!a.value||d instanceof MouseEvent&&d.button===2)return;const h=d.target||d.srcElement;c.value!==void 0&&h&&!x(h,c.value)||i.value!==!1&&(document.body.click(),d.stopPropagation(),d.preventDefault(),g.value=R.fromEvent(d,l.value),F(),T())}function j(d,h,C){if(i.value&&h){if(d)c.value=d;else if(e.dragHandle){if(e.dragHandle instanceof HTMLElement)c.value=e.dragHandle;else if(typeof e.dragHandle=="string"){const N=h.querySelector(e.dragHandle);N&&(c.value=N)}}l.value=h,u.value=C,c.value?(c.value.classList.add("ng-draggable"),c.value.addEventListener("mousedown",W)):i.value=!1}}return{registerDraggle:j,resetTranslate:F}}function le(e,n){if(e){const a=l=>{l.key.toLowerCase()===e.toLowerCase()&&n({event:l,key:e})};return document.addEventListener("keydown",a),()=>{document.removeEventListener("keydown",a)}}}function Be(e,n){const a=t.ref(e.enableEsc);let l=null;return a.value?(l=le("Escape",i=>{n.emit("esc",{event:i.event,type:"esc"})}),{remove:l}):null}function Me(e,n){const a=t.ref(e.enableEnter);let l=null;return a.value?(l=le("Enter",i=>{n.emit("enter",{event:i.event,type:"enter"})}),{remove:l}):null}const Z=t.defineComponent({name:"FModal",props:we,emits:["update:modelValue","accept","cancel","closed","resize","esc","enter","stopMove"],setup(e,n){const a=t.ref(e.width||300),l=t.ref(e.height||200),i=t.ref(e.modelValue),s=t.ref(""),c=t.ref(e.class),u=t.ref(e.fitContent),f=t.ref(e.showHeader),g=t.ref(""),b=t.ref(e.showCloseButton),p=t.ref(e.showMaxButton),B=t.ref(!1),x=t.ref(e.dialogType),y=t.ref(e.src),M=t.ref(""),E=t.ref(e.showButtons),P=t.ref(e.title),S=t.ref(e.containment||null),T=t.ref();P.value==="错误提示"&&(P.value=q.LocaleService.getLocaleValue("messageBox.errorTitle"));const F=t.ref(!1);function W(o,w){const H=w?"accept":"cancel";Promise.resolve().then(()=>{var A;return(A=e.beforeClose)==null?void 0:A.call(e,{closeType:H})}).then(A=>{A&&(i.value=!1,n.emit("update:modelValue",!1),w!=null&&n.emit(w?"accept":"cancel"),n.emit("closed",o))})}const j=[{name:"cancel",text:q.LocaleService.getLocaleValue("messageBox.cancel")||"取消",class:"btn btn-secondary",handle:o=>{W(o,!1)}},{name:"accept",text:q.LocaleService.getLocaleValue("messageBox.ok")||"确定",class:"btn btn-primary",handle:o=>{W(o,!0)}}],d=t.ref(e.buttons&&e.buttons.length?e.buttons:j),h=t.computed(()=>!!g.value),C=t.computed(()=>!!E.value&&!!d.value),N=t.ref(),v=t.ref(),z=t.ref(e.maximized||!1),{renderResizeBar:G,maximize:U,restore:$,boundingElement:V,resizedEventParam:D,allowDrag:r,unWindowResizeHandle:m,moveToCenter:O}=xe(e),{registerDraggle:k}=Ce(e,n,r);function L(){return!!document.querySelectorAll(".farris-modal").length&&document.body.classList.contains("modal-open")}function He(){const o=document.querySelectorAll(".farris-modal").length;(!o||o-1<=0)&&document.body.classList.remove("modal-open"),T.value&&T.value.classList.remove("show")}t.watch(()=>e.title,(o,w)=>{o!==w&&(P.value=o)}),t.watch(()=>e.modelValue,(o,w)=>{o!==w&&(i.value=o,i.value&&e.draggable&&t.nextTick(()=>{v.value&&!S.value&&(S.value=v.value.parentElement,V.value=S.value,k(N.value,v.value,V.value),O())}),o||(S.value&&(S.value=null),He())),i.value?F.value=L():(z.value=!1,r.value=e.draggable)}),t.watch(()=>e.showHeader,(o,w)=>{o!==w&&(f.value=o)}),t.watch(()=>e.showButtons,(o,w)=>{o!==w&&(E.value=o)}),t.watch(()=>D.value,(o,w)=>{const H=o||{},A=w||{};JSON.stringify(H)!==JSON.stringify(A)&&n.emit("resize",{newSize:o,oldSize:w,isMaximized:z.value})}),t.watch([()=>e.width,()=>e.height],(o,w)=>{(o[0]!==w[0]||o[1]!==w[1])&&(a.value=o[0]||500,l.value=o[1]||600)}),t.watch(()=>e.class,(o,w)=>{c.value=o});const Q=t.computed(()=>(i.value&&document.body.classList.add("modal-open"),i.value)),je=t.computed(()=>{var H;const o={modal:!0,"farris-modal":!0,fade:!0};o["f-modal-fitContent"]=!!u.value,o.show=!!Q.value;const w=(H=e.maskClass)==null?void 0:H.split(" ");return w==null||w.reduce((A,X)=>(A[X]=!0,A),o),o}),Le=t.computed(()=>{var H;const o={"modal-dialog":!0},w=(H=c.value)==null?void 0:H.split(" ");return w==null||w.reduce((A,X)=>(A[X]=!0,A),o),o}),re=()=>J.isMobilePhone()&&!e.isMessager,Fe=t.computed(()=>{const o=document.documentElement.clientWidth,w=document.documentElement.clientHeight;if(z.value)return{position:"fixed",top:"0px",left:"0px",width:"100vw",height:"100vh",margin:"0"};const H=Math.min(a.value,o),A=u.value?"auto":`${Math.min(l.value,w-10)}px`,X={position:"absolute",top:`${(window.innerHeight-parseInt(A==="auto"?"0":A))/2}px`,left:`${(window.innerWidth-H)/2}px`,width:`${H}px`,height:A};return re()&&(X.top="0px",X.left="0px",X.width=`${window.innerWidth}px`,X.height=`${window.innerHeight}px`),e.mask||(X.pointerEvents="auto"),X}),ce=t.ref(J.getMaxZIndex()||1050),We=t.computed(()=>{const o={display:"block",overflow:"hidden"};return e.mask||(o.pointerEvents="none",o.backgroundColor="transparent"),F.value&&(o.backgroundColor="transparent"),o.zIndex=ce.value,o}),De=t.computed(()=>({"modal-content":!0,"modal-content-has-header":f.value,"is-mobile":re()})),Ae=t.computed(()=>{const o={display:f.value?"":"none"};return o["pointer-events"]=r.value?"auto":"none",o}),Ue=t.computed(()=>({"f-icon":!0,modal_maximize:!0,modalrevert:z.value})),Xe=t.computed(()=>({"modal-body":!0,"f-utils-flex-column":x.value==="iframe","f-utils-fill":!0}));function qe(){return{height:`${e.footerHeight||60}px`}}const Ke=t.computed(()=>{const o={textAlgin:M.value},w=qe();return Object.assign(o,w)});function ee(o){if(o==null||o.stopPropagation(),z.value){z.value=!1,$();return}U(),z.value=!0}async function Ye(o,w){o.handle&&await o.handle(w,o)&&n.emit("closed",w)}function $e(o){o.width&&(a.value=o.width),o.height&&(l.value=o.height),o.buttons&&(d.value=o.buttons),o.title&&(P.value=o.title)}let te=null,ne=null;t.onBeforeMount(()=>{F.value=L()}),t.onMounted(()=>{v.value&&!S.value&&(S.value=v.value.parentElement,V.value=S.value,k(N.value,v.value,V.value)),Q.value&&document.body.classList.add("modal-open"),te=Be(e,n),ne=Me(e,n)}),t.onUnmounted(()=>{m&&m(),te&&te.remove(),ne&&ne.remove()}),n.expose({modalElementRef:v,updateModalOptions:$e,close:W,maxDialog:ee,isMaximized:z,disableButtons:(o,w=!0)=>{d.value.forEach(H=>{H.name&&o.includes(H.name)&&(H.disabled=w)})}});function Ge(){return t.createVNode("ul",null,[B.value&&t.createVNode("li",{class:"f-btn-icon f-bare"},[t.createVNode("span",{class:"f-icon modal_minimize"},null)]),p.value&&t.createVNode("li",{onClick:ee,class:"f-btn-icon f-bare",style:"pointer-events: auto;"},[t.createVNode("span",{class:Ue.value},null)]),b.value&&t.createVNode("li",{class:"f-btn-icon f-bare",onClick:o=>W(o,!1),style:"pointer-events: auto;"},[t.createVNode("span",{class:"f-icon modal_close"},null)])])}function _e(){return t.createVNode("div",{class:"modal-footer",style:Ke.value},[d.value&&d.value.map(o=>{const w=t.ref(o.disabled);return t.createVNode("button",{name:o.name,style:o.styles,type:"button",disabled:w.value,class:o.class+(o.iconClass?" btn-icontext":""),onClick:H=>{Ye(o,H)}},[!!o.iconClass&&t.createVNode("i",{class:o.iconClass},null),o.text])})])}function de(o){p.value&&ee()}function Je(){return t.createVNode(t.Fragment,null,[z.value&&t.createVNode("div",{class:"modal-header",style:"position: absolute;background: transparent;height: 45px;width: 100%;",onDblclick:o=>de()},null),t.createVNode("div",{ref:N,class:"modal-header",style:Ae.value,onDblclick:o=>de()},[n.slots.headerTemplate?n.slots.headerTemplate():t.createVNode("div",{class:"modal-title"},[h.value&&t.createVNode("span",{class:g.value,style:"margin-right: 8px"},null),t.createVNode("span",{class:"modal-title-label"},[P.value])]),t.createVNode("div",{class:"actions"},[Ge()])])])}function Ze(){return n.slots.footerTemplate?n.slots.footerTemplate():C.value&&_e()}function Qe(o){if(o.stopPropagation(),e.allowClickMaskToClose){if(o.target!==T.value)return;W(o,!1)}}function et(){var o,w;return t.createVNode("div",{id:s.value,class:Le.value,style:Fe.value,ref:v},[t.createVNode("div",{class:De.value},[f.value&&Je(),t.createVNode("div",{class:Xe.value},[(w=(o=n.slots).default)==null?void 0:w.call(o),x.value==="iframe"&&t.createVNode("iframe",{title:s.value,class:"f-utils-fill",width:"100%",frameborder:"0",src:y.value},null)]),Ze()]),!u.value&&v.value&&!z.value&&G(v.value)])}function tt(o){return o||"body"}return t.watchEffect(()=>{Q.value&&(ce.value=J.getMaxZIndex()||1050)}),()=>t.createVNode(t.Teleport,{to:tt(e.host)},{default:()=>[Q.value&&t.createVNode(t.Transition,{name:"fade",appear:!0},{default:()=>[t.createVNode("div",{ref:T,class:je.value,style:We.value,onClick:Qe},[et()])]})]})}});function oe(e){if(e.content&&e.content.render)return e.content.render;if(e.render&&typeof e.render=="function")return e.render}function ke(e){const n=document.createElement("div");n.style.display="contents";const a=t.createApp({setup(l,i){t.onUnmounted(()=>{document.body.removeChild(n)});const s=t.ref(),c=t.ref(e.class||""),u=t.ref(!!e.showButtons),f=t.ref(!!e.showHeader),g=t.ref(e.showCloseButton==null?!0:e.showCloseButton),b=t.ref(!0),p=t.ref(e.title||""),B=e.acceptCallback||(()=>{}),x=e.rejectCallback||(()=>{}),y=e.closedCallback||(T=>{}),M=e.resizeHandle||(T=>{}),E=e.stopMoveHandle||(T=>{}),P=oe(e),S=T=>{b.value=!1,a.unmount(),y(T)};return t.onMounted(()=>{}),i.expose({modalRef:s}),()=>t.createVNode(Z,{ref:s,class:c.value,modelValue:b.value,"onUpdate:modelValue":T=>b.value=T,title:p.value,width:e.width,height:e.height,buttons:e.buttons,"show-header":f.value,"show-buttons":u.value,"show-close-button":g.value,"show-max-button":!1,onAccept:B,onCancel:x,fitContent:e.fitContent==null?!0:e.fitContent,onClosed:S,onResize:M,onStopMove:E},{default:()=>[P&&P(a)]})}});return document.body.appendChild(n),a.use(q.LocaleService.i18n),a.mount(n),a}class Te{constructor(n){_(this,"appContext",null);_(this,"modalRef",t.ref());_(this,"activeModalIndex",t.ref(0));_(this,"modalRefs",{});_(this,"isUseEscCloseModal",t.ref(!1));this.app=n,this.appContext=n?n._context:null}getCurrentModal(){return this.modalRefs[this.activeModalIndex.value]}adaptToWindow(n,a){const{width:l,height:i}={width:window.innerWidth,height:window.innerHeight};return l<n&&(n=l-14),i<a&&(a=i-14),{width:n,height:a}}static show(n){const a=Object.assign({title:"",showButtons:!0,showHeader:!0},n);return ke(a)}close(n){var a,l;n?(l=n.value)==null||l.close():(a=this.getCurrentModal())==null||a.close()}open(n){const a=document.createDocumentFragment();n.showMaxButton&&n.fitContent&&(n.showMaxButton=!1);const l=t.shallowRef(Object.assign({title:"",showButtons:!0,showHeader:!0,maximized:!1},n)),i=t.ref(!0),s=l.value.acceptCallback||(()=>{}),c=l.value.rejectCallback||(()=>{}),u=l.value.closedCallback||((h,C)=>{}),f=l.value.openedCallback||(h=>{}),g=l.value.resizeHandle||(h=>{}),b=n.stopMoveHandle||(h=>{});let p;const B=oe(l.value),x=h=>{var N;i.value=!1;const C=(N=h==null?void 0:h.target)==null?void 0:N.classList.contains("modal_close");u(h,this.isUseEscCloseModal.value?"esc":C?"icon":"button")},y=h=>{x(h),p&&t.nextTick(()=>{if(this.modalRefs[this.activeModalIndex.value]&&delete this.modalRefs[this.activeModalIndex.value],t.render(null,a),p=null,this.modalRef.value=null,this.modalRefs){const C=Object.keys(this.modalRefs).map(N=>Number(N));C.length>0?this.activeModalIndex.value=Math.max(...C):this.activeModalIndex.value=0}this.isUseEscCloseModal.value=!1})},M=h=>{var C;this.isUseEscCloseModal.value=!0,(C=this.getCurrentModal())==null||C.close(h==null?void 0:h.event)},{width:E,height:P}=l.value,S=this.adaptToWindow(E||500,P||320);Object.assign(l.value,S);const T=t.ref(),F=()=>t.createVNode(Z,t.mergeProps({ref:T,modelValue:i.value,"onUpdate:modelValue":h=>i.value=h},l.value,{isMessager:l.value.class&&l.value.class.indexOf("modal-message")>-1,onAccept:s,onCancel:c,onClosed:y,onResize:g,onEsc:M,onStopMove:b,maximized:l.value.maximized}),{default:()=>[B&&B(this.app)]});p=(h=>{const C=t.h(F,h);return C.appContext=this.appContext,t.render(C,a),C})({...l.value}),this.activeModalIndex.value++;const j=this.activeModalIndex.value;this.modalRefs[j]=T.value;const d=h=>{l.value={...l.value,...h},p&&t.render(t.cloneVNode(p,{...l}),a)};return t.nextTick(()=>{this.modalRefs[j]=T.value,this.modalRef.value=T.value,f(new Event("opened"))}),{update:d,destroy:y,modalRef:this.modalRef,close:()=>{this.modalRefs[j]&&this.modalRefs[j].close()},disableButtons:(h,C=!0)=>{this.modalRefs[j]&&this.modalRefs[j].disableButtons(h,C)}}}}const ue=Symbol("FModalService");Z.install=e=>{e.component(Z.name,Z);const n=new Te(e);e.provide(ue,n),e.provide("FModalService",n)};function ie(e,n){function a(){const l=e.beforeOpen||e.beforeClickButton||null;let i=Promise.resolve(!0);if(l){const s=l(n.value);if(typeof s>"u")return i;typeof s=="boolean"?i=Promise.resolve(s):i=s}return i}return{judgeCanOpen:a}}function Ee(e,n,a,l,i){const s=t.ref(e.buttonBehavior),c=t.ref(e.popupOnInput),u=t.computed(()=>({"input-group-append":!0,"append-force-show":e.showButtonWhenDisabled&&(e.readonly||e.disable)})),{judgeCanOpen:f}=ie(e,i),g=t.computed(()=>e.showButtonWhenDisabled||(!e.editable||!e.readonly)&&!e.disable),b=t.inject(ue,null),p=t.ref();async function B(M){if(await f()&&g.value){const E=!!n.slots.default;if(s.value==="Modal"){const P=e.modalOptions,S=b==null?void 0:b.open({...P,render:()=>n.slots.default&&n.slots.default()});p.value=S==null?void 0:S.modalRef}s.value==="Overlay"&&be.show({host:document.body,backgroundColor:"rgba(0,0,0,.15)",render:()=>n.slots.default&&n.slots.default()}),E&&s.value==="Popup"&&l.togglePopup(!0),E&&c.value&&l.hidePopup(),n.emit("clickButton",{origin:M,value:e.modelValue})}}function x(M){n.emit("mouseEnterIcon",M)}function y(M){n.emit("mouseLeaveIcon",M)}return{buttonGroupClass:u,onClickButton:B,onMouseEnterButton:x,onMouseLeaveButton:y,modalRef:p}}function Ve(e,n,a,l,i,s){const c=t.ref(!1),u=t.computed(()=>e.enableClear&&!e.readonly&&!e.disable),{changeTextBoxValue:f,hasClearClass:g}=s;function b(y){c.value=y,g.value=y}t.watch(i,()=>{b(!!i.value)});function p(y){const M=!e.readonly&&!e.disable&&e.editable,E=!e.editable;y.stopPropagation(),(M||E)&&(f(""),i.value="",b(!c.value),n.emit("clear"))}function B(y){if(u.value){if(!a.value){b(!1);return}!e.disable&&!e.readonly&&b(!0)}}function x(y){u.value&&b(!1)}return{enableClearButton:u,showClearButton:c,onClearValue:p,onMouseEnterTextBox:B,onMouseLeaveTextBox:x}}function Oe(e,n,a,l,i){const s=t.computed(()=>e.popupOnInput),c=t.computed(()=>e.popupOnFocus),{shouldPopupContent:u,closeAllPopover:f}=i,g=t.ref(!1),b=t.computed(()=>e.enableTitle?a.value:""),p=t.computed(()=>(e.disable||e.readonly)&&!e.forcePlaceholder?"":e.placeholder),B=t.computed(()=>e.readonly||!e.editable),x=t.ref(!1),y=t.computed(()=>!e.disable&&x.value),M=t.computed(()=>({"text-left":e.textAlign==="left","text-center":e.textAlign==="center","text-right":e.textAlign==="right","form-control":!0,"f-utils-fill":!0})),E=t.computed(()=>({"input-group":!0,"f-state-disabled":e.disable,"f-state-editable":e.editable&&!e.disable&&!e.readonly,"f-state-readonly":e.readonly,"f-state-focus":y.value,"input-group--has-clear":e.enableClear&&g.value}));function P(v,z=!0){a.value=v,z&&(n.emit("change",v),n.emit("update:modelValue",v))}function S(v){u.value=!1,P(v,!0)}t.watch(()=>e.modelValue,v=>{a.value=v});function T(v){x.value=!1,n.emit("blur",v),v.stopPropagation()}function F(v){n.emit("click",v),f(),n.slots.default&&!e.disable&&!e.readonly&&e.popupOnClick&&i.togglePopup()}function W(v){!e.disable&&!e.readonly&&(x.value=!0,B.value||(n.emit("focus",v),c.value&&!u.value&&i.popup()))}function j(v){n.emit("input",v);const z=v.target.value;l.value=z,a.value!==z&&P(z,e.updateOn==="change"),s.value&&!u.value&&i.popup()}function d(v){v.target.tagName!=="INPUT"&&v.preventDefault(),v.stopPropagation()}function h(v){n.emit("keydown",v)}function C(v){v.key==="Enter"&&(s.value||c.value)&&i.hidePopup(),n.emit("keyup",v)}function N(v){const z=v.target.value;v.stopPropagation(),P(z)}return{hasFocusedTextBox:y,isTextBoxReadonly:B,textBoxClass:M,textBoxPlaceholder:p,textBoxTitle:b,inputGroupClass:E,hasClearClass:g,changeTextBoxValue:P,commitValue:S,onBlurTextBox:T,onClickTextBox:F,onFocusTextBox:W,onInput:j,onKeyDownTextBox:h,onKeyUpTextBox:C,onMouseDownTextBox:d,onTextBoxValueChange:N}}const Y="FarrisVue_PopoverInstancesKey";function Pe(e,n,a,l){const i=t.ref(),s=t.ref(!1),{judgeCanOpen:c}=ie(e,l);t.watch(()=>i.value,(x,y)=>{window[Y]=window[Y]||new WeakMap,x?window[Y].set(a.value,x):window[Y].delete(a.value)});function u(){if(window[Y]){const x=window[Y];document.querySelectorAll(".f-button-edit,.v-popover").forEach(y=>{const M=x.get(y);M&&y!==a.value&&!a.value.closest(".popover-fitcontent")&&M.hide()})}}function f(){const x=i.value;x&&x.show(a.value)}async function g(x=!1){if(!!n.slots.default){if(!x&&!s.value&&!await c())return;s.value=!s.value,s.value&&(await t.nextTick(),f())}}async function b(x=!1){if(!!n.slots.default){if(!x&&!await c())return;s.value=!0,await t.nextTick(),f()}}function p(){s.value=!1}function B(){s.value=!0,t.nextTick(()=>{f()})}return{hidePopup:p,showPopup:B,popup:b,shouldPopupContent:s,togglePopup:g,popoverRef:i,closeAllPopover:u}}function Se(e,n,a){const l=t.ref(),{isTextBoxReadonly:i,textBoxClass:s,textBoxPlaceholder:c,textBoxTitle:u,onBlurTextBox:f,onClickTextBox:g,onFocusTextBox:b,onInput:p,onKeyDownTextBox:B,onKeyUpTextBox:x,onMouseDownTextBox:y,onTextBoxValueChange:M}=a,E=t.ref(e.id),{uuid:P}=J.useGuid(),S=t.computed(()=>({}));t.onMounted(()=>{var d,h;e.selectOnCreated&&((d=l.value)==null||d.select()),e.focusOnCreated&&((h=l.value)==null||h.focus({preventScroll:!0})),E.value||(E.value="button-edit_"+P(8)),E.value=E.value+"-textbox"});const T=t.ref(!1),F=d=>{d.preventDefault(),T.value=!0},W=d=>{d.preventDefault(),T.value=!1,p(d)};function j(d){T.value||p(d)}return()=>t.createVNode("input",{id:e.id?e.id+"-textbox":void 0,ref:l,name:"input-group-value",autocomplete:e.autoComplete?"on":"off",class:s.value,style:S.value,disabled:e.disable,maxlength:e.maxLength,minlength:e.minLength,placeholder:c.value,readonly:i.value,tabindex:e.tabIndex,title:u.value,type:e.inputType,value:n.value,onBlur:f,onChange:M,onClick:g,onFocus:b,onInput:j,onKeydown:B,onKeyup:x,onMousedown:y,onCompositionend:W,onCompositionstart:F},null)}function ze(e,n,a){const l=t.ref(e.separator),i=t.computed(()=>e.readonly||e.disable),{changeTextBoxValue:s,onFocusTextBox:c,onBlurTextBox:u,onClickTextBox:f,textBoxPlaceholder:g}=a,b=t.computed(()=>n.value?n.value.split(l.value).map(y=>({name:y,selectable:!0})):[]);function p(y){s(y.map(M=>M.name).join(l.value),!0)}t.watch(()=>e.separator,y=>{l.value=y});const B=t.ref(!e.disable&&!e.readonly);t.watch([()=>e.disable,()=>e.readonly],([y,M],[E,P])=>{B.value=!y&&!M});function x(y){f(y)}return()=>t.createVNode(fe,{tabindex:e.tabIndex,onFocus:c,onBlur:u,id:`${e.id}-tag-editor`,class:"form-control",placeholder:g.value,data:b.value,showClose:!i.value,showInput:!0,disable:i.value,onChange:p,onClick:x},null)}function Ne(e,n,a,l){const{buttonGroupClass:i,onClickButton:s,onMouseEnterButton:c,onMouseLeaveButton:u}=a,{enableClearButton:f,showClearButton:g,onClearValue:b}=l,p=t.ref(),B=he.debounce(y=>{s(y)},e.buttonBehavior==="Modal"?0:200),x=()=>{n.emit("beforeClearValue")};return{renderButtonGroup:()=>t.createVNode("div",{id:e.id?`${e.id}-button-group`:void 0,class:i.value},[f.value&&t.withDirectives(t.createVNode("span",{class:"input-group-text input-group-clear",onClick:b,onMousedown:x},[t.createVNode("i",{class:"f-icon modal_close"},null)]),[[t.vShow,g.value]]),n.slots.buttonContent?t.createVNode("span",{class:"input-group-text input-group-append-button",onClick:B,onMouseenter:c,onMouseleave:u},[n.slots.buttonContent()]):e.buttonContent?t.createVNode("span",{class:"input-group-text input-group-append-button",innerHTML:e.buttonContent,ref:p,onClick:y=>B(y),onMouseenter:c,onMouseleave:u},null):null]),buttonHandleElement:p}}function Ie(e,n,a){const l=t.ref(e.popupMinWidth),{hidePopup:i,popoverRef:s}=a,c=()=>{n.emit("shown")};return()=>t.createVNode(me,{id:`${e.id}-popover`,ref:s,placement:e.placement,host:e.popupHost,"keep-width-with-reference":e.keepWidthWithReference,fitContent:!0,"right-boundary":e.popupRightBoundary,minWidth:l.value,class:e.popupClass,offsetX:e.popupOffsetX,onHidden:i,onShown:c,beforeClose:e.beforeClosePopup,limitContentBySpace:e.limitContentBySpace},{default:()=>{var u,f;return[(f=(u=n.slots).default)==null?void 0:f.call(u)]}})}const se=t.defineComponent({name:"FButtonEdit",props:ae,emits:["updateExtendInfo","clear","change","click","clickButton","blur","focus","mouseEnterIcon","mouseLeaveIcon","keyup","keydown","inputClick","input","update:modelValue","beforeClearValue","shown"],setup(e,n){const a=t.ref(),l=t.ref(e.customClass),i=t.ref(e.modelValue),s=Pe(e,n,a,i),{shouldPopupContent:c,hidePopup:u,showPopup:f,togglePopup:g}=s,b=Ee(e,n,a,s,i),p=t.ref(""),B=Oe(e,n,i,p,s),{hasFocusedTextBox:x,commitValue:y,inputGroupClass:M}=B,E=Ve(e,n,i,x,p,B),{onMouseEnterTextBox:P,onMouseLeaveTextBox:S}=E,T=t.ref(!1),F=t.computed(()=>{const V={"f-button-edit":!0,"f-cmp-inputgroup":!0,"f-button-edit-nowrap":!e.wrapText};return l.value&&l.value.split(" ").reduce((D,r)=>(D[r]=!0,D),V),V}),W=t.computed(()=>({overflow:e.wrapText?"hidden":""})),j=t.computed(()=>({}));function d(){if(!e.multiSelect||e.inputType!=="tag"||!a.value)return 0;let V=0;const D=Array.from(a.value.querySelectorAll(".farris-tag-item"));return D&&D.length&&(V=D.map(r=>r.offsetTop).filter(r=>r>20).length),V}const h=t.ref(d());t.onUpdated(()=>{h.value=d()});function C(){return e.multiSelect&&e.inputType==="tag"?()=>t.createVNode(t.Fragment,null,[ze(e,i,B)(),!!h.value&&t.createVNode("div",{class:"d-flex flex-row mr-2 more-tags","more-tags":!0},[t.createVNode("span",{class:"multi--more-text"},[t.createTextVNode("+"),h.value])])]):Se(e,i,B)}let N=C();t.watch([()=>e.multiSelect,()=>e.inputType],()=>{N=C()});const{renderButtonGroup:v,buttonHandleElement:z}=Ne(e,n,b,E),G=Ie(e,n,s),U=t.ref(c.value),$={displayText:p,commitValue:y,elementRef:a,hidePopup:u,showPopup:f,popoverRef:s.popoverRef,shouldPopupContent:c,togglePopup:g,openDialog:()=>{z.value&&e.buttonBehavior==="Modal"&&z.value.click()},getModal:()=>{var V;return e.buttonBehavior==="Modal"?(V=b.modalRef.value)==null?void 0:V.value:null},getTextbox:()=>{var V;return(V=a.value)==null?void 0:V.querySelector("input")},forceClosePopup:()=>{U.value=!1,T.value=!0,c.value=!1}};return t.onMounted(()=>{a.value.componentInstance=$,window.onresize=()=>{document.body.click()}}),t.onBeforeUnmount(()=>{var V;window.onresize=null,(V=window[Y])==null||V.delete(a.value)}),n.expose($),t.watch(()=>c.value,async(V,D)=>{if(T.value){U.value=V,T.value=!1;return}if(!V&&e.beforeClosePopup&&typeof e.beforeClosePopup=="function"){try{const r=await e.beforeClosePopup();U.value=!r,(!r||e.readonly)&&(c.value=!0)}catch(r){console.error("Error in beforeClosePopup:",r),U.value=D,c.value=D}return}U.value=V}),()=>{var V,D;return t.createVNode(t.Fragment,null,[t.createVNode("div",t.mergeProps(n.attrs,{ref:a,class:F.value,id:e.id?e.id:void 0,style:W.value}),[t.createVNode("div",{id:e.id?`${e.id}-input-group`:void 0,class:M.value,style:j.value,onMouseenter:P,onMouseleave:S},[(D=(V=n.slots).precontent)==null?void 0:D.call(V),N(),v()])]),U.value&&G()])}}}),Re=J.withInstall(se);I.FButtonEdit=se,I.buttonEditProps=ae,I.default=Re,Object.defineProperties(I,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});