@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
28 lines (27 loc) • 34.8 kB
JavaScript
(function(x,z){typeof exports=="object"&&typeof module<"u"?z(exports,require("../../components/common/index.umd.js"),require("../../components/wizard/index.umd.js"),require("vue"),require("../../components/step/index.umd.js"),require("../../components/designer-canvas/index.umd.js"),require("lodash-es"),require("../../components/dynamic-resolver/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","../../components/common/index.umd.js","../../components/wizard/index.umd.js","vue","../../components/step/index.umd.js","../../components/designer-canvas/index.umd.js","lodash-es","../../components/dynamic-resolver/index.umd.js"],z):(x=typeof globalThis<"u"?globalThis:x||self,z(x.wizard={},x.common,x.wizard,x.Vue,x.FStep,x.designerCanvas,x.LodashES,x.dynamicResolver))})(this,function(x,z,N,c,te,$,ie,R){"use strict";var $e=Object.defineProperty;var Be=(x,z,N)=>z in x?$e(x,z,{enumerable:!0,configurable:!0,writable:!0,value:N}):x[z]=N;var I=(x,z,N)=>Be(x,typeof z!="symbol"?z+"":z,N);const ne={stepClickable:{type:Boolean,default:!1},stepCls:{type:String,default:""},direction:{type:String,default:"vertical"},stepPosition:{type:String,default:"None"},fill:{type:Boolean,default:!0},storedIndex:{type:Boolean,default:!1},storedIndexState:{type:Boolean,default:!1},currentPageId:{type:String,default:""},currentStepIndex:{type:Number,default:0},visible:{type:Boolean,default:!0},stepsData:{type:Array,default:()=>[]},customClass:{type:String,default:""},customStyle:{type:String,default:""}},L=Symbol("WizardContext");function re(a,e){const t=c.ref({}),i=c.computed(()=>{var f;return((f=a[e.value])==null?void 0:f.id)||""});function r(f){t.value=f}function o(){return t.value}function n(){e.value>0&&(e.value===a.length?e.value=e.value-2:e.value--)}function d(){e.value<a.length&&e.value++}function s(f){e.value=f}function l(f,h){t.value[f]=h}function p(f){return t.value[f]}function u(){return t.value[i.value]}function m(){const f=a.findIndex(h=>h.id===i.value);return f>0?a[f-1].id:i.value}function y(){const f=a.findIndex(h=>h.id===i.value);return f<a.length?a[f+1].id:i.value}function v(f){const h=a.findIndex(V=>V.id===f);return h>0?t.value[a[h-1].id]:t.value[f]}function b(f){const h=a.findIndex(V=>V.id===f);return h<a.length?t.value[a[h+1].id]:t.value[f]}return{currentPageId:i,currentStepIndex:e,wizardData:t,setWizardData:r,getWizardData:o,gotoPreviousStep:n,gotoNextStep:d,setCurrentStep:s,setDataByPageId:l,getDataByPageId:p,getCurrentPageData:u,getPreviousPageDataByPageId:v,getNextPageDataByPageId:b,getPreviousPageId:m,getNextPageId:y}}const E={"tab-page":{type:"tab-page"},section:{type:"section"},"list-view":{name:"列表"}};function oe(a){const{formSchemaUtils:e,formStateMachineUtils:t}=a;function i(s,l=""){return{path:l+s.code,field:s.id,fullPath:s.code}}function r(s,l=""){const p=e.getViewModelById(s);return p?p.states.map(u=>i(u,l)):[]}function o(s){const l=e.getRootViewModelId(),p=r(s);if(s===l)return p;const u=r(l,"root-component.");return[...p,...u]}function n(s){return s.binding&&s.binding.path||s.id||""}function d(){return t&&t.getRenderStates()||[]}return{getVariables:o,getControlName:n,getStateMachines:d}}class se{constructor(e){I(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'"}]);I(this,"expressionNames",{compute:"计算表达式",dependency:"依赖表达式",validate:"验证表达式",dataPicking:"帮助前表达式",visible:"可见表达式",readonly:"只读表达式",required:"必填表达式"});I(this,"getExpressionConverter",(e,t)=>({convertFrom:(i,r,o,n)=>{const d=o.getExpressionRuleValue(e,t||r);return d&&d.value||""},convertTo:(i,r,o,n,d)=>{var s;if(r==="dataPicking"&&(o!=null&&o.target)){const l=`${o.target}_dataPicking`;((s=o.rules)==null?void 0:s.some(u=>u.id===l&&u.value))?i.dictPickingExpressionId=l:delete i.dictPickingExpressionId}n.updateExpression(o)}}));this.formSchemaService=e}getExpressionRule(e,t){const i=this.getExpressionData();if(!i)return"";const r=i.find(n=>n.target===e);if(!r)return"";const o=r.rules.find(n=>n.type===t);return o||""}getContextFormVariables(){const{module:e}=this.formSchemaService.getFormSchema();if(!e.viewmodels||e.viewmodels.length===0)return[];const t=this.formSchemaService.getRootViewModelId(),i=this.formSchemaService.getViewModelById(t);if(!i||!i.states||i.states.length===0)return[];const r=[];return i.states.filter(o=>o.category==="remote").forEach(o=>{r.push({key:o.code,name:o.name,description:o.name,category:o.category})}),r}createTreeNode(e,t,i="label"){return{id:e.id,name:e.name,bindingPath:e[i],parents:t,type:"field"}}buildEntityFieldsTreeData(e=null,t){const i=[];return e==null||e.forEach(r=>{var d;const o=this.createTreeNode(r,t);let n=[];(d=r.type)!=null&&d.fields&&(n=this.buildEntityFieldsTreeData(r.type.fields,[...t,r.label])),i.push({data:o,children:n,expanded:!0})}),i}buildChildEntityTreeData(e=null,t){const i=[];return e==null||e.forEach(r=>{var s,l;const o=this.createTreeNode(r,t);o.type="entity";const n=this.buildEntityFieldsTreeData((s=r.type)==null?void 0:s.fields,[...t,r.label]),d=this.buildChildEntityTreeData((l=r.type)==null?void 0:l.entities,[...t,r.label]);d!=null&&d.length&&(n==null||n.push(...d)),i.push({data:o,children:n||[],expanded:!0})}),i}getEntitiesTreeData(){const e=this.formSchemaService.getSchemaEntities();if(!(e!=null&&e.length))return[];const t=e[0];if(!(t!=null&&t.type))return[];const i=this.buildEntityFieldsTreeData(t.type.fields,[t.code]),r=this.buildChildEntityTreeData(t.type.entities,[t.code]);return r!=null&&r.length&&(i==null||i.push(...r)),{entityCode:t.code,fields:[{data:this.createTreeNode(t,[],"code"),children:i||[]}]}}getEntitiesAndVariables(){return{entities:this.getEntitiesTreeData(),variables:{session:{name:"系统变量",items:this.sessionVariables,visible:!1},forms:{name:"表单变量",items:this.getContextFormVariables(),visible:!0}}}}onBeforeOpenExpression(e,t,i){const r=i==="Field"?e.binding.field:e.id,o=this.getExpressionRule(r,t),n=this.getEntitiesAndVariables(),d={message:["validate","required","dataPicking"].includes(t)&&o?o.message:"",...n};return o.messageType!=null&&(d.messageType=o.messageType),d}buildRule(e,t,i,r){const{expression:o,message:n,messageType:d}=t,s={id:`${e}_${i}`,type:i,value:o};return(i==="validate"||i==="dataPicking"||i==="required")&&(s.message=n),i==="dataPicking"&&(s.messageType=d),i==="validate"&&r&&(s.elementId=r),s}getExpressionData(){const{expressions:e}=this.formSchemaService.getFormSchema().module;return e||[]}updateExpression(e,t,i,r){const o=t==="Field"?e.binding.field:e.id,n=this.buildRule(o,i,r,e.type==="form-group"?e.id:"");let s=this.getExpressionData().find(p=>p.targetType===t&&p.target===o);const l=p=>p.value.trim()==="";if(s){const p=s.rules.find(u=>u.id===n.id);if(p)l(n)?s.rules=s.rules.filter(u=>u.id!==n.id):(Object.assign(p,n),r==="validate"&&e.type==="form-group"&&(p.elementId=e.id));else{if(l(n))return null;s.rules=s.rules||[],s.rules.push(n)}}else{if(l(n))return null;s={target:`${o}`,rules:[n],targetType:t}}return s}getExpressionEditorOptions(e,t,i,r){return i.reduce((o,n)=>{var s,l;const d=t==="Field"?(s=e==null?void 0:e.binding)==null?void 0:s.field:e.id;return o[n]={hide:t==="Field"?!!((l=e==null?void 0:e.binding)!=null&&l.field):!1,description:"",title:this.expressionNames[n],type:"string",$converter:this.getExpressionConverter(d),refreshPanelAfterChanged:!0,editor:{type:"expression-editor",singleExpand:!1,dialogTitle:`${this.expressionNames[n]}编辑器`,showMessage:n==="validate"||n==="dataPicking"||n==="required",showMessageType:n==="dataPicking",beforeOpen:()=>this.onBeforeOpenExpression(e,n,t),onSubmitModal:p=>{const u=this.updateExpression(e,t,p,n);if(r){const m=this.buildRule(d,p,n);r(m)}return u}}},o},{})}getExpressionInfo(e,t,i){const r=t==="Field"?e.binding.field:e.id,o=this.getExpressionRule(r,i),n={value:o&&o.value,targetId:r,targetType:t,expressionType:i};return o&&o.message&&(n.message=o.message),n}getExpressionConfig(e,t,i=["compute","dependency","validate"],r){var o;return{description:"表达式",title:"表达式",hide:!(e.binding&&((o=e.binding)==null?void 0:o.type)==="Form"),properties:{...this.getExpressionEditorOptions(e,t,i,r)}}}getExpressionOptions(e,t,i){const r=this.getExpressionInfo(e,t,i);return{dialogTitle:`${this.expressionNames[i]||"表达式"}编辑器`,singleExpand:!1,showMessage:i==="required",beforeOpen:()=>this.onBeforeOpenExpression(e,i,t),expressionInfo:r}}}class G{constructor(e,t){I(this,"componentId");I(this,"viewModelId");I(this,"eventsEditorUtils");I(this,"formSchemaUtils");I(this,"formMetadataConverter");I(this,"designViewModelUtils");I(this,"designViewModelField");I(this,"controlCreatorUtils");I(this,"designerHostService");I(this,"designerContext");I(this,"modalService",null);I(this,"formRule",null);I(this,"schemaService",null);I(this,"metadataService",null);I(this,"propertyConfig",{type:"object",categories:{}});I(this,"expressionProperty");var i;this.componentId=e,this.designerHostService=t,this.eventsEditorUtils=t.eventsEditorUtils,this.formSchemaUtils=t.formSchemaUtils,this.formMetadataConverter=t.formMetadataConverter,this.viewModelId=((i=this.formSchemaUtils)==null?void 0:i.getViewModelIdByComponentId(e))||"",this.designViewModelUtils=t.designViewModelUtils,this.controlCreatorUtils=t.controlCreatorUtils,this.metadataService=t.metadataService,this.schemaService=t.schemaService,this.designerContext=t.designerContext,this.modalService=t.modalService,this.expressionProperty=new se(this.formSchemaUtils)}inResponsiveForm(){var e;return!!((e=this.designerContext)!=null&&e.responsiveForm)}getFormDesignerInstance(){var e,t;return(t=(e=this.designerContext)==null?void 0:e.instances)==null?void 0:t.formDesigner.value}getTableInfo(){var e;return(e=this.schemaService)==null?void 0:e.getTableInfoByViewModelId(this.viewModelId)}setDesignViewModelField(e){var i;const t=e.binding&&e.binding.type==="Form"&&e.binding.field;if(t){if(!this.designViewModelField){const r=this.designViewModelUtils.getDgViewModel(this.viewModelId);this.designViewModelField=r.fields.find(o=>o.id===t)}e.updateOn=(i=this.designViewModelField)==null?void 0:i.updateOn}}getBasicPropConfig(e){return{description:"Basic Information",title:"基本信息",properties:{id:{description:"组件标识",title:"标识",type:"string",readonly:!0},type:{description:"组件类型",title:"控件类型",type:"select",editor:{type:"combo-list",textField:"name",valueField:"value",idField:"value",editable:!1,data:[{value:e.type,name:$.DgControl[e.type]&&$.DgControl[e.type].name}]}}}}}getAppearanceConfig(e=null,t={},i){const r={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 n in t)o[n]=Object.assign(o[n]||{},t[n]);return{...r,properties:{...o},setPropertyRelates(n,d){if(n){switch(n&&n.propertyID){case"class":case"style":{$.canvasChanged.value++;break}}i&&i(n,e,d)}}}}getPropertyEditorParams(e,t=[],i="visible",r={},o={},n=""){const{getVariables:d,getControlName:s,getStateMachines:l}=oe(this.designerHostService),p=this.getRealTargetType(e),u=t&&t.length>0?t:["Const","Variable","StateMachine","Expression"],m={type:"property-editor",propertyTypes:u};return u.map(y=>{switch(y){case"Const":Object.assign(m,{constType:"enum",constEnums:[{id:!0,name:"是"},{id:!1,name:"否"}]},r);break;case"Expression":m.expressionConfig=this.getExpressionOptions(e,p,n||i);break;case"StateMachine":m.stateMachines=l();break;case"Variable":Object.assign(m,{controlName:s(e),newVariablePrefix:"is",newVariableType:"Boolean",variables:d(this.viewModelId),parentComponentId:this.componentId==="root-component"?"":"root-component",onBeforeOpenVariables:v=>{v.value=d(this.viewModelId)}},o),this.designerContext.designerMode==="PC_RTC"&&(m.newVariablePrefix="ext_"+m.newVariablePrefix);break}}),m}getVisibleProperty(e,t=""){var o;let i=["Const","Variable","StateMachine","Expression"];return t==="gridFieldEditor"?i=["Const","Expression"]:t==="form-group"&&!((o=e.binding)!=null&&o.field)?i=["Const","Variable","StateMachine","Custom"]:t==="dataGrid"||t==="treeGrid"||t==="wizard"?i=["Const","Variable","Expression"]:(e.type.indexOf("toolbar-item")>-1||t==="form-group")&&(i=["Const","Variable","StateMachine","Custom","Expression"]),{visible:{title:"是否可见",type:"boolean",description:"运行时组件是否可见",editor:this.getPropertyEditorParams(e,i,"visible")}}}getBehaviorConfig(e,t="",i={},r){const o={title:"行为",description:""},n=this.getVisibleProperty(e,t);for(const s in i)n[s]=Object.assign(n[s]||{},i[s]);const d=this;return{...o,properties:{...n},setPropertyRelates(s,l){if(s){switch(s.propertyID){case"disabled":case"readonly":case"visible":d.afterMutilEditorChanged(e,s);break}r&&r(s,l)}}}}afterMutilEditorChanged(e,t){this.addNewVariableToViewModel(t,this.viewModelId),this.updateExpressionValue(t,e),this.clearExpression(t,e)}updateElementByParentContainer(e,t){const i=t&&t.parent&&t.parent.schema;if(!i)return;const r=i.contents.findIndex(n=>n.id===e),o=ie.cloneDeep(i.contents[r]);i.contents.splice(r,1),i.contents.splice(r,0,o),$.refreshCanvas()}addNewVariableToViewModel(e,t){const i=e.propertyValue;if(!(i&&typeof i=="object")||!(i.type==="Variable"&&i.isNewVariable))return;const n={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(n.code)||this.formSchemaUtils.getViewModelById("root-viewmodel").states.push(n)}getExpressions(){let e=[];return this.formRule?(this.formRule.expressions=this.formRule.expressions||[],e=this.formRule.expressions||[]):e=this.formSchemaUtils.getExpressions(),e}updateExpressionValue(e,t){const i=e.propertyValue;if(!((i&&i.type)==="Expression"&&i.expressionInfo))return;const{expressionId:n,expressionInfo:d}=i,{targetId:s,targetType:l,expressionType:p,value:u,message:m}=d,y=this.getExpressions();let v=y.find(f=>f.target===s);v||(v={target:s,rules:[],targetType:l},y.push(v));const b=v.rules.find(f=>f.type===p);if(b)b.id=n,b.value=u,b.message=m,(p==="minDate"||p==="maxDate"||p==="defaultTime")&&(b.elementId=t.id);else{const f={id:n,type:p,value:u,message:m,elementId:t.id};v.rules.push(f)}delete i.expressionInfo}clearExpression(e,t){const i=e.propertyValue;if(i&&i.type==="Expression")return;const o=e.propertyID,n=this.getExpressions(),d=t.binding?t.binding.field:t.id,s=n.find(l=>l.target===d);!s||!s.rules||(s.rules=s.rules.filter(l=>l.type!==o))}getExpressionOptions(e,t,i){return this.expressionProperty.getExpressionOptions(e,t,i)}getRealTargetType(e){return["response-toolbar-item","tab-toolbar-item","section-toolbar-item","drawer-toolbar-item"].indexOf(e.type)>-1?"Button":e.binding&&e.binding.field?"Field":"Container"}createBaseEventProperty(e){const t={};return t[this.viewModelId]={type:"events-editor",editor:{initialData:e,viewSourceHandle:i=>{var r;((r=i.controller)==null?void 0:r.label.indexOf(this.formSchemaUtils.getModule().code))>-1&&this.eventsEditorUtils.jumpToMethod(i)}}},t}}function ae(){function a(e){return e.map(t=>({id:t.id,type:"wizard-page",pageId:t.id,contents:[{id:"wizard-page-detail"+t.id,type:"wizard-page-detail",headerTemplate:"",contentTemplate:"",footerTemplate:`<!-- <div class="f-template-wizard-page-footer"> \r
<button class="btn btn-secondary f-btn-ml">\r
取消\r
</button>\r
<button class="btn btn-secondary f-btn-ml" v-if="context.stepIndex !== 0">\r
上一步\r
</button>\r
<button class="btn btn-primary f-btn-ml" v-if="context.stepIndex !== context.pageIdList.length -1">\r
下一步\r
</button>\r
<button class="btn btn-primary f-btn-ml" >\r
完成\r
</button>\r
</div> -->`,contents:[{id:"external-container"+t.id,type:"external-container",appearance:{class:"position-relative h-100"},visible:!0,useIsolateJs:!1,externalCmp:null}]}]}))}return{createPageDetail:a}}class de extends G{constructor(e,t){super(e,t)}getPropertyConfig(e){return this.getBasicPropConfig(e),this.getAppearanceProperties(),this.getDataPropConfig(e),this.propertyConfig.categories.behavior=this.getBehaviorConfig(e,"wizard",{stepClickable:{description:"步骤条是否支持点击",title:"步骤条是否支持点击",type:"boolean"}}),this.getEventPropConfig(e),this.propertyConfig}getDataPropConfig(e){this.propertyConfig.categories.dataConfig={title:"数据配置",properties:{stepsData:{title:"步骤条",type:"array",description:"是否填充",editor:{columns:[{field:"id",title:"值",dataType:"string"},{field:"title",title:"名称",dataType:"string"}],type:"item-collection-editor",valueField:"id",nameField:"title",requiredFields:["id","title"],uniqueFields:["id","title"]},refreshPanelAfterChanged:!0},currentStepIndex:{title:"默认显示页面索引",type:"number",description:"默认显示页面索引",editor:{needValid:!0,min:0,max:e.stepsData.length-1}}},setPropertyRelates(t,i){if((t==null?void 0:t.propertyID)==="stepsData"){const{createPageDetail:r}=ae(),o=r(t.propertyValue);e.contents=o}}}}getBasicPropConfig(e){const t=super.getBasicPropConfig(e);this.propertyConfig.categories.basic={description:"Basic Information",title:"基本信息",properties:{...t.properties}}}assembleSchemaEntityToTree(e,t,i,r="",o=[]){const n=r?`${r}/${e.label}`:"/";return o.push({id:e.id,name:e.name,label:e.label,layer:t,parent:i&&i.id,bindTo:n.replace("//","/")}),e.type.entities&&e.type.entities.length&&e.type.entities.map(d=>this.assembleSchemaEntityToTree(d,t+1,e,n,o)),o}getAppearanceProperties(){this.propertyConfig.categories.appearance={title:"外观",properties:{class:{title:"class样式",type:"string",description:"组件的class样式"},fill:{title:"是否填充",type:"boolean",description:"是否填充"},direction:{title:"步骤条排列方式",type:"enum",description:"步骤条排列方式",editor:{data:[{id:"vertical",name:"垂直"},{id:"horizontal",name:"水平"}]}},stepPosition:{title:"步骤条摆放位置",type:"enum",description:"步骤条摆放位置",editor:{data:[{id:"PageLeft",name:"左侧"},{id:"Top",name:"左上方"},{id:"HeaderRight",name:"右上方"},{id:"None",name:"隐藏"}]}}}}}getEventPropConfig(e){var n;const t=[{label:"onClickItem",name:"行点击事件"}];(n=e.pagination)==null||n.enable;const i=this,r=i.eventsEditorUtils.formProperties(e,i.viewModelId,t),o=i.createBaseEventProperty(r);this.propertyConfig.categories.eventsEditor={title:"事件",hideTitle:!0,properties:o,refreshPanelAfterChanged:!0,tabId:z.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(d,s){const l=d.propertyValue;delete e[i.viewModelId],l&&(l.setPropertyRelates=this.setPropertyRelates,i.eventsEditorUtils.saveRelatedParameters(e,i.viewModelId,l.events,l))}}}isSubGrid(){const e=this.formSchemaUtils.getViewModelById(this.viewModelId);return e&&e.bindTo?e.bindTo.trim()!=="/":!1}}function le(a,e){const t=a.schema;function i(){return""}function r(p){return!1}function o(){return!0}function n(){return!0}function d(){return!0}function s(p){return new de(p,e).getPropertyConfig(t)}function l(){var p,u,m,y;if(a&&e){const v=(p=a==null?void 0:a.componentInstance)==null?void 0:p.value.belongedComponentId;let b="",f="";const{formSchemaUtils:h}=e;if(v){const T=h.getRootViewModelId(),S=h.getComponentByViewModelId(T),C=h.selectNode(S,w=>w.contents&&w.contents.find(P=>P.component===v));(C==null?void 0:C.type)===((u=E["tab-page"])==null?void 0:u.type)&&((m=C==null?void 0:C.contents)!=null&&m.length)&&(b=C.title||""),(C==null?void 0:C.type)===((y=E.section)==null?void 0:y.type)&&(C==null?void 0:C.showHeader)!==!1&&(b=C.mainTitle||""),b=b?`${b} > `:"",f=b?C.id:""}const V=E["list-view"].name;e==null||e.formSchemaUtils.getControlBasicInfoMap().set(a.schema.id,{componentTitle:V,parentPathName:`${b}${V}`,reliedComponentId:f})}}return{canAccepts:r,checkCanDeleteComponent:o,checkCanMoveComponent:n,hideNestedPaddingInDesginerView:d,getPropsConfig:s,setComponentBasicInfoMap:l,getDesignerClass:i}}const F=c.defineComponent({name:"FWizardDesign",props:ne,emits:["stateChange","update:currentPageId"],setup(a,{slots:e,emit:t,expose:i}){const r=c.ref(null),o=c.ref(null),n=c.ref(null),d=c.ref(null),s=c.ref([]),l=c.ref(a.currentPageId),p=c.ref(a.currentStepIndex);c.watch(()=>a.currentStepIndex,(g,M)=>{g!==M&&(p.value=g)});const{currentStepIndex:u,currentPageId:m,setDataByPageId:y,gotoNextStep:v,gotoPreviousStep:b,getDataByPageId:f,getPreviousPageDataByPageId:h,getNextPageDataByPageId:V,getPreviousPageId:T,getNextPageId:S,getCurrentPageData:C}=re(a.stepsData,p),w=c.computed(()=>({"f-component-wizard-fill":a.fill,"f-component-wizard":!0})),P=()=>({minHeight:"100px"});function B(g){p.value=g}function k(g){l.value=g}c.provide(L,{wizardPageList:s,wizardProps:a,activeIndex:u,activeId:m,updateCurrentPageId:k,gotoNextStep:v,gotoPreviousStep:b,setDataByPageId:y,getNextPageDataByPageId:V,getPreviousPageDataByPageId:h,getPreviousPageId:T,getNextPageId:S,getDataByPageId:f,getCurrentPageData:C});const D=c.ref(),Ve=c.inject("designer-host-service"),U=c.inject("design-item-context"),Me=le(U,Ve),Z=$.useDesignerComponent(D,U,Me);function Te(){let g="";switch(a.stepPosition){case"Top":g="f-component-wizard-step-top";break;case"HeaderRight":g="f-component-wizard-step-headerright";break;case"PageLeft":g="f-component-wizard-step-pageleft";break;case"None":g="f-component-wizard-step-none";break;default:g=""}return{[g]:!!g,"f-wizard":!0}}function j(g){return a.stepPosition===g}c.watch(()=>a.currentPageId,(g,M)=>{g!==M&&k(g)}),c.watch(()=>a.currentStepIndex,(g,M)=>{g!==M&&B(g)});function H(){if(!D.value)return;const g=D.value.parentElement;g&&g.className&&g.className.includes("farris-component-wizard")&&(a.fill?g.className+=" f-utils-fill-flex-column":g.className.replace("f-utils-fill-flex-column",""))}c.watch(()=>a.fill,(g,M)=>{g!==M&&H()}),c.onMounted(()=>{!l.value&&s.value.length>0&&(k(s.value[0]),B(0)),H(),D.value.componentInstance=Z});function Ee(g){u.value=g.stepIndex}const Ne=c.computed(()=>({"f-wizard-step":!0}));function _(){return c.createVNode("div",{class:Ne.value},[c.createVNode(te,{ref:d,activeIndex:u.value,steps:a.stepsData,direction:a.direction,height:300,onClick:Ee,clickable:a.stepClickable},{default:()=>[e.stepTemplate&&{stepTemplate:g=>{var ee;const{step:M,index:W,length:q,activeIndex:A,direction:Se}=g;return(ee=e.stepTemplate)==null?void 0:ee.call(e,{step:M,index:W,length:q,activeIndex:A,direction:Se})}}]})])}return i(Z.value),()=>{var g,M,W,q,A;return c.createVNode("div",{ref:D,class:w.value,style:P()},[c.createVNode("div",{ref:o,class:Te()},[j("Top")&&((g=e.wizardStepTemplate)==null?void 0:g.call(e)),j("None")&&c.createVNode("div",{class:"d-none"},[_()]),(e.wizardHeader||j("HeaderRight"))&&c.createVNode("div",{class:"f-wizard-header",ref:r},[(M=e.wizardHeader)==null?void 0:M.call(e),j("HeaderRight")&&_()]),c.createVNode("div",{class:"f-wizard-content",ref:n},[j("PageLeft")&&_(),c.createVNode("div",{class:"f-wizard-pages"},[(q=(W=U==null?void 0:U.schema)==null?void 0:W.contents)!=null&&q.length?(A=e.default)==null?void 0:A.call(e):null])])])])}}}),ce=new Map([["appearance",R.resolveAppearance]]);function pe(a,e,t,i){return e}const ue={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/wizard.schema.json",title:"wizard-page-detail",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for wizard-page-detail",type:"string"},type:{description:"The type string of step",type:"string",default:"step"},headerTemplate:{description:"头部模板",type:"string",default:""},contentTemplate:{description:"内容模板",type:"string"},footerTemplate:{description:"底部模板",type:"string",default:`<div class="f-template-wizard-page-footer"> \r
<button class="btn btn-secondary f-btn-ml" [disabled]="viewModel.uiState.disableCancel" (click)="viewModel.cancelWizard1()">\r
取消\r
</button>\r
<button class="btn btn-secondary f-btn-ml" [disabled]="viewModel.uiState.disablePre" (click)="viewModel.preStep1()">\r
上一步\r
</button>\r
<button class="btn btn-primary f-btn-ml" [disabled]="viewModel.uiState.disableNext" (click)="viewModel.nextStep1()">\r
下一步\r
</button>\r
<button class="btn btn-primary f-btn-ml" [disabled]="viewModel.uiState.disableFinish" (click)="viewModel.finishWizard1()">\r
完成\r
</button>\r
</div>`}},required:["id","type"]},Y={headerTemplate:{type:Object},contentTemplate:{type:Object},footerTemplate:{type:Object}},J=R.createPropsResolver(Y,ue,ce,pe);class K extends G{constructor(e,t){super(e,t)}getPropertyConfig(e){return this.getBasicPropConfig(e),this.propertyConfig.categories.behavior=this.getBehaviorConfig(e,"wizard",{headerTemplate:{description:"头部模板",title:"头部模板",type:"string",editor:{type:"code-editor",language:"html"}},contentTemplate:{description:"内容模板",title:"内容模板",type:"string",editor:{type:"code-editor",language:"html"}},footerTemplate:{description:"底部模板",title:"底部模板",type:"string",editor:{type:"code-editor",language:"html"}}}),this.propertyConfig}getBasicPropConfig(e){const t=super.getBasicPropConfig(e);this.propertyConfig.categories.basic={description:"Basic Information",title:"基本信息",properties:{...t.properties}}}getEventPropConfig(e){var n;const t=[{label:"onClickItem",name:"行点击事件"}];(n=e.pagination)==null||n.enable;const i=this,r=i.eventsEditorUtils.formProperties(e,i.viewModelId,t),o=i.createBaseEventProperty(r);this.propertyConfig.categories.eventsEditor={title:"事件",hideTitle:!0,properties:o,refreshPanelAfterChanged:!0,tabId:z.EVENT_PROPERTY_TAB_IDS,tabName:"交互",setPropertyRelates(d,s){const l=d.propertyValue;delete e[i.viewModelId],l&&(l.setPropertyRelates=this.setPropertyRelates,i.eventsEditorUtils.saveRelatedParameters(e,i.viewModelId,l.events,l)),e.remoteSort=!!e.columnSorted}}}}function fe(a,e){const t=a.schema,i=c.ref(!0),r=c.ref(!0);function o(u){return!1}function n(){return!1}function d(){return!1}function s(){return!0}function l(u){return new K(u,e).getPropertyConfig(t)}function p(){var u,m,y,v;if(a&&e){const b=(u=a==null?void 0:a.componentInstance)==null?void 0:u.value.belongedComponentId;let f="",h="";const{formSchemaUtils:V}=e;if(b){const S=V.getRootViewModelId(),C=V.getComponentByViewModelId(S),w=V.selectNode(C,P=>P.contents&&P.contents.find(B=>B.component===b));(w==null?void 0:w.type)===((m=E["tab-page"])==null?void 0:m.type)&&((y=w==null?void 0:w.contents)!=null&&y.length)&&(f=w.title||""),(w==null?void 0:w.type)===((v=E.section)==null?void 0:v.type)&&(w==null?void 0:w.showHeader)!==!1&&(f=w.mainTitle||""),f=f?`${f} > `:"",h=f?w.id:""}const T=E["list-view"].name;e==null||e.formSchemaUtils.getControlBasicInfoMap().set(a.schema.id,{componentTitle:T,parentPathName:`${f}${T}`,reliedComponentId:h})}}return{canAccepts:o,checkCanDeleteComponent:n,checkCanMoveComponent:d,hideNestedPaddingInDesginerView:s,triggerBelongedComponentToMoveWhenMoved:i,triggerBelongedComponentToDeleteWhenDeleted:r,getPropsConfig:l,setComponentBasicInfoMap:p}}const ge=c.defineComponent({name:"FWizardPageDetailDesign",props:Y,emits:["pagedetailSelected"],setup(a,{slots:e,expose:t,emit:i}){const r=c.ref(),o=c.inject("designer-host-service"),n=c.inject("design-item-context"),d=fe(n,o),s=$.useDesignerComponent(r,n,d);c.onMounted(()=>{r.value=s.value});function l(){if(typeof a.footerTemplate=="string"){const p=c.compile(a.footerTemplate);return c.createVNode({render:p})}return a.footerTemplate()}return t(s.value),()=>{var p;return c.createVNode("div",{class:"f-component-wizard-page-detail f-component-wizard-page-detail-fill",style:{padding:"20px"}},[a.headerTemplate?c.createVNode("div",{class:"f-component-wizard-page-detail-header"},[a.headerTemplate()]):e.headerTemplate&&c.createVNode("div",{class:"f-component-wizard-page-detail-header"},[e.headerTemplate()]),a.contentTemplate?c.createVNode("div",{class:"f-component-wizard-page-detail-content"},[a.contentTemplate()]):e.contentTemplate?c.createVNode("div",{class:"f-component-wizard-page-detail-content"},[e.contentTemplate()]):(p=e.default)==null?void 0:p.call(e),a.footerTemplate?c.createVNode("div",{class:"f-component-wizard-page-detail-footer"},[l()]):e.footerTemplate&&c.createVNode("div",{class:"f-component-wizard-page-detail-footer"},[e.footerTemplate()])])}}}),me=new Map([["appearance",R.resolveAppearance]]);function he(a,e,t,i){return e}const ye={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/wizard.schema.json",title:"wizard-page",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for wizard",type:"string"},type:{description:"The type string of step",type:"string",default:"step"},pageId:{description:"当前向导页的id",type:"string"}},required:["id","type"]},O={pageId:{type:String,default:""},active:{type:Boolean,default:!1}},Q=R.createPropsResolver(O,ye,me,he);function be(a,e){const t=a.schema,i=c.ref(!0),r=c.ref(!0);function o(m){return!1}function n(){return!1}function d(){return!1}function s(){return!0}function l(){return"f-utils-fill"}function p(m){return new K(m,e).getPropertyConfig(t)}function u(){var m,y,v,b;if(a&&e){const f=(m=a==null?void 0:a.componentInstance)==null?void 0:m.value.belongedComponentId;let h="",V="";const{formSchemaUtils:T}=e;if(f){const C=T.getRootViewModelId(),w=T.getComponentByViewModelId(C),P=T.selectNode(w,B=>B.contents&&B.contents.find(k=>k.component===f));(P==null?void 0:P.type)===((y=E["tab-page"])==null?void 0:y.type)&&((v=P==null?void 0:P.contents)!=null&&v.length)&&(h=P.title||""),(P==null?void 0:P.type)===((b=E.section)==null?void 0:b.type)&&(P==null?void 0:P.showHeader)!==!1&&(h=P.mainTitle||""),h=h?`${h} > `:"",V=h?P.id:""}const S=E["list-view"].name;e==null||e.formSchemaUtils.getControlBasicInfoMap().set(a.schema.id,{componentTitle:S,parentPathName:`${h}${S}`,reliedComponentId:V})}}return{canAccepts:o,checkCanDeleteComponent:n,checkCanMoveComponent:d,hideNestedPaddingInDesginerView:s,triggerBelongedComponentToMoveWhenMoved:i,triggerBelongedComponentToDeleteWhenDeleted:r,getPropsConfig:p,setComponentBasicInfoMap:u,getDesignerClass:l}}const we=c.defineComponent({name:"FWizardPageDesign",props:O,emits:["pageSelected"],setup(a,{slots:e}){const{wizardPageList:t,activeId:i,wizardProps:r,activeIndex:o}=c.inject(L,{activeId:c.ref(""),activeIndex:c.ref(0),wizardPageList:c.ref([]),wizardProps:{}}),n=c.ref(),d=c.inject("designer-host-service"),s=c.inject("design-item-context"),l=be(s,d),p=$.useDesignerComponent(n,s,l),u=c.computed(()=>{var y;return((y=r.stepsData[o.value])==null?void 0:y.id)===a.pageId}),m=c.computed(()=>({"f-component-wizard-page":!0,active:u.value}));return c.onMounted(()=>{n.value=p.value,t.value.includes(a.pageId)||t.value.push(a.pageId)}),()=>{var y;return u.value&&c.createVNode("div",{class:m.value},[(y=e.default)==null?void 0:y.call(e)])}}}),Pe=new Map([["appearance",R.resolveAppearance]]);function ve(a,e){const{formSchemaUtils:t,designViewModelUtils:i}=e;function r(d,s){var l,p,u,m;return(p=(l=s==null?void 0:s.parentComponentInstance)==null?void 0:l.schema)==null||p.type,(m=(u=t.getFormSchema())==null?void 0:u.module)==null||m.templateId,d}function o(d){const s=a.getSchemaByType("component");return Object.assign(s,{id:`${d.componentId}-component`,contents:[],type:"wizard",appearance:{class:"f-utils-fill"},stepsData:[],stepClickable:!0,fill:!1,direction:"vertical",stepPosition:"PageLeft"}),s}function n(d){const s=o(d);return r(s,d)}return{createComponent:n}}function Ce(a,e,t,i){var o,n,d,s,l,p;const r=t.parentComponentInstance;if(r&&i){const u=Math.random().toString(36).slice(2,6),m={componentId:`wizard-${u}`,componentName:((o=t.bindingSourceContext)==null?void 0:o.entityTitle)||((d=(n=t.bindingSourceContext)==null?void 0:n.bindingEntity)==null?void 0:d.name)||`列表-${u}`,componentType:"wizard",parentContainerId:r.schema.id,parentComponentInstance:r,bindTo:((s=t.bindingSourceContext)==null?void 0:s.bindTo)||"",dataSource:(p=(l=t.bindingSourceContext)==null?void 0:l.bindingEntity)==null?void 0:p.label},{createComponent:y}=ve(a,i);return y(m)}else return e}const xe={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://farris-design.gitee.io/wizard.schema.json",title:"wizard",description:"A Farris Component",type:"object",properties:{id:{description:"The unique identifier for wizard",type:"string"},type:{description:"The type string of step",type:"string",default:"step"},appearance:{description:"",type:"object",properties:{class:{type:"string"},style:{type:"string"}},default:{}},fill:{description:"是否填充",type:"boolean",default:!0},direction:{description:"步骤条排列方式",type:"string",default:"vertical"},stepPosition:{description:"步骤条摆放位置",type:"string",default:"PageLeft"},stepsData:{description:"步骤条",type:"array",default:[]},currentStepIndex:{description:"默认显示页面索引",type:"number",default:0},visible:{description:"是否可见",type:"boolean",default:!0},stepClickable:{description:"步骤条是否支持点击",type:"boolean",default:!1}},required:["id","type"]},Ie={stepClickable:{type:Boolean,default:!1},stepCls:{type:String,default:""},direction:{type:String,default:"vertical"},stepPosition:{type:String,default:"None"},fill:{type:Boolean,default:!0},storedIndex:{type:Boolean,default:!1},storedIndexState:{type:Boolean,default:!1},currentPageId:{type:String,default:""},currentStepIndex:{type:Number,default:0},stepsData:{type:Array,default:()=>[]}},X=R.createPropsResolver(Ie,xe,Pe,Ce);F.register=(a,e,t,i,r)=>{a.wizard=N.FWizard,e.wizard=X,a["wizard-page"]=N.FWizardPage,e["wizard-page"]=Q,a["wizard-page-detail"]=N.FWizardPageDetail,e["wizard-page-detail"]=J},F.registerDesigner=(a,e,t,i)=>{a.wizard=F,e.wizard=X,a["wizard-page"]=we,e["wizard-page"]=Q,a["wizard-page-detail"]=ge,e["wizard-page-detail"]=J};const ze=z.withInstall(F);x.FWizardDesign=F,x.default=ze,Object.defineProperties(x,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});