dynamicformdjx 0.3.2 → 0.3.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.
- package/README.md +90 -0
- package/dist/hooks/useDyForm.d.ts +1 -1
- package/dist/naiveUi/hooks/decorateForm.d.ts +8 -0
- package/dist/naiveUi/hooks/renderForm.d.ts +1 -1
- package/dist/naiveUi/index.cjs +1 -1
- package/dist/naiveUi/index.d.ts +1 -0
- package/dist/naiveUi/index.mjs +285 -256
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -262,7 +262,97 @@ const validatorData = () => {
|
|
|
262
262
|
}
|
|
263
263
|
</style>
|
|
264
264
|
```
|
|
265
|
+
#### 3.装饰表单
|
|
266
|
+
> (可省略render2函数)
|
|
267
|
+
```vue
|
|
268
|
+
<script setup lang="ts">
|
|
269
|
+
import {h, ref} from "vue";
|
|
270
|
+
import {NButton} from "naive-ui";
|
|
271
|
+
import {useDyForm} from "dynamicformdjx";
|
|
272
|
+
import {
|
|
273
|
+
type naiDynamicFormRef,
|
|
274
|
+
NaiDynamicForm,
|
|
275
|
+
useDecorateForm,
|
|
276
|
+
renderDatePicker
|
|
277
|
+
} from "dynamicformdjx/naiveUi";
|
|
278
|
+
|
|
265
279
|
|
|
280
|
+
type FormRow = {
|
|
281
|
+
password: string
|
|
282
|
+
job: number
|
|
283
|
+
birthday: number
|
|
284
|
+
}
|
|
285
|
+
const naiDynamicFormRef = ref<naiDynamicFormRef | null>(null)
|
|
286
|
+
const formItems = useDecorateForm<FormRow>([
|
|
287
|
+
{
|
|
288
|
+
key: "password",
|
|
289
|
+
label: "密码",
|
|
290
|
+
value: null,
|
|
291
|
+
clearable: true,
|
|
292
|
+
placeholder: '请输入密码',
|
|
293
|
+
required: true,
|
|
294
|
+
type:'password',
|
|
295
|
+
renderType: 'renderInput',
|
|
296
|
+
renderProps:{
|
|
297
|
+
showPasswordOn:'click'
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
key: "job",
|
|
302
|
+
label: "职位",
|
|
303
|
+
value: null,
|
|
304
|
+
clearable: true,
|
|
305
|
+
options: ['前端', '后端'].map((label, value) => ({label, value})),
|
|
306
|
+
renderType: 'renderSelect',
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
key: "birthday",
|
|
310
|
+
label: "生日",
|
|
311
|
+
value: null,
|
|
312
|
+
render2: f => renderDatePicker(f.value, {type: 'datetime'}, f),
|
|
313
|
+
},
|
|
314
|
+
])
|
|
315
|
+
const useForm = useDyForm<FormRow>(formItems)
|
|
316
|
+
const getData = () => {
|
|
317
|
+
const res = naiDynamicFormRef.value?.getResult?.()
|
|
318
|
+
console.log(res)
|
|
319
|
+
}
|
|
320
|
+
const resetData = () => {
|
|
321
|
+
naiDynamicFormRef.value?.reset()
|
|
322
|
+
}
|
|
323
|
+
const setData = () => {
|
|
324
|
+
useForm.setValues({
|
|
325
|
+
password: 'naive-ui',
|
|
326
|
+
job: 0,
|
|
327
|
+
birthday: Date.now(),
|
|
328
|
+
})
|
|
329
|
+
}
|
|
330
|
+
const validatorData = () => {
|
|
331
|
+
naiDynamicFormRef.value?.validator().then(data => {
|
|
332
|
+
console.log(data)
|
|
333
|
+
}).catch(err => {
|
|
334
|
+
console.log(err)
|
|
335
|
+
})
|
|
336
|
+
}
|
|
337
|
+
</script>
|
|
338
|
+
|
|
339
|
+
<template>
|
|
340
|
+
<NaiDynamicForm :items="formItems" ref="naiDynamicFormRef"/>
|
|
341
|
+
<div class="control">
|
|
342
|
+
<n-button @click="getData" type="success" size="small">get Data</n-button>
|
|
343
|
+
<n-button @click="setData" type="warning" size="small">set Data</n-button>
|
|
344
|
+
<n-button @click="validatorData" type="default" size="small">validate Data</n-button>
|
|
345
|
+
<n-button @click="resetData" type="error" size="small">reset Data</n-button>
|
|
346
|
+
</div>
|
|
347
|
+
</template>
|
|
348
|
+
|
|
349
|
+
<style scoped>
|
|
350
|
+
.control {
|
|
351
|
+
display: flex;
|
|
352
|
+
gap: 5px;
|
|
353
|
+
}
|
|
354
|
+
</style>
|
|
355
|
+
```
|
|
266
356
|
### 动态录入
|
|
267
357
|
|
|
268
358
|
#### 1.单组件
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Ref } from 'vue';
|
|
2
2
|
import { DyFormItem } from '../types/form';
|
|
3
3
|
type KeyOf<T> = Extract<keyof T, string>;
|
|
4
|
-
export declare function useReactiveForm<T extends Record<string, any>, U = any>(items: DyFormItem<T, U>[],
|
|
4
|
+
export declare function useReactiveForm<T extends Record<string, any>, U = any>(items: DyFormItem<T, U>[], isReactive?: boolean): DyFormItem<T, U>[];
|
|
5
5
|
export declare function useDyForm<Row extends Record<string, any>>(items: DyFormItem<Row>[] | Ref<DyFormItem<Row>[]>): {
|
|
6
6
|
setDisabled: (disabled: boolean, keys?: KeyOf<Row>[]) => void;
|
|
7
7
|
setHidden: (hidden: boolean, keys?: KeyOf<Row>[]) => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DyFormItem } from '../../types/form';
|
|
2
|
+
export type RenderType = "renderInput" | "renderSelect" | "renderPopSelect" | "renderTreeSelect" | "renderRadioGroup" | "renderRadioButtonGroup" | "renderCheckboxGroup" | "renderSwitch" | "renderDatePicker" | "renderTimePicker";
|
|
3
|
+
export type DecorateDyFormItem<Row extends Record<string, any>, RuleT = any> = Omit<DyFormItem<Row, RuleT>, "value"> & {
|
|
4
|
+
value: DyFormItem<Row, RuleT>["value"] | any | null;
|
|
5
|
+
renderType?: RenderType;
|
|
6
|
+
renderProps?: Record<string, any>;
|
|
7
|
+
};
|
|
8
|
+
export declare function useDecorateForm<Row extends Record<string, any>, RuleT = any>(items: DecorateDyFormItem<Row, RuleT>[], isReactive?: boolean): DyFormItem<Row, RuleT>[];
|
|
@@ -3,7 +3,7 @@ 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
|
-
import { DyFormItem } from '../../types/form
|
|
6
|
+
import { DyFormItem } from '../../types/form';
|
|
7
7
|
export declare function renderInput(model: Ref<string>, optionProps?: InputProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
8
8
|
[key: string]: any;
|
|
9
9
|
}>;
|
package/dist/naiveUi/index.cjs
CHANGED
|
@@ -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-BWQjnQQF.cjs"),O=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,d)=>!0},setup(t,{emit:d,expose:c}){const n={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...t.btnConfigs},r={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,...t.configs},s={arraySplitSymbol:",",...t.dyListConfigs},v=t.size,y=e.ref(b.tranArr(t.modelValue,t.randomFun,s.arraySplitSymbol)),p=e.ref(null);return e.watch(y,u=>{if(!t.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??t.modelValue,t.randomFun,s.arraySplitSymbol)},getResult:(u="res")=>u==="ori"?e.toRaw(y.value):b.resetObj(y.value,s.arraySplitSymbol)}),()=>e.createVNode("div",{class:t.dyCls??`dynamicForm ${v}`},[e.createVNode("div",{class:`dyFormList ${y.value.length?"":"noList"}`,ref:p,style:{maxHeight:r.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=>{r.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:t.randomFun(),key:"",value:""}),r.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:t.randomFun(),key:"",value:""})}},{default:()=>[n.newTxt]}),!t.isController&&e.createVNode(e.Fragment,null,[!r.hideReset&&e.createVNode(i.NButton,{size:v,type:"default",onClick:()=>{y.value=b.tranArr(t.modelValue,t.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,t.randomFun,s.arraySplitSymbol)}},{default:()=>[n.mergeTxt]})])])])}});function D(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const z=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,d)=>!0},setup(t,{emit:d,expose:c}){const n={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...t.btnConfigs},r={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,showPad:!0,retractLen:0,borderColors:[],...t.configs},s={arraySplitSymbol:",",...t.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:t.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(t.modelValue)),m=(a,l=1,f)=>e.createVNode("div",{class:[`depth-${l}`,r.showBorder?"":"no-border",r.showPad?"":"no-pad"],style:{"--depth":l,["--c"+[l]]:b.saferRepairColor(r.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*r.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}r.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<t.depth?!h&&e.createVNode(i.NButton,{type:"success",size:"tiny",onClick:()=>{V&&(o.value=[],o.isArray=void 0),o.value.push({rId:t.randomFun(),key:"",value:""})}},D(N=t.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:t.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(!t.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??t.modelValue)},getResult:(a="res")=>a==="ori"?e.toRaw(u.value):p(u.value)}),()=>e.createVNode("div",{class:t.dyCls??"dynamicCascadeForm"},[e.createVNode("div",{class:"dyFormList",style:{maxHeight:r.maxHeight}},[m(u.value)]),e.createVNode("div",{class:"control"},[!u.value.length&&e.createVNode(i.NButton,{type:"success",onClick:()=>{u.value.push({rId:t.randomFun(),key:"",value:""})}},{default:()=>[n.newTxt]}),!t.isController&&e.createVNode(e.Fragment,null,[!r.hideReset&&e.createVNode(i.NButton,{type:"default",onClick:()=>{u.value=y(t.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: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:d,expose:c}){const n=e.ref(null),r=e.computed(()=>(t.items??[]).filter(m=>!m.hidden)),s=e.computed(()=>r.value?r.value.reduce((m,a)=>(m[a.key]=a.value.value,m),{}):{}),v=e.computed(()=>({...r.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},{}),...t.rules})),y=e.computed(()=>[...r.value].sort((a,l)=>{const f=a.sort??1/0,o=l.sort??1/0;return Number(f)-Number(o)}));function p(m=null){r.value&&r.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"?r.value:s.value}),!t.items)throw new Error("prop items must be not null");return()=>e.createVNode("div",{class:"naiDynamicForm"},[e.createVNode(i.NForm,e.mergeProps({ref:n},t.formConfig,{model:s.value,rules:v.value}),{default(){const m=y.value;return t.preset==="grid"?e.h(i.NGrid,{...t.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(t){return function(){return t.render2?t.render2(t):null}}function k(t,d={},c){return e.h(i.NInput,{...c,value:t.value,onUpdateValue:n=>{t.value=n,c?.onChange?.(n,c)},...d})}function x(t,d,c={},n){return e.h(i.NSelect,{...n,value:t.value,options:d,onUpdateValue:r=>{t.value=r,n?.onChange?.(r,n,d)},...c})}function F(t,d,c={},n,r){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:t.value,onUpdateValue:l=>{t.value=l,n?.onChange?.(l,n,a)},options:a.map(l=>({...l,label:l[u],value:l[m]})),...c},{default:()=>r??e.createVNode(i.NButton,null,{default:()=>t.value||"请选择"})})}function I(t,d,c={},n){const{valueField:r="value",...s}=n;return e.h(i.NTreeSelect,{...s,value:t.value,options:d,onUpdateValue:v=>{t.value=v,n?.onChange?.(v,n,d)},keyField:r,...c})}function T(t,d,c={},n){return e.h(i.NRadioGroup,{...n,value:t.value,onUpdateValue:r=>{t.value=r,n?.onChange?.(r,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(t,d,c={},n){return e.createVNode(i.NRadioGroup,{...n,value:t.value,onUpdateValue:r=>{t.value=r,n?.onChange?.(r,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(t,d,c={},n){return e.h(i.NCheckboxGroup,{...n,value:t.value,onUpdateValue:r=>{t.value=r,n?.onChange?.(r,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(t,d={},c){return e.h(i.NSwitch,{...c,value:t.value,onUpdateValue:n=>{t.value=n,c?.onChange?.(n,c)},...d})}function w(t,d={},c){return e.h(i.NDatePicker,{...c,value:t.value,onUpdateValue:n=>{t.value=n,c?.onChange?.(n,c)},...d})}function B(t,d={},c){return e.h(i.NTimePicker,{...c,value:t.value,onUpdateValue:n=>{t.value=n,c?.onChange?.(n,c)},...d})}function $(t){return e.isRef(t)?t:e.ref(t??null)}function L(t,d=!0){const c={renderInput:r=>k(r.value,r.renderProps??{},r),renderSelect:r=>x(r.value,r.options??[],r.renderProps??{},r),renderPopSelect:r=>F(r.value,r.options??[],r.renderProps??{},r),renderTreeSelect:r=>I(r.value,r.options??[],r.renderProps??{},r),renderRadioGroup:r=>T(r.value,r.options??[],r.renderProps??{},r),renderRadioButtonGroup:r=>R(r.value,r.options??[],r.renderProps??{},r),renderCheckboxGroup:r=>A(r.value,r.options??[],r.renderProps??{},r),renderSwitch:r=>P(r.value,r.renderProps??{},r),renderDatePicker:r=>w(r.value,r.renderProps??{},r),renderTimePicker:r=>B(r.value,r.renderProps??{},r)};return t.map(r=>{const s=r;if(s.value=$(r.value),typeof r.render2=="function")s.render2=r.render2;else if(r.renderType){const v=c[r.renderType];v?s.render2=()=>v(s):console.warn(`[useDecorateForm] unknown renderType: ${r.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=L;
|
package/dist/naiveUi/index.d.ts
CHANGED
|
@@ -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;
|
package/dist/naiveUi/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { NInput as
|
|
3
|
-
import { t as A, r as
|
|
4
|
-
const
|
|
1
|
+
import { defineComponent as j, ref as N, watch as z, toRaw as S, createVNode as o, createTextVNode as C, Fragment as F, nextTick as $, isVNode as L, computed as R, mergeProps as G, h as b, shallowReactive as M, isRef as U } from "vue";
|
|
2
|
+
import { NInput as x, NButton as p, NForm as B, NGrid as H, NFormItemGridItem as q, NFormItem as _, NSelect as E, NPopselect as K, NTreeSelect as J, NRadioGroup as w, NRadio as Q, NRadioButton as W, NCheckboxGroup as X, NSpace as Y, NCheckbox as Z, NSwitch as ee, NDatePicker as le, NTimePicker as te } from "naive-ui";
|
|
3
|
+
import { t as A, r as P, f as O, p as ne, s as re } from "../index-BqKRE4oH.js";
|
|
4
|
+
const he = /* @__PURE__ */ j({
|
|
5
5
|
name: "NaiDynamicInput",
|
|
6
6
|
props: {
|
|
7
7
|
size: {
|
|
@@ -34,151 +34,151 @@ const oe = /* @__PURE__ */ V({
|
|
|
34
34
|
emits: {
|
|
35
35
|
"update:modelValue": (e) => !0,
|
|
36
36
|
onReset: () => !0,
|
|
37
|
-
onMerge: (e,
|
|
37
|
+
onMerge: (e, s) => !0
|
|
38
38
|
},
|
|
39
39
|
setup(e, {
|
|
40
|
-
emit:
|
|
40
|
+
emit: s,
|
|
41
41
|
expose: d
|
|
42
42
|
}) {
|
|
43
|
-
const
|
|
43
|
+
const n = {
|
|
44
44
|
resetTxt: "重置",
|
|
45
45
|
newTxt: "添加项",
|
|
46
46
|
mergeTxt: "合并",
|
|
47
47
|
...e.btnConfigs
|
|
48
|
-
},
|
|
48
|
+
}, l = {
|
|
49
49
|
hideReset: !1,
|
|
50
50
|
maxHeight: "300px",
|
|
51
51
|
autoScroll: !0,
|
|
52
52
|
allowFilter: !0,
|
|
53
53
|
...e.configs
|
|
54
|
-
},
|
|
54
|
+
}, i = {
|
|
55
55
|
arraySplitSymbol: ",",
|
|
56
56
|
...e.dyListConfigs
|
|
57
|
-
}, y = e.size,
|
|
58
|
-
return
|
|
57
|
+
}, y = e.size, c = N(A(e.modelValue, e.randomFun, i.arraySplitSymbol)), m = N(null);
|
|
58
|
+
return z(c, (a) => {
|
|
59
59
|
if (!e.isController) return;
|
|
60
|
-
const v =
|
|
61
|
-
|
|
60
|
+
const v = P(a, i.arraySplitSymbol);
|
|
61
|
+
s("update:modelValue", v), s("onMerge", v, S(c.value));
|
|
62
62
|
}, {
|
|
63
63
|
deep: !0
|
|
64
64
|
}), d({
|
|
65
|
-
onSet: (
|
|
66
|
-
|
|
65
|
+
onSet: (a) => {
|
|
66
|
+
c.value = A(a ?? e.modelValue, e.randomFun, i.arraySplitSymbol);
|
|
67
67
|
},
|
|
68
|
-
getResult: (
|
|
69
|
-
}), () =>
|
|
68
|
+
getResult: (a = "res") => a === "ori" ? S(c.value) : P(c.value, i.arraySplitSymbol)
|
|
69
|
+
}), () => o("div", {
|
|
70
70
|
class: e.dyCls ?? `dynamicForm ${y}`
|
|
71
|
-
}, [
|
|
72
|
-
class: `dyFormList ${
|
|
71
|
+
}, [o("div", {
|
|
72
|
+
class: `dyFormList ${c.value.length ? "" : "noList"}`,
|
|
73
73
|
ref: m,
|
|
74
74
|
style: {
|
|
75
|
-
maxHeight:
|
|
75
|
+
maxHeight: l.maxHeight
|
|
76
76
|
}
|
|
77
|
-
}, [
|
|
77
|
+
}, [c.value.map((a, v, t) => o("div", {
|
|
78
78
|
class: "dItem",
|
|
79
|
-
key:
|
|
80
|
-
}, [
|
|
79
|
+
key: a.rId
|
|
80
|
+
}, [o("div", {
|
|
81
81
|
class: "input"
|
|
82
|
-
}, [
|
|
82
|
+
}, [o(x, {
|
|
83
83
|
size: y,
|
|
84
|
-
value:
|
|
84
|
+
value: a.key,
|
|
85
85
|
class: "key",
|
|
86
|
-
onInput: (
|
|
87
|
-
|
|
86
|
+
onInput: (r) => {
|
|
87
|
+
a.key = r;
|
|
88
88
|
}
|
|
89
|
-
}, null), C(":"),
|
|
89
|
+
}, null), C(":"), o(x, {
|
|
90
90
|
size: y,
|
|
91
|
-
value:
|
|
91
|
+
value: a.value,
|
|
92
92
|
class: "value",
|
|
93
|
-
onInput: (
|
|
94
|
-
|
|
93
|
+
onInput: (r) => {
|
|
94
|
+
l.allowFilter && a.isNumber ? a.value = O(r, a.isArray, i.arraySplitSymbol) : a.value = r;
|
|
95
95
|
}
|
|
96
96
|
}, {
|
|
97
|
-
prefix: () =>
|
|
98
|
-
type:
|
|
97
|
+
prefix: () => o(F, null, [o(p, {
|
|
98
|
+
type: a.isArray ? "success" : "default",
|
|
99
99
|
size: "tiny",
|
|
100
100
|
onClick: () => {
|
|
101
|
-
|
|
101
|
+
a.isArray = !a.isArray;
|
|
102
102
|
}
|
|
103
103
|
}, {
|
|
104
104
|
default: () => [C("Array")]
|
|
105
|
-
}), C(" "),
|
|
106
|
-
type:
|
|
105
|
+
}), C(" "), o(p, {
|
|
106
|
+
type: a.isNumber ? "success" : "default",
|
|
107
107
|
size: "tiny",
|
|
108
108
|
onClick: () => {
|
|
109
|
-
|
|
109
|
+
a.isNumber = !a.isNumber;
|
|
110
110
|
}
|
|
111
111
|
}, {
|
|
112
112
|
default: () => [C("Number")]
|
|
113
113
|
})])
|
|
114
|
-
})]),
|
|
114
|
+
})]), o("div", {
|
|
115
115
|
class: "btn"
|
|
116
|
-
}, [
|
|
116
|
+
}, [o(p, {
|
|
117
117
|
type: "success",
|
|
118
118
|
size: y,
|
|
119
|
-
disabled: v !==
|
|
119
|
+
disabled: v !== t.length - 1,
|
|
120
120
|
onClick: () => {
|
|
121
|
-
|
|
121
|
+
c.value.push({
|
|
122
122
|
rId: e.randomFun(),
|
|
123
123
|
key: "",
|
|
124
124
|
value: ""
|
|
125
|
-
}),
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
top:
|
|
125
|
+
}), l.autoScroll && $(() => {
|
|
126
|
+
const r = m.value;
|
|
127
|
+
r?.scrollTo({
|
|
128
|
+
top: r.scrollHeight,
|
|
129
129
|
behavior: "smooth"
|
|
130
130
|
});
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
}, {
|
|
134
134
|
default: () => [C("+")]
|
|
135
|
-
}),
|
|
135
|
+
}), o(p, {
|
|
136
136
|
size: y,
|
|
137
137
|
type: "error",
|
|
138
138
|
onClick: () => {
|
|
139
|
-
|
|
139
|
+
c.value = c.value.filter((r) => r.rId !== a.rId);
|
|
140
140
|
}
|
|
141
141
|
}, {
|
|
142
142
|
default: () => [C("-")]
|
|
143
|
-
})])]))]),
|
|
144
|
-
class: `control ${
|
|
145
|
-
}, [!
|
|
143
|
+
})])]))]), o("div", {
|
|
144
|
+
class: `control ${c.value.length ? "" : "noList"}`
|
|
145
|
+
}, [!c.value.length && o(p, {
|
|
146
146
|
size: y,
|
|
147
147
|
type: "success",
|
|
148
148
|
onClick: () => {
|
|
149
|
-
|
|
149
|
+
c.value.push({
|
|
150
150
|
rId: e.randomFun(),
|
|
151
151
|
key: "",
|
|
152
152
|
value: ""
|
|
153
153
|
});
|
|
154
154
|
}
|
|
155
155
|
}, {
|
|
156
|
-
default: () => [
|
|
157
|
-
}), !e.isController &&
|
|
156
|
+
default: () => [n.newTxt]
|
|
157
|
+
}), !e.isController && o(F, null, [!l.hideReset && o(p, {
|
|
158
158
|
size: y,
|
|
159
159
|
type: "default",
|
|
160
160
|
onClick: () => {
|
|
161
|
-
|
|
161
|
+
c.value = A(e.modelValue, e.randomFun, i.arraySplitSymbol), s("onReset");
|
|
162
162
|
}
|
|
163
163
|
}, {
|
|
164
|
-
default: () => [
|
|
165
|
-
}),
|
|
164
|
+
default: () => [n.resetTxt]
|
|
165
|
+
}), o(p, {
|
|
166
166
|
size: y,
|
|
167
167
|
type: "info",
|
|
168
168
|
onClick: () => {
|
|
169
|
-
|
|
170
|
-
const
|
|
171
|
-
|
|
169
|
+
c.value.sort((v, t) => +v.rId - +t.rId);
|
|
170
|
+
const a = P(c.value, i.arraySplitSymbol);
|
|
171
|
+
s("update:modelValue", a), s("onMerge", a, S(c.value)), c.value = A(a, e.randomFun, i.arraySplitSymbol);
|
|
172
172
|
}
|
|
173
173
|
}, {
|
|
174
|
-
default: () => [
|
|
174
|
+
default: () => [n.mergeTxt]
|
|
175
175
|
})])])]);
|
|
176
176
|
}
|
|
177
177
|
});
|
|
178
178
|
function ae(e) {
|
|
179
|
-
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !
|
|
179
|
+
return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !L(e);
|
|
180
180
|
}
|
|
181
|
-
const
|
|
181
|
+
const ke = /* @__PURE__ */ j({
|
|
182
182
|
name: "NaiveUiDynamicCascadeInput",
|
|
183
183
|
props: {
|
|
184
184
|
modelValue: {
|
|
@@ -217,18 +217,18 @@ const se = /* @__PURE__ */ V({
|
|
|
217
217
|
emits: {
|
|
218
218
|
"update:modelValue": (e) => !0,
|
|
219
219
|
onReset: () => !0,
|
|
220
|
-
onMerge: (e,
|
|
220
|
+
onMerge: (e, s) => !0
|
|
221
221
|
},
|
|
222
222
|
setup(e, {
|
|
223
|
-
emit:
|
|
223
|
+
emit: s,
|
|
224
224
|
expose: d
|
|
225
225
|
}) {
|
|
226
|
-
const
|
|
226
|
+
const n = {
|
|
227
227
|
resetTxt: "重置",
|
|
228
228
|
newTxt: "添加项",
|
|
229
229
|
mergeTxt: "合并",
|
|
230
230
|
...e.btnConfigs
|
|
231
|
-
},
|
|
231
|
+
}, l = {
|
|
232
232
|
hideReset: !1,
|
|
233
233
|
maxHeight: "600px",
|
|
234
234
|
allowFilter: !0,
|
|
@@ -237,93 +237,93 @@ const se = /* @__PURE__ */ V({
|
|
|
237
237
|
retractLen: 0,
|
|
238
238
|
borderColors: [],
|
|
239
239
|
...e.configs
|
|
240
|
-
},
|
|
240
|
+
}, i = {
|
|
241
241
|
arraySplitSymbol: ",",
|
|
242
242
|
...e.dyListConfigs
|
|
243
|
-
}, y = (
|
|
244
|
-
let
|
|
245
|
-
const h = Array.isArray(
|
|
246
|
-
return y(typeof
|
|
243
|
+
}, y = (t) => ["string", "number"].includes(t), c = (t) => Object.keys(t).map((r, f) => {
|
|
244
|
+
let u = t[r];
|
|
245
|
+
const h = Array.isArray(u), T = h ? u.every((I) => typeof I == "number") : typeof u == "number", k = u === null;
|
|
246
|
+
return y(typeof u) && (u = t[r]), k && (u = ""), {
|
|
247
247
|
rId: e.randomFun(f),
|
|
248
|
-
key:
|
|
249
|
-
value: Object.prototype.toString.call(
|
|
248
|
+
key: r,
|
|
249
|
+
value: Object.prototype.toString.call(u) === "[object Object]" ? c(t[r]) : h ? u.join(i.arraySplitSymbol) : u,
|
|
250
250
|
isArray: h || void 0,
|
|
251
251
|
isNumber: T || void 0
|
|
252
252
|
};
|
|
253
|
-
}), m = (
|
|
254
|
-
const
|
|
255
|
-
return f.key.trim().length && (
|
|
256
|
-
}, {}),
|
|
257
|
-
class: [`depth-${
|
|
253
|
+
}), m = (t) => t.reduce((r, f) => {
|
|
254
|
+
const u = f.value;
|
|
255
|
+
return f.key.trim().length && (r[f.key] = Array.isArray(u) ? m(u) : ne(f.value, f.isArray, f.isNumber, i.arraySplitSymbol)), r;
|
|
256
|
+
}, {}), a = N(c(e.modelValue)), v = (t, r = 1, f) => o("div", {
|
|
257
|
+
class: [`depth-${r}`, l.showBorder ? "" : "no-border", l.showPad ? "" : "no-pad"],
|
|
258
258
|
style: {
|
|
259
|
-
"--depth":
|
|
260
|
-
["--c" + [
|
|
259
|
+
"--depth": r,
|
|
260
|
+
["--c" + [r]]: re(l.borderColors, r)
|
|
261
261
|
}
|
|
262
|
-
}, [
|
|
263
|
-
const k = Array.isArray(
|
|
264
|
-
return
|
|
262
|
+
}, [t.map((u, h, T) => {
|
|
263
|
+
const k = Array.isArray(u.value), I = y(typeof u.value);
|
|
264
|
+
return o("div", {
|
|
265
265
|
class: "dItem",
|
|
266
|
-
key:
|
|
266
|
+
key: u.rId,
|
|
267
267
|
style: {
|
|
268
|
-
marginLeft:
|
|
268
|
+
marginLeft: r > 1 ? `${r * l.retractLen}px` : "0"
|
|
269
269
|
}
|
|
270
|
-
}, [
|
|
270
|
+
}, [o("div", {
|
|
271
271
|
class: "input"
|
|
272
|
-
}, [!k &&
|
|
273
|
-
value:
|
|
272
|
+
}, [!k && o(F, null, [o(x, {
|
|
273
|
+
value: u.key,
|
|
274
274
|
class: "key",
|
|
275
|
-
onInput: (g) =>
|
|
276
|
-
}, null), C(":")]),
|
|
275
|
+
onInput: (g) => u.key = g
|
|
276
|
+
}, null), C(":")]), o(x, {
|
|
277
277
|
class: `value ${k ? "isKey" : ""}`,
|
|
278
|
-
value:
|
|
278
|
+
value: I ? u.value : u.key,
|
|
279
279
|
onInput: (g) => {
|
|
280
280
|
if (k) {
|
|
281
|
-
|
|
281
|
+
u.key = g;
|
|
282
282
|
return;
|
|
283
283
|
}
|
|
284
|
-
|
|
284
|
+
l.allowFilter && u.isNumber ? u.value = O(g, u.isArray, i.arraySplitSymbol) : u.value = g;
|
|
285
285
|
}
|
|
286
286
|
}, {
|
|
287
|
-
prefix: Array.isArray(
|
|
288
|
-
type:
|
|
287
|
+
prefix: Array.isArray(u.value) ? void 0 : () => o(F, null, [o(p, {
|
|
288
|
+
type: u.isArray ? "success" : "default",
|
|
289
289
|
size: "tiny",
|
|
290
290
|
onClick: () => {
|
|
291
|
-
|
|
291
|
+
u.isArray = !u.isArray;
|
|
292
292
|
}
|
|
293
293
|
}, {
|
|
294
294
|
default: () => [C("Array")]
|
|
295
|
-
}), C(" "),
|
|
296
|
-
type:
|
|
295
|
+
}), C(" "), o(p, {
|
|
296
|
+
type: u.isNumber ? "success" : "default",
|
|
297
297
|
size: "tiny",
|
|
298
298
|
onClick: () => {
|
|
299
|
-
|
|
299
|
+
u.isNumber = !u.isNumber;
|
|
300
300
|
}
|
|
301
301
|
}, {
|
|
302
302
|
default: () => [C("Number")]
|
|
303
303
|
})]),
|
|
304
304
|
suffix: () => {
|
|
305
305
|
let g;
|
|
306
|
-
return
|
|
306
|
+
return r < e.depth ? !k && o(p, {
|
|
307
307
|
type: "success",
|
|
308
308
|
size: "tiny",
|
|
309
309
|
onClick: () => {
|
|
310
|
-
|
|
310
|
+
I && (u.value = [], u.isArray = void 0), u.value.push({
|
|
311
311
|
rId: e.randomFun(),
|
|
312
312
|
key: "",
|
|
313
313
|
value: ""
|
|
314
314
|
});
|
|
315
315
|
}
|
|
316
|
-
}, ae(g = e.newChildTxt(
|
|
316
|
+
}, ae(g = e.newChildTxt(u)) ? g : {
|
|
317
317
|
default: () => [g]
|
|
318
318
|
}) : null;
|
|
319
319
|
}
|
|
320
|
-
})]),
|
|
320
|
+
})]), o("div", {
|
|
321
321
|
class: "btn"
|
|
322
|
-
}, [
|
|
322
|
+
}, [o(p, {
|
|
323
323
|
type: "success",
|
|
324
324
|
disabled: h !== T.length - 1,
|
|
325
325
|
onClick: () => {
|
|
326
|
-
|
|
326
|
+
t.push({
|
|
327
327
|
rId: e.randomFun(),
|
|
328
328
|
key: "",
|
|
329
329
|
value: ""
|
|
@@ -331,13 +331,13 @@ const se = /* @__PURE__ */ V({
|
|
|
331
331
|
}
|
|
332
332
|
}, {
|
|
333
333
|
default: () => [C("+")]
|
|
334
|
-
}),
|
|
334
|
+
}), o(p, {
|
|
335
335
|
type: "error",
|
|
336
336
|
onClick: () => {
|
|
337
|
-
if (
|
|
337
|
+
if (t.splice(h, 1), t.length < 1) {
|
|
338
338
|
if (f === void 0) return m([]);
|
|
339
|
-
const g =
|
|
340
|
-
|
|
339
|
+
const g = a.value.findIndex((D) => D.rId === f?.rId);
|
|
340
|
+
r < 1 ? a.value.splice(g, 1, {
|
|
341
341
|
...f,
|
|
342
342
|
value: ""
|
|
343
343
|
}) : f.value = "";
|
|
@@ -345,57 +345,57 @@ const se = /* @__PURE__ */ V({
|
|
|
345
345
|
}
|
|
346
346
|
}, {
|
|
347
347
|
default: () => [C("-")]
|
|
348
|
-
})]), Array.isArray(
|
|
348
|
+
})]), Array.isArray(u.value) && v(u.value, r + 1, u)]);
|
|
349
349
|
})]);
|
|
350
|
-
return
|
|
350
|
+
return z(a, (t) => {
|
|
351
351
|
if (!e.isController) return;
|
|
352
|
-
const
|
|
353
|
-
|
|
352
|
+
const r = m(t);
|
|
353
|
+
s("update:modelValue", r), s("onMerge", r, S(a.value));
|
|
354
354
|
}, {
|
|
355
355
|
deep: !0
|
|
356
356
|
}), d({
|
|
357
|
-
onSet: (
|
|
358
|
-
|
|
357
|
+
onSet: (t) => {
|
|
358
|
+
a.value = c(t ?? e.modelValue);
|
|
359
359
|
},
|
|
360
|
-
getResult: (
|
|
361
|
-
}), () =>
|
|
360
|
+
getResult: (t = "res") => t === "ori" ? S(a.value) : m(a.value)
|
|
361
|
+
}), () => o("div", {
|
|
362
362
|
class: e.dyCls ?? "dynamicCascadeForm"
|
|
363
|
-
}, [
|
|
363
|
+
}, [o("div", {
|
|
364
364
|
class: "dyFormList",
|
|
365
365
|
style: {
|
|
366
|
-
maxHeight:
|
|
366
|
+
maxHeight: l.maxHeight
|
|
367
367
|
}
|
|
368
|
-
}, [v(
|
|
368
|
+
}, [v(a.value)]), o("div", {
|
|
369
369
|
class: "control"
|
|
370
|
-
}, [!
|
|
370
|
+
}, [!a.value.length && o(p, {
|
|
371
371
|
type: "success",
|
|
372
372
|
onClick: () => {
|
|
373
|
-
|
|
373
|
+
a.value.push({
|
|
374
374
|
rId: e.randomFun(),
|
|
375
375
|
key: "",
|
|
376
376
|
value: ""
|
|
377
377
|
});
|
|
378
378
|
}
|
|
379
379
|
}, {
|
|
380
|
-
default: () => [
|
|
381
|
-
}), !e.isController &&
|
|
380
|
+
default: () => [n.newTxt]
|
|
381
|
+
}), !e.isController && o(F, null, [!l.hideReset && o(p, {
|
|
382
382
|
type: "default",
|
|
383
383
|
onClick: () => {
|
|
384
|
-
|
|
384
|
+
a.value = c(e.modelValue), s("onReset");
|
|
385
385
|
}
|
|
386
386
|
}, {
|
|
387
|
-
default: () => [
|
|
388
|
-
}),
|
|
387
|
+
default: () => [n.resetTxt]
|
|
388
|
+
}), o(p, {
|
|
389
389
|
type: "info",
|
|
390
390
|
onClick: () => {
|
|
391
|
-
const
|
|
392
|
-
|
|
391
|
+
const t = m(a.value);
|
|
392
|
+
s("update:modelValue", t), s("onMerge", t, S(a.value)), a.value = c(t);
|
|
393
393
|
}
|
|
394
394
|
}, {
|
|
395
|
-
default: () => [
|
|
395
|
+
default: () => [n.mergeTxt]
|
|
396
396
|
})])])]);
|
|
397
397
|
}
|
|
398
|
-
}),
|
|
398
|
+
}), Se = /* @__PURE__ */ j({
|
|
399
399
|
name: "NaiDynamicForm",
|
|
400
400
|
props: {
|
|
401
401
|
formConfig: {
|
|
@@ -427,209 +427,209 @@ const se = /* @__PURE__ */ V({
|
|
|
427
427
|
}
|
|
428
428
|
},
|
|
429
429
|
setup(e, {
|
|
430
|
-
emit:
|
|
430
|
+
emit: s,
|
|
431
431
|
expose: d
|
|
432
432
|
}) {
|
|
433
|
-
const
|
|
434
|
-
...
|
|
435
|
-
let f =
|
|
436
|
-
return
|
|
433
|
+
const n = N(null), l = R(() => (e.items ?? []).filter((v) => !v.hidden)), i = R(() => l.value ? l.value.reduce((v, t) => (v[t.key] = t.value.value, v), {}) : {}), y = R(() => ({
|
|
434
|
+
...l.value?.reduce((t, r) => {
|
|
435
|
+
let f = r.rule;
|
|
436
|
+
return r.required && !r.rule && (f = {
|
|
437
437
|
required: !0,
|
|
438
|
-
message: `${
|
|
438
|
+
message: `${r.label}不能为空`,
|
|
439
439
|
trigger: ["blur"]
|
|
440
|
-
}),
|
|
440
|
+
}), t[r.key] = f, t;
|
|
441
441
|
}, {}),
|
|
442
442
|
...e.rules
|
|
443
|
-
})),
|
|
444
|
-
const f =
|
|
445
|
-
return Number(f) - Number(
|
|
443
|
+
})), c = R(() => [...l.value].sort((t, r) => {
|
|
444
|
+
const f = t.sort ?? 1 / 0, u = r.sort ?? 1 / 0;
|
|
445
|
+
return Number(f) - Number(u);
|
|
446
446
|
}));
|
|
447
447
|
function m(v = null) {
|
|
448
|
-
|
|
449
|
-
|
|
448
|
+
l.value && l.value.forEach((t) => {
|
|
449
|
+
t.reset ? t.reset(t) : t.value.value = v;
|
|
450
450
|
});
|
|
451
451
|
}
|
|
452
|
-
function
|
|
453
|
-
return new Promise((v,
|
|
454
|
-
|
|
455
|
-
|
|
452
|
+
function a() {
|
|
453
|
+
return new Promise((v, t) => {
|
|
454
|
+
n.value?.validate((r) => {
|
|
455
|
+
r ? t(r) : v(i.value);
|
|
456
456
|
});
|
|
457
457
|
});
|
|
458
458
|
}
|
|
459
459
|
if (d({
|
|
460
460
|
reset: m,
|
|
461
|
-
validator:
|
|
462
|
-
getResult: (v = "res") => v === "ori" ?
|
|
461
|
+
validator: a,
|
|
462
|
+
getResult: (v = "res") => v === "ori" ? l.value : i.value
|
|
463
463
|
}), !e.items) throw new Error("prop items must be not null");
|
|
464
|
-
return () =>
|
|
464
|
+
return () => o("div", {
|
|
465
465
|
class: "naiDynamicForm"
|
|
466
|
-
}, [
|
|
467
|
-
ref:
|
|
466
|
+
}, [o(B, G({
|
|
467
|
+
ref: n
|
|
468
468
|
}, e.formConfig, {
|
|
469
|
-
model:
|
|
469
|
+
model: i.value,
|
|
470
470
|
rules: y.value
|
|
471
471
|
}), {
|
|
472
472
|
default() {
|
|
473
|
-
const v =
|
|
474
|
-
return e.preset === "grid" ?
|
|
473
|
+
const v = c.value;
|
|
474
|
+
return e.preset === "grid" ? b(H, {
|
|
475
475
|
...e.gridConfig
|
|
476
476
|
}, {
|
|
477
|
-
default: () => v?.map((
|
|
478
|
-
label:
|
|
479
|
-
path:
|
|
477
|
+
default: () => v?.map((t) => b(q, {
|
|
478
|
+
label: t.label,
|
|
479
|
+
path: t.path || t.key
|
|
480
480
|
}, {
|
|
481
|
-
default:
|
|
481
|
+
default: V(t)
|
|
482
482
|
}))
|
|
483
|
-
}) : v?.map((
|
|
484
|
-
label:
|
|
485
|
-
path:
|
|
483
|
+
}) : v?.map((t) => b(_, {
|
|
484
|
+
label: t.label,
|
|
485
|
+
path: t.path || t.key
|
|
486
486
|
}, {
|
|
487
|
-
default:
|
|
487
|
+
default: V(t)
|
|
488
488
|
}));
|
|
489
489
|
}
|
|
490
490
|
})]);
|
|
491
491
|
}
|
|
492
492
|
});
|
|
493
|
-
function
|
|
493
|
+
function V(e) {
|
|
494
494
|
return function() {
|
|
495
495
|
return e.render2 ? e.render2(e) : null;
|
|
496
496
|
};
|
|
497
497
|
}
|
|
498
|
-
function
|
|
499
|
-
return
|
|
498
|
+
function ue(e, s = {}, d) {
|
|
499
|
+
return b(x, {
|
|
500
500
|
...d,
|
|
501
501
|
value: e.value,
|
|
502
|
-
onUpdateValue: (
|
|
503
|
-
e.value =
|
|
502
|
+
onUpdateValue: (n) => {
|
|
503
|
+
e.value = n, d?.onChange?.(n, d);
|
|
504
504
|
},
|
|
505
|
-
...
|
|
505
|
+
...s
|
|
506
506
|
});
|
|
507
507
|
}
|
|
508
|
-
function
|
|
509
|
-
return
|
|
510
|
-
...
|
|
508
|
+
function oe(e, s, d = {}, n) {
|
|
509
|
+
return b(E, {
|
|
510
|
+
...n,
|
|
511
511
|
value: e.value,
|
|
512
|
-
options:
|
|
513
|
-
onUpdateValue: (
|
|
514
|
-
e.value =
|
|
512
|
+
options: s,
|
|
513
|
+
onUpdateValue: (l) => {
|
|
514
|
+
e.value = l, n?.onChange?.(l, n, s);
|
|
515
515
|
},
|
|
516
516
|
...d
|
|
517
517
|
});
|
|
518
518
|
}
|
|
519
|
-
function
|
|
520
|
-
const { value:
|
|
521
|
-
return
|
|
522
|
-
|
|
519
|
+
function se(e, s, d = {}, n, l) {
|
|
520
|
+
const { value: i, labelField: y, valueField: c, ...m } = n, a = y ?? "label", v = c ?? "value", t = m.options ?? s;
|
|
521
|
+
return o(
|
|
522
|
+
K,
|
|
523
523
|
{
|
|
524
524
|
...m,
|
|
525
525
|
value: e.value,
|
|
526
|
-
onUpdateValue: (
|
|
527
|
-
e.value =
|
|
526
|
+
onUpdateValue: (r) => {
|
|
527
|
+
e.value = r, n?.onChange?.(r, n, t);
|
|
528
528
|
},
|
|
529
|
-
options:
|
|
529
|
+
options: t.map((r) => ({ ...r, label: r[a], value: r[v] })),
|
|
530
530
|
...d
|
|
531
531
|
},
|
|
532
532
|
{
|
|
533
|
-
default: () =>
|
|
533
|
+
default: () => l ?? o(p, null, {
|
|
534
534
|
default: () => e.value || "请选择"
|
|
535
535
|
})
|
|
536
536
|
}
|
|
537
537
|
);
|
|
538
538
|
}
|
|
539
|
-
function
|
|
540
|
-
const { valueField:
|
|
541
|
-
return
|
|
542
|
-
...
|
|
539
|
+
function ie(e, s, d = {}, n) {
|
|
540
|
+
const { valueField: l = "value", ...i } = n;
|
|
541
|
+
return b(J, {
|
|
542
|
+
...i,
|
|
543
543
|
value: e.value,
|
|
544
|
-
options:
|
|
544
|
+
options: s,
|
|
545
545
|
onUpdateValue: (y) => {
|
|
546
|
-
e.value = y,
|
|
546
|
+
e.value = y, n?.onChange?.(y, n, s);
|
|
547
547
|
},
|
|
548
|
-
keyField:
|
|
548
|
+
keyField: l,
|
|
549
549
|
...d
|
|
550
550
|
});
|
|
551
551
|
}
|
|
552
|
-
function
|
|
553
|
-
return
|
|
554
|
-
|
|
552
|
+
function de(e, s, d = {}, n) {
|
|
553
|
+
return b(
|
|
554
|
+
w,
|
|
555
555
|
{
|
|
556
|
-
...
|
|
556
|
+
...n,
|
|
557
557
|
value: e.value,
|
|
558
|
-
onUpdateValue: (
|
|
559
|
-
e.value =
|
|
558
|
+
onUpdateValue: (l) => {
|
|
559
|
+
e.value = l, n?.onChange?.(l, n, s);
|
|
560
560
|
},
|
|
561
561
|
...d
|
|
562
562
|
},
|
|
563
563
|
{
|
|
564
|
-
default: () => (
|
|
565
|
-
const y =
|
|
566
|
-
return
|
|
567
|
-
|
|
564
|
+
default: () => (n?.options ?? s).map((i) => {
|
|
565
|
+
const y = n, c = i[y?.labelField ?? "label"], m = i[y?.valueField ?? "value"];
|
|
566
|
+
return b(
|
|
567
|
+
Q,
|
|
568
568
|
{
|
|
569
|
-
...
|
|
570
|
-
label:
|
|
569
|
+
...i,
|
|
570
|
+
label: c,
|
|
571
571
|
value: m
|
|
572
572
|
},
|
|
573
573
|
{
|
|
574
|
-
default: () =>
|
|
574
|
+
default: () => i.label
|
|
575
575
|
}
|
|
576
576
|
);
|
|
577
577
|
})
|
|
578
578
|
}
|
|
579
579
|
);
|
|
580
580
|
}
|
|
581
|
-
function
|
|
582
|
-
return
|
|
583
|
-
|
|
581
|
+
function ce(e, s, d = {}, n) {
|
|
582
|
+
return o(
|
|
583
|
+
w,
|
|
584
584
|
{
|
|
585
|
-
...
|
|
585
|
+
...n,
|
|
586
586
|
value: e.value,
|
|
587
|
-
onUpdateValue: (
|
|
588
|
-
e.value =
|
|
587
|
+
onUpdateValue: (l) => {
|
|
588
|
+
e.value = l, n?.onChange?.(l, n, s);
|
|
589
589
|
},
|
|
590
590
|
...d
|
|
591
591
|
},
|
|
592
592
|
{
|
|
593
|
-
default: () => (
|
|
594
|
-
const y =
|
|
595
|
-
return
|
|
596
|
-
|
|
593
|
+
default: () => (n?.options ?? s).map((i) => {
|
|
594
|
+
const y = n, c = i[y?.labelField ?? "label"], m = i[y?.valueField ?? "value"];
|
|
595
|
+
return o(
|
|
596
|
+
W,
|
|
597
597
|
{
|
|
598
|
-
...
|
|
599
|
-
label:
|
|
598
|
+
...i,
|
|
599
|
+
label: c,
|
|
600
600
|
value: m
|
|
601
601
|
},
|
|
602
602
|
{
|
|
603
|
-
default: () =>
|
|
603
|
+
default: () => i.label
|
|
604
604
|
}
|
|
605
605
|
);
|
|
606
606
|
})
|
|
607
607
|
}
|
|
608
608
|
);
|
|
609
609
|
}
|
|
610
|
-
function
|
|
611
|
-
return
|
|
612
|
-
|
|
610
|
+
function ye(e, s, d = {}, n) {
|
|
611
|
+
return b(
|
|
612
|
+
X,
|
|
613
613
|
{
|
|
614
|
-
...
|
|
614
|
+
...n,
|
|
615
615
|
value: e.value,
|
|
616
|
-
onUpdateValue: (
|
|
617
|
-
e.value =
|
|
616
|
+
onUpdateValue: (l) => {
|
|
617
|
+
e.value = l, n?.onChange?.(l, n, s);
|
|
618
618
|
},
|
|
619
619
|
...d
|
|
620
620
|
},
|
|
621
621
|
{
|
|
622
|
-
default: () =>
|
|
623
|
-
|
|
622
|
+
default: () => b(
|
|
623
|
+
Y,
|
|
624
624
|
{
|
|
625
625
|
itemStyle: "display: flex"
|
|
626
626
|
},
|
|
627
627
|
{
|
|
628
|
-
default: () => (
|
|
629
|
-
const y =
|
|
630
|
-
return
|
|
628
|
+
default: () => (n?.options ?? s).map((i) => {
|
|
629
|
+
const y = n, c = i[y?.labelField ?? "label"], m = i[y?.valueField ?? "value"];
|
|
630
|
+
return b(Z, {
|
|
631
631
|
value: m,
|
|
632
|
-
label:
|
|
632
|
+
label: c
|
|
633
633
|
});
|
|
634
634
|
})
|
|
635
635
|
}
|
|
@@ -637,48 +637,77 @@ function be(e, o, d = {}, t) {
|
|
|
637
637
|
}
|
|
638
638
|
);
|
|
639
639
|
}
|
|
640
|
-
function
|
|
641
|
-
return
|
|
640
|
+
function ve(e, s = {}, d) {
|
|
641
|
+
return b(ee, {
|
|
642
642
|
...d,
|
|
643
643
|
value: e.value,
|
|
644
|
-
onUpdateValue: (
|
|
645
|
-
e.value =
|
|
644
|
+
onUpdateValue: (n) => {
|
|
645
|
+
e.value = n, d?.onChange?.(n, d);
|
|
646
646
|
},
|
|
647
|
-
...
|
|
647
|
+
...s
|
|
648
648
|
});
|
|
649
649
|
}
|
|
650
|
-
function
|
|
651
|
-
return
|
|
650
|
+
function me(e, s = {}, d) {
|
|
651
|
+
return b(le, {
|
|
652
652
|
...d,
|
|
653
653
|
value: e.value,
|
|
654
|
-
onUpdateValue: (
|
|
655
|
-
e.value =
|
|
654
|
+
onUpdateValue: (n) => {
|
|
655
|
+
e.value = n, d?.onChange?.(n, d);
|
|
656
656
|
},
|
|
657
|
-
...
|
|
657
|
+
...s
|
|
658
658
|
});
|
|
659
659
|
}
|
|
660
|
-
function
|
|
661
|
-
return
|
|
660
|
+
function fe(e, s = {}, d) {
|
|
661
|
+
return b(te, {
|
|
662
662
|
...d,
|
|
663
663
|
value: e.value,
|
|
664
|
-
onUpdateValue: (
|
|
665
|
-
e.value =
|
|
664
|
+
onUpdateValue: (n) => {
|
|
665
|
+
e.value = n, d?.onChange?.(n, d);
|
|
666
666
|
},
|
|
667
|
-
...
|
|
667
|
+
...s
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
function pe(e) {
|
|
671
|
+
return U(e) ? e : N(e ?? null);
|
|
672
|
+
}
|
|
673
|
+
function Fe(e, s = !0) {
|
|
674
|
+
const d = {
|
|
675
|
+
renderInput: (l) => ue(l.value, l.renderProps ?? {}, l),
|
|
676
|
+
renderSelect: (l) => oe(l.value, l.options ?? [], l.renderProps ?? {}, l),
|
|
677
|
+
renderPopSelect: (l) => se(l.value, l.options ?? [], l.renderProps ?? {}, l),
|
|
678
|
+
renderTreeSelect: (l) => ie(l.value, l.options ?? [], l.renderProps ?? {}, l),
|
|
679
|
+
renderRadioGroup: (l) => de(l.value, l.options ?? [], l.renderProps ?? {}, l),
|
|
680
|
+
renderRadioButtonGroup: (l) => ce(l.value, l.options ?? [], l.renderProps ?? {}, l),
|
|
681
|
+
renderCheckboxGroup: (l) => ye(l.value, l.options ?? [], l.renderProps ?? {}, l),
|
|
682
|
+
renderSwitch: (l) => ve(l.value, l.renderProps ?? {}, l),
|
|
683
|
+
renderDatePicker: (l) => me(l.value, l.renderProps ?? {}, l),
|
|
684
|
+
renderTimePicker: (l) => fe(l.value, l.renderProps ?? {}, l)
|
|
685
|
+
};
|
|
686
|
+
return e.map((l) => {
|
|
687
|
+
const i = l;
|
|
688
|
+
if (i.value = pe(l.value), typeof l.render2 == "function")
|
|
689
|
+
i.render2 = l.render2;
|
|
690
|
+
else if (l.renderType) {
|
|
691
|
+
const y = d[l.renderType];
|
|
692
|
+
y ? i.render2 = () => y(i) : console.warn(`[useDecorateForm] unknown renderType: ${l.renderType}`);
|
|
693
|
+
} else
|
|
694
|
+
i.render2 = () => d.renderInput(i);
|
|
695
|
+
return s ? M(i) : i;
|
|
668
696
|
});
|
|
669
697
|
}
|
|
670
698
|
export {
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
699
|
+
ke as NaiDynamicCascadeInput,
|
|
700
|
+
Se as NaiDynamicForm,
|
|
701
|
+
he as NaiDynamicInput,
|
|
702
|
+
ye as renderCheckboxGroup,
|
|
703
|
+
me as renderDatePicker,
|
|
704
|
+
ue as renderInput,
|
|
705
|
+
se as renderPopSelect,
|
|
706
|
+
ce as renderRadioButtonGroup,
|
|
707
|
+
de as renderRadioGroup,
|
|
708
|
+
oe as renderSelect,
|
|
709
|
+
ve as renderSwitch,
|
|
710
|
+
fe as renderTimePicker,
|
|
711
|
+
ie as renderTreeSelect,
|
|
712
|
+
Fe as useDecorateForm
|
|
684
713
|
};
|