UNPKG

@tuoyuan/json-schema

Version:

json-schema编辑器及表单组件

2 lines (1 loc) 11 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),X=require("./setting-modal.vue.js"),Y=require("vue-draggable-plus"),Z={class:"row-main"},K={key:0,class:"expand"},ee={class:"quick-box"},le={class:"icon-btn required"},te={class:"icon-btn null"},oe={class:"col action-box"},ae={class:"row-children"},ne=e.defineComponent({name:"JsonSchemaEditorRow",__name:"row",props:e.mergeModels({isRoot:{type:Boolean},fieldName:{type:String,default:""},parent:{type:Object},deep:{type:Number,default:0},disabledFieldName:{type:Boolean},isArrayChild:{type:Boolean},custom:{type:Array,default:()=>[]},widgets:{type:Array,default:()=>[]},isHidden:{type:Boolean}},{modelValue:{type:Object,required:!0},modelModifiers:{}}),emits:e.mergeModels(["onFieldNameChange"],["update:modelValue"]),setup(V,{emit:x}){const l=e.useModel(V,"modelValue"),o=V,B=e.computed(()=>({"padding-left":o.isRoot?0:"20px"})),_=e.computed(()=>({left:l.value.items||l.value.properties?"-30px":"0"})),y=e.computed(()=>({width:250-o.deep*20+"px"})),w=e.computed(()=>(Array.isArray(l.value.type)?l.value.type:[l.value.type]).includes("null")),E=e.computed(()=>o.isRoot?!1:o.parent.required?o.parent.required.includes(o.fieldName):!1),S=x,q=["string","number","integer","boolean","array","object","null","any"],k=["string","number","integer","boolean","array","object","null"],U=["null","any"],A=["x-hidden","x-disabled"],v=e.ref(!0),O=e.ref(1),p=e.ref(l.value.type),f=e.ref(!1),R=e.ref();e.computed(()=>{const n=[];return Object.keys(l.value).forEach(t=>{t.startsWith("x-")&&!A.includes(t)&&n.push(t)}),n}),e.watch(()=>l.value.type,(n,t)=>{n.toString()===k.toString()?p.value="any":p.value=n}),e.onMounted(()=>{});const F=()=>{v.value=!v.value},j=n=>{S("onFieldNameChange",n)},L=(n,t,s)=>{let r={};if(Object.keys(l.value.properties).forEach(d=>{d===t?r[n]=l.value.properties[t]:r[d]=l.value.properties[d]}),l.value.properties=r,l.value.required){const d=l.value.required.indexOf(t);d!==-1&&l.value.required.splice(d,1,n)}if(l.value.order){const d=l.value.order.indexOf(t);d!==-1&&l.value.order.splice(d,1,n)}},M=()=>{o.parent.required||(o.parent.required=[]);const n=o.parent.required.indexOf(o.fieldName);n===-1?o.parent.required.push(o.fieldName):o.parent.required.splice(n,1)},H=()=>{typeof l.value.type=="string"&&(l.value.type=[l.value.type]);const n=l.value.type.indexOf("null");n===-1?l.value.type.push("null"):(l.value.type.splice(n,1),l.value.type.length===1&&(l.value.type=l.value.type[0]))},z=n=>{const t={type:n};l.value.title&&(t.title=l.value.title),l.value.description&&(t.title=l.value.description),t.type==="array"?t.items={type:"string"}:t.type==="object"?t.order=[]:t.type==="any"&&(t.type=k),l.value=t},D=()=>{f.value=!0},$=()=>{l.value.properties=l.value.properties||{},l.value.order=l.value.order||[];const n=`field_${o.deep}_${O.value++}`;l.value.properties[n]={type:"string"},l.value.order.push(n)},T=()=>{const{properties:n,required:t,order:s}=o.parent;if(delete n[o.fieldName],JSON.stringify(n)==="{}"&&delete o.parent.properties,t){const r=t.indexOf(o.fieldName);r>=0&&t.splice(r,1),t.length===0&&delete o.parent.required}s.splice(s.indexOf(o.fieldName),1),s.length===0&&delete o.parent.order},I=n=>{l.value=n},J=()=>{const n={};l.value.order.forEach((t,s)=>{n[t]=l.value.properties[t]}),l.value.properties=n};return(n,t)=>{const s=e.resolveComponent("icon-list"),r=e.resolveComponent("icon-caret-down"),d=e.resolveComponent("icon-caret-right"),u=e.resolveComponent("a-input"),C=e.resolveComponent("a-button"),m=e.resolveComponent("a-tooltip"),b=e.resolveComponent("a-option"),N=e.resolveComponent("a-select"),P=e.resolveComponent("a-input-number"),W=e.resolveComponent("icon-settings"),G=e.resolveComponent("icon-plus"),Q=e.resolveComponent("icon-close"),h=e.resolveComponent("JsonSchemaEditorRow");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{class:"schema-editor-row",style:e.normalizeStyle(B.value)},[e.createElementVNode("div",Z,[!o.isRoot&&!o.isArrayChild?(e.openBlock(),e.createElementBlock("div",{key:0,class:"draggable-handle-box",style:e.normalizeStyle(_.value)},[e.createVNode(s,{class:"draggable-handle"})],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"expand-box",onClick:t[0]||(t[0]=a=>F())},[l.value.items||l.value.properties?(e.openBlock(),e.createElementBlock("div",K,[v.value?(e.openBlock(),e.createBlock(r,{key:0})):(e.openBlock(),e.createBlock(d,{key:1}))])):e.createCommentVNode("",!0)]),o.isRoot?(e.openBlock(),e.createBlock(u,{key:1,class:"col col-field","default-value":"根节点",disabled:"",style:e.normalizeStyle(y.value)},null,8,["style"])):o.isArrayChild?(e.openBlock(),e.createBlock(u,{key:2,class:"col col-field","default-value":"ITEMS",disabled:"",style:e.normalizeStyle(y.value)},null,8,["style"])):(e.openBlock(),e.createBlock(u,{key:3,class:"col col-field","default-value":o.fieldName,placeholder:"字段名",disabled:l.value["x-disabled"],style:e.normalizeStyle(y.value),onChange:j},null,8,["default-value","disabled","style"])),e.createElementVNode("div",ee,[e.createElementVNode("div",le,[e.createVNode(m,{content:"是否必须"},{default:e.withCtx(()=>[e.createVNode(C,{class:e.normalizeClass(["btn",{btn_active:E.value}]),disabled:o.isRoot||o.isArrayChild||l.value["x-disabled"],onClick:t[1]||(t[1]=a=>M())},{default:e.withCtx(()=>t[12]||(t[12]=[e.createElementVNode("svg",{fill:"currentColor",viewBox:"0 0 1024 1024",width:"1em",height:"1em"},[e.createElementVNode("path",{d:"M583.338667 17.066667c18.773333 0 34.133333 15.36 34.133333 34.133333v349.013333l313.344-101.888a34.133333 34.133333 0 0 1 43.008 22.016l42.154667 129.706667a34.133333 34.133333 0 0 1-21.845334 43.178667l-315.733333 102.4 208.896 287.744a34.133333 34.133333 0 0 1-7.509333 47.786666l-110.421334 80.213334a34.133333 34.133333 0 0 1-47.786666-7.509334L505.685333 706.218667 288.426667 1005.226667a34.133333 34.133333 0 0 1-47.786667 7.509333l-110.421333-80.213333a34.133333 34.133333 0 0 1-7.509334-47.786667l214.186667-295.253333L29.013333 489.813333a34.133333 34.133333 0 0 1-22.016-43.008l42.154667-129.877333a34.133333 34.133333 0 0 1 43.008-22.016l320.512 104.106667L412.672 51.2c0-18.773333 15.36-34.133333 34.133333-34.133333h136.533334z"})],-1)])),_:1},8,["class","disabled"])]),_:1})]),e.createElementVNode("div",te,[e.createVNode(m,{content:"允许 NULL"},{default:e.withCtx(()=>[e.createVNode(C,{class:e.normalizeClass(["btn",{btn_active:w.value}]),disabled:o.isRoot||U.includes(p.value)||l.value["x-disabled"],onClick:t[2]||(t[2]=a=>H())},{default:e.withCtx(()=>t[13]||(t[13]=[e.createTextVNode(" N ")])),_:1},8,["class","disabled"])]),_:1})])]),e.createVNode(N,{modelValue:p.value,"onUpdate:modelValue":t[3]||(t[3]=a=>p.value=a),class:"col col-type",disabled:o.isRoot||l.value["x-disabled"],"trigger-props":{contentClass:"json-schema-editor-select"},onChange:z},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(q,a=>e.createVNode(b,{key:a,value:a,label:a},null,8,["value","label"])),64))]),_:1},8,["modelValue","disabled"]),e.createVNode(u,{modelValue:l.value.title,"onUpdate:modelValue":t[4]||(t[4]=a=>l.value.title=a),class:"col col-title",placeholder:"中文名",disabled:l.value["x-disabled"]},null,8,["modelValue","disabled"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.custom,(a,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[a.type==="string"?(e.openBlock(),e.createBlock(u,{key:0,modelValue:l.value[a.name],"onUpdate:modelValue":c=>l.value[a.name]=c,class:"col col-custom",placeholder:a.title||a.name,disabled:l.value["x-disabled"]},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"])):a.type==="number"?(e.openBlock(),e.createBlock(P,{key:1,modelValue:l.value[a.name],"onUpdate:modelValue":c=>l.value[a.name]=c,class:"col col-custom",placeholder:a.title||a.name,disabled:l.value["x-disabled"]},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"])):a.type==="boolean"?(e.openBlock(),e.createBlock(N,{key:2,modelValue:l.value[a.name],"onUpdate:modelValue":c=>l.value[a.name]=c,class:"col col-custom col-custom-boolean",placeholder:a.title||a.name,disabled:l.value["x-disabled"]},{default:e.withCtx(()=>[e.createVNode(b,{value:!0,label:"true"}),e.createVNode(b,{value:!1,label:"false"})]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder","disabled"])):e.createCommentVNode("",!0)],64))),256)),e.createVNode(u,{modelValue:l.value.description,"onUpdate:modelValue":t[5]||(t[5]=a=>l.value.description=a),class:"col col-description",placeholder:"说明",disabled:l.value["x-disabled"]},null,8,["modelValue","disabled"]),e.createElementVNode("div",oe,[e.createVNode(m,{content:"高级设置"},{default:e.withCtx(()=>[l.value["x-disabled"]?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(W,{key:0,class:"icon",onClick:t[6]||(t[6]=a=>D())}))]),_:1}),e.createVNode(m,{content:"添加子节点"},{default:e.withCtx(()=>[l.value.type==="object"?(e.openBlock(),e.createBlock(G,{key:0,class:"icon",onClick:t[7]||(t[7]=a=>$())})):e.createCommentVNode("",!0)]),_:1}),e.createVNode(m,{content:"删除节点"},{default:e.withCtx(()=>[!o.isRoot&&!o.isArrayChild&&!l.value["x-disabled"]?(e.openBlock(),e.createBlock(Q,{key:0,class:"icon",onClick:t[8]||(t[8]=a=>T())})):e.createCommentVNode("",!0)]),_:1})])]),e.withDirectives(e.createElementVNode("div",ae,[l.value.properties&&l.value.order?(e.openBlock(),e.createBlock(e.unref(Y.VueDraggable),{key:0,ref_key:"VueDraggableRef",ref:R,modelValue:l.value.order,"onUpdate:modelValue":t[9]||(t[9]=a=>l.value.order=a),animation:150,handle:".draggable-handle",onUpdate:J},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value.properties,(a,i,c)=>(e.openBlock(),e.createElementBlock("div",{key:i},[!o.isHidden||!l.value.properties[i]["x-hidden"]?(e.openBlock(),e.createBlock(h,{key:0,modelValue:l.value.properties[i],"onUpdate:modelValue":g=>l.value.properties[i]=g,fieldName:String(i),parent:l.value,deep:o.deep+1,custom:o.custom,widgets:o.widgets,isHidden:o.isHidden,onOnFieldNameChange:g=>L(g,i)},null,8,["modelValue","onUpdate:modelValue","fieldName","parent","deep","custom","widgets","isHidden","onOnFieldNameChange"])):e.createCommentVNode("",!0)]))),128))]),_:1},8,["modelValue"])):e.createCommentVNode("",!0),l.value.items?(e.openBlock(),e.createBlock(h,{key:1,modelValue:l.value.items,"onUpdate:modelValue":t[10]||(t[10]=a=>l.value.items=a),disabledFieldName:"",parent:l.value,deep:o.deep+1,isArrayChild:"",custom:o.custom,widgets:o.widgets,isHidden:o.isHidden},null,8,["modelValue","parent","deep","custom","widgets","isHidden"])):e.createCommentVNode("",!0)],512),[[e.vShow,v.value]])],4),f.value?(e.openBlock(),e.createBlock(X.default,{key:0,show:f.value,"onUpdate:show":t[11]||(t[11]=a=>f.value=a),data:l.value,widgets:o.widgets,onConfirm:I},null,8,["show","data","widgets"])):e.createCommentVNode("",!0)],64)}}});exports.default=ne;