@farris/ui-vue 1.8.1 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1769,8 +1769,8 @@ function Tt(t, e, n) {
|
|
|
1769
1769
|
resizeable: !0,
|
|
1770
1770
|
render: () => F(ue, {
|
|
1771
1771
|
ref: x,
|
|
1772
|
-
modelValue: f,
|
|
1773
|
-
"onUpdate:modelValue": (E) => f = E,
|
|
1772
|
+
modelValue: f.value,
|
|
1773
|
+
"onUpdate:modelValue": (E) => f.value = E,
|
|
1774
1774
|
designerHostService: t,
|
|
1775
1775
|
idField: "id",
|
|
1776
1776
|
textField: "text",
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
</span>`:t.columnTemplate=`
|
|
6
6
|
<span class="f-pretend-link f-cursor-pointer">
|
|
7
7
|
{{rowData.${t.field}}}
|
|
8
|
-
</span>`),e==="columnTemplateType"&&n==="default"&&(t.columnTemplate=""),e==="columnTemplateType"&&n==="custom"&&(t.columnTemplate=""))},convertFrom:(t,e,n)=>e==="columnTemplate"?t.columnTemplate:e==="columnTemplateType"?t.columnTemplateType?t.columnTemplateType||"default":t.columnTemplate&&!t.onClickLinkCommand?"custom":t.columnTemplate&&t.onClickLinkCommand?"hyperlink":"default":""},je={convertTo:(t,e,n,r)=>{t.hierarchy||(t.hierarchy={cascadeOption:{}}),t.hierarchy.cascadeOption||(t.hierarchy.cascadeOption={}),t.hierarchy.cascadeOption[e]=n},convertFrom:(t,e,n)=>{var r,o;return!!((o=(r=t.hierarchy)==null?void 0:r.cascadeOption)!=null&&o[e])}};function J(t,e,n){const r=new Map([["/converter/appearance.converter",me],["/converter/buttons.converter",pe],["/converter/property-editor.converter",ge],["/converter/items-count.converter",Me],["/converter/type.converter",be],["/converter/change-editor.converter",he],["/converter/change-formatter.converter",ye],["/converter/column-command.converter",Ce],["/converter/column-option.converter",xe],["/converter/summary.converter",we],["/converter/group.converter",Se],["/converter/form-group-label.converter",Ve],["/converter/field-selector.converter",Ee],["/converter/pagination.converter",Te],["/converter/row-number.converter",Pe],["/converter/grid-selection.converter",Fe],["/converter/size.converter",Ie],["/converter/change-formatter-enum.converter",Ne],["/converter/grid-sort.converter",Oe],["/converter/grid-filter.converter",ke],["/converter/row-option.converter",Re],["/converter/change-formatter-type.converter",Be],["/converter/tree-auto-check.converter",je]]),o=new Map([["string",{type:"input-group",enableClear:!1}],["boolean",{type:"combo-list",textField:"name",valueField:"value",idField:"value",enableClear:!1,editable:!1,data:[{value:!0,name:"是"},{value:!1,name:"否"}]}],["enum",{type:"combo-list",maxHeight:128,enableClear:!1,editable:!1}],["array",{type:"button-edit"}],["number",{type:"number-spinner",placeholder:""}],["events-editor",{type:"events-editor",hide:!0}],["multiLanguage",{type:"language-textbox"}]]),i=fe();function s(u,f){return()=>i.parseValueSchema(u,f)}function v(u,f,c){return u.includes("visible")&&f.visible!==void 0?typeof f.visible=="boolean"?()=>!!f.visible:f.visible===void 0?!0:s(f.visible,c):()=>!0}function a(u,f,c){return u.includes("readonly")&&f.readonly!==void 0?typeof f.readonly=="boolean"?()=>!!f.readonly:s(f.readonly,c):()=>!1}function d(u,f){const c=u.$converter||f;return typeof c=="string"&&c&&r.has(c)?r.get(c)||null:c||null}function m(u,f,c,y,w,M="",N=""){return Object.keys(u).map(E=>{const k=g.ref(1),O=E,x=u[E],b=Object.keys(x),T=x.title,V=x.type,h=o.get(V)||{type:"input-group",enableClear:!1},S=x.editor?Object.assign({},h,x.editor):Object.assign({},h),D=v(b,x,f),z=a(b,x,f);S.readonly=S.readonly===void 0?z():S.readonly;const _=x.type==="cascade"?m(x.properties,f,c,y,w,M,N):[],L=!0;let B=d(x,N);const He=g.computed({get(){if(k.value){if(["class","style"].find(A=>A===O)&&!B&&(B=r.get("/converter/appearance.converter")||null),B&&B.convertFrom){const A=B.convertFrom(c,E,w,M);return A===void 0&&Object.prototype.hasOwnProperty.call(x,"defaultValue")?x.type==="boolean"?x.defaultValue:x.defaultValue||"":A}const j=c[E];return Object.prototype.hasOwnProperty.call(x,"defaultValue")&&(j===void 0||typeof j=="string"&&j==="")?x.type==="boolean"?x.defaultValue:x.defaultValue||"":j}return null},set(j){k.value+=1,B&&B.convertTo?(B.convertTo(y,E,j,w,M),B.convertTo(c,E,j,w,M)):(y[E]=j,c[E]=j)}}),{refreshPanelAfterChanged:Ye,description:Je,isExpand:Qe,parentPropertyID:Xe}=x,ie={propertyID:O,propertyName:T,propertyType:V,propertyValue:He,editor:S,visible:D,readonly:z,cascadeConfig:_,hideCascadeTitle:L,refreshPanelAfterChanged:Ye,description:Je,isExpand:Qe,parentPropertyID:Xe};return f[O]=ie,ie})}function l(u,f,c={}){const y={},w=t[u];return w&&w.categories?Object.keys(w.categories).map(N=>{const I=w.categories[N],E=I==null?void 0:I.title,k=m(I.properties||{},y,{},c,f);return{categoryId:N,categoryName:E,properties:k}}):[]}function p(u,f,c,y,w=""){const M=f.$ref.schema,N=f.$ref.converter,I=c[M],E=I.type,k=n(I),O={},x=t[E];if(x&&x.categories){const b=x.categories[u],T=b==null?void 0:b.title;N&&Object.keys(b.properties).forEach(S=>{b.properties[S].$converter=N});const V=(b==null?void 0:b.properties)||{},h=m(V,O,k,I,y,w);return{categoryId:u,categoryName:T,properties:h}}return{categoryId:u,categoryName:"",properties:[]}}function C(u,f,c,y,w){const M=u.type,N=n(u),I={};let E=w||t[M];if(!(E&&Object.keys(E).length>0)&&c&&c.getPropConfig&&(E=c.getPropConfig(y)),E&&E.categories){const O=[];return Object.keys(E.categories).map(x=>{const b=E.categories[x];if(b.$ref){O.push(p(x,b,u,f,y));return}const T=b==null?void 0:b.title,V=b==null?void 0:b.tabId,h=b==null?void 0:b.tabName,S=b==null?void 0:b.hide,D=b==null?void 0:b.hideTitle,z=m(b.properties||{},I,N,u,f,y,b.$converter),{setPropertyRelates:_}=b,L=b==null?void 0:b.parentPropertyID;O.push({categoryId:x,categoryName:T,tabId:V,tabName:h,hide:S,properties:z,hideTitle:D,setPropertyRelates:_,parentPropertyID:L})}),O}return[]}return{getPropertyConfigBySchema:C,getPropertyConfigByType:l,propertyConverterMap:r}}const Q={},X={};J(Q,X,ce);const Z={},K={},{resolveSchemaWithDefaultValue:Ue}=G(Z,K),ee={},te={};J(ee,te,Ue);function De(t,e,n=new Map,r=(s,v,a,d)=>v,o={},i=s=>s){return H[e.title]=e,Y[e.title]=r,Q[e.title]=o,X[e.title]=i,Z[e.title]=e,K[e.title]=r,ee[e.title]=o,te[e.title]=i,(s={},v=!0)=>{if(!v)return ue(s,n);const a=de(s,e,n),d=Object.keys(t).reduce((m,l)=>(m[l]=t[l].default,m),{});return Object.assign(d,a)}}const $e={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/collection-property-editor.schema.json",title:"collection-property-editor",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for collection-property-editor",type:"string"},type:{description:"The type string of collection-property-editor",type:"string",default:"collection-property-editor"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},modelValue:{type:"array",default:[]},idField:{type:"string",default:"id"},textField:{type:"string",default:""},defaultComponentSchema:{type:"object",default:{}},modalTitle:{type:"string",default:"编辑器"},visibleCondition:{type:"object",default:null},allowCollapse:{type:"boolean",default:!0},enableClear:{type:"boolean",default:!1}},required:["type"],ignore:["id"]},ne={modelValue:{type:Array,default:[]},idField:{type:String,default:"id"},textField:{type:String,default:""},defaultComponentSchema:{type:Object,default:{}},isToolbarHidden:{type:Boolean,default:!1},useFormCommand:{type:Object,default:{}},useFormSchema:{type:Object,default:{}},visibleCondition:{type:Function,default:null},allowCollapse:{type:Boolean,default:!0},enableClear:{type:Boolean,default:!1},designerHostService:{type:Object,default:null}},re={...ne,modalTitle:{type:String,default:"编辑器"}},ze=De(re,$e),oe=g.defineComponent({name:"CollectionPropertyContainer",props:ne,emits:["valueChange","selectionChange"],setup(t,e){const n=g.ref(),r=g.ref(),{idField:o,textField:i,defaultComponentSchema:s,isToolbarHidden:v}=t,a=g.ref(t.modelValue||[]),d=g.ref(),m=g.ref("collection-property-editor");g.provide("useFormCommand",t.useFormCommand),g.provide("useFormSchema",t.useFormSchema),g.provide("designerHostService",t.designerHostService);const l=g.ref(),p=g.computed(()=>!a.value||a.value.length===0),C=[{field:i,title:"名称",width:340,resizable:!0,dataType:"string"}],u=g.computed(()=>a.value.filter(h=>t.visibleCondition?t.visibleCondition(h):!0));function f(){const h=R.cloneDeep(s),S=Math.random().toString().slice(2,6);return h[o]=h[o]+"_"+S,h[i]=h[i]+"_"+S,h}function c(h){l.value=h,e.emit("selectionChange",{selectedData:l,propertyConfig:d,propertyPanelRef:r.value}),r.value.updatePropertyConfig(d.value,l.value,!0)}function y(h){if(h>=a.value.length&&(h=a.value.length-1),a.value.length>0){const S=a.value[h];n.value.selectItemById(S[o]),c(S)}}function w(){const h=f();a.value.push(h),n.value.updateDataSource(u.value),n.value.selectItemById(h[o]),c(h)}function M(){const h=a.value&&a.value.length>0?a.value[0]:null;h&&(n.value.selectItemById(h[o]),c(h))}function N(){const h=a.value.indexOf(l.value);a.value.splice(h,1),n.value.updateDataSource(u.value),y(h)}function I(){if(!l.value)return;const h=a.value.indexOf(l.value);h!==a.value.length-1&&(a.value[h]=a.value[h+1],a.value[h+1]=l.value,n.value.updateDataSource(u.value))}function E(){W.FMessageBoxService.question("您确定要清空所有按钮吗?","",()=>{a.value=[],n.value.updateDataSource([]),e.emit("clear")},()=>{})}function k(){if(!l.value)return;const h=a.value.indexOf(l.value);h!==0&&(a.value[h]=a.value[h-1],a.value[h-1]=l.value,n.value.updateDataSource(u.value))}function O(h){c(h[0])}function x(h){const{changeObject:S,designerItem:D}=h;n.value.updateDataSource(u.value)}g.onMounted(()=>{g.nextTick(()=>{M()})});const b=g.computed(()=>!l.value||p.value),T=g.computed(()=>b.value||a.value.length<=1?!1:a.value.findIndex(S=>S.id===l.value.id)>0),V=g.computed(()=>b.value||a.value.length<=1?!1:a.value.findIndex(S=>S.id===l.value.id)<a.value.length-1);return e.expose({propertyPanelRef:r}),()=>g.createVNode("div",{class:"f-utils-fill-flex-column h-100 pt-2 pl-2 border-bottom"},[g.createVNode("div",{hidden:v,class:"border-bottom pb-2"},[g.createVNode("button",{class:"btn btn-primary mr-2",onClick:w},[g.createTextVNode("新增")]),g.createVNode("button",{class:"btn btn-secondary mr-2",onClick:N,disabled:b.value},[g.createTextVNode("删除")]),g.createVNode("button",{class:"btn btn-secondary mr-2",onClick:k,disabled:!T.value},[g.createTextVNode("上移")]),g.createVNode("button",{class:"btn btn-secondary mr-2",onClick:I,disabled:!V.value},[g.createTextVNode("下移")]),t.enableClear&&g.createVNode("button",{class:"btn btn-secondary mr-2 d-flex align-items-center",style:"float:right",onClick:E,disabled:p.value},[g.createVNode("i",{class:"f-icon f-icon-close mr-1"},null),g.createTextVNode("清空")])]),g.createVNode("div",{class:"f-utils-fill-flex-row"},[g.createVNode("div",{class:"f-utils-fill f-utils-overflow-auto"},[g.createVNode(ae.FTreeView,{ref:n,columns:C,data:u.value,rowOption:{disabledField:"undefined"},fit:"true",idField:o,columnOption:{fitColumns:!0},onSelectionChange:O},null)]),g.createVNode("div",{hidden:p.value,style:"display: flex;"},[g.createVNode(se.FPropertyPanel,{propertyConfig:d.value,ref:r,propertyName:m.value,enableSearch:!1,allowCollapse:t.allowCollapse,onPropertyChanged:x},null)])])])}}),q=g.defineComponent({name:"FCollectionPropertyEditor",props:re,emits:["valueChange","selectionChange"],setup(t,e){const n=g.ref(),r=g.inject("useFormCommand"),o=g.inject("useFormSchema"),i=g.ref(R.cloneDeep(t.modelValue)||[]),s=g.ref();g.watch(()=>t.modelValue,c=>{i.value=R.cloneDeep(c)||[]});const v=g.computed(()=>{var c;return(c=s.value)==null?void 0:c.getModal()}),a=g.computed(()=>{let c=0;return i.value&&(t.visibleCondition?c=i.value.filter(t.visibleCondition).length:c=i.value.length),`共 ${c||0} 项`});function d(c){Object.keys(c).forEach(y=>{y.indexOf("__fv")>-1&&delete c[y]})}function m(c){c&&c.forEach(y=>{d(y)})}function l(){return m(i.value),e.emit("valueChange",i.value),!0}function p(){return!0}function C({selectedData:c,propertyConfig:y}){d(c.value),e.emit("selectionChange",{selectedData:c,propertyConfig:y,modalRef:v.value,buttonPropertyPanelInstance:n.value.propertyPanelRef})}function u(){i.value=[]}const f={title:t.modalTitle||"编辑器",width:650,height:700,minWidth:380,minHeight:400,fitContent:!1,showMaxButton:!0,resizeable:!0,draggable:!0,enableEsc:!0,buttons:[{name:"cancel",text:"取消",class:"btn btn-secondary",handle:p},{name:"accept",text:"确定",class:"btn btn-primary",handle:l}],closedCallback:(c,y)=>{if((c==null?void 0:c.target.name)==="cancel"||y==="icon"||y==="esc")return i.value=R.cloneDeep(t.modelValue),e.emit("valueChange",i.value),!0;!c&&y==="button"&&l()}};return()=>g.createVNode(U.FButtonEdit,{modelValue:a.value,"onUpdate:modelValue":c=>a.value=c,editable:!1,enableTitle:!0,inputType:"text",buttonBehavior:"Modal",modalOptions:f,ref:s},{default:()=>[g.createVNode("div",{class:"h-100 d-flex flex-column"},[g.createVNode(oe,{ref:n,modelValue:i.value,"onUpdate:modelValue":c=>i.value=c,idField:t.idField,textField:t.textField,defaultComponentSchema:t.defaultComponentSchema,onSelectionChange:C,useFormCommand:r,useFormSchema:o,allowCollapse:t.allowCollapse,visibleCondition:t.visibleCondition,enableClear:t.enableClear,onClear:u},null)])]})}});function Ae(t){const{formSchemaUtils:e,formStateMachineUtils:n}=t;function r(a,d=""){return{path:d+a.code,field:a.id,fullPath:a.code}}function o(a,d=""){const m=e.getViewModelById(a);return m?m.states.map(l=>r(l,d)):[]}function i(a){const d=e.getRootViewModelId(),m=o(a);if(a===d)return m;const l=o(d,"root-component.");return[...m,...l]}function s(a){return a.binding&&a.binding.path||a.id||""}function v(){return n&&n.getRenderStates()||[]}return{getVariables:i,getControlName:s,getStateMachines:v}}class qe{constructor(e){F(this,"sessionVariables",[{key:"CurrentSysOrgName",name:"当前组织Name",description:"当前组织Name"},{key:"CurrentSysOrgId",name:"当前组织Id",description:"当前组织Id"},{key:"CurrentUserName",name:"当前用户Name",description:"当前用户Name"},{key:"CurrentUserCode",name:"当前用户Code",description:"当前用户Code"},{key:"CurrentUserId",name:"当前用户Id",description:"当前用户Id"},{key:"CurrentLanguage",name:"当前语言编号",description:"当前登录的语言编号,例如简体中文返回'zh-CHS',英文返回'en',繁体中文'zh-CHT'"}]);F(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});F(this,"getExpressionConverter",(e,n)=>({convertFrom:(r,o,i,s)=>{const v=i.getExpressionRuleValue(e,n||o);return v&&v.value||""},convertTo:(r,o,i,s,v)=>{var a;if(o==="dataPicking"&&(i!=null&&i.target)){const d=`${i.target}_dataPicking`;((a=i.rules)==null?void 0:a.some(l=>l.id===d&&l.value))?r.dictPickingExpressionId=d:delete r.dictPickingExpressionId}s.updateExpression(i)}}));this.formSchemaService=e}getExpressionRule(e,n){const r=this.getExpressionData();if(!r)return"";const o=r.find(s=>s.target===e);if(!o)return"";const i=o.rules.find(s=>s.type===n);return i||""}getContextFormVariables(){const{module:e}=this.formSchemaService.getFormSchema();if(!e.viewmodels||e.viewmodels.length===0)return[];const n=this.formSchemaService.getRootViewModelId(),r=this.formSchemaService.getViewModelById(n);if(!r||!r.states||r.states.length===0)return[];const o=[];return r.states.filter(i=>i.category==="remote").forEach(i=>{o.push({key:i.code,name:i.name,description:i.name,category:i.category})}),o}createTreeNode(e,n,r="label"){return{id:e.id,name:e.name,bindingPath:e[r],parents:n,type:"field"}}buildEntityFieldsTreeData(e=null,n){const r=[];return e==null||e.forEach(o=>{var v;const i=this.createTreeNode(o,n);let s=[];(v=o.type)!=null&&v.fields&&(s=this.buildEntityFieldsTreeData(o.type.fields,[...n,o.label])),r.push({data:i,children:s,expanded:!0})}),r}buildChildEntityTreeData(e=null,n){const r=[];return e==null||e.forEach(o=>{var a,d;const i=this.createTreeNode(o,n);i.type="entity";const s=this.buildEntityFieldsTreeData((a=o.type)==null?void 0:a.fields,[...n,o.label]),v=this.buildChildEntityTreeData((d=o.type)==null?void 0:d.entities,[...n,o.label]);v!=null&&v.length&&(s==null||s.push(...v)),r.push({data:i,children:s||[],expanded:!0})}),r}getEntitiesTreeData(){const e=this.formSchemaService.getSchemaEntities();if(!(e!=null&&e.length))return[];const n=e[0];if(!(n!=null&&n.type))return[];const r=this.buildEntityFieldsTreeData(n.type.fields,[n.code]),o=this.buildChildEntityTreeData(n.type.entities,[n.code]);return o!=null&&o.length&&(r==null||r.push(...o)),{entityCode:n.code,fields:[{data:this.createTreeNode(n,[],"code"),children:r||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(e,n,r){const o=r==="Field"?e.binding.field:e.id,i=this.getExpressionRule(o,n),s=this.getEntitiesAndVariables(),v={message:["validate","required","dataPicking"].includes(n)&&i?i.message:"",...s};return i.messageType!=null&&(v.messageType=i.messageType),v}buildRule(e,n,r,o){const{expression:i,message:s,messageType:v}=n,a={id:`${e}_${r}`,type:r,value:i};return(r==="validate"||r==="dataPicking"||r==="required")&&(a.message=s),r==="dataPicking"&&(a.messageType=v),r==="validate"&&o&&(a.elementId=o),a}getExpressionData(){const{expressions:e}=this.formSchemaService.getFormSchema().module;return e||[]}updateExpression(e,n,r,o){const i=n==="Field"?e.binding.field:e.id,s=this.buildRule(i,r,o,e.type==="form-group"?e.id:"");let a=this.getExpressionData().find(m=>m.targetType===n&&m.target===i);const d=m=>m.value.trim()==="";if(a){const m=a.rules.find(l=>l.id===s.id);if(m)d(s)?a.rules=a.rules.filter(l=>l.id!==s.id):(Object.assign(m,s),o==="validate"&&e.type==="form-group"&&(m.elementId=e.id));else{if(d(s))return null;a.rules=a.rules||[],a.rules.push(s)}}else{if(d(s))return null;a={target:`${i}`,rules:[s],targetType:n}}return a}getExpressionEditorOptions(e,n,r,o){return r.reduce((i,s)=>{var a,d;const v=n==="Field"?(a=e==null?void 0:e.binding)==null?void 0:a.field:e.id;return i[s]={hide:n==="Field"?!!((d=e==null?void 0:e.binding)!=null&&d.field):!1,description:"",title:this.expressionNames[s],type:"string",$converter:this.getExpressionConverter(v),refreshPanelAfterChanged:!0,editor:{type:"expression-editor",singleExpand:!1,dialogTitle:`${this.expressionNames[s]}编辑器`,showMessage:s==="validate"||s==="dataPicking"||s==="required",showMessageType:s==="dataPicking",beforeOpen:()=>this.onBeforeOpenExpression(e,s,n),onSubmitModal:m=>{const l=this.updateExpression(e,n,m,s);if(o){const p=this.buildRule(v,m,s);o(p)}return l}}},i},{})}getExpressionInfo(e,n,r){const o=n==="Field"?e.binding.field:e.id,i=this.getExpressionRule(o,r),s={value:i&&i.value,targetId:o,targetType:n,expressionType:r};return i&&i.message&&(s.message=i.message),s}getExpressionConfig(e,n,r=["compute","dependency","validate"],o){var i;return{description:"表达式",title:"表达式",hide:!(e.binding&&((i=e.binding)==null?void 0:i.type)==="Form"),properties:{...this.getExpressionEditorOptions(e,n,r,o)}}}getExpressionOptions(e,n,r){const o=this.getExpressionInfo(e,n,r);return{dialogTitle:`${this.expressionNames[r]||"表达式"}编辑器`,singleExpand:!1,showMessage:r==="required",beforeOpen:()=>this.onBeforeOpenExpression(e,r,n),expressionInfo:o}}}class _e{constructor(e,n){F(this,"componentId");F(this,"viewModelId");F(this,"eventsEditorUtils");F(this,"formSchemaUtils");F(this,"formMetadataConverter");F(this,"designViewModelUtils");F(this,"designViewModelField");F(this,"controlCreatorUtils");F(this,"designerHostService");F(this,"designerContext");F(this,"modalService",null);F(this,"formRule",null);F(this,"schemaService",null);F(this,"metadataService",null);F(this,"propertyConfig",{type:"object",categories:{}});F(this,"expressionProperty");var r;this.componentId=e,this.designerHostService=n,this.eventsEditorUtils=n.eventsEditorUtils,this.formSchemaUtils=n.formSchemaUtils,this.formMetadataConverter=n.formMetadataConverter,this.viewModelId=((r=this.formSchemaUtils)==null?void 0:r.getViewModelIdByComponentId(e))||"",this.designViewModelUtils=n.designViewModelUtils,this.controlCreatorUtils=n.controlCreatorUtils,this.metadataService=n.metadataService,this.schemaService=n.schemaService,this.designerContext=n.designerContext,this.modalService=n.modalService,this.expressionProperty=new qe(this.formSchemaUtils)}inResponsiveForm(){var e;return!!((e=this.designerContext)!=null&&e.responsiveForm)}getFormDesignerInstance(){var e,n;return(n=(e=this.designerContext)==null?void 0:e.instances)==null?void 0:n.formDesigner.value}getTableInfo(){var e;return(e=this.schemaService)==null?void 0:e.getTableInfoByViewModelId(this.viewModelId)}setDesignViewModelField(e){var r;const n=e.binding&&e.binding.type==="Form"&&e.binding.field;if(n){if(!this.designViewModelField){const o=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=o.fields.find(i=>i.id===n)}e.updateOn=(r=this.designViewModelField)==null?void 0:r.updateOn}}getBasicPropConfig(e){return{description:"Basic Information",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"combo-list",textField:"name",valueField:"value",idField:"value",editable:!1,data:[{value:e.type,name:$.DgControl[e.type]&&$.DgControl[e.type].name}]}}}}}getAppearanceConfig(e=null,n={},r){const o={title:"外观",description:"Appearance"},i={class:{title:"class样式",type:"string",description:"组件的CSS样式",$converter:"/converter/appearance.converter",parentPropertyID:"appearance"},style:{title:"style样式",type:"string",description:"组件的样式",$converter:"/converter/appearance.converter",parentPropertyID:"appearance"}};for(const s in n)i[s]=Object.assign(i[s]||{},n[s]);return{...o,properties:{...i},setPropertyRelates(s,v){if(s){switch(s&&s.propertyID){case"class":case"style":{$.canvasChanged.value++;break}}r&&r(s,e,v)}}}}getPropertyEditorParams(e,n=[],r="visible",o={},i={},s=""){const{getVariables:v,getControlName:a,getStateMachines:d}=Ae(this.designerHostService),m=this.getRealTargetType(e),l=n&&n.length>0?n:["Const","Variable","StateMachine","Expression"],p={type:"property-editor",propertyTypes:l};return l.map(C=>{switch(C){case"Const":Object.assign(p,{constType:"enum",constEnums:[{id:!0,name:"是"},{id:!1,name:"否"}]},o);break;case"Expression":p.expressionConfig=this.getExpressionOptions(e,m,s||r);break;case"StateMachine":p.stateMachines=d();break;case"Variable":Object.assign(p,{controlName:a(e),newVariablePrefix:"is",newVariableType:"Boolean",variables:v(this.viewModelId),parentComponentId:this.componentId==="root-component"?"":"root-component",onBeforeOpenVariables:u=>{u.value=v(this.viewModelId)}},i),this.designerContext.designerMode==="PC_RTC"&&(p.newVariablePrefix="ext_"+p.newVariablePrefix);break}}),p}getVisibleProperty(e,n=""){var i;let r=["Const","Variable","StateMachine","Expression"];return n==="gridFieldEditor"?r=["Const","Expression"]:n==="form-group"&&!((i=e.binding)!=null&&i.field)?r=["Const","Variable","StateMachine","Custom"]:n==="dataGrid"||n==="treeGrid"||n==="wizard"?r=["Const","Variable","Expression"]:(e.type.indexOf("toolbar-item")>-1||n==="form-group")&&(r=["Const","Variable","StateMachine","Custom","Expression"]),{visible:{title:"是否可见",type:"boolean",description:"运行时组件是否可见",editor:this.getPropertyEditorParams(e,r,"visible")}}}getBehaviorConfig(e,n="",r={},o){const i={title:"行为",description:""},s=this.getVisibleProperty(e,n);for(const a in r)s[a]=Object.assign(s[a]||{},r[a]);const v=this;return{...i,properties:{...s},setPropertyRelates(a,d){if(a){switch(a.propertyID){case"disabled":case"readonly":case"visible":v.afterMutilEditorChanged(e,a);break}o&&o(a,d)}}}}afterMutilEditorChanged(e,n){this.addNewVariableToViewModel(n,this.viewModelId),this.updateExpressionValue(n,e),this.clearExpression(n,e)}updateElementByParentContainer(e,n){const r=n&&n.parent&&n.parent.schema;if(!r)return;const o=r.contents.findIndex(s=>s.id===e),i=R.cloneDeep(r.contents[o]);r.contents.splice(o,1),r.contents.splice(o,0,i),$.refreshCanvas()}addNewVariableToViewModel(e,n){const r=e.propertyValue;if(!(r&&typeof r=="object")||!(r.type==="Variable"&&r.isNewVariable))return;const s={id:r.field,category:"locale",code:r.fullPath,name:r.fullPath,type:r.newVariableType||"String",isRtcVariable:this.designerContext.designerMode==="PC_RTC"?!0:void 0};delete r.newVariableType,delete r.isNewVariable,this.formSchemaUtils.getVariableByCode(s.code)||this.formSchemaUtils.getViewModelById("root-viewmodel").states.push(s)}getExpressions(){let e=[];return this.formRule?(this.formRule.expressions=this.formRule.expressions||[],e=this.formRule.expressions||[]):e=this.formSchemaUtils.getExpressions(),e}updateExpressionValue(e,n){const r=e.propertyValue;if(!((r&&r.type)==="Expression"&&r.expressionInfo))return;const{expressionId:s,expressionInfo:v}=r,{targetId:a,targetType:d,expressionType:m,value:l,message:p}=v,C=this.getExpressions();let u=C.find(c=>c.target===a);u||(u={target:a,rules:[],targetType:d},C.push(u));const f=u.rules.find(c=>c.type===m);if(f)f.id=s,f.value=l,f.message=p,(m==="minDate"||m==="maxDate"||m==="defaultTime")&&(f.elementId=n.id);else{const c={id:s,type:m,value:l,message:p,elementId:n.id};u.rules.push(c)}delete r.expressionInfo}clearExpression(e,n){const r=e.propertyValue;if(r&&r.type==="Expression")return;const i=e.propertyID,s=this.getExpressions(),v=n.binding?n.binding.field:n.id,a=s.find(d=>d.target===v);!a||!a.rules||(a.rules=a.rules.filter(d=>d.type!==i))}getExpressionOptions(e,n,r){return this.expressionProperty.getExpressionOptions(e,n,r)}getRealTargetType(e){return["response-toolbar-item","tab-toolbar-item","section-toolbar-item","drawer-toolbar-item"].indexOf(e.type)>-1?"Button":e.binding&&e.binding.field?"Field":"Container"}createBaseEventProperty(e){const n={};return n[this.viewModelId]={type:"events-editor",editor:{initialData:e,viewSourceHandle:r=>{var o;((o=r.controller)==null?void 0:o.label.indexOf(this.formSchemaUtils.getModule().code))>-1&&this.eventsEditorUtils.jumpToMethod(r)}}},n}}class Le extends _e{constructor(e,n,r=!0){super(e,n),this.isRealButton=r}getPropertyConfig(e,n=!1,r=!0,o=null){this.propertyConfig.categories.basic=this.getBasicPropConfig(e),this.propertyConfig.categories.basic.properties.text={title:"文本",type:"string",description:"",refreshPanelAfterChanged:r},this.propertyConfig.categories.basic.setPropertyRelates=s=>{if(s)switch(s&&s.propertyID){case"text":{s.needRefreshControlTree=!0;break}}},this.getAppearanceProperties(e,n);const i=this.getPropertyEditorParams(e,["Const","Variable","StateMachine","Expression","Custom"],"disabled");return this.propertyConfig.categories.behavior=this.getBehaviorConfig(e,"",{disabled:{title:"禁用",type:"boolean",description:"按钮禁用状态",editor:i}}),this.getEventPropConfig(e,o),this.propertyConfig}getAppearanceProperties(e,n=!1){this.propertyConfig.categories.appearance={title:"外观",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:"",$converter:"/converter/appearance.converter",parentPropertyID:"appearance",visible:!n},icon:{title:"图标",type:"string",description:""}}}}getEventPropConfig(e,n=null){const r=[{label:"onClick",name:"点击事件"}],o=this,i=o.eventsEditorUtils.formProperties(e,o.viewModelId,r);let s={};this.isRealButton?s=o.createBaseEventProperty(i):s[this.viewModelId]={type:"events-editor",editor:{initialData:i}},this.propertyConfig.categories.eventsEditor={title:"事件",hideTitle:!0,properties:s,refreshPanelAfterChanged:!0,tabId:le.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(v,a){const d=v.propertyValue;if(delete e[o.viewModelId],d){d.setPropertyRelates=this.setPropertyRelates;const m=()=>{o.eventsEditorUtils.saveRelatedParameters(e,o.viewModelId,d.events,d)};o.isRealButton?m():d.isAddControllerMethod?(d.controlInfo={type:e.type,name:e.text},W.FMessageBoxService.question("确定关闭当前编辑器并跳转到代码视图吗?","",()=>{n==null||n.close(),m()},()=>{})):m()}}}}}function We(t,e,n){const{modalService:r,formSchemaUtils:o,eventsEditorUtils:i,dialogCodeView:s,useFormCommand:v}=t,{componentId:a,modalPropertyData:d,viewModelId:m,onSubmitHandle:l,onCancelHandle:p,defaultClass:C,forModalFooter:u}=e,f=g.ref(e.buttons),c={id:"button",type:"button",text:"按钮",appearance:{class:C||"btn btn-secondary"},visible:!0,disabled:!1,onClick:""},y=new Le(a,t,!1),w=g.ref(),M=R.cloneDeep(e.buttons||[]);function N(){f.value=[]}const I=x=>x.map(b=>{const T={...b};return Object.keys(T).forEach(V=>{V.startsWith("__fv_")&&delete T[V]}),T});function E(){const x=I(f.value);if(l)return typeof l=="function"&&l(x);{const b=o.getExternalComponents().find(T=>T.id===d.id);return b&&(b.buttons=x),!0}}function k({selectedData:x,propertyConfig:b,propertyPanelRef:T}){if(b.value=y.getPropertyConfig(x.value,!1,!1),b.value.categories.behavior.properties.disabled.refreshPanelAfterChanged=!1,u){const{visible:V,disabled:h}=b.value.categories.behavior.properties;V.editor.propertyTypes=["Const"],h.editor.propertyTypes=["Const"]}b.value.categories.eventsEditor.setPropertyRelates=(V,h)=>{const S=V.propertyValue;if(delete x.value[m],S){const D=()=>{i.saveRelatedParameters(x.value,m,S.events,S)};S.isAddControllerMethod&&(S.controlInfo={type:x.value.type,name:x.value.text},t.dialogCodeView.closeCallback=()=>{T==null||T.reloadPropertyPanel()}),D()}},n&&n(b.value)}function O(x){const b=r==null?void 0:r.open({fitContent:!1,width:800,height:600,title:"自定义按钮",showMaxButton:!0,showButtons:!0,draggable:!0,resizeable:!0,render:()=>g.createVNode(oe,{ref:w,modelValue:f,"onUpdate:modelValue":T=>f=T,designerHostService:t,idField:"id",textField:"text",defaultComponentSchema:c,onSelectionChange:k,useFormCommand:v,useFormSchema:o,allowCollapse:!1,enableClear:!0,onClear:N},null),closedCallback:(T,V)=>{s.openCodeEditor=!1,x&&x()},buttons:[{name:"cancel",text:"取消",class:"btn btn-secondary",handle:T=>(s.openCodeEditor=!1,p&&p(M),!0)},{name:"accept",text:"确定",class:"btn btn-primary",handle:T=>{E()&&(b.close(),s.openCodeEditor=!1)}}]});s.openCodeEditor=!0}return{show:O}}const Ge={install(t){t.component(q.name,q)},register(t,e,n,r){t["collection-property-editor"]=q,e["collection-property-editor"]=ze}};P.default=Ge,P.useButtonItemsDesigner=We,Object.defineProperties(P,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
8
|
+
</span>`),e==="columnTemplateType"&&n==="default"&&(t.columnTemplate=""),e==="columnTemplateType"&&n==="custom"&&(t.columnTemplate=""))},convertFrom:(t,e,n)=>e==="columnTemplate"?t.columnTemplate:e==="columnTemplateType"?t.columnTemplateType?t.columnTemplateType||"default":t.columnTemplate&&!t.onClickLinkCommand?"custom":t.columnTemplate&&t.onClickLinkCommand?"hyperlink":"default":""},je={convertTo:(t,e,n,r)=>{t.hierarchy||(t.hierarchy={cascadeOption:{}}),t.hierarchy.cascadeOption||(t.hierarchy.cascadeOption={}),t.hierarchy.cascadeOption[e]=n},convertFrom:(t,e,n)=>{var r,o;return!!((o=(r=t.hierarchy)==null?void 0:r.cascadeOption)!=null&&o[e])}};function J(t,e,n){const r=new Map([["/converter/appearance.converter",me],["/converter/buttons.converter",pe],["/converter/property-editor.converter",ge],["/converter/items-count.converter",Me],["/converter/type.converter",be],["/converter/change-editor.converter",he],["/converter/change-formatter.converter",ye],["/converter/column-command.converter",Ce],["/converter/column-option.converter",xe],["/converter/summary.converter",we],["/converter/group.converter",Se],["/converter/form-group-label.converter",Ve],["/converter/field-selector.converter",Ee],["/converter/pagination.converter",Te],["/converter/row-number.converter",Pe],["/converter/grid-selection.converter",Fe],["/converter/size.converter",Ie],["/converter/change-formatter-enum.converter",Ne],["/converter/grid-sort.converter",Oe],["/converter/grid-filter.converter",ke],["/converter/row-option.converter",Re],["/converter/change-formatter-type.converter",Be],["/converter/tree-auto-check.converter",je]]),o=new Map([["string",{type:"input-group",enableClear:!1}],["boolean",{type:"combo-list",textField:"name",valueField:"value",idField:"value",enableClear:!1,editable:!1,data:[{value:!0,name:"是"},{value:!1,name:"否"}]}],["enum",{type:"combo-list",maxHeight:128,enableClear:!1,editable:!1}],["array",{type:"button-edit"}],["number",{type:"number-spinner",placeholder:""}],["events-editor",{type:"events-editor",hide:!0}],["multiLanguage",{type:"language-textbox"}]]),i=fe();function s(u,f){return()=>i.parseValueSchema(u,f)}function v(u,f,c){return u.includes("visible")&&f.visible!==void 0?typeof f.visible=="boolean"?()=>!!f.visible:f.visible===void 0?!0:s(f.visible,c):()=>!0}function a(u,f,c){return u.includes("readonly")&&f.readonly!==void 0?typeof f.readonly=="boolean"?()=>!!f.readonly:s(f.readonly,c):()=>!1}function d(u,f){const c=u.$converter||f;return typeof c=="string"&&c&&r.has(c)?r.get(c)||null:c||null}function m(u,f,c,y,w,M="",N=""){return Object.keys(u).map(E=>{const k=g.ref(1),O=E,x=u[E],b=Object.keys(x),T=x.title,V=x.type,h=o.get(V)||{type:"input-group",enableClear:!1},S=x.editor?Object.assign({},h,x.editor):Object.assign({},h),D=v(b,x,f),z=a(b,x,f);S.readonly=S.readonly===void 0?z():S.readonly;const _=x.type==="cascade"?m(x.properties,f,c,y,w,M,N):[],L=!0;let B=d(x,N);const He=g.computed({get(){if(k.value){if(["class","style"].find(A=>A===O)&&!B&&(B=r.get("/converter/appearance.converter")||null),B&&B.convertFrom){const A=B.convertFrom(c,E,w,M);return A===void 0&&Object.prototype.hasOwnProperty.call(x,"defaultValue")?x.type==="boolean"?x.defaultValue:x.defaultValue||"":A}const j=c[E];return Object.prototype.hasOwnProperty.call(x,"defaultValue")&&(j===void 0||typeof j=="string"&&j==="")?x.type==="boolean"?x.defaultValue:x.defaultValue||"":j}return null},set(j){k.value+=1,B&&B.convertTo?(B.convertTo(y,E,j,w,M),B.convertTo(c,E,j,w,M)):(y[E]=j,c[E]=j)}}),{refreshPanelAfterChanged:Ye,description:Je,isExpand:Qe,parentPropertyID:Xe}=x,ie={propertyID:O,propertyName:T,propertyType:V,propertyValue:He,editor:S,visible:D,readonly:z,cascadeConfig:_,hideCascadeTitle:L,refreshPanelAfterChanged:Ye,description:Je,isExpand:Qe,parentPropertyID:Xe};return f[O]=ie,ie})}function l(u,f,c={}){const y={},w=t[u];return w&&w.categories?Object.keys(w.categories).map(N=>{const I=w.categories[N],E=I==null?void 0:I.title,k=m(I.properties||{},y,{},c,f);return{categoryId:N,categoryName:E,properties:k}}):[]}function p(u,f,c,y,w=""){const M=f.$ref.schema,N=f.$ref.converter,I=c[M],E=I.type,k=n(I),O={},x=t[E];if(x&&x.categories){const b=x.categories[u],T=b==null?void 0:b.title;N&&Object.keys(b.properties).forEach(S=>{b.properties[S].$converter=N});const V=(b==null?void 0:b.properties)||{},h=m(V,O,k,I,y,w);return{categoryId:u,categoryName:T,properties:h}}return{categoryId:u,categoryName:"",properties:[]}}function C(u,f,c,y,w){const M=u.type,N=n(u),I={};let E=w||t[M];if(!(E&&Object.keys(E).length>0)&&c&&c.getPropConfig&&(E=c.getPropConfig(y)),E&&E.categories){const O=[];return Object.keys(E.categories).map(x=>{const b=E.categories[x];if(b.$ref){O.push(p(x,b,u,f,y));return}const T=b==null?void 0:b.title,V=b==null?void 0:b.tabId,h=b==null?void 0:b.tabName,S=b==null?void 0:b.hide,D=b==null?void 0:b.hideTitle,z=m(b.properties||{},I,N,u,f,y,b.$converter),{setPropertyRelates:_}=b,L=b==null?void 0:b.parentPropertyID;O.push({categoryId:x,categoryName:T,tabId:V,tabName:h,hide:S,properties:z,hideTitle:D,setPropertyRelates:_,parentPropertyID:L})}),O}return[]}return{getPropertyConfigBySchema:C,getPropertyConfigByType:l,propertyConverterMap:r}}const Q={},X={};J(Q,X,ce);const Z={},K={},{resolveSchemaWithDefaultValue:Ue}=G(Z,K),ee={},te={};J(ee,te,Ue);function De(t,e,n=new Map,r=(s,v,a,d)=>v,o={},i=s=>s){return H[e.title]=e,Y[e.title]=r,Q[e.title]=o,X[e.title]=i,Z[e.title]=e,K[e.title]=r,ee[e.title]=o,te[e.title]=i,(s={},v=!0)=>{if(!v)return ue(s,n);const a=de(s,e,n),d=Object.keys(t).reduce((m,l)=>(m[l]=t[l].default,m),{});return Object.assign(d,a)}}const $e={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/collection-property-editor.schema.json",title:"collection-property-editor",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for collection-property-editor",type:"string"},type:{description:"The type string of collection-property-editor",type:"string",default:"collection-property-editor"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},modelValue:{type:"array",default:[]},idField:{type:"string",default:"id"},textField:{type:"string",default:""},defaultComponentSchema:{type:"object",default:{}},modalTitle:{type:"string",default:"编辑器"},visibleCondition:{type:"object",default:null},allowCollapse:{type:"boolean",default:!0},enableClear:{type:"boolean",default:!1}},required:["type"],ignore:["id"]},ne={modelValue:{type:Array,default:[]},idField:{type:String,default:"id"},textField:{type:String,default:""},defaultComponentSchema:{type:Object,default:{}},isToolbarHidden:{type:Boolean,default:!1},useFormCommand:{type:Object,default:{}},useFormSchema:{type:Object,default:{}},visibleCondition:{type:Function,default:null},allowCollapse:{type:Boolean,default:!0},enableClear:{type:Boolean,default:!1},designerHostService:{type:Object,default:null}},re={...ne,modalTitle:{type:String,default:"编辑器"}},ze=De(re,$e),oe=g.defineComponent({name:"CollectionPropertyContainer",props:ne,emits:["valueChange","selectionChange"],setup(t,e){const n=g.ref(),r=g.ref(),{idField:o,textField:i,defaultComponentSchema:s,isToolbarHidden:v}=t,a=g.ref(t.modelValue||[]),d=g.ref(),m=g.ref("collection-property-editor");g.provide("useFormCommand",t.useFormCommand),g.provide("useFormSchema",t.useFormSchema),g.provide("designerHostService",t.designerHostService);const l=g.ref(),p=g.computed(()=>!a.value||a.value.length===0),C=[{field:i,title:"名称",width:340,resizable:!0,dataType:"string"}],u=g.computed(()=>a.value.filter(h=>t.visibleCondition?t.visibleCondition(h):!0));function f(){const h=R.cloneDeep(s),S=Math.random().toString().slice(2,6);return h[o]=h[o]+"_"+S,h[i]=h[i]+"_"+S,h}function c(h){l.value=h,e.emit("selectionChange",{selectedData:l,propertyConfig:d,propertyPanelRef:r.value}),r.value.updatePropertyConfig(d.value,l.value,!0)}function y(h){if(h>=a.value.length&&(h=a.value.length-1),a.value.length>0){const S=a.value[h];n.value.selectItemById(S[o]),c(S)}}function w(){const h=f();a.value.push(h),n.value.updateDataSource(u.value),n.value.selectItemById(h[o]),c(h)}function M(){const h=a.value&&a.value.length>0?a.value[0]:null;h&&(n.value.selectItemById(h[o]),c(h))}function N(){const h=a.value.indexOf(l.value);a.value.splice(h,1),n.value.updateDataSource(u.value),y(h)}function I(){if(!l.value)return;const h=a.value.indexOf(l.value);h!==a.value.length-1&&(a.value[h]=a.value[h+1],a.value[h+1]=l.value,n.value.updateDataSource(u.value))}function E(){W.FMessageBoxService.question("您确定要清空所有按钮吗?","",()=>{a.value=[],n.value.updateDataSource([]),e.emit("clear")},()=>{})}function k(){if(!l.value)return;const h=a.value.indexOf(l.value);h!==0&&(a.value[h]=a.value[h-1],a.value[h-1]=l.value,n.value.updateDataSource(u.value))}function O(h){c(h[0])}function x(h){const{changeObject:S,designerItem:D}=h;n.value.updateDataSource(u.value)}g.onMounted(()=>{g.nextTick(()=>{M()})});const b=g.computed(()=>!l.value||p.value),T=g.computed(()=>b.value||a.value.length<=1?!1:a.value.findIndex(S=>S.id===l.value.id)>0),V=g.computed(()=>b.value||a.value.length<=1?!1:a.value.findIndex(S=>S.id===l.value.id)<a.value.length-1);return e.expose({propertyPanelRef:r}),()=>g.createVNode("div",{class:"f-utils-fill-flex-column h-100 pt-2 pl-2 border-bottom"},[g.createVNode("div",{hidden:v,class:"border-bottom pb-2"},[g.createVNode("button",{class:"btn btn-primary mr-2",onClick:w},[g.createTextVNode("新增")]),g.createVNode("button",{class:"btn btn-secondary mr-2",onClick:N,disabled:b.value},[g.createTextVNode("删除")]),g.createVNode("button",{class:"btn btn-secondary mr-2",onClick:k,disabled:!T.value},[g.createTextVNode("上移")]),g.createVNode("button",{class:"btn btn-secondary mr-2",onClick:I,disabled:!V.value},[g.createTextVNode("下移")]),t.enableClear&&g.createVNode("button",{class:"btn btn-secondary mr-2 d-flex align-items-center",style:"float:right",onClick:E,disabled:p.value},[g.createVNode("i",{class:"f-icon f-icon-close mr-1"},null),g.createTextVNode("清空")])]),g.createVNode("div",{class:"f-utils-fill-flex-row"},[g.createVNode("div",{class:"f-utils-fill f-utils-overflow-auto"},[g.createVNode(ae.FTreeView,{ref:n,columns:C,data:u.value,rowOption:{disabledField:"undefined"},fit:"true",idField:o,columnOption:{fitColumns:!0},onSelectionChange:O},null)]),g.createVNode("div",{hidden:p.value,style:"display: flex;"},[g.createVNode(se.FPropertyPanel,{propertyConfig:d.value,ref:r,propertyName:m.value,enableSearch:!1,allowCollapse:t.allowCollapse,onPropertyChanged:x},null)])])])}}),q=g.defineComponent({name:"FCollectionPropertyEditor",props:re,emits:["valueChange","selectionChange"],setup(t,e){const n=g.ref(),r=g.inject("useFormCommand"),o=g.inject("useFormSchema"),i=g.ref(R.cloneDeep(t.modelValue)||[]),s=g.ref();g.watch(()=>t.modelValue,c=>{i.value=R.cloneDeep(c)||[]});const v=g.computed(()=>{var c;return(c=s.value)==null?void 0:c.getModal()}),a=g.computed(()=>{let c=0;return i.value&&(t.visibleCondition?c=i.value.filter(t.visibleCondition).length:c=i.value.length),`共 ${c||0} 项`});function d(c){Object.keys(c).forEach(y=>{y.indexOf("__fv")>-1&&delete c[y]})}function m(c){c&&c.forEach(y=>{d(y)})}function l(){return m(i.value),e.emit("valueChange",i.value),!0}function p(){return!0}function C({selectedData:c,propertyConfig:y}){d(c.value),e.emit("selectionChange",{selectedData:c,propertyConfig:y,modalRef:v.value,buttonPropertyPanelInstance:n.value.propertyPanelRef})}function u(){i.value=[]}const f={title:t.modalTitle||"编辑器",width:650,height:700,minWidth:380,minHeight:400,fitContent:!1,showMaxButton:!0,resizeable:!0,draggable:!0,enableEsc:!0,buttons:[{name:"cancel",text:"取消",class:"btn btn-secondary",handle:p},{name:"accept",text:"确定",class:"btn btn-primary",handle:l}],closedCallback:(c,y)=>{if((c==null?void 0:c.target.name)==="cancel"||y==="icon"||y==="esc")return i.value=R.cloneDeep(t.modelValue),e.emit("valueChange",i.value),!0;!c&&y==="button"&&l()}};return()=>g.createVNode(U.FButtonEdit,{modelValue:a.value,"onUpdate:modelValue":c=>a.value=c,editable:!1,enableTitle:!0,inputType:"text",buttonBehavior:"Modal",modalOptions:f,ref:s},{default:()=>[g.createVNode("div",{class:"h-100 d-flex flex-column"},[g.createVNode(oe,{ref:n,modelValue:i.value,"onUpdate:modelValue":c=>i.value=c,idField:t.idField,textField:t.textField,defaultComponentSchema:t.defaultComponentSchema,onSelectionChange:C,useFormCommand:r,useFormSchema:o,allowCollapse:t.allowCollapse,visibleCondition:t.visibleCondition,enableClear:t.enableClear,onClear:u},null)])]})}});function Ae(t){const{formSchemaUtils:e,formStateMachineUtils:n}=t;function r(a,d=""){return{path:d+a.code,field:a.id,fullPath:a.code}}function o(a,d=""){const m=e.getViewModelById(a);return m?m.states.map(l=>r(l,d)):[]}function i(a){const d=e.getRootViewModelId(),m=o(a);if(a===d)return m;const l=o(d,"root-component.");return[...m,...l]}function s(a){return a.binding&&a.binding.path||a.id||""}function v(){return n&&n.getRenderStates()||[]}return{getVariables:i,getControlName:s,getStateMachines:v}}class qe{constructor(e){F(this,"sessionVariables",[{key:"CurrentSysOrgName",name:"当前组织Name",description:"当前组织Name"},{key:"CurrentSysOrgId",name:"当前组织Id",description:"当前组织Id"},{key:"CurrentUserName",name:"当前用户Name",description:"当前用户Name"},{key:"CurrentUserCode",name:"当前用户Code",description:"当前用户Code"},{key:"CurrentUserId",name:"当前用户Id",description:"当前用户Id"},{key:"CurrentLanguage",name:"当前语言编号",description:"当前登录的语言编号,例如简体中文返回'zh-CHS',英文返回'en',繁体中文'zh-CHT'"}]);F(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});F(this,"getExpressionConverter",(e,n)=>({convertFrom:(r,o,i,s)=>{const v=i.getExpressionRuleValue(e,n||o);return v&&v.value||""},convertTo:(r,o,i,s,v)=>{var a;if(o==="dataPicking"&&(i!=null&&i.target)){const d=`${i.target}_dataPicking`;((a=i.rules)==null?void 0:a.some(l=>l.id===d&&l.value))?r.dictPickingExpressionId=d:delete r.dictPickingExpressionId}s.updateExpression(i)}}));this.formSchemaService=e}getExpressionRule(e,n){const r=this.getExpressionData();if(!r)return"";const o=r.find(s=>s.target===e);if(!o)return"";const i=o.rules.find(s=>s.type===n);return i||""}getContextFormVariables(){const{module:e}=this.formSchemaService.getFormSchema();if(!e.viewmodels||e.viewmodels.length===0)return[];const n=this.formSchemaService.getRootViewModelId(),r=this.formSchemaService.getViewModelById(n);if(!r||!r.states||r.states.length===0)return[];const o=[];return r.states.filter(i=>i.category==="remote").forEach(i=>{o.push({key:i.code,name:i.name,description:i.name,category:i.category})}),o}createTreeNode(e,n,r="label"){return{id:e.id,name:e.name,bindingPath:e[r],parents:n,type:"field"}}buildEntityFieldsTreeData(e=null,n){const r=[];return e==null||e.forEach(o=>{var v;const i=this.createTreeNode(o,n);let s=[];(v=o.type)!=null&&v.fields&&(s=this.buildEntityFieldsTreeData(o.type.fields,[...n,o.label])),r.push({data:i,children:s,expanded:!0})}),r}buildChildEntityTreeData(e=null,n){const r=[];return e==null||e.forEach(o=>{var a,d;const i=this.createTreeNode(o,n);i.type="entity";const s=this.buildEntityFieldsTreeData((a=o.type)==null?void 0:a.fields,[...n,o.label]),v=this.buildChildEntityTreeData((d=o.type)==null?void 0:d.entities,[...n,o.label]);v!=null&&v.length&&(s==null||s.push(...v)),r.push({data:i,children:s||[],expanded:!0})}),r}getEntitiesTreeData(){const e=this.formSchemaService.getSchemaEntities();if(!(e!=null&&e.length))return[];const n=e[0];if(!(n!=null&&n.type))return[];const r=this.buildEntityFieldsTreeData(n.type.fields,[n.code]),o=this.buildChildEntityTreeData(n.type.entities,[n.code]);return o!=null&&o.length&&(r==null||r.push(...o)),{entityCode:n.code,fields:[{data:this.createTreeNode(n,[],"code"),children:r||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(e,n,r){const o=r==="Field"?e.binding.field:e.id,i=this.getExpressionRule(o,n),s=this.getEntitiesAndVariables(),v={message:["validate","required","dataPicking"].includes(n)&&i?i.message:"",...s};return i.messageType!=null&&(v.messageType=i.messageType),v}buildRule(e,n,r,o){const{expression:i,message:s,messageType:v}=n,a={id:`${e}_${r}`,type:r,value:i};return(r==="validate"||r==="dataPicking"||r==="required")&&(a.message=s),r==="dataPicking"&&(a.messageType=v),r==="validate"&&o&&(a.elementId=o),a}getExpressionData(){const{expressions:e}=this.formSchemaService.getFormSchema().module;return e||[]}updateExpression(e,n,r,o){const i=n==="Field"?e.binding.field:e.id,s=this.buildRule(i,r,o,e.type==="form-group"?e.id:"");let a=this.getExpressionData().find(m=>m.targetType===n&&m.target===i);const d=m=>m.value.trim()==="";if(a){const m=a.rules.find(l=>l.id===s.id);if(m)d(s)?a.rules=a.rules.filter(l=>l.id!==s.id):(Object.assign(m,s),o==="validate"&&e.type==="form-group"&&(m.elementId=e.id));else{if(d(s))return null;a.rules=a.rules||[],a.rules.push(s)}}else{if(d(s))return null;a={target:`${i}`,rules:[s],targetType:n}}return a}getExpressionEditorOptions(e,n,r,o){return r.reduce((i,s)=>{var a,d;const v=n==="Field"?(a=e==null?void 0:e.binding)==null?void 0:a.field:e.id;return i[s]={hide:n==="Field"?!!((d=e==null?void 0:e.binding)!=null&&d.field):!1,description:"",title:this.expressionNames[s],type:"string",$converter:this.getExpressionConverter(v),refreshPanelAfterChanged:!0,editor:{type:"expression-editor",singleExpand:!1,dialogTitle:`${this.expressionNames[s]}编辑器`,showMessage:s==="validate"||s==="dataPicking"||s==="required",showMessageType:s==="dataPicking",beforeOpen:()=>this.onBeforeOpenExpression(e,s,n),onSubmitModal:m=>{const l=this.updateExpression(e,n,m,s);if(o){const p=this.buildRule(v,m,s);o(p)}return l}}},i},{})}getExpressionInfo(e,n,r){const o=n==="Field"?e.binding.field:e.id,i=this.getExpressionRule(o,r),s={value:i&&i.value,targetId:o,targetType:n,expressionType:r};return i&&i.message&&(s.message=i.message),s}getExpressionConfig(e,n,r=["compute","dependency","validate"],o){var i;return{description:"表达式",title:"表达式",hide:!(e.binding&&((i=e.binding)==null?void 0:i.type)==="Form"),properties:{...this.getExpressionEditorOptions(e,n,r,o)}}}getExpressionOptions(e,n,r){const o=this.getExpressionInfo(e,n,r);return{dialogTitle:`${this.expressionNames[r]||"表达式"}编辑器`,singleExpand:!1,showMessage:r==="required",beforeOpen:()=>this.onBeforeOpenExpression(e,r,n),expressionInfo:o}}}class _e{constructor(e,n){F(this,"componentId");F(this,"viewModelId");F(this,"eventsEditorUtils");F(this,"formSchemaUtils");F(this,"formMetadataConverter");F(this,"designViewModelUtils");F(this,"designViewModelField");F(this,"controlCreatorUtils");F(this,"designerHostService");F(this,"designerContext");F(this,"modalService",null);F(this,"formRule",null);F(this,"schemaService",null);F(this,"metadataService",null);F(this,"propertyConfig",{type:"object",categories:{}});F(this,"expressionProperty");var r;this.componentId=e,this.designerHostService=n,this.eventsEditorUtils=n.eventsEditorUtils,this.formSchemaUtils=n.formSchemaUtils,this.formMetadataConverter=n.formMetadataConverter,this.viewModelId=((r=this.formSchemaUtils)==null?void 0:r.getViewModelIdByComponentId(e))||"",this.designViewModelUtils=n.designViewModelUtils,this.controlCreatorUtils=n.controlCreatorUtils,this.metadataService=n.metadataService,this.schemaService=n.schemaService,this.designerContext=n.designerContext,this.modalService=n.modalService,this.expressionProperty=new qe(this.formSchemaUtils)}inResponsiveForm(){var e;return!!((e=this.designerContext)!=null&&e.responsiveForm)}getFormDesignerInstance(){var e,n;return(n=(e=this.designerContext)==null?void 0:e.instances)==null?void 0:n.formDesigner.value}getTableInfo(){var e;return(e=this.schemaService)==null?void 0:e.getTableInfoByViewModelId(this.viewModelId)}setDesignViewModelField(e){var r;const n=e.binding&&e.binding.type==="Form"&&e.binding.field;if(n){if(!this.designViewModelField){const o=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=o.fields.find(i=>i.id===n)}e.updateOn=(r=this.designViewModelField)==null?void 0:r.updateOn}}getBasicPropConfig(e){return{description:"Basic Information",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"combo-list",textField:"name",valueField:"value",idField:"value",editable:!1,data:[{value:e.type,name:$.DgControl[e.type]&&$.DgControl[e.type].name}]}}}}}getAppearanceConfig(e=null,n={},r){const o={title:"外观",description:"Appearance"},i={class:{title:"class样式",type:"string",description:"组件的CSS样式",$converter:"/converter/appearance.converter",parentPropertyID:"appearance"},style:{title:"style样式",type:"string",description:"组件的样式",$converter:"/converter/appearance.converter",parentPropertyID:"appearance"}};for(const s in n)i[s]=Object.assign(i[s]||{},n[s]);return{...o,properties:{...i},setPropertyRelates(s,v){if(s){switch(s&&s.propertyID){case"class":case"style":{$.canvasChanged.value++;break}}r&&r(s,e,v)}}}}getPropertyEditorParams(e,n=[],r="visible",o={},i={},s=""){const{getVariables:v,getControlName:a,getStateMachines:d}=Ae(this.designerHostService),m=this.getRealTargetType(e),l=n&&n.length>0?n:["Const","Variable","StateMachine","Expression"],p={type:"property-editor",propertyTypes:l};return l.map(C=>{switch(C){case"Const":Object.assign(p,{constType:"enum",constEnums:[{id:!0,name:"是"},{id:!1,name:"否"}]},o);break;case"Expression":p.expressionConfig=this.getExpressionOptions(e,m,s||r);break;case"StateMachine":p.stateMachines=d();break;case"Variable":Object.assign(p,{controlName:a(e),newVariablePrefix:"is",newVariableType:"Boolean",variables:v(this.viewModelId),parentComponentId:this.componentId==="root-component"?"":"root-component",onBeforeOpenVariables:u=>{u.value=v(this.viewModelId)}},i),this.designerContext.designerMode==="PC_RTC"&&(p.newVariablePrefix="ext_"+p.newVariablePrefix);break}}),p}getVisibleProperty(e,n=""){var i;let r=["Const","Variable","StateMachine","Expression"];return n==="gridFieldEditor"?r=["Const","Expression"]:n==="form-group"&&!((i=e.binding)!=null&&i.field)?r=["Const","Variable","StateMachine","Custom"]:n==="dataGrid"||n==="treeGrid"||n==="wizard"?r=["Const","Variable","Expression"]:(e.type.indexOf("toolbar-item")>-1||n==="form-group")&&(r=["Const","Variable","StateMachine","Custom","Expression"]),{visible:{title:"是否可见",type:"boolean",description:"运行时组件是否可见",editor:this.getPropertyEditorParams(e,r,"visible")}}}getBehaviorConfig(e,n="",r={},o){const i={title:"行为",description:""},s=this.getVisibleProperty(e,n);for(const a in r)s[a]=Object.assign(s[a]||{},r[a]);const v=this;return{...i,properties:{...s},setPropertyRelates(a,d){if(a){switch(a.propertyID){case"disabled":case"readonly":case"visible":v.afterMutilEditorChanged(e,a);break}o&&o(a,d)}}}}afterMutilEditorChanged(e,n){this.addNewVariableToViewModel(n,this.viewModelId),this.updateExpressionValue(n,e),this.clearExpression(n,e)}updateElementByParentContainer(e,n){const r=n&&n.parent&&n.parent.schema;if(!r)return;const o=r.contents.findIndex(s=>s.id===e),i=R.cloneDeep(r.contents[o]);r.contents.splice(o,1),r.contents.splice(o,0,i),$.refreshCanvas()}addNewVariableToViewModel(e,n){const r=e.propertyValue;if(!(r&&typeof r=="object")||!(r.type==="Variable"&&r.isNewVariable))return;const s={id:r.field,category:"locale",code:r.fullPath,name:r.fullPath,type:r.newVariableType||"String",isRtcVariable:this.designerContext.designerMode==="PC_RTC"?!0:void 0};delete r.newVariableType,delete r.isNewVariable,this.formSchemaUtils.getVariableByCode(s.code)||this.formSchemaUtils.getViewModelById("root-viewmodel").states.push(s)}getExpressions(){let e=[];return this.formRule?(this.formRule.expressions=this.formRule.expressions||[],e=this.formRule.expressions||[]):e=this.formSchemaUtils.getExpressions(),e}updateExpressionValue(e,n){const r=e.propertyValue;if(!((r&&r.type)==="Expression"&&r.expressionInfo))return;const{expressionId:s,expressionInfo:v}=r,{targetId:a,targetType:d,expressionType:m,value:l,message:p}=v,C=this.getExpressions();let u=C.find(c=>c.target===a);u||(u={target:a,rules:[],targetType:d},C.push(u));const f=u.rules.find(c=>c.type===m);if(f)f.id=s,f.value=l,f.message=p,(m==="minDate"||m==="maxDate"||m==="defaultTime")&&(f.elementId=n.id);else{const c={id:s,type:m,value:l,message:p,elementId:n.id};u.rules.push(c)}delete r.expressionInfo}clearExpression(e,n){const r=e.propertyValue;if(r&&r.type==="Expression")return;const i=e.propertyID,s=this.getExpressions(),v=n.binding?n.binding.field:n.id,a=s.find(d=>d.target===v);!a||!a.rules||(a.rules=a.rules.filter(d=>d.type!==i))}getExpressionOptions(e,n,r){return this.expressionProperty.getExpressionOptions(e,n,r)}getRealTargetType(e){return["response-toolbar-item","tab-toolbar-item","section-toolbar-item","drawer-toolbar-item"].indexOf(e.type)>-1?"Button":e.binding&&e.binding.field?"Field":"Container"}createBaseEventProperty(e){const n={};return n[this.viewModelId]={type:"events-editor",editor:{initialData:e,viewSourceHandle:r=>{var o;((o=r.controller)==null?void 0:o.label.indexOf(this.formSchemaUtils.getModule().code))>-1&&this.eventsEditorUtils.jumpToMethod(r)}}},n}}class Le extends _e{constructor(e,n,r=!0){super(e,n),this.isRealButton=r}getPropertyConfig(e,n=!1,r=!0,o=null){this.propertyConfig.categories.basic=this.getBasicPropConfig(e),this.propertyConfig.categories.basic.properties.text={title:"文本",type:"string",description:"",refreshPanelAfterChanged:r},this.propertyConfig.categories.basic.setPropertyRelates=s=>{if(s)switch(s&&s.propertyID){case"text":{s.needRefreshControlTree=!0;break}}},this.getAppearanceProperties(e,n);const i=this.getPropertyEditorParams(e,["Const","Variable","StateMachine","Expression","Custom"],"disabled");return this.propertyConfig.categories.behavior=this.getBehaviorConfig(e,"",{disabled:{title:"禁用",type:"boolean",description:"按钮禁用状态",editor:i}}),this.getEventPropConfig(e,o),this.propertyConfig}getAppearanceProperties(e,n=!1){this.propertyConfig.categories.appearance={title:"外观",description:"Appearance",properties:{class:{title:"class样式",type:"string",description:"",$converter:"/converter/appearance.converter",parentPropertyID:"appearance",visible:!n},icon:{title:"图标",type:"string",description:""}}}}getEventPropConfig(e,n=null){const r=[{label:"onClick",name:"点击事件"}],o=this,i=o.eventsEditorUtils.formProperties(e,o.viewModelId,r);let s={};this.isRealButton?s=o.createBaseEventProperty(i):s[this.viewModelId]={type:"events-editor",editor:{initialData:i}},this.propertyConfig.categories.eventsEditor={title:"事件",hideTitle:!0,properties:s,refreshPanelAfterChanged:!0,tabId:le.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(v,a){const d=v.propertyValue;if(delete e[o.viewModelId],d){d.setPropertyRelates=this.setPropertyRelates;const m=()=>{o.eventsEditorUtils.saveRelatedParameters(e,o.viewModelId,d.events,d)};o.isRealButton?m():d.isAddControllerMethod?(d.controlInfo={type:e.type,name:e.text},W.FMessageBoxService.question("确定关闭当前编辑器并跳转到代码视图吗?","",()=>{n==null||n.close(),m()},()=>{})):m()}}}}}function We(t,e,n){const{modalService:r,formSchemaUtils:o,eventsEditorUtils:i,dialogCodeView:s,useFormCommand:v}=t,{componentId:a,modalPropertyData:d,viewModelId:m,onSubmitHandle:l,onCancelHandle:p,defaultClass:C,forModalFooter:u}=e,f=g.ref(e.buttons),c={id:"button",type:"button",text:"按钮",appearance:{class:C||"btn btn-secondary"},visible:!0,disabled:!1,onClick:""},y=new Le(a,t,!1),w=g.ref(),M=R.cloneDeep(e.buttons||[]);function N(){f.value=[]}const I=x=>x.map(b=>{const T={...b};return Object.keys(T).forEach(V=>{V.startsWith("__fv_")&&delete T[V]}),T});function E(){const x=I(f.value);if(l)return typeof l=="function"&&l(x);{const b=o.getExternalComponents().find(T=>T.id===d.id);return b&&(b.buttons=x),!0}}function k({selectedData:x,propertyConfig:b,propertyPanelRef:T}){if(b.value=y.getPropertyConfig(x.value,!1,!1),b.value.categories.behavior.properties.disabled.refreshPanelAfterChanged=!1,u){const{visible:V,disabled:h}=b.value.categories.behavior.properties;V.editor.propertyTypes=["Const"],h.editor.propertyTypes=["Const"]}b.value.categories.eventsEditor.setPropertyRelates=(V,h)=>{const S=V.propertyValue;if(delete x.value[m],S){const D=()=>{i.saveRelatedParameters(x.value,m,S.events,S)};S.isAddControllerMethod&&(S.controlInfo={type:x.value.type,name:x.value.text},t.dialogCodeView.closeCallback=()=>{T==null||T.reloadPropertyPanel()}),D()}},n&&n(b.value)}function O(x){const b=r==null?void 0:r.open({fitContent:!1,width:800,height:600,title:"自定义按钮",showMaxButton:!0,showButtons:!0,draggable:!0,resizeable:!0,render:()=>g.createVNode(oe,{ref:w,modelValue:f.value,"onUpdate:modelValue":T=>f.value=T,designerHostService:t,idField:"id",textField:"text",defaultComponentSchema:c,onSelectionChange:k,useFormCommand:v,useFormSchema:o,allowCollapse:!1,enableClear:!0,onClear:N},null),closedCallback:(T,V)=>{s.openCodeEditor=!1,x&&x()},buttons:[{name:"cancel",text:"取消",class:"btn btn-secondary",handle:T=>(s.openCodeEditor=!1,p&&p(M),!0)},{name:"accept",text:"确定",class:"btn btn-primary",handle:T=>{E()&&(b.close(),s.openCodeEditor=!1)}}]});s.openCodeEditor=!0}return{show:O}}const Ge={install(t){t.component(q.name,q)},register(t,e,n,r){t["collection-property-editor"]=q,e["collection-property-editor"]=ze}};P.default=Ge,P.useButtonItemsDesigner=We,Object.defineProperties(P,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/farris.all.esm.js
CHANGED
|
@@ -57483,8 +57483,8 @@ function KS(e, t, n) {
|
|
|
57483
57483
|
resizeable: !0,
|
|
57484
57484
|
render: () => r(ES, {
|
|
57485
57485
|
ref: b,
|
|
57486
|
-
modelValue: g,
|
|
57487
|
-
"onUpdate:modelValue": (A) => g = A,
|
|
57486
|
+
modelValue: g.value,
|
|
57487
|
+
"onUpdate:modelValue": (A) => g.value = A,
|
|
57488
57488
|
designerHostService: e,
|
|
57489
57489
|
idField: "id",
|
|
57490
57490
|
textField: "text",
|