dynamicformdjx 0.4.1 → 0.4.3

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,5 +1,5 @@
1
- import { PropType } from 'vue';
2
- import { ValueType, DyRandomFun, DyBtnConfig, DyListConfig, DyCasConfig, DyCasFormItem } from '../types';
1
+ import { PropType, SlotsType } from 'vue';
2
+ import { ValueType, DyRandomFun, DyBtnConfig, DyListConfig, DyCasConfig, DyCasFormItem, DynamicCasInputSlots } from '../types';
3
3
  declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
4
  modelValue: {
5
5
  type: PropType<ValueType>;
@@ -77,5 +77,5 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
77
77
  randomFun: DyRandomFun;
78
78
  depth: number;
79
79
  newChildTxt: (it: DyCasFormItem) => string;
80
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
80
+ }, SlotsType<DynamicCasInputSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
81
81
  export default _default;
@@ -1,6 +1,6 @@
1
- import { PropType } from 'vue';
1
+ import { SlotsType, PropType } from 'vue';
2
2
  import { Size } from 'naive-ui/es/input/src/interface';
3
- import { ValueType, DyRandomFun, DyBtnConfig, DyListConfig, DyConfig, DyCFormItem } from '../types';
3
+ import { ValueType, DyRandomFun, DyBtnConfig, DyListConfig, DyConfig, DyCFormItem, DynamicInputSlots } from '../types';
4
4
  declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
5
5
  size: {
6
6
  type: PropType<Size>;
@@ -66,5 +66,5 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
66
66
  }>, {
67
67
  isController: boolean;
68
68
  randomFun: DyRandomFun;
69
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
69
+ }, SlotsType<DynamicInputSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
70
70
  export default _default;
@@ -1,9 +1,12 @@
1
- import { RadioProps, CheckboxGroupProps, CheckboxProps, DatePickerProps, InputProps, PopselectProps, RadioButtonProps, RadioGroupProps, SelectOption, SelectProps, SwitchProps, TimePickerProps, TreeSelectProps } from 'naive-ui';
1
+ import { DynamicTagsProps, RadioProps, CheckboxGroupProps, CheckboxProps, DatePickerProps, InputProps, PopselectProps, RadioButtonProps, RadioGroupProps, SelectOption, SelectProps, SwitchProps, TimePickerProps, TreeSelectProps } from 'naive-ui';
2
2
  import { Value as DatePickerValue } from 'naive-ui/lib/date-picker/src/interface';
3
3
  import { SelectGroupOption, Value as SelectValue } from 'naive-ui/lib/select/src/interface';
4
4
  import { TreeSelectOption, Value } from 'naive-ui/lib/tree-select/src/interface';
5
5
  import { AllowedComponentProps, Ref, VNode } from 'vue';
6
6
  import { DyFormItem } from '../../types/form';
7
+ import { DynamicTagsOption } from 'naive-ui/es/dynamic-tags/src/interface';
8
+ import { SliderProps } from 'naive-ui/es/slider/src/Slider';
9
+ import { InputNumberProps } from 'naive-ui/es/input-number/src/InputNumber';
7
10
  export declare function renderInput(model: Ref<string>, optionProps?: InputProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
8
11
  [key: string]: any;
9
12
  }>;
@@ -25,12 +28,24 @@ export declare function renderRadioButtonGroup(value: Ref<string | number | null
25
28
  export declare function renderCheckboxGroup(model: Ref<(string | number)[]>, options: CheckboxProps[], optionProps?: CheckboxGroupProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
26
29
  [key: string]: any;
27
30
  }>;
28
- export declare function renderSwitch(value: Ref<boolean>, optionProps?: SwitchProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
31
+ export declare function renderSwitch(model: Ref<boolean>, optionProps?: SwitchProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
29
32
  [key: string]: any;
30
33
  }>;
31
- export declare function renderDatePicker(value: Ref<DatePickerValue>, optionProps?: DatePickerProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
34
+ export declare function renderDatePicker(model: Ref<DatePickerValue>, optionProps?: DatePickerProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
32
35
  [key: string]: any;
33
36
  }>;
34
- export declare function renderTimePicker(value: Ref<number | null>, optionProps?: TimePickerProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
37
+ export declare function renderTimePicker(model: Ref<number | null>, optionProps?: TimePickerProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
38
+ [key: string]: any;
39
+ }>;
40
+ export declare function renderCheckbox(model: Ref<boolean>, optionProps?: CheckboxProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
41
+ [key: string]: any;
42
+ }>;
43
+ export declare function renderDynamicTags(model: Ref<Array<string | DynamicTagsOption>>, optionProps?: DynamicTagsProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
44
+ [key: string]: any;
45
+ }>;
46
+ export declare function renderSlider(model: Ref<number | number[]>, optionProps?: SliderProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
47
+ [key: string]: any;
48
+ }>;
49
+ export declare function renderInputNumber(model: Ref<number | null>, optionProps?: InputNumberProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
35
50
  [key: string]: any;
36
51
  }>;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),y=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,s)=>!0},setup(r,{emit:s,expose:i}){const u={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...r.btnConfigs},l={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,...r.configs},c={arraySplitSymbol:",",...r.dyListConfigs},m=r.size,t=e.ref(b.tranArr(r.modelValue,r.randomFun,c.arraySplitSymbol)),f=e.ref(null);return e.watch(t,n=>{if(!r.isController)return;const v=b.resetObj(n,c.arraySplitSymbol);s("update:modelValue",v),s("onMerge",v,e.toRaw(t.value))},{deep:!0}),i({onSet:n=>{t.value=b.tranArr(n??r.modelValue,r.randomFun,c.arraySplitSymbol)},getResult:(n="res")=>n==="ori"?e.toRaw(t.value):b.resetObj(t.value,c.arraySplitSymbol)}),()=>e.createVNode("div",{class:r.dyCls??`dynamicForm ${m}`},[e.createVNode("div",{class:`dyFormList ${t.value.length?"":"noList"}`,ref:f,style:{maxHeight:l.maxHeight}},[t.value.map((n,v,a)=>e.createVNode("div",{class:"dItem",key:n.rId},[e.createVNode("div",{class:"input"},[e.createVNode(y.NInput,{size:m,value:n.key,class:"key",onInput:o=>{n.key=o}},null),e.createTextVNode(":"),e.createVNode(y.NInput,{size:m,value:n.value,class:"value",onInput:o=>{l.allowFilter&&n.isNumber?n.value=b.formatNumberInput(o,n.isArray,c.arraySplitSymbol):n.value=o}},{prefix:()=>e.createVNode(e.Fragment,null,[e.createVNode(y.NButton,{type:n.isArray?"success":"default",size:"tiny",onClick:()=>{n.isArray=!n.isArray}},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),e.createVNode(y.NButton,{type:n.isNumber?"success":"default",size:"tiny",onClick:()=>{n.isNumber=!n.isNumber}},{default:()=>[e.createTextVNode("Number")]})])})]),e.createVNode("div",{class:"btn"},[e.createVNode(y.NButton,{type:"success",size:m,disabled:v!==a.length-1,onClick:()=>{t.value.push({rId:r.randomFun(),key:"",value:""}),l.autoScroll&&e.nextTick(()=>{const o=f.value;o?.scrollTo({top:o.scrollHeight,behavior:"smooth"})})}},{default:()=>[e.createTextVNode("+")]}),e.createVNode(y.NButton,{size:m,type:"error",onClick:()=>{t.value=t.value.filter(o=>o.rId!==n.rId)}},{default:()=>[e.createTextVNode("-")]})])]))]),e.createVNode("div",{class:`control ${t.value.length?"":"noList"}`},[!t.value.length&&e.createVNode(y.NButton,{size:m,type:"success",onClick:()=>{t.value.push({rId:r.randomFun(),key:"",value:""})}},{default:()=>[u.newTxt]}),!r.isController&&e.createVNode(e.Fragment,null,[!l.hideReset&&e.createVNode(y.NButton,{size:m,type:"default",onClick:()=>{t.value=b.tranArr(r.modelValue,r.randomFun,c.arraySplitSymbol),s("onReset")}},{default:()=>[u.resetTxt]}),e.createVNode(y.NButton,{size:m,type:"info",onClick:()=>{t.value.sort((v,a)=>+v.rId-+a.rId);const n=b.resetObj(t.value,c.arraySplitSymbol);s("update:modelValue",n),s("onMerge",n,e.toRaw(t.value)),t.value=b.tranArr(n,r.randomFun,c.arraySplitSymbol)}},{default:()=>[u.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,s)=>!0},setup(r,{emit:s,expose:i}){const u={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...r.btnConfigs},l={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,showPad:!0,retractLen:0,borderColors:[],...r.configs},c={arraySplitSymbol:",",...r.dyListConfigs},m=a=>["string","number"].includes(a),t=a=>Object.keys(a).map((o,p)=>{let d=a[o];const g=Array.isArray(d),V=g?d.every(C=>typeof C=="number"):typeof d=="number",h=d===null;return m(typeof d)&&(d=a[o]),h&&(d=""),{rId:r.randomFun(p),key:o,value:Object.prototype.toString.call(d)==="[object Object]"?t(a[o]):g?d.join(c.arraySplitSymbol):d,isArray:g||void 0,isNumber:V||void 0}}),f=a=>a.reduce((o,p)=>{const d=p.value;return p.key.trim().length&&(o[p.key]=Array.isArray(d)?f(d):b.parseValue(p.value,p.isArray,p.isNumber,c.arraySplitSymbol)),o},{}),n=e.ref(t(r.modelValue)),v=(a,o=1,p)=>e.createVNode("div",{class:[`depth-${o}`,l.showBorder?"":"no-border",l.showPad?"":"no-pad"],style:{"--depth":o,["--c"+[o]]:b.saferRepairColor(l.borderColors,o)}},[a.map((d,g,V)=>{const h=Array.isArray(d.value),C=m(typeof d.value);return e.createVNode("div",{class:"dItem",key:d.rId,style:{marginLeft:o>1?`${o*l.retractLen}px`:"0"}},[e.createVNode("div",{class:"input"},[!h&&e.createVNode(e.Fragment,null,[e.createVNode(y.NInput,{value:d.key,class:"key",onInput:N=>d.key=N},null),e.createTextVNode(":")]),e.createVNode(y.NInput,{class:`value ${h?"isKey":""}`,value:C?d.value:d.key,onInput:N=>{if(h){d.key=N;return}l.allowFilter&&d.isNumber?d.value=b.formatNumberInput(N,d.isArray,c.arraySplitSymbol):d.value=N}},{prefix:Array.isArray(d.value)?void 0:()=>e.createVNode(e.Fragment,null,[e.createVNode(y.NButton,{type:d.isArray?"success":"default",size:"tiny",onClick:()=>{d.isArray=!d.isArray}},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),e.createVNode(y.NButton,{type:d.isNumber?"success":"default",size:"tiny",onClick:()=>{d.isNumber=!d.isNumber}},{default:()=>[e.createTextVNode("Number")]})]),suffix:()=>{let N;return o<r.depth?!h&&e.createVNode(y.NButton,{type:"success",size:"tiny",onClick:()=>{C&&(d.value=[],d.isArray=void 0),d.value.push({rId:r.randomFun(),key:"",value:""})}},D(N=r.newChildTxt(d))?N:{default:()=>[N]}):null}})]),e.createVNode("div",{class:"btn"},[e.createVNode(y.NButton,{type:"success",disabled:g!==V.length-1,onClick:()=>{a.push({rId:r.randomFun(),key:"",value:""})}},{default:()=>[e.createTextVNode("+")]}),e.createVNode(y.NButton,{type:"error",onClick:()=>{if(a.splice(g,1),a.length<1){if(p===void 0)return f([]);const N=n.value.findIndex(B=>B.rId===p?.rId);o<1?n.value.splice(N,1,{...p,value:""}):p.value=""}}},{default:()=>[e.createTextVNode("-")]})]),Array.isArray(d.value)&&v(d.value,o+1,d)])})]);return e.watch(n,a=>{if(!r.isController)return;const o=f(a);s("update:modelValue",o),s("onMerge",o,e.toRaw(n.value))},{deep:!0}),i({onSet:a=>{n.value=t(a??r.modelValue)},getResult:(a="res")=>a==="ori"?e.toRaw(n.value):f(n.value)}),()=>e.createVNode("div",{class:r.dyCls??"dynamicCascadeForm"},[e.createVNode("div",{class:"dyFormList",style:{maxHeight:l.maxHeight}},[v(n.value)]),e.createVNode("div",{class:"control"},[!n.value.length&&e.createVNode(y.NButton,{type:"success",onClick:()=>{n.value.push({rId:r.randomFun(),key:"",value:""})}},{default:()=>[u.newTxt]}),!r.isController&&e.createVNode(e.Fragment,null,[!l.hideReset&&e.createVNode(y.NButton,{type:"default",onClick:()=>{n.value=t(r.modelValue),s("onReset")}},{default:()=>[u.resetTxt]}),e.createVNode(y.NButton,{type:"info",onClick:()=>{const a=f(n.value);s("update:modelValue",a),s("onMerge",a,e.toRaw(n.value)),n.value=t(a)}},{default:()=>[u.mergeTxt]})])])])}}),G=e.defineComponent({name:"NaiDynamicForm",props:{formConfig:{type:Object,default:()=>({labelPlacement:"left",size:"medium"})},gridConfig:{type:Object,default:()=>({responsive:"screen",cols:"xs:24 s:24 m:24 l:24 xl:24 2xl:24",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}},slots:Object,setup(r,{expose:s,slots:i}){const u=e.ref(null),l=e.computed(()=>(r.items??[]).filter(v=>!v.hidden)),c=e.computed(()=>l.value?l.value.reduce((v,a)=>(v[a.key]=a.value.value,v),{}):{}),m=e.computed(()=>({...l.value?.reduce((a,o)=>{let p=o.rule;return o.required&&!o.rule&&(p={required:!0,message:o.requiredHint?.(o.label)??`${o.label}不能为空`,trigger:["blur"]}),a[o.key]=p,a},{}),...r.rules})),t=e.computed(()=>[...l.value].sort((a,o)=>{const p=a.sort??1/0,d=o.sort??1/0;return Number(p)-Number(d)}));function f(v=null){l.value&&l.value.forEach(a=>{a.value.value=v})}function n(){return new Promise((v,a)=>{u.value?.validate(o=>{o?a(o):v(c.value)})})}if(s({reset:f,validator:n,getResult:(v="res")=>v==="ori"?l.value:c.value}),!r.items)throw new Error("prop items must be not null");return()=>e.createVNode("div",{class:"naiDynamicForm"},[i.header&&e.createVNode("div",{class:"header"},[i.header?.()]),e.createVNode(y.NForm,e.mergeProps({ref:u},r.formConfig,{model:c.value,rules:m.value}),{default(){const v=t.value;return r.preset==="grid"?e.h(y.NGrid,{...r.gridConfig},{default:()=>v?.map(a=>e.h(y.NFormItemGridItem,{label:a.label,path:a.path||a.key,span:a.span??24,offset:a.offset??0},{default:S(a)}))}):v?.map(a=>e.h(y.NFormItem,{label:a.label,path:a.path||a.key},{default:S(a)}))}}),i.footer&&e.h("div",{class:"footer"},i.footer?.())])}});function S(r){return function(){return r.render2?r.render2(r):null}}function k(r,s={},i){const{onChange:u,...l}=i;return e.h(y.NInput,{...l,value:r.value,onUpdateValue:c=>{r.value=c,i?.onChange?.(c,i)},...s})}function x(r,s,i={},u){const{onChange:l,...c}=u;return e.h(y.NSelect,{...c,value:r.value,options:s,onUpdateValue:m=>{r.value=m,u?.onChange?.(m,u,s)},...i})}function F(r,s,i={},u,l){const{value:c,labelField:m,valueField:t,onChange:f,...n}=u,v=m??"label",a=t??"value",o=n.options??s;return e.createVNode(y.NPopselect,{...n,value:r.value,onUpdateValue:p=>{r.value=p,u?.onChange?.(p,u,o)},options:o.map(p=>({...p,label:p[v],value:p[a]})),...i},{default:()=>l??e.createVNode(y.NButton,null,{default:()=>r.value||"请选择"})})}function R(r,s,i={},u){const{valueField:l="value",onChange:c,...m}=u;return e.h(y.NTreeSelect,{...m,value:r.value,options:s,onUpdateValue:t=>{r.value=t,u?.onChange?.(t,u,s)},keyField:l,...i})}function I(r,s,i={},u){const{onChange:l,...c}=u;return e.h(y.NRadioGroup,{...c,value:r.value,onUpdateValue:m=>{r.value=m,u?.onChange?.(m,u,s)},...i},{default:()=>(u?.options??s).map(t=>{const f=u,n=t[f?.labelField??"label"],v=t[f?.valueField??"value"];return e.h(y.NRadio,{...t,label:n,value:v},{default:()=>t.label})})})}function T(r,s,i={},u){const{onChange:l,...c}=u;return e.createVNode(y.NRadioGroup,{...c,value:r.value,onUpdateValue:m=>{r.value=m,u?.onChange?.(m,u,s)},...i},{default:()=>(u?.options??s).map(t=>{const f=u,n=t[f?.labelField??"label"],v=t[f?.valueField??"value"];return e.createVNode(y.NRadioButton,{...t,label:n,value:v},{default:()=>t.label})})})}function P(r,s,i={},u){const{onChange:l,...c}=u;return e.h(y.NCheckboxGroup,{...c,value:r.value,onUpdateValue:m=>{r.value=m,u?.onChange?.(m,u,s)},...i},{default:()=>e.h(y.NSpace,{itemStyle:"display: flex"},{default:()=>(u?.options??s).map(t=>{const f=u,n=t[f?.labelField??"label"],v=t[f?.valueField??"value"];return e.h(y.NCheckbox,{value:v,label:n})})})})}function A(r,s={},i){const{onChange:u,...l}=i;return e.h(y.NSwitch,{...l,value:r.value,onUpdateValue:c=>{r.value=c,i?.onChange?.(c,i)},...s})}function j(r,s={},i){const{onChange:u,...l}=i;return e.h(y.NDatePicker,{...l,value:r.value,onUpdateValue:c=>{r.value=c,i?.onChange?.(c,i)},...s})}function w(r,s={},i){const{onChange:u,...l}=i;return e.h(y.NTimePicker,{...l,value:r.value,onUpdateValue:c=>{r.value=c,i?.onChange?.(c,i)},...s})}const M=Object.freeze(Object.defineProperty({__proto__:null,renderCheckboxGroup:P,renderDatePicker:j,renderInput:k,renderPopSelect:F,renderRadioButtonGroup:T,renderRadioGroup:I,renderSelect:x,renderSwitch:A,renderTimePicker:w,renderTreeSelect:R},Symbol.toStringTag,{value:"Module"}));function U(r){return function(i,u=!0){const l=r,c={renderInput:t=>l.renderInput(t.value,t.renderProps??{},t),renderSelect:t=>l.renderSelect(t.value,t.options??[],t.renderProps??{},t),renderPopSelect:t=>l.renderPopSelect(t.value,t.options??[],t.renderProps??{},t),renderTreeSelect:t=>l.renderTreeSelect(t.value,t.options??[],t.renderProps??{},t),renderRadioGroup:t=>l.renderRadioGroup(t.value,t.options??[],t.renderProps??{},t),renderRadioButtonGroup:t=>l.renderRadioButtonGroup(t.value,t.options??[],t.renderProps??{},t),renderCheckboxGroup:t=>l.renderCheckboxGroup(t.value,t.options??[],t.renderProps??{},t),renderSwitch:t=>l.renderSwitch(t.value,t.renderProps??{},t),renderDatePicker:t=>l.renderDatePicker(t.value,t.renderProps??{},t),renderTimePicker:t=>l.renderTimePicker(t.value,t.renderProps??{},t)};return i.map(t=>{const f=t;if(f.value=b.ensureRef(t.value),typeof t.render2=="function")f.render2=t.render2;else{const n=t.renderType??"renderInput",v=c[n];v?f.render2=()=>v(f):(console.warn(`[useDecorateForm] unknown renderType: ${t.renderType}`),f.render2=()=>c.renderInput(f))}return u?e.shallowReactive(f):f})}}const $=U(M);exports.NaiDynamicCascadeInput=z;exports.NaiDynamicForm=G;exports.NaiDynamicInput=O;exports.renderCheckboxGroup=P;exports.renderDatePicker=j;exports.renderInput=k;exports.renderPopSelect=F;exports.renderRadioButtonGroup=T;exports.renderRadioGroup=I;exports.renderSelect=x;exports.renderSwitch=A;exports.renderTimePicker=w;exports.renderTreeSelect=R;exports.useDecorateForm=$;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),v=require("naive-ui"),V=require("../index-CA3F2Lxo.cjs"),H=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,u)=>!0},slots:Object,setup(t,{emit:u,expose:o,slots:n}){const l={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...t.btnConfigs},a={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,hideArrayBtn:!1,hideNumberBtn:!1,...t.configs},m={arraySplitSymbol:",",...t.dyListConfigs},r=t.size,s=e.ref(V.tranArr(t.modelValue,t.randomFun,m.arraySplitSymbol)),b=e.ref(null);e.watch(s,i=>{if(!t.isController)return;const h=V.resetObj(i,m.arraySplitSymbol);u("update:modelValue",h),u("onMerge",h,e.toRaw(s.value))},{deep:!0}),o({onSet:i=>{s.value=V.tranArr(i??t.modelValue,t.randomFun,m.arraySplitSymbol)},getResult:(i="res")=>i==="ori"?e.toRaw(s.value):V.resetObj(s.value,m.arraySplitSymbol)});const d=()=>s.value.push({rId:t.randomFun(),key:"",value:""}),y=()=>{s.value=V.tranArr(t.modelValue,t.randomFun,m.arraySplitSymbol),u("onReset")},g=()=>{s.value.sort((h,f)=>+h.rId-+f.rId);const i=V.resetObj(s.value,m.arraySplitSymbol);u("update:modelValue",i),u("onMerge",i,e.toRaw(s.value)),s.value=V.tranArr(i,t.randomFun,m.arraySplitSymbol)};return()=>e.createVNode("div",{class:`dynamicForm ${r} ${t.dyCls}`},[e.createVNode("div",{class:`dyFormList ${s.value.length?"":"noList"}`,ref:b,style:{maxHeight:a.maxHeight}},[s.value.map((i,h,f)=>{const p={row:i,index:h,isLast:h===f.length-1,addItem:()=>{s.value.push({rId:t.randomFun(),key:"",value:""}),a.autoScroll&&e.nextTick(()=>{const N=b.value;N?.scrollTo({top:N.scrollHeight,behavior:"smooth"})})},removeItem:()=>{s.value=s.value.filter(N=>N.rId!==i.rId)},toggleArray:()=>i.isArray=!i.isArray,toggleNumber:()=>i.isNumber=!i.isNumber};return e.createVNode("div",{class:"dItem",key:i.rId},[e.createVNode("div",{class:"input"},[e.createVNode(v.NInput,{size:r,value:i.key,class:"key",onInput:N=>{i.key=N}},null),e.createTextVNode(":"),e.createVNode(v.NInput,{size:r,value:i.value,class:"value",onInput:N=>{a.allowFilter&&i.isNumber?i.value=V.formatNumberInput(N,i.isArray,m.arraySplitSymbol):i.value=N}},{prefix:()=>n.typeTools?n.typeTools(p):e.createVNode(e.Fragment,null,[!a.hideArrayBtn&&e.createVNode(v.NButton,{type:i.isArray?"success":"default",size:"tiny",onClick:p.toggleArray},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),!a.hideNumberBtn&&e.createVNode(v.NButton,{type:i.isNumber?"success":"default",size:"tiny",onClick:p.toggleNumber},{default:()=>[e.createTextVNode("Number")]})])})]),e.createVNode("div",{class:"btn"},[n.rowActions?n.rowActions(p):e.createVNode(e.Fragment,null,[e.createVNode(v.NButton,{type:"success",size:r,disabled:!p.isLast,onClick:p.addItem},{default:()=>[e.createTextVNode("+")]}),e.createVNode(v.NButton,{size:r,type:"error",onClick:p.removeItem},{default:()=>[e.createTextVNode("-")]})])])])})]),e.createVNode("div",{class:`control ${s.value.length?"":"noList"}`},[!s.value.length&&(n.newBtn?n.newBtn({newItem:d}):e.createVNode(v.NButton,{size:r,type:"success",onClick:d},{default:()=>[l.newTxt]})),!t.isController&&e.createVNode(e.Fragment,null,[!a.hideReset&&(n.resetBtn?n.resetBtn({reset:y}):e.createVNode(v.NButton,{size:r,type:"default",onClick:y},{default:()=>[l.resetTxt]})),n.mergeBtn?n.mergeBtn({merge:g}):e.createVNode(v.NButton,{size:r,type:"info",onClick:g},{default:()=>[l.mergeTxt]})])])])}});function _(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const E=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,u)=>!0},slots:Object,setup(t,{emit:u,expose:o,slots:n}){const l={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...t.btnConfigs},a={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,hideArrayBtn:!1,hideNumberBtn:!1,showPad:!0,retractLen:0,borderColors:[],...t.configs},m={arraySplitSymbol:",",...t.dyListConfigs},r=f=>["string","number"].includes(f),s=f=>Object.keys(f).map((p,N)=>{let c=f[p];const S=Array.isArray(c),F=S?c.every(x=>typeof x=="number"):typeof c=="number",I=c===null;return r(typeof c)&&(c=f[p]),I&&(c=""),{rId:t.randomFun(N),key:p,value:Object.prototype.toString.call(c)==="[object Object]"?s(f[p]):S?c.join(m.arraySplitSymbol):c,isArray:S||void 0,isNumber:F||void 0}}),b=f=>f.reduce((p,N)=>{const c=N.value;return N.key.trim().length&&(p[N.key]=Array.isArray(c)?b(c):V.parseValue(N.value,N.isArray,N.isNumber,m.arraySplitSymbol)),p},{}),d=e.ref(s(t.modelValue)),y=(f,p=1,N)=>e.createVNode("div",{class:[`depth-${p}`,a.showBorder?"":"no-border",a.showPad?"":"no-pad"],style:{"--depth":p,["--c"+[p]]:V.saferRepairColor(a.borderColors,p)}},[f.map((c,S,F)=>{const I=Array.isArray(c.value),x=r(typeof c.value),k={row:c,index:S,isLast:S===F.length-1,addItem:()=>{f.push({rId:t.randomFun(),key:"",value:""})},addChild:()=>{x&&(c.value=[],c.isArray=void 0),c.value.push({rId:t.randomFun(),key:"",value:""})},removeItem:()=>{if(f.splice(S,1),f.length<1){if(N===void 0)return b([]);const C=d.value.findIndex(q=>q.rId===N?.rId);p<1?d.value.splice(C,1,{...N,value:""}):N.value=""}},toggleArray:()=>c.isArray=!c.isArray,toggleNumber:()=>c.isNumber=!c.isNumber};return e.createVNode("div",{class:"dItem",key:c.rId,style:{marginLeft:p>1?`${p*a.retractLen}px`:"0"}},[e.createVNode("div",{class:"input"},[!I&&e.createVNode(e.Fragment,null,[e.createVNode(v.NInput,{value:c.key,class:"key",onInput:C=>c.key=C},null),e.createTextVNode(":")]),e.createVNode(v.NInput,{class:`value ${I?"isKey":""}`,value:x?c.value:c.key,onInput:C=>{if(I){c.key=C;return}a.allowFilter&&c.isNumber?c.value=V.formatNumberInput(C,c.isArray,m.arraySplitSymbol):c.value=C}},{prefix:Array.isArray(c.value)?void 0:()=>n.typeTools?n.typeTools(k):e.createVNode(e.Fragment,null,[!a.hideArrayBtn&&e.createVNode(v.NButton,{type:c.isArray?"success":"default",size:"tiny",onClick:k.toggleArray},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),!a.hideNumberBtn&&e.createVNode(v.NButton,{type:c.isNumber?"success":"default",size:"tiny",onClick:k.toggleNumber},{default:()=>[e.createTextVNode("Number")]})]),suffix:()=>{let C;return p<t.depth?!I&&(n.newChild?n.newChild(k):e.createVNode(v.NButton,{type:"success",size:"tiny",onClick:()=>{x&&(c.value=[],c.isArray=void 0),c.value.push({rId:t.randomFun(),key:"",value:""})}},_(C=t.newChildTxt(c))?C:{default:()=>[C]})):null}})]),e.createVNode("div",{class:"btn"},[n.rowActions?n.rowActions(k):e.createVNode(e.Fragment,null,[e.createVNode(v.NButton,{type:"success",disabled:!k.isLast,onClick:k.addItem},{default:()=>[e.createTextVNode("+")]}),e.createVNode(v.NButton,{type:"error",onClick:k.removeItem},{default:()=>[e.createTextVNode("-")]})])]),Array.isArray(c.value)&&y(c.value,p+1,c)])})]);e.watch(d,f=>{if(!t.isController)return;const p=b(f);u("update:modelValue",p),u("onMerge",p,e.toRaw(d.value))},{deep:!0}),o({onSet:f=>{d.value=s(f??t.modelValue)},getResult:(f="res")=>f==="ori"?e.toRaw(d.value):b(d.value)});const g=()=>d.value.push({rId:t.randomFun(),key:"",value:""}),i=()=>{d.value=s(t.modelValue),u("onReset")},h=()=>{const f=b(d.value);u("update:modelValue",f),u("onMerge",f,e.toRaw(d.value)),d.value=s(f)};return()=>e.createVNode("div",{class:`dynamicCascadeForm ${t.dyCls}`},[e.createVNode("div",{class:`dyFormList ${d.value.length?"":"noObj"}`,style:{maxHeight:a.maxHeight}},[y(d.value)]),e.createVNode("div",{class:`control ${d.value.length?"":"noObj"}`},[!d.value.length&&(n.newBtn?n.newBtn({newItem:g}):e.createVNode(v.NButton,{type:"success",onClick:g},{default:()=>[l.newTxt]})),!t.isController&&e.createVNode(e.Fragment,null,[!a.hideReset&&(n.resetBtn?n.resetBtn({reset:i}):e.createVNode(v.NButton,{type:"default",onClick:i},{default:()=>[l.resetTxt]})),n.mergeBtn?n.mergeBtn({merge:h}):e.createVNode(v.NButton,{type:"info",onClick:h},{default:()=>[l.mergeTxt]})])])])}}),K=e.defineComponent({name:"NaiDynamicForm",props:{formConfig:{type:Object,default:()=>({labelPlacement:"left",size:"medium"})},gridConfig:{type:Object,default:()=>({responsive:"screen",cols:"xs:24 s:24 m:24 l:24 xl:24 2xl:24",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}},slots:Object,setup(t,{expose:u,slots:o}){const n=e.ref(null),l=e.computed(()=>(t.items??[]).filter(d=>!d.hidden)),a=e.computed(()=>l.value?l.value.reduce((d,y)=>(d[y.key]=y.value.value,d),{}):{}),m=e.computed(()=>({...l.value?.reduce((y,g)=>{let i=g.rule;return g.required&&!g.rule&&(i={required:!0,message:g.requiredHint?.(g?.label??"")??`${g.label}不能为空`,trigger:["blur"]}),y[g.key]=i,y},{}),...t.rules})),r=e.computed(()=>[...l.value].sort((y,g)=>{const i=y.sort??1/0,h=g.sort??1/0;return Number(i)-Number(h)}));function s(d=null){l.value&&l.value.forEach(y=>{y.value.value=d})}function b(){return new Promise((d,y)=>{n.value?.validate(g=>{g?y(g):d(a.value)})})}if(u({reset:s,validator:b,getResult:(d="res")=>d==="ori"?l.value:a.value}),!t.items)throw new Error("prop items must be not null");return()=>e.createVNode("div",{class:"naiDynamicForm"},[o.header&&e.createVNode("div",{class:"header"},[o.header?.()]),e.createVNode(v.NForm,e.mergeProps({ref:n},t.formConfig,{model:a.value,rules:m.value}),{default(){const d=r.value;return t.preset==="grid"?e.h(v.NGrid,{...t.gridConfig},{default:()=>d?.map(y=>e.h(v.NFormItemGridItem,{label:y.label,path:y.path||y.key,span:y.span??24,offset:y.offset??0},{default:R(y)}))}):d?.map(y=>e.h(v.NFormItem,{label:y.label,path:y.path||y.key},{default:R(y)}))}}),o.footer&&e.h("div",{class:"footer"},o.footer?.())])}});function R(t){return function(){return t.render2?t.render2(t):null}}function T(t,u={},o){const{onChange:n,...l}=o??{};return e.h(v.NInput,{...l,value:t.value,onUpdateValue:a=>{t.value=a,o?.onChange?.(a,o)},...u})}function A(t,u,o={},n){const{onChange:l,...a}=n??{};return e.h(v.NSelect,{...a,value:t.value,options:u,onUpdateValue:m=>{t.value=m,n?.onChange?.(m,n,u)},...o})}function B(t,u,o={},n,l){const{value:a,labelField:m,valueField:r,onChange:s,...b}=n??{},d=m??"label",y=r??"value",g=b.options??u;return e.createVNode(v.NPopselect,{...b,value:t.value,onUpdateValue:i=>{t.value=i,n?.onChange?.(i,n,g)},options:g.map(i=>({...i,label:i[d],value:i[y]})),...o},{default:()=>l??e.createVNode(v.NButton,null,{default:()=>t.value||"请选择"})})}function w(t,u,o={},n){const{valueField:l="value",onChange:a,...m}=n??{};return e.h(v.NTreeSelect,{...m,value:t.value,options:u,onUpdateValue:r=>{t.value=r,n?.onChange?.(r,n,u)},keyField:l,...o})}function P(t,u,o={},n){const{onChange:l,...a}=n??{};return e.h(v.NRadioGroup,{...a,value:t.value,onUpdateValue:m=>{t.value=m,n?.onChange?.(m,n,u)},...o},{default:()=>(n?.options??u).map(r=>{const s=n,b=r[s?.labelField??"label"],d=r[s?.valueField??"value"];return e.h(v.NRadio,{...r,label:b,value:d},{default:()=>r.label})})})}function j(t,u,o={},n){const{onChange:l,...a}=n??{};return e.createVNode(v.NRadioGroup,{...a,value:t.value,onUpdateValue:m=>{t.value=m,n?.onChange?.(m,n,u)},...o},{default:()=>(n?.options??u).map(r=>{const s=n,b=r[s?.labelField??"label"],d=r[s?.valueField??"value"];return e.createVNode(v.NRadioButton,{...r,label:b,value:d},{default:()=>r.label})})})}function O(t,u,o={},n){const{onChange:l,...a}=n??{};return e.h(v.NCheckboxGroup,{...a,value:t.value,onUpdateValue:m=>{t.value=m,n?.onChange?.(m,n,u)},...o},{default:()=>e.h(v.NSpace,{itemStyle:"display: flex"},{default:()=>(n?.options??u).map(r=>{const s=n,b=r[s?.labelField??"label"],d=r[s?.valueField??"value"];return e.h(v.NCheckbox,{value:d,label:b})})})})}function D(t,u={},o){const{onChange:n,...l}=o??{};return e.h(v.NSwitch,{...l,value:t.value,onUpdateValue:a=>{t.value=a,o?.onChange?.(a,o)},...u})}function z(t,u={},o){const{onChange:n,...l}=o??{};return e.h(v.NDatePicker,{...l,value:t.value,onUpdateValue:a=>{t.value=a,o?.onChange?.(a,o)},...u})}function G(t,u={},o){const{onChange:n,...l}=o??{};return e.h(v.NTimePicker,{...l,value:t.value,onUpdateValue:a=>{t.value=a,o?.onChange?.(a,o)},...u})}function U(t,u={},o){const{onChange:n,...l}=o??{};return e.h(v.NCheckbox,{...l,checked:t.value,onUpdateChecked:a=>{t.value=a,o?.onChange?.(a,o)},...u},{default:()=>u?.label??o?.label})}function $(t,u={},o){const{onChange:n,...l}=o??{};return e.h(v.NDynamicTags,{...l,value:t.value,onUpdateValue:a=>{t.value=a,o?.onChange?.(a,o)},...u})}function L(t,u={},o){const{onChange:n,...l}=o??{};return e.h(v.NSlider,{...l,value:t.value,onUpdateValue:a=>{t.value=a,o?.onChange?.(a,o)},...u})}function M(t,u={},o){const{onChange:n,...l}=o??{};return e.h(v.NInputNumber,{...l,value:t.value,onUpdateValue:a=>{t.value=a,o?.onChange?.(a,o)},...u})}const J=Object.freeze(Object.defineProperty({__proto__:null,renderCheckbox:U,renderCheckboxGroup:O,renderDatePicker:z,renderDynamicTags:$,renderInput:T,renderInputNumber:M,renderPopSelect:B,renderRadioButtonGroup:j,renderRadioGroup:P,renderSelect:A,renderSlider:L,renderSwitch:D,renderTimePicker:G,renderTreeSelect:w},Symbol.toStringTag,{value:"Module"}));function Q(t){return function(o,n=!0){const l=t,a={renderInput:r=>l.renderInput(r.value,r.renderProps??{},r),renderSelect:r=>l.renderSelect(r.value,r.options??[],r.renderProps??{},r),renderPopSelect:r=>l.renderPopSelect(r.value,r.options??[],r.renderProps??{},r),renderTreeSelect:r=>l.renderTreeSelect(r.value,r.options??[],r.renderProps??{},r),renderRadioGroup:r=>l.renderRadioGroup(r.value,r.options??[],r.renderProps??{},r),renderRadioButtonGroup:r=>l.renderRadioButtonGroup(r.value,r.options??[],r.renderProps??{},r),renderCheckboxGroup:r=>l.renderCheckboxGroup(r.value,r.options??[],r.renderProps??{},r),renderSwitch:r=>l.renderSwitch(r.value,r.renderProps??{},r),renderDatePicker:r=>l.renderDatePicker(r.value,r.renderProps??{},r),renderTimePicker:r=>l.renderTimePicker(r.value,r.renderProps??{},r)};return o.map(r=>{const s=r;if(s.value=V.ensureRef(r.value),typeof r.render2=="function")s.render2=r.render2;else{const b=r.renderType??"renderInput",d=a[b];d?s.render2=()=>d(s):(console.warn(`[useDecorateForm] unknown renderType: ${r.renderType}`),s.render2=()=>a.renderInput(s))}return n?e.shallowReactive(s):s})}}const W=Q(J);exports.NaiDynamicCascadeInput=E;exports.NaiDynamicForm=K;exports.NaiDynamicInput=H;exports.renderCheckbox=U;exports.renderCheckboxGroup=O;exports.renderDatePicker=z;exports.renderDynamicTags=$;exports.renderInput=T;exports.renderInputNumber=M;exports.renderPopSelect=B;exports.renderRadioButtonGroup=j;exports.renderRadioGroup=P;exports.renderSelect=A;exports.renderSlider=L;exports.renderSwitch=D;exports.renderTimePicker=G;exports.renderTreeSelect=w;exports.useDecorateForm=W;