dynamicformdjx 0.3.2 → 0.3.4

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"),s=require("naive-ui"),b=require("../index-BWQjnQQF.cjs"),k=e.defineComponent({name:"NaiDynamicInput",props:{size:{type:String},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:t=>`${Date.now()}_${t??0}`},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},modelValue:{type:Object,required:!0}},emits:{"update:modelValue":t=>!0,onReset:()=>!0,onMerge:(t,o)=>!0},setup(t,{emit:o,expose:c}){const l={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...t.btnConfigs},i={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,...t.configs},y={arraySplitSymbol:",",...t.dyListConfigs},v=t.size,d=e.ref(b.tranArr(t.modelValue,t.randomFun,y.arraySplitSymbol)),N=e.ref(null);return e.watch(d,n=>{if(!t.isController)return;const m=b.resetObj(n,y.arraySplitSymbol);o("update:modelValue",m),o("onMerge",m,e.toRaw(d.value))},{deep:!0}),c({onSet:n=>{d.value=b.tranArr(n??t.modelValue,t.randomFun,y.arraySplitSymbol)},getResult:(n="res")=>n==="ori"?e.toRaw(d.value):b.resetObj(d.value,y.arraySplitSymbol)}),()=>e.createVNode("div",{class:t.dyCls??`dynamicForm ${v}`},[e.createVNode("div",{class:`dyFormList ${d.value.length?"":"noList"}`,ref:N,style:{maxHeight:i.maxHeight}},[d.value.map((n,m,a)=>e.createVNode("div",{class:"dItem",key:n.rId},[e.createVNode("div",{class:"input"},[e.createVNode(s.NInput,{size:v,value:n.key,class:"key",onInput:r=>{n.key=r}},null),e.createTextVNode(":"),e.createVNode(s.NInput,{size:v,value:n.value,class:"value",onInput:r=>{i.allowFilter&&n.isNumber?n.value=b.formatNumberInput(r,n.isArray,y.arraySplitSymbol):n.value=r}},{prefix:()=>e.createVNode(e.Fragment,null,[e.createVNode(s.NButton,{type:n.isArray?"success":"default",size:"tiny",onClick:()=>{n.isArray=!n.isArray}},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),e.createVNode(s.NButton,{type:n.isNumber?"success":"default",size:"tiny",onClick:()=>{n.isNumber=!n.isNumber}},{default:()=>[e.createTextVNode("Number")]})])})]),e.createVNode("div",{class:"btn"},[e.createVNode(s.NButton,{type:"success",size:v,disabled:m!==a.length-1,onClick:()=>{d.value.push({rId:t.randomFun(),key:"",value:""}),i.autoScroll&&e.nextTick(()=>{const r=N.value;r?.scrollTo({top:r.scrollHeight,behavior:"smooth"})})}},{default:()=>[e.createTextVNode("+")]}),e.createVNode(s.NButton,{size:v,type:"error",onClick:()=>{d.value=d.value.filter(r=>r.rId!==n.rId)}},{default:()=>[e.createTextVNode("-")]})])]))]),e.createVNode("div",{class:`control ${d.value.length?"":"noList"}`},[!d.value.length&&e.createVNode(s.NButton,{size:v,type:"success",onClick:()=>{d.value.push({rId:t.randomFun(),key:"",value:""})}},{default:()=>[l.newTxt]}),!t.isController&&e.createVNode(e.Fragment,null,[!i.hideReset&&e.createVNode(s.NButton,{size:v,type:"default",onClick:()=>{d.value=b.tranArr(t.modelValue,t.randomFun,y.arraySplitSymbol),o("onReset")}},{default:()=>[l.resetTxt]}),e.createVNode(s.NButton,{size:v,type:"info",onClick:()=>{d.value.sort((m,a)=>+m.rId-+a.rId);const n=b.resetObj(d.value,y.arraySplitSymbol);o("update:modelValue",n),o("onMerge",n,e.toRaw(d.value)),d.value=b.tranArr(n,t.randomFun,y.arraySplitSymbol)}},{default:()=>[l.mergeTxt]})])])])}});function F(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const I=e.defineComponent({name:"NaiveUiDynamicCascadeInput",props:{modelValue:{type:Object,required:!0},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:t=>`${Date.now()}_${t??0}`},depth:{type:Number,default:3},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},newChildTxt:{type:Function,default:t=>`添加 '${t.key}' 子项`}},emits:{"update:modelValue":t=>!0,onReset:()=>!0,onMerge:(t,o)=>!0},setup(t,{emit:o,expose:c}){const l={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...t.btnConfigs},i={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,showPad:!0,retractLen:0,borderColors:[],...t.configs},y={arraySplitSymbol:",",...t.dyListConfigs},v=a=>["string","number"].includes(a),d=a=>Object.keys(a).map((r,f)=>{let u=a[r];const g=Array.isArray(u),C=g?u.every(h=>typeof h=="number"):typeof u=="number",V=u===null;return v(typeof u)&&(u=a[r]),V&&(u=""),{rId:t.randomFun(f),key:r,value:Object.prototype.toString.call(u)==="[object Object]"?d(a[r]):g?u.join(y.arraySplitSymbol):u,isArray:g||void 0,isNumber:C||void 0}}),N=a=>a.reduce((r,f)=>{const u=f.value;return f.key.trim().length&&(r[f.key]=Array.isArray(u)?N(u):b.parseValue(f.value,f.isArray,f.isNumber,y.arraySplitSymbol)),r},{}),n=e.ref(d(t.modelValue)),m=(a,r=1,f)=>e.createVNode("div",{class:[`depth-${r}`,i.showBorder?"":"no-border",i.showPad?"":"no-pad"],style:{"--depth":r,["--c"+[r]]:b.saferRepairColor(i.borderColors,r)}},[a.map((u,g,C)=>{const V=Array.isArray(u.value),h=v(typeof u.value);return e.createVNode("div",{class:"dItem",key:u.rId,style:{marginLeft:r>1?`${r*i.retractLen}px`:"0"}},[e.createVNode("div",{class:"input"},[!V&&e.createVNode(e.Fragment,null,[e.createVNode(s.NInput,{value:u.key,class:"key",onInput:p=>u.key=p},null),e.createTextVNode(":")]),e.createVNode(s.NInput,{class:`value ${V?"isKey":""}`,value:h?u.value:u.key,onInput:p=>{if(V){u.key=p;return}i.allowFilter&&u.isNumber?u.value=b.formatNumberInput(p,u.isArray,y.arraySplitSymbol):u.value=p}},{prefix:Array.isArray(u.value)?void 0:()=>e.createVNode(e.Fragment,null,[e.createVNode(s.NButton,{type:u.isArray?"success":"default",size:"tiny",onClick:()=>{u.isArray=!u.isArray}},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),e.createVNode(s.NButton,{type:u.isNumber?"success":"default",size:"tiny",onClick:()=>{u.isNumber=!u.isNumber}},{default:()=>[e.createTextVNode("Number")]})]),suffix:()=>{let p;return r<t.depth?!V&&e.createVNode(s.NButton,{type:"success",size:"tiny",onClick:()=>{h&&(u.value=[],u.isArray=void 0),u.value.push({rId:t.randomFun(),key:"",value:""})}},F(p=t.newChildTxt(u))?p:{default:()=>[p]}):null}})]),e.createVNode("div",{class:"btn"},[e.createVNode(s.NButton,{type:"success",disabled:g!==C.length-1,onClick:()=>{a.push({rId:t.randomFun(),key:"",value:""})}},{default:()=>[e.createTextVNode("+")]}),e.createVNode(s.NButton,{type:"error",onClick:()=>{if(a.splice(g,1),a.length<1){if(f===void 0)return N([]);const p=n.value.findIndex(S=>S.rId===f?.rId);r<1?n.value.splice(p,1,{...f,value:""}):f.value=""}}},{default:()=>[e.createTextVNode("-")]})]),Array.isArray(u.value)&&m(u.value,r+1,u)])})]);return e.watch(n,a=>{if(!t.isController)return;const r=N(a);o("update:modelValue",r),o("onMerge",r,e.toRaw(n.value))},{deep:!0}),c({onSet:a=>{n.value=d(a??t.modelValue)},getResult:(a="res")=>a==="ori"?e.toRaw(n.value):N(n.value)}),()=>e.createVNode("div",{class:t.dyCls??"dynamicCascadeForm"},[e.createVNode("div",{class:"dyFormList",style:{maxHeight:i.maxHeight}},[m(n.value)]),e.createVNode("div",{class:"control"},[!n.value.length&&e.createVNode(s.NButton,{type:"success",onClick:()=>{n.value.push({rId:t.randomFun(),key:"",value:""})}},{default:()=>[l.newTxt]}),!t.isController&&e.createVNode(e.Fragment,null,[!i.hideReset&&e.createVNode(s.NButton,{type:"default",onClick:()=>{n.value=d(t.modelValue),o("onReset")}},{default:()=>[l.resetTxt]}),e.createVNode(s.NButton,{type:"info",onClick:()=>{const a=N(n.value);o("update:modelValue",a),o("onMerge",a,e.toRaw(n.value)),n.value=d(a)}},{default:()=>[l.mergeTxt]})])])])}}),T=e.defineComponent({name:"NaiDynamicForm",props:{formConfig:{type:Object,default:()=>({labelPlacement:"left",size:"medium"})},gridConfig:{type:Object,default:()=>({responsive:"screen",cols:"xs:1 s:2 m:3 l:3 xl:4 2xl:4",xGap:10})},rules:{type:Object},preset:{type:String,default:"fullRow",validator:t=>["fullRow","grid"].includes(t)?!0:(console.error("preset value must be `fullRow` or `grid`, the default value is `fullRow`"),!1)},items:{type:Array,require:!0}},setup(t,{emit:o,expose:c}){const l=e.ref(null),i=e.computed(()=>(t.items??[]).filter(m=>!m.hidden)),y=e.computed(()=>i.value?i.value.reduce((m,a)=>(m[a.key]=a.value.value,m),{}):{}),v=e.computed(()=>({...i.value?.reduce((a,r)=>{let f=r.rule;return r.required&&!r.rule&&(f={required:!0,message:`${r.label}不能为空`,trigger:["blur"]}),a[r.key]=f,a},{}),...t.rules})),d=e.computed(()=>[...i.value].sort((a,r)=>{const f=a.sort??1/0,u=r.sort??1/0;return Number(f)-Number(u)}));function N(m=null){i.value&&i.value.forEach(a=>{a.reset?a.reset(a):a.value.value=m})}function n(){return new Promise((m,a)=>{l.value?.validate(r=>{r?a(r):m(y.value)})})}if(c({reset:N,validator:n,getResult:(m="res")=>m==="ori"?i.value:y.value}),!t.items)throw new Error("prop items must be not null");return()=>e.createVNode("div",{class:"naiDynamicForm"},[e.createVNode(s.NForm,e.mergeProps({ref:l},t.formConfig,{model:y.value,rules:v.value}),{default(){const m=d.value;return t.preset==="grid"?e.h(s.NGrid,{...t.gridConfig},{default:()=>m?.map(a=>e.h(s.NFormItemGridItem,{label:a.label,path:a.path||a.key},{default:x(a)}))}):m?.map(a=>e.h(s.NFormItem,{label:a.label,path:a.path||a.key},{default:x(a)}))}})])}});function x(t){return function(){return t.render2?t.render2(t):null}}function R(t,o={},c){return e.h(s.NInput,{...c,value:t.value,onUpdateValue:l=>{t.value=l,c?.onChange?.(l,c)},...o})}function A(t,o,c={},l){return e.h(s.NSelect,{...l,value:t.value,options:o,onUpdateValue:i=>{t.value=i,l?.onChange?.(i,l,o)},...c})}function w(t,o,c={},l,i){const{value:y,labelField:v,valueField:d,...N}=l,n=v??"label",m=d??"value",a=N.options??o;return e.createVNode(s.NPopselect,{...N,value:t.value,onUpdateValue:r=>{t.value=r,l?.onChange?.(r,l,a)},options:a.map(r=>({...r,label:r[n],value:r[m]})),...c},{default:()=>i??e.createVNode(s.NButton,null,{default:()=>t.value||"请选择"})})}function j(t,o,c={},l){const{valueField:i="value",...y}=l;return e.h(s.NTreeSelect,{...y,value:t.value,options:o,onUpdateValue:v=>{t.value=v,l?.onChange?.(v,l,o)},keyField:i,...c})}function B(t,o,c={},l){return e.h(s.NRadioGroup,{...l,value:t.value,onUpdateValue:i=>{t.value=i,l?.onChange?.(i,l,o)},...c},{default:()=>(l?.options??o).map(y=>{const v=l,d=y[v?.labelField??"label"],N=y[v?.valueField??"value"];return e.h(s.NRadio,{...y,label:d,value:N},{default:()=>y.label})})})}function O(t,o,c={},l){return e.createVNode(s.NRadioGroup,{...l,value:t.value,onUpdateValue:i=>{t.value=i,l?.onChange?.(i,l,o)},...c},{default:()=>(l?.options??o).map(y=>{const v=l,d=y[v?.labelField??"label"],N=y[v?.valueField??"value"];return e.createVNode(s.NRadioButton,{...y,label:d,value:N},{default:()=>y.label})})})}function P(t,o,c={},l){return e.h(s.NCheckboxGroup,{...l,value:t.value,onUpdateValue:i=>{t.value=i,l?.onChange?.(i,l,o)},...c},{default:()=>e.h(s.NSpace,{itemStyle:"display: flex"},{default:()=>(l?.options??o).map(y=>{const v=l,d=y[v?.labelField??"label"],N=y[v?.valueField??"value"];return e.h(s.NCheckbox,{value:N,label:d})})})})}function z(t,o={},c){return e.h(s.NSwitch,{...c,value:t.value,onUpdateValue:l=>{t.value=l,c?.onChange?.(l,c)},...o})}function D(t,o={},c){return e.h(s.NDatePicker,{...c,value:t.value,onUpdateValue:l=>{t.value=l,c?.onChange?.(l,c)},...o})}function G(t,o={},c){return e.h(s.NTimePicker,{...c,value:t.value,onUpdateValue:l=>{t.value=l,c?.onChange?.(l,c)},...o})}exports.NaiDynamicCascadeInput=I;exports.NaiDynamicForm=T;exports.NaiDynamicInput=k;exports.renderCheckboxGroup=P;exports.renderDatePicker=D;exports.renderInput=R;exports.renderPopSelect=w;exports.renderRadioButtonGroup=O;exports.renderRadioGroup=B;exports.renderSelect=A;exports.renderSwitch=z;exports.renderTimePicker=G;exports.renderTreeSelect=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),i=require("naive-ui"),b=require("../index-CA3F2Lxo.cjs"),O=e.defineComponent({name:"NaiDynamicInput",props:{size:{type:String},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:r=>`${Date.now()}_${r??0}`},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},modelValue:{type:Object,required:!0}},emits:{"update:modelValue":r=>!0,onReset:()=>!0,onMerge:(r,d)=>!0},setup(r,{emit:d,expose:c}){const n={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...r.btnConfigs},t={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,...r.configs},s={arraySplitSymbol:",",...r.dyListConfigs},v=r.size,y=e.ref(b.tranArr(r.modelValue,r.randomFun,s.arraySplitSymbol)),p=e.ref(null);return e.watch(y,u=>{if(!r.isController)return;const m=b.resetObj(u,s.arraySplitSymbol);d("update:modelValue",m),d("onMerge",m,e.toRaw(y.value))},{deep:!0}),c({onSet:u=>{y.value=b.tranArr(u??r.modelValue,r.randomFun,s.arraySplitSymbol)},getResult:(u="res")=>u==="ori"?e.toRaw(y.value):b.resetObj(y.value,s.arraySplitSymbol)}),()=>e.createVNode("div",{class:r.dyCls??`dynamicForm ${v}`},[e.createVNode("div",{class:`dyFormList ${y.value.length?"":"noList"}`,ref:p,style:{maxHeight:t.maxHeight}},[y.value.map((u,m,a)=>e.createVNode("div",{class:"dItem",key:u.rId},[e.createVNode("div",{class:"input"},[e.createVNode(i.NInput,{size:v,value:u.key,class:"key",onInput:l=>{u.key=l}},null),e.createTextVNode(":"),e.createVNode(i.NInput,{size:v,value:u.value,class:"value",onInput:l=>{t.allowFilter&&u.isNumber?u.value=b.formatNumberInput(l,u.isArray,s.arraySplitSymbol):u.value=l}},{prefix:()=>e.createVNode(e.Fragment,null,[e.createVNode(i.NButton,{type:u.isArray?"success":"default",size:"tiny",onClick:()=>{u.isArray=!u.isArray}},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),e.createVNode(i.NButton,{type:u.isNumber?"success":"default",size:"tiny",onClick:()=>{u.isNumber=!u.isNumber}},{default:()=>[e.createTextVNode("Number")]})])})]),e.createVNode("div",{class:"btn"},[e.createVNode(i.NButton,{type:"success",size:v,disabled:m!==a.length-1,onClick:()=>{y.value.push({rId:r.randomFun(),key:"",value:""}),t.autoScroll&&e.nextTick(()=>{const l=p.value;l?.scrollTo({top:l.scrollHeight,behavior:"smooth"})})}},{default:()=>[e.createTextVNode("+")]}),e.createVNode(i.NButton,{size:v,type:"error",onClick:()=>{y.value=y.value.filter(l=>l.rId!==u.rId)}},{default:()=>[e.createTextVNode("-")]})])]))]),e.createVNode("div",{class:`control ${y.value.length?"":"noList"}`},[!y.value.length&&e.createVNode(i.NButton,{size:v,type:"success",onClick:()=>{y.value.push({rId:r.randomFun(),key:"",value:""})}},{default:()=>[n.newTxt]}),!r.isController&&e.createVNode(e.Fragment,null,[!t.hideReset&&e.createVNode(i.NButton,{size:v,type:"default",onClick:()=>{y.value=b.tranArr(r.modelValue,r.randomFun,s.arraySplitSymbol),d("onReset")}},{default:()=>[n.resetTxt]}),e.createVNode(i.NButton,{size:v,type:"info",onClick:()=>{y.value.sort((m,a)=>+m.rId-+a.rId);const u=b.resetObj(y.value,s.arraySplitSymbol);d("update:modelValue",u),d("onMerge",u,e.toRaw(y.value)),y.value=b.tranArr(u,r.randomFun,s.arraySplitSymbol)}},{default:()=>[n.mergeTxt]})])])])}});function D(r){return typeof r=="function"||Object.prototype.toString.call(r)==="[object Object]"&&!e.isVNode(r)}const z=e.defineComponent({name:"NaiveUiDynamicCascadeInput",props:{modelValue:{type:Object,required:!0},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:r=>`${Date.now()}_${r??0}`},depth:{type:Number,default:3},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},newChildTxt:{type:Function,default:r=>`添加 '${r.key}' 子项`}},emits:{"update:modelValue":r=>!0,onReset:()=>!0,onMerge:(r,d)=>!0},setup(r,{emit:d,expose:c}){const n={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...r.btnConfigs},t={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,showPad:!0,retractLen:0,borderColors:[],...r.configs},s={arraySplitSymbol:",",...r.dyListConfigs},v=a=>["string","number"].includes(a),y=a=>Object.keys(a).map((l,f)=>{let o=a[l];const g=Array.isArray(o),C=g?o.every(V=>typeof V=="number"):typeof o=="number",h=o===null;return v(typeof o)&&(o=a[l]),h&&(o=""),{rId:r.randomFun(f),key:l,value:Object.prototype.toString.call(o)==="[object Object]"?y(a[l]):g?o.join(s.arraySplitSymbol):o,isArray:g||void 0,isNumber:C||void 0}}),p=a=>a.reduce((l,f)=>{const o=f.value;return f.key.trim().length&&(l[f.key]=Array.isArray(o)?p(o):b.parseValue(f.value,f.isArray,f.isNumber,s.arraySplitSymbol)),l},{}),u=e.ref(y(r.modelValue)),m=(a,l=1,f)=>e.createVNode("div",{class:[`depth-${l}`,t.showBorder?"":"no-border",t.showPad?"":"no-pad"],style:{"--depth":l,["--c"+[l]]:b.saferRepairColor(t.borderColors,l)}},[a.map((o,g,C)=>{const h=Array.isArray(o.value),V=v(typeof o.value);return e.createVNode("div",{class:"dItem",key:o.rId,style:{marginLeft:l>1?`${l*t.retractLen}px`:"0"}},[e.createVNode("div",{class:"input"},[!h&&e.createVNode(e.Fragment,null,[e.createVNode(i.NInput,{value:o.key,class:"key",onInput:N=>o.key=N},null),e.createTextVNode(":")]),e.createVNode(i.NInput,{class:`value ${h?"isKey":""}`,value:V?o.value:o.key,onInput:N=>{if(h){o.key=N;return}t.allowFilter&&o.isNumber?o.value=b.formatNumberInput(N,o.isArray,s.arraySplitSymbol):o.value=N}},{prefix:Array.isArray(o.value)?void 0:()=>e.createVNode(e.Fragment,null,[e.createVNode(i.NButton,{type:o.isArray?"success":"default",size:"tiny",onClick:()=>{o.isArray=!o.isArray}},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),e.createVNode(i.NButton,{type:o.isNumber?"success":"default",size:"tiny",onClick:()=>{o.isNumber=!o.isNumber}},{default:()=>[e.createTextVNode("Number")]})]),suffix:()=>{let N;return l<r.depth?!h&&e.createVNode(i.NButton,{type:"success",size:"tiny",onClick:()=>{V&&(o.value=[],o.isArray=void 0),o.value.push({rId:r.randomFun(),key:"",value:""})}},D(N=r.newChildTxt(o))?N:{default:()=>[N]}):null}})]),e.createVNode("div",{class:"btn"},[e.createVNode(i.NButton,{type:"success",disabled:g!==C.length-1,onClick:()=>{a.push({rId:r.randomFun(),key:"",value:""})}},{default:()=>[e.createTextVNode("+")]}),e.createVNode(i.NButton,{type:"error",onClick:()=>{if(a.splice(g,1),a.length<1){if(f===void 0)return p([]);const N=u.value.findIndex(j=>j.rId===f?.rId);l<1?u.value.splice(N,1,{...f,value:""}):f.value=""}}},{default:()=>[e.createTextVNode("-")]})]),Array.isArray(o.value)&&m(o.value,l+1,o)])})]);return e.watch(u,a=>{if(!r.isController)return;const l=p(a);d("update:modelValue",l),d("onMerge",l,e.toRaw(u.value))},{deep:!0}),c({onSet:a=>{u.value=y(a??r.modelValue)},getResult:(a="res")=>a==="ori"?e.toRaw(u.value):p(u.value)}),()=>e.createVNode("div",{class:r.dyCls??"dynamicCascadeForm"},[e.createVNode("div",{class:"dyFormList",style:{maxHeight:t.maxHeight}},[m(u.value)]),e.createVNode("div",{class:"control"},[!u.value.length&&e.createVNode(i.NButton,{type:"success",onClick:()=>{u.value.push({rId:r.randomFun(),key:"",value:""})}},{default:()=>[n.newTxt]}),!r.isController&&e.createVNode(e.Fragment,null,[!t.hideReset&&e.createVNode(i.NButton,{type:"default",onClick:()=>{u.value=y(r.modelValue),d("onReset")}},{default:()=>[n.resetTxt]}),e.createVNode(i.NButton,{type:"info",onClick:()=>{const a=p(u.value);d("update:modelValue",a),d("onMerge",a,e.toRaw(u.value)),u.value=y(a)}},{default:()=>[n.mergeTxt]})])])])}}),G=e.defineComponent({name:"NaiDynamicForm",props:{formConfig:{type:Object,default:()=>({labelPlacement:"left",size:"medium"})},gridConfig:{type:Object,default:()=>({responsive:"screen",cols:"xs:1 s:2 m:3 l:3 xl:4 2xl:4",xGap:10})},rules:{type:Object},preset:{type:String,default:"fullRow",validator:r=>["fullRow","grid"].includes(r)?!0:(console.error("preset value must be `fullRow` or `grid`, the default value is `fullRow`"),!1)},items:{type:Array,require:!0}},setup(r,{emit:d,expose:c}){const n=e.ref(null),t=e.computed(()=>(r.items??[]).filter(m=>!m.hidden)),s=e.computed(()=>t.value?t.value.reduce((m,a)=>(m[a.key]=a.value.value,m),{}):{}),v=e.computed(()=>({...t.value?.reduce((a,l)=>{let f=l.rule;return l.required&&!l.rule&&(f={required:!0,message:`${l.label}不能为空`,trigger:["blur"]}),a[l.key]=f,a},{}),...r.rules})),y=e.computed(()=>[...t.value].sort((a,l)=>{const f=a.sort??1/0,o=l.sort??1/0;return Number(f)-Number(o)}));function p(m=null){t.value&&t.value.forEach(a=>{a.reset?a.reset(a):a.value.value=m})}function u(){return new Promise((m,a)=>{n.value?.validate(l=>{l?a(l):m(s.value)})})}if(c({reset:p,validator:u,getResult:(m="res")=>m==="ori"?t.value:s.value}),!r.items)throw new Error("prop items must be not null");return()=>e.createVNode("div",{class:"naiDynamicForm"},[e.createVNode(i.NForm,e.mergeProps({ref:n},r.formConfig,{model:s.value,rules:v.value}),{default(){const m=y.value;return r.preset==="grid"?e.h(i.NGrid,{...r.gridConfig},{default:()=>m?.map(a=>e.h(i.NFormItemGridItem,{label:a.label,path:a.path||a.key},{default:S(a)}))}):m?.map(a=>e.h(i.NFormItem,{label:a.label,path:a.path||a.key},{default:S(a)}))}})])}});function S(r){return function(){return r.render2?r.render2(r):null}}function k(r,d={},c){return e.h(i.NInput,{...c,value:r.value,onUpdateValue:n=>{r.value=n,c?.onChange?.(n,c)},...d})}function x(r,d,c={},n){return e.h(i.NSelect,{...n,value:r.value,options:d,onUpdateValue:t=>{r.value=t,n?.onChange?.(t,n,d)},...c})}function F(r,d,c={},n,t){const{value:s,labelField:v,valueField:y,...p}=n,u=v??"label",m=y??"value",a=p.options??d;return e.createVNode(i.NPopselect,{...p,value:r.value,onUpdateValue:l=>{r.value=l,n?.onChange?.(l,n,a)},options:a.map(l=>({...l,label:l[u],value:l[m]})),...c},{default:()=>t??e.createVNode(i.NButton,null,{default:()=>r.value||"请选择"})})}function I(r,d,c={},n){const{valueField:t="value",...s}=n;return e.h(i.NTreeSelect,{...s,value:r.value,options:d,onUpdateValue:v=>{r.value=v,n?.onChange?.(v,n,d)},keyField:t,...c})}function T(r,d,c={},n){return e.h(i.NRadioGroup,{...n,value:r.value,onUpdateValue:t=>{r.value=t,n?.onChange?.(t,n,d)},...c},{default:()=>(n?.options??d).map(s=>{const v=n,y=s[v?.labelField??"label"],p=s[v?.valueField??"value"];return e.h(i.NRadio,{...s,label:y,value:p},{default:()=>s.label})})})}function R(r,d,c={},n){return e.createVNode(i.NRadioGroup,{...n,value:r.value,onUpdateValue:t=>{r.value=t,n?.onChange?.(t,n,d)},...c},{default:()=>(n?.options??d).map(s=>{const v=n,y=s[v?.labelField??"label"],p=s[v?.valueField??"value"];return e.createVNode(i.NRadioButton,{...s,label:y,value:p},{default:()=>s.label})})})}function A(r,d,c={},n){return e.h(i.NCheckboxGroup,{...n,value:r.value,onUpdateValue:t=>{r.value=t,n?.onChange?.(t,n,d)},...c},{default:()=>e.h(i.NSpace,{itemStyle:"display: flex"},{default:()=>(n?.options??d).map(s=>{const v=n,y=s[v?.labelField??"label"],p=s[v?.valueField??"value"];return e.h(i.NCheckbox,{value:p,label:y})})})})}function P(r,d={},c){return e.h(i.NSwitch,{...c,value:r.value,onUpdateValue:n=>{r.value=n,c?.onChange?.(n,c)},...d})}function w(r,d={},c){return e.h(i.NDatePicker,{...c,value:r.value,onUpdateValue:n=>{r.value=n,c?.onChange?.(n,c)},...d})}function B(r,d={},c){return e.h(i.NTimePicker,{...c,value:r.value,onUpdateValue:n=>{r.value=n,c?.onChange?.(n,c)},...d})}function $(r,d=!0){const c={renderInput:t=>k(t.value,t.renderProps??{},t),renderSelect:t=>x(t.value,t.options??[],t.renderProps??{},t),renderPopSelect:t=>F(t.value,t.options??[],t.renderProps??{},t),renderTreeSelect:t=>I(t.value,t.options??[],t.renderProps??{},t),renderRadioGroup:t=>T(t.value,t.options??[],t.renderProps??{},t),renderRadioButtonGroup:t=>R(t.value,t.options??[],t.renderProps??{},t),renderCheckboxGroup:t=>A(t.value,t.options??[],t.renderProps??{},t),renderSwitch:t=>P(t.value,t.renderProps??{},t),renderDatePicker:t=>w(t.value,t.renderProps??{},t),renderTimePicker:t=>B(t.value,t.renderProps??{},t)};return r.map(t=>{const s=t;if(s.value=b.ensureRef(t.value),typeof t.render2=="function")s.render2=t.render2;else if(t.renderType){const v=c[t.renderType];v?s.render2=()=>v(s):console.warn(`[useDecorateForm] unknown renderType: ${t.renderType}`)}else s.render2=()=>c.renderInput(s);return d?e.shallowReactive(s):s})}exports.NaiDynamicCascadeInput=z;exports.NaiDynamicForm=G;exports.NaiDynamicInput=O;exports.renderCheckboxGroup=A;exports.renderDatePicker=w;exports.renderInput=k;exports.renderPopSelect=F;exports.renderRadioButtonGroup=R;exports.renderRadioGroup=T;exports.renderSelect=x;exports.renderSwitch=P;exports.renderTimePicker=B;exports.renderTreeSelect=I;exports.useDecorateForm=$;
@@ -3,6 +3,7 @@ import { default as NaiDynamicCascadeInput } from './NaiDynamicCascadeInput';
3
3
  import { default as NaiDynamicForm } from './NaiDynamicForm';
4
4
  import { ExposeDyFType, ExposeType } from '../types';
5
5
  export * from './hooks/renderForm';
6
+ export * from './hooks/decorateForm';
6
7
  export type naiDynamicInputRef = InstanceType<typeof NaiDynamicInput> & ExposeType;
7
8
  export type naiDynamicCascadeInputRef = InstanceType<typeof NaiDynamicCascadeInput> & ExposeType;
8
9
  export type naiDynamicFormRef = InstanceType<typeof NaiDynamicForm> & ExposeDyFType;