@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
7 lines (6 loc) • 48.8 kB
JavaScript
(function(E,C){typeof exports=="object"&&typeof module<"u"?C(exports,require("../../components/common/index.umd.js"),require("vue"),require("../../components/designer-canvas/index.umd.js"),require("lodash-es"),require("../../components/dynamic-resolver/index.umd.js"),require("../../components/notify/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","../../components/common/index.umd.js","vue","../../components/designer-canvas/index.umd.js","lodash-es","../../components/dynamic-resolver/index.umd.js","../../components/notify/index.umd.js"],C):(E=typeof globalThis<"u"?globalThis:E||self,C(E.nav={},E.common,E.Vue,E.designerCanvas,E.LodashES,E.dynamicResolver,E.notify))})(this,function(E,C,h,s,R,P,U){"use strict";var re=Object.defineProperty;var se=(E,C,h)=>C in E?re(E,C,{enumerable:!0,configurable:!0,writable:!0,value:h}):E[C]=h;var y=(E,C,h)=>se(E,typeof C!="symbol"?C+"":C,h);function $(m){const{formSchemaUtils:n,formStateMachineUtils:e}=m;function t(a,p=""){return{path:p+a.code,field:a.id,fullPath:a.code}}function i(a,p=""){const f=n.getViewModelById(a);return f?f.states.map(l=>t(l,p)):[]}function o(a){const p=n.getRootViewModelId(),f=i(a);if(a===p)return f;const l=i(p,"root-component.");return[...f,...l]}function r(a){return a.binding&&a.binding.path||a.id||""}function c(){return e&&e.getRenderStates()||[]}return{getVariables:o,getControlName:r,getStateMachines:c}}class q{constructor(n){y(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'"}]);y(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});y(this,"getExpressionConverter",(n,e)=>({convertFrom:(t,i,o,r)=>{const c=o.getExpressionRuleValue(n,e||i);return c&&c.value||""},convertTo:(t,i,o,r,c)=>{var a;if(i==="dataPicking"&&(o!=null&&o.target)){const p=`${o.target}_dataPicking`;((a=o.rules)==null?void 0:a.some(l=>l.id===p&&l.value))?t.dictPickingExpressionId=p:delete t.dictPickingExpressionId}r.updateExpression(o)}}));this.formSchemaService=n}getExpressionRule(n,e){const t=this.getExpressionData();if(!t)return"";const i=t.find(r=>r.target===n);if(!i)return"";const o=i.rules.find(r=>r.type===e);return o||""}getContextFormVariables(){const{module:n}=this.formSchemaService.getFormSchema();if(!n.viewmodels||n.viewmodels.length===0)return[];const e=this.formSchemaService.getRootViewModelId(),t=this.formSchemaService.getViewModelById(e);if(!t||!t.states||t.states.length===0)return[];const i=[];return t.states.filter(o=>o.category==="remote").forEach(o=>{i.push({key:o.code,name:o.name,description:o.name,category:o.category})}),i}createTreeNode(n,e,t="label"){return{id:n.id,name:n.name,bindingPath:n[t],parents:e,type:"field"}}buildEntityFieldsTreeData(n=null,e){const t=[];return n==null||n.forEach(i=>{var c;const o=this.createTreeNode(i,e);let r=[];(c=i.type)!=null&&c.fields&&(r=this.buildEntityFieldsTreeData(i.type.fields,[...e,i.label])),t.push({data:o,children:r,expanded:!0})}),t}buildChildEntityTreeData(n=null,e){const t=[];return n==null||n.forEach(i=>{var a,p;const o=this.createTreeNode(i,e);o.type="entity";const r=this.buildEntityFieldsTreeData((a=i.type)==null?void 0:a.fields,[...e,i.label]),c=this.buildChildEntityTreeData((p=i.type)==null?void 0:p.entities,[...e,i.label]);c!=null&&c.length&&(r==null||r.push(...c)),t.push({data:o,children:r||[],expanded:!0})}),t}getEntitiesTreeData(){const n=this.formSchemaService.getSchemaEntities();if(!(n!=null&&n.length))return[];const e=n[0];if(!(e!=null&&e.type))return[];const t=this.buildEntityFieldsTreeData(e.type.fields,[e.code]),i=this.buildChildEntityTreeData(e.type.entities,[e.code]);return i!=null&&i.length&&(t==null||t.push(...i)),{entityCode:e.code,fields:[{data:this.createTreeNode(e,[],"code"),children:t||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(n,e,t){const i=t==="Field"?n.binding.field:n.id,o=this.getExpressionRule(i,e),r=this.getEntitiesAndVariables(),c={message:["validate","required","dataPicking"].includes(e)&&o?o.message:"",...r};return o.messageType!=null&&(c.messageType=o.messageType),c}buildRule(n,e,t,i){const{expression:o,message:r,messageType:c}=e,a={id:`${n}_${t}`,type:t,value:o};return(t==="validate"||t==="dataPicking"||t==="required")&&(a.message=r),t==="dataPicking"&&(a.messageType=c),t==="validate"&&i&&(a.elementId=i),a}getExpressionData(){const{expressions:n}=this.formSchemaService.getFormSchema().module;return n||[]}updateExpression(n,e,t,i){const o=e==="Field"?n.binding.field:n.id,r=this.buildRule(o,t,i,n.type==="form-group"?n.id:"");let a=this.getExpressionData().find(f=>f.targetType===e&&f.target===o);const p=f=>f.value.trim()==="";if(a){const f=a.rules.find(l=>l.id===r.id);if(f)p(r)?a.rules=a.rules.filter(l=>l.id!==r.id):(Object.assign(f,r),i==="validate"&&n.type==="form-group"&&(f.elementId=n.id));else{if(p(r))return null;a.rules=a.rules||[],a.rules.push(r)}}else{if(p(r))return null;a={target:`${o}`,rules:[r],targetType:e}}return a}getExpressionEditorOptions(n,e,t,i){return t.reduce((o,r)=>{var a,p;const c=e==="Field"?(a=n==null?void 0:n.binding)==null?void 0:a.field:n.id;return o[r]={hide:e==="Field"?!!((p=n==null?void 0:n.binding)!=null&&p.field):!1,description:"",title:this.expressionNames[r],type:"string",$converter:this.getExpressionConverter(c),refreshPanelAfterChanged:!0,editor:{type:"expression-editor",singleExpand:!1,dialogTitle:`${this.expressionNames[r]}编辑器`,showMessage:r==="validate"||r==="dataPicking"||r==="required",showMessageType:r==="dataPicking",beforeOpen:()=>this.onBeforeOpenExpression(n,r,e),onSubmitModal:f=>{const l=this.updateExpression(n,e,f,r);if(i){const d=this.buildRule(c,f,r);i(d)}return l}}},o},{})}getExpressionInfo(n,e,t){const i=e==="Field"?n.binding.field:n.id,o=this.getExpressionRule(i,t),r={value:o&&o.value,targetId:i,targetType:e,expressionType:t};return o&&o.message&&(r.message=o.message),r}getExpressionConfig(n,e,t=["compute","dependency","validate"],i){var o;return{description:"表达式",title:"表达式",hide:!(n.binding&&((o=n.binding)==null?void 0:o.type)==="Form"),properties:{...this.getExpressionEditorOptions(n,e,t,i)}}}getExpressionOptions(n,e,t){const i=this.getExpressionInfo(n,e,t);return{dialogTitle:`${this.expressionNames[t]||"表达式"}编辑器`,singleExpand:!1,showMessage:t==="required",beforeOpen:()=>this.onBeforeOpenExpression(n,t,e),expressionInfo:i}}}class O{constructor(n,e){y(this,"componentId");y(this,"viewModelId");y(this,"eventsEditorUtils");y(this,"formSchemaUtils");y(this,"formMetadataConverter");y(this,"designViewModelUtils");y(this,"designViewModelField");y(this,"controlCreatorUtils");y(this,"designerHostService");y(this,"designerContext");y(this,"modalService",null);y(this,"formRule",null);y(this,"schemaService",null);y(this,"metadataService",null);y(this,"propertyConfig",{type:"object",categories:{}});y(this,"expressionProperty");var t;this.componentId=n,this.designerHostService=e,this.eventsEditorUtils=e.eventsEditorUtils,this.formSchemaUtils=e.formSchemaUtils,this.formMetadataConverter=e.formMetadataConverter,this.viewModelId=((t=this.formSchemaUtils)==null?void 0:t.getViewModelIdByComponentId(n))||"",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 q(this.formSchemaUtils)}inResponsiveForm(){var n;return!!((n=this.designerContext)!=null&&n.responsiveForm)}getFormDesignerInstance(){var n,e;return(e=(n=this.designerContext)==null?void 0:n.instances)==null?void 0:e.formDesigner.value}getTableInfo(){var n;return(n=this.schemaService)==null?void 0:n.getTableInfoByViewModelId(this.viewModelId)}setDesignViewModelField(n){var t;const e=n.binding&&n.binding.type==="Form"&&n.binding.field;if(e){if(!this.designViewModelField){const i=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=i.fields.find(o=>o.id===e)}n.updateOn=(t=this.designViewModelField)==null?void 0:t.updateOn}}getBasicPropConfig(n){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:n.type,name:s.DgControl[n.type]&&s.DgControl[n.type].name}]}}}}}getAppearanceConfig(n=null,e={},t){const i={title:"外观",description:"Appearance"},o={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 r in e)o[r]=Object.assign(o[r]||{},e[r]);return{...i,properties:{...o},setPropertyRelates(r,c){if(r){switch(r&&r.propertyID){case"class":case"style":{s.canvasChanged.value++;break}}t&&t(r,n,c)}}}}getPropertyEditorParams(n,e=[],t="visible",i={},o={},r=""){const{getVariables:c,getControlName:a,getStateMachines:p}=$(this.designerHostService),f=this.getRealTargetType(n),l=e&&e.length>0?e:["Const","Variable","StateMachine","Expression"],d={type:"property-editor",propertyTypes:l};return l.map(b=>{switch(b){case"Const":Object.assign(d,{constType:"enum",constEnums:[{id:!0,name:"是"},{id:!1,name:"否"}]},i);break;case"Expression":d.expressionConfig=this.getExpressionOptions(n,f,r||t);break;case"StateMachine":d.stateMachines=p();break;case"Variable":Object.assign(d,{controlName:a(n),newVariablePrefix:"is",newVariableType:"Boolean",variables:c(this.viewModelId),parentComponentId:this.componentId==="root-component"?"":"root-component",onBeforeOpenVariables:g=>{g.value=c(this.viewModelId)}},o),this.designerContext.designerMode==="PC_RTC"&&(d.newVariablePrefix="ext_"+d.newVariablePrefix);break}}),d}getVisibleProperty(n,e=""){var o;let t=["Const","Variable","StateMachine","Expression"];return e==="gridFieldEditor"?t=["Const","Expression"]:e==="form-group"&&!((o=n.binding)!=null&&o.field)?t=["Const","Variable","StateMachine","Custom"]:e==="dataGrid"||e==="treeGrid"||e==="wizard"?t=["Const","Variable","Expression"]:(n.type.indexOf("toolbar-item")>-1||e==="form-group")&&(t=["Const","Variable","StateMachine","Custom","Expression"]),{visible:{title:"是否可见",type:"boolean",description:"运行时组件是否可见",editor:this.getPropertyEditorParams(n,t,"visible")}}}getBehaviorConfig(n,e="",t={},i){const o={title:"行为",description:""},r=this.getVisibleProperty(n,e);for(const a in t)r[a]=Object.assign(r[a]||{},t[a]);const c=this;return{...o,properties:{...r},setPropertyRelates(a,p){if(a){switch(a.propertyID){case"disabled":case"readonly":case"visible":c.afterMutilEditorChanged(n,a);break}i&&i(a,p)}}}}afterMutilEditorChanged(n,e){this.addNewVariableToViewModel(e,this.viewModelId),this.updateExpressionValue(e,n),this.clearExpression(e,n)}updateElementByParentContainer(n,e){const t=e&&e.parent&&e.parent.schema;if(!t)return;const i=t.contents.findIndex(r=>r.id===n),o=R.cloneDeep(t.contents[i]);t.contents.splice(i,1),t.contents.splice(i,0,o),s.refreshCanvas()}addNewVariableToViewModel(n,e){const t=n.propertyValue;if(!(t&&typeof t=="object")||!(t.type==="Variable"&&t.isNewVariable))return;const r={id:t.field,category:"locale",code:t.fullPath,name:t.fullPath,type:t.newVariableType||"String",isRtcVariable:this.designerContext.designerMode==="PC_RTC"?!0:void 0};delete t.newVariableType,delete t.isNewVariable,this.formSchemaUtils.getVariableByCode(r.code)||this.formSchemaUtils.getViewModelById("root-viewmodel").states.push(r)}getExpressions(){let n=[];return this.formRule?(this.formRule.expressions=this.formRule.expressions||[],n=this.formRule.expressions||[]):n=this.formSchemaUtils.getExpressions(),n}updateExpressionValue(n,e){const t=n.propertyValue;if(!((t&&t.type)==="Expression"&&t.expressionInfo))return;const{expressionId:r,expressionInfo:c}=t,{targetId:a,targetType:p,expressionType:f,value:l,message:d}=c,b=this.getExpressions();let g=b.find(v=>v.target===a);g||(g={target:a,rules:[],targetType:p},b.push(g));const u=g.rules.find(v=>v.type===f);if(u)u.id=r,u.value=l,u.message=d,(f==="minDate"||f==="maxDate"||f==="defaultTime")&&(u.elementId=e.id);else{const v={id:r,type:f,value:l,message:d,elementId:e.id};g.rules.push(v)}delete t.expressionInfo}clearExpression(n,e){const t=n.propertyValue;if(t&&t.type==="Expression")return;const o=n.propertyID,r=this.getExpressions(),c=e.binding?e.binding.field:e.id,a=r.find(p=>p.target===c);!a||!a.rules||(a.rules=a.rules.filter(p=>p.type!==o))}getExpressionOptions(n,e,t){return this.expressionProperty.getExpressionOptions(n,e,t)}getRealTargetType(n){return["response-toolbar-item","tab-toolbar-item","section-toolbar-item","drawer-toolbar-item"].indexOf(n.type)>-1?"Button":n.binding&&n.binding.field?"Field":"Container"}createBaseEventProperty(n){const e={};return e[this.viewModelId]={type:"events-editor",editor:{initialData:n,viewSourceHandle:t=>{var i;((i=t.controller)==null?void 0:i.label.indexOf(this.formSchemaUtils.getModule().code))>-1&&this.eventsEditorUtils.jumpToMethod(t)}}},e}}const I=class I{static getEditorTypesByMDataType(n,e=!1,t=""){if(e)return[{key:s.DgControl["language-textbox"].type,value:s.DgControl["language-textbox"].name}];let i=I.fieldControlTypeMapping[n];if(t==="data-grid-column"&&(i!=null&&i.length)){const o=[s.DgControl["check-group"].type,s.DgControl["radio-group"].type,s.DgControl.image.type,s.DgControl["rich-text-editor"].type,s.DgControl.avatar.type];i=i.filter(r=>!o.includes(r.key))}if(t==="tree-grid-column"&&(i!=null&&i.length)){const o=[s.DgControl["check-group"].type,s.DgControl["radio-group"].type,s.DgControl.image.type,s.DgControl["rich-text-editor"].type,s.DgControl.avatar.type,s.DgControl.switch.type];i=i.filter(r=>!o.includes(r.key))}return i}static getAllInputTypes(){const n=[];for(const e in I.fieldControlTypeMapping)I.fieldControlTypeMapping[e].forEach(t=>{n.find(i=>i.key===t.key&&i.value===t.value)||n.push({key:t.key,value:t.value})});return n}static mappingDomPropAndSchemaProp(n,e){var o;const t=(o=n.editor)==null?void 0:o.type,i=[];return(n.type===s.DgControl["data-grid-column"].type||n.type===s.DgControl["tree-grid-column"].type)&&e&&e.categoryId&&e.categoryId.indexOf("gridFieldEditor")<0&&i.push({domField:"title",schemaField:"name"}),i.push({domField:"label",schemaField:"name"}),i.push({domField:"editor.required",schemaField:"require"}),i.push({domField:"editor.readonly",schemaField:"readonly"}),(t===s.DgControl["input-group"].type||t===s.DgControl.textarea.type||t===s.DgControl["number-spinner"].type)&&i.push({domField:"editor.maxLength",schemaField:"type.length"}),t===s.DgControl["number-spinner"].type&&i.push({domField:"editor.precision",schemaField:"type.precision"}),(n.type===s.DgControl["data-grid-column"].type||n.type===s.DgControl["tree-grid-column"].type)&&i.push({domField:"formatter.precision",schemaField:"type.precision"}),(t===s.DgControl["combo-list"].type||t===s.DgControl["radio-group"].type)&&i.push({domField:"editor.data",schemaField:"type.enumValues"}),(n.type===s.DgControl["data-grid-column"].type||n.type===s.DgControl["tree-grid-column"].type)&&i.push({domField:"formatter.data",schemaField:"type.enumValues"}),t===s.DgControl["date-picker"].type&&(i.push({domField:"editor.displayFormat",schemaField:"editor.format"}),i.push({domField:"editor.fieldType",schemaField:"type.name"})),t===s.DgControl["number-spinner"].type&&(i.push({domField:"editor.max",schemaField:"editor.maxValue"}),i.push({domField:"editor.min",schemaField:"editor.minValue"})),t===s.DgControl.lookup.type&&(i.push({domField:"editor.dataSource",schemaField:"editor.dataSource"}),i.push({domField:"editor.valueField",schemaField:"editor.valueField"}),i.push({domField:"editor.textField",schemaField:"editor.textField"}),i.push({domField:"editor.displayType",schemaField:"editor.displayType"}),i.push({domField:"editor.mapFields",schemaField:"editor.mapFields"}),i.push({domField:"editor.helpId",schemaField:"editor.helpId"})),i.push({domField:"path",schemaField:"bindingPath"}),i.push({domField:"binding.path",schemaField:"bindingField"}),i.push({domField:"binding.fullPath",schemaField:"path"}),(n.type===s.DgControl["data-grid-column"].type||n.type===s.DgControl["tree-grid-column"].type)&&i.push({domField:"field",schemaField:"bindingPath"}),i}};y(I,"fieldControlTypeMapping",{String:[{key:s.DgControl["input-group"].type,value:s.DgControl["input-group"].name},{key:s.DgControl.lookup.type,value:s.DgControl.lookup.name},{key:s.DgControl.image.type,value:s.DgControl.image.name},{key:s.DgControl["date-picker"].type,value:s.DgControl["date-picker"].name},{key:s.DgControl.switch.type,value:s.DgControl.switch.name},{key:s.DgControl["check-box"].type,value:s.DgControl["check-box"].name},{key:s.DgControl["check-group"].type,value:s.DgControl["check-group"].name},{key:s.DgControl["radio-group"].type,value:s.DgControl["radio-group"].name},{key:s.DgControl["combo-list"].type,value:s.DgControl["combo-list"].name},{key:s.DgControl.textarea.type,value:s.DgControl.textarea.name},{key:s.DgControl["time-picker"].type,value:s.DgControl["time-picker"].name},{key:s.DgControl["rich-text-editor"].type,value:s.DgControl["rich-text-editor"].name}],Text:[{key:s.DgControl.textarea.type,value:s.DgControl.textarea.name},{key:s.DgControl.lookup.type,value:s.DgControl.lookup.name},{key:s.DgControl.image.type,value:s.DgControl.image.name},{key:s.DgControl.avatar.type,value:s.DgControl.avatar.name},{key:s.DgControl["rich-text-editor"].type,value:s.DgControl["rich-text-editor"].name}],Decimal:[{key:s.DgControl["number-spinner"].type,value:s.DgControl["number-spinner"].name}],Integer:[{key:s.DgControl["number-spinner"].type,value:s.DgControl["number-spinner"].name}],Number:[{key:s.DgControl["number-spinner"].type,value:s.DgControl["number-spinner"].name},{key:s.DgControl.switch.type,value:s.DgControl.switch.name},{key:s.DgControl["check-box"].type,value:s.DgControl["check-box"].name}],BigNumber:[{key:s.DgControl["number-spinner"].type,value:s.DgControl["number-spinner"].name}],Date:[{key:s.DgControl["date-picker"].type,value:s.DgControl["date-picker"].name}],DateTime:[{key:s.DgControl["date-picker"].type,value:s.DgControl["date-picker"].name}],Boolean:[{key:s.DgControl.switch.type,value:s.DgControl.switch.name},{key:s.DgControl["check-box"].type,value:s.DgControl["check-box"].name}],Enum:[{key:s.DgControl["combo-list"].type,value:s.DgControl["combo-list"].name},{key:s.DgControl["radio-group"].type,value:s.DgControl["radio-group"].name}],Object:[{key:s.DgControl.lookup.type,value:s.DgControl.lookup.name},{key:s.DgControl["combo-list"].type,value:s.DgControl["combo-list"].name}]});let S=I;var V=(m=>(m.Form="Form",m.Variable="Variable",m))(V||{});class L{constructor(){y(this,"label","");y(this,"id","");y(this,"columnInSM",12);y(this,"columnInMD",6);y(this,"columnInLG",3);y(this,"columnInEL",2);y(this,"displayWidthInSM",1);y(this,"displayWidthInMD",1);y(this,"displayWidthInLG",1);y(this,"displayWidthInEL",1);y(this,"displayColumnCountAtBreakPoint","md");y(this,"tagRow",0);y(this,"showTopBorder",0);y(this,"group",1);y(this,"isSupportedClass",!0);y(this,"fieldSetId","")}}function G(m){let n,e;const t=new Map;let i=[];function o(f,l){const b=(f||"").split(" ").filter(F=>F.startsWith("col-"));if(b.length===0){l.isSupportedClass=!1;return}let g=b.find(F=>/^col-([1-9]|10|11|12)$/.test(F)),u=b.find(F=>/^col-md-([1-9]|10|11|12)$/.test(F)),v=b.find(F=>/^col-xl-([1-9]|10|11|12)$/.test(F)),x=b.find(F=>/^col-el-([1-9]|10|11|12)$/.test(F));g=g||"col-12",l.columnInSM=parseInt(g.replace("col-",""),10),l.displayWidthInSM=l.columnInSM/12,l.displayWidthInSM!==1&&(l.isSupportedClass=!1),u=u||"col-md-"+l.columnInSM,l.columnInMD=parseInt(u.replace("col-md-",""),10),l.displayWidthInMD=l.columnInMD/6,[1,2].includes(l.displayWidthInMD)||(l.isSupportedClass=!1),v=v||"col-xl-"+l.columnInMD,l.columnInLG=parseInt(v.replace("col-xl-",""),10),l.displayWidthInLG=l.columnInLG/3,[1,2,3,4].includes(l.displayWidthInLG)||(l.isSupportedClass=!1),x=x||"col-el-"+l.columnInLG,l.columnInEL=parseInt(x.replace("col-el-",""),10),l.displayWidthInEL=l.columnInEL/2,[1,2,3,4,5,6].includes(l.displayWidthInEL)||(l.isSupportedClass=!1)}function r(f,l,d,b=!1){let g=!1;if(!f.contents||f.contents.length===0){const u=new L;o(f.layout,u),l.push(u);return}f.contents.forEach(u=>{if(u.type==="fieldset"){d+=1,r(u,l,d,!0),g=!0;return}if(u.type==="dynamic-form")return;g&&(d+=1,g=!1);const v=u.appearance&&u.appearance.class,x=new L;v?o(v,x):x.isSupportedClass=!1,x.label=u.label||u.id,x.id=u.id,x.group=d,b&&(x.fieldSetId=f.id),e===u.id&&(n=d),t.set(u.id,u),l.push(x)})}function c(f){const l=m.getComponentById(f);if(!l||!l.componentType||!l.componentType.startsWith("form"))return{result:!1,message:"只可以在响应式表单组件中调整响应式布局配置"};const d=m.selectNode(l,b=>b.type===s.DgControl["response-form"].type);return!d||!d.contents||d.contents.length===0?{result:!1,message:"Form区域内没有控件,请先添加控件"}:{result:!0,message:"",formNode:d}}function a(f,l){l=l||f.id;const{result:d,message:b,formNode:g}=c(l);if(!d)return{result:d,message:b};e=f.id,i=[],t.clear();const u=g.contents[0].type===s.DgControl.fieldset.type?0:1;r(g,i,u);const v=i.find(F=>!F.isSupportedClass);return{defaultState:{defaultGroupNumber:n||1,model:v?"customize":"standard"},importData:i}}function p(f,l){l=l;const{result:d,formNode:b}=c(l);if(!d)return"";const g=[];return f.forEach(u=>{var F;const v=t.get(u.id),x=v.appearance&&v.appearance.class;if(x){const T=x.split(" ").filter(oe=>!oe.startsWith("col-")),M="col-"+u.columnInSM,ee="col-md-"+u.columnInMD,te="col-xl-"+u.columnInLG,ie="col-el-"+u.columnInEL,ne=[M,ee,te,ie].concat(T);v.appearance.class=ne.join(" ")}if(u.fieldSetId){const k=b.contents.find(M=>M.id===u.fieldSetId),T=g.find(M=>M.id===u.fieldSetId);T?(F=T.contents)==null||F.push(v):(g.push(k),k.contents=[v])}else g.push(v)}),b.contents=g,b.id}return{checkCanFindFormNode:c,checkCanOpenLayoutEditor:a,changeFormControlsByResponseLayoutConfig:p,getResonseFormLayoutConfig:r}}const j=m=>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 W extends O{constructor(e,t){super(e,t);y(this,"responseLayoutEditorFunction");y(this,"bindingVarible");y(this,"formGroupEvents",[{label:"fieldValueChanging",name:"绑定字段值变化前事件"},{label:"fieldValueChanged",name:"绑定字段值变化后事件"},{label:"onClickLabel",name:"标签点击事件"}]);y(this,"numberEditorOptions",{type:"number-spinner",useThousands:!1,keyboard:!1,showButton:!1});y(this,"showCustomValue",e=>{var i;const t=this.designViewModelField!=null&&((i=this.designViewModelField)==null?void 0:i.type.name)!=="Boolean";return this.formRule?e.dataType!=="boolean":t});this.responseLayoutEditorFunction=G(this.formSchemaUtils)}getCommonPropertyConfig(e,t,i="Card"){if(this.propertyConfig.categories.basic=this.getBasicProperties(e,t,i),this.propertyConfig.categories.appearance=this.getAppearanceProperties(e,t),this.propertyConfig.categories.behavior=this.getBehaviorConfig(e,"form-group"),i==="Card"){const o=this.getTipsConfig(e);this.propertyConfig.categories.behavior.properties={...this.propertyConfig.categories.behavior.properties,...o},["time-picker","date-picker","lookup","combo-list","number-spinner","input-group","language-textbox"].includes(e.editor.type)&&(this.propertyConfig.categories.expansion=this.getExpandProperties(e,i))}}getPropertyConfig(e,t){return this.getCommonPropertyConfig(e,t,"Card"),this.propertyConfig.categories.editor=this.getEditorProperties(e),this.propertyConfig.categories.expressions=this.getExpressionConfig(e,"Field"),this.propertyConfig.categories.eventsEditor=this.getEventPropertyConfig(e),this.propertyConfig}getGridFieldEdtiorPropConfig(e,t){return this.propertyConfig.categories={},this.getCommonPropertyConfig(e,t,"Grid"),this.getGridFieldEdtiorProperties?this.propertyConfig.categories.editor=this.getGridFieldEdtiorProperties(e):this.propertyConfig.categories.editor=this.getEditorProperties(e),this.propertyConfig.categories.expressons=this.getExpressionConfig(e,"Field"),this.propertyConfig.categories}getBasicProperties(e,t,i="Card"){var l;const o=this;this.setDesignViewModelField(e);const{canChangeControlType:r,editorTypeList:c}=this.getAvailableEditorType(e),a=this.getPropertyEditorParams(e,["Variable"],"label",{},{newVariablePrefix:"",newVariableType:"String"});let p=c;this.formRule&&(p=c.filter(d=>d.key!=="image"&&d.key!=="rich-text-editor"&&d.key!=="avatar"));const f={description:"Basic Information",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"编辑器类型",title:"编辑器类型",type:"string",$converter:"/converter/change-editor.converter",parentPropertyID:"editor",editor:{type:"combo-list",textField:"value",valueField:"key",idField:"key",editable:!1,data:p,readonly:!r}},titleSourceType:{description:"标签来源类型",title:"标签类型",type:"string",refreshPanelAfterChanged:!0,editor:{type:"combo-list",textField:"name",valueField:"id",idField:"id",editable:!1,data:[{id:"static",name:"静态"},{id:"dynamic",name:"动态"}]},defaultValue:"static"},label:{title:"标签",type:"string",$converter:"/converter/form-group-label.converter",visible:!e.titleSourceType||e.titleSourceType==="static"},titleDataSource:{description:"标签",title:"标签",type:"string",editor:a,visible:e.titleSourceType==="dynamic"},showLabelType:{description:"标签显示方式:1、显示:显示标签 2、占位:保留标签空间,但不显示文本 3、不显示:不显示标签",title:"标签显示",type:"enum",editor:{data:[{id:"visible",name:"显示"},{id:"reserve-space",name:"占位"},{id:"none",name:"不显示"}]},defaultValue:((l=e.editor)==null?void 0:l.type)==="image"?"none":"visible"},binding:{description:"绑定的表单字段",title:"绑定",editor:{type:"binding-selector",bindingType:{enable:!0},title:"绑定编辑器",editorParams:{componentSchema:e,needSyncToViewModel:!0,viewModelId:this.viewModelId,designerHostService:this.designerHostService,disableOccupiedFields:!0},textField:"bindingField"},refreshPanelAfterChanged:!0,readonly:this.formSchemaUtils.designerMode==="PC_RTC"&&!e.isRtcControl}},setPropertyRelates(d,b,g){if(d)switch(d&&d.propertyID){case"type":{o.changeControlType(e,d,t);break}case"label":{d.needRefreshControlTree=!0;break}case"binding":{o.changeBindingField(e,d,g);break}case"titleDataSource":{o.afterMutilEditorChanged(e,d);break}}}};return i.toLocaleLowerCase()!=="card"&&(f.hide=!0,delete f.properties.showLabelType),f}getExpandProperties(e,t="Card"){const i=this,o=["Const","Variable"],r=this.getPropertyEditorParams(e,o,"expandable"),c=this.getPropertyEditorParams(e,o,"expandDisabled");return t==="Card"?{description:"Expand Information",hide:!!this.formRule,title:"扩展区域",properties:{expandable:{description:"扩展区域是指输入框右侧的区域,常用于展示自定义按钮或者文本,以便于丰富输入控件的展示内容。",title:"启用扩展区域",refreshPanelAfterChanged:!0,$converter:"/converter/property-editor.converter",editor:r},expandMode:{description:"静态文本:扩展内容不可点击;交互式按钮:扩展内容可以点击并配置交互事件。",title:"扩展模式",type:"enum",refreshPanelAfterChanged:!0,$converter:"/converter/property-editor.converter",editor:{data:[{id:"text",name:"静态文本"},{id:"button",name:"交互按钮"}]},defaultValue:"text",visible:!!e.editor.expandable},expandContent:{$converter:"/converter/property-editor.converter",description:"扩展区域内展示的文本内容",title:"扩展内容",type:"string",visible:!!e.editor.expandable,editor:{type:"code-editor",language:"html"}},expandDisabled:{$converter:"/converter/property-editor.converter",description:"是否动态隐藏扩展区域,常用于根据变量或自定义条件配置扩展区域的隐藏状态。",title:"隐藏扩展区域",editor:c,visible:!!e.editor.expandable}},setPropertyRelates(p,f){if(p)switch(p.propertyID){case"expandable":case"expandDisabled":i.afterMutilEditorChanged(e,p);break}}}:{properties:{}}}checkCanChangeControlType(e,t){if(!e.binding)return!1;if(e.binding.type==="Variable"){if(this.bindingVarible=this.formSchemaUtils.getVariableById(e.binding.field),!this.bindingVarible)return!1}else if(!this.designViewModelField||this.designViewModelField.$type!==C.FormSchemaEntityField$Type.SimpleField)return!1;return!0}getAvailableEditorType(e){var o,r;const t=this.checkCanChangeControlType(e,this.viewModelId);if(!t)return{canChangeControlType:!1,editorTypeList:[{key:e.editor.type,value:((o=s.DgControl[e.editor.type])==null?void 0:o.name)||e.editor.type}]};let i=[];return this.designViewModelField&&this.designViewModelField.$type===C.FormSchemaEntityField$Type.SimpleField?i=S.getEditorTypesByMDataType(this.designViewModelField.type.name,this.designViewModelField.multiLanguage):this.bindingVarible&&(i=S.getEditorTypesByMDataType(this.bindingVarible.type,!!((r=this.designViewModelField)!=null&&r.multiLanguage))),{canChangeControlType:t,editorTypeList:i}}changeBindingField(e,t,i){t.needRefreshEntityTree=!0}getAppearanceProperties(e,t){const i=this;return{title:"外观",description:"Appearance",properties:{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"},fill:{title:"填充宽度",description:"启用后,控件占满父容器宽度",type:"boolean",parentPropertyID:"appearance",defaultValue:!1},responseLayout:{description:"响应式列宽",title:"响应式列宽",type:"boolean",visible:!i.formRule,refreshPanelAfterChanged:!0,editor:{type:"response-layout-editor-setting",beforeOpen:()=>i.responseLayoutEditorFunction.checkCanOpenLayoutEditor(e,i.componentId)}}},setPropertyRelates(o,r){if(o)switch(o&&o.propertyID){case"responseLayout":i.responseLayoutEditorFunction.changeFormControlsByResponseLayoutConfig(o.propertyValue,i.componentId||e.id),i.updateUnifiedLayoutAfterResponseLayoutChanged(i.componentId),i.updateElementByParentContainer(e.id,t),delete e.responseLayout;break;case"class":i.updateUnifiedLayoutAfterControlChanged(o.propertyValue,e.id,this.componentId),s.canvasChanged.value++;break;case"style":{s.canvasChanged.value++;break}}}}}getEditorProperties(e){return this.getComponentConfig(e)}changeControlType(e,t,i){var g;const o=t.propertyValue,r=i&&i.parent&&i.parent.schema;if(!r)return;const c=r.contents.findIndex(u=>u.id===e.id);if(c===-1)return;const a=r.contents[c];let p;if(this.designViewModelField){const x=this.formSchemaUtils.getViewModelById(this.viewModelId).fields.find(k=>k.id===this.designViewModelField.id).fieldSchema||{};x.editor||(x.editor={}),x.editor.$type=o,this.designViewModelUtils.getDgViewModel(this.viewModelId).changeField(this.designViewModelField.id,x,!1),p=this.controlCreatorUtils.setFormFieldProperty(this.designViewModelField,o)}p||(p=this.controlCreatorUtils.createFormGroupWithoutField(o)),Object.assign(p,{id:a.id,appearance:a.appearance,size:a.size,label:a.label,binding:a.binding}),Object.prototype.hasOwnProperty.call(a,"visible")&&Object.assign(p,{visible:a.visible}),a.editor&&["readonly","required","placeholder"].map(u=>{Object.prototype.hasOwnProperty.call(a.editor,u)&&(p.editor[u]=a.editor[u])});const f=["image","avatar"],l=a.editor.type&&f.indexOf(a.editor.type)>-1,d=((g=p.editor)==null?void 0:g.type)&&f.indexOf(p.editor.type)>-1;l&&a.showLabelType==="none"&&!d&&(p.showLabelType="visible"),i!=null&&i.updateContextSchema?i.updateContextSchema(p):(i.schema=Object.assign(a,p),Object.assign(e,p)),Array.from(document.getElementsByClassName("dgComponentSelected")).forEach(u=>u.classList.remove("dgComponentSelected")),Array.from(document.getElementsByClassName("dgComponentFocused")).forEach(u=>u.classList.remove("dgComponentFocused")),["time-picker","date-picker","lookup","combo-list","number-spinner","input-group","textarea","rich-text-editor","language-textbox"].includes(e.editor.type)||(e.enableTips=!1),s.canvasChanged.value++,h.nextTick(()=>{this.getFormDesignerInstance().reloadPropertyPanel()})}getTipsConfig(e){return["time-picker","date-picker","lookup","combo-list","number-spinner","input-group","textarea","rich-text-editor","language-textbox"].includes(e.editor.type)?{enableTips:{refreshPanelAfterChanged:!0,description:"",title:"启用提示",type:"boolean",default:!1,visible:!this.formRule},tipsContent:{description:"提示内容",title:"提示内容",type:"string",editor:{type:"code-editor",language:"html",leftTemplate:j},visible:!!e.enableTips&&!this.formRule}}:{}}getComponentConfig(e,t={},i={},o){var d,b,g;const r=Object.assign({description:"编辑器",title:"编辑器",type:"input-group",$converter:"/converter/property-editor.converter",parentPropertyID:"editor"},t),c=(d=e.binding)!=null&&d.field?["Const","Variable","StateMachine","Custom","Expression"]:["Const","Variable","StateMachine","Custom"],a=this.getPropertyEditorParams(e,c,"readonly"),p=this.getPropertyEditorParams(e,c,"required"),f={readonly:{description:"",title:"只读",editor:a},required:{description:"",title:"必填",type:"boolean",editor:p,visible:!!((b=e.binding)!=null&&b.field)&&((g=e.binding)==null?void 0:g.type)==="Form"},placeholder:{description:"当控件没有值时在输入框中显示的文本",title:"提示文本",type:"string"}};for(const u in i)f[u]=Object.assign(f[u]||{},i[u]);const l=this;return{...r,properties:{...f},setPropertyRelates(u,v){if(u){switch(u.propertyID){case"readonly":case"required":case"label":l.afterMutilEditorChanged(e,u);break}o&&o.bind(l)(u,e,v)}}}}updateUnifiedLayoutAfterControlChanged(e,t,i){const o=e.split(" ");let r=o.find(l=>/^col-([1-9]|10|11|12)$/.test(l)),c=o.find(l=>/^col-md-([1-9]|10|11|12)$/.test(l)),a=o.find(l=>/^col-xl-([1-9]|10|11|12)$/.test(l)),p=o.find(l=>/^col-el-([1-9]|10|11|12)$/.test(l));r=r||"col-12",c=c||"col-md-"+r.replace("col-",""),a=a||"col-xl-"+c.replace("col-md-",""),p=p||"col-el-"+a.replace("col-xl-","");const f={id:t,columnInSM:parseInt(r.replace("col-",""),10),columnInMD:parseInt(c.replace("col-md-",""),10),columnInLG:parseInt(a.replace("col-xl-",""),10),columnInEL:parseInt(p.replace("col-el-",""),10)};this.updateUnifiedLayoutAfterResponseLayoutChanged(i,f)}updateUnifiedLayoutAfterResponseLayoutChanged(e,t){const{formNode:i}=this.responseLayoutEditorFunction.checkCanFindFormNode(e);if(!i||!i.unifiedLayout)return;const o=[];if(this.responseLayoutEditorFunction.getResonseFormLayoutConfig(i,o,1),t){const g=o.find(u=>u.id===t.id);Object.assign(g||{},t)}const r=o.map(g=>g.columnInSM),c=o.map(g=>g.columnInMD),a=o.map(g=>g.columnInLG),p=o.map(g=>g.columnInEL),f=this.checkIsUniqueColumn(r)?r[0]:null,l=this.checkIsUniqueColumn(c)?c[0]:null,d=this.checkIsUniqueColumn(a)?a[0]:null,b=this.checkIsUniqueColumn(p)?p[0]:null;Object.assign(i.unifiedLayout,{uniqueColClassInSM:f,uniqueColClassInMD:l,uniqueColClassInLG:d,uniqueColClassInEL:b})}checkIsUniqueColumn(e){const t=new Set(e);return Array.from(t).length===1}getItemCollectionEditor(e,t,i){return t=t||"value",i=i||"name",{editor:{columns:[{field:t,title:"值",dataType:"string"},{field:i,title:"名称",dataType:"string"}],type:"item-collection-editor",valueField:t,nameField:i,requiredFields:[t,i],uniqueFields:[t,i],readonly:this.checkEnumDataReadonly(e)}}}checkEnumDataReadonly(e){return!e.binding||e.binding.type!=="Form"?!1:!!(this.designViewModelField&&this.designViewModelField.type&&this.designViewModelField.type.$type===C.FormSchemaEntityFieldType$Type.EnumType)}appendFieldValueChangeEvents(e,t){e.binding&&e.binding.type===V.Form&&e.binding.field?(t.find(i=>i.label==="fieldValueChanging"),t.find(i=>i.label==="fieldValueChanged"),this.designViewModelField&&(e.fieldValueChanging=this.designViewModelField.valueChanging,e.fieldValueChanged=this.designViewModelField.valueChanged)):t=t.filter(i=>i.label!=="fieldValueChanging"&&i.label!=="fieldValueChanged")}getControlMethodType(e){if(!e.binding)return e.type;switch(e.binding.type){case V.Form:return e.binding.path||e.type;case V.Variable:return e.binding.fullPath||e.type}return e.type}updateLinkedLabel(e,t){if(e.boundEventsList&&e.boundEventsList.length>0){const i=e.boundEventsList.find(o=>o.boundEvents&&o.boundEvents.label==="onClickLabel");t.linkLabel=!!i}else t.linkLabel=!1}getInputCommonEvents(e){return!e.binding||e.binding.type===V.Variable?[{label:"onClickLabel",name:"标签点击事件"}]:this.formRule?[{label:"onClickLabel",name:"标签点击事件"}]:[...this.formGroupEvents]}getEventPropertyConfig(e,t="card",i,o){const r=this;let c=this.getInputCommonEvents(e);if(["time-picker","date-picker","lookup","combo-list","number-spinner","input-group"].includes(e.editor.type)&&c.push({label:"onClear",name:"清空事件"}),i&&(c=c.concat(i)),c.length===0)return{title:"事件",hideTitle:!0,properties:{},tabId:C.EVENT_PROPERTY_TAB_IDS,tabName:"交互",hide:!0};this.appendFieldValueChangeEvents(e,c);const p=r.eventsEditorUtils.formProperties(e,r.viewModelId,c);return{title:"事件",hideTitle:!0,properties:r.createBaseEventProperty(p),tabId:C.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(d,b){const g=d.propertyValue;delete e[r.viewModelId],g&&(g.setPropertyRelates=this.setPropertyRelates,g.controlInfo={type:r.getControlMethodType(e),name:e.title},r.eventsEditorUtils.saveRelatedParameters(e,r.viewModelId,g.events,g),r.updateLinkedLabel(g,e)),o&&o(d,e,g);const u=r.designViewModelUtils.getDgViewModel(r.viewModelId);u&&r.designViewModelField&&u.changeField(r.designViewModelField.id,{valueChanging:e.fieldValueChanging||"",valueChanged:e.fieldValueChanged||""})}}}getExpressionConfig(e,t,i=["compute","dependency","validate"],o){return this.expressionProperty.getExpressionConfig(e,t,i,o)}getBindingDataType(e){return this.formRule?(e==null?void 0:e.dataType)||"string":this.designViewModelField?this.designViewModelField.type.name==="Number"?"number":this.designViewModelField.type.name==="String"?"string":"boolean":"boolean"}getEditor(e){return this.getBindingDataType(e)==="number"?this.numberEditorOptions:{}}updatePropertyValue(e,t,i){var o;e.editor[t]!==i?e.editor[t]=i:(o=this.getFormDesignerInstance())==null||o.reloadPropertyPanel()}setBooleanValue(e,t,i){let o=i;this.getBindingDataType()==="string"&&(o=(o||"").trim()||(t==="trueValue"?"true":"false"));const c=t==="trueValue"?"falseValue":"trueValue";e.editor[c]===o&&(o=o+1),this.updatePropertyValue(e,t,o)}getBooleanValueConverter(){return{convertFrom:(e,t)=>e.editor[t],convertTo:(e,t,i)=>{this.setBooleanValue(e,t,i)}}}}class _ extends W{getPropertyConfig(n,e){return this.propertyConfig.categories.basic=this.getBasicPropConfig(n),this.propertyConfig.categories.appearance=this.getAppearanceConfig(n,{horizontal:{description:"布局方向",title:"布局方向",type:"enum",editor:{type:"combo-list",data:[{id:!0,name:"水平"},{id:!1,name:"垂直"}]}}}),this.getNavBehaviorConfig(n),this.getEventPropConfig(n),this.propertyConfig}getEventPropConfig(n){const e=[{label:"navPicking",name:"切换前事件"},{label:"onNav",name:"切换事件"}],t=this,i=t.eventsEditorUtils.formProperties(n,t.viewModelId,e),o=t.createBaseEventProperty(i);this.propertyConfig.categories.eventsEditor={title:"事件",hideTitle:!0,properties:o,refreshPanelAfterChanged:!0,tabId:C.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(r,c){const a=r.propertyValue;delete n[t.viewModelId],a&&(a.setPropertyRelates=this.setPropertyRelates,t.eventsEditorUtils.saveRelatedParameters(n,t.viewModelId,a.events,a))}}}getNavData(n){const e=n.navData||[],t=[];return e.forEach(i=>{t.push({name:i.text,id:i.id})}),t}getNavBehaviorConfig(n){const e=this.getNavData(n);typeof n.activeNavId=="string"&&(n.activeNavId&&e.find(c=>c.id===n.activeNavId)||(n.activeNavId=e[0].id));const t=this.getPropertyEditorParams(n,n.dataSourceType==="dynamic"?["Variable"]:["Const","Variable"],"activeNavId",{constType:"enum",constEnums:e},{newVariablePrefix:"",newVariableType:"String"}),i=this,o=this.getPropertyEditorParams(n,["Variable"],"bindDataSource",{},{newVariablePrefix:"",newVariableType:"Object"});this.propertyConfig.categories.behavior=this.getBehaviorConfig(n,"",{dataSourceType:{description:"若存在数据变更,请使用动态数据源。",title:"数据源类型",type:"enum",visible:!0,editor:{default:"static",data:[{id:"static",name:"静态"},{id:"dynamic",name:"动态"}]},refreshPanelAfterChanged:!0},bindDataSource:{description:"动态类型绑定数据源选择",title:"绑定数据源",visible:(n==null?void 0:n.dataSourceType)==="dynamic",type:"object",editor:o},navData:{description:"静态类型数据源选择",title:"数据源",type:"array",visible:!(n!=null&&n.dataSourceType)||n.dataSourceType==="static",...i.getItemCollectionEditor(n,n.idField||"id",n.displayField||"text"),refreshPanelAfterChanged:!0},activeNavId:{title:"默认选中标签页",type:"string",description:"默认选中标签页",defaultValue:(n==null?void 0:n.dataSourceType)==="dynamic"?null:e.length>0?e[0].id:"",editor:t},maxNum:{description:"超过最大值后以【maxNum+】显示",title:"显示数字最大值",min:0,useThousands:!1,needValid:!0}},(r,c)=>{switch(r.propertyID){case"bindDataSource":case"activeNavId":i.afterMutilEditorChanged(n,r);break}})}}function z(m,n){function e(r,c){const a=m.schema;return new _(r,n).getPropertyConfig(a,c)}function t(){return!1}function i(){return!0}function o(){return!0}return{getPropsConfig:e,canAccepts:t,checkCanDeleteComponent:i,checkCanMoveComponent:o}}const X=new Map([["appearance",P.resolveAppearance]]),Y=new Map([["appearance",P.resolveAppearance]]);function B(m,n,e){return n}const D={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/nav.schema.json",title:"nav",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for a nav",type:"string"},type:{description:"The type string of nav component",type:"string",default:"nav"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},visible:{description:"",type:"boolean",default:!0},activeNavId:{description:"",type:"string",default:""},displayField:{description:"",type:"string",default:"text"},disableField:{description:"",type:"string",default:"disable"},horizontal:{description:"",type:"boolean",default:!0},idField:{description:"",type:"string",default:"id"},valueField:{description:"",type:"string",default:"num"},maxNum:{description:"",type:"number",default:99},navData:{description:"",type:"array",default:[]},dataSourceType:{description:"",type:"string",default:"static"},bindDataSource:{description:"",type:"object"},navPicking:{type:"object",default:null}},required:["id","type"],events:{navPicking:"切换前事件",onNav:"切换事件"}},N={activeNavId:{Type:String,default:""},displayField:{Type:String,default:"text"},disableField:{Type:String,default:"disable"},horizontal:{Type:Boolean,default:!0},idField:{Type:String,default:"id"},maxNum:{Type:Number,default:99},navData:{Type:Array,default:[]},navPicking:{type:Function,default:null},valueField:{Type:String,default:"num"},visible:{Type:Boolean,default:!0},customClass:{Type:String,default:""},customStyle:{Type:String,default:""}},H=P.createPropsResolver(N,D,X,B),A=Object.assign({},N,{componentId:{type:String,default:""},dataSourceType:{Type:String,default:"static"}}),J=P.createPropsResolver(A,D,Y,B),w=h.defineComponent({name:"FNavDesign",props:A,emits:["nav"],setup(m,n){const e=h.ref(m.activeNavId),t=[{id:"all",text:"全部"},{id:"replay",text:"已回复"},{id:"wait",text:"待回复",num:200},{id:"me",text:"@我",num:33}],i=h.ref(m.navData&&m.navData.length===0?t:m.navData),o=h.ref(),r=h.inject("design-item-context"),c=h.inject("designer-host-service"),a=z(r,c),p=s.useDesignerComponent(o,r,a);h.onMounted(()=>{o.value.componentInstance=p}),n.expose(p.value);function f(){if(m.dataSourceType==="dynamic"){i.value=t,e.value="all";return}if(i.value&&i.value.length)if(e.value)i.value.find(u=>u.id===e.value)||(e.value=i.value[0].id);else{const g=i.value.find(u=>!u.disable);g&&(e.value=g.id)}}f(),h.watch(()=>m.navData,g=>{i.value=g&&g.length===0?t:g,f()}),h.watch(()=>m.activeNavId,g=>{e.value=g,f()}),h.watch(()=>m.dataSourceType,()=>{i.value=m.navData&&m.navData.length===0?t:m.navData,f()});function l(g){g.id!==e.value&&(e.value=g.id)}const d=h.computed(()=>{const g={"farris-nav":!0,"farris-nav-vertical":!m.horizontal};return C.getCustomClass(g,m.customClass)}),b=h.computed(()=>{const g={};return C.getCustomStyle(g,m.customStyle)});return()=>{var g;return h.createVNode("div",{ref:o,class:d.value,style:b.value},[(g=i.value)==null?void 0:g.map(u=>h.createVNode("div",{class:["farris-nav-item",{active:u.id===e.value}],onClick:()=>l(u)},[h.createVNode("div",{class:"farris-nav-item-link"},[h.createVNode("span",{class:"farris-nav-item-link-text"},[u.text,u.num&&h.createVNode("div",{class:"farris-nav-item-tag"},[u.num<=m.maxNum&&h.createVNode("span",{class:"tag-text"},[u.num]),u.num>m.maxNum&&h.createVNode("span",{class:"tag-text"},[m.maxNum,h.createTextVNode("+")])])])])]))])}}}),Q=h.defineComponent({name:"FNav",props:N,emits:["nav","update:activeNavId"],setup(m,n){const e=h.ref(m.activeNavId),t=h.ref(m.navData),i=new U.FNotifyService;function o(l){if(t.value&&t.value.length){let d=t.value.find(b=>b[m.idField]===l&&b[m.disableField]!==!0);d||(d=t.value.find(b=>b[m.disableField]!==!0)),d&&e.value!==d.id&&(e.value=d.id,n.emit("nav",d))}}h.watch([()=>m.activeNavId,()=>m.navData],([l,d])=>{t.value=d,o(l)});const r=h.computed(()=>m.visible&&t.value.length>0);function c(l){l.disable||l.id===e.value||Promise.resolve().then(()=>{const d=m.navPicking;return d&&typeof d=="function"?d(l):!0}).then(d=>{let b=!0;typeof d=="object"?d.canContinue||(b=!1,d.message&&(i==null||i.error({message:d.message,position:"top-center"}))):b=d,b&&(e.value=l.id,n.emit("update:activeNavId",l.id),n.emit("nav",l))})}const a=h.computed(()=>{const l={"farris-nav":!0,"farris-nav-vertical":!m.horizontal};return C.getCustomClass(l,m.customClass)}),p=h.computed(()=>{const l={};return C.getCustomStyle(l,m.customStyle)});function f(l){t.value=l,o(e.value)}return n.expose({updateNavData:f}),()=>{var l;return r.value&&h.createVNode("div",{class:a.value,style:p.value},[(l=t.value)==null?void 0:l.map(d=>h.createVNode("div",{class:["farris-nav-item",{active:d[m.idField]===e.value},{disabled:d[m.disableField]}],onClick:()=>c(d)},[h.createVNode("div",{class:"farris-nav-item-link pt-3"},[h.createVNode("span",{class:"farris-nav-item-link-text"},[typeof d[m.displayField]=="function"?d[m.displayField]():d[m.displayField],d[m.valueField]&&h.createVNode("div",{class:"farris-nav-item-tag"},[d[m.valueField]<=m.maxNum&&h.createVNode("span",{class:"tag-text"},[d[m.valueField]]),d[m.valueField]>m.maxNum&&h.createVNode("span",{class:"tag-text"},[m.maxNum,h.createTextVNode("+")])])]),h.createVNode("div",{class:"farris-nav-item-bottom-line"},null)])]))])}}});function Z(){function m(n,e,t){const i={};return i.navPicking=o=>e.call("navPicking",n,[o,n],t),i}return{resolve:m}}w.registerDesigner=(m,n,e,t)=>{m.nav=w,n.nav=J},w.register=(m,n,e,t)=>{m.nav=Q,n.nav=H,t.nav={callbackResolver:Z()}};const K=C.withInstall(w);E.FNavDesign=w,E.default=K,Object.defineProperties(E,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});