@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
58 lines • 181 kB
JavaScript
(function(z,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue"),require("../dynamic-resolver/index.umd.js"),require("../common/index.umd.js"),require("../designer-canvas/index.umd.js"),require("../button-edit/index.umd.js"),require("../locale/index.umd.js"),require("../list-view/index.umd.js"),require("lodash-es"),require("bignumber.js"),require("../../designer/button-edit/index.umd.js"),require("../property-panel/index.umd.js"),require("../tree-view/index.umd.js"),require("../button/index.umd.js"),require("../field-selector/index.umd.js"),require("../collection-property-editor/index.umd.js/src/use-button-items.designer"),require("../tags/index.umd.js"),require("../common/index.umd.js/text-box/use-input-expand"),require("../popover/index.umd.js"),require("../drawer/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","vue","../dynamic-resolver/index.umd.js","../common/index.umd.js","../designer-canvas/index.umd.js","../button-edit/index.umd.js","../locale/index.umd.js","../list-view/index.umd.js","lodash-es","bignumber.js","../../designer/button-edit/index.umd.js","../property-panel/index.umd.js","../tree-view/index.umd.js","../button/index.umd.js","../field-selector/index.umd.js","../collection-property-editor/index.umd.js/src/use-button-items.designer","../tags/index.umd.js","../common/index.umd.js/text-box/use-input-expand","../popover/index.umd.js","../drawer/index.umd.js"],t):(z=typeof globalThis<"u"?globalThis:z||self,t(z["expression-editor"]={},z.Vue,z.dynamicResolver,z.common,z.designerCanvas,z.FButtonEdit$1,z.locale,z.FListView,z.LodashES,z.BigNumber,z.FButtonEditDesign,z.propertyPanel,z.FTreeView,null,null,null,z.FTags,z.useInputExpand,z.FPopover,z.Drawer))})(this,function(z,t,G,A,re,ge,_,rt,ne,Aa,ct,ut,dt,$a,Wa,qa,ft,mt,yt,pt){"use strict";var Ha=Object.defineProperty;var za=(z,t,G)=>t in z?Ha(z,t,{enumerable:!0,configurable:!0,writable:!0,value:G}):z[t]=G;var Z=(z,t,G)=>za(z,typeof t!="symbol"?t+"":t,G);const Ne={modelValue:{type:String,default:""},singleExpand:{type:Boolean,default:!0},entities:{type:Array,default:[]},variables:{type:Array,default:[]},disabledFunctions:{type:Object,default:null},esprimaPath:{type:String,default:"assets/esprima-config.json"},showMessage:{type:Boolean,default:!1},validateMessage:{type:String,default:""},messageType:{type:String,default:"info"},showMessageType:{type:Boolean,default:!1},showDataPanel:{type:Boolean,default:!0},isServerSide:{type:Boolean,default:!1}},Me=new Map([["appearance",G.resolveAppearance]]);function Ve(e,n,a){return n}const ht={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/layout.schema.json",title:"layout",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for layout component",type:"string"},type:{description:"The type string of layout component",type:"string",default:"layout"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},contents:{description:"",type:"array",default:[]},collapsable:{description:"",type:"boolean",default:!1},resizable:{description:"",type:"boolean",default:!0},visible:{description:"",type:"boolean",default:!0}},required:["id","type","contents"]},gt={title:"layout",description:"A Farris Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"类型",title:"类型",type:"string",readonly:!0}}},behavior:{description:"Basic Infomation",title:"行为",properties:{collapsable:{description:"",title:"可收折",type:"boolean"},resizable:{description:"",title:"可调整尺寸",type:"boolean"}}}}},ve={customStyle:{type:String,defaut:""},customClass:{type:String,defaut:""}},Oe=G.createPropsResolver(ve,ht,Me,Ve,gt);function Be(e){const n=t.ref(-1),a=t.ref(-1),o=t.ref(0),l=t.ref(0),s=t.ref(!1),i=t.ref(!1),m=t.computed(()=>({display:s.value?"block":"none",left:`${o.value}px`,cursor:"e-resize"})),d=t.computed(()=>({display:i.value?"block":"none",top:`${l.value}px`,cursor:"n-resize"})),y=t.computed(()=>{const p={display:i.value||s.value?"block":"none"};return l.value>0&&(p.cursor="n-resize"),p});function g(p,c,u,C){const v=e.value;if(v){const{left:r,right:f,width:b}=v.getBoundingClientRect();let x=p.clientX-r;C==="right"&&(x=f-p.clientX),x>c&&(x=c),x<u&&(x=u),C==="right"&&(x=b-x),o.value=x}}function h(p,c,u,C){const v=e.value;if(v){const{top:r,bottom:f,height:b}=v.getBoundingClientRect();let x=p.clientY-r;C==="bottom"&&(x=f-p.clientY),x>c&&(x=c),x<u&&(x=u),C==="bottom"&&(x=b-x),l.value=x}}function k(){const p=e.value;if(p){const{width:c,height:u}=p.getBoundingClientRect();return{width:c,height:u}}return null}function S(){const p=e.value;return p?Array.from(p.querySelectorAll("[data-position]")).reduce((c,u)=>{const C=u.getAttribute("data-position");return c=Object.assign(c,{[C]:u}),c},{}):null}function w(p,c){const u=k(),C=S();if(u&&C){const v=C==null?void 0:C.right,r=C==null?void 0:C.left;if(p==="left"&&r)return v?u.width-v.clientWidth-c:u.width-c;if(p==="right"&&v)return r?u.width-r.clientWidth-c:u.width-c}}function T(p,c){const u=k(),C=S();if(u&&C){const v=C==null?void 0:C.bottom,r=C==null?void 0:C.top;if(p==="top"&&r)return v?u.height-v.clientHeight-c:u.height-c;if(p==="bottom"&&v)return r?u.height-r.clientHeight-c:u.height-c}}return{horizontalResizeHandleStyle:m,verticalResizeHandleStyle:d,resizeOverlayStyle:y,showHorizontalResizeHandle:s,showVerticalResizeHandle:i,horizontalResizeBarPosition:n,verticalResizeBarPosition:a,verticalResizeHandleOffset:l,horizontalResizeHandleOffset:o,draggingHorizontalResizeHandle:g,draggingVerticalResizeHandle:h,getPanelMaxHeight:T,getPanelMaxWidth:w}}const K=t.defineComponent({name:"FLayout",props:ve,emits:[],setup(e,n){const a=t.ref(),o=Be(a),{horizontalResizeHandleStyle:l,verticalResizeHandleStyle:s,resizeOverlayStyle:i}=o;t.provide("layout",{useResizeHandleComposition:o});const m=t.computed(()=>{const y={"f-layout":!0};return A.getCustomClass(y,e==null?void 0:e.customClass)}),d=t.computed(()=>{const y={};return A.getCustomStyle(y,e==null?void 0:e.customStyle)});return()=>t.createVNode("div",{class:m.value,style:d.value,ref:a},[n.slots.default&&n.slots.default(),t.createVNode("div",{class:"f-layout-resize-overlay",style:i.value},null),t.createVNode("div",{class:"f-layout-horizontal-resize-proxy",style:l.value},null),t.createVNode("div",{class:"f-layout-vertical-resize-proxy",style:s.value},null)])}}),vt={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/layout-pane.schema.json",title:"layout-pane",description:"A Farris Container Component",type:"object",properties:{id:{description:"The unique identifier for a layout pane",type:"string"},type:{description:"The type string of layout paney",type:"string",default:"layout-pane"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},collapsable:{description:"",type:"boolean",default:!1},contents:{description:"",type:"array",default:[]},height:{description:"",type:"number"},position:{description:"",type:"string",default:"left",enum:["left","center","right","top","bottom"]},resizeable:{description:"",type:"boolean",default:!0},width:{description:"",type:"number"},visible:{description:"",type:"number",default:!0}},required:["id","type","contents"]},bt={title:"layout-pane",description:"A Farris Container Component",type:"object",categories:{basic:{description:"Basic Infomation",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"enum"},width:{description:"",type:"number",title:"宽度"},height:{description:"",type:"number",title:"高度"}}},appearance:{title:"样式",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:""},style:{title:"style",type:"string",description:""}}},behavior:{description:"",title:"行为",properties:{collapsable:{description:"",type:"boolean",title:"允许收折"},position:{description:"",type:"enum",title:"位置",editor:{type:"combo-list",data:[{id:"left",name:"左侧"},{id:"center",name:"居中"},{id:"right",name:"右侧"},{id:"top",name:"顶部"},{id:"bottom",name:"底部"}]}},resizeable:{description:"",type:"boolean",title:"允许调整尺寸"},visible:{description:"运行时组件是否可见",type:"boolean",title:"是否可见"}}}}},be={customClass:{type:String,defaut:""},customStyle:{type:String,defaut:""},width:{type:Number,default:-1},height:{type:Number,default:-1},position:{type:String,default:"left"},visible:{type:Boolean,default:!0},resizable:{type:Boolean,default:!0},collapsable:{type:Boolean,default:!1},minWidth:{type:Number,default:100},minHeight:{type:Number,default:100},maxWidth:{type:Number,default:null}},Ee=G.createPropsResolver(be,vt,Me,Ve,bt);function Pe(e,n,a,o,l,s){const{horizontalResizeBarPosition:i,horizontalResizeHandleOffset:m,showHorizontalResizeHandle:d,showVerticalResizeHandle:y,verticalResizeBarPosition:g,verticalResizeHandleOffset:h,draggingHorizontalResizeHandle:k,draggingVerticalResizeHandle:S,getPanelMaxHeight:w,getPanelMaxWidth:T}=l;let p="",c,u,C;const v=()=>s.maxWidth?s.maxWidth:T(p,a.value)||0;function r(x){if((p==="left"||p==="right")&&u){const{left:B}=u.getBoundingClientRect(),{width:D}=c.getBoundingClientRect(),E=x.clientX-B;let O=p==="left"?(D||0)+(E-i.value):(D||0)-(E-i.value);O=a.value>0?Math.max(a.value,O):O;const F=v();F!=null&&(O=F>O?O:F),e.value=O}if((p==="top"||p==="bottom")&&u){const{top:B}=u.getBoundingClientRect(),{height:D}=c.getBoundingClientRect(),E=x.clientY-B;let O=p==="top"?(D||0)+(E-g.value):(D||0)-(E-g.value);O=o.value>0?Math.max(o.value,O):O;const F=w(p,o.value);F!=null&&(O=F>O?O:F),n.value=O}m.value=0,h.value=0,i.value=-1,g.value=-1,d.value=!1,y.value=!1,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",r),document.body.style.userSelect="",p="",c=null,u=null}function f(x,B,D){if(p=B,c=D,d.value=!0,u=x.composedPath().find(O=>(O.className||"").split(" ")[0]==="f-layout"),u){const{left:O}=u.getBoundingClientRect(),F=x.clientX-O;m.value=F,i.value=F;const P=v();C=R=>k(R,P,a.value,p),document.addEventListener("mousemove",C),document.addEventListener("mouseup",r),document.body.style.userSelect="none"}}function b(x,B,D){if(p=B,c=D,y.value=!0,u=x.composedPath().find(O=>(O.className||"").split(" ")[0]==="f-layout"),u){const{top:O}=u.getBoundingClientRect();h.value=x.clientY-O,g.value=x.clientY-O;const F=w(p,o.value)||0;C=P=>S(P,F,o.value,p),document.addEventListener("mousemove",C),document.addEventListener("mouseup",r),document.body.style.userSelect="none"}}return{onClickHorizontalResizeBar:f,onClickVerticalResizeBar:b}}const X=t.defineComponent({name:"FLayoutPane",props:be,emits:[],setup(e,n){const a=t.ref(e.minHeight<=0?100:e.minHeight),o=t.ref(e.minWidth<=0?100:e.minWidth),l=t.ref(e.width<=0?100:e.width),s=t.ref(e.height<=0?100:e.height),i=t.ref(Math.max(a.value,s.value)),m=t.ref(Math.max(o.value,l.value)),d=t.ref(),y=t.ref(e.position),g=t.ref(e.resizable);t.watch(()=>e.resizable,r=>{g.value=r});const h=t.inject("layout"),{useResizeHandleComposition:k}=h,S=Pe(m,i,o,a,k,e),{onClickHorizontalResizeBar:w,onClickVerticalResizeBar:T}=S,p=t.computed(()=>({"f-layout-resize-bar":!0,"f-layout-resize-bar-e":y.value==="left","f-layout-resize-bar-n":y.value==="bottom","f-layout-resize-bar-s":y.value==="top","f-layout-resize-bar-w":y.value==="right"})),c=t.computed(()=>y.value!=="center"&&g.value);function u(r,f){(f==="left"||f==="right")&&w(r,f,d.value),(f==="top"||f==="bottom")&&T(r,f,d.value)}const C=t.computed(()=>{const r={"f-layout-pane":!0,"f-page-content-nav":y.value==="left"||y.value==="right","f-page-content-main":y.value==="center"};return e.customClass&&String(e.customClass).split(" ").reduce((f,b)=>(f[b]=!0,f),r),r}),v=t.computed(()=>{const r={};return(m.value&&y.value==="left"||y.value==="right")&&(r.width=`${m.value}px`),(i.value&&y.value==="bottom"||y.value==="top")&&(r.height=`${i.value}px`),e.visible||(r.display="none"),r});return()=>t.createVNode("div",{ref:d,class:C.value,style:v.value,"data-position":y.value},[n.slots.default&&n.slots.default(),c.value&&t.createVNode("span",{class:p.value,onMousedown:r=>u(r,y.value)},null)])}});function Ct(e,n){function a(){return!1}return{canAccepts:a}}const xt=t.defineComponent({name:"FLayoutDesign",props:ve,emits:[],setup(e,n){var g;const a=t.ref(),o=t.inject("design-item-context"),l=Ct(o.schema,(g=o.parent)==null?void 0:g.schema),s=re.useDesignerComponent(a,o,l);s.value.canNested=!1;const i=Be(a),{horizontalResizeHandleStyle:m,verticalResizeHandleStyle:d,resizeOverlayStyle:y}=i;return t.provide("layout",{useResizeHandleComposition:i}),t.onMounted(()=>{a.value.componentInstance=s}),n.expose(s.value),()=>t.createVNode("div",{class:"f-layout f-page-content",ref:a},[n.slots.default&&n.slots.default(),t.createVNode("div",{class:"f-layout-resize-overlay",style:y.value},null),t.createVNode("div",{class:"f-layout-horizontal-resize-proxy",style:m.value},null),t.createVNode("div",{class:"f-layout-vertical-resize-proxy",style:d.value},null)])}});function kt(e,n){const a=e.schema;function o(s){return!!re.useDragulaCommonRule().basalDragulaRuleForContainer(s)}function l(){const s=["f-layout-pane"];return(a.position==="left"||a.position==="right")&&s.push("f-page-content-nav"),a.position==="center"&&s.push("f-page-content-main"),s.join(" ")}return{canAccepts:o,getDesignerClass:l}}const wt=t.defineComponent({name:"FLayoutPaneDesign",props:be,emits:[],setup(e,n){const a=t.ref(),o=t.ref();t.inject("designer-host-service");const l=t.inject("design-item-context"),s=kt(l),i=re.useDesignerComponent(o,l,s);i.value.canNested=!1,i.value.canMove=!1,i.value.canDelete=!1,t.onMounted(()=>{o.value.componentInstance=i}),n.expose(i.value);const m=t.ref(Math.max(e.minHeight,e.height)),d=t.ref(Math.max(e.minWidth,e.width)),y=t.ref(e.minHeight),g=t.ref(e.minWidth),h=t.ref(e.position),k=t.inject("layout"),{useResizeHandleComposition:S}=k,w=Pe(d,m,g,y,S,e),{onClickHorizontalResizeBar:T,onClickVerticalResizeBar:p}=w,c=t.computed(()=>({"f-layout-resize-bar":!0,"f-layout-resize-bar-e":h.value==="left","f-layout-resize-bar-n":h.value==="bottom","f-layout-resize-bar-s":h.value==="top","f-layout-resize-bar-w":h.value==="right"}));function u(r,f){(f==="left"||f==="right")&&T(r,f,a.value),(f==="top"||f==="bottom")&&p(r,f,a.value)}const C=t.computed(()=>{const r={"f-layout-pane":!0,"f-page-content-nav":h.value==="left"||h.value==="right","f-page-content-main":h.value==="center"};return e.customClass&&String(e.customClass).split(" ").reduce((f,b)=>(f[b]=!0,f),r),r}),v=t.computed(()=>{const r={flex:"1"};return(d.value&&h.value==="left"||h.value==="right")&&(r.width=`${d.value}px`),(m.value&&h.value==="bottom"||h.value==="top")&&(r.height=`${m.value}px`),r});return()=>t.createVNode("div",{ref:a,class:C.value,style:v.value},[t.createVNode("div",{ref:o,class:"drag-container","data-dragref":`${l.schema.id}-container`},[n.slots.default&&n.slots.default()]),t.createVNode("span",{class:c.value,onMousedown:r=>u(r,h.value)},null)])}});K.install=e=>{e.component(K.name,K),e.component(X.name,X)},K.register=(e,n,a,o)=>{e.layout=K,n.layout=Oe,e["layout-pane"]=X,n["layout-pane"]=Ee},K.registerDesigner=(e,n,a)=>{e.layout=xt,n.layout=Oe,e["layout-pane"]=wt,n["layout-pane"]=Ee};const De=new Map([["appearance",G.resolveAppearance]]),Ie={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/combo-list.schema.json",title:"combo-list",description:"A Farris Input Component",type:"object",properties:{id:{description:"The unique identifier for a combo list",type:"string"},type:{description:"The type string of number combo list component",type:"string",default:"combo-list"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},binding:{description:"",type:"object",default:{}},disabled:{description:"",type:"boolean",default:!1},enableClear:{description:"",type:"boolean",default:!1},editable:{description:"",type:"boolean",default:!1},enableLinkLabel:{description:"",type:"boolean",default:!1},label:{description:"",type:"string",default:""},lableWidth:{description:"",type:"number"},placeholder:{description:"",type:"string",default:"请选择"},idField:{description:"",type:"string",default:"id"},valueField:{description:"",type:"string",default:"id"},titleField:{description:"",type:"string",default:"name"},textField:{description:"",type:"string",default:"name"},dataSourceType:{description:"",type:"string",default:"static"},data:{description:"",type:"array"},dataSource:{description:"",type:"string"},remote:{description:"",type:"string"},readonly:{description:"",type:"boolean",default:!1},required:{description:"",type:"boolean",default:!1},tabindex:{description:"",type:"number",default:-1},textAlign:{description:"",type:"string",enum:["left","middle","right"],default:"left"},multiSelect:{description:"",type:"boolean",default:!1},maxLength:{description:"",type:"number",default:null},visible:{description:"",type:"boolean",default:!0},onBlur:{description:"",type:"string",default:""},onClickLinkLabel:{description:"",type:"string",default:""},maxHeight:{description:"",type:"number",default:350},minPanelWidth:{description:"",type:"number",default:160},popupOnClick:{description:"",type:"boolean",default:!0},separator:{description:"",type:"string",default:","},viewType:{description:"",type:"string",default:"tag"},enableSearch:{description:"启用搜索",type:"boolean",default:!0},enableHighlightSearch:{description:"启用高亮搜索",type:"boolean",default:!1},beforeOpen:{description:"打开下拉面板前回调",type:"string"},beforeHide:{description:"关闭下拉面板前回调",type:"string"},onShown:{description:"面板打开事件",type:"string"},onHidden:{description:"面板关闭事件",type:"string"},onChange:{description:"值变化事件",type:"string",default:""},onInput:{description:"输入事件",type:"string",default:""},onClear:{description:"清空事件",type:"string",default:""},onDataChanged:{description:"清空事件",type:"string",default:""},hideDisabledItems:{description:"隐藏禁用项",type:"boolean",default:!1},expandable:{description:"",type:"boolean",default:!1},expandMode:{description:"",type:"string",default:"text"},expandContent:{description:"",type:"string",default:""},expandDisabled:{description:"",type:"boolean",default:!1},onExpandClick:{description:"",type:"string",default:""},showSelectAll:{description:"",type:"boolean",default:!1}},required:["type"],ignore:["id","appearance","binding","visible"],events:{onClear:"清空事件",onShown:"面板打开事件",onHidden:"面板关闭事件",onChange:"值变化事件",beforeOpen:"打开面板前事件",beforeHide:"关闭面板前事件"}};function je(e,n,a){return n}function Ft(){function e(n,a,o){const l={};return l.beforeOpen=s=>a.call("beforeOpen",n,[s,n],o),l}return{resolve:e}}const ce={id:{type:String},data:{type:Array,default:[]},disabled:{default:!1,type:Boolean},dropDownIcon:{type:String,default:'<span class="f-icon f-icon-arrow-chevron-down"></span>'},editable:{default:!1,type:Boolean},enableClear:{default:!0,type:Boolean},enableSearch:{type:Boolean,default:!1},enableTitle:{default:!0,type:Boolean},fitEditor:{default:!1,type:Boolean},forcePlaceholder:{default:!1,type:Boolean},hidePanelOnClear:{default:!0,type:Boolean},idField:{default:"id",type:String},mapFields:{type:Object},maxHeight:{default:350,type:Number},maxLength:{type:Number},multiSelect:{type:Boolean,default:!1},showSelectAll:{type:Boolean,default:!1},modelValue:{type:String,default:""},placeholder:{type:String,default:"请选择"},placement:{type:String,default:"auto"},readonly:{default:!1,type:Boolean},remote:{default:null,type:Object},remoteSearch:{default:!1,type:Boolean},separator:{default:",",type:String},tabIndex:{type:Number,default:-1},textField:{default:"name",type:String},titleField:{default:"name",type:String},valueField:{default:"id",type:String},viewType:{default:"tag",type:String},change:{type:Function,default:()=>{}},focusOnCreated:{type:Boolean,default:!1},selectOnCreated:{type:Boolean,default:!1},autoHeight:{type:Boolean,default:!0},beforeOpen:{type:Function,default:null},load:{type:Function},searchOption:{type:[Boolean,Function],default:!1},enableHighlightSearch:{type:Boolean,default:!0},minPanelWidth:{type:Number,default:160},popupOnClick:{type:Boolean,default:!0},expandable:{type:Boolean,default:!1},expandMode:{type:String,default:"text"},expandContent:{type:String,default:""},expandDisabled:{type:Boolean,default:!1},popupClass:{type:String,default:""},hideDisabledItems:{type:Boolean,default:!1}},St=Object.assign({},ce,{readonly:{}});G.createPropsResolver(ce,Ie,De,je);const Le=G.getPropsResolverGenerator(ce,Ie,De,je),Tt=Ft(),Nt={dataSource:{type:Array,default:[]},enableSearch:{type:Boolean,default:!1},idField:{type:String,default:"id"},multiSelect:{type:Boolean,default:!1},showSelectAll:{type:Boolean,default:!1},selectedValues:{type:String,default:""},separator:{type:String,default:","},textField:{type:String,default:"name"},titleField:{type:String,default:"name"},width:{type:Number},maxHeight:{type:Number},valueField:{type:String,default:"id"},onSelectionChange:{type:Function,default:()=>{}},searchOption:{type:[Boolean,Function],default:!1},enableHighlightSearch:{type:Boolean,default:!0}},Mt=t.defineComponent({name:"FComboListContainer",props:Nt,emits:["selectionChange"],setup(e,n){const a=t.ref(),o=t.ref(e.dataSource),l=t.ref(e.dataSource),s=t.ref([]),i=t.ref(e.separator),m=t.ref(e.width),d=t.ref(e.maxHeight),y=t.computed(()=>e.multiSelect),g=t.ref(e.multiSelect?String(e.selectedValues).split(i.value):[e.selectedValues]),h=t.computed(()=>({enableSelectRow:!0,multiSelect:e.multiSelect,multiSelectMode:"OnCheckAndClick",showCheckbox:y.value,showSelectAll:e.showSelectAll,showSelection:!0}));t.watch(e.dataSource,()=>{o.value=e.dataSource,l.value=e.dataSource}),t.computed(()=>e.enableSearch?"SearchBar":"ContentHeader");const k=t.computed(()=>{const c={};return m.value!==void 0&&(c.width=`${m.value}px`),d.value!==void 0&&d.value>0&&(c.maxHeight=`${d.value}px`),c});function S(c){a.value.search(c)}function w(c){s.value=c.map(u=>Object.assign({},u)),g.value=c.map(u=>u[e.idField]),n.emit("selectionChange",s.value)}function T(c){if(e.enableHighlightSearch)return;let u=[];const{searchOption:C}=e;typeof C=="function"?u=o.value.filter(v=>C(c,v)):u=o.value.filter(v=>v[e.valueField].indexOf(c)>-1||v[e.textField].indexOf(c)>-1),a.value.updateDataSource(u)}t.watch([()=>e.selectedValues],([c])=>{e.multiSelect?c===null?g.value=[]:g.value=c.split(i.value):c===null?g.value=[]:g.value=[c]});function p(c){a.value.activeRowById(c)}return t.onMounted(()=>{var c,u;if(!e.multiSelect){const C=(c=g.value)==null?void 0:c[0];let v=C;const r=o.value.map(f=>f[e.valueField||e.idField]);if(!ne.isUndefined(C)&&r.includes(C)){const f=typeof C,b=typeof((u=o.value[0])==null?void 0:u[e.valueField||e.idField]);b==="number"&&f!==b&&(v=Number(C)),b==="boolean"&&f!==b&&(v=C==="true"?!0:C==="false"?!1:C),p(v)}}}),n.expose({search:S,activeRowById:p}),()=>t.createVNode("div",{class:"f-combo-list-container",style:k.value},[t.createVNode(rt,{ref:a,size:"small",itemClass:"f-combo-list-item",itemContentClass:"text-truncate",header:"ContentHeader",headerClass:"f-combo-list-search-box",data:o.value,idField:e.idField,textField:e.textField,titleField:e.titleField,multiSelect:e.multiSelect,selection:h.value,enableHighlightSearch:e.enableHighlightSearch,selectionValues:g.value,onSelectionUpdate:w,onAfterSearch:T},null)])}}),Re={property:"all",duration:.3,timingFunction:"cubic-bezier(0.17, 0.89, 0.45, 1)",delay:0},Vt=(e,n)=>{const a=e.lineHeight/2,o=A.useTouchMomentum({maxOverflowY:44}),l=t.reactive({...Re}),s=v=>{n.emit("change",v)},i=t.reactive({value:0,max:0,min:0,start:0,index:0,currentItem:void 0,active:!1}),m=()=>{i.max=e.visiableOptionCount/2*e.lineHeight;const v=e.column.length*e.lineHeight;i.min=i.max-v+e.lineHeight},d=(v=0)=>{m(),i.index=v,i.value=i.max-v*e.lineHeight,i.currentItem=e.column[v]},y=v=>{const r=e.column.length-1,f=Math.min(i.index,r),b=e.column.findIndex(x=>x[e.valueField]===v);return b>=0?b:f},g=v=>{const r=e.column.length-1;return i.index>r?e.column[r]:e.column[v]},h=v=>{v&&(i.currentItem=v,l.duration=0);const r=i.currentItem[e.valueField],f=y(r),b=g(i.index)[e.valueField];d(f),r!==b&&setTimeout(()=>{s(i.currentItem)},l.duration*1e3)},k=()=>{const v=Array.isArray(e.value)?e.value[0]:e.value;d(y(v))};k(),t.watch(()=>e.value,()=>{e.multiSelect||k()}),t.watch(()=>e.column,()=>h());const S=(v,r=i.max,f=i.min)=>{const b=i.start+v;i.value=b>a?Math.min(b,r):Math.max(b,f),i.index=Math.round((i.max-i.value)/e.lineHeight),i.currentItem=g(i.index)},w=A.useTouch(),T=v=>{w.start(v),i.active=!0,i.start=i.value,o.start(i.start),l.duration=0},p=v=>{v.preventDefault(),w.move(v),S(w.deltaY.value,i.max+e.lineHeight,i.min-e.lineHeight),o.move(w.deltaY.value),l.duration=Re.duration},c=v=>{const r=v<0,f=v%e.lineHeight>a?1:0,b=Math.floor(v/e.lineHeight);return(r?b-f:b+f)*e.lineHeight+a};return{translateY:i,transition:l,onTouchStart:T,onTouchMove:p,onTouchEnd:()=>{i.start=0;const v=o.end();let r=0;if(v){const{destination:f,duration:b}=o.get(i.value,i.min,i.max);r=f,l.duration=b/1e3}else r=i.value;S(c(r)),s(i.currentItem)},onTransitionend:()=>{i.active=!1},updateTranslate:h}},Ot={column:{type:Array,default:()=>[]},valueField:{type:String,default:"value"},textField:{type:String,default:"text"},value:{type:[Array,String,Number],default:()=>[]},multiSelect:{type:Boolean,default:!1},showIcon:{type:Boolean,default:!1},lineHeight:{type:Number,default:0},visiableOptionCount:{type:Number,default:5}},Bt=t.defineComponent({props:Ot,emits:["change","click"],setup(e,n){const{addUnit:a}=A.useCommonUtils(),{bem:o}=A.useBem("FComboTouchList"),{translateY:l,transition:s,onTouchStart:i,onTouchMove:m,onTouchEnd:d,onTransitionend:y}=Vt(e,n),g=S=>{n.emit("click",S)},h=t.computed(()=>({transform:`translateY(${a(l.value)})`,transition:`all ${l.active?s.duration:0}s ${s.timingFunction} 0s`})),k=S=>e.showIcon?Array.isArray(e.value)&&e.value.includes(S[e.valueField]):!1;return()=>t.createVNode("div",{class:o("column"),style:h.value,onTouchstart:i,onTouchmove:m,onTouchend:d,onTransitionend:y},[e.column.map(S=>t.createVNode("div",{class:o("column-item"),onClick:()=>g(S)},[t.createVNode("span",null,[S[e.textField]]),k(S)&&t.createVNode("span",{class:`f-icon f-icon-check ${o("column-item-icon")}`},null)]))])}}),Et={modelValue:{type:[String,Array],default:""},columns:{type:Array,default:()=>[]},title:{type:String,default:""},valueField:{type:String,default:"value"},textField:{type:String,default:"text"},childrenField:{type:String,default:"children"},multiSelect:{type:Boolean,default:!1},lineHeight:{type:Number,default:44},cancelText:{type:String,default:"取消"},confirmText:{type:String,default:"确定"},optionFormatter:{type:Function,default:void 0},visiableOptionCount:{type:Number,default:5},showToolbar:{type:Boolean,default:!0},separator:{type:String,default:","}},Pt=(e,n)=>{const{finalValue:a,initValue:o,setSelectedByIndex:l,getSelectedValueByIndex:s}=n,{isArray:i,isFunction:m,isObject:d}=A.useCommonUtils(),y=r=>r&&r[0],g=t.computed(()=>{var r;return((r=e.columns)==null?void 0:r.length)>0&&i(e.columns[0])}),h=r=>{if((r==null?void 0:r.length)===0)return!1;const f=y(r);return f&&i(f[e.childrenField])},k=(r,f)=>{const b=y(r),x=s(f);let B=r.find(E=>E[e.valueField]===x);B=B||b;const D=B[e.childrenField]||[];if(h(D)){const E=k(D,f+1);return[D,...E]}return[D]},S=()=>{const r=e.columns,f=k(r,0);return[r,...f]},w=(r,f)=>{const b=r[e.textField];return m(e.optionFormatter)?e.optionFormatter(f,r):b},T=(r,f)=>r.map(b=>{const x=d(b)?b:{[e.valueField]:b,[e.textField]:b};return x[e.textField]=w(x,f),x}),p=t.computed(()=>{let r=[];return g.value?r=e.columns:h(e.columns)?r=S():r=[e.columns],r.map(T)}),c=()=>p.value.map((r,f)=>{const b=a.value[f];return r.find(B=>B[e.valueField]===b)}).filter(r=>r),u=()=>c().map(r=>r[e.valueField]),C=()=>c().map(r=>r[e.textField]).join("-"),v=()=>{p.value.forEach((r,f)=>{if(e.multiSelect)a.value[f].forEach(x=>{const B=r.find(D=>D[e.valueField]===x);B&&l(f,B)});else{const b=a.value[f],x=r.find(B=>B[e.valueField]===b);x?l(f,x):l(f,y(r))}})};return t.watch(()=>e.modelValue,()=>{o(e.modelValue),v()},{immediate:!0}),{columns:p,getPickeds:c,getValue:u,getTextValue:C}},Dt=e=>{const{isArray:n,isMultiArray:a,isString:o,isDef:l}=A.useCommonUtils(),s=c=>{let u=[];return n(c)?u=c:o(c)?u=c.split(e.separator):l(c)&&(u=[c]),e.multiSelect?a(u)?u:[u]:u},i=t.ref([]),m=c=>{i.value=s(c)},d=t.reactive([]),y=t.computed(()=>d.map(c=>c[e.valueField])),g=t.reactive([]),h=t.computed(()=>g.map(c=>c.map(u=>u[e.valueField])));return{finalValue:i,initValue:m,getSelected:()=>e.multiSelect?g:d,getSelectedValue:()=>e.multiSelect?h.value:y.value,setSelectedByIndex:(c,u)=>{if(e.multiSelect){const C=g[c]||[];C.includes(u)?g[c]=C.filter(v=>v!==u):g[c]=[...C,u]}else d[c]=u},getSelectedByIndex:c=>e.multiSelect?g[c]:d[c],getSelectedValueByIndex:c=>e.multiSelect?h.value[c]:y.value[c]}},It=t.defineComponent({props:Et,emits:["change","confirm","cancel","update:modelValue"],setup(e,n){const{emit:a}=n,{addUnit:o}=A.useCommonUtils(),l=Dt(e),{finalValue:s,getSelectedValue:i,getSelectedValueByIndex:m,getSelected:d,setSelectedByIndex:y}=l,{columns:g}=Pt(e,l),h=(C,v=!0)=>{const{value:r,index:f}=C;(v&&!e.multiSelect||!v&&e.multiSelect)&&(a("change",C),y(f,r))},k=()=>{s.value=i(),a("confirm",d()),a("update:modelValue",s.value)},S=()=>{a("cancel")},{bem:w}=A.useBem("FComboTouchList"),T=()=>t.createVNode("div",{class:w("toolbar")},[t.createVNode("div",{class:w("toolbar-left"),onClick:S},[t.createVNode("span",null,[e.cancelText])]),t.createVNode("div",{class:w("toolbar-title")},[t.createVNode("span",null,[e.title])]),t.createVNode("div",{class:w("toolbar-right"),onClick:k},[t.createVNode("span",null,[e.confirmText])])]),p=t.computed(()=>{const C=(e.visiableOptionCount+1)*e.lineHeight;return{height:o(C)}}),c=t.computed(()=>{const C=e.visiableOptionCount*e.lineHeight/2;return{backgroundSize:`100% ${o(C)}`}}),u=()=>t.createVNode("div",{class:w("content")},[t.createVNode("div",{class:w("columns"),style:p.value},[g.value.map((C,v)=>t.createVNode(Bt,{column:C,value:m(v),showIcon:e.multiSelect,textField:e.textField,multiSelect:e.multiSelect,valueField:e.valueField,lineHeight:e.lineHeight,visiableOptionCount:e.visiableOptionCount,onChange:r=>h({value:r,index:v}),onClick:r=>h({value:r,index:v},!1)},null)),!e.multiSelect&&t.createVNode("div",{class:w("mask"),style:c.value},null),t.createVNode("div",{class:w("frame")},null)])]);return()=>t.createVNode("div",{class:w("")},[e.showToolbar&&T(),u()])}});function jt(e,n){const a=t.ref(""),o=t.ref(e.modelValue),l=t.ref(e.data||[]),s=t.ref(e.editable),i=t.computed(()=>e.hideDisabledItems?l.value.filter(c=>!c.disabled):l.value);function m(c){const u=e.multiSelect?String(c).split(e.separator):[String(c)],C=u.map(f=>[f,!0]),v=new Map(C);return l.value.filter(f=>v.has(String(f[e.valueField]))).sort((f,b)=>{const x=u.indexOf(f[e.valueField]),B=u.indexOf(b[e.valueField]);return x-B})}function d(c){const u=m(c).map(C=>C[e.textField]).join(e.separator);a.value=s.value?u||c:u}function y(c){if(e.multiSelect){const u=c.split(e.separator).map(v=>[v,!0]),C=new Map(u);return l.value.filter(v=>C.has(v[e.textField]))}return l.value.filter(u=>""+u[e.textField]===c)}function g(c){const u={};return u[e.idField]=c,u[e.textField]=c,[u]}function h(c){let u=y(c);const C=u&&u.length>0;return s.value&&!C&&(u=g(c)),u}function k(){const{url:c,method:u="GET",headers:C={"Content-Type":"application/json;charset=utf-8;"},body:v=null}=e.remote;if(!c)return;const{basePath:r}=A.useFarrisConfig().value,f=u.toLowerCase()==="get"?{method:u,headers:C}:{method:u,headers:C,body:v};let b=!1;fetch(new Request(r+c,f)).then(x=>{var D,E;if(x.status===200)return b=!!((E=(D=x.headers)==null?void 0:D.get("content-type"))!=null&&E.includes("application/json")),b?x.text():x.json();throw x.status===405?new Error(_.LocaleService.getLocaleValue("comboList.remoteError")):new Error(x.statusText)}).then(x=>{x.length&&(l.value=b?JSON.parse(x):x,o.value&&d(o.value))}).catch(x=>{console.warn(x)})}e.remote&&(e.load?e.load().then(c=>{l.value=c}).catch(c=>{console.log(c)}):k()),t.watch(()=>e.data,()=>{l.value=e.data}),t.watch([l],([c],[u])=>{if(e.modelValue!=null&&!e.multiSelect){const C=c.find(v=>v[e.valueField]===o.value);C?C[e.valueField]!==o.value?(o.value=C[e.valueField],a.value=C[e.textField],n.emit("update:modelValue",C[e.valueField]),n.emit("change",[C],C[e.valueField])):a.value!==C[e.textField]&&(a.value=C[e.textField]):o.value!==""&&(o.value="",a.value="",n.emit("update:modelValue",""),n.emit("change",[],""))}}),t.watch(()=>e.modelValue,(c,u)=>{u!==c&&(o.value=c,d(c))});function S(c){l.value=c,n.emit("dataChanged",c)}function w(){return l.value}function T(){return a.value}async function p(){const c=typeof e.beforeOpen=="function";return!e.beforeOpen||!c?Promise.resolve(!0):Promise.resolve().then(()=>e.beforeOpen({instance:{updateDataSource:S,getData:w,getDisplayText:T}})).then(u=>typeof(u==null?void 0:u.canOpen)=="boolean"?u==null?void 0:u.canOpen:!0)}return d(e.modelValue),{dataSource:l,filteredDataSource:i,displayText:a,editable:s,modelValue:o,beforeOpenList:p,getItemsByDisplayText:y,getItemsByValue:m,getSelectedItemsByDisplayText:h}}const Lt=["moz","ms","webkit"];function Rt(){let e=0;return n=>{const a=new Date().getTime(),o=Math.max(0,16-(a-e)),l=setTimeout(()=>{n(a+o)},o);return e=a+o,l}}function Ht(){if(typeof window>"u")return()=>0;if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);const e=Lt.filter(n=>`${n}RequestAnimationFrame`in window)[0];return e?window[`${e}RequestAnimationFrame`]:Rt()}Ht(),t.ref("");function ue(){if(typeof window>"u"||typeof navigator>"u")return!1;const e=navigator.userAgent||navigator.vendor||window.opera,n=[/iPhone/i,/iPod/i,/Android.*Mobile/i,/webOS/i,/BlackBerry/i,/IEMobile/i,/Opera Mini/i,/Harmony/i],a=[/iPad/i,/Android(?!.*Mobile)/i,/Tablet/i,/PlayBook/i,/Kindle/i,/Silk/i];for(const d of a)if(d.test(e))return!1;for(const d of n)if(d.test(e))return!0;if(typeof screen>"u")return!1;const o="ontouchstart"in window||navigator.maxTouchPoints>0,l=screen.width,s=screen.height,i=Math.min(l,s);return!!(o&&i<=768)}function zt(){const e=ue();return e&&document.body.classList.add("f-mobile"),e}typeof document<"u"&&zt();const ae=t.defineComponent({name:"FComboList",props:ce,emits:["clear","update:modelValue","change","input","dataChanged","expandClick","hidden","shown"],setup(e,n){const a=t.ref(),o=t.ref(),l=t.ref(e.disabled||e.readonly),s=t.ref(e.enableClear),i=t.ref(e.enableSearch),m=t.ref(e.readonly),{dataSource:d,displayText:y,editable:g,modelValue:h,filteredDataSource:k,getItemsByDisplayText:S,getItemsByValue:w,beforeOpenList:T}=jt(e,n),p=t.ref(e.dropDownIcon);p.value==='<span class="f-icon f-icon-arrow-chevron-down"></span>'&&(p.value='<span id="'+e.id+'-icon-dropdown" class="f-icon f-icon-arrow-chevron-down"></span>');const c=t.computed(()=>e.multiSelect),u=t.computed(()=>o.value?o.value.elementRef.getBoundingClientRect().width:0);function C(){!c.value&&o.value&&o.value.hidePopup()}function v(I){y.value=I.map(V=>V[e.textField]).join(e.separator)||h.value;let N="";I.length===1?N=I[0][e.valueField]:N=I.map(V=>V[e.valueField]).join(e.separator),h.value!==N&&(h.value=N,n.emit("update:modelValue",h.value),n.emit("change",I,h.value))}function r(){const I=w(h.value);v(I)}function f(){m.value||y.value}function b(I){var N;h.value="",(N=a.value)==null||N.activeRowById(""),n.emit("clear")}function x(I){var N,V;e.enableSearch&&e.enableHighlightSearch&&((N=a.value)==null||N.search(I)),(V=a.value)==null||V.activeRowById(I),n.emit("change",[h.value],h.value)}function B(I){if(e.multiSelect){const N=S(I);e.viewType;const j=N.map(H=>H[e.idField||e.valueField]).join(e.separator);h.value!==j&&(h.value=j,n.emit("update:modelValue",h.value),n.emit("change",N,h.value))}else I!==h.value&&(h.value=I,n.emit("update:modelValue",h.value),n.emit("change",[],I))}function D(){return y.value}function E(I){const{value:N}=I.target;x(N),n.emit("input",N)}function O(){o.value.hidePopup()}function F(I){d.value=I}function P(){return d.value}const R={getDisplayText:D,hidePopup:O,updateDataSource:F,getData:P};n.expose(R),t.watch([()=>e.disabled,()=>e.editable,()=>e.enableClear,()=>e.enableSearch,()=>e.readonly],([I,N,V,j,H])=>{l.value=I,g.value=N,s.value=V,i.value=j,m.value=H});const W=()=>{n.emit("expandClick")};return()=>t.createVNode(ge,{ref:o,id:e.id,disable:l.value,readonly:m.value,forcePlaceholder:e.forcePlaceholder,editable:g.value,buttonContent:p.value,placeholder:e.placeholder==="请选择"?_.LocaleService.getLocaleValue("comboList.placeholder"):e.placeholder,enableClear:s.value,maxLength:e.maxLength,tabIndex:e.tabIndex,enableTitle:e.enableTitle,multiSelect:e.multiSelect,inputType:e.multiSelect?e.viewType:"text",modelValue:y.value,"onUpdate:modelValue":I=>y.value=I,focusOnCreated:e.focusOnCreated,selectOnCreated:e.selectOnCreated,onClear:b,onClick:f,onChange:B,onBlur:r,onInput:E,beforeOpen:T,placement:ue()?"bottom":e.placement,popupMinWidth:e.minPanelWidth,popupClass:"f-combo-list-wrapper",popupOnClick:e.popupOnClick,limitContentBySpace:!0,expandable:e.expandable,expandMode:e.expandMode,expandContent:e.expandContent,expandDisabled:e.expandDisabled,onExpandClick:W,onHidden:()=>n.emit("hidden"),onShown:()=>n.emit("shown")},{default:()=>[ue()?t.createVNode(It,{modelValue:h.value,valueField:e.valueField,textField:e.textField,columns:d.value,multiSelect:e.multiSelect,separator:e.separator,onConfirm:I=>{const N=e.multiSelect?I[0]||[]:I;v(N),o==null||o.value.hidePopup()},onCancel:()=>{o==null||o.value.hidePopup()}},null):t.createVNode(Mt,{class:e.popupClass,ref:a,idField:e.idField,valueField:e.valueField,textField:e.textField,titleField:e.titleField,dataSource:k.value,selectedValues:h.value,separator:e.separator,multiSelect:e.multiSelect,showSelectAll:e.showSelectAll,enableSearch:i.value,maxHeight:e.maxHeight,enableHighlightSearch:e.enableHighlightSearch,width:e.fitEditor?u.value:void 0,onSelectionChange:I=>{v(I),C()}},null)]})}}),He={convertFrom:(e,n)=>(e.editor.remote||{})[n],convertTo:(e,n,a)=>{e.editor.remote=e.editor.remote||{},e.editor.remote[n]=a}};class At extends ut.InputBaseProperty{constructor(n,a){super(n,a)}getCommonEditorProperties(n){var a,o,l,s;return{showSelectAll:{visible:!!((a=n.editor)!=null&&a.multiSelect),description:"多选模式下是否显示全选复选框",title:"启用全选",type:"boolean",default:!1,refreshPanelAfterChanged:!0},viewType:{visible:!!((o=n.editor)!=null&&o.multiSelect),description:"数据展示类型,有标签和文本两种方式",title:"数据展示类型",type:"enum",editor:{data:[{id:"tag",name:"标签"},{id:"text",name:"文本"}]},refreshPanelAfterChanged:!0},separator:{visible:!!((l=n.editor)!=null&&l.multiSelect)&&((s=n.editor)==null?void 0:s.viewType)==="text",description:"下拉列表启用多选且数据展示类型为文本时的分隔符",title:"分隔符",type:"enum",editor:{data:[{id:",",name:"逗号(,)"},{id:"#",name:"井号(#)"},{id:".",name:"句号(.)"},{id:"|",name:"竖线(|)"}]}},editable:{description:"",title:"允许编辑",type:"boolean",refreshPanelAfterChanged:!0,readonly:!0},hideDisabledItems:{description:"当数据项禁用时,隐藏数据项",title:"隐藏禁用项",type:"boolean",refreshPanelAfterChanged:!0}}}getEditorProperties(n){var d,y,g,h,k,S,w,T,p,c,u,C,v;const a=this;let o="";if(((d=n==null?void 0:n.binding)==null?void 0:d.type)==="Form"){const r=this.schemaService.getFieldByIDAndVMID(n.binding.field,this.viewModelId);(y=r==null?void 0:r.schemaField)!=null&&y.type&&(o=r.schemaField.type.$type)}const l=this.getPropertyEditorParams(n,["Variable"]),s=!n.editor.dataSourceType||n.editor.dataSourceType==="static",i=(((h=(g=this.designViewModelField)==null?void 0:g.type)==null?void 0:h.$type)===A.FormSchemaEntityFieldType$Type.StringType||!!this.formRule&&((k=this.designerHostService.schemaService.getFieldByID(n.binding.field))==null?void 0:k.type.$type)===A.FormSchemaEntityFieldType$Type.StringType)&&((S=n.editor)==null?void 0:S.type)==="combo-list"&&((w=n.editor)==null?void 0:w.dataSourceType)==="dynamic"&&!((p=(T=n.editor)==null?void 0:T.remote)!=null&&p.url)&&!((c=n.editor)!=null&&c.multiSelect);return a.getComponentConfig(n,{type:"combo-list"},{enableClear:{description:"是否显示清除按钮",title:"启用清除按钮",type:"boolean"},dataSourceType:{description:"",title:"数据源类型",type:"enum",editor:{default:"static",data:[{id:"static",name:"静态"},{id:"dynamic",name:"动态"}]},refreshPanelAfterChanged:!0},dataSource:{description:"动态数据源绑定变量",visible:i,title:"数据",editor:{...l,controlName:"",enableClear:!0},refreshPanelAfterChanged:!0},data:{description:"",title:"数据",type:"array",visible:s,...a.getItemCollectionEditor(n,n.editor.valueField,n.editor.textField),refreshPanelAfterChanged:!0},url:{visible:n.editor.dataSourceType==="dynamic"&&!((u=n.editor)!=null&&u.dataSource),$converter:He,description:"",title:"服务端API",type:"string",refreshPanelAfterChanged:!0},body:{visible:!1,$converter:He,description:"",title:"服务端API参数",type:"string"},textField:{description:"",title:"数据源显示字段",type:"string",readonly:n.editor.dataSourceType!=="dynamic"},valueField:{description:"",title:"数据源值字段",type:"string",readonly:n.editor.dataSourceType!=="dynamic"},multiSelect:{description:"",title:"启用多选",visible:!o||o==="StringType",readonly:((C=n.editor)==null?void 0:C.dataSourceType)==="dynamic"&&!!((v=n.editor)!=null&&v.dataSource),type:"boolean",refreshPanelAfterChanged:!0},maxLength:{description:"",title:"最大输入长度",type:"number",editor:{nullable:!0,min:0,useThousands:!1,needValid:!0}},...this.getCommonEditorProperties(n)},(r,f)=>{if(!r||!f.editor)return;const b=this;switch(r.propertyID){case"dataSourceType":{r.propertyValue==="static"?(f.editor.valueField="value",f.editor.textField="name",f.editor.remote=null):r.propertyValue==="dynamic"&&(f.editor.remote={method:"GET"},f.editor.valueField="value",f.editor.textField="name");break}case"data":{!b.checkEnumDataReadonly(f)&&f.formatter&&(f.formatter.data=[...r.propertyValue]);break}case"viewType":{r.propertyValue==="tag"&&(f.editor.editable=!1);break}case"dataSource":b.afterMutilEditorChanged(f,r);break}})}getGridFieldEdtiorProperties(n,a){var d,y,g,h,k,S,w,T,p,c,u,C,v;const o=this;let l="";if(((d=n==null?void 0:n.binding)==null?void 0:d.type)==="Form"){const r=this.schemaService.getFieldByIDAndVMID(n.binding.field,this.viewModelId);(y=r==null?void 0:r.schemaField)!=null&&y.type&&(l=r.schemaField.type.$type)}const s=((h=(g=this.designViewModelField)==null?void 0:g.type)==null?void 0:h.$type)===A.FormSchemaEntityFieldType$Type.StringType&&((k=n.editor)==null?void 0:k.type)==="combo-list"&&((S=n.editor)==null?void 0:S.dataSourceType)==="dynamic"&&!((w=n.editor)!=null&&w.multiSelect),i=this.getPropertyEditorParams(n,["Variable"]);return o.getComponentConfig(n,{type:"combo-list"},{enableClear:{description:"",title:"启用清空",type:"boolean"},dataSourceType:{description:"",title:"数据源类型",type:"enum",editor:{default:"static",data:[{id:"static",name:"静态"},{id:"dynamic",name:"动态"}]},refreshPanelAfterChanged:!0},dataSource:{description:"动态数据源绑定变量",visible:s,title:"数据",editor:{...i,controlName:"",enableClear:!0},refreshPanelAfterChanged:!0},data:{description:"",title:"数据",type:"array",visible:!((T=n.editor)!=null&&T.dataSourceType)||((p=n.editor)==null?void 0:p.dataSourceType)==="static",...o.getItemCollectionEditor(n,(c=n.editor)==null?void 0:c.valueField,(u=n.editor)==null?void 0:u.textField),refreshPanelAfterChanged:!0},textField:{description:"",title:"数据源显示字段",type:"string",readonly:!0},valueField:{description:"",title:"数据源值字段",type:"string",readonly:!0},multiSelect:{description:"",title:"启用多选",visible:l==="StringType",readonly:((C=n.editor)==null?void 0:C.dataSourceType)==="dynamic"&&!!((v=n.editor)!=null&&v.dataSource),type:"boolean",refreshPanelAfterChanged:!0},maxLength:{description:"",title:"最大输入长度",type:"number",editor:{nullable:!0,min:0,useThousands:!1,needValid:!0}},...this.getCommonEditorProperties(n)},(r,f)=>{if(!r||!f.editor)return;const b=this;switch(r.propertyID){case"dataSourceType":{r.propertyValue==="static"?(f.editor.valueField="value",f.editor.textField="name",f.editor.remote=null):r.propertyValue==="dynamic"&&(f.editor.remote={method:"GET"},f.editor.valueField="value",f.editor.textField="name");break}case"data":{!b.checkEnumDataReadonly(f)&&f.formatter&&(f.formatter.data=[...r.propertyValue]);break}case"dataSource":b.afterMutilEditorChanged(f,r)}})}setEditorPropertyRelates(n,a,o){if(!n||!a.editor)return;const l=this;switch(n.propertyID){case"dataSourceType":{n.propertyValue==="static"&&(a.editor.valueField="value",a.editor.textField="name",a.editor.remote={});break}case"data":{!l.checkEnumDataReadonly(a)&&a.formatter&&(a.formatter.data=[...n.propertyValue]);break}}}changeBindingField(n,a,o){var s;super.changeBindingField(n,a);const l=o;n.editor&&((s=l==null?void 0:l.type)==null?void 0:s.$type)===A.FormSchemaEntityFieldType$Type.EnumType&&(n.editor.data=l.type.enumValues||[])}getEventPropertyConfig(n,a="card",o,l){const s=this;let i=[{label:"onChange",name:"值变化事件"},{label:"beforeOpen",name:"打开面板前事件"},{label:"beforeHide",name:"关闭面板前事件"},{label:"onShown",name:"面板打开事件"},{label:"onHidden",name:"面板关闭事件"}];i=[...i,...this.getInputCommonEvents(n)],o&&(i=i.concat(o)),this.formRule&&(i=i.filter(g=>g.label!=="onChange")),this.appendFieldValueChangeEvents(n,i);const m=s.eventsEditorUtils.formProperties(n,s.viewModelId,i);return{title:"事件",hideTitle:!0,properties:s.createBaseEventProperty(m),tabId:A.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(g,h){const k=g.propertyValue;delete n[s.viewModelId],k&&(k.setPropertyRelates=this.setPropertyRelates,s.eventsEditorUtils.saveRelatedParameters(n,s.viewModelId,k.events,k),s.updateLinkedLabel(k,h)),l&&l(g,h,k);const S=s.designViewModelUtils.getDgViewModel(s.viewModelId);S&&s.designViewModelField&&S.changeField(s.designViewModelField.id,{valueChanging:n.fieldValueChanging||"",valueChanged:n.fieldValueChanged||""}),n.editor.onShown=n.onShown,n.editor.onHidden=n.onHidden,n.editor.beforeHide=n.beforeHide,n.editor.beforeOpen=n.beforeOpen,n.editor.onChange=n.onChange,n.editor.onClear=n.onClear}}}}function $t(e,n){const a=e.schema;function o(l,s){return new At(l,n).getPropertyConfig(a,s)}return{getPropsConfig:o}}const Wt=t.defineComponent({name:"FComboListDesign",props:St,emits:["clear","update:modelValue","change"],setup(e,n){const a=t.ref(),o=t.inject("designer-host-service"),l=t.inject("design-item-context"),s=$t(l,o),i=re.useDesignerComponent(a,l,s);return t.onMounted(()=>{a.value.componentInstance=i}),n.expose(i.value),()=>t.createVNode(ct,{ref:a,buttonContent:e.dropDownIcon,readonly:!0,editable:!1,forcePlaceholder:!0,placeholder:e.placeholder,expandable:e.expandable,expandMode:e.expandMode,expandContent:e.expandContent,expandDisabled:e.expandDisabled},null)}});ae.register=(e,n,a,o,l)=>{e["combo-list"]=ae,n["combo-list"]=Le(l),o["combo-list"]={callbackResolver:Tt}},ae.registerDesigner=(e,n,a,o)=>{e["combo-list"]=Wt,n["combo-list"]=Le(o)},A.withInstall(ae);const qt={analytical:{name:"数据",items:[{key:"IsNull",name:"是空值",params:[{key:"obj",name:"检测对象",type:"object"}],description:`【功能】判断检测对象是否为空值(null)。检测对象为null返回true,否则返回false
【参数】
【obj】检测对象
【返回值】true或false
【示例】
【场景】提交单据Order,单据包含编号code字段
【需求】判断提交单据的编号是否为null
【举例】是空值(Order.code)`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"IsNullOrWhiteSpace",name:"是空串",params:[{key:"obj",name:"检测对象",type:"object"}],description:`【功能】判断检测对象是否为null值或空串""。检测对象为null或""返回true,否则返回false
【参数】
【obj】检测对象
【返回值】true或false
【示例】
【场景】提交单据Order,单据包含编号code字段
【需求】判断提交单据的编号是否为null或空串""
【举例】是空值(Order.code)`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"IsNaN",name:"非数字",params:[{key:"obj",name:"检测对象",type:"object"}],description:`【功能】判断检测对象是否可以转换成数字(Double)。检测对象不能转为数字返回true,否则返回false
【参数】
【obj】检测对象
【返回值】true或false
【示例】
【场景】提交单据Order,单据包含单据总额sum字段
【需求】判断提交单据的单据总额是否为非数字
【举例】非数字(Order.sum)`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"IsNumber",name:"是数字",params:[{key:"obj",name:"检测对象",type:"object"}],description:`【功能】判断检测对象是否可以转换成数字(Double)。检测对象能转为数字返回true,否则返回false
【参数】
【obj】检测对象
【返回值】true或false
【示例】
【场景】提交单据Order,单据包含单据总额sum字段
【需求】判断提交单据的单据总额是否是数字
【举例】是数字(Order.sum)`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"ExistData",name:"子表有无数据",params:[{key:"table",name:"主表.子表",type:"string"}],description:`【功能】判断子表中有没有数据。有数据返回true,无数据返回false(参数用""包起来)
【参数】
【table】主表.子表(链式结构)
【返回值】true或false
【示例】
【场景】提交单据Order,单据包含差旅明细子表trips
【需求】判断差旅明细子表是否有数据
【举例】子表有无数据("Order.trips")`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"CountOfChild",name:"子表数据数量",params:[{key:"table",name:"主表.子表",type:"string"}],description:`【功能】返回子表数据的数量(参数用""包起来)
【参数】
【table】主表.子表(链式结构)
【返回值】数量(数值类型)
【示例】
【场景】提交单据Order,单据包含差旅明细子表trips
【需求】获取差旅明细子表的数量
【举例】子表数据数量("Order.trips")`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"SortChildData",name:"子表数据排序",params:[{key:"table",name:"主表.子表",type:"string"},{key:"property",name:"子表排序字段",type:"string"},{key:"order",name:"排序方式",type:"string"}],description:`【功能】对子表数据进行排序(参数用""包起来)
【参数】
【table】主表.子表(链式结构)
【property】子表字段(字段类型应为数字类型)
【order】排序方式("ESC"表示正序从小到大,"DESC"表示倒序从大到小)
【返回值】无
【示例】
【场景】提交单据Order,单据包含差旅明细子表trips,子表包含出差费用money字段
【需求】按照出差费用money字段对差旅明细从小到大排序
【举例】子表数据排序("Order.trips","money","ESC")`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"IncludedInList",name:"是否在列表中",params:[{key:"property",name:"字段",type:"object"},{key:"list",name:"数据列表",type:"list"}],description:`【功能】:判断字段是否在数据列表中存在。字段在列表中存在返回true,不存在返回false。支持判断字符和数字类型
【参数】
【property】字段
【list】数据列表
【返回值】true或false
【示例】是否在列表中(Order.name,["Zs","Ls"])
【示例】是否在列表中(Order.quantity,[100,200])`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"CountByProp",name:"子表列非空数",params:[{key:"table",name:"主表.子表",