@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
6 lines • 97.8 kB
JavaScript
(function(w,h){typeof exports=="object"&&typeof module<"u"?h(exports,require("vue"),require("../dynamic-resolver/index.umd.js"),require("../dynamic-form/index.umd.js"),require("../../designer/dynamic-form/index.umd.js"),require("../common/index.umd.js"),require("../designer-canvas/index.umd.js"),require("../message-box/index.umd.js"),require("lodash-es"),require("../property-panel/index.umd.js"),require("../avatar/index.umd.js/src/property-config/avatar.property-config"),require("../checkbox-group/index.umd.js/src/property-config/check-group.property-config"),require("../checkbox/index.umd.js/src/property-config/checkbox.property-config"),require("../combo-list/index.umd.js/src/property-config/combo-list.property-config"),require("../date-picker/index.umd.js/src/property-config/date-picker.property-config"),require("../input-group/index.umd.js/src/property-config/input-group.property-config"),require("../language-textbox/index.umd.js/src/property-config/language-textbox.property-config"),require("../lookup/index.umd.js/src/property-config/lookup.property-config"),require("../number-range/index.umd.js/src/property-config/number-range.property-config"),require("../number-spinner/index.umd.js/src/property-config/number-spinner.property-config"),require("../radio-group/index.umd.js/src/property-config/radio-group.property-config"),require("../switch/index.umd.js/src/property-config/switch.property-config"),require("../textarea/index.umd.js/src/property-config/textarea.property-config"),require("../time-picker/index.umd.js/src/property-config/time-picker.property-config")):typeof define=="function"&&define.amd?define(["exports","vue","../dynamic-resolver/index.umd.js","../dynamic-form/index.umd.js","../../designer/dynamic-form/index.umd.js","../common/index.umd.js","../designer-canvas/index.umd.js","../message-box/index.umd.js","lodash-es","../property-panel/index.umd.js","../avatar/index.umd.js/src/property-config/avatar.property-config","../checkbox-group/index.umd.js/src/property-config/check-group.property-config","../checkbox/index.umd.js/src/property-config/checkbox.property-config","../combo-list/index.umd.js/src/property-config/combo-list.property-config","../date-picker/index.umd.js/src/property-config/date-picker.property-config","../input-group/index.umd.js/src/property-config/input-group.property-config","../language-textbox/index.umd.js/src/property-config/language-textbox.property-config","../lookup/index.umd.js/src/property-config/lookup.property-config","../number-range/index.umd.js/src/property-config/number-range.property-config","../number-spinner/index.umd.js/src/property-config/number-spinner.property-config","../radio-group/index.umd.js/src/property-config/radio-group.property-config","../switch/index.umd.js/src/property-config/switch.property-config","../textarea/index.umd.js/src/property-config/textarea.property-config","../time-picker/index.umd.js/src/property-config/time-picker.property-config"],h):(w=typeof globalThis<"u"?globalThis:w||self,h(w.table={},w.Vue,w.dynamicResolver,w.dynamicForm,w.designer,w.common,w.designerCanvas,w.messageBox,w.LodashES,w.propertyPanel,w.avatar_propertyConfig,w.checkGroup_propertyConfig,w.checkbox_propertyConfig,w.comboList_propertyConfig,w.datePicker_propertyConfig,w.inputGroup_propertyConfig,w.languageTextbox_propertyConfig,w.lookup_propertyConfig,w.numberRange_propertyConfig,w.numberSpinner_propertyConfig,w.radioGroup_propertyConfig,w.switch_propertyConfig,w.textarea_propertyConfig,w.timePicker_propertyConfig))})(this,function(w,h,B,ne,ye,A,g,Ce,G,ve,xe,we,Te,Ie,ke,Fe,Ee,Me,Se,Pe,Ve,Re,Ne,De){"use strict";var At=Object.defineProperty;var Ut=(w,h,B)=>h in w?At(w,h,{enumerable:!0,configurable:!0,writable:!0,value:B}):w[h]=B;var v=(w,h,B)=>Ut(w,typeof h!="symbol"?h+"":h,B);const Q=new Map([["appearance",B.resolveAppearance]]),oe={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/table.schema.json",title:"table",description:"A Farris design-time layout table",type:"object",properties:{id:{type:"string"},type:{type:"string",default:"table"},devMode:{type:"string",default:"advanced"},appearance:{type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},border:{type:"object",properties:{width:{type:"number"},enableColor:{type:"boolean"},color:{type:"string"}},default:{width:1,enableColor:!1,color:"#eaecf3"}},font:{type:"object",properties:{size:{type:"number"},enableColor:{type:"boolean"},color:{type:"string"},family:{type:"string"}},default:{size:13,enableColor:!1,color:"#2d2f33",family:"sans-serif"}},rows:{type:"array",default:[]},visible:{type:"boolean",default:!0}},required:["id","type","rows"]},Le={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/table-td.schema.json",title:"table-td",description:"A Farris design-time layout table cell",type:"object",properties:{id:{type:"string"},type:{type:"string",default:""},tdType:{type:"string",default:"staticText"},staticText:{type:"object",properties:{text:{type:"string"},require:{type:"boolean"}},default:{text:"",require:!1}},editor:{type:"object",properties:{type:{type:["string","null"]},id:{type:"string"}},default:{type:null}},binding:{type:"object",default:{}},modelValue:{type:["string","boolean","array","number","object"],default:null},colspan:{type:"number",default:1},rowspan:{type:"number",default:1},align:{type:"string",default:"left"},valign:{type:"string",default:"middle"},appearance:{type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{class:"",style:""}},size:{type:"object"},markRow:{type:"number",default:0},markCol:{type:"number",default:0},invisible:{type:"boolean",default:!1},editorLabel:{type:"string",default:""},expandable:{type:["boolean","string"]},expandMode:{type:"string",default:"text"},expandContent:{type:"string"},expandDisabled:{type:["boolean","string"]}},required:["id","type"],events:{onExpandClick:"扩展按钮点击事件",onClickLabel:"标签点击事件",fieldValueChanging:"绑定字段值变化前事件",fieldValueChanged:"绑定字段值变化后事件"}};function Z(){return"x"+Math.random().toString(36).slice(2,10)+Date.now().toString(36).slice(-4)}function re(){return{id:Z(),type:"table-td",tdType:"editor",staticText:{text:"",require:!1},editor:{type:null},binding:null,colspan:1,rowspan:1,align:"right",valign:"top",appearance:{class:"farris-group-wrap--input",style:""},size:null}}function Be(n,t){const e=[];for(let i=0;i<n;i++){const o=[];for(let r=0;r<t;r++)o.push(re());e.push({id:Z(),type:"table-row",columns:o})}return e}function K(n,t,e){return(!t.rows||t.rows.length===0)&&(t.rows=Be(2,2)),t}const H={id:{type:String,default:""},componentId:{type:String,default:""},customClass:{type:String,default:""},customStyle:{type:String,default:""},devMode:{type:String,default:"advanced"},rows:{type:Array,default:()=>[]},border:{type:Object,default:()=>({width:1,enableColor:!1,color:"#eaecf3"})},font:{type:Object,default:()=>({size:13,enableColor:!1,color:"#2d2f33",family:"sans-serif"})},visible:{type:Boolean,default:!0},modelValue:{type:Object,default:()=>({})}},je=B.createPropsResolver(H,oe,Q,K),ee=B.getPropsResolverGenerator(H,oe,Q,K),te={id:{type:String,default:""},type:{type:String,default:""},tdType:{type:String,default:"staticText"},staticText:{type:Object,default:()=>({text:"",require:!1})},editor:{type:Object,default:()=>({type:null})},binding:{type:Object,default:()=>({})},modelValue:{type:[String,Number,Boolean,Object,Array],default:void 0},colspan:{type:Number,default:1},rowspan:{type:Number,default:1},align:{type:String,default:"left"},valign:{type:String,default:"middle"},appearance:{type:Object,default:()=>({class:"",style:""})},size:{type:Object,default:null},markRow:{type:Number,default:0},markCol:{type:Number,default:0},invisible:{type:Boolean,default:!1},editorLabel:{type:String,default:""},expandable:{type:[Boolean,String],default:!1},expandMode:{type:String,default:"text"},expandContent:{type:String,default:""},expandDisabled:{type:[Boolean,String],default:!1}},ie=B.createPropsResolver(te,Le,Q,K);function se(n,t=!1){var i,o;const e={"box-shadow":"0px 0px 0px 1px #eaecf3"};return t&&Object.assign(e,{width:"inherit",height:"inherit",background:"inherit","margin-bottom":0}),(i=n.size)!=null&&i.height&&(e.height=`${n.size.height}px`),(o=n.size)!=null&&o.width&&(e.width=`${n.size.width}px`),e}function le(n,t,e=!1){var s,p;const i=n.border||{},o=n.font||{},r={border:`${i.width??1}px solid ${i.enableColor?i.color:"#eaecf3"}`,"text-align":t.align||"left","vertical-align":t.valign||"middle"};if(o.size&&(r["font-size"]=`${o.size}px`),o.enableColor&&o.color&&(r.color=o.color),o.family&&(r["font-family"]=o.family),(s=t.appearance)!=null&&s.style&&t.appearance.style.split(";").forEach(m=>{const[c,f]=m.split(":");c&&f&&(r[c.trim()]=f.trim())}),e){const m=((p=n.border)==null?void 0:p.width)||1;r["border-width"]=`${m+1}px !important`}return r}function ae(n){var t,e;return h.createVNode("div",{class:"farris-label-wrap"},[h.createVNode("label",{class:"col-form-label"},[(t=n.staticText)!=null&&t.require?h.createVNode("span",{class:"farris-label-info text-danger"},[h.createTextVNode("*")]):null,h.createVNode("span",{class:"farris-label-text"},[((e=n.staticText)==null?void 0:e.text)||""])])])}function de(n,t){var o,r;const e=(o=n.binding)==null?void 0:o.field;if(!e)return null;if(t.design){const s=Object.assign({},n.editor,{required:!1});return h.createVNode(ye.FDynamicFormGroupDesign,{id:n.id,showLabel:!1,label:"",editor:s,required:!1,customClass:"h-100",customStyle:"pointer-events:none"},null)}const i=t.data||{};return h.createVNode(ne.FDynamicFormGroup,{id:n.id,key:n.id,showLabel:!1,customClass:"h-100",editor:n.editor,required:(r=n.editor)==null?void 0:r.required,modelValue:i[e],"onUpdate:modelValue":s=>i[e]=s,onChange:s=>t.onChange&&t.onChange(e,s)},null)}const W=h.defineComponent({name:"FTable",props:H,emits:["update:modelValue","change"],setup(n,t){const e=h.ref(n.modelValue||{});h.watch(()=>n.modelValue,r=>{e.value=r||{}});function i(r,s){t.emit("update:modelValue",e.value),t.emit("change",{field:r,value:s,modelValue:e.value})}function o(r){var m;const s=r.tdType==="staticText",p=t.slots[r.id];return h.createVNode("td",{key:r.id,colspan:r.colspan,rowspan:r.rowspan,class:[s?"farris-group-wrap--label":"farris-group-wrap--input",(m=r.appearance)==null?void 0:m.class],style:le(n,r)},[s?ae(r):p?p():de(r,{data:e.value,onChange:i})])}return()=>{if(!n.visible)return null;const r=n.rows||[];return h.createVNode("table",{class:["table",n.customClass],style:se(n)},[h.createVNode("tbody",null,[r.map(s=>h.createVNode("tr",{key:s.id},[s.columns.filter(p=>!p.invisible).map(p=>o(p))]))])])}}}),X=h.defineComponent({name:"FTableTd",props:te,emits:["update:modelValue","change"],inheritAttrs:!1,setup(n,t){const e=h.ref(n.modelValue);return h.watch(()=>n.modelValue,i=>{e.value=i}),()=>{var i,o,r;return n.tdType==="staticText"?h.createVNode("div",{class:"farris-label-wrap"},[h.createVNode("label",{class:"col-form-label"},[(i=n.staticText)!=null&&i.require?h.createVNode("span",{class:"farris-label-info text-danger"},[h.createTextVNode("*")]):null,h.createVNode("span",{class:"farris-label-text"},[((o=n.staticText)==null?void 0:o.text)||""])])]):!n.editor||!n.editor.type?null:h.createVNode(ne.FDynamicFormGroup,{id:n.id,key:n.id,showLabel:!1,customClass:"h-100",editor:n.editor,required:(r=n.editor)==null?void 0:r.required,modelValue:e.value,label:n.editorLabel,"onUpdate:modelValue":s=>{e.value=s,t.emit("update:modelValue",s)},onChange:(s,p)=>{t.emit("change",s,p)}},null)}}});class Oe{getTableTdMetadata(){return re()}insertColumns(t,e){for(let i=0;i<t.length;i++){const o=this.findPrevColIndex(i,e,t);if(o!==e&&t[i].columns[e].invisible){const r=this.getTableTdMetadata();r.invisible=!0,t[i].columns.splice(e,0,r);const s=t[i].columns[o].colspan;t[i].columns[o].colspan=s+1;for(let p=0;p<s+1;p++)t[i].columns[o+p].markCol=p}else{const r=this.getTableTdMetadata();t[i].columns.splice(e,0,r)}}}findPrevColIndex(t,e,i){return e>=i[t].columns.length||!i[t].columns[e].markCol?e:this.findPrevColIndex(t,e-1,i)}findNextColIndex(t,e,i){return e>=i[t].columns.length||!i[t].columns[e].markCol?e:this.findNextColIndex(t,e+1,i)}findPrevRowIndex(t,e,i){return t>=i.length||!i[t].columns[e].markRow?t:this.findPrevRowIndex(t-1,e,i)}findNextRowIndex(t,e,i){return t>=i.length||!i[t].columns[e].markRow?t:this.findNextRowIndex(t+1,e,i)}insertRow(t,e){const i=[];for(let o=0;o<e[0].columns.length;o++){const r=this.findPrevRowIndex(t,o,e),s=this.getTableTdMetadata();r!==t&&e[t].columns[o].invisible?(s.invisible=!0,i.push(s),e[r].columns[o].rowspan=e[r].columns[o].rowspan+1):i.push(s)}e.splice(t,0,{id:Z(),type:"table-row",columns:i});for(let o=0;o<e[t].columns.length;o++)if(e[t].columns[o].invisible){const r=this.findPrevRowIndex(t-1,o,e);e[r].columns[o].invisible||this.markTableItem(r,o,e)}}markTableItem(t,e,i){for(let o=i[t].columns[e].colspan,r=i[t].columns[e].rowspan,s=0;s<r;s++)for(let p=0;p<o;p++)i[t+s].columns[e+p].markCol=p,i[t+s].columns[e+p].markRow=s}}class ce{constructor(t,e,i){this.designViewModelUtils=t,this.formSchemaUtils=e,this.viewModelId=i}removeDesignViewModelFieldInColumns(t){const e=this.designViewModelUtils.getDgViewModel(this.viewModelId);e&&t.forEach(i=>{if(i.binding&&i.binding.field){const o=i.binding.field;e.removeField([o]),this.removeExpression(i,o)}})}removeExpression(t,e){const i=this.formSchemaUtils,o=i.getExpressions?i.getExpressions():[];if(!o||!o.length)return;const r=o.findIndex(s=>s.target===e);r<0||((o[r].rules||[]).forEach(s=>{var c;const p=s.type==="visible"?t[s.type]:(c=t.editor)==null?void 0:c[s.type];(["visible","readonly","required"].includes(s.type)?p&&p.type==="Expression"&&p.expressionId===s.id:!0)&&!this.checkExpressionOccupiedRepeated(e,s,t.id)&&(s.needDelete=!0)}),o[r].rules=(o[r].rules||[]).filter(s=>!s.needDelete))}checkExpressionOccupiedRepeated(t,e,i){const o=this.formSchemaUtils;return!o.getComponents||!o.getControlsInCmpWidthBinding?!1:!!o.getComponents().find(s=>o.getControlsInCmpWidthBinding(s.viewModel,t).filter(m=>{var f;if(m.id===i)return!1;const c=e.type==="visible"?m[e.type]:(f=m.editor)==null?void 0:f[e.type];return c&&c.type==="Expression"&&c.expressionId===e.id}).length>0)}}class $e{constructor(t,e,i,o,r){v(this,"tableTdHelper",new Oe);v(this,"selectedColumnIndex",0);v(this,"selectedRowIndex",0);v(this,"targetColumn");v(this,"targetRow");v(this,"menuConfig",[]);v(this,"tableUtils");this.component=t,this.services=e,this.redraw=i,this.emitCanvasChanged=o,this.viewModelId=r,this.tableUtils=new ce(e.designViewModelUtils,e.formSchemaUtils,this.viewModelId)}setTarget(t,e){this.selectedRowIndex=t,this.selectedColumnIndex=e,this.targetRow=this.component.rows[t],this.targetColumn=this.component.rows[t].columns[e]}getMenuConfig(){return this.menuConfig=[{id:"insertColumnToLeft",title:"左插入列",handle:()=>this.insertColumnToLeft()},{id:"insertColumnToRight",title:"右插入列",handle:()=>this.insertColumnToRight()},{id:"insertRowToTop",title:"上插入行",handle:()=>this.insertRowToTop()},{id:"insertRowToBottom",title:"下插入行",handle:()=>this.insertRowToBottom()},"-",{id:"mergeColumnToRight",title:"向右合并",handle:()=>this.mergeColumnToRight(),disable:!this.showMergeColumnToRight()},{id:"mergeRowToBottom",title:"向下合并",handle:()=>this.mergeRowToBottom(),disable:!this.showMergeRowToBottom()},"-",{id:"splitColumns",title:"拆分成列",handle:()=>this.splitColumns(),disable:!this.showSplitColumns()},{id:"splitRows",title:"拆分成行",handle:()=>this.splitRows(),disable:!this.showSplitRows()},"-",{id:"removeColumn",title:"删除当前列",handle:()=>this.removeColumn(),disable:!this.showRemoveColumn()},{id:"removeRow",title:"删除当前行",handle:()=>this.removeRow(),disable:!this.showRemoveRow()}],this.menuConfig}question(t,e){(this.services.messageBox||Ce.FMessageBoxService).question(t,"",e)}insertColumnToLeft(){this.tableTdHelper.insertColumns(this.component.rows,this.selectedColumnIndex),this.selectedColumnIndex++,this.redraw()}insertColumnToRight(){const t=this.targetColumn.colspan>1?this.tableTdHelper.findNextColIndex(this.selectedRowIndex,this.selectedColumnIndex+1,this.component.rows):this.selectedColumnIndex+1;this.tableTdHelper.insertColumns(this.component.rows,t),this.redraw()}insertRowToTop(){this.tableTdHelper.insertRow(this.selectedRowIndex,this.component.rows),this.selectedRowIndex++,this.redraw()}insertRowToBottom(){const t=this.targetColumn.rowspan>1?this.tableTdHelper.findNextRowIndex(this.selectedRowIndex+1,this.selectedColumnIndex,this.component.rows):this.selectedRowIndex+1;this.tableTdHelper.insertRow(t,this.component.rows),this.redraw()}showMergeColumnToRight(){const{rowspan:t,colspan:e}=this.targetColumn;if(this.selectedColumnIndex+e<this.targetRow.columns.length){const i=this.targetRow.columns[e+this.selectedColumnIndex];if(!i.invisible&&t===i.rowspan)return!0}return!1}mergeColumnToRight(){const t=this.targetColumn.colspan,e=this.selectedColumnIndex+t,i=this.component.rows[this.selectedRowIndex].columns[e];i.editor&&i.editor.type?this.question("合并后将重置右侧单元格的编辑器,确定合并?",()=>{this.tableUtils.removeDesignViewModelFieldInColumns([i]),this.confirmToMergeColumnToRight(i,t)}):this.confirmToMergeColumnToRight(i,t)}confirmToMergeColumnToRight(t,e){const i=t.colspan;this.targetColumn.colspan=e+i,t.invisible=!0,this.resetTd(t),this.tableTdHelper.markTableItem(this.selectedRowIndex,this.selectedColumnIndex,this.component.rows),this.redraw(),this.emitCanvasChanged()}showMergeRowToBottom(){const t=this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex].rowspan,e=this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex].colspan;if(t+this.selectedRowIndex<this.component.rows.length){const i=this.component.rows[t+this.selectedRowIndex].columns[this.selectedColumnIndex];if(!i.invisible&&e===i.colspan)return!0}return!1}mergeRowToBottom(){const t=this.targetColumn.rowspan,e=this.selectedRowIndex+t,i=this.component.rows[e].columns[this.selectedColumnIndex];i.editor&&i.editor.type?this.question("合并后将重置下方单元格的编辑器,确定合并?",()=>{this.tableUtils.removeDesignViewModelFieldInColumns([i]),this.confirmToMergeRowToBottom(i,t)}):this.confirmToMergeRowToBottom(i,t)}confirmToMergeRowToBottom(t,e){this.targetColumn.rowspan=e+t.rowspan,t.invisible=!0,this.resetTd(t),this.tableTdHelper.markTableItem(this.selectedRowIndex,this.selectedColumnIndex,this.component.rows),this.redraw(),this.emitCanvasChanged()}resetTd(t){t.staticText={text:"",require:!1},t.editor={type:null,binding:null}}showSplitColumns(){return this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex].colspan>1}splitColumns(){const{colspan:t,rowspan:e}=this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex];for(let i=0;i<t;i++)this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex+i].invisible=!1,this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex+i].colspan=1,this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex+i].rowspan=e,this.tableTdHelper.markTableItem(this.selectedRowIndex,this.selectedColumnIndex+i,this.component.rows);this.redraw()}showSplitRows(){return this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex].rowspan>1}splitRows(){const{colspan:t,rowspan:e}=this.component.rows[this.selectedRowIndex].columns[this.selectedColumnIndex];for(let i=0;i<e;i++)this.component.rows[this.selectedRowIndex+i].columns[this.selectedColumnIndex].invisible=!1,this.component.rows[this.selectedRowIndex+i].columns[this.selectedColumnIndex].rowspan=1,this.component.rows[this.selectedRowIndex+i].columns[this.selectedColumnIndex].colspan=t,this.tableTdHelper.markTableItem(this.selectedRowIndex,this.selectedColumnIndex+i,this.component.rows);this.redraw()}showRemoveColumn(){const{rows:t}=this.component;return t[this.selectedRowIndex].columns.length>1&&t[this.selectedRowIndex].columns[this.selectedColumnIndex].colspan===1}removeColumn(){this.checkIfHasEditorInColumn()?this.question("确定移除当前列所有的编辑器配置?",()=>this.confirmRemoveColumn()):this.confirmRemoveColumn()}confirmRemoveColumn(){const{rows:t}=this.component,e=[];for(let i=0;i<t.length;i++){const{colspan:o,rowspan:r}=t[i].columns[this.selectedColumnIndex];if(t[i].columns[this.selectedColumnIndex].invisible){const s=this.tableTdHelper.findPrevColIndex(i,this.selectedColumnIndex,t);s!==this.selectedColumnIndex&&t[i].columns[s].colspan>1&&(t[i].columns[s].colspan=t[i].columns[s].colspan-1)}else o>1&&(t[i].columns[this.selectedColumnIndex+1].invisible=!1,t[i].columns[this.selectedColumnIndex+1].colspan=o-1,t[i].columns[this.selectedColumnIndex+1].rowspan=r,this.tableTdHelper.markTableItem(i,this.selectedColumnIndex+1,t));e.push(t[i].columns[this.selectedColumnIndex]),t[i].columns.splice(this.selectedColumnIndex,1)}this.tableUtils.removeDesignViewModelFieldInColumns(e),this.redraw({clearPropertyPanel:!0}),this.emitCanvasChanged()}checkIfHasEditorInColumn(){for(const t of this.component.rows){const e=t.columns[this.selectedColumnIndex];if(e&&e.tdType==="editor"&&e.binding)return!0}return!1}showRemoveRow(){const{rows:t}=this.component;return t.length>1&&t[this.selectedRowIndex].columns[this.selectedColumnIndex].rowspan===1}removeRow(){this.checkIfHasEditorInRow()?this.question("确定移除当前行所有的编辑器配置?",()=>this.confirmRemoveRow()):this.confirmRemoveRow()}checkIfHasEditorInRow(){for(const t of this.component.rows[this.selectedRowIndex].columns)if(t&&t.tdType==="editor"&&t.binding)return!0;return!1}confirmRemoveRow(){const{rows:t}=this.component;for(let e=0;e<t[this.selectedRowIndex].columns.length;e++){const i=t[this.selectedRowIndex].columns[e].rowspan,o=t[this.selectedRowIndex].columns[e].colspan;if(t[this.selectedRowIndex].columns[e].invisible){const r=this.tableTdHelper.findPrevRowIndex(this.selectedRowIndex,e,t);r!==this.selectedRowIndex&&t[r].columns[e].rowspan>1&&(t[r].columns[e].rowspan=t[r].columns[e].rowspan-1)}else i>1&&(t[this.selectedRowIndex+1].columns[e].invisible=!1,t[this.selectedRowIndex+1].columns[e].rowspan=i-1,t[this.selectedRowIndex+1].columns[e].colspan=o,this.tableTdHelper.markTableItem(this.selectedRowIndex+1,e,t))}this.tableUtils.removeDesignViewModelFieldInColumns(t[this.selectedRowIndex].columns),t.splice(this.selectedRowIndex,1),this.redraw({clearPropertyPanel:!0}),this.emitCanvasChanged()}}function qe(n,t){return n.map(e=>e==="-"?{separator:!0}:{id:e.id,label:e.title,disabled:!!e.disable,onClick:()=>{e.handle&&e.handle(),t()}})}function Ae(){const n=h.ref(!1);return h.onMounted(()=>{n.value=!0}),n}const Ue={visible:{type:Boolean,default:!1},position:{type:Object,default:()=>({x:0,y:0})},options:{type:Array,default:()=>[]},onClose:{type:Function,required:!0}},ze=h.defineComponent({name:"FTableContextMenu",props:Ue,setup(n){const t=h.ref(),e=h.ref(null),i=h.ref({x:0,y:0}),o=Ae(),r=()=>{if(!t.value)return;const f=t.value.getBoundingClientRect(),l=window.innerWidth,a=window.innerHeight,b=4;let{x:u,y:d}=n.position;u+f.width>l&&(u=n.position.x-f.width),d+f.height>a&&(d=n.position.y-f.height),u=Math.max(b,Math.min(u,l-f.width-b)),d=Math.max(b,Math.min(d,a-f.height-b)),(i.value.x!==u||i.value.y!==d)&&(i.value={x:u,y:d})},s=c=>{c.key==="Escape"&&n.onClose()},p=c=>{c.disabled||(c.onClick(),n.onClose())},m=c=>{c.stopPropagation(),c.preventDefault(),n.onClose()};return h.onMounted(()=>{document.addEventListener("keydown",s)}),h.onBeforeUnmount(()=>{document.removeEventListener("keydown",s)}),h.onUpdated(()=>{r()}),()=>{if(!n.visible)return(i.value.x!==0||i.value.y!==0)&&(i.value={x:0,y:0}),null;const c=i.value.x===0&&i.value.y===0?n.position:i.value;return o.value?h.createVNode(h.Teleport,{to:"body"},{default:()=>[h.createVNode("div",{class:"context-menu-overlay no-drag",style:{position:"fixed",top:0,left:0,width:"100vw",height:"100vh",zIndex:1e4},onClick:m,onContextmenu:f=>{f.preventDefault(),f.stopPropagation()}},[h.createVNode("div",{ref:t,class:"context-menu",style:{position:"absolute",left:`${c.x}px`,top:`${c.y}px`,background:"#fff",border:"1px solid #d4d6d9",borderRadius:"4px",boxShadow:"0 2px 8px rgba(0,0,0,0.15)",padding:"4px 0",minWidth:"160px",zIndex:10001},onClick:f=>f.stopPropagation()},[n.options.map((f,l)=>{if("separator"in f)return h.createVNode("div",{key:`sep-${l}`,class:"context-menu-separator",style:{height:"1px",margin:"4px 8px",background:"#e0e2e5"}},null);const a=f;return h.createVNode("div",{key:a.id,class:"context-menu-item",style:{padding:"6px 16px",cursor:a.disabled?"not-allowed":"pointer",fontSize:"13px",color:a.danger?"#e02020":a.disabled?"#bbb":"#2d2f33",whiteSpace:"nowrap",backgroundColor:e.value===a.id?"#e8f0fe":"transparent"},onClick:()=>p(a),onMouseenter:()=>{e.value=a.id},onMouseleave:()=>{e.value=null}},[a.icon&&h.createVNode("span",{class:"menu-item-icon"},[a.icon]),h.createVNode("span",{class:"menu-item-label"},[a.label])])})])])]}):null}}});function Ge(n){const{formSchemaUtils:t,formStateMachineUtils:e}=n;function i(m,c=""){return{path:c+m.code,field:m.id,fullPath:m.code}}function o(m,c=""){const f=t.getViewModelById(m);return f?f.states.map(l=>i(l,c)):[]}function r(m){const c=t.getRootViewModelId(),f=o(m);if(m===c)return f;const l=o(c,"root-component.");return[...f,...l]}function s(m){return m.binding&&m.binding.path||m.id||""}function p(){return e&&e.getRenderStates()||[]}return{getVariables:r,getControlName:s,getStateMachines:p}}class He{constructor(t){v(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'"}]);v(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});v(this,"getExpressionConverter",(t,e)=>({convertFrom:(i,o,r,s)=>{const p=r.getExpressionRuleValue(t,e||o);return p&&p.value||""},convertTo:(i,o,r,s,p)=>{var m;if(o==="dataPicking"&&(r!=null&&r.target)){const c=`${r.target}_dataPicking`;((m=r.rules)==null?void 0:m.some(l=>l.id===c&&l.value))?i.dictPickingExpressionId=c:delete i.dictPickingExpressionId}s.updateExpression(r)}}));this.formSchemaService=t}getExpressionRule(t,e){const i=this.getExpressionData();if(!i)return"";const o=i.find(s=>s.target===t);if(!o)return"";const r=o.rules.find(s=>s.type===e);return r||""}getContextFormVariables(){const{module:t}=this.formSchemaService.getFormSchema();if(!t.viewmodels||t.viewmodels.length===0)return[];const e=this.formSchemaService.getRootViewModelId(),i=this.formSchemaService.getViewModelById(e);if(!i||!i.states||i.states.length===0)return[];const o=[];return i.states.filter(r=>r.category==="remote").forEach(r=>{o.push({key:r.code,name:r.name,description:r.name,category:r.category})}),o}createTreeNode(t,e,i="label"){return{id:t.id,name:t.name,bindingPath:t[i],parents:e,type:"field"}}buildEntityFieldsTreeData(t=null,e){const i=[];return t==null||t.forEach(o=>{var p;const r=this.createTreeNode(o,e);let s=[];(p=o.type)!=null&&p.fields&&(s=this.buildEntityFieldsTreeData(o.type.fields,[...e,o.label])),i.push({data:r,children:s,expanded:!0})}),i}buildChildEntityTreeData(t=null,e){const i=[];return t==null||t.forEach(o=>{var m,c;const r=this.createTreeNode(o,e);r.type="entity";const s=this.buildEntityFieldsTreeData((m=o.type)==null?void 0:m.fields,[...e,o.label]),p=this.buildChildEntityTreeData((c=o.type)==null?void 0:c.entities,[...e,o.label]);p!=null&&p.length&&(s==null||s.push(...p)),i.push({data:r,children:s||[],expanded:!0})}),i}getEntitiesTreeData(){const t=this.formSchemaService.getSchemaEntities();if(!(t!=null&&t.length))return[];const e=t[0];if(!(e!=null&&e.type))return[];const i=this.buildEntityFieldsTreeData(e.type.fields,[e.code]),o=this.buildChildEntityTreeData(e.type.entities,[e.code]);return o!=null&&o.length&&(i==null||i.push(...o)),{entityCode:e.code,fields:[{data:this.createTreeNode(e,[],"code"),children:i||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(t,e,i){const o=i==="Field"?t.binding.field:t.id,r=this.getExpressionRule(o,e),s=this.getEntitiesAndVariables(),p={message:["validate","required","dataPicking"].includes(e)&&r?r.message:"",...s};return r.messageType!=null&&(p.messageType=r.messageType),p}buildRule(t,e,i,o){const{expression:r,message:s,messageType:p}=e,m={id:`${t}_${i}`,type:i,value:r};return(i==="validate"||i==="dataPicking"||i==="required")&&(m.message=s),i==="dataPicking"&&(m.messageType=p),i==="validate"&&o&&(m.elementId=o),m}getExpressionData(){const{expressions:t}=this.formSchemaService.getFormSchema().module;return t||[]}updateExpression(t,e,i,o){const r=e==="Field"?t.binding.field:t.id,s=this.buildRule(r,i,o,t.type==="form-group"?t.id:"");let m=this.getExpressionData().find(f=>f.targetType===e&&f.target===r);const c=f=>f.value.trim()==="";if(m){const f=m.rules.find(l=>l.id===s.id);if(f)c(s)?m.rules=m.rules.filter(l=>l.id!==s.id):(Object.assign(f,s),o==="validate"&&t.type==="form-group"&&(f.elementId=t.id));else{if(c(s))return null;m.rules=m.rules||[],m.rules.push(s)}}else{if(c(s))return null;m={target:`${r}`,rules:[s],targetType:e}}return m}getExpressionEditorOptions(t,e,i,o){return i.reduce((r,s)=>{var m,c;const p=e==="Field"?(m=t==null?void 0:t.binding)==null?void 0:m.field:t.id;return r[s]={hide:e==="Field"?!!((c=t==null?void 0:t.binding)!=null&&c.field):!1,description:"",title:this.expressionNames[s],type:"string",$converter:this.getExpressionConverter(p),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(t,s,e),onSubmitModal:f=>{const l=this.updateExpression(t,e,f,s);if(o){const a=this.buildRule(p,f,s);o(a)}return l}}},r},{})}getExpressionInfo(t,e,i){const o=e==="Field"?t.binding.field:t.id,r=this.getExpressionRule(o,i),s={value:r&&r.value,targetId:o,targetType:e,expressionType:i};return r&&r.message&&(s.message=r.message),s}getExpressionConfig(t,e,i=["compute","dependency","validate"],o){var r;return{description:"表达式",title:"表达式",hide:!(t.binding&&((r=t.binding)==null?void 0:r.type)==="Form"),properties:{...this.getExpressionEditorOptions(t,e,i,o)}}}getExpressionOptions(t,e,i){const o=this.getExpressionInfo(t,e,i);return{dialogTitle:`${this.expressionNames[i]||"表达式"}编辑器`,singleExpand:!1,showMessage:i==="required",beforeOpen:()=>this.onBeforeOpenExpression(t,i,e),expressionInfo:o}}}class ue{constructor(t,e){v(this,"componentId");v(this,"viewModelId");v(this,"eventsEditorUtils");v(this,"formSchemaUtils");v(this,"formMetadataConverter");v(this,"designViewModelUtils");v(this,"designViewModelField");v(this,"controlCreatorUtils");v(this,"designerHostService");v(this,"designerContext");v(this,"modalService",null);v(this,"formRule",null);v(this,"schemaService",null);v(this,"metadataService",null);v(this,"propertyConfig",{type:"object",categories:{}});v(this,"expressionProperty");var i;this.componentId=t,this.designerHostService=e,this.eventsEditorUtils=e.eventsEditorUtils,this.formSchemaUtils=e.formSchemaUtils,this.formMetadataConverter=e.formMetadataConverter,this.viewModelId=((i=this.formSchemaUtils)==null?void 0:i.getViewModelIdByComponentId(t))||"",this.designViewModelUtils=e.designViewModelUtils,this.controlCreatorUtils=e.controlCreatorUtils,this.metadataService=e.metadataService,this.schemaService=e.schemaService,this.designerContext=e.designerContext,this.modalService=e.modalService,this.expressionProperty=new He(this.formSchemaUtils)}inResponsiveForm(){var t;return!!((t=this.designerContext)!=null&&t.responsiveForm)}getFormDesignerInstance(){var t,e;return(e=(t=this.designerContext)==null?void 0:t.instances)==null?void 0:e.formDesigner.value}getTableInfo(){var t;return(t=this.schemaService)==null?void 0:t.getTableInfoByViewModelId(this.viewModelId)}setDesignViewModelField(t){var i;const e=t.binding&&t.binding.type==="Form"&&t.binding.field;if(e){if(!this.designViewModelField){const o=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=o.fields.find(r=>r.id===e)}t.updateOn=(i=this.designViewModelField)==null?void 0:i.updateOn}}getBasicPropConfig(t){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:t.type,name:g.DgControl[t.type]&&g.DgControl[t.type].name}]}}}}}getAppearanceConfig(t=null,e={},i){const o={title:"外观",description:"Appearance"},r={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 e)r[s]=Object.assign(r[s]||{},e[s]);return{...o,properties:{...r},setPropertyRelates(s,p){if(s){switch(s&&s.propertyID){case"class":case"style":{g.canvasChanged.value++;break}}i&&i(s,t,p)}}}}getPropertyEditorParams(t,e=[],i="visible",o={},r={},s=""){const{getVariables:p,getControlName:m,getStateMachines:c}=Ge(this.designerHostService),f=this.getRealTargetType(t),l=e&&e.length>0?e:["Const","Variable","StateMachine","Expression"],a={type:"property-editor",propertyTypes:l};return l.map(b=>{switch(b){case"Const":Object.assign(a,{constType:"enum",constEnums:[{id:!0,name:"是"},{id:!1,name:"否"}]},o);break;case"Expression":a.expressionConfig=this.getExpressionOptions(t,f,s||i);break;case"StateMachine":a.stateMachines=c();break;case"Variable":Object.assign(a,{controlName:m(t),newVariablePrefix:"is",newVariableType:"Boolean",variables:p(this.viewModelId),parentComponentId:this.componentId==="root-component"?"":"root-component",onBeforeOpenVariables:u=>{u.value=p(this.viewModelId)}},r),this.designerContext.designerMode==="PC_RTC"&&(a.newVariablePrefix="ext_"+a.newVariablePrefix);break}}),a}getVisibleProperty(t,e=""){var r;let i=["Const","Variable","StateMachine","Expression"];return e==="gridFieldEditor"?i=["Const","Expression"]:e==="form-group"&&!((r=t.binding)!=null&&r.field)?i=["Const","Variable","StateMachine","Custom"]:e==="dataGrid"||e==="treeGrid"||e==="wizard"?i=["Const","Variable","Expression"]:(t.type.indexOf("toolbar-item")>-1||e==="form-group")&&(i=["Const","Variable","StateMachine","Custom","Expression"]),{visible:{title:"是否可见",type:"boolean",description:"运行时组件是否可见",editor:this.getPropertyEditorParams(t,i,"visible")}}}getBehaviorConfig(t,e="",i={},o){const r={title:"行为",description:""},s=this.getVisibleProperty(t,e);for(const m in i)s[m]=Object.assign(s[m]||{},i[m]);const p=this;return{...r,properties:{...s},setPropertyRelates(m,c){if(m){switch(m.propertyID){case"disabled":case"readonly":case"visible":p.afterMutilEditorChanged(t,m);break}o&&o(m,c)}}}}afterMutilEditorChanged(t,e){this.addNewVariableToViewModel(e,this.viewModelId),this.updateExpressionValue(e,t),this.clearExpression(e,t)}updateElementByParentContainer(t,e){const i=e&&e.parent&&e.parent.schema;if(!i)return;const o=i.contents.findIndex(s=>s.id===t),r=G.cloneDeep(i.contents[o]);i.contents.splice(o,1),i.contents.splice(o,0,r),g.refreshCanvas()}addNewVariableToViewModel(t,e){const i=t.propertyValue;if(!(i&&typeof i=="object")||!(i.type==="Variable"&&i.isNewVariable))return;const s={id:i.field,category:"locale",code:i.fullPath,name:i.fullPath,type:i.newVariableType||"String",isRtcVariable:this.designerContext.designerMode==="PC_RTC"?!0:void 0};delete i.newVariableType,delete i.isNewVariable,this.formSchemaUtils.getVariableByCode(s.code)||this.formSchemaUtils.getViewModelById("root-viewmodel").states.push(s)}getExpressions(){let t=[];return this.formRule?(this.formRule.expressions=this.formRule.expressions||[],t=this.formRule.expressions||[]):t=this.formSchemaUtils.getExpressions(),t}updateExpressionValue(t,e){const i=t.propertyValue;if(!((i&&i.type)==="Expression"&&i.expressionInfo))return;const{expressionId:s,expressionInfo:p}=i,{targetId:m,targetType:c,expressionType:f,value:l,message:a}=p,b=this.getExpressions();let u=b.find(y=>y.target===m);u||(u={target:m,rules:[],targetType:c},b.push(u));const d=u.rules.find(y=>y.type===f);if(d)d.id=s,d.value=l,d.message=a,(f==="minDate"||f==="maxDate"||f==="defaultTime")&&(d.elementId=e.id);else{const y={id:s,type:f,value:l,message:a,elementId:e.id};u.rules.push(y)}delete i.expressionInfo}clearExpression(t,e){const i=t.propertyValue;if(i&&i.type==="Expression")return;const r=t.propertyID,s=this.getExpressions(),p=e.binding?e.binding.field:e.id,m=s.find(c=>c.target===p);!m||!m.rules||(m.rules=m.rules.filter(c=>c.type!==r))}getExpressionOptions(t,e,i){return this.expressionProperty.getExpressionOptions(t,e,i)}getRealTargetType(t){return["response-toolbar-item","tab-toolbar-item","section-toolbar-item","drawer-toolbar-item"].indexOf(t.type)>-1?"Button":t.binding&&t.binding.field?"Field":"Container"}createBaseEventProperty(t){const e={};return e[this.viewModelId]={type:"events-editor",editor:{initialData:t,viewSourceHandle:i=>{var o;((o=i.controller)==null?void 0:o.label.indexOf(this.formSchemaUtils.getModule().code))>-1&&this.eventsEditorUtils.jumpToMethod(i)}}},e}}const _e={convertTo:(n,t,e,i)=>{n.border||(n.border={}),n.border[t]=e},convertFrom:(n,t,e)=>n.border?n.border[t]:n[t]},We={convertTo:(n,t,e,i)=>{n.font||(n.font={}),n.font[t]=e},convertFrom:(n,t,e)=>n.font?n.font[t]:n[t]};class Xe extends ue{constructor(t,e){super(t,e)}getPropertyConfig(t){var e,i;return this.propertyConfig.categories.basic=this.getBasicPropConfig(t),this.propertyConfig.categories.appearance=this.getAppearanceConfig(t),this.propertyConfig.categories.behavior=this.getBehaviorConfig(t),this.propertyConfig.categories.border={title:"边框",$converter:_e,properties:{width:{title:"边框宽度",type:"number",editor:{min:0,max:10,needValid:!0,precision:0}},enableColor:{title:"启用自定义颜色",type:"boolean",description:"",refreshPanelAfterChanged:!0},color:{title:"自定义颜色",type:"string",description:"统一设置表格边框颜色",visible:(e=t.border)==null?void 0:e.enableColor}}},this.propertyConfig.categories.font={title:"字体",$converter:We,properties:{size:{title:"字号",type:"number",editor:{min:10,max:20,needValid:!0,precision:0}},enableColor:{title:"启用自定义颜色",type:"boolean",description:"是否启用自定义颜色",refreshPanelAfterChanged:!0},color:{title:"自定义颜色",type:"string",description:"设置字体框颜色",visible:(i=t.font)==null?void 0:i.enableColor},family:{title:"字体",type:"select",editor:{type:"combo-list",textField:"name",valueField:"value",editable:!1,data:[{value:"sans-serif",name:"sans-serif"},{value:"simsun",name:"simsun"},{value:"SimHei",name:"SimHei"},{value:"arial",name:"arial"},{value:"FangSong",name:"FangSong"}]}}}},this.propertyConfig}}function Ye(n,t){const e=n.schema;function i(f){return!1}function o(){return!1}function r(){return!1}function s(){return!0}function p(f){return new Xe(f,t).getPropertyConfig(n.schema)}function m(){return"border:0"}function c(){var u;if(!t||!n)return;const{formSchemaUtils:f}=t,l=f.getControlBasicInfoMap(),a=g.DgControl.table.name,b=g.DgControl["table-td"].name;(u=e.rows)!=null&&u.length&&e.rows.forEach(d=>{var y;(y=d.columns)!=null&&y.length&&d.columns.forEach(C=>{if(C.tdType==="editor"&&C.editor.type){const x=C.editor.label||"单元格";l.set(C.id,{showName:x,parentPathName:`${a} > ${b} > ${x}`})}})})}return{canAccepts:i,checkCanMoveComponent:o,checkCanDeleteComponent:r,getPropsConfig:p,setComponentBasicInfoMap:c,hideNestedPaddingInDesginerView:s,getStyles:m}}const U=class U{static getEditorTypesByMDataType(t,e=!1,i=""){if(e)return[{key:g.DgControl["language-textbox"].type,value:g.DgControl["language-textbox"].name}];let o=U.fieldControlTypeMapping[t];if(i==="data-grid-column"&&(o!=null&&o.length)){const r=[g.DgControl["check-group"].type,g.DgControl["radio-group"].type,g.DgControl.image.type,g.DgControl["rich-text-editor"].type,g.DgControl.avatar.type];o=o.filter(s=>!r.includes(s.key))}if(i==="tree-grid-column"&&(o!=null&&o.length)){const r=[g.DgControl["check-group"].type,g.DgControl["radio-group"].type,g.DgControl.image.type,g.DgControl["rich-text-editor"].type,g.DgControl.avatar.type,g.DgControl.switch.type];o=o.filter(s=>!r.includes(s.key))}return o}static getAllInputTypes(){const t=[];for(const e in U.fieldControlTypeMapping)U.fieldControlTypeMapping[e].forEach(i=>{t.find(o=>o.key===i.key&&o.value===i.value)||t.push({key:i.key,value:i.value})});return t}static mappingDomPropAndSchemaProp(t,e){var r;const i=(r=t.editor)==null?void 0:r.type,o=[];return(t.type===g.DgControl["data-grid-column"].type||t.type===g.DgControl["tree-grid-column"].type)&&e&&e.categoryId&&e.categoryId.indexOf("gridFieldEditor")<0&&o.push({domField:"title",schemaField:"name"}),o.push({domField:"label",schemaField:"name"}),o.push({domField:"editor.required",schemaField:"require"}),o.push({domField:"editor.readonly",schemaField:"readonly"}),(i===g.DgControl["input-group"].type||i===g.DgControl.textarea.type||i===g.DgControl["number-spinner"].type)&&o.push({domField:"editor.maxLength",schemaField:"type.length"}),i===g.DgControl["number-spinner"].type&&o.push({domField:"editor.precision",schemaField:"type.precision"}),(t.type===g.DgControl["data-grid-column"].type||t.type===g.DgControl["tree-grid-column"].type)&&o.push({domField:"formatter.precision",schemaField:"type.precision"}),(i===g.DgControl["combo-list"].type||i===g.DgControl["radio-group"].type)&&o.push({domField:"editor.data",schemaField:"type.enumValues"}),(t.type===g.DgControl["data-grid-column"].type||t.type===g.DgControl["tree-grid-column"].type)&&o.push({domField:"formatter.data",schemaField:"type.enumValues"}),i===g.DgControl["date-picker"].type&&(o.push({domField:"editor.displayFormat",schemaField:"editor.format"}),o.push({domField:"editor.fieldType",schemaField:"type.name"})),i===g.DgControl["number-spinner"].type&&(o.push({domField:"editor.max",schemaField:"editor.maxValue"}),o.push({domField:"editor.min",schemaField:"editor.minValue"})),i===g.DgControl.lookup.type&&(o.push({domField:"editor.dataSource",schemaField:"editor.dataSource"}),o.push({domField:"editor.valueField",schemaField:"editor.valueField"}),o.push({domField:"editor.textField",schemaField:"editor.textField"}),o.push({domField:"editor.displayType",schemaField:"editor.displayType"}),o.push({domField:"editor.mapFields",schemaField:"editor.mapFields"}),o.push({domField:"editor.helpId",schemaField:"editor.helpId"})),o.push({domField:"path",schemaField:"bindingPath"}),o.push({domField:"binding.path",schemaField:"bindingField"}),o.push({domField:"binding.fullPath",schemaField:"path"}),(t.type===g.DgControl["data-grid-column"].type||t.type===g.DgControl["tree-grid-column"].type)&&o.push({domField:"field",schemaField:"bindingPath"}),o}};v(U,"fieldControlTypeMapping",{String:[{key:g.DgControl["input-group"].type,value:g.DgControl["input-group"].name},{key:g.DgControl.lookup.type,value:g.DgControl.lookup.name},{key:g.DgControl.image.type,value:g.DgControl.image.name},{key:g.DgControl["date-picker"].type,value:g.DgControl["date-picker"].name},{key:g.DgControl.switch.type,value:g.DgControl.switch.name},{key:g.DgControl["check-box"].type,value:g.DgControl["check-box"].name},{key:g.DgControl["check-group"].type,value:g.DgControl["check-group"].name},{key:g.DgControl["radio-group"].type,value:g.DgControl["radio-group"].name},{key:g.DgControl["combo-list"].type,value:g.DgControl["combo-list"].name},{key:g.DgControl.textarea.type,value:g.DgControl.textarea.name},{key:g.DgControl["time-picker"].type,value:g.DgControl["time-picker"].name},{key:g.DgControl["rich-text-editor"].type,value:g.DgControl["rich-text-editor"].name}],Text:[{key:g.DgControl.textarea.type,value:g.DgControl.textarea.name},{key:g.DgControl.lookup.type,value:g.DgControl.lookup.name},{key:g.DgControl.image.type,value:g.DgControl.image.name},{key:g.DgControl.avatar.type,value:g.DgControl.avatar.name},{key:g.DgControl["rich-text-editor"].type,value:g.DgControl["rich-text-editor"].name}],Decimal:[{key:g.DgControl["number-spinner"].type,value:g.DgControl["number-spinner"].name}],Integer:[{key:g.DgControl["number-spinner"].type,value:g.DgControl["number-spinner"].name}],Number:[{key:g.DgControl["number-spinner"].type,value:g.DgControl["number-spinner"].name},{key:g.DgControl.switch.type,value:g.DgControl.switch.name},{key:g.DgControl["check-box"].type,value:g.DgControl["check-box"].name}],BigNumber:[{key:g.DgControl["number-spinner"].type,value:g.DgControl["number-spinner"].name}],Date:[{key:g.DgControl["date-picker"].type,value:g.DgControl["date-picker"].name}],DateTime:[{key:g.DgControl["date-picker"].type,value:g.DgControl["date-picker"].name}],Boolean:[{key:g.DgControl.switch.type,value:g.DgControl.switch.name},{key:g.DgControl["check-box"].type,value:g.DgControl["check-box"].name}],Enum:[{key:g.DgControl["combo-list"].type,value:g.DgControl["combo-list"].name},{key:g.DgControl["radio-group"].type,value:g.DgControl["radio-group"].name}],Object:[{key:g.DgControl.lookup.type,value:g.DgControl.lookup.name},{key:g.DgControl["combo-list"].type,value:g.DgControl["combo-list"].name}]});let Y=U;var _=(n=>(n.Form="Form",n.Variable="Variable",n))(_||{});class pe{constructor(){v(this,"label","");v(this,"id","");v(this,"columnInSM",12);v(this,"columnInMD",6);v(this,"columnInLG",3);v(this,"columnInEL",2);v(this,"displayWidthInSM",1);v(this,"displayWidthInMD",1);v(this,"displayWidthInLG",1);v(this,"displayWidthInEL",1);v(this,"displayColumnCountAtBreakPoint","md");v(this,"tagRow",0);v(this,"showTopBorder",0);v(this,"group",1);v(this,"isSupportedClass",!0);v(this,"fieldSetId","")}}function Je(n){let t,e;const i=new Map;let o=[];function r(f,l){const b=(f||"").split(" ").filter(x=>x.startsWith("col-"));if(b.length===0){l.isSupportedClass=!1;return}let u=b.find(x=>/^col-([1-9]|10|11|12)$/.test(x)),d=b.find(x=>/^col-md-([1-9]|10|11|12)$/.test(x)),y=b.find(x=>/^col-xl-([1-9]|10|11|12)$/.test(x)),C=b.find(x=>/^col-el-([1-9]|10|11|12)$/.test(x));u=u||"col-12",l.columnInSM=parseInt(u.replace("col-",""),10),l.displayWidthInSM=l.columnInSM/12,l.displayWidthInSM!==1&&(l.isSupportedClass=!1),d=d||"col-md-"+l.columnInSM,l.columnInMD=parseInt(d.replace("col-md-",""),10),l.displayWidthInMD=l.columnInMD/6,[1,2].includes(l.displayWidthInMD)||(l.isSupportedClass=!1),y=y||"col-xl-"+l.columnInMD,l.columnInLG=parseInt(y.replace("col-xl-",""),10),l.displayWidthInLG=l.columnInLG/3,[1,2,3,4].includes(l.displayWidthInLG)||(l.isSupportedClass=!1),C=C||"col-el-"+l.columnInLG,l.columnInEL=parseInt(C.replace("col-el-",""),10),l.displayWidthInEL=l.columnInEL/2,[1,2,3,4,5,6].includes(l.displayWidthInEL)||(l.isSupportedClass=!1)}function s(f,l,a,b=!1){let u=!1;if(!f.contents||f.contents.length===0){const d=new pe;r(f.layout,d),l.push(d);return}f.contents.forEach(d=>{if(d.type==="fieldset"){a+=1,s(d,l,a,!0),u=!0;return}if(d.type==="dynamic-form")return;u&&(a+=1,u=!1);const y=d.appearance&&d.appearance.class,C=new pe;y?r(y,C):C.isSupportedClass=!1,C.label=d.label||d.id,C.id=d.id,C.group=a,b&&(C.fieldSetId=f.id),e===d.id&&(t=a),i.set(d.id,d),l.push(C)})}function p(f){const l=n.getComponentById(f);if(!l||!l.componentType||!l.componentType.startsWith("form"))return{result:!1,message:"只可以在响应式表单组件中调整响应式布局配置"};const a=n.selectNode(l,b=>b.type===g.DgControl["response-form"].type);return!a||!a.contents||a.contents.length===0?{result:!1,message:"Form区域内没有控件,请先添加控件"}:{result:!0,message:"",formNode:a}}function m(f,l){l=l||f.id;const{result:a,message:b,formNode:u}=p(l);if(!a)return{result:a,message:b};e=f.id,o=[],i.clear();const d=u.contents[0].type===g.DgControl.fieldset.type?0:1;s(u,o,d);const y=o.find(x=>!x.isSupportedClass);return{defaultState:{defaultGroupNumber:t||1,model:y?"customize":"standard"},importData:o}}function c(f,l){l=l;const{result:a,formNode:b}=p(l);if(!a)return"";const u=[];return f.forEach(d=>{var x;const y=i.get(d.id),C=y.appearance&&y.appearance.class;if(C){const V=C.split(" ").filter(T=>!T.startsWith("col-")),P="col-"+d.columnInSM,M="col-md-"+d.columnInMD,D="col-xl-"+d.columnInLG,N="col-el-"+d.columnInEL,k=[P,M,D,N].concat(V);y.appearance.class=k.join(" ")}if(d.fieldSetId){const S=b.contents.find(P=>P.id===d.fieldSetId),V=u.find(P=>P.id===d.fieldSetId);V?(x=V.contents)==null||x.push(y):(u.push(S),S.contents=[y])}else u.push(y)}),b.contents=u,b.id}return{checkCanFindFormNode:p,checkCanOpenLayoutEditor:m,changeFormControlsByResponseLayoutConfig:c,getResonseFormLayoutConfig:s}}const Qe=n=>h.createVNode(h.Fragment,null,[h.createVNode("h5",null,[h.createTextVNode("代码示例")]),h.createVNode("pre",{style:"background-color: #f5f5f5; padding: 10px; border-radius: 5px;"},[h.createVNode("code",null,[`
<h3>Tips:</h3>
<span style="color: blue;">
自定义提示内容
</span>
`])])]);class Ze extends ue{constructor(e,i){super(e,i);v(this,"responseLayoutEditorFunction");v(this,"bindingVarible");v(this,"formGroupEvents",[{label:"fieldValueChanging",name:"绑定字段值变化前事件"},{label:"fieldValueChanged",name:"绑定字段值变化后事件"},{label:"onClickLabel",name:"标签点击事件"}]);v(this,"numberEditorOptions",{type:"number-spinner",useThousands:!1,keyboard:!1,showButton:!1});v(this,"showCustomValue",e=>{var o;const i=this.designViewModelField!=null&&((o=this.designViewModelField)==null?void 0:o.type.name)!=="Boolean";return this.formRule?e.dataType!=="boolean":i});this.responseLayoutEditorFunction=Je(this.formSchemaUtils)}getCommonPropertyConfig(e,i,o="Card"){if(this.propertyConfig.categories.basic=this.getBasicProperties(e,i,o),this.propertyConfig.categories.appearance=this.getAppearanceProperties(e,i),this.propertyConfig.categories.behavior=this.getBehaviorConfig(e,