@tuoyuan/json-schema
Version:
json-schema编辑器及表单组件
2 lines (1 loc) • 13.6 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),k=require("../../utils/utils.js"),Q={key:0,class:"arco-form-item-label"},R={key:1},W={key:0,class:"arco-form-item-label"},X={key:0,class:"form-item-wrapper"},Y={class:"form-item-title"},Z={class:"form-item-content"},ee={key:0,class:"form-item-wrapper"},te={class:"form-item-title"},oe={class:"form-item-content"},le={class:"form-item-content-item-toolbar"},ne=e.defineComponent({name:"JsonSchemaFormItem",__name:"form-item",props:e.mergeModels({fieldName:{type:String,required:!0},options:{type:Object,required:!0},parentFieldName:{type:String},parent:{type:Object,required:!0},breadcrumb:{type:String},widgets:{type:Array,default:()=>[]}},{modelValue:{type:Object,required:!0},modelModifiers:{}}),emits:e.mergeModels(["change"],["update:modelValue"]),setup(N,{emit:D}){const n=e.useModel(N,"modelValue"),t=N,C=D;e.getCurrentInstance();const m=e.ref(""),g=e.ref({}),B=e.computed(()=>a=>{let o=[];return a.order?o=a.order:o=Object.keys(a.properties),o});e.computed(()=>{let a=[];return t.options.order?a=t.options.order:a=Object.keys(t.options.properties),a}),e.onMounted(()=>{m.value=k.getTrueType(t.options.type)});const V=e.computed(()=>t.parent.required?t.parent.required.includes(t.fieldName):!1),y=e.computed(()=>t.widgets.find(a=>a.type===t.options.widget.type)),r=a=>{C("change")},d=()=>{delete n.value[t.fieldName]},j=a=>{m.value==="array"&&["number","integer"].includes(k.getTrueType(t.options.items.type))&&k.convertStringInArray(n.value[t.fieldName],a)},L=()=>{const a={};k.setFormData(a,t.options.items.properties),n.value[t.fieldName].push(a),C("change")},b=(a,o,u)=>{const c=a.splice(o,1,a[u]);return a[u]=c[0],a},I=(a,o)=>{b(n.value[t.fieldName],o,o-1)},q=(a,o)=>{b(n.value[t.fieldName],o,o+1)},M=(a,o)=>{n.value[t.fieldName].push(JSON.parse(JSON.stringify(a)))},$=(a,o)=>{n.value[t.fieldName].splice(o,1)},w=()=>{C("change")};return(a,o)=>{var F,S,U,T;const u=e.resolveComponent("a-col"),c=e.resolveComponent("a-form-item"),f=e.resolveComponent("a-option"),v=e.resolveComponent("a-select"),_=e.resolveComponent("a-date-picker"),O=e.resolveComponent("a-time-picker"),J=e.resolveComponent("a-input"),h=e.resolveComponent("a-input-number"),A=e.resolveComponent("a-switch"),E=e.resolveComponent("JsonSchemaFormItem"),x=e.resolveComponent("a-row"),P=e.resolveComponent("a-divider"),p=e.resolveComponent("a-button"),z=e.resolveComponent("a-space"),G=e.resolveComponent("icon-plus"),H=e.resolveComponent("a-input-tag");return e.openBlock(),e.createElementBlock(e.Fragment,null,[(F=t.options.layout)!=null&&F.start?(e.openBlock(),e.createBlock(u,{key:0})):e.createCommentVNode("",!0),e.createVNode(u,{class:"schema-form-item-col",span:((S=t.options.layout)==null?void 0:S.span)||24,offset:(U=t.options.layout)==null?void 0:U.offset},{default:e.withCtx(()=>[t.options.widget?(e.openBlock(),e.createBlock(c,{key:0,field:t.breadcrumb,label:t.options.title,tooltip:t.options.description},{label:e.withCtx(()=>[V.value?(e.openBlock(),e.createElementBlock("label",Q,[o[15]||(o[15]=e.createElementVNode("strong",{class:"arco-form-item-label-required-symbol"},[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)),e.createTextVNode(" "+e.toDisplayString(t.options.title),1)])):e.createCommentVNode("",!0)]),default:e.withCtx(()=>[y.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(y.value.component),e.mergeProps({key:0,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[0]||(o[0]=l=>n.value[t.fieldName]=l)},t.options.widget.attrs,{onChange:r,onClear:d}),null,16,["modelValue"])):(e.openBlock(),e.createElementBlock("div",R,"未知组件"))]),_:1},8,["field","label","tooltip"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[["string","number","integer","boolean"].includes(m.value)?(e.openBlock(),e.createBlock(c,{key:0,field:t.breadcrumb,label:t.options.title,tooltip:t.options.description,rules:g.value},{label:e.withCtx(()=>[V.value?(e.openBlock(),e.createElementBlock("label",W,[o[16]||(o[16]=e.createElementVNode("strong",{class:"arco-form-item-label-required-symbol"},[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)),e.createTextVNode(" "+e.toDisplayString(t.options.title),1)])):e.createCommentVNode("",!0)]),default:e.withCtx(()=>[m.value==="string"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[t.options.enum?(e.openBlock(),e.createBlock(v,{key:0,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[1]||(o[1]=l=>n.value[t.fieldName]=l),"allow-clear":"","trigger-props":{contentClass:"json-schema-form-select"},onChange:r,onClear:d},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options.enum,l=>(e.openBlock(),e.createBlock(f,{key:l,value:l,label:t.options.enumDescriptions&&t.options.enumDescriptions[l]||l},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])):t.options.format==="date"?(e.openBlock(),e.createBlock(_,{key:1,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[2]||(o[2]=l=>n.value[t.fieldName]=l),"allow-clear":"",onChange:r,onClear:d},null,8,["modelValue"])):t.options.format==="time"?(e.openBlock(),e.createBlock(O,{key:2,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[3]||(o[3]=l=>n.value[t.fieldName]=l),"allow-clear":"",onChange:r,onClear:d},null,8,["modelValue"])):t.options.format==="date-time"?(e.openBlock(),e.createBlock(_,{key:3,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[4]||(o[4]=l=>n.value[t.fieldName]=l),"show-time":"","time-picker-props":{defaultValue:"00:00:00"},"allow-clear":"",onChange:r,onClear:d},null,8,["modelValue"])):(e.openBlock(),e.createBlock(J,{key:4,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[5]||(o[5]=l=>n.value[t.fieldName]=l),onChange:r},null,8,["modelValue"]))],64)):e.createCommentVNode("",!0),m.value==="number"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[t.options.enum?(e.openBlock(),e.createBlock(v,{key:0,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[6]||(o[6]=l=>n.value[t.fieldName]=l),"allow-clear":"","trigger-props":{contentClass:"json-schema-form-select"},onChange:r},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options.enum,l=>(e.openBlock(),e.createBlock(f,{key:l,value:l,label:t.options.enumDescriptions&&t.options.enumDescriptions[l]||String(l)},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])):(e.openBlock(),e.createBlock(h,{key:1,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[7]||(o[7]=l=>n.value[t.fieldName]=l),mode:"button",min:t.options.minimum,max:t.options.maximum,onChange:r},null,8,["modelValue","min","max"]))],64)):e.createCommentVNode("",!0),m.value==="integer"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[t.options.enum?(e.openBlock(),e.createBlock(v,{key:0,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[8]||(o[8]=l=>n.value[t.fieldName]=l),"allow-clear":"","trigger-props":{contentClass:"json-schema-form-select"},onChange:r},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options.enum,l=>(e.openBlock(),e.createBlock(f,{key:l,value:l,label:t.options.enumDescriptions&&t.options.enumDescriptions[l]||String(l)},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])):(e.openBlock(),e.createBlock(h,{key:1,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[9]||(o[9]=l=>n.value[t.fieldName]=l),mode:"button",min:t.options.minimum,max:t.options.maximum,step:1,precision:0,onChange:r},null,8,["modelValue","min","max"]))],64)):e.createCommentVNode("",!0),m.value==="boolean"?(e.openBlock(),e.createBlock(A,{key:3,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[10]||(o[10]=l=>n.value[t.fieldName]=l),onChange:r},null,8,["modelValue"])):e.createCommentVNode("",!0)]),_:1},8,["field","label","tooltip","rules"])):e.createCommentVNode("",!0),["array","object"].includes(m.value)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[m.value==="object"?(e.openBlock(),e.createElementBlock("div",X,[e.createElementVNode("div",Y,e.toDisplayString(t.options.title),1),e.createElementVNode("div",Z,[e.createVNode(x,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value(t.options),(l,i)=>(e.openBlock(),e.createBlock(E,{key:l,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[11]||(o[11]=s=>n.value[t.fieldName]=s),fieldName:l,options:t.options.properties[l],parentFieldName:t.fieldName,parent:t.options,breadcrumb:`${t.breadcrumb}[${l}]`,widgets:t.widgets,onChange:w},null,8,["modelValue","fieldName","options","parentFieldName","parent","breadcrumb","widgets"]))),128))]),_:1})])])):e.createCommentVNode("",!0),m.value==="array"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.unref(k.getTrueType)(t.options.items.type)==="object"?(e.openBlock(),e.createElementBlock("div",ee,[e.createElementVNode("div",te,e.toDisplayString(t.options.title),1),e.createElementVNode("div",oe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value[t.fieldName],(l,i)=>(e.openBlock(),e.createElementBlock("div",{key:i,class:"form-item-content-item"},[e.createElementVNode("div",le,[e.createVNode(z,{size:0},{split:e.withCtx(()=>[e.createVNode(P,{direction:"vertical"})]),default:e.withCtx(()=>[i!=0?(e.openBlock(),e.createBlock(p,{key:0,type:"text",onClick:s=>I(l,i)},{default:e.withCtx(()=>o[17]||(o[17]=[e.createTextVNode("上移")])),_:2},1032,["onClick"])):e.createCommentVNode("",!0),i!=n.value[t.fieldName].length-1?(e.openBlock(),e.createBlock(p,{key:1,type:"text",onClick:s=>q(l,i)},{default:e.withCtx(()=>o[18]||(o[18]=[e.createTextVNode(" 下移 ")])),_:2},1032,["onClick"])):e.createCommentVNode("",!0),e.createVNode(p,{type:"text",onClick:s=>M(l)},{default:e.withCtx(()=>o[19]||(o[19]=[e.createTextVNode("复制")])),_:2},1032,["onClick"]),e.createVNode(p,{type:"text",status:"danger",onClick:s=>$(l,i)},{default:e.withCtx(()=>o[20]||(o[20]=[e.createTextVNode("删除")])),_:2},1032,["onClick"])]),_:2},1024)]),e.createVNode(x,null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value(t.options.items),(s,ae)=>(e.openBlock(),e.createBlock(E,{key:s,modelValue:n.value[t.fieldName][i],"onUpdate:modelValue":K=>n.value[t.fieldName][i]=K,fieldName:s,options:t.options.items.properties[s],parentFieldName:t.fieldName,parent:t.options.items,breadcrumb:`${t.breadcrumb}[${i}][${s}]`,widgets:t.widgets,onChange:w},null,8,["modelValue","onUpdate:modelValue","fieldName","options","parentFieldName","parent","breadcrumb","widgets"]))),128))]),_:2},1024)]))),128)),e.createVNode(p,{long:"",onClick:o[12]||(o[12]=l=>L())},{icon:e.withCtx(()=>[e.createVNode(G)]),default:e.withCtx(()=>[o[21]||(o[21]=e.createTextVNode(" 新增 "))]),_:1})])])):(e.openBlock(),e.createBlock(c,{key:1,field:t.breadcrumb,label:t.options.title,tooltip:t.options.description,rules:g.value},{default:e.withCtx(()=>[t.options.items.enum?(e.openBlock(),e.createBlock(v,{key:0,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[13]||(o[13]=l=>n.value[t.fieldName]=l),multiple:"","allow-clear":"","trigger-props":{contentClass:"json-schema-form-select"},onChange:r},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options.items.enum,l=>(e.openBlock(),e.createBlock(f,{key:l,label:l,value:l},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])):(e.openBlock(),e.createBlock(H,{key:1,modelValue:n.value[t.fieldName],"onUpdate:modelValue":o[14]||(o[14]=l=>n.value[t.fieldName]=l),onPressEnter:j,onChange:r},null,8,["modelValue"]))]),_:1},8,["field","label","tooltip","rules"]))],64)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)],64))]),_:1},8,["span","offset"]),(T=t.options.layout)!=null&&T.end?(e.openBlock(),e.createBlock(u,{key:1})):e.createCommentVNode("",!0)],64)}}});exports.default=ne;