UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

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