@duxweb/dvha-pro 1.0.26 → 1.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),y=require("@duxweb/dvha-core"),V=require("@vueuse/core"),u=require("naive-ui"),v=require("vue-draggable-plus"),N=require("../status/blockEmpty.cjs"),m=e.defineComponent({name:"DuxDynamicData",props:{createAction:{type:Boolean,default:!0},deleteAction:{type:Boolean,default:!0},columns:Array,createCallback:Function,onCreate:Function,value:{type:Array,default:[]},defaultValue:{type:Array,default:[]}},setup(t,{emit:o}){const l=V.useVModel(t,"value",o,{passive:!0,defaultValue:t.defaultValue||[],deep:!0}),{renderAsync:d}=y.useJsonSchema(),i=a=>{const r=l.value?.[0][a],c=[...l.value||[]].map(n=>({...n,[a]:r}));l.value=[...c]},s=e.computed(()=>{let a=t.columns?.length||0;return(t.createAction||t.deleteAction)&&(a+=1),a});return()=>e.createVNode(v.VueDraggable,e.mergeProps({modelValue:l.value},{"onUpdate:modelValue":a=>{l.value=a}},{handle:".sort-handle",target:".sort-target",animation:150}),{default:()=>[e.createVNode("div",{class:"overflow-auto w-full"},[e.createVNode(u.NTable,{class:"table-fixed w-full"},{default:()=>[e.createVNode("thead",null,[e.createVNode("tr",null,[e.createVNode("th",{style:{width:"40px"}},null),t.columns?.map((a,r)=>e.createVNode("th",{key:r,style:{width:`${a.width}px`}},[e.createVNode("div",{class:"flex items-center justify-between"},[e.createVNode("div",null,[a.title]),a.copy&&e.createVNode("div",null,[e.createVNode(u.NButton,{onClick:()=>{i(a.key)},renderIcon:()=>e.createVNode("div",{class:"i-tabler:pencil-down t-icon"},null),text:!0,type:"primary"},null)])])])),(t.createAction||t.deleteAction)&&e.createVNode("th",{class:"w-15"},[t.createAction&&e.createVNode(u.NButton,{tertiary:!0,type:"primary",circle:!0,renderIcon:()=>e.createVNode("div",{class:"i-tabler:plus h-4 w-4"},null),onClick:()=>{t?.onCreate?t.onCreate():(l.value||(l.value=[]),l.value?.push(t?.createCallback?.(l.value)||{}))}},null)])])]),e.createVNode("tbody",{class:"sort-target"},[l.value&&l.value?.length>0?l.value.map((a,r)=>e.createVNode("tr",{key:r},[e.createVNode("td",null,[e.createVNode("div",{class:"sort-handle i-tabler:grid-dots size-4 cursor-move"},null)]),t.columns?.map((c,n)=>e.createVNode("td",{key:n},[c.schema?e.h(d({data:Array.isArray(c.schema)?c.schema:[c.schema],context:{rowIndex:r,model:l.value,row:a}})):c.render?.(a,r)||a[c.key]])),(t.createAction||t.deleteAction)&&e.createVNode("td",{class:"w-15"},[t.deleteAction&&e.createVNode(u.NButton,{tertiary:!0,type:"error",circle:!0,renderIcon:()=>e.createVNode("div",{class:"i-tabler:trash h-4 w-4"},null),onClick:()=>{l.value.splice(r,1)}},null)])])):e.createVNode("tr",null,[e.createVNode("td",{colspan:s.value},[e.createVNode(N.DuxBlockEmpty,null,null)])])])]})])]})}});exports.DuxDynamicData=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),V=require("@duxweb/dvha-core"),v=require("@vueuse/core"),u=require("naive-ui"),N=require("vue-draggable-plus"),m=require("../status/blockEmpty.cjs"),h=e.defineComponent({name:"DuxDynamicData",props:{createAction:{type:Boolean,default:!0},deleteAction:{type:Boolean,default:!0},columns:Array,createCallback:Function,onCreate:Function,value:{type:Array,default:[]},defaultValue:{type:Array,default:[]}},setup(a,{emit:d}){const l=v.useVModel(a,"value",d,{passive:!0,defaultValue:a.defaultValue||[],deep:!0}),{renderAsync:i}=V.useJsonSchema(),s=t=>{const c=l.value?.[0][t],r=[...l.value||[]].map(n=>({...n,[t]:c}));l.value=[...r]},y=e.computed(()=>{let t=a.columns?.length||0;return(a.createAction||a.deleteAction)&&(t+=1),t});return()=>e.createVNode(N.VueDraggable,e.mergeProps({modelValue:l.value},{"onUpdate:modelValue":t=>{l.value=t}},{handle:".sort-handle",target:".sort-target",animation:150}),{default:()=>[e.createVNode("div",{class:"overflow-auto w-full"},[e.createVNode(u.NTable,{class:"table-fixed w-full"},{default:()=>[e.createVNode("thead",null,[e.createVNode("tr",null,[e.createVNode("th",{style:{width:"40px"}},null),a.columns?.map((t,c)=>e.createVNode("th",{key:c,style:{width:`${t.width}px`}},[e.createVNode("div",{class:"flex items-center justify-between"},[e.createVNode("div",null,[t.title]),t.copy&&e.createVNode("div",null,[e.createVNode(u.NButton,{onClick:()=>{s(t.key)},renderIcon:()=>e.createVNode("div",{class:"i-tabler:pencil-down t-icon"},null),text:!0,type:"primary"},null)])])])),(a.createAction||a.deleteAction)&&e.createVNode("th",{class:"w-15"},[a.createAction&&e.createVNode(u.NButton,{tertiary:!0,type:"primary",circle:!0,renderIcon:()=>e.createVNode("div",{class:"i-tabler:plus h-4 w-4"},null),onClick:()=>{a?.onCreate?a.onCreate():(l.value||(l.value=[]),l.value?.push(a?.createCallback?.(l.value)||{}))}},null)])])]),e.createVNode("tbody",{class:"sort-target"},[l.value&&l.value?.length>0?l.value.map((t,c)=>e.createVNode("tr",{key:c},[e.createVNode("td",null,[e.createVNode("div",{class:"sort-handle i-tabler:grid-dots size-4 cursor-move"},null)]),a.columns?.map((r,n)=>{const o=typeof r.schema=="function"?r.schema(t,c):r.schema;return e.createVNode("td",{key:n},[r.schema?e.h(i({data:Array.isArray(o)?o:[o],context:{rowIndex:c,model:l.value,row:t}})):r.render?.(t,c)||t[r.key]])}),(a.createAction||a.deleteAction)&&e.createVNode("td",{class:"w-15"},[a.deleteAction&&e.createVNode(u.NButton,{tertiary:!0,type:"error",circle:!0,renderIcon:()=>e.createVNode("div",{class:"i-tabler:trash h-4 w-4"},null),onClick:()=>{l.value.splice(c,1)}},null)])])):e.createVNode("tr",null,[e.createVNode("td",{colspan:y.value},[e.createVNode(m.DuxBlockEmpty,null,null)])])])]})])]})}});exports.DuxDynamicData=h;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),g=require("@duxweb/dvha-core"),d=require("clsx"),p=require("lodash-es"),f=require("naive-ui"),v=require("short-unique-id"),m=require("vue-draggable-plus"),x=require("../card/card.cjs"),b=require("./components/grid.cjs"),V=require("./editor/hook.cjs"),i=require("./editor/preview.cjs"),h=require("./editor/setting.cjs"),N=a.defineComponent({name:"DuxDesignEditor",props:{data:Object,onUpdateData:Function,groups:Array,components:Array,settingPage:Object,actionRender:Function,previewWrapper:Function},setup(r){const{t:l}=g.useI18n(),t=V.useEditor({settingPage:r.settingPage});a.provide("editor.use",t),a.watch([()=>r.components,()=>r.groups],()=>{t.clearGroup(),t.clearComponent(),t.addGroup({name:"layout",label:l("components.designEditor.layout")||"Layout",icon:"i-tabler:layout"}),r.groups?.forEach(e=>{t.addGroup(e)}),t.addComponent(b.duxFormEditorGrid(l)),r.components?.forEach(e=>{t.addComponent(e)})},{immediate:!0,deep:!0});const o=a.ref(),{randomUUID:u}=new v({length:10}),s=e=>({key:u(),name:e.name,options:p.cloneDeep(e.settingDefault)});return a.watch(()=>r.data,e=>{const n=r.settingPage?.default||{};t.value.value=e||{config:n,data:[]},e&&e.config&&(t.value.value.config={...n,...e.config})},{deep:!0,immediate:!0}),a.watch(()=>t.value.value,e=>{e!==r.data&&r.onUpdateData?.(e)},{deep:!0}),()=>a.createVNode(x.DuxCard,{class:"h-full",shadow:!0},{default:()=>[a.createVNode("div",{class:"h-full flex flex-row text-default"},[a.createVNode("div",{class:"flex-none flex flex-col gap-2 border-r border-default bg-default p-2"},[a.createVNode(c,{title:l("components.designEditor.all")||"All",icon:"i-tabler:hexagons",active:!o.value,onClick:()=>{o.value=void 0}},null),t.group.value?.map((e,n)=>a.createVNode(c,{key:n,active:o.value===e.name,title:e.label,icon:e.icon,onClick:()=>{o.value=e.name}},null))]),a.createVNode("div",{class:"flex-none text-xs w-180px bg-default",id:"comp-list"},[a.createVNode(f.NScrollbar,null,{default:()=>[a.createVNode("div",{class:"flex flex-col gap-4 p-2"},[t.tree.value?.filter(e=>o.value?e.name===o.value:!0).map(e=>a.createVNode("div",{key:e.name,class:"flex flex-col gap-2"},[a.createVNode("div",{class:"bg-muted border border-muted rounded p-2 flex justify-center"},[e.label]),a.createVNode(m.VueDraggable,{modelValue:e.children||[],animation:150,group:{name:"widget",pull:"clone",put:!1},sort:!1,clone:s,class:"grid grid-cols-2 items-start gap-2 "},{default:()=>[e.children?.map(n=>a.createVNode("div",{key:n.name,class:"border border-muted rounded-sm p-2 flex flex-col items-center gap-2 cursor-pointer hover:bg-muted edit-drag"},[a.createVNode("div",{class:d(["size-6",n.icon])},null),a.createVNode("div",{class:"truncate whitespace-nowrap px-2 overflow-hidden"},[n.label])]))]})]))])]})]),a.createVNode("div",{class:"flex-1 shadow-sm flex flex-col items-center p-6 overflow-auto",style:"background: linear-gradient(45deg, rgba(0,0,0, 0.1) 25%, transparent 25%), linear-gradient(-45deg, rgba(0,0,0, 0.1) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0,0,0, 0.1) 75%), linear-gradient(-45deg, transparent 75%, rgba(0,0,0, 0.1) 75%); background-size: 20px 20px; background-position: 0 0, 0 10px, 10px -10px, -10px 0px;"},[a.createVNode("div",{class:"max-w-2xl w-full flex-1 bg-default shadow p-2",onClick:()=>{t.selected.value=void 0}},[r.previewWrapper?r.previewWrapper(a.createVNode(i.DuxWidgetEditorPreview,{modelValue:t.value.value?.data,onUpdate:e=>t.value.value.data=e},null),t):a.createVNode(i.DuxWidgetEditorPreview,{modelValue:t.value.value?.data,onUpdate:e=>t.value.value.data=e},null)])]),a.createVNode(h.WidgetEditorSetting,{actionRender:r.actionRender},null)])]})}});function c({title:r,icon:l,active:t,onClick:o}){return a.createVNode("div",{class:d(["flex flex-col items-center px-3 py-2 hover:bg-primary/10 cursor-pointer rounded-sm",t?"bg-primary/10 text-primary":""]),onClick:o},[a.createVNode("div",{class:d(["size-4",l])},null),a.createVNode("div",{class:"truncate whitespace-nowrap text-default text-sm"},[r])])}exports.DuxDesignEditor=N;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),p=require("@duxweb/dvha-core"),i=require("clsx"),d=require("lodash-es"),f=require("naive-ui"),v=require("short-unique-id"),m=require("vue-draggable-plus"),x=require("../card/card.cjs"),b=require("./components/grid.cjs"),V=require("./editor/hook.cjs"),c=require("./editor/preview.cjs"),h=require("./editor/setting.cjs"),w=a.defineComponent({name:"DuxDesignEditor",props:{data:Object,onUpdateData:Function,groups:Array,components:Array,settingPage:Object,actionRender:Function,previewWrapper:Function},setup(r){const{t:l}=p.useI18n(),t=V.useEditor({settingPage:r.settingPage});a.provide("editor.use",t),a.watch([()=>r.components,()=>r.groups],()=>{t.clearGroup(),t.clearComponent(),t.addGroup({name:"layout",label:l("components.designEditor.layout")||"Layout",icon:"i-tabler:layout"}),r.groups?.forEach(e=>{t.addGroup(e)}),t.addComponent(b.duxFormEditorGrid(l)),r.components?.forEach(e=>{t.addComponent(e)})},{immediate:!0,deep:!0});const n=a.ref(),{randomUUID:s}=new v({length:10}),g=e=>({key:s(),name:e.name,options:d.cloneDeep(e.settingDefault)});return a.watch(()=>r.data,e=>{const o=r.settingPage?.default||{};t.value.value={config:{...o,...d.cloneDeep(e?.config||{})},data:d.cloneDeep(e?.data||[])}},{deep:!0,immediate:!0}),a.watch(()=>t.value.value,e=>{e!==r.data&&r.onUpdateData?.(e)},{deep:!0}),()=>a.createVNode(x.DuxCard,{class:"h-full",shadow:!0},{default:()=>[a.createVNode("div",{class:"h-full flex flex-row text-default"},[a.createVNode("div",{class:"flex-none flex flex-col gap-2 border-r border-default bg-default p-2"},[a.createVNode(u,{title:l("components.designEditor.all")||"All",icon:"i-tabler:hexagons",active:!n.value,onClick:()=>{n.value=void 0}},null),t.group.value?.map((e,o)=>a.createVNode(u,{key:o,active:n.value===e.name,title:e.label,icon:e.icon,onClick:()=>{n.value=e.name}},null))]),a.createVNode("div",{class:"flex-none text-xs w-180px bg-default",id:"comp-list"},[a.createVNode(f.NScrollbar,null,{default:()=>[a.createVNode("div",{class:"flex flex-col gap-4 p-2"},[t.tree.value?.filter(e=>n.value?e.name===n.value:!0).map(e=>a.createVNode("div",{key:e.name,class:"flex flex-col gap-2"},[a.createVNode("div",{class:"bg-muted border border-muted rounded p-2 flex justify-center"},[e.label]),a.createVNode(m.VueDraggable,{modelValue:e.children||[],animation:150,group:{name:"widget",pull:"clone",put:!1},sort:!1,clone:g,class:"grid grid-cols-2 items-start gap-2 "},{default:()=>[e.children?.map(o=>a.createVNode("div",{key:o.name,class:"border border-muted rounded-sm p-2 flex flex-col items-center gap-2 cursor-pointer hover:bg-muted edit-drag"},[a.createVNode("div",{class:i(["size-6",o.icon])},null),a.createVNode("div",{class:"truncate whitespace-nowrap px-2 overflow-hidden"},[o.label])]))]})]))])]})]),a.createVNode("div",{class:"flex-1 shadow-sm flex flex-col items-center p-6 overflow-auto",style:"background: linear-gradient(45deg, rgba(0,0,0, 0.1) 25%, transparent 25%), linear-gradient(-45deg, rgba(0,0,0, 0.1) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0,0,0, 0.1) 75%), linear-gradient(-45deg, transparent 75%, rgba(0,0,0, 0.1) 75%); background-size: 20px 20px; background-position: 0 0, 0 10px, 10px -10px, -10px 0px;"},[a.createVNode("div",{class:"max-w-2xl w-full flex-1 bg-default shadow p-2",onClick:()=>{t.selected.value=void 0}},[r.previewWrapper?r.previewWrapper(a.createVNode(c.DuxWidgetEditorPreview,{modelValue:t.value.value?.data,onUpdate:e=>t.value.value.data=e},null),t):a.createVNode(c.DuxWidgetEditorPreview,{modelValue:t.value.value?.data,onUpdate:e=>t.value.value.data=e},null)])]),a.createVNode(h.WidgetEditorSetting,{actionRender:r.actionRender},null)])]})}});function u({title:r,icon:l,active:t,onClick:n}){return a.createVNode("div",{class:i(["flex flex-col items-center px-3 py-2 hover:bg-primary/10 cursor-pointer rounded-sm",t?"bg-primary/10 text-primary":""]),onClick:n},[a.createVNode("div",{class:i(["size-4",l])},null),a.createVNode("div",{class:"truncate whitespace-nowrap text-default text-sm"},[r])])}exports.DuxDesignEditor=w;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),b=require("@vueuse/core"),x=require("vee-validate"),y=t.defineComponent({name:"DuxFormItem",props:{label:String,description:[String,Object],path:String,labelPlacement:{type:String},labelAlign:{type:String},labelWidth:{type:Number},required:{type:Boolean,default:!1},rule:[String,Object],message:[String,Object]},setup(e,{slots:d}){const n=t.toRef(e.message),c=t.computed(()=>typeof e.rule=="object"?{...e.rule,required:!!e.required}:typeof e.rule=="string"?e.rule?.includes("required")?e.rule:e.rule?`${e.rule}|required`:"required":e.rule),{errorMessage:i,value:s,setErrors:o,validate:f}=x.useField(e.path||"",c.value||{},{label:e.label}),m=t.computed(()=>e.required?!0:e.rule?typeof e.rule=="string"?e.rule.includes("required"):typeof e.rule=="object"?"required"in e.rule:!1:!1),u=t.computed(()=>i.value&&(n.value||i.value));t.watch(u,r=>{r&&o(r)},{immediate:!0}),b.watchThrottled(s,r=>{r&&f()},{throttle:300,deep:!0});const a=t.inject("dux.form",{labelPlacement:t.ref("left"),labelAlign:t.ref("left"),labelWidth:t.ref(70),divider:t.ref(!1)}),l=t.computed(()=>e.labelPlacement||a.labelPlacement.value),v=t.computed(()=>{let r=e.labelWidth||a.labelWidth.value||70;return typeof r=="number"&&(r=`${r}px`),l.value!=="left"?"auto":r}),g=t.computed(()=>a.divider.value||l.value==="page");return()=>t.createVNode("div",{class:[l.value!=="top"?"md:flex-row gap-2 lg:items-center":"gap-1",g.value?"py-6":"",l.value==="setting"?"md:justify-between md:items-start md:gap-4":"",l.value==="page"?"grid grid-cols-1 lg:grid-cols-4 px-4":"flex flex-col"]},[e.label&&t.createVNode("div",{class:[l.value==="left"?"flex lg:items-center":"md:mb-1",l.value==="left"&&a.labelAlign.value==="right"?"justify-end":""],style:{width:v.value}},[t.createVNode("div",{class:"flex flex-col"},[t.createVNode("div",null,[t.createVNode("span",{class:"relative flex items-center gap-1"},[e.label,m.value&&t.createVNode("span",{class:"text-error font-mono text-xs"},[t.createTextVNode("*")])])]),e.description&&(l.value==="setting"||l.value==="page")&&t.createVNode("div",{class:"text-sm text-muted"},[e.description])])]),t.createVNode("div",{class:["flex flex-col gap-1",l.value==="setting"?"flex-none md:w-40%":"flex-1",l.value==="page"?"col-span-3":""]},[t.createVNode("div",{class:l.value==="setting"?"flex-1 lg:flex lg:justify-end":""},[d?.default?.()]),e.description&&l.value==="left"&&t.createVNode("div",{class:"text-sm text-muted"},[e.description]),u.value&&t.createVNode("div",{class:"text-error"},[u.value])])])}});exports.DuxFormItem=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),b=require("@vueuse/core"),x=require("vee-validate"),y=t.defineComponent({name:"DuxFormItem",props:{label:String,description:[String,Object],path:String,labelPlacement:{type:String},labelAlign:{type:String},labelWidth:{type:Number},required:{type:Boolean,default:!1},rule:[String,Object],message:[String,Object]},setup(e,{slots:d}){const n=t.toRef(e.message),c=t.computed(()=>typeof e.rule=="object"?{...e.rule,required:!!e.required}:typeof e.rule=="string"?e.rule?.includes("required")?e.rule:e.rule?`${e.rule}|required`:"required":e.rule),{errorMessage:i,value:s,setErrors:o,validate:f}=x.useField(e.path||"",c.value||{},{label:e.label}),m=t.computed(()=>e.required?!0:e.rule?typeof e.rule=="string"?e.rule.includes("required"):typeof e.rule=="object"?"required"in e.rule:!1:!1),u=t.computed(()=>i.value&&(n.value||i.value));t.watch(u,r=>{r&&o(r)},{immediate:!0}),b.watchThrottled(s,r=>{r&&f()},{throttle:300,deep:!0});const a=t.inject("dux.form",{labelPlacement:t.ref("left"),labelAlign:t.ref("left"),labelWidth:t.ref(70),divider:t.ref(!1)}),l=t.computed(()=>e.labelPlacement||a.labelPlacement.value),v=t.computed(()=>{let r=e.labelWidth||a.labelWidth.value||70;return typeof r=="number"&&(r=`${r}px`),l.value!=="left"?"auto":r}),g=t.computed(()=>a.divider.value||l.value==="page");return()=>t.createVNode("div",{class:[l.value!=="top"?"md:flex-row gap-2 lg:items-center":"gap-1",g.value?"py-6":"",l.value==="setting"?"md:justify-between md:items-start md:gap-4":"",l.value==="page"?"grid grid-cols-1 lg:grid-cols-4 px-4":"flex flex-col"]},[e.label&&t.createVNode("div",{class:[l.value==="left"?"flex lg:items-center":"md:mb-1",l.value==="left"&&a.labelAlign.value==="right"?"justify-end":""],style:{width:v.value}},[t.createVNode("div",{class:"flex flex-col"},[t.createVNode("div",null,[t.createVNode("span",{class:"relative flex items-center gap-1"},[e.label,m.value&&t.createVNode("span",{class:"text-error font-mono text-xs"},[t.createTextVNode("*")])])]),e.description&&(l.value==="setting"||l.value==="page")&&t.createVNode("div",{class:"text-sm text-muted"},[e.description])])]),t.createVNode("div",{class:["flex flex-col gap-1",l.value==="setting"?"flex-none md:w-40%":"flex-1",l.value==="page"?"col-span-3":""]},[t.createVNode("div",{class:l.value==="setting"?"flex-1 lg:flex lg:justify-end":""},[d?.default?.()]),e.description&&(l.value==="left"||l.value==="top")&&t.createVNode("div",{class:"text-sm text-muted"},[e.description]),u.value&&t.createVNode("div",{class:"text-error"},[u.value])])])}});exports.DuxFormItem=y;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),o=require("@duxweb/dvha-core"),a=require("naive-ui"),p=require("vue-router");require("@overlastic/vue");const b=require("../card/card.cjs");require("clsx");require("vue-echarts");require("@vueuse/core");require("vue3-ace-editor");require("ace-builds/src-noconflict/mode-vue");require("ace-builds/src-noconflict/mode-javascript");require("ace-builds/src-noconflict/mode-html");require("ace-builds/src-noconflict/mode-json");require("ace-builds/src-noconflict/mode-json5");require("ace-builds/src-noconflict/theme-tomorrow_night");require("ace-builds/src-noconflict/theme-tomorrow");require("ace-builds/src-noconflict/ext-searchbox");require("ace-builds/src-noconflict/ext-language_tools");require("ace-builds/src-noconflict/mode-snippets");require("vue-cropper");require("jinrishici");require("lodash-es");require("vue-draggable-plus");require("short-unique-id");require("aieditor");const g=require("./formLayout.cjs");require("vee-validate");require("@duxweb/dvha-naiveui");require("@iconify-json/tabler/icons.json");require("../posterEditor/elements/index.cjs");require("fabric");require("mime");require("dayjs");require("@tanstack/vue-query");require("pinia");require("@vee-validate/i18n");require("colorizr");require("echarts");require("@ant-design/colors");require("@unocss/preset-icons/browser");require("@unocss/preset-typography");require("unocss/preset-wind4");require("@vee-validate/i18n/dist/locale/en.json");require("@vee-validate/i18n/dist/locale/zh_CN.json");require("vue-command-palette");const y=require("../../pages/page.cjs");require("../../pages/page404.cjs");const S=e.defineComponent({name:"DuxPageForm",props:{id:{type:[String,Number]},action:{type:String},title:{type:String},description:{type:String},path:{type:String},data:{type:Object},onSuccess:{type:Function},onError:{type:Function},size:{type:String,default:"medium"},invalidate:{type:String}},setup(r,{slots:c}){const{t}=o.useI18n(),l=e.toRef(r,"data",{}),s=a.useMessage(),d=p.useRouter(),n=o.useTabStore(),{invalidate:q}=o.useInvalidate(),i=o.useExtendForm({id:r.id,path:r.path,form:l,action:r.action,onError:u=>{s.error(u.message||t("components.form.error")),r.onError?.(u)},onSuccess:u=>{s.success(t("components.form.success")),r.onSuccess?.(u),!i.isEdit.value&&n.current&&n.delTab(n.current,m=>d.push(m.path||"")),r.invalidate&&q(r.invalidate)}}),f=n.tabs.find(u=>u.path===n.current);return()=>e.createVNode(y.DuxPage,{card:!1,scrollbar:!1},{default:()=>[e.createVNode(b.DuxCard,{title:r?.title||f?.label||(i.isEdit.value?t("components.form.edit"):t("components.form.create")),description:r?.description,class:"h-full flex flex-col",contentClass:"flex-1 min-h-0",contentSize:"none","header-bordered":!0},{default:()=>e.createVNode(a.NScrollbar,null,{default:()=>[e.createVNode(g.DuxFormLayout,{"label-placement":"page"},{default:()=>[c?.default?.(i)]})]}),headerExtra:()=>e.createVNode("div",{class:"flex gap-6 items-center"},[c?.actions?.(i),e.createVNode("div",{class:"flex gap-2"},[e.createVNode(a.NButton,{onClick:()=>i.onReset()},{default:()=>t("components.button.reset"),icon:()=>e.createVNode("i",{class:"i-tabler:refresh"},null)}),e.createVNode(a.NButton,{type:"primary",onClick:()=>i.onSubmit()},{default:()=>t("components.button.submit"),icon:()=>e.createVNode("i",{class:"i-tabler:device-floppy"},null)})])])})]})}});exports.DuxPageForm=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),a=require("@duxweb/dvha-core"),o=require("naive-ui"),g=require("vue-router");require("@overlastic/vue");const b=require("../card/card.cjs");require("clsx");require("vue-echarts");require("@vueuse/core");require("vue3-ace-editor");require("ace-builds/src-noconflict/mode-vue");require("ace-builds/src-noconflict/mode-javascript");require("ace-builds/src-noconflict/mode-html");require("ace-builds/src-noconflict/mode-json");require("ace-builds/src-noconflict/mode-json5");require("ace-builds/src-noconflict/theme-tomorrow_night");require("ace-builds/src-noconflict/theme-tomorrow");require("ace-builds/src-noconflict/ext-searchbox");require("ace-builds/src-noconflict/ext-language_tools");require("ace-builds/src-noconflict/mode-snippets");require("vue-cropper");require("jinrishici");require("lodash-es");require("vue-draggable-plus");require("short-unique-id");require("aieditor");const p=require("./formLayout.cjs");require("vee-validate");require("@duxweb/dvha-naiveui");require("@iconify-json/tabler/icons.json");require("../posterEditor/elements/index.cjs");require("fabric");require("mime");require("dayjs");require("@tanstack/vue-query");require("pinia");require("@vee-validate/i18n");require("colorizr");require("echarts");require("@ant-design/colors");require("@unocss/preset-icons/browser");require("@unocss/preset-typography");require("unocss/preset-wind4");require("@vee-validate/i18n/dist/locale/en.json");require("@vee-validate/i18n/dist/locale/zh_CN.json");require("vue-command-palette");const y=require("../../pages/page.cjs");require("../../pages/page404.cjs");const v=e.defineComponent({name:"DuxPageForm",props:{id:{type:[String,Number]},action:{type:String},title:{type:String},description:{type:String},labelPlacement:{type:String,default:"left"},path:{type:String},data:{type:Object},onSuccess:{type:Function},onError:{type:Function},size:{type:String,default:"medium"},invalidate:{type:String}},setup(r,{slots:c}){const{t:i}=a.useI18n(),l=e.toRef(r,"data",{}),s=o.useMessage(),d=g.useRouter(),n=a.useTabStore(),{invalidate:q}=a.useInvalidate(),t=a.useExtendForm({id:r.id,path:r.path,form:l,action:r.action,onError:u=>{s.error(u.message||i("components.form.error")),r.onError?.(u)},onSuccess:u=>{s.success(i("components.form.success")),r.onSuccess?.(u),!t.isEdit.value&&n.current&&n.delTab(n.current,m=>d.push(m.path||"")),r.invalidate&&q(r.invalidate)}}),f=n.tabs.find(u=>u.path===n.current);return()=>e.createVNode(y.DuxPage,{card:!1,scrollbar:!1},{default:()=>[e.createVNode(b.DuxCard,{title:r?.title||f?.label||(t.isEdit.value?i("components.form.edit"):i("components.form.create")),description:r?.description,class:"h-full flex flex-col",contentClass:"flex-1 min-h-0",contentSize:"none","header-bordered":!0},{default:()=>e.createVNode(o.NScrollbar,null,{default:()=>[e.createVNode(p.DuxFormLayout,{labelPlacement:r.labelPlacement,class:"p-4"},{default:()=>[c?.default?.(t)]})]}),headerExtra:()=>e.createVNode("div",{class:"flex gap-6 items-center"},[c?.actions?.(t),e.createVNode("div",{class:"flex gap-2"},[e.createVNode(o.NButton,{onClick:()=>t.onReset(),loading:t.isLoading.value},{default:()=>i("components.button.reset"),icon:()=>e.createVNode("i",{class:"i-tabler:refresh"},null)}),e.createVNode(o.NButton,{type:"primary",onClick:()=>t.onSubmit(),loading:t.isLoading.value},{default:()=>i("components.button.submit"),icon:()=>e.createVNode("i",{class:"i-tabler:device-floppy"},null)})])])})]})}});exports.DuxPageForm=v;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),q=require("@duxweb/dvha-core"),s=require("naive-ui");require("vue-router");require("@overlastic/vue");require("clsx");require("vue-echarts");require("@vueuse/core");require("vue3-ace-editor");require("ace-builds/src-noconflict/mode-vue");require("ace-builds/src-noconflict/mode-javascript");require("ace-builds/src-noconflict/mode-html");require("ace-builds/src-noconflict/mode-json");require("ace-builds/src-noconflict/mode-json5");require("ace-builds/src-noconflict/theme-tomorrow_night");require("ace-builds/src-noconflict/theme-tomorrow");require("ace-builds/src-noconflict/ext-searchbox");require("ace-builds/src-noconflict/ext-language_tools");require("ace-builds/src-noconflict/mode-snippets");require("vue-cropper");require("jinrishici");require("lodash-es");require("vue-draggable-plus");require("@vee-validate/i18n");require("colorizr");require("echarts");require("@ant-design/colors");require("@unocss/preset-icons/browser");require("@unocss/preset-typography");require("unocss/preset-wind4");require("@vee-validate/i18n/dist/locale/en.json");require("@vee-validate/i18n/dist/locale/zh_CN.json");require("vee-validate");require("vue-command-palette");require("@duxweb/dvha-naiveui");require("../../pages/page404.cjs");const d=require("../designEditor/editor.cjs");require("short-unique-id");require("aieditor");const p=require("../form/formLayout.cjs"),E=require("./components/cascader.cjs"),x=require("./components/cascaderAsync.cjs"),f=require("./components/checkbox.cjs"),y=require("./components/color.cjs"),F=require("./components/date.cjs"),g=require("./components/dynamicInput.cjs"),v=require("./components/dynamicTags.cjs"),b=require("./components/editor.cjs"),S=require("./components/input.cjs"),N=require("./components/inputNumber.cjs"),D=require("./components/mentionAsync.cjs"),A=require("./components/radio.cjs"),P=require("./components/region.cjs"),h=require("./components/sider.cjs"),C=require("./components/switch.cjs"),k=require("./components/time.cjs"),V=require("./components/transferAsync.cjs"),T=require("./components/treeSelect.cjs"),j=require("./components/treeSelectAsync.cjs"),I=require("./components/select.cjs"),w=require("./components/selectAsync.cjs"),O=require("./base/setting.cjs");require("@iconify-json/tabler/icons.json");require("../posterEditor/elements/index.cjs");require("fabric");require("mime");const _=require("../../hooks/modal.cjs");require("dayjs");require("@tanstack/vue-query");require("pinia");function n(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!r.isVNode(t)}const B=r.defineComponent({name:"DuxFormEditor",props:{onSave:Function},extends:d.DuxDesignEditor,setup(t){const a=_.useModal(),l=r.computed(()=>[{name:"form",label:e("components.formEditor.groups.form"),icon:"i-tabler:forms"},{name:"select",label:e("components.formEditor.groups.select"),icon:"i-tabler:select"},{name:"async",label:e("components.formEditor.groups.async"),icon:"i-tabler:loader"}]),{t:e}=q.useI18n(),m=r.computed(()=>[S.duxFormEditorInput(e),N.duxFormEditorInputNumber(e),b.duxFormEditorAIEditor(e),h.duxFormEditorSider(e),F.duxFormEditorDate(e),k.duxFormEditorTime(e),y.duxFormEditorColor(e),f.duxFormEditorCheckbox(e),A.duxFormEditorRadio(e),C.duxFormEditorSwitch(e),g.duxFormEditorDynamicInput(e),v.duxFormEditorDynamicTags(e),I.duxFormEditorSelect(e),E.duxFormEditorCascader(e),T.duxFormEditorTreeSelect(e),P.duxFormEditorRegion(e),w.duxFormEditorSelectAsync(e),x.duxFormEditorCascaderAsync(e),j.duxFormEditorTreeSelectAsync(e),V.duxFormEditorTransferAsync(e),D.duxFormEditorMentionAsync(e)]);return()=>r.createVNode(d.DuxDesignEditor,r.mergeProps(t,{groups:l.value,components:m.value,settingPage:{component:o=>r.createVNode(O.DuxFormEditorSettingPage,o,null),default:{labelPlacement:"left"}},previewWrapper:(o,i)=>{const u=r.computed(()=>i?.value?.value?.config);return r.createVNode(p.DuxFormLayout,{labelPlacement:u.value?.labelPlacement||"left",class:"h-full"},n(o)?o:{default:()=>[o]})},actionRender:o=>{let i,u,c;return r.createVNode("div",{class:"flex flex-col gap-2"},[r.createVNode(s.NButton,{type:"primary",secondary:!0,block:!0,onClick:()=>{a.show({title:e("components.formEditor.main.actions.jsonOutput"),component:()=>Promise.resolve().then(()=>require("./json.cjs")),componentProps:{value:o?.value?.value.data||[]}})}},n(i=e("components.formEditor.main.actions.jsonOutput"))?i:{default:()=>[i]}),r.createVNode(s.NButton,{type:"info",secondary:!0,block:!0,onClick:()=>{a.show({title:e("common.preview"),component:()=>Promise.resolve().then(()=>require("./preview.cjs")),componentProps:{data:o?.value?.value.data||[],config:o?.value?.value.config||{}}})}},n(u=e("common.preview"))?u:{default:()=>[u]}),r.createVNode(s.NButton,{type:"primary",block:!0,onClick:()=>t.onSave?.(o)},n(c=e("components.formEditor.main.actions.save"))?c:{default:()=>[c]})])}}),null)}});exports.DuxFormEditor=B;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),q=require("@duxweb/dvha-core"),s=require("naive-ui");require("vue-router");require("@overlastic/vue");require("clsx");require("vue-echarts");require("@vueuse/core");require("vue3-ace-editor");require("ace-builds/src-noconflict/mode-vue");require("ace-builds/src-noconflict/mode-javascript");require("ace-builds/src-noconflict/mode-html");require("ace-builds/src-noconflict/mode-json");require("ace-builds/src-noconflict/mode-json5");require("ace-builds/src-noconflict/theme-tomorrow_night");require("ace-builds/src-noconflict/theme-tomorrow");require("ace-builds/src-noconflict/ext-searchbox");require("ace-builds/src-noconflict/ext-language_tools");require("ace-builds/src-noconflict/mode-snippets");require("vue-cropper");require("jinrishici");require("lodash-es");require("vue-draggable-plus");require("@vee-validate/i18n");require("colorizr");require("echarts");require("@ant-design/colors");require("@unocss/preset-icons/browser");require("@unocss/preset-typography");require("unocss/preset-wind4");require("@vee-validate/i18n/dist/locale/en.json");require("@vee-validate/i18n/dist/locale/zh_CN.json");require("vee-validate");require("vue-command-palette");require("@duxweb/dvha-naiveui");require("../../pages/page404.cjs");const d=require("../designEditor/editor.cjs");require("short-unique-id");require("aieditor");const p=require("../form/formLayout.cjs"),E=require("./base/setting.cjs"),x=require("./components/cascader.cjs"),f=require("./components/cascaderAsync.cjs"),y=require("./components/checkbox.cjs"),F=require("./components/color.cjs"),g=require("./components/date.cjs"),v=require("./components/dynamicInput.cjs"),b=require("./components/dynamicTags.cjs"),S=require("./components/editor.cjs"),N=require("./components/input.cjs"),D=require("./components/inputNumber.cjs"),A=require("./components/mentionAsync.cjs"),P=require("./components/radio.cjs"),h=require("./components/region.cjs"),C=require("./components/sider.cjs"),k=require("./components/switch.cjs"),V=require("./components/time.cjs"),T=require("./components/transferAsync.cjs"),j=require("./components/treeSelect.cjs"),I=require("./components/treeSelectAsync.cjs"),w=require("./components/select.cjs"),O=require("./components/selectAsync.cjs");require("@iconify-json/tabler/icons.json");require("../posterEditor/elements/index.cjs");require("fabric");require("mime");const _=require("../../hooks/modal.cjs");require("dayjs");require("@tanstack/vue-query");require("pinia");function n(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!r.isVNode(t)}const B=r.defineComponent({name:"DuxFormEditor",props:{onSave:Function},extends:d.DuxDesignEditor,setup(t){const{t:e}=q.useI18n(),a=_.useModal(),l=r.computed(()=>[{name:"form",label:e("components.formEditor.groups.form"),icon:"i-tabler:forms"},{name:"select",label:e("components.formEditor.groups.select"),icon:"i-tabler:select"},{name:"async",label:e("components.formEditor.groups.async"),icon:"i-tabler:loader"}]),m=r.computed(()=>[N.duxFormEditorInput(e),D.duxFormEditorInputNumber(e),S.duxFormEditorAIEditor(e),C.duxFormEditorSider(e),g.duxFormEditorDate(e),V.duxFormEditorTime(e),F.duxFormEditorColor(e),y.duxFormEditorCheckbox(e),P.duxFormEditorRadio(e),k.duxFormEditorSwitch(e),v.duxFormEditorDynamicInput(e),b.duxFormEditorDynamicTags(e),w.duxFormEditorSelect(e),x.duxFormEditorCascader(e),j.duxFormEditorTreeSelect(e),h.duxFormEditorRegion(e),O.duxFormEditorSelectAsync(e),f.duxFormEditorCascaderAsync(e),I.duxFormEditorTreeSelectAsync(e),T.duxFormEditorTransferAsync(e),A.duxFormEditorMentionAsync(e)]);return()=>r.createVNode(d.DuxDesignEditor,r.mergeProps(t,{groups:l.value,components:m.value,settingPage:{component:o=>r.createVNode(E.DuxFormEditorSettingPage,o,null),default:{labelPlacement:"left"}},previewWrapper:(o,i)=>{const u=r.computed(()=>i?.value?.value?.config);return r.createVNode(p.DuxFormLayout,{labelPlacement:u.value?.labelPlacement||"left",class:"h-full"},n(o)?o:{default:()=>[o]})},actionRender:o=>{let i,u,c;return r.createVNode("div",{class:"flex flex-col gap-2"},[r.createVNode(s.NButton,{type:"primary",secondary:!0,block:!0,onClick:()=>{a.show({title:e("components.formEditor.main.actions.jsonOutput"),component:()=>Promise.resolve().then(()=>require("./json.cjs")),componentProps:{value:o?.value?.value.data||[]}})}},n(i=e("components.formEditor.main.actions.jsonOutput"))?i:{default:()=>[i]}),r.createVNode(s.NButton,{type:"info",secondary:!0,block:!0,onClick:()=>{a.show({title:e("common.preview"),component:()=>Promise.resolve().then(()=>require("./preview.cjs")),componentProps:{data:o?.value?.value.data||[],config:o?.value?.value.config||{}}})}},n(u=e("common.preview"))?u:{default:()=>[u]}),r.createVNode(s.NButton,{type:"primary",block:!0,onClick:()=>{t.onSave?.(o?.value?.value||{})}},n(c=e("components.formEditor.main.actions.save"))?c:{default:()=>[c]})])}}),null)}});exports.DuxFormEditor=B;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@duxweb/dvha-core"),f=require("naive-ui"),s=require("vue"),S=require("vue-router"),M=require("./dialog.cjs"),$=require("./drawer.cjs"),D=require("./modal.cjs");function I(o){const h=D.useModal(),i=$.useDrawer(),u=M.useDialog(),{t:n}=r.useI18n(),c=f.useMessage(),y=r.useManage(),k=S.useRouter(),v=r.useCustomMutation({onSuccess:t=>{c.success(t.message||n("common.success"))},onError:t=>{c.error(t.message||n("common.error"))}}),q=r.useDelete({onSuccess:t=>{c.success(t.message||n("common.success"))},onError:t=>{c.error(t.message||n("common.error"))}}),m=o?.path||y.getPath(),g=t=>{const a=n(t.item.title||"",{},t.item.title),l=n(t.item.label||"",{},t.item.label);if(t.item.type==="modal"){const e=t.item,d=typeof e.componentProps=="function"?e.componentProps(t.data):e.componentProps;h.show({title:a||l,component:e.component,componentProps:{id:t.id,...d},width:e.width,draggable:e.draggable!==void 0?e.draggable:!0})}if(t.item.type==="drawer"){const e=t.item,d=typeof e.componentProps=="function"?e.componentProps(t.data):e.componentProps;i.show({title:a||l,component:e.component,componentProps:{id:t.id,...d},width:e.width,maxWidth:e.maxWidth})}if(t.item.type==="confirm"){const e=t.item;u.confirm({title:a||l,content:e.content}).then(d=>{d&&e.callback?.(t.id,t.data)})}if(t.item.type==="request"){const e=t.item;u.confirm({title:a||l,content:e.content}).then(()=>{const d=typeof e.data=="function"?e.data(t.id,t.data):e.data,A=(e.method||"post").toLowerCase(),j=typeof e.path=="function"?e.path(t.id,t.data):e.path||m;v.mutate({path:j,method:A,payload:d})})}if(t.item.type==="delete"){const e=t.item;u.confirm({title:a||l,content:e.content}).then(()=>{q.mutate({id:t.id,path:typeof e.path=="function"?e.path(t.id,t.data):e.path||m})})}if(t.item.type==="link"){const e=t.item,d=typeof e.path=="function"?e.path?.(t.id,t.data):y.getRoutePath(t.id?`${e.path||m}${t.data===void 0?"":`/${t.id}`}`:e.path||m);k.push(d)}t.item.type==="callback"&&t.item.callback?.(t.id,t.data)},b=w(),x=P();return{target:g,renderTable:t=>(a,l)=>{const e={id:a[t.key||o?.key||"id"],data:a,index:l,target:g,text:t.text!==void 0?t.text:o?.text||!1,align:t.align!==void 0?t.align:o?.align||"left"};return(t.type||o?.type)==="button"?b.render({...e,action:t||o}):x.render({...e,action:t||o})},renderAction:t=>{const a={target:g,text:t.text!==void 0?t.text:o?.text||!1,align:t.align!==void 0?t.align:o?.align||"left"};return(t.type||o?.type)==="button"?b.render({...a,action:t||o}):x.render({...a,action:t||o})}}}function w(){const{t:o}=r.useI18n();return{render:i=>{const u=i.action.items?.filter(n=>!n.show||n.show?.(i.data,i.index)).map((n,c)=>s.h(f.NButton,{key:c,type:n.color||(n.type==="delete"?"error":"primary"),text:i.text,secondary:!i.text,onClick:()=>{i?.target?.({id:i.id,data:i.data,item:n})},renderIcon:n.icon?()=>s.h("div",{class:["n-icon",n.icon]}):void 0},()=>o(n.label||"",{},n.label)));return s.h("div",{class:["flex gap-2 flex-wrap items-center",i.align==="right"?"justify-end":i.align==="center"?"justify-center":"justify-start"]},u)}}}function P(){const{t:o}=r.useI18n();return{render:i=>{const u=i.action.items?.filter(n=>!n.show||n.show?.(i.data,i.index)).map((n,c)=>({label:o(n.label||"",{},n.label),key:c,icon:n.icon?()=>s.h("div",{class:["n-icon",n.icon]}):void 0,onSelect:()=>{i?.target?.({id:i.id,data:i.data,item:n})}}));return s.h(f.NDropdown,{trigger:"click",options:u,onSelect:(n,c)=>{c?.onSelect?.()}},()=>[s.h("div",{class:["flex items-center",i.align==="right"?"justify-end":i.align==="center"?"justify-center":"justify-start"]},s.h(f.NButton,{type:"default",text:i.text,secondary:!i.text,renderIcon:()=>s.h("div",{class:["n-icon","i-tabler:dots-vertical"]})}))])}}}exports.useAction=I;exports.useActionButton=w;exports.useActionDropdown=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@duxweb/dvha-core"),f=require("naive-ui"),u=require("vue"),S=require("vue-router"),M=require("./dialog.cjs"),$=require("./drawer.cjs"),D=require("./modal.cjs");function I(o){const h=D.useModal(),i=$.useDrawer(),s=M.useDialog(),{t:n}=r.useI18n(),c=f.useMessage(),g=r.useManage(),k=S.useRouter(),v=r.useCustomMutation({onSuccess:t=>{c.success(t.message||n("common.success"))},onError:t=>{c.error(t.message||n("common.error"))}}),q=r.useDelete({onSuccess:t=>{c.success(t.message||n("common.success"))},onError:t=>{c.error(t.message||n("common.error"))}}),m=o?.path||g.getPath(),y=t=>{const a=n(t.item.title||"",{},t.item.title),l=n(t.item.label||"",{},t.item.label);if(t.item.type==="modal"){const e=t.item,d=typeof e.componentProps=="function"?e.componentProps(t.data):e.componentProps;h.show({title:a||l,component:e.component,componentProps:{id:t.id,...d},width:e.width,draggable:e.draggable!==void 0?e.draggable:!0})}if(t.item.type==="drawer"){const e=t.item,d=typeof e.componentProps=="function"?e.componentProps(t.data):e.componentProps;i.show({title:a||l,component:e.component,componentProps:{id:t.id,...d},width:e.width,maxWidth:e.maxWidth})}if(t.item.type==="confirm"){const e=t.item;s.confirm({title:a||l,content:e.content}).then(d=>{d&&e.callback?.(t.id,t.data)})}if(t.item.type==="request"){const e=t.item;s.confirm({title:a||l,content:e.content}).then(()=>{const d=typeof e.data=="function"?e.data(t.id,t.data):e.data,A=(e.method||"post").toLowerCase(),j=typeof e.path=="function"?e.path(t.id,t.data):e.path||m;v.mutate({path:j,method:A,payload:d})})}if(t.item.type==="delete"){const e=t.item;s.confirm({title:a||l,content:e.content}).then(()=>{q.mutate({id:t.id,path:typeof e.path=="function"?e.path(t.id,t.data):e.path||m})})}if(t.item.type==="link"){const e=t.item,d=typeof e.path=="function"?g.getRoutePath(e.path?.(t.id,t.data)):g.getRoutePath(t.id?`${e.path||m}${t.data===void 0?"":`/${t.id}`}`:e.path||m);k.push(d)}t.item.type==="callback"&&t.item.callback?.(t.id,t.data)},b=w(),x=P();return{target:y,renderTable:t=>(a,l)=>{const e={id:a[t.key||o?.key||"id"],data:a,index:l,target:y,text:t.text!==void 0?t.text:o?.text||!1,align:t.align!==void 0?t.align:o?.align||"left"};return(t.type||o?.type)==="button"?b.render({...e,action:t||o}):x.render({...e,action:t||o})},renderAction:t=>{const a={target:y,text:t.text!==void 0?t.text:o?.text||!1,align:t.align!==void 0?t.align:o?.align||"left"};return(t.type||o?.type)==="button"?b.render({...a,action:t||o}):x.render({...a,action:t||o})}}}function w(){const{t:o}=r.useI18n();return{render:i=>{const s=i.action.items?.filter(n=>!n.show||n.show?.(i.data,i.index)).map((n,c)=>u.h(f.NButton,{key:c,type:n.color||(n.type==="delete"?"error":"primary"),text:i.text,secondary:!i.text,onClick:()=>{i?.target?.({id:i.id,data:i.data,item:n})},renderIcon:n.icon?()=>u.h("div",{class:["n-icon",n.icon]}):void 0},()=>o(n.label||"",{},n.label)));return u.h("div",{class:["flex gap-2 flex-wrap items-center",i.align==="right"?"justify-end":i.align==="center"?"justify-center":"justify-start"]},s)}}}function P(){const{t:o}=r.useI18n();return{render:i=>{const s=i.action.items?.filter(n=>!n.show||n.show?.(i.data,i.index)).map((n,c)=>({label:o(n.label||"",{},n.label),key:c,icon:n.icon?()=>u.h("div",{class:["n-icon",n.icon]}):void 0,onSelect:()=>{i?.target?.({id:i.id,data:i.data,item:n})}}));return u.h(f.NDropdown,{trigger:"click",options:s,onSelect:(n,c)=>{c?.onSelect?.()}},()=>[u.h("div",{class:["flex items-center",i.align==="right"?"justify-end":i.align==="center"?"justify-center":"justify-start"]},u.h(f.NButton,{type:"default",text:i.text,secondary:!i.text,renderIcon:()=>u.h("div",{class:["n-icon","i-tabler:dots-vertical"]})}))])}}}exports.useAction=I;exports.useActionButton=w;exports.useActionDropdown=P;
@@ -1,5 +1,5 @@
1
1
  "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=`/* layer: properties */
2
- @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*, ::before, ::after, ::backdrop{--un-from-opacity:100%;--un-divide-y-reverse:initial;--un-border-style:solid;--un-bg-opacity:100%;--un-text-opacity:100%;--un-shadow-opacity:100%;--un-divide-x-reverse:initial;--un-divide-opacity:100%;--un-border-opacity:100%;--un-ease:initial;--un-translate-x:initial;--un-translate-y:initial;--un-translate-z:initial;--un-to-opacity:100%;--un-fill-opacity:100%;--un-outline-style:solid;}}
2
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*, ::before, ::after, ::backdrop{--un-from-opacity:100%;--un-text-opacity:100%;--un-bg-opacity:100%;--un-divide-y-reverse:initial;--un-border-style:solid;--un-shadow-opacity:100%;--un-divide-x-reverse:initial;--un-divide-opacity:100%;--un-border-opacity:100%;--un-ease:initial;--un-translate-x:initial;--un-translate-y:initial;--un-translate-z:initial;--un-to-opacity:100%;--un-outline-style:solid;--un-fill-opacity:100%;}}
3
3
  @property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%;}
4
4
  @property --un-outline-style{syntax:"*";inherits:false;initial-value:solid;}
5
5
  @property --un-border-opacity{syntax:"<percentage>";inherits:false;initial-value:100%;}
@@ -1048,6 +1048,7 @@ input:where([type='button'], [type='reset'], [type='submit']),
1048
1048
  .m-302\\.2{margin:calc(var(--spacing) * 302.2);}
1049
1049
  .m14{margin:calc(var(--spacing) * 14);}
1050
1050
  .m146\\.8{margin:calc(var(--spacing) * 146.8);}
1051
+ .m18{margin:calc(var(--spacing) * 18);}
1051
1052
  .m29\\.3{margin:calc(var(--spacing) * 29.3);}
1052
1053
  .m3{margin:calc(var(--spacing) * 3);}
1053
1054
  .m5{margin:calc(var(--spacing) * 5);}
@@ -1,10 +1,10 @@
1
- import { defineComponent as m, computed as y, createVNode as e, mergeProps as v, h as f } from "vue";
2
- import { useJsonSchema as h } from "@duxweb/dvha-core";
3
- import { useVModel as A } from "@vueuse/core";
4
- import { NTable as b, NButton as c } from "naive-ui";
5
- import { VueDraggable as k } from "vue-draggable-plus";
1
+ import { defineComponent as y, computed as v, createVNode as e, mergeProps as f, h } from "vue";
2
+ import { useJsonSchema as A } from "@duxweb/dvha-core";
3
+ import { useVModel as b } from "@vueuse/core";
4
+ import { NTable as k, NButton as o } from "naive-ui";
5
+ import { VueDraggable as p } from "vue-draggable-plus";
6
6
  import { DuxBlockEmpty as g } from "../status/blockEmpty.js";
7
- const B = /* @__PURE__ */ m({
7
+ const N = /* @__PURE__ */ y({
8
8
  name: "DuxDynamicData",
9
9
  props: {
10
10
  createAction: {
@@ -27,30 +27,30 @@ const B = /* @__PURE__ */ m({
27
27
  default: []
28
28
  }
29
29
  },
30
- setup(t, {
31
- emit: o
30
+ setup(l, {
31
+ emit: i
32
32
  }) {
33
- const a = A(t, "value", o, {
33
+ const a = b(l, "value", i, {
34
34
  passive: !0,
35
- defaultValue: t.defaultValue || [],
35
+ defaultValue: l.defaultValue || [],
36
36
  deep: !0
37
37
  }), {
38
- renderAsync: i
39
- } = h(), d = (l) => {
40
- const u = a.value?.[0][l], n = [...a.value || []].map((r) => ({
38
+ renderAsync: s
39
+ } = A(), d = (t) => {
40
+ const n = a.value?.[0][t], u = [...a.value || []].map((r) => ({
41
41
  ...r,
42
- [l]: u
42
+ [t]: n
43
43
  }));
44
- a.value = [...n];
45
- }, s = y(() => {
46
- let l = t.columns?.length || 0;
47
- return (t.createAction || t.deleteAction) && (l += 1), l;
44
+ a.value = [...u];
45
+ }, m = v(() => {
46
+ let t = l.columns?.length || 0;
47
+ return (l.createAction || l.deleteAction) && (t += 1), t;
48
48
  });
49
- return () => e(k, v({
49
+ return () => e(p, f({
50
50
  modelValue: a.value
51
51
  }, {
52
- "onUpdate:modelValue": (l) => {
53
- a.value = l;
52
+ "onUpdate:modelValue": (t) => {
53
+ a.value = t;
54
54
  }
55
55
  }, {
56
56
  handle: ".sort-handle",
@@ -59,32 +59,32 @@ const B = /* @__PURE__ */ m({
59
59
  }), {
60
60
  default: () => [e("div", {
61
61
  class: "overflow-auto w-full"
62
- }, [e(b, {
62
+ }, [e(k, {
63
63
  class: "table-fixed w-full"
64
64
  }, {
65
65
  default: () => [e("thead", null, [e("tr", null, [e("th", {
66
66
  style: {
67
67
  width: "40px"
68
68
  }
69
- }, null), t.columns?.map((l, u) => e("th", {
70
- key: u,
69
+ }, null), l.columns?.map((t, n) => e("th", {
70
+ key: n,
71
71
  style: {
72
- width: `${l.width}px`
72
+ width: `${t.width}px`
73
73
  }
74
74
  }, [e("div", {
75
75
  class: "flex items-center justify-between"
76
- }, [e("div", null, [l.title]), l.copy && e("div", null, [e(c, {
76
+ }, [e("div", null, [t.title]), t.copy && e("div", null, [e(o, {
77
77
  onClick: () => {
78
- d(l.key);
78
+ d(t.key);
79
79
  },
80
80
  renderIcon: () => e("div", {
81
81
  class: "i-tabler:pencil-down t-icon"
82
82
  }, null),
83
83
  text: !0,
84
84
  type: "primary"
85
- }, null)])])])), (t.createAction || t.deleteAction) && e("th", {
85
+ }, null)])])])), (l.createAction || l.deleteAction) && e("th", {
86
86
  class: "w-15"
87
- }, [t.createAction && e(c, {
87
+ }, [l.createAction && e(o, {
88
88
  tertiary: !0,
89
89
  type: "primary",
90
90
  circle: !0,
@@ -92,26 +92,29 @@ const B = /* @__PURE__ */ m({
92
92
  class: "i-tabler:plus h-4 w-4"
93
93
  }, null),
94
94
  onClick: () => {
95
- t?.onCreate ? t.onCreate() : (a.value || (a.value = []), a.value?.push(t?.createCallback?.(a.value) || {}));
95
+ l?.onCreate ? l.onCreate() : (a.value || (a.value = []), a.value?.push(l?.createCallback?.(a.value) || {}));
96
96
  }
97
97
  }, null)])])]), e("tbody", {
98
98
  class: "sort-target"
99
- }, [a.value && a.value?.length > 0 ? a.value.map((l, u) => e("tr", {
100
- key: u
99
+ }, [a.value && a.value?.length > 0 ? a.value.map((t, n) => e("tr", {
100
+ key: n
101
101
  }, [e("td", null, [e("div", {
102
102
  class: "sort-handle i-tabler:grid-dots size-4 cursor-move"
103
- }, null)]), t.columns?.map((n, r) => e("td", {
104
- key: r
105
- }, [n.schema ? f(i({
106
- data: Array.isArray(n.schema) ? n.schema : [n.schema],
107
- context: {
108
- rowIndex: u,
109
- model: a.value,
110
- row: l
111
- }
112
- })) : n.render?.(l, u) || l[n.key]])), (t.createAction || t.deleteAction) && e("td", {
103
+ }, null)]), l.columns?.map((u, r) => {
104
+ const c = typeof u.schema == "function" ? u.schema(t, n) : u.schema;
105
+ return e("td", {
106
+ key: r
107
+ }, [u.schema ? h(s({
108
+ data: Array.isArray(c) ? c : [c],
109
+ context: {
110
+ rowIndex: n,
111
+ model: a.value,
112
+ row: t
113
+ }
114
+ })) : u.render?.(t, n) || t[u.key]]);
115
+ }), (l.createAction || l.deleteAction) && e("td", {
113
116
  class: "w-15"
114
- }, [t.deleteAction && e(c, {
117
+ }, [l.deleteAction && e(o, {
115
118
  tertiary: !0,
116
119
  type: "error",
117
120
  circle: !0,
@@ -119,15 +122,15 @@ const B = /* @__PURE__ */ m({
119
122
  class: "i-tabler:trash h-4 w-4"
120
123
  }, null),
121
124
  onClick: () => {
122
- a.value.splice(u, 1);
125
+ a.value.splice(n, 1);
123
126
  }
124
127
  }, null)])])) : e("tr", null, [e("td", {
125
- colspan: s.value
128
+ colspan: m.value
126
129
  }, [e(g, null, null)])])])]
127
130
  })])]
128
131
  });
129
132
  }
130
133
  });
131
134
  export {
132
- B as DuxDynamicData
135
+ N as DuxDynamicData
133
136
  };
@@ -1,16 +1,16 @@
1
- import { defineComponent as m, provide as f, watch as i, ref as g, createVNode as a } from "vue";
2
- import { useI18n as v } from "@duxweb/dvha-core";
3
- import d from "clsx";
4
- import { cloneDeep as x } from "lodash-es";
1
+ import { defineComponent as f, provide as g, watch as d, ref as v, createVNode as a } from "vue";
2
+ import { useI18n as x } from "@duxweb/dvha-core";
3
+ import u from "clsx";
4
+ import { cloneDeep as i } from "lodash-es";
5
5
  import { NScrollbar as b } from "naive-ui";
6
- import h from "short-unique-id";
7
- import { VueDraggable as w } from "vue-draggable-plus";
6
+ import w from "short-unique-id";
7
+ import { VueDraggable as h } from "vue-draggable-plus";
8
8
  import { DuxCard as y } from "../card/card.js";
9
- import { duxFormEditorGrid as k } from "./components/grid.js";
10
- import { useEditor as C } from "./editor/hook.js";
11
- import { DuxWidgetEditorPreview as u } from "./editor/preview.js";
12
- import { WidgetEditorSetting as D } from "./editor/setting.js";
13
- const R = /* @__PURE__ */ m({
9
+ import { duxFormEditorGrid as D } from "./components/grid.js";
10
+ import { useEditor as k } from "./editor/hook.js";
11
+ import { DuxWidgetEditorPreview as c } from "./editor/preview.js";
12
+ import { WidgetEditorSetting as C } from "./editor/setting.js";
13
+ const R = /* @__PURE__ */ f({
14
14
  name: "DuxDesignEditor",
15
15
  props: {
16
16
  data: Object,
@@ -23,46 +23,46 @@ const R = /* @__PURE__ */ m({
23
23
  },
24
24
  setup(r) {
25
25
  const {
26
- t: n
27
- } = v(), t = C({
26
+ t: o
27
+ } = x(), t = k({
28
28
  settingPage: r.settingPage
29
29
  });
30
- f("editor.use", t), i([() => r.components, () => r.groups], () => {
30
+ g("editor.use", t), d([() => r.components, () => r.groups], () => {
31
31
  t.clearGroup(), t.clearComponent(), t.addGroup({
32
32
  name: "layout",
33
- label: n("components.designEditor.layout") || "Layout",
33
+ label: o("components.designEditor.layout") || "Layout",
34
34
  icon: "i-tabler:layout"
35
35
  }), r.groups?.forEach((e) => {
36
36
  t.addGroup(e);
37
- }), t.addComponent(k(n)), r.components?.forEach((e) => {
37
+ }), t.addComponent(D(o)), r.components?.forEach((e) => {
38
38
  t.addComponent(e);
39
39
  });
40
40
  }, {
41
41
  immediate: !0,
42
42
  deep: !0
43
43
  });
44
- const l = g(), {
45
- randomUUID: s
46
- } = new h({
44
+ const l = v(), {
45
+ randomUUID: p
46
+ } = new w({
47
47
  length: 10
48
- }), p = (e) => ({
49
- key: s(),
48
+ }), m = (e) => ({
49
+ key: p(),
50
50
  name: e.name,
51
- options: x(e.settingDefault)
51
+ options: i(e.settingDefault)
52
52
  });
53
- return i(() => r.data, (e) => {
54
- const o = r.settingPage?.default || {};
55
- t.value.value = e || {
56
- config: o,
57
- data: []
58
- }, e && e.config && (t.value.value.config = {
59
- ...o,
60
- ...e.config
61
- });
53
+ return d(() => r.data, (e) => {
54
+ const n = r.settingPage?.default || {};
55
+ t.value.value = {
56
+ config: {
57
+ ...n,
58
+ ...i(e?.config || {})
59
+ },
60
+ data: i(e?.data || [])
61
+ };
62
62
  }, {
63
63
  deep: !0,
64
64
  immediate: !0
65
- }), i(() => t.value.value, (e) => {
65
+ }), d(() => t.value.value, (e) => {
66
66
  e !== r.data && r.onUpdateData?.(e);
67
67
  }, {
68
68
  deep: !0
@@ -74,15 +74,15 @@ const R = /* @__PURE__ */ m({
74
74
  class: "h-full flex flex-row text-default"
75
75
  }, [a("div", {
76
76
  class: "flex-none flex flex-col gap-2 border-r border-default bg-default p-2"
77
- }, [a(c, {
78
- title: n("components.designEditor.all") || "All",
77
+ }, [a(s, {
78
+ title: o("components.designEditor.all") || "All",
79
79
  icon: "i-tabler:hexagons",
80
80
  active: !l.value,
81
81
  onClick: () => {
82
82
  l.value = void 0;
83
83
  }
84
- }, null), t.group.value?.map((e, o) => a(c, {
85
- key: o,
84
+ }, null), t.group.value?.map((e, n) => a(s, {
85
+ key: n,
86
86
  active: l.value === e.name,
87
87
  title: e.label,
88
88
  icon: e.icon,
@@ -100,7 +100,7 @@ const R = /* @__PURE__ */ m({
100
100
  class: "flex flex-col gap-2"
101
101
  }, [a("div", {
102
102
  class: "bg-muted border border-muted rounded p-2 flex justify-center"
103
- }, [e.label]), a(w, {
103
+ }, [e.label]), a(h, {
104
104
  modelValue: e.children || [],
105
105
  animation: 150,
106
106
  group: {
@@ -109,17 +109,17 @@ const R = /* @__PURE__ */ m({
109
109
  put: !1
110
110
  },
111
111
  sort: !1,
112
- clone: p,
112
+ clone: m,
113
113
  class: "grid grid-cols-2 items-start gap-2 "
114
114
  }, {
115
- default: () => [e.children?.map((o) => a("div", {
116
- key: o.name,
115
+ default: () => [e.children?.map((n) => a("div", {
116
+ key: n.name,
117
117
  class: "border border-muted rounded-sm p-2 flex flex-col items-center gap-2 cursor-pointer hover:bg-muted edit-drag"
118
118
  }, [a("div", {
119
- class: d(["size-6", o.icon])
119
+ class: u(["size-6", n.icon])
120
120
  }, null), a("div", {
121
121
  class: "truncate whitespace-nowrap px-2 overflow-hidden"
122
- }, [o.label])]))]
122
+ }, [n.label])]))]
123
123
  })]))])]
124
124
  })]), a("div", {
125
125
  class: "flex-1 shadow-sm flex flex-col items-center p-6 overflow-auto",
@@ -129,29 +129,29 @@ const R = /* @__PURE__ */ m({
129
129
  onClick: () => {
130
130
  t.selected.value = void 0;
131
131
  }
132
- }, [r.previewWrapper ? r.previewWrapper(a(u, {
132
+ }, [r.previewWrapper ? r.previewWrapper(a(c, {
133
133
  modelValue: t.value.value?.data,
134
134
  onUpdate: (e) => t.value.value.data = e
135
- }, null), t) : a(u, {
135
+ }, null), t) : a(c, {
136
136
  modelValue: t.value.value?.data,
137
137
  onUpdate: (e) => t.value.value.data = e
138
- }, null)])]), a(D, {
138
+ }, null)])]), a(C, {
139
139
  actionRender: r.actionRender
140
140
  }, null)])]
141
141
  });
142
142
  }
143
143
  });
144
- function c({
144
+ function s({
145
145
  title: r,
146
- icon: n,
146
+ icon: o,
147
147
  active: t,
148
148
  onClick: l
149
149
  }) {
150
150
  return a("div", {
151
- class: d(["flex flex-col items-center px-3 py-2 hover:bg-primary/10 cursor-pointer rounded-sm", t ? "bg-primary/10 text-primary" : ""]),
151
+ class: u(["flex flex-col items-center px-3 py-2 hover:bg-primary/10 cursor-pointer rounded-sm", t ? "bg-primary/10 text-primary" : ""]),
152
152
  onClick: l
153
153
  }, [a("div", {
154
- class: d(["size-4", n])
154
+ class: u(["size-4", o])
155
155
  }, null), a("div", {
156
156
  class: "truncate whitespace-nowrap text-default text-sm"
157
157
  }, [r])]);
@@ -75,7 +75,7 @@ const N = /* @__PURE__ */ h({
75
75
  class: ["flex flex-col gap-1", t.value === "setting" ? "flex-none md:w-40%" : "flex-1", t.value === "page" ? "col-span-3" : ""]
76
76
  }, [l("div", {
77
77
  class: t.value === "setting" ? "flex-1 lg:flex lg:justify-end" : ""
78
- }, [s?.default?.()]), e.description && t.value === "left" && l("div", {
78
+ }, [s?.default?.()]), e.description && (t.value === "left" || t.value === "top") && l("div", {
79
79
  class: "text-sm text-muted"
80
80
  }, [e.description]), n.value && l("div", {
81
81
  class: "text-error"
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as f, toRef as b, createVNode as e } from "vue";
2
2
  import { useI18n as g, useTabStore as y, useInvalidate as S, useExtendForm as x } from "@duxweb/dvha-core";
3
- import { useMessage as h, NButton as p, NScrollbar as v } from "naive-ui";
3
+ import { useMessage as v, NButton as l, NScrollbar as h } from "naive-ui";
4
4
  import { useRouter as E } from "vue-router";
5
5
  import "@overlastic/vue";
6
6
  import { DuxCard as F } from "../card/card.js";
@@ -24,7 +24,7 @@ import "lodash-es";
24
24
  import "vue-draggable-plus";
25
25
  import "short-unique-id";
26
26
  import "aieditor";
27
- import { DuxFormLayout as C } from "./formLayout.js";
27
+ import { DuxFormLayout as P } from "./formLayout.js";
28
28
  import "vee-validate";
29
29
  import "@duxweb/dvha-naiveui";
30
30
  import "@iconify-json/tabler/icons.json";
@@ -44,9 +44,9 @@ import "unocss/preset-wind4";
44
44
  import "@vee-validate/i18n/dist/locale/en.json";
45
45
  import "@vee-validate/i18n/dist/locale/zh_CN.json";
46
46
  import "vue-command-palette";
47
- import { DuxPage as D } from "../../pages/page.js";
47
+ import { DuxPage as C } from "../../pages/page.js";
48
48
  import "../../pages/page404.js";
49
- const ht = /* @__PURE__ */ f({
49
+ const vt = /* @__PURE__ */ f({
50
50
  name: "DuxPageForm",
51
51
  props: {
52
52
  id: {
@@ -61,6 +61,10 @@ const ht = /* @__PURE__ */ f({
61
61
  description: {
62
62
  type: String
63
63
  },
64
+ labelPlacement: {
65
+ type: String,
66
+ default: "left"
67
+ },
64
68
  path: {
65
69
  type: String
66
70
  },
@@ -82,59 +86,62 @@ const ht = /* @__PURE__ */ f({
82
86
  }
83
87
  },
84
88
  setup(t, {
85
- slots: n
89
+ slots: m
86
90
  }) {
87
91
  const {
88
- t: o
89
- } = g(), s = b(t, "data", {}), a = h(), c = E(), m = y(), {
90
- invalidate: l
91
- } = S(), r = x({
92
+ t: i
93
+ } = g(), p = b(t, "data", {}), a = v(), s = E(), n = y(), {
94
+ invalidate: c
95
+ } = S(), o = x({
92
96
  id: t.id,
93
97
  path: t.path,
94
- form: s,
98
+ form: p,
95
99
  action: t.action,
96
- onError: (i) => {
97
- a.error(i.message || o("components.form.error")), t.onError?.(i);
100
+ onError: (r) => {
101
+ a.error(r.message || i("components.form.error")), t.onError?.(r);
98
102
  },
99
- onSuccess: (i) => {
100
- a.success(o("components.form.success")), t.onSuccess?.(i), !r.isEdit.value && m.current && m.delTab(m.current, (d) => c.push(d.path || "")), t.invalidate && l(t.invalidate);
103
+ onSuccess: (r) => {
104
+ a.success(i("components.form.success")), t.onSuccess?.(r), !o.isEdit.value && n.current && n.delTab(n.current, (d) => s.push(d.path || "")), t.invalidate && c(t.invalidate);
101
105
  }
102
- }), u = m.tabs.find((i) => i.path === m.current);
103
- return () => e(D, {
106
+ }), u = n.tabs.find((r) => r.path === n.current);
107
+ return () => e(C, {
104
108
  card: !1,
105
109
  scrollbar: !1
106
110
  }, {
107
111
  default: () => [e(F, {
108
- title: t?.title || u?.label || (r.isEdit.value ? o("components.form.edit") : o("components.form.create")),
112
+ title: t?.title || u?.label || (o.isEdit.value ? i("components.form.edit") : i("components.form.create")),
109
113
  description: t?.description,
110
114
  class: "h-full flex flex-col",
111
115
  contentClass: "flex-1 min-h-0",
112
116
  contentSize: "none",
113
117
  "header-bordered": !0
114
118
  }, {
115
- default: () => e(v, null, {
116
- default: () => [e(C, {
117
- "label-placement": "page"
119
+ default: () => e(h, null, {
120
+ default: () => [e(P, {
121
+ labelPlacement: t.labelPlacement,
122
+ class: "p-4"
118
123
  }, {
119
- default: () => [n?.default?.(r)]
124
+ default: () => [m?.default?.(o)]
120
125
  })]
121
126
  }),
122
127
  headerExtra: () => e("div", {
123
128
  class: "flex gap-6 items-center"
124
- }, [n?.actions?.(r), e("div", {
129
+ }, [m?.actions?.(o), e("div", {
125
130
  class: "flex gap-2"
126
- }, [e(p, {
127
- onClick: () => r.onReset()
131
+ }, [e(l, {
132
+ onClick: () => o.onReset(),
133
+ loading: o.isLoading.value
128
134
  }, {
129
- default: () => o("components.button.reset"),
135
+ default: () => i("components.button.reset"),
130
136
  icon: () => e("i", {
131
137
  class: "i-tabler:refresh"
132
138
  }, null)
133
- }), e(p, {
139
+ }), e(l, {
134
140
  type: "primary",
135
- onClick: () => r.onSubmit()
141
+ onClick: () => o.onSubmit(),
142
+ loading: o.isLoading.value
136
143
  }, {
137
- default: () => o("components.button.submit"),
144
+ default: () => i("components.button.submit"),
138
145
  icon: () => e("i", {
139
146
  class: "i-tabler:device-floppy"
140
147
  }, null)
@@ -144,5 +151,5 @@ const ht = /* @__PURE__ */ f({
144
151
  }
145
152
  });
146
153
  export {
147
- ht as DuxPageForm
154
+ vt as DuxPageForm
148
155
  };
@@ -34,32 +34,32 @@ import "vee-validate";
34
34
  import "vue-command-palette";
35
35
  import "@duxweb/dvha-naiveui";
36
36
  import "../../pages/page404.js";
37
- import { DuxDesignEditor as d } from "../designEditor/editor.js";
37
+ import { DuxDesignEditor as c } from "../designEditor/editor.js";
38
38
  import "short-unique-id";
39
39
  import "aieditor";
40
40
  import { DuxFormLayout as g } from "../form/formLayout.js";
41
+ import { DuxFormEditorSettingPage as v } from "./base/setting.js";
41
42
  import { duxFormEditorCascader as y } from "./components/cascader.js";
42
43
  import { duxFormEditorCascaderAsync as b } from "./components/cascaderAsync.js";
43
- import { duxFormEditorCheckbox as v } from "./components/checkbox.js";
44
- import { duxFormEditorColor as S } from "./components/color.js";
45
- import { duxFormEditorDate as D } from "./components/date.js";
46
- import { duxFormEditorDynamicInput as C } from "./components/dynamicInput.js";
47
- import { duxFormEditorDynamicTags as P } from "./components/dynamicTags.js";
48
- import { duxFormEditorAIEditor as k } from "./components/editor.js";
49
- import { duxFormEditorInput as A } from "./components/input.js";
50
- import { duxFormEditorInputNumber as h } from "./components/inputNumber.js";
51
- import { duxFormEditorMentionAsync as j } from "./components/mentionAsync.js";
52
- import { duxFormEditorRadio as I } from "./components/radio.js";
53
- import { duxFormEditorRegion as T } from "./components/region.js";
54
- import { duxFormEditorSider as w } from "./components/sider.js";
55
- import { duxFormEditorSwitch as N } from "./components/switch.js";
56
- import { duxFormEditorTime as O } from "./components/time.js";
57
- import { duxFormEditorTransferAsync as _ } from "./components/transferAsync.js";
58
- import { duxFormEditorTreeSelect as R } from "./components/treeSelect.js";
59
- import { duxFormEditorTreeSelectAsync as M } from "./components/treeSelectAsync.js";
60
- import { duxFormEditorSelect as V } from "./components/select.js";
61
- import { duxFormEditorSelectAsync as B } from "./components/selectAsync.js";
62
- import { DuxFormEditorSettingPage as L } from "./base/setting.js";
44
+ import { duxFormEditorCheckbox as S } from "./components/checkbox.js";
45
+ import { duxFormEditorColor as D } from "./components/color.js";
46
+ import { duxFormEditorDate as C } from "./components/date.js";
47
+ import { duxFormEditorDynamicInput as P } from "./components/dynamicInput.js";
48
+ import { duxFormEditorDynamicTags as k } from "./components/dynamicTags.js";
49
+ import { duxFormEditorAIEditor as A } from "./components/editor.js";
50
+ import { duxFormEditorInput as h } from "./components/input.js";
51
+ import { duxFormEditorInputNumber as j } from "./components/inputNumber.js";
52
+ import { duxFormEditorMentionAsync as I } from "./components/mentionAsync.js";
53
+ import { duxFormEditorRadio as T } from "./components/radio.js";
54
+ import { duxFormEditorRegion as w } from "./components/region.js";
55
+ import { duxFormEditorSider as N } from "./components/sider.js";
56
+ import { duxFormEditorSwitch as O } from "./components/switch.js";
57
+ import { duxFormEditorTime as _ } from "./components/time.js";
58
+ import { duxFormEditorTransferAsync as R } from "./components/transferAsync.js";
59
+ import { duxFormEditorTreeSelect as M } from "./components/treeSelect.js";
60
+ import { duxFormEditorTreeSelectAsync as V } from "./components/treeSelectAsync.js";
61
+ import { duxFormEditorSelect as B } from "./components/select.js";
62
+ import { duxFormEditorSelectAsync as L } from "./components/selectAsync.js";
63
63
  import "@iconify-json/tabler/icons.json";
64
64
  import "../posterEditor/elements/index.js";
65
65
  import "fabric";
@@ -76,9 +76,11 @@ const er = /* @__PURE__ */ f({
76
76
  props: {
77
77
  onSave: Function
78
78
  },
79
- extends: d,
79
+ extends: c,
80
80
  setup(m) {
81
- const c = W(), l = u(() => [{
81
+ const {
82
+ t: o
83
+ } = F(), l = W(), d = u(() => [{
82
84
  name: "form",
83
85
  label: o("components.formEditor.groups.form"),
84
86
  icon: "i-tabler:forms"
@@ -90,14 +92,12 @@ const er = /* @__PURE__ */ f({
90
92
  name: "async",
91
93
  label: o("components.formEditor.groups.async"),
92
94
  icon: "i-tabler:loader"
93
- }]), {
94
- t: o
95
- } = F(), s = u(() => [A(o), h(o), k(o), w(o), D(o), O(o), S(o), v(o), I(o), N(o), C(o), P(o), V(o), y(o), R(o), T(o), B(o), b(o), M(o), _(o), j(o)]);
96
- return () => t(d, E(m, {
97
- groups: l.value,
95
+ }]), s = u(() => [h(o), j(o), A(o), N(o), C(o), _(o), D(o), S(o), T(o), O(o), P(o), k(o), B(o), y(o), M(o), w(o), L(o), b(o), V(o), R(o), I(o)]);
96
+ return () => t(c, E(m, {
97
+ groups: d.value,
98
98
  components: s.value,
99
99
  settingPage: {
100
- component: (r) => t(L, r, null),
100
+ component: (r) => t(v, r, null),
101
101
  default: {
102
102
  labelPlacement: "left"
103
103
  }
@@ -120,7 +120,7 @@ const er = /* @__PURE__ */ f({
120
120
  secondary: !0,
121
121
  block: !0,
122
122
  onClick: () => {
123
- c.show({
123
+ l.show({
124
124
  title: o("components.formEditor.main.actions.jsonOutput"),
125
125
  component: () => import("./json.js"),
126
126
  componentProps: {
@@ -135,7 +135,7 @@ const er = /* @__PURE__ */ f({
135
135
  secondary: !0,
136
136
  block: !0,
137
137
  onClick: () => {
138
- c.show({
138
+ l.show({
139
139
  title: o("common.preview"),
140
140
  component: () => import("./preview.js"),
141
141
  componentProps: {
@@ -149,7 +149,9 @@ const er = /* @__PURE__ */ f({
149
149
  }), t(a, {
150
150
  type: "primary",
151
151
  block: !0,
152
- onClick: () => m.onSave?.(r)
152
+ onClick: () => {
153
+ m.onSave?.(r?.value?.value || {});
154
+ }
153
155
  }, p(n = o("components.formEditor.main.actions.save")) ? n : {
154
156
  default: () => [n]
155
157
  })]);
@@ -1,4 +1,4 @@
1
- import { useI18n as h, useManage as A, useCustomMutation as M, useDelete as S } from "@duxweb/dvha-core";
1
+ import { useI18n as g, useManage as A, useCustomMutation as M, useDelete as S } from "@duxweb/dvha-core";
2
2
  import { useMessage as D, NButton as b, NDropdown as C } from "naive-ui";
3
3
  import { h as l } from "vue";
4
4
  import { useRouter as I } from "vue-router";
@@ -8,7 +8,7 @@ import { useModal as B } from "./modal.js";
8
8
  function K(o) {
9
9
  const u = B(), i = $(), m = N(), {
10
10
  t: n
11
- } = h(), c = D(), g = A(), w = I(), P = M({
11
+ } = g(), c = D(), f = A(), w = I(), P = M({
12
12
  onSuccess: (t) => {
13
13
  c.success(t.message || n("common.success"));
14
14
  },
@@ -22,7 +22,7 @@ function K(o) {
22
22
  onError: (t) => {
23
23
  c.error(t.message || n("common.error"));
24
24
  }
25
- }), r = o?.path || g.getPath(), f = (t) => {
25
+ }), r = o?.path || f.getPath(), h = (t) => {
26
26
  const a = n(t.item.title || "", {}, t.item.title), s = n(t.item.label || "", {}, t.item.label);
27
27
  if (t.item.type === "modal") {
28
28
  const e = t.item, d = typeof e.componentProps == "function" ? e.componentProps(t.data) : e.componentProps;
@@ -86,19 +86,19 @@ function K(o) {
86
86
  });
87
87
  }
88
88
  if (t.item.type === "link") {
89
- const e = t.item, d = typeof e.path == "function" ? e.path?.(t.id, t.data) : g.getRoutePath(t.id ? `${e.path || r}${t.data === void 0 ? "" : `/${t.id}`}` : e.path || r);
89
+ const e = t.item, d = typeof e.path == "function" ? f.getRoutePath(e.path?.(t.id, t.data)) : f.getRoutePath(t.id ? `${e.path || r}${t.data === void 0 ? "" : `/${t.id}`}` : e.path || r);
90
90
  w.push(d);
91
91
  }
92
92
  t.item.type === "callback" && t.item.callback?.(t.id, t.data);
93
93
  }, y = E(), x = T();
94
94
  return {
95
- target: f,
95
+ target: h,
96
96
  renderTable: (t) => (a, s) => {
97
97
  const e = {
98
98
  id: a[t.key || o?.key || "id"],
99
99
  data: a,
100
100
  index: s,
101
- target: f,
101
+ target: h,
102
102
  text: t.text !== void 0 ? t.text : o?.text || !1,
103
103
  align: t.align !== void 0 ? t.align : o?.align || "left"
104
104
  };
@@ -112,7 +112,7 @@ function K(o) {
112
112
  },
113
113
  renderAction: (t) => {
114
114
  const a = {
115
- target: f,
115
+ target: h,
116
116
  text: t.text !== void 0 ? t.text : o?.text || !1,
117
117
  align: t.align !== void 0 ? t.align : o?.align || "left"
118
118
  };
@@ -129,7 +129,7 @@ function K(o) {
129
129
  function E() {
130
130
  const {
131
131
  t: o
132
- } = h();
132
+ } = g();
133
133
  return {
134
134
  render: (i) => {
135
135
  const m = i.action.items?.filter((n) => !n.show || n.show?.(i.data, i.index)).map((n, c) => l(b, {
@@ -157,7 +157,7 @@ function E() {
157
157
  function T() {
158
158
  const {
159
159
  t: o
160
- } = h();
160
+ } = g();
161
161
  return {
162
162
  render: (i) => {
163
163
  const m = i.action.items?.filter((n) => !n.show || n.show?.(i.data, i.index)).map((n, c) => ({
@@ -1,5 +1,5 @@
1
1
  const r = `/* layer: properties */
2
- @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*, ::before, ::after, ::backdrop{--un-from-opacity:100%;--un-divide-y-reverse:initial;--un-border-style:solid;--un-bg-opacity:100%;--un-text-opacity:100%;--un-shadow-opacity:100%;--un-divide-x-reverse:initial;--un-divide-opacity:100%;--un-border-opacity:100%;--un-ease:initial;--un-translate-x:initial;--un-translate-y:initial;--un-translate-z:initial;--un-to-opacity:100%;--un-fill-opacity:100%;--un-outline-style:solid;}}
2
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*, ::before, ::after, ::backdrop{--un-from-opacity:100%;--un-text-opacity:100%;--un-bg-opacity:100%;--un-divide-y-reverse:initial;--un-border-style:solid;--un-shadow-opacity:100%;--un-divide-x-reverse:initial;--un-divide-opacity:100%;--un-border-opacity:100%;--un-ease:initial;--un-translate-x:initial;--un-translate-y:initial;--un-translate-z:initial;--un-to-opacity:100%;--un-outline-style:solid;--un-fill-opacity:100%;}}
3
3
  @property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%;}
4
4
  @property --un-outline-style{syntax:"*";inherits:false;initial-value:solid;}
5
5
  @property --un-border-opacity{syntax:"<percentage>";inherits:false;initial-value:100%;}
@@ -1048,6 +1048,7 @@ input:where([type='button'], [type='reset'], [type='submit']),
1048
1048
  .m-302\\.2{margin:calc(var(--spacing) * 302.2);}
1049
1049
  .m14{margin:calc(var(--spacing) * 14);}
1050
1050
  .m146\\.8{margin:calc(var(--spacing) * 146.8);}
1051
+ .m18{margin:calc(var(--spacing) * 18);}
1051
1052
  .m29\\.3{margin:calc(var(--spacing) * 29.3);}
1052
1053
  .m3{margin:calc(var(--spacing) * 3);}
1053
1054
  .m5{margin:calc(var(--spacing) * 5);}
@@ -6,7 +6,7 @@ export interface DuxDynamicDataColumn {
6
6
  copy?: boolean;
7
7
  width?: number;
8
8
  render?: (cell: Record<string, any>, rowIndex: number) => VNode;
9
- schema?: JsonSchemaNode | JsonSchemaNode[];
9
+ schema?: JsonSchemaNode | JsonSchemaNode[] | ((cell: Record<string, any>, rowIndex: number) => JsonSchemaNode | JsonSchemaNode[]);
10
10
  }
11
11
  export declare const DuxDynamicData: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
12
12
  createAction: {
@@ -13,6 +13,10 @@ export declare const DuxPageForm: import("vue").DefineComponent<import("vue").Ex
13
13
  description: {
14
14
  type: PropType<string>;
15
15
  };
16
+ labelPlacement: {
17
+ type: PropType<"left" | "top" | "setting" | "page">;
18
+ default: string;
19
+ };
16
20
  path: {
17
21
  type: PropType<string>;
18
22
  };
@@ -45,6 +49,10 @@ export declare const DuxPageForm: import("vue").DefineComponent<import("vue").Ex
45
49
  description: {
46
50
  type: PropType<string>;
47
51
  };
52
+ labelPlacement: {
53
+ type: PropType<"left" | "top" | "setting" | "page">;
54
+ default: string;
55
+ };
48
56
  path: {
49
57
  type: PropType<string>;
50
58
  };
@@ -66,4 +74,5 @@ export declare const DuxPageForm: import("vue").DefineComponent<import("vue").Ex
66
74
  };
67
75
  }>> & Readonly<{}>, {
68
76
  size: "small" | "medium" | "large";
77
+ labelPlacement: "left" | "top" | "page" | "setting";
69
78
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@duxweb/dvha-pro",
3
3
  "type": "module",
4
- "version": "1.0.26",
4
+ "version": "1.0.27",
5
5
  "author": "DuxWeb",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -33,8 +33,8 @@
33
33
  ],
34
34
  "dependencies": {
35
35
  "@ant-design/colors": "^7.2.1",
36
- "@duxweb/dvha-core": "^1.0.26",
37
- "@duxweb/dvha-naiveui": "^1.0.26",
36
+ "@duxweb/dvha-core": "^1.0.27",
37
+ "@duxweb/dvha-naiveui": "^1.0.27",
38
38
  "@iconify-json/tabler": "^1.2.18",
39
39
  "@overlastic/vue": "^0.8.1",
40
40
  "@tanstack/vue-query": "^5.80.7",