UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

70 lines 180 kB
(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,se,he,K,st,ne,Ha,ct,ut,dt,za,Aa,$a,ft,mt,yt,pt){"use strict";var La=Object.defineProperty;var Ra=(z,t,G)=>t in z?La(z,t,{enumerable:!0,configurable:!0,writable:!0,value:G}):z[t]=G;var Z=(z,t,G)=>Ra(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"}}}}},ge={customStyle:{type:String,defaut:""},customClass:{type:String,defaut:""}},Oe=G.createPropsResolver(ge,ht,Me,Ve,gt);function Be(e){const n=t.ref(-1),a=t.ref(-1),o=t.ref(0),i=t.ref(0),r=t.ref(!1),l=t.ref(!1),d=t.computed(()=>({display:r.value?"block":"none",left:`${o.value}px`,cursor:"e-resize"})),m=t.computed(()=>({display:l.value?"block":"none",top:`${i.value}px`,cursor:"n-resize"})),p=t.computed(()=>{const y={display:l.value||r.value?"block":"none"};return i.value>0&&(y.cursor="n-resize"),y});function v(y,c,u,C){const g=e.value;if(g){const{left:s,right:f,width:b}=g.getBoundingClientRect();let x=y.clientX-s;C==="right"&&(x=f-y.clientX),x>c&&(x=c),x<u&&(x=u),C==="right"&&(x=b-x),o.value=x}}function h(y,c,u,C){const g=e.value;if(g){const{top:s,bottom:f,height:b}=g.getBoundingClientRect();let x=y.clientY-s;C==="bottom"&&(x=f-y.clientY),x>c&&(x=c),x<u&&(x=u),C==="bottom"&&(x=b-x),i.value=x}}function k(){const y=e.value;if(y){const{width:c,height:u}=y.getBoundingClientRect();return{width:c,height:u}}return null}function S(){const y=e.value;return y?Array.from(y.querySelectorAll("[data-position]")).reduce((c,u)=>{const C=u.getAttribute("data-position");return c=Object.assign(c,{[C]:u}),c},{}):null}function w(y,c){const u=k(),C=S();if(u&&C){const g=C==null?void 0:C.right,s=C==null?void 0:C.left;if(y==="left"&&s)return g?u.width-g.clientWidth-c:u.width-c;if(y==="right"&&g)return s?u.width-s.clientWidth-c:u.width-c}}function T(y,c){const u=k(),C=S();if(u&&C){const g=C==null?void 0:C.bottom,s=C==null?void 0:C.top;if(y==="top"&&s)return g?u.height-g.clientHeight-c:u.height-c;if(y==="bottom"&&g)return s?u.height-s.clientHeight-c:u.height-c}}return{horizontalResizeHandleStyle:d,verticalResizeHandleStyle:m,resizeOverlayStyle:p,showHorizontalResizeHandle:r,showVerticalResizeHandle:l,horizontalResizeBarPosition:n,verticalResizeBarPosition:a,verticalResizeHandleOffset:i,horizontalResizeHandleOffset:o,draggingHorizontalResizeHandle:v,draggingVerticalResizeHandle:h,getPanelMaxHeight:T,getPanelMaxWidth:w}}const _=t.defineComponent({name:"FLayout",props:ge,emits:[],setup(e,n){const a=t.ref(),o=Be(a),{horizontalResizeHandleStyle:i,verticalResizeHandleStyle:r,resizeOverlayStyle:l}=o;t.provide("layout",{useResizeHandleComposition:o});const d=t.computed(()=>{const p={"f-layout":!0};return A.getCustomClass(p,e==null?void 0:e.customClass)}),m=t.computed(()=>{const p={};return A.getCustomStyle(p,e==null?void 0:e.customStyle)});return()=>t.createVNode("div",{class:d.value,style:m.value,ref:a},[n.slots.default&&n.slots.default(),t.createVNode("div",{class:"f-layout-resize-overlay",style:l.value},null),t.createVNode("div",{class:"f-layout-horizontal-resize-proxy",style:i.value},null),t.createVNode("div",{class:"f-layout-vertical-resize-proxy",style:r.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:"是否可见"}}}}},ve={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(ve,vt,Me,Ve,bt);function Pe(e,n,a,o,i,r){const{horizontalResizeBarPosition:l,horizontalResizeHandleOffset:d,showHorizontalResizeHandle:m,showVerticalResizeHandle:p,verticalResizeBarPosition:v,verticalResizeHandleOffset:h,draggingHorizontalResizeHandle:k,draggingVerticalResizeHandle:S,getPanelMaxHeight:w,getPanelMaxWidth:T}=i;let y="",c,u,C;const g=()=>r.maxWidth?r.maxWidth:T(y,a.value)||0;function s(x){if((y==="left"||y==="right")&&u){const{left:B}=u.getBoundingClientRect(),{width:D}=c.getBoundingClientRect(),E=x.clientX-B;let O=y==="left"?(D||0)+(E-l.value):(D||0)-(E-l.value);O=a.value>0?Math.max(a.value,O):O;const F=g();F!=null&&(O=F>O?O:F),e.value=O}if((y==="top"||y==="bottom")&&u){const{top:B}=u.getBoundingClientRect(),{height:D}=c.getBoundingClientRect(),E=x.clientY-B;let O=y==="top"?(D||0)+(E-v.value):(D||0)-(E-v.value);O=o.value>0?Math.max(o.value,O):O;const F=w(y,o.value);F!=null&&(O=F>O?O:F),n.value=O}d.value=0,h.value=0,l.value=-1,v.value=-1,m.value=!1,p.value=!1,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",s),document.body.style.userSelect="",y="",c=null,u=null}function f(x,B,D){if(y=B,c=D,m.value=!0,u=x.composedPath().find(O=>(O.className||"").split(" ")[0]==="f-layout"),u){const{left:O}=u.getBoundingClientRect(),F=x.clientX-O;d.value=F,l.value=F;const P=g();C=R=>k(R,P,a.value,y),document.addEventListener("mousemove",C),document.addEventListener("mouseup",s),document.body.style.userSelect="none"}}function b(x,B,D){if(y=B,c=D,p.value=!0,u=x.composedPath().find(O=>(O.className||"").split(" ")[0]==="f-layout"),u){const{top:O}=u.getBoundingClientRect();h.value=x.clientY-O,v.value=x.clientY-O;const F=w(y,o.value)||0;C=P=>S(P,F,o.value,y),document.addEventListener("mousemove",C),document.addEventListener("mouseup",s),document.body.style.userSelect="none"}}return{onClickHorizontalResizeBar:f,onClickVerticalResizeBar:b}}const X=t.defineComponent({name:"FLayoutPane",props:ve,emits:[],setup(e,n){const a=t.ref(e.minHeight<=0?100:e.minHeight),o=t.ref(e.minWidth<=0?100:e.minWidth),i=t.ref(e.width<=0?100:e.width),r=t.ref(e.height<=0?100:e.height),l=t.ref(Math.max(a.value,r.value)),d=t.ref(Math.max(o.value,i.value)),m=t.ref(),p=t.ref(e.position),v=t.ref(e.resizable);t.watch(()=>e.resizable,s=>{v.value=s});const h=t.inject("layout"),{useResizeHandleComposition:k}=h,S=Pe(d,l,o,a,k,e),{onClickHorizontalResizeBar:w,onClickVerticalResizeBar:T}=S,y=t.computed(()=>({"f-layout-resize-bar":!0,"f-layout-resize-bar-e":p.value==="left","f-layout-resize-bar-n":p.value==="bottom","f-layout-resize-bar-s":p.value==="top","f-layout-resize-bar-w":p.value==="right"})),c=t.computed(()=>p.value!=="center"&&v.value);function u(s,f){(f==="left"||f==="right")&&w(s,f,m.value),(f==="top"||f==="bottom")&&T(s,f,m.value)}const C=t.computed(()=>{const s={"f-layout-pane":!0,"f-page-content-nav":p.value==="left"||p.value==="right","f-page-content-main":p.value==="center"};return e.customClass&&String(e.customClass).split(" ").reduce((f,b)=>(f[b]=!0,f),s),s}),g=t.computed(()=>{const s={};return(d.value&&p.value==="left"||p.value==="right")&&(s.width=`${d.value}px`),(l.value&&p.value==="bottom"||p.value==="top")&&(s.height=`${l.value}px`),e.visible||(s.display="none"),s});return()=>t.createVNode("div",{ref:m,class:C.value,style:g.value,"data-position":p.value},[n.slots.default&&n.slots.default(),c.value&&t.createVNode("span",{class:y.value,onMousedown:s=>u(s,p.value)},null)])}});function Ct(e,n){function a(){return!1}return{canAccepts:a}}const xt=t.defineComponent({name:"FLayoutDesign",props:ge,emits:[],setup(e,n){var v;const a=t.ref(),o=t.inject("design-item-context"),i=Ct(o.schema,(v=o.parent)==null?void 0:v.schema),r=se.useDesignerComponent(a,o,i);r.value.canNested=!1;const l=Be(a),{horizontalResizeHandleStyle:d,verticalResizeHandleStyle:m,resizeOverlayStyle:p}=l;return t.provide("layout",{useResizeHandleComposition:l}),t.onMounted(()=>{a.value.componentInstance=r}),n.expose(r.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:p.value},null),t.createVNode("div",{class:"f-layout-horizontal-resize-proxy",style:d.value},null),t.createVNode("div",{class:"f-layout-vertical-resize-proxy",style:m.value},null)])}});function kt(e,n){const a=e.schema;function o(r){return!!se.useDragulaCommonRule().basalDragulaRuleForContainer(r)}function i(){const r=["f-layout-pane"];return(a.position==="left"||a.position==="right")&&r.push("f-page-content-nav"),a.position==="center"&&r.push("f-page-content-main"),r.join(" ")}return{canAccepts:o,getDesignerClass:i}}const wt=t.defineComponent({name:"FLayoutPaneDesign",props:ve,emits:[],setup(e,n){const a=t.ref(),o=t.ref();t.inject("designer-host-service");const i=t.inject("design-item-context"),r=kt(i),l=se.useDesignerComponent(o,i,r);l.value.canNested=!1,l.value.canMove=!1,l.value.canDelete=!1,t.onMounted(()=>{o.value.componentInstance=l}),n.expose(l.value);const d=t.ref(Math.max(e.minHeight,e.height)),m=t.ref(Math.max(e.minWidth,e.width)),p=t.ref(e.minHeight),v=t.ref(e.minWidth),h=t.ref(e.position),k=t.inject("layout"),{useResizeHandleComposition:S}=k,w=Pe(m,d,v,p,S,e),{onClickHorizontalResizeBar:T,onClickVerticalResizeBar:y}=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(s,f){(f==="left"||f==="right")&&T(s,f,a.value),(f==="top"||f==="bottom")&&y(s,f,a.value)}const C=t.computed(()=>{const s={"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),s),s}),g=t.computed(()=>{const s={flex:"1"};return(m.value&&h.value==="left"||h.value==="right")&&(s.width=`${m.value}px`),(d.value&&h.value==="bottom"||h.value==="top")&&(s.height=`${d.value}px`),s});return()=>t.createVNode("div",{ref:a,class:C.value,style:g.value},[t.createVNode("div",{ref:o,class:"drag-container","data-dragref":`${i.schema.id}-container`},[n.slots.default&&n.slots.default()]),t.createVNode("span",{class:c.value,onMousedown:s=>u(s,h.value)},null)])}});_.install=e=>{e.component(_.name,_),e.component(X.name,X)},_.register=(e,n,a,o)=>{e.layout=_,n.layout=Oe,e["layout-pane"]=X,n["layout-pane"]=Ee},_.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]]),je={$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:""}},required:["type"],ignore:["id","appearance","binding","visible"],events:{onClear:"清空事件",onShown:"面板打开事件",onHidden:"面板关闭事件",onChange:"值变化事件",beforeOpen:"打开面板前事件",beforeHide:"关闭面板前事件"}};function Ie(e,n,a){return n}function Ft(){function e(n,a,o){const i={};return i.beforeOpen=r=>a.call("beforeOpen",n,[r,n],o),i}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},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,je,De,Ie);const Le=G.getPropsResolverGenerator(ce,je,De,Ie),Tt=Ft(),Nt={dataSource:{type:Array,default:[]},enableSearch:{type:Boolean,default:!1},idField:{type:String,default:"id"},multiSelect:{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),i=t.ref(e.dataSource),r=t.ref([]),l=t.ref(e.separator),d=t.ref(e.width),m=t.ref(e.maxHeight),p=t.computed(()=>e.multiSelect),v=t.ref(e.multiSelect?String(e.selectedValues).split(l.value):[e.selectedValues]),h=t.computed(()=>({enableSelectRow:!0,multiSelect:e.multiSelect,multiSelectMode:"OnCheckAndClick",showCheckbox:p.value,showSelectAll:!1,showSelection:!0}));t.watch(e.dataSource,()=>{o.value=e.dataSource,i.value=e.dataSource}),t.computed(()=>e.enableSearch?"SearchBar":"ContentHeader");const k=t.computed(()=>{const c={};return d.value!==void 0&&(c.width=`${d.value}px`),m.value!==void 0&&m.value>0&&(c.maxHeight=`${m.value}px`),c});function S(c){a.value.search(c)}function w(c){r.value=c.map(u=>Object.assign({},u)),v.value=c.map(u=>u[e.idField]),n.emit("selectionChange",r.value)}function T(c){if(e.enableHighlightSearch)return;let u=[];const{searchOption:C}=e;typeof C=="function"?u=o.value.filter(g=>C(c,g)):u=o.value.filter(g=>g[e.valueField].indexOf(c)>-1||g[e.textField].indexOf(c)>-1),a.value.updateDataSource(u)}t.watch([()=>e.selectedValues],([c])=>{e.multiSelect?v.value=c.split(l.value):v.value=[c]});function y(c){a.value.activeRowById(c)}return t.onMounted(()=>{var c,u;if(!e.multiSelect){const C=(c=v.value)==null?void 0:c[0];let g=C;const s=o.value.map(f=>f[e.valueField||e.idField]);if(!ne.isUndefined(C)&&s.includes(C)){const f=typeof C,b=typeof((u=o.value[0])==null?void 0:u[e.valueField||e.idField]);b==="number"&&f!==b&&(g=Number(C)),b==="boolean"&&f!==b&&(g=C==="true"?!0:C==="false"?!1:C),y(g)}}}),n.expose({search:S,activeRowById:y}),()=>t.createVNode("div",{class:"f-combo-list-container",style:k.value},[t.createVNode(st,{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:v.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}),i=t.reactive({...Re}),r=g=>{n.emit("change",g)},l=t.reactive({value:0,max:0,min:0,start:0,index:0,currentItem:void 0,active:!1}),d=()=>{l.max=e.visiableOptionCount/2*e.lineHeight;const g=e.column.length*e.lineHeight;l.min=l.max-g+e.lineHeight},m=(g=0)=>{d(),l.index=g,l.value=l.max-g*e.lineHeight,l.currentItem=e.column[g]},p=g=>{const s=e.column.length-1,f=Math.min(l.index,s),b=e.column.findIndex(x=>x[e.valueField]===g);return b>=0?b:f},v=g=>{const s=e.column.length-1;return l.index>s?e.column[s]:e.column[g]},h=g=>{g&&(l.currentItem=g,i.duration=0);const s=l.currentItem[e.valueField],f=p(s),b=v(l.index)[e.valueField];m(f),s!==b&&setTimeout(()=>{r(l.currentItem)},i.duration*1e3)},k=()=>{const g=Array.isArray(e.value)?e.value[0]:e.value;m(p(g))};k(),t.watch(()=>e.value,()=>{e.multiSelect||k()}),t.watch(()=>e.column,()=>h());const S=(g,s=l.max,f=l.min)=>{const b=l.start+g;l.value=b>a?Math.min(b,s):Math.max(b,f),l.index=Math.round((l.max-l.value)/e.lineHeight),l.currentItem=v(l.index)},w=A.useTouch(),T=g=>{w.start(g),l.active=!0,l.start=l.value,o.start(l.start),i.duration=0},y=g=>{g.preventDefault(),w.move(g),S(w.deltaY.value,l.max+e.lineHeight,l.min-e.lineHeight),o.move(w.deltaY.value),i.duration=Re.duration},c=g=>{const s=g<0,f=g%e.lineHeight>a?1:0,b=Math.floor(g/e.lineHeight);return(s?b-f:b+f)*e.lineHeight+a};return{translateY:l,transition:i,onTouchStart:T,onTouchMove:y,onTouchEnd:()=>{l.start=0;const g=o.end();let s=0;if(g){const{destination:f,duration:b}=o.get(l.value,l.min,l.max);s=f,i.duration=b/1e3}else s=l.value;S(c(s)),r(l.currentItem)},onTransitionend:()=>{l.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:i,transition:r,onTouchStart:l,onTouchMove:d,onTouchEnd:m,onTransitionend:p}=Vt(e,n),v=S=>{n.emit("click",S)},h=t.computed(()=>({transform:`translateY(${a(i.value)})`,transition:`all ${i.active?r.duration:0}s ${r.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:l,onTouchmove:d,onTouchend:m,onTransitionend:p},[e.column.map(S=>t.createVNode("div",{class:o("column-item"),onClick:()=>v(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:i,getSelectedValueByIndex:r}=n,{isArray:l,isFunction:d,isObject:m}=A.useCommonUtils(),p=s=>s&&s[0],v=t.computed(()=>{var s;return((s=e.columns)==null?void 0:s.length)>0&&l(e.columns[0])}),h=s=>{if((s==null?void 0:s.length)===0)return!1;const f=p(s);return f&&l(f[e.childrenField])},k=(s,f)=>{const b=p(s),x=r(f);let B=s.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 s=e.columns,f=k(s,0);return[s,...f]},w=(s,f)=>{const b=s[e.textField];return d(e.optionFormatter)?e.optionFormatter(f,s):b},T=(s,f)=>s.map(b=>{const x=m(b)?b:{[e.valueField]:b,[e.textField]:b};return x[e.textField]=w(x,f),x}),y=t.computed(()=>{let s=[];return v.value?s=e.columns:h(e.columns)?s=S():s=[e.columns],s.map(T)}),c=()=>y.value.map((s,f)=>{const b=a.value[f];return s.find(B=>B[e.valueField]===b)}).filter(s=>s),u=()=>c().map(s=>s[e.valueField]),C=()=>c().map(s=>s[e.textField]).join("-"),g=()=>{y.value.forEach((s,f)=>{if(e.multiSelect)a.value[f].forEach(x=>{const B=s.find(D=>D[e.valueField]===x);B&&i(f,B)});else{const b=a.value[f],x=s.find(B=>B[e.valueField]===b);x?i(f,x):i(f,p(s))}})};return t.watch(()=>e.modelValue,()=>{o(e.modelValue),g()},{immediate:!0}),{columns:y,getPickeds:c,getValue:u,getTextValue:C}},Dt=e=>{const{isArray:n,isMultiArray:a,isString:o,isDef:i}=A.useCommonUtils(),r=c=>{let u=[];return n(c)?u=c:o(c)?u=c.split(e.separator):i(c)&&(u=[c]),e.multiSelect?a(u)?u:[u]:u},l=t.ref([]),d=c=>{l.value=r(c)},m=t.reactive([]),p=t.computed(()=>m.map(c=>c[e.valueField])),v=t.reactive([]),h=t.computed(()=>v.map(c=>c.map(u=>u[e.valueField])));return{finalValue:l,initValue:d,getSelected:()=>e.multiSelect?v:m,getSelectedValue:()=>e.multiSelect?h.value:p.value,setSelectedByIndex:(c,u)=>{if(e.multiSelect){const C=v[c]||[];C.includes(u)?v[c]=C.filter(g=>g!==u):v[c]=[...C,u]}else m[c]=u},getSelectedByIndex:c=>e.multiSelect?v[c]:m[c],getSelectedValueByIndex:c=>e.multiSelect?h.value[c]:p.value[c]}},jt=t.defineComponent({props:Et,emits:["change","confirm","cancel","update:modelValue"],setup(e,n){const{emit:a}=n,{addUnit:o}=A.useCommonUtils(),i=Dt(e),{finalValue:r,getSelectedValue:l,getSelectedValueByIndex:d,getSelected:m,setSelectedByIndex:p}=i,{columns:v}=Pt(e,i),h=(C,g=!0)=>{const{value:s,index:f}=C;(g&&!e.multiSelect||!g&&e.multiSelect)&&(a("change",C),p(f,s))},k=()=>{r.value=l(),a("confirm",m()),a("update:modelValue",r.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])])]),y=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:y.value},[v.value.map((C,g)=>t.createVNode(Bt,{column:C,value:d(g),showIcon:e.multiSelect,textField:e.textField,multiSelect:e.multiSelect,valueField:e.valueField,lineHeight:e.lineHeight,visiableOptionCount:e.visiableOptionCount,onChange:s=>h({value:s,index:g}),onClick:s=>h({value:s,index:g},!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 It(e,n){const a=t.ref(""),o=t.ref(e.modelValue),i=t.ref(e.data||[]),r=t.ref(e.editable),l=t.computed(()=>e.hideDisabledItems?i.value.filter(c=>!c.disabled):i.value);function d(c){const u=e.multiSelect?String(c).split(e.separator):[String(c)],C=u.map(f=>[f,!0]),g=new Map(C);return i.value.filter(f=>g.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 m(c){const u=d(c).map(C=>C[e.textField]).join(e.separator);a.value=r.value?u||c:u}function p(c){if(e.multiSelect){const u=c.split(e.separator).map(g=>[g,!0]),C=new Map(u);return i.value.filter(g=>C.has(g[e.textField]))}return i.value.filter(u=>""+u[e.textField]===c)}function v(c){const u={};return u[e.idField]=c,u[e.textField]=c,[u]}function h(c){let u=p(c);const C=u&&u.length>0;return r.value&&!C&&(u=v(c)),u}function k(){const{url:c,method:u="GET",headers:C={"Content-Type":"application/json;charset=utf-8;"},body:g=null}=e.remote;if(!c)return;const{basePath:s}=A.useFarrisConfig().value,f=u.toLowerCase()==="get"?{method:u,headers:C}:{method:u,headers:C,body:g};let b=!1;fetch(new Request(s+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(K.LocaleService.getLocaleValue("comboList.remoteError")):new Error(x.statusText)}).then(x=>{x.length&&(i.value=b?JSON.parse(x):x,o.value&&m(o.value))}).catch(x=>{console.warn(x)})}e.remote&&(e.load?e.load().then(c=>{i.value=c}).catch(c=>{console.log(c)}):k()),t.watch(()=>e.data,()=>{i.value=e.data}),t.watch([i],([c],[u])=>{if(e.modelValue!=null&&!e.multiSelect){const C=c.find(g=>g[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,m(c))});function S(c){i.value=c,n.emit("dataChanged",c)}function w(){return i.value}function T(){return a.value}async function y(){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 m(e.modelValue),{dataSource:i,filteredDataSource:l,displayText:a,editable:r,modelValue:o,beforeOpenList:y,getItemsByDisplayText:p,getItemsByValue:d,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)),i=setTimeout(()=>{n(a+o)},o);return e=a+o,i}}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 be(){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;const o="ontouchstart"in window||navigator.maxTouchPoints>0,i=screen.width,r=screen.height,l=Math.min(i,r);return!!(o&&l<=768)}const ae=t.defineComponent({name:"FComboList",props:ce,emits:["clear","update:modelValue","change","input","dataChanged","expandClick"],setup(e,n){const a=t.ref(),o=t.ref(),i=t.ref(e.disabled||e.readonly),r=t.ref(e.enableClear),l=t.ref(e.enableSearch),d=t.ref(e.readonly),{dataSource:m,displayText:p,editable:v,modelValue:h,filteredDataSource:k,getItemsByDisplayText:S,getItemsByValue:w,beforeOpenList:T}=It(e,n),y=t.ref(e.dropDownIcon);y.value==='<span class="f-icon f-icon-arrow-chevron-down"></span>'&&(y.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 g(j){p.value=j.map(V=>V[e.textField]).join(e.separator)||h.value;let N="";j.length===1?N=j[0][e.valueField]:N=j.map(V=>V[e.valueField]).join(e.separator),h.value!==N&&(h.value=N,n.emit("update:modelValue",h.value),n.emit("change",j,h.value))}function s(){const j=w(h.value);g(j)}function f(){d.value||p.value}function b(j){var N;h.value="",(N=a.value)==null||N.activeRowById(""),n.emit("clear")}function x(j){var N,V;e.enableSearch&&e.enableHighlightSearch&&((N=a.value)==null||N.search(j)),(V=a.value)==null||V.activeRowById(j),n.emit("change",[h.value],h.value)}function B(j){if(e.multiSelect){const N=S(j);e.viewType;const I=N.map(H=>H[e.idField||e.valueField]).join(e.separator);h.value!==I&&(h.value=I,n.emit("update:modelValue",h.value),n.emit("change",N,h.value))}else j!==h.value&&(h.value=j,n.emit("update:modelValue",h.value),n.emit("change",[],j))}function D(){return p.value}function E(j){const{value:N}=j.target;x(N),n.emit("input",N)}function O(){o.value.hidePopup()}function F(j){m.value=j}function P(){return m.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],([j,N,V,I,H])=>{i.value=j,v.value=N,r.value=V,l.value=I,d.value=H});const W=()=>{n.emit("expandClick")};return()=>t.createVNode(he,{ref:o,id:e.id,disable:i.value,readonly:d.value,forcePlaceholder:e.forcePlaceholder,editable:v.value,buttonContent:y.value,placeholder:e.placeholder==="请选择"?K.LocaleService.getLocaleValue("comboList.placeholder"):e.placeholder,enableClear:r.value,maxLength:e.maxLength,tabIndex:e.tabIndex,enableTitle:e.enableTitle,multiSelect:e.multiSelect,inputType:e.multiSelect?e.viewType:"text",modelValue:p.value,"onUpdate:modelValue":j=>p.value=j,focusOnCreated:e.focusOnCreated,selectOnCreated:e.selectOnCreated,onClear:b,onClick:f,onChange:B,onBlur:s,onInput:E,beforeOpen:T,placement:be()?"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},{default:()=>[be()?t.createVNode(jt,{modelValue:h.value,valueField:e.valueField,textField:e.textField,columns:m.value,multiSelect:e.multiSelect,separator:e.separator,onConfirm:j=>{const N=e.multiSelect?j[0]||[]:j;g(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,enableSearch:l.value,maxHeight:e.maxHeight,enableHighlightSearch:e.enableHighlightSearch,width:e.fitEditor?u.value:void 0,onSelectionChange:j=>{g(j),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 zt extends ut.InputBaseProperty{constructor(n,a){super(n,a)}getCommonEditorProperties(n){var a,o,i;return{viewType:{visible:!!((a=n.editor)!=null&&a.multiSelect),description:"数据展示类型,有标签和文本两种方式",title:"数据展示类型",type:"enum",editor:{data:[{id:"tag",name:"标签"},{id:"text",name:"文本"}]},refreshPanelAfterChanged:!0},separator:{visible:!!((o=n.editor)!=null&&o.multiSelect)&&((i=n.editor)==null?void 0:i.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 m,p,v,h,k,S,w,T,y,c,u,C,g;const a=this;let o="";if(((m=n==null?void 0:n.binding)==null?void 0:m.type)==="Form"){const s=this.schemaService.getFieldByIDAndVMID(n.binding.field,this.viewModelId);(p=s==null?void 0:s.schemaField)!=null&&p.type&&(o=s.schemaField.type.$type)}const i=this.getPropertyEditorParams(n,["Variable"]),r=!n.editor.dataSourceType||n.editor.dataSourceType==="static",l=(((h=(v=this.designViewModelField)==null?void 0:v.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"&&!((y=(T=n.editor)==null?void 0:T.remote)!=null&&y.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:l,title:"数据",editor:{...i,controlName:"",enableClear:!0},refreshPanelAfterChanged:!0},data:{description:"",title:"数据",type:"array",visible:r,...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"&&!!((g=n.editor)!=null&&g.dataSource),type:"boolean",refreshPanelAfterChanged:!0},maxLength:{description:"",title:"最大输入长度",type:"number",editor:{nullable:!0,min:0,useThousands:!1,needValid:!0}},...this.getCommonEditorProperties(n)},(s,f)=>{if(!s||!f.editor)return;const b=this;switch(s.propertyID){case"dataSourceType":{s.propertyValue==="static"?(f.editor.valueField="value",f.editor.textField="name",f.editor.remote=null):s.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=[...s.propertyValue]);break}case"viewType":{s.propertyValue==="tag"&&(f.editor.editable=!1);break}case"dataSource":b.afterMutilEditorChanged(f,s);break}})}getGridFieldEdtiorProperties(n,a){var m,p,v,h,k,S,w,T,y,c,u,C,g;const o=this;let i="";if(((m=n==null?void 0:n.binding)==null?void 0:m.type)==="Form"){const s=this.schemaService.getFieldByIDAndVMID(n.binding.field,this.viewModelId);(p=s==null?void 0:s.schemaField)!=null&&p.type&&(i=s.schemaField.type.$type)}const r=((h=(v=this.designViewModelField)==null?void 0:v.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),l=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:r,title:"数据",editor:{...l,controlName:"",enableClear:!0},refreshPanelAfterChanged:!0},data:{description:"",title:"数据",type:"array",visible:!((T=n.editor)!=null&&T.dataSourceType)||((y=n.editor)==null?void 0:y.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:i==="StringType",readonly:((C=n.editor)==null?void 0:C.dataSourceType)==="dynamic"&&!!((g=n.editor)!=null&&g.dataSource),type:"boolean",refreshPanelAfterChanged:!0},maxLength:{description:"",title:"最大输入长度",type:"number",editor:{nullable:!0,min:0,useThousands:!1,needValid:!0}},...this.getCommonEditorProperties(n)},(s,f)=>{if(!s||!f.editor)return;const b=this;switch(s.propertyID){case"dataSourceType":{s.propertyValue==="static"?(f.editor.valueField="value",f.editor.textField="name",f.editor.remote=null):s.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=[...s.propertyValue]);break}case"dataSource":b.afterMutilEditorChanged(f,s)}})}setEditorPropertyRelates(n,a,o){if(!n||!a.editor)return;const i=this;switch(n.propertyID){case"dataSourceType":{n.propertyValue==="static"&&(a.editor.valueField="value",a.editor.textField="name",a.editor.remote={});break}case"data":{!i.checkEnumDataReadonly(a)&&a.formatter&&(a.formatter.data=[...n.propertyValue]);break}}}changeBindingField(n,a,o){var r;super.changeBindingField(n,a);const i=o;n.editor&&((r=i==null?void 0:i.type)==null?void 0:r.$type)===A.FormSchemaEntityFieldType$Type.EnumType&&(n.editor.data=i.type.enumValues||[])}getEventPropertyConfig(n,a="card",o,i){const r=this;let l=[{label:"onChange",name:"值变化事件"},{label:"beforeOpen",name:"打开面板前事件"},{label:"beforeHide",name:"关闭面板前事件"},{label:"onShown",name:"面板打开事件"},{label:"onHidden",name:"面板关闭事件"}];l=[...l,...this.getInputCommonEvents(n)],o&&(l=l.concat(o)),this.formRule&&(l=l.filter(v=>v.label!=="onChange")),this.appendFieldValueChangeEvents(n,l);const d=r.eventsEditorUtils.formProperties(n,r.viewModelId,l);return{title:"事件",hideTitle:!0,properties:r.createBaseEventProperty(d),tabId:A.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(v,h){const k=v.propertyValue;delete n[r.viewModelId],k&&(k.setPropertyRelates=this.setPropertyRelates,r.eventsEditorUtils.saveRelatedParameters(n,r.viewModelId,k.events,k),r.updateLinkedLabel(k,h)),i&&i(v,h,k);const S=r.designViewModelUtils.getDgViewModel(r.viewModelId);S&&r.designViewModelField&&S.changeField(r.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 At(e,n){const a=e.schema;function o(i,r){return new zt(i,n).getPropertyConfig(a,r)}return{getPropsConfig:o}}const $t=t.defineComponent({name:"FComboListDesign",props:St,emits:["clear","update:modelValue","change"],setup(e,n){const a=t.ref(),o=t.inject("designer-host-service"),i=t.inject("design-item-context"),r=At(i,o),l=se.useDesignerComponent(a,i,r);return t.onMounted(()=>{a.value.componentInstance=l}),n.expose(l.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,i)=>{e["combo-list"]=ae,n["combo-list"]=Le(i),o["combo-list"]={callbackResolver:Tt}},ae.registerDesigner=(e,n,a,o)=>{e["combo-list"]=$t,n["combo-list"]=Le(o)},A.withInstall(ae);const Wt={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:"主表.子表",type:"string"},{key:"property",name:"子表字段",type:"string"}],description:`【功能】:统计子表某字段不为null的数据数量(参数用""包起来) 【参数】 【table】主表.子表(链式结构) 【property】子表字段 【返回值】子表字段不为null的数量(数值类型) 【示例】 【场景】提交单据Order,单据包含差旅明细子表trips,子表包含出差方式way字段 【需求】统计差旅明细子表trips中出差方式way不为空的数据数量 【举例】子表列非空数("Order.trips","way")`,type:"Analytical",keyFront:"DefaultFunction",className:""},{key:"SumByProp",name:"子表字段求和",params:[{key:"table",name:"主表.子表",type:"string"},{key:"property",name:"子表字段",type:"string"}],description:`【功能】求和子表某字段(参数用""包起来) 【参数】 【table】主表.子表(链式结构) 【property】子表字段(数值类型) 【返回值】子表某字段的和(数值类型