UNPKG

@tuoyuan/json-schema

Version:

json-schema编辑器及表单组件

2 lines (1 loc) 4.67 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),F=require("json-editor-vue"),T=require("./components/row.vue.js"),A=require("./components/example-modal.vue.js"),J=require("../utils/utils.js"),U=require("../json-schema-form/index.js"),H={key:0,class:"schema-editor-wrapper"},R={key:0,class:"schema-editor-toolbar"},$={class:"schema-editor"},I="text",D=e.defineComponent({name:"AJsonSchemaEditor",__name:"index",props:e.mergeModels({showToolbar:{type:Boolean,default:!0},custom:{type:Array,default:()=>[]},widgets:{type:Array,default:()=>[]},showMock:{type:Boolean},showForm:{type:Boolean},modalSize:{type:String,default:"small"}},{modelValue:{type:Object,required:!0},modelModifiers:{}}),emits:e.mergeModels(["change"],["update:modelValue"]),setup(d,{emit:x}){const l=e.useModel(d,"modelValue"),r=d,h=e.computed(()=>r.modalSize==="small"?"500px":r.modalSize==="middle"?"800px":r.modalSize==="large"?"1000px":"500px"),V=x,p=e.ref(),a=e.ref(!1),v=e.ref(!1),u=e.ref(!1),k=e.ref(),c=e.ref(!0),f=e.ref({});e.watch(l,(t,o)=>{J.deepEqual(t,o)||w(),V("change",t)},{deep:!0}),e.onBeforeMount(()=>{w()}),e.onMounted(()=>{});const w=()=>{l.value.type||(l.value.type="object"),y(l.value)},y=t=>{const o=()=>{if(t.properties)if(t.order){const s={};t.order.forEach((m,i)=>{s[m]=t.properties[m]}),t.properties=s}else t.order=Object.keys(t.properties)};(typeof t.type=="string"&&t.type==="object"||Array.isArray(t.type)&&t.type.includes("object"))&&o(),t.properties&&Object.keys(t.properties).forEach(s=>{y(t.properties[s])})},b=()=>{c.value=!c.value},g=()=>{k.value=l.value,v.value=!0},N=()=>{a.value=!0},B=()=>{u.value=!0},M=()=>{f.value={}},S=t=>{},_=()=>{const t=p.value.jsonEditor.get();l.value=t.json||JSON.parse(t.text)},E=()=>{p.value.jsonEditor.set({json:k.value})};return(t,o)=>{const s=e.resolveComponent("icon-eye-invisible"),m=e.resolveComponent("icon-eye"),i=e.resolveComponent("a-button"),j=e.resolveComponent("icon-code-block"),O=e.resolveComponent("icon-code-square"),q=e.resolveComponent("icon-computer"),z=e.resolveComponent("a-space"),C=e.resolveComponent("a-modal");return l.value?(e.openBlock(),e.createElementBlock("div",H,[r.showToolbar?(e.openBlock(),e.createElementBlock("div",R,[e.createVNode(z,null,{default:e.withCtx(()=>[e.createVNode(i,{onClick:o[0]||(o[0]=n=>b())},{icon:e.withCtx(()=>[c.value?(e.openBlock(),e.createBlock(s,{key:0})):(e.openBlock(),e.createBlock(m,{key:1}))]),default:e.withCtx(()=>o[9]||(o[9]=[e.createTextVNode("显示/隐藏")])),_:1}),e.createVNode(i,{onClick:o[1]||(o[1]=n=>g())},{icon:e.withCtx(()=>[e.createVNode(j)]),default:e.withCtx(()=>o[10]||(o[10]=[e.createTextVNode("文本编辑")])),_:1}),d.showMock?(e.openBlock(),e.createBlock(i,{key:0,onClick:o[2]||(o[2]=n=>N())},{icon:e.withCtx(()=>[e.createVNode(O)]),default:e.withCtx(()=>o[11]||(o[11]=[e.createTextVNode("示例数据")])),_:1})):e.createCommentVNode("",!0),d.showForm?(e.openBlock(),e.createBlock(i,{key:1,onClick:o[3]||(o[3]=n=>B())},{icon:e.withCtx(()=>[e.createVNode(q)]),default:e.withCtx(()=>o[12]||(o[12]=[e.createTextVNode("表单预览")])),_:1})):e.createCommentVNode("",!0)]),_:1})])):e.createCommentVNode("",!0),e.createElementVNode("div",$,[e.createVNode(T.default,{modelValue:l.value,"onUpdate:modelValue":o[4]||(o[4]=n=>l.value=n),custom:r.custom,widgets:r.widgets,isRoot:"",disabledFieldName:"",isHidden:c.value},null,8,["modelValue","custom","widgets","isHidden"])]),a.value?(e.openBlock(),e.createBlock(A.default,{key:1,show:a.value,"onUpdate:show":o[5]||(o[5]=n=>a.value=n),schema:l.value,modalSize:r.modalSize},null,8,["show","schema","modalSize"])):e.createCommentVNode("",!0),e.createVNode(C,{visible:v.value,"onUpdate:visible":o[6]||(o[6]=n=>v.value=n),title:"JSON Schema",width:h.value,"ok-text":"保存","body-style":{"max-height":"80vh",padding:"18px"},onOk:_,onCancel:E},{default:e.withCtx(()=>[e.createVNode(e.unref(F),{ref_key:"jsonEditorRef",ref:p,modelValue:l.value,mode:I,mainMenuBar:!1,statusBar:!1,onChange:S,style:{height:"75vh"}},null,8,["modelValue"])]),_:1},8,["visible","width"]),u.value?(e.openBlock(),e.createBlock(C,{key:2,visible:u.value,"onUpdate:visible":o[8]||(o[8]=n=>u.value=n),title:"表单预览",width:h.value,"hide-cancel":"","body-style":{"max-height":"80vh",padding:"18px"},onOk:M},{default:e.withCtx(()=>[e.createVNode(e.unref(U.default),{ref:"jsonSchemaFormRef",modelValue:f.value,"onUpdate:modelValue":o[7]||(o[7]=n=>f.value=n),options:l.value,widgets:r.widgets},null,8,["modelValue","options","widgets"])]),_:1},8,["visible","width"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}});exports.default=D;