dynamicformdjx 0.3.5 → 0.4.1
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 +133 -18
- package/dist/elementPlus/EleDynamicForm.d.ts +66 -0
- package/dist/elementPlus/hooks/decorateForm.d.ts +4 -0
- package/dist/elementPlus/hooks/renderForm.d.ts +41 -0
- package/dist/elementPlus/index.cjs +1 -1
- package/dist/elementPlus/index.d.ts +9 -4
- package/dist/elementPlus/index.mjs +602 -163
- package/dist/naiveUi/hooks/decorateForm.d.ts +3 -7
- package/dist/naiveUi/index.cjs +1 -1
- package/dist/naiveUi/index.d.ts +2 -1
- package/dist/naiveUi/index.mjs +342 -325
- package/dist/types/form.d.ts +1 -0
- package/dist/types/index.d.ts +18 -1
- package/package.json +1 -1
- package/dist/components/old/rOld.d.ts +0 -1
package/README.md
CHANGED
|
@@ -1,23 +1,34 @@
|
|
|
1
1
|
# dynamicformdjx
|
|
2
2
|
|
|
3
|
-
基于 **Vue 3**
|
|
3
|
+
基于 **Vue 3** 的动态表单及录入。
|
|
4
4
|
|
|
5
5
|
[文档](https://xczcdjx.github.io/dynamicFormDoc/)
|
|
6
|
+
> 1.当前为0.41版本,已完成所有配合element plus 或naive ui表单的适配
|
|
7
|
+
|
|
8
|
+
> 2.其中简单表单,自定义表单,装饰表单均可使用
|
|
9
|
+
|
|
10
|
+
> 3.文档还在完善中,可参考源码中的components组件查看具体使用
|
|
6
11
|
|
|
7
12
|
[Vue2 版本](https://www.npmjs.com/package/dynamicformdjx-vue2)
|
|
8
13
|
|
|
9
14
|
[React 版本](https://www.npmjs.com/package/dynamicformdjx-react)
|
|
10
15
|
|
|
11
|
-
### 组件版本说明
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
16
|
+
[//]: # (### 组件版本说明)
|
|
17
|
+
|
|
18
|
+
[//]: # (- **v0.2 及以上版本**)
|
|
19
|
+
|
|
20
|
+
[//]: # (- Form字段改为Input, ElementPlus缩短为Ele, NaiveUi缩短为Nai)
|
|
21
|
+
|
|
22
|
+
[//]: # (- 请使用:`DynamicInput`, `DynamicCascadeInput`,`EleDynamicInput`,`NaiDynamicInput` 等导入)
|
|
15
23
|
|
|
16
24
|
|
|
17
|
-
| 版本范围 | 组件导入方式 |
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
[//]: # (| 版本范围 | 组件导入方式 |)
|
|
26
|
+
|
|
27
|
+
[//]: # (|---------|--------------|)
|
|
28
|
+
|
|
29
|
+
[//]: # (| ≥ 0.2 | DynamicInput, DynamicCascadeInput |)
|
|
30
|
+
|
|
31
|
+
[//]: # (| < 0.2 | DynamicForm, DynamicCascadeForm |)
|
|
21
32
|
|
|
22
33
|
## 概述
|
|
23
34
|
|
|
@@ -45,9 +56,9 @@ yarn add dynamicformdjx
|
|
|
45
56
|
pnpm add dynamicformdjx
|
|
46
57
|
```
|
|
47
58
|
### 动态表单 (**新**)
|
|
48
|
-
> (该表单依赖于naive ui,请配合一起使用)
|
|
49
|
-
|
|
50
|
-
|
|
59
|
+
> (该表单依赖于naive ui或element plus,请配合一起使用)
|
|
60
|
+
#### 与Naive ui配合
|
|
61
|
+
##### 1.简单表单
|
|
51
62
|
```vue
|
|
52
63
|
<script setup lang="ts">
|
|
53
64
|
import {ref} from "vue";
|
|
@@ -83,7 +94,8 @@ pnpm add dynamicformdjx
|
|
|
83
94
|
required: true,
|
|
84
95
|
placeholder: '请输入密码',
|
|
85
96
|
render2: f => renderInput(f.value, {showPasswordOn: 'click'}, f),
|
|
86
|
-
span:
|
|
97
|
+
span: 8,
|
|
98
|
+
offset: 2,
|
|
87
99
|
requiredHint:l=>`${l} is not empty`
|
|
88
100
|
},
|
|
89
101
|
{
|
|
@@ -95,7 +107,6 @@ pnpm add dynamicformdjx
|
|
|
95
107
|
{label: '表格', value: 'grid'},
|
|
96
108
|
], {name: 'preset'}, f),
|
|
97
109
|
onChange: (v) => {
|
|
98
|
-
console.log(v)
|
|
99
110
|
presetType.value = v
|
|
100
111
|
}
|
|
101
112
|
},
|
|
@@ -134,7 +145,7 @@ pnpm add dynamicformdjx
|
|
|
134
145
|
<template>
|
|
135
146
|
<NaiDynamicForm :items="formItems" ref="naiDynamicFormRef" :preset="presetType">
|
|
136
147
|
<template #header>
|
|
137
|
-
<h3
|
|
148
|
+
<h3>与Naive ui结合简单表单</h3>
|
|
138
149
|
</template>
|
|
139
150
|
<template #footer>
|
|
140
151
|
<div class="control">
|
|
@@ -158,7 +169,7 @@ pnpm add dynamicformdjx
|
|
|
158
169
|
}
|
|
159
170
|
</style>
|
|
160
171
|
```
|
|
161
|
-
|
|
172
|
+
##### 2.自定义表单
|
|
162
173
|
> (所有render2函数使用自定义)
|
|
163
174
|
##### InputTest.vue
|
|
164
175
|
```vue
|
|
@@ -215,7 +226,7 @@ const formItems = useReactiveForm<FormRow, FormRules | FormItemRule>([
|
|
|
215
226
|
label: "描述",
|
|
216
227
|
value: ref<string | null>(null),
|
|
217
228
|
clearable: true,
|
|
218
|
-
placeholder: '
|
|
229
|
+
placeholder: '请输入描述',
|
|
219
230
|
required: true,
|
|
220
231
|
type: 'textarea',
|
|
221
232
|
render2: f => h(InputTest, {
|
|
@@ -291,7 +302,7 @@ const validatorData = () => {
|
|
|
291
302
|
}
|
|
292
303
|
</style>
|
|
293
304
|
```
|
|
294
|
-
|
|
305
|
+
##### 3.装饰表单
|
|
295
306
|
> (可省略render2函数)
|
|
296
307
|
```vue
|
|
297
308
|
<script setup lang="ts">
|
|
@@ -376,6 +387,110 @@ const validatorData = () => {
|
|
|
376
387
|
</template>
|
|
377
388
|
|
|
378
389
|
<style scoped>
|
|
390
|
+
.control {
|
|
391
|
+
display: flex;
|
|
392
|
+
gap: 5px;
|
|
393
|
+
}
|
|
394
|
+
</style>
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
#### 与Element-plus配合
|
|
398
|
+
> (这里只展示一种,只是导入从"dynamicformdjx/elementPlus"中,类型方法与上方naive ui一致)
|
|
399
|
+
##### 简单表单
|
|
400
|
+
```vue
|
|
401
|
+
<script setup lang="ts">
|
|
402
|
+
import {ref} from "vue";
|
|
403
|
+
import {ElButton} from "element-plus";
|
|
404
|
+
import {useDyForm, useReactiveForm} from "dynamicformdjx";
|
|
405
|
+
import {type eleDynamicFormRef, renderInput, renderRadioGroup, EleDynamicForm} from "dynamicformdjx/elementPlus";
|
|
406
|
+
import type {PresetType} from "dynamicformdjx/types/index";
|
|
407
|
+
|
|
408
|
+
type FormRow = {
|
|
409
|
+
username: string
|
|
410
|
+
password: string
|
|
411
|
+
preset: PresetType
|
|
412
|
+
}
|
|
413
|
+
const eleDynamicFormRef = ref<eleDynamicFormRef | null>(null)
|
|
414
|
+
const presetType = ref<PresetType>('fullRow')
|
|
415
|
+
const formItems = useReactiveForm<FormRow>([
|
|
416
|
+
{
|
|
417
|
+
key: "username",
|
|
418
|
+
label: "姓名",
|
|
419
|
+
value: ref<string | null>(null),
|
|
420
|
+
clearable: true,
|
|
421
|
+
placeholder: '请输入姓名',
|
|
422
|
+
required: true, // 是否必填 (简化rules规则)
|
|
423
|
+
render2: f => renderInput(f.value, {}, f),
|
|
424
|
+
span: 8
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
key: "password",
|
|
428
|
+
label: "密码",
|
|
429
|
+
value: ref<string | null>(null),
|
|
430
|
+
clearable: true,
|
|
431
|
+
type: 'password',
|
|
432
|
+
required: true,
|
|
433
|
+
placeholder: '请输入密码',
|
|
434
|
+
render2: f => renderInput(f.value, {showPassword: true}, f),
|
|
435
|
+
span: 8,
|
|
436
|
+
offset: 2,
|
|
437
|
+
requiredHint: l => `${l} is not empty`
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
key: "preset",
|
|
441
|
+
label: "表格预设",
|
|
442
|
+
value: ref<PresetType | null>(presetType.value),
|
|
443
|
+
render2: f => renderRadioGroup(f.value, [
|
|
444
|
+
{label: '整行', value: 'fullRow'},
|
|
445
|
+
{label: '表格', value: 'grid'},
|
|
446
|
+
], {name: 'preset'}, f),
|
|
447
|
+
onChange: (v) => {
|
|
448
|
+
presetType.value = v
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
])
|
|
452
|
+
const useForm = useDyForm<FormRow>(formItems)
|
|
453
|
+
const getData = () => {
|
|
454
|
+
const res = eleDynamicFormRef.value?.getResult?.()
|
|
455
|
+
console.log(res)
|
|
456
|
+
}
|
|
457
|
+
const resetData = () => eleDynamicFormRef.value?.reset?.()
|
|
458
|
+
const setData = () => useForm.setValues({
|
|
459
|
+
username: 'element-plus',
|
|
460
|
+
password: '520'
|
|
461
|
+
})
|
|
462
|
+
const validatorData = () => {
|
|
463
|
+
// 校验
|
|
464
|
+
eleDynamicFormRef.value?.validator().then(data => {
|
|
465
|
+
console.log(data)
|
|
466
|
+
}).catch(err => {
|
|
467
|
+
console.log(err)
|
|
468
|
+
})
|
|
469
|
+
}
|
|
470
|
+
</script>
|
|
471
|
+
|
|
472
|
+
<template>
|
|
473
|
+
<EleDynamicForm :items="formItems" ref="eleDynamicFormRef" :preset="presetType">
|
|
474
|
+
<template #header>
|
|
475
|
+
<h3>与Element plus结合简单表单</h3>
|
|
476
|
+
</template>
|
|
477
|
+
<template #footer>
|
|
478
|
+
<div class="control">
|
|
479
|
+
<el-button @click="getData" type="success" size="small">get Data</el-button>
|
|
480
|
+
<el-button @click="setData" type="warning" size="small">set Data</el-button>
|
|
481
|
+
<el-button @click="validatorData" type="default" size="small">validate Data</el-button>
|
|
482
|
+
<el-button @click="resetData" type="danger" size="small">reset Data</el-button>
|
|
483
|
+
</div>
|
|
484
|
+
</template>
|
|
485
|
+
</EleDynamicForm>
|
|
486
|
+
</template>
|
|
487
|
+
|
|
488
|
+
<style scoped>
|
|
489
|
+
h3 {
|
|
490
|
+
text-align: center;
|
|
491
|
+
margin: 0 0 10px 0;
|
|
492
|
+
}
|
|
493
|
+
|
|
379
494
|
.control {
|
|
380
495
|
display: flex;
|
|
381
496
|
gap: 5px;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { PropType, SlotsType } from 'vue';
|
|
2
|
+
import { DyFormItem } from '../types/form';
|
|
3
|
+
import { DynamicFormSlots, PresetType } from '../types';
|
|
4
|
+
import { FormRules, FormProps, RowProps } from 'element-plus';
|
|
5
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
6
|
+
formConfig: {
|
|
7
|
+
type: PropType<FormProps>;
|
|
8
|
+
default: () => {
|
|
9
|
+
labelPosition: string;
|
|
10
|
+
size: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
rowConfig: {
|
|
14
|
+
type: PropType<RowProps>;
|
|
15
|
+
default: () => {
|
|
16
|
+
gutter: number;
|
|
17
|
+
justify: string;
|
|
18
|
+
align: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
rules: {
|
|
22
|
+
type: PropType<FormRules<any>>;
|
|
23
|
+
};
|
|
24
|
+
preset: {
|
|
25
|
+
type: PropType<PresetType>;
|
|
26
|
+
default: string;
|
|
27
|
+
validator: (value: string) => boolean;
|
|
28
|
+
};
|
|
29
|
+
items: {
|
|
30
|
+
type: PropType<Array<DyFormItem>>;
|
|
31
|
+
require: boolean;
|
|
32
|
+
};
|
|
33
|
+
}>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
34
|
+
formConfig: {
|
|
35
|
+
type: PropType<FormProps>;
|
|
36
|
+
default: () => {
|
|
37
|
+
labelPosition: string;
|
|
38
|
+
size: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
rowConfig: {
|
|
42
|
+
type: PropType<RowProps>;
|
|
43
|
+
default: () => {
|
|
44
|
+
gutter: number;
|
|
45
|
+
justify: string;
|
|
46
|
+
align: string;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
rules: {
|
|
50
|
+
type: PropType<FormRules<any>>;
|
|
51
|
+
};
|
|
52
|
+
preset: {
|
|
53
|
+
type: PropType<PresetType>;
|
|
54
|
+
default: string;
|
|
55
|
+
validator: (value: string) => boolean;
|
|
56
|
+
};
|
|
57
|
+
items: {
|
|
58
|
+
type: PropType<Array<DyFormItem>>;
|
|
59
|
+
require: boolean;
|
|
60
|
+
};
|
|
61
|
+
}>> & Readonly<{}>, {
|
|
62
|
+
formConfig: FormProps;
|
|
63
|
+
preset: PresetType;
|
|
64
|
+
rowConfig: RowProps;
|
|
65
|
+
}, SlotsType<DynamicFormSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
66
|
+
export default _default;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DecorateDyFormItem, Renderers } from '../../types';
|
|
2
|
+
import { DyFormItem } from '../../types/form';
|
|
3
|
+
export declare function createUseDecorateForm(renderers: Renderers<any, any>): <Row extends Record<string, any>, RuleT = any>(items: DecorateDyFormItem<Row, RuleT>[], isReactive?: boolean) => DyFormItem<Row, RuleT>[];
|
|
4
|
+
export declare const useDecorateForm: <Row extends Record<string, any>, RuleT = any>(items: DecorateDyFormItem<Row, RuleT>[], isReactive?: boolean) => DyFormItem<Row, RuleT>[];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { InputProps } from 'element-plus';
|
|
2
|
+
import { Ref, VNode, AllowedComponentProps } from 'vue';
|
|
3
|
+
import { DyFormItem } from '../../types/form';
|
|
4
|
+
type AnyProps = Record<string, any> & AllowedComponentProps;
|
|
5
|
+
type BasicOption = Record<string, any>;
|
|
6
|
+
export declare function renderInput(model: Ref<string>, optionProps?: InputProps | AllowedComponentProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
7
|
+
[key: string]: any;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function renderSelect(model: Ref<any>, options: any[], optionProps?: AnyProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}>;
|
|
12
|
+
/**
|
|
13
|
+
* PopSelect(Element Plus 无 1:1 组件)
|
|
14
|
+
* - 单选:ElDropdown(点击项立即选中)
|
|
15
|
+
* - 多选(model 是数组):ElPopover + ElCheckboxGroup
|
|
16
|
+
*/
|
|
17
|
+
export declare function renderPopSelect(model: Ref<string | number | Array<string | number> | null>, options: Array<any>, optionProps?: AnyProps, rf?: DyFormItem, defaultRender?: VNode): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
}>;
|
|
20
|
+
export declare function renderTreeSelect(model: Ref<any>, options: any[], optionProps?: AnyProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function renderRadioGroup(value: Ref<string | number | null | undefined>, options: BasicOption[], optionProps?: AnyProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}>;
|
|
26
|
+
export declare function renderRadioButtonGroup(value: Ref<string | number | null | undefined>, options: BasicOption[], optionProps?: AnyProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
}>;
|
|
29
|
+
export declare function renderCheckboxGroup(model: Ref<(string | number)[]>, options: BasicOption[], optionProps?: AnyProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
}>;
|
|
32
|
+
export declare function renderSwitch(value: Ref<boolean>, optionProps?: AnyProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
}>;
|
|
35
|
+
export declare function renderDatePicker(value: Ref<any>, optionProps?: AnyProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
36
|
+
[key: string]: any;
|
|
37
|
+
}>;
|
|
38
|
+
export declare function renderTimePicker(value: Ref<any>, optionProps?: AnyProps, rf?: DyFormItem): VNode<import('vue').RendererNode, import('vue').RendererElement, {
|
|
39
|
+
[key: string]: any;
|
|
40
|
+
}>;
|
|
41
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),f=require("../index-CA3F2Lxo.cjs"),u=require("element-plus"),k=e.defineComponent({name:"EleDynamicInput",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,s)=>!0},setup(t,{emit:s,expose:C}){const N={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...t.btnConfigs},i={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,...t.configs},c={arraySplitSymbol:",",...t.dyListConfigs},m=t.size,o=e.ref(f.tranArr(t.modelValue,t.randomFun,c.arraySplitSymbol)),V=e.ref(null);return e.watch(o,l=>{if(!t.isController)return;const v=f.resetObj(l,c.arraySplitSymbol);s("update:modelValue",v),s("onMerge",v,e.toRaw(o.value))},{deep:!0}),C({onSet:l=>{o.value=f.tranArr(l??t.modelValue,t.randomFun,c.arraySplitSymbol)},getResult:(l="res")=>l==="ori"?e.toRaw(o.value):f.resetObj(o.value,c.arraySplitSymbol)}),()=>e.createVNode("div",{class:t.dyCls??`dynamicForm ${m}`,style:{maxHeight:i.maxHeight}},[e.createVNode("div",{class:"dyFormList",ref:V},[o.value.map((l,v,n)=>e.createVNode("div",{class:"dItem",key:l.rId},[e.createVNode("div",{class:"input"},[e.createVNode(u.ElInput,{size:m,modelValue:l.key,class:"key",onInput:r=>{l.key=r}},null),e.createTextVNode(":"),e.createVNode(u.ElInput,{size:m,modelValue:l.value,class:"value",onInput:r=>{i.allowFilter&&l.isNumber?l.value=f.formatNumberInput(r,l.isArray,c.arraySplitSymbol):l.value=r}},{prefix:()=>e.createVNode(e.Fragment,null,[e.createVNode(u.ElButton,{class:"typeBtn",type:l.isArray?"success":"default",size:"small",onClick:()=>{l.isArray=!l.isArray}},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),e.createVNode(u.ElButton,{class:"typeBtn",type:l.isNumber?"success":"default",size:"small",onClick:()=>{l.isNumber=!l.isNumber}},{default:()=>[e.createTextVNode("Number")]})])})]),e.createVNode("div",{class:"btn"},[e.createVNode(u.ElButton,{type:"success",size:m,disabled:v!==n.length-1,onClick:()=>{o.value.push({rId:t.randomFun(),key:"",value:""}),i.autoScroll&&e.nextTick(()=>{const r=V.value;r?.scrollTo({top:r.scrollHeight,behavior:"smooth"})})}},{default:()=>[e.createTextVNode("+")]}),e.createVNode(u.ElButton,{size:m,type:"danger",onClick:()=>{o.value=o.value.filter(r=>r.rId!==l.rId)}},{default:()=>[e.createTextVNode("-")]})])]))]),e.createVNode("div",{class:"control"},[!o.value.length&&e.createVNode(u.ElButton,{size:m,type:"success",onClick:()=>{o.value.push({rId:t.randomFun(),key:"",value:""})}},{default:()=>[N.newTxt]}),!t.isController&&e.createVNode(e.Fragment,null,[!i.hideReset&&e.createVNode(u.ElButton,{size:m,type:"default",onClick:()=>{o.value=f.tranArr(t.modelValue,t.randomFun,c.arraySplitSymbol),s("onReset")}},{default:()=>[N.resetTxt]}),e.createVNode(u.ElButton,{size:m,type:"info",onClick:()=>{o.value.sort((v,n)=>+v.rId-+n.rId);const l=f.resetObj(o.value,c.arraySplitSymbol);s("update:modelValue",l),s("onMerge",l,e.toRaw(o.value)),o.value=f.tranArr(l,t.randomFun,c.arraySplitSymbol)}},{default:()=>[N.mergeTxt]})])])])}});function I(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!e.isVNode(t)}const A=e.defineComponent({name:"EleDynamicCascadeInput",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,s)=>!0},setup(t,{emit:s,expose:C}){const N={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...t.btnConfigs},i={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,showPad:!0,retractLen:0,borderColors:[],...t.configs},c={arraySplitSymbol:",",...t.dyListConfigs},m=n=>["string","number"].includes(n),o=n=>Object.keys(n).map((r,d)=>{let a=n[r];const b=Array.isArray(a),x=b?a.every(p=>typeof p=="number"):typeof a=="number",g=a===null;return m(typeof a)&&(a=n[r]),g&&(a=""),{rId:t.randomFun(d),key:r,value:Object.prototype.toString.call(a)==="[object Object]"?o(n[r]):b?a.join(c.arraySplitSymbol):a,isArray:b||void 0,isNumber:x||void 0}}),V=n=>n.reduce((r,d)=>{const a=d.value;return d.key.trim().length&&(r[d.key]=Array.isArray(a)?V(a):f.parseValue(d.value,d.isArray,d.isNumber,c.arraySplitSymbol)),r},{}),l=e.ref(o(t.modelValue)),v=(n,r=1,d)=>e.createVNode("div",{class:[`depth-${r}`,i.showBorder?"":"no-border",i.showPad?"":"no-pad"],style:{"--depth":r,["--c"+[r]]:f.saferRepairColor(i.borderColors,r)}},[n.map((a,b,x)=>{const g=Array.isArray(a.value),p=m(typeof a.value);return e.createVNode("div",{class:"dItem",key:a.rId,style:{marginLeft:r>1?`${r*i.retractLen}px`:"0"}},[e.createVNode("div",{class:"input"},[!g&&e.createVNode(e.Fragment,null,[e.createVNode(u.ElInput,{modelValue:a.key,class:"key",onInput:y=>a.key=y},null),e.createTextVNode(":")]),e.createVNode(u.ElInput,{class:`value ${g?"isKey":""}`,modelValue:p?a.value:a.key,onInput:y=>{if(g){a.key=y;return}i.allowFilter&&a.isNumber?a.value=f.formatNumberInput(y,a.isArray,c.arraySplitSymbol):a.value=y}},{prefix:Array.isArray(a.value)?void 0:()=>e.createVNode(e.Fragment,null,[e.createVNode(u.ElButton,{type:a.isArray?"success":"default",size:"small",onClick:()=>{a.isArray=!a.isArray}},{default:()=>[e.createTextVNode("Array")]}),e.createTextVNode(" "),e.createVNode(u.ElButton,{type:a.isNumber?"success":"default",size:"small",onClick:()=>{a.isNumber=!a.isNumber}},{default:()=>[e.createTextVNode("Number")]})]),suffix:()=>{let y;return r<t.depth?!g&&e.createVNode(u.ElButton,{type:"success",size:"small",onClick:()=>{p&&(a.value=[],a.isArray=void 0),a.value.push({rId:t.randomFun(),key:"",value:""})}},I(y=t.newChildTxt(a))?y:{default:()=>[y]}):null}})]),e.createVNode("div",{class:"btn"},[e.createVNode(u.ElButton,{type:"success",disabled:b!==x.length-1,onClick:()=>{n.push({rId:t.randomFun(),key:"",value:""})}},{default:()=>[e.createTextVNode("+")]}),e.createVNode(u.ElButton,{type:"danger",onClick:()=>{if(n.splice(b,1),n.length<1){if(d===void 0)return V([]);const y=l.value.findIndex(S=>S.rId===d?.rId);r<1?l.value.splice(y,1,{...d,value:""}):d.value=""}}},{default:()=>[e.createTextVNode("-")]})]),Array.isArray(a.value)&&v(a.value,r+1,a)])})]);return e.watch(l,n=>{if(!t.isController)return;const r=V(n);s("update:modelValue",r),s("onMerge",r,e.toRaw(l.value))},{deep:!0}),C({onSet:n=>{l.value=o(n??t.modelValue)},getResult:(n="res")=>n==="ori"?e.toRaw(l.value):V(l.value)}),()=>e.createVNode("div",{class:t.dyCls??"dynamicCascadeForm"},[e.createVNode("div",{class:"dyFormList",style:{maxHeight:i.maxHeight}},[v(l.value)]),e.createVNode("div",{class:"control"},[!l.value.length&&e.createVNode(u.ElButton,{type:"success",onClick:()=>{l.value.push({rId:t.randomFun(),key:"",value:""})}},{default:()=>[N.newTxt]}),!t.isController&&e.createVNode(e.Fragment,null,[!i.hideReset&&e.createVNode(u.ElButton,{type:"default",onClick:()=>{l.value=o(t.modelValue),s("onReset")}},{default:()=>[N.resetTxt]}),e.createVNode(u.ElButton,{type:"info",onClick:()=>{const n=V(l.value);s("update:modelValue",n),s("onMerge",n,e.toRaw(l.value)),l.value=o(n)}},{default:()=>[N.mergeTxt]})])])])}});exports.EleDynamicCascadeInput=A;exports.EleDynamicInput=k;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("vue"),k=require("../index-CA3F2Lxo.cjs"),d=require("element-plus"),D=l.defineComponent({name:"EleDynamicInput",props:{size:{type:String},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:e=>`${Date.now()}_${e??0}`},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},modelValue:{type:Object,required:!0}},emits:{"update:modelValue":e=>!0,onReset:()=>!0,onMerge:(e,c)=>!0},setup(e,{emit:c,expose:i}){const y={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...e.btnConfigs},u={hideReset:!1,maxHeight:"300px",autoScroll:!0,allowFilter:!0,...e.configs},s={arraySplitSymbol:",",...e.dyListConfigs},p=e.size,r=l.ref(k.tranArr(e.modelValue,e.randomFun,s.arraySplitSymbol)),v=l.ref(null);return l.watch(r,a=>{if(!e.isController)return;const m=k.resetObj(a,s.arraySplitSymbol);c("update:modelValue",m),c("onMerge",m,l.toRaw(r.value))},{deep:!0}),i({onSet:a=>{r.value=k.tranArr(a??e.modelValue,e.randomFun,s.arraySplitSymbol)},getResult:(a="res")=>a==="ori"?l.toRaw(r.value):k.resetObj(r.value,s.arraySplitSymbol)}),()=>l.createVNode("div",{class:e.dyCls??`dynamicForm ${p}`,style:{maxHeight:u.maxHeight}},[l.createVNode("div",{class:`dyFormList ${r.value.length?"":"noList"}`,ref:v},[r.value.map((a,m,n)=>l.createVNode("div",{class:"dItem",key:a.rId},[l.createVNode("div",{class:"input"},[l.createVNode(d.ElInput,{size:p,modelValue:a.key,class:"key",onInput:t=>{a.key=t}},null),l.createTextVNode(":"),l.createVNode(d.ElInput,{size:p,modelValue:a.value,class:"value",onInput:t=>{u.allowFilter&&a.isNumber?a.value=k.formatNumberInput(t,a.isArray,s.arraySplitSymbol):a.value=t}},{prefix:()=>l.createVNode(l.Fragment,null,[l.createVNode(d.ElButton,{class:"typeBtn",type:a.isArray?"success":"default",size:"small",onClick:()=>{a.isArray=!a.isArray}},{default:()=>[l.createTextVNode("Array")]}),l.createTextVNode(" "),l.createVNode(d.ElButton,{class:"typeBtn",type:a.isNumber?"success":"default",size:"small",onClick:()=>{a.isNumber=!a.isNumber}},{default:()=>[l.createTextVNode("Number")]})])})]),l.createVNode("div",{class:"btn"},[l.createVNode(d.ElButton,{type:"success",size:p,disabled:m!==n.length-1,onClick:()=>{r.value.push({rId:e.randomFun(),key:"",value:""}),u.autoScroll&&l.nextTick(()=>{const t=v.value;t?.scrollTo({top:t.scrollHeight,behavior:"smooth"})})}},{default:()=>[l.createTextVNode("+")]}),l.createVNode(d.ElButton,{size:p,type:"danger",onClick:()=>{r.value=r.value.filter(t=>t.rId!==a.rId)}},{default:()=>[l.createTextVNode("-")]})])]))]),l.createVNode("div",{class:`control ${r.value.length?"":"noList"}`},[!r.value.length&&l.createVNode(d.ElButton,{size:p,type:"success",onClick:()=>{r.value.push({rId:e.randomFun(),key:"",value:""})}},{default:()=>[y.newTxt]}),!e.isController&&l.createVNode(l.Fragment,null,[!u.hideReset&&l.createVNode(d.ElButton,{size:p,type:"default",onClick:()=>{r.value=k.tranArr(e.modelValue,e.randomFun,s.arraySplitSymbol),c("onReset")}},{default:()=>[y.resetTxt]}),l.createVNode(d.ElButton,{size:p,type:"info",onClick:()=>{r.value.sort((m,n)=>+m.rId-+n.rId);const a=k.resetObj(r.value,s.arraySplitSymbol);c("update:modelValue",a),c("onMerge",a,l.toRaw(r.value)),r.value=k.tranArr(a,e.randomFun,s.arraySplitSymbol)}},{default:()=>[y.mergeTxt]})])])])}});function G(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}const $=l.defineComponent({name:"EleDynamicCascadeInput",props:{modelValue:{type:Object,required:!0},isController:{type:Boolean},dyCls:{type:String},randomFun:{type:Function,default:e=>`${Date.now()}_${e??0}`},depth:{type:Number,default:3},btnConfigs:{type:Object},configs:{type:Object},dyListConfigs:{type:Object},newChildTxt:{type:Function,default:e=>`添加 '${e.key}' 子项`}},emits:{"update:modelValue":e=>!0,onReset:()=>!0,onMerge:(e,c)=>!0},setup(e,{emit:c,expose:i}){const y={resetTxt:"重置",newTxt:"添加项",mergeTxt:"合并",...e.btnConfigs},u={hideReset:!1,maxHeight:"600px",allowFilter:!0,showBorder:!0,showPad:!0,retractLen:0,borderColors:[],...e.configs},s={arraySplitSymbol:",",...e.dyListConfigs},p=n=>["string","number"].includes(n),r=n=>Object.keys(n).map((t,f)=>{let o=n[t];const b=Array.isArray(o),C=b?o.every(h=>typeof h=="number"):typeof o=="number",N=o===null;return p(typeof o)&&(o=n[t]),N&&(o=""),{rId:e.randomFun(f),key:t,value:Object.prototype.toString.call(o)==="[object Object]"?r(n[t]):b?o.join(s.arraySplitSymbol):o,isArray:b||void 0,isNumber:C||void 0}}),v=n=>n.reduce((t,f)=>{const o=f.value;return f.key.trim().length&&(t[f.key]=Array.isArray(o)?v(o):k.parseValue(f.value,f.isArray,f.isNumber,s.arraySplitSymbol)),t},{}),a=l.ref(r(e.modelValue)),m=(n,t=1,f)=>l.createVNode("div",{class:[`depth-${t}`,u.showBorder?"":"no-border",u.showPad?"":"no-pad"],style:{"--depth":t,["--c"+[t]]:k.saferRepairColor(u.borderColors,t)}},[n.map((o,b,C)=>{const N=Array.isArray(o.value),h=p(typeof o.value);return l.createVNode("div",{class:"dItem",key:o.rId,style:{marginLeft:t>1?`${t*u.retractLen}px`:"0"}},[l.createVNode("div",{class:"input"},[!N&&l.createVNode(l.Fragment,null,[l.createVNode(d.ElInput,{modelValue:o.key,class:"key",onInput:V=>o.key=V},null),l.createTextVNode(":")]),l.createVNode(d.ElInput,{class:`value ${N?"isKey":""}`,modelValue:h?o.value:o.key,onInput:V=>{if(N){o.key=V;return}u.allowFilter&&o.isNumber?o.value=k.formatNumberInput(V,o.isArray,s.arraySplitSymbol):o.value=V}},{prefix:Array.isArray(o.value)?void 0:()=>l.createVNode(l.Fragment,null,[l.createVNode(d.ElButton,{type:o.isArray?"success":"default",size:"small",onClick:()=>{o.isArray=!o.isArray}},{default:()=>[l.createTextVNode("Array")]}),l.createTextVNode(" "),l.createVNode(d.ElButton,{type:o.isNumber?"success":"default",size:"small",onClick:()=>{o.isNumber=!o.isNumber}},{default:()=>[l.createTextVNode("Number")]})]),suffix:()=>{let V;return t<e.depth?!N&&l.createVNode(d.ElButton,{type:"success",size:"small",onClick:()=>{h&&(o.value=[],o.isArray=void 0),o.value.push({rId:e.randomFun(),key:"",value:""})}},G(V=e.newChildTxt(o))?V:{default:()=>[V]}):null}})]),l.createVNode("div",{class:"btn"},[l.createVNode(d.ElButton,{type:"success",disabled:b!==C.length-1,onClick:()=>{n.push({rId:e.randomFun(),key:"",value:""})}},{default:()=>[l.createTextVNode("+")]}),l.createVNode(d.ElButton,{type:"danger",onClick:()=>{if(n.splice(b,1),n.length<1){if(f===void 0)return v([]);const V=a.value.findIndex(F=>F.rId===f?.rId);t<1?a.value.splice(V,1,{...f,value:""}):f.value=""}}},{default:()=>[l.createTextVNode("-")]})]),Array.isArray(o.value)&&m(o.value,t+1,o)])})]);return l.watch(a,n=>{if(!e.isController)return;const t=v(n);c("update:modelValue",t),c("onMerge",t,l.toRaw(a.value))},{deep:!0}),i({onSet:n=>{a.value=r(n??e.modelValue)},getResult:(n="res")=>n==="ori"?l.toRaw(a.value):v(a.value)}),()=>l.createVNode("div",{class:e.dyCls??"dynamicCascadeForm"},[l.createVNode("div",{class:"dyFormList",style:{maxHeight:u.maxHeight}},[m(a.value)]),l.createVNode("div",{class:"control"},[!a.value.length&&l.createVNode(d.ElButton,{type:"success",onClick:()=>{a.value.push({rId:e.randomFun(),key:"",value:""})}},{default:()=>[y.newTxt]}),!e.isController&&l.createVNode(l.Fragment,null,[!u.hideReset&&l.createVNode(d.ElButton,{type:"default",onClick:()=>{a.value=r(e.modelValue),c("onReset")}},{default:()=>[y.resetTxt]}),l.createVNode(d.ElButton,{type:"info",onClick:()=>{const n=v(a.value);c("update:modelValue",n),c("onMerge",n,l.toRaw(a.value)),a.value=r(n)}},{default:()=>[y.mergeTxt]})])])])}}),z=l.defineComponent({name:"EleDynamicForm",props:{formConfig:{type:Object,default:()=>({labelPosition:"left",size:"default"})},rowConfig:{type:Object,default:()=>({gutter:10,justify:"start",align:"top"})},rules:{type:Object},preset:{type:String,default:"fullRow",validator:e=>["fullRow","grid"].includes(e)?!0:(console.error("preset value must be `fullRow` or `grid`, the default value is `fullRow`"),!1)},items:{type:Array,require:!0}},slots:Object,setup(e,{expose:c,slots:i}){const y=l.ref(null),u=l.computed(()=>(e.items??[]).filter(m=>!m.hidden)),s=l.computed(()=>u.value?u.value.reduce((m,n)=>(m[n.key]=n.value.value,m),{}):{}),p=l.computed(()=>({...u.value?.reduce((n,t)=>{let f=t.rule;return t.required&&!t.rule&&(f={required:!0,message:t.requiredHint?.(t.label)??`${t.label}不能为空`,trigger:"blur"}),n[t.key]=f,n},{}),...e.rules})),r=l.computed(()=>[...u.value].sort((n,t)=>{const f=n.sort??1/0,o=t.sort??1/0;return Number(f)-Number(o)}));function v(m=null){u.value&&u.value.forEach(n=>{n.value.value=m})}function a(){return new Promise((m,n)=>{y.value?.validate((t,f)=>{t?m(s.value):n(f)})})}if(c({reset:v,validator:a,getResult:(m="res")=>m==="ori"?u.value:s.value}),!e.items)throw new Error("prop items must be not null");return()=>l.createVNode("div",{class:"naiDynamicForm"},[i.header&&l.createVNode("div",{class:"header"},[i.header?.()]),l.createVNode(d.ElForm,l.mergeProps({ref:y},e.formConfig,{model:s.value,rules:p.value}),{default(){const m=r.value;return e.preset==="grid"?l.h(d.ElRow,{...e.rowConfig},{default:()=>m?.map(n=>l.h(d.ElCol,{span:n.span??24,offset:n.offset??0},{default:()=>l.h(d.ElFormItem,{label:n.label,prop:n.path||n.key},{default:R(n)})}))}):m?.map(n=>l.h(d.ElFormItem,{label:n.label,prop:n.path||n.key},{default:R(n)}))}}),i.footer&&l.h("div",{class:"footer"},i.footer?.())])}});function R(e){return function(){return e.render2?e.render2(e):null}}function g(e,c,i){return e?.[c]??i}function M(e){return!!e&&(e.type==="group"||Array.isArray(e.children)||Array.isArray(e.options))}function E(e){return(e??[]).map(c=>{if(M(c)){const i=c.children??c.options??[];return{...c,__isGroup:!0,__children:i}}return{...c,__isGroup:!1}})}function L(e,c,i="label",y="value"){const u=E(c);for(const s of u)if(s.__isGroup){for(const p of s.__children)if(g(p,y,p.value)===e)return g(p,i,p.label)}else if(g(s,y,s.value)===e)return g(s,i,s.label);return""}function I(e,c={},i){const{onChange:y,value:u,...s}=i;return l.h(d.ElInput,{...s,modelValue:e.value,"onUpdate:modelValue":p=>{e.value=p,i?.onChange?.(p,i)},...c})}function T(e,c,i={},y){const{onChange:u,labelField:s,valueField:p,options:r,...v}=y??{},a=s??"label",m=p??"value",n=E(r??c);return l.h(d.ElSelect,{...v,modelValue:e.value,"onUpdate:modelValue":t=>{e.value=t,y?.onChange?.(t,y,n)},...i},{default:()=>n.map((t,f)=>{if(t.__isGroup)return l.h(d.ElOptionGroup,{key:t.key??`g-${f}`,label:g(t,a,t.label)},{default:()=>(t.__children??[]).map((C,N)=>{const h=g(C,a,C.label),V=g(C,m,C.value);return l.h(d.ElOption,{key:C.key??`${f}-${N}`,label:h,value:V,disabled:C.disabled})})});const o=g(t,a,t.label),b=g(t,m,t.value);return l.h(d.ElOption,{key:t.key??`${f}`,label:o,value:b,disabled:t.disabled})})})}function x(e,c,i={},y,u){const{labelField:s,valueField:p,options:r,onChange:v,...a}=y??{},m=s??"label",n=p??"value",t=r??c,f=E(t),o=()=>{if(u)return u;const b=Array.isArray(e.value)?e.value.length?`已选 ${e.value.length} 项`:"请选择":e.value!=null?L(e.value,t,m,n)||String(e.value):"请选择";return l.h(d.ElButton,null,{default:()=>b})};return Array.isArray(e.value)?l.createVNode(d.ElPopover,{trigger:"click",...a,...i},{reference:()=>o(),default:()=>l.h(d.ElCheckboxGroup,{modelValue:e.value,"onUpdate:modelValue":b=>{e.value=b,y?.onChange?.(b,y,f)}},{default:()=>l.h(d.ElSpace,{wrap:!0},{default:()=>f.flatMap((b,C)=>(b.__isGroup?b.__children??[]:[b]).map((h,V)=>{const F=g(h,m,h.label),S=g(h,n,h.value);return l.h(d.ElCheckbox,{key:h.key??`${C}-${V}`,label:S,disabled:h.disabled},{default:()=>F})}))})})}):l.createVNode(d.ElDropdown,{trigger:"click",...a,onCommand:b=>{e.value=b,y?.onChange?.(b,y,f)},...i},{default:()=>o(),dropdown:()=>l.h(d.ElDropdownMenu,null,{default:()=>f.flatMap((b,C)=>(b.__isGroup?b.__children??[]:[b]).map((h,V)=>{const F=g(h,m,h.label),S=g(h,n,h.value);return l.h(d.ElDropdownItem,{key:h.key??`${C}-${V}`,command:S,disabled:h.disabled},{default:()=>F})}))})})}function A(e,c,i={},y){const{valueField:u="value",labelField:s="label",childrenField:p="children",onChange:r,options:v,...a}=y??{},m=v??c;return l.h(d.ElTreeSelect,{...a,data:m,modelValue:e.value,"onUpdate:modelValue":n=>{e.value=n,y?.onChange?.(n,y,m)},props:{value:u,label:s,children:p,disabled:"disabled"},...i})}function w(e,c,i={},y){const{onChange:u,labelField:s,valueField:p,options:r,...v}=y??{},a=s??"label",m=p??"value",n=r??c;return l.h(d.ElRadioGroup,{...v,modelValue:e.value,"onUpdate:modelValue":t=>{e.value=t,y?.onChange?.(t,y,n)},...i},{default:()=>(n??[]).map((t,f)=>{const o=g(t,a,t.label),b=g(t,m,t.value);return l.h(d.ElRadio,{key:t.key??f,label:b,disabled:t.disabled},()=>o)})})}function O(e,c,i={},y){const{onChange:u,labelField:s,valueField:p,options:r,...v}=y??{},a=s??"label",m=p??"value",n=r??c;return l.h(d.ElRadioGroup,{...v,modelValue:e.value,"onUpdate:modelValue":t=>{e.value=t,y?.onChange?.(t,y,n)},...i},{default:()=>(n??[]).map((t,f)=>{const o=g(t,a,t.label),b=g(t,m,t.value);return l.h(d.ElRadioButton,{key:t.key??f,label:b,disabled:t.disabled},()=>o)})})}function P(e,c,i={},y){const{onChange:u,labelField:s,valueField:p,options:r,...v}=y??{},a=s??"label",m=p??"value",n=r??c;return l.h(d.ElCheckboxGroup,{...v,modelValue:e.value,"onUpdate:modelValue":t=>{e.value=t,y?.onChange?.(t,y,n)},...i},{default:()=>l.h(d.ElSpace,{wrap:!0},{default:()=>(n??[]).map((t,f)=>{const o=g(t,a,t.label),b=g(t,m,t.value);return l.h(d.ElCheckbox,{key:t.key??f,label:b,disabled:t.disabled},()=>o)})})})}function _(e,c={},i){const{onChange:y,...u}=i??{};return l.h(d.ElSwitch,{...u,modelValue:e.value,"onUpdate:modelValue":s=>{e.value=s,i?.onChange?.(s,i)},...c})}function B(e,c={},i){const{onChange:y,...u}=i??{};return l.h(d.ElDatePicker,{...u,modelValue:e.value,"onUpdate:modelValue":s=>{e.value=s,i?.onChange?.(s,i)},...c})}function j(e,c={},i){const{onChange:y,...u}=i??{};return l.h(d.ElTimePicker,{...u,modelValue:e.value,"onUpdate:modelValue":s=>{e.value=s,i?.onChange?.(s,i)},...c})}const U=Object.freeze(Object.defineProperty({__proto__:null,renderCheckboxGroup:P,renderDatePicker:B,renderInput:I,renderPopSelect:x,renderRadioButtonGroup:O,renderRadioGroup:w,renderSelect:T,renderSwitch:_,renderTimePicker:j,renderTreeSelect:A},Symbol.toStringTag,{value:"Module"}));function q(e){return function(i,y=!0){const u=e,s={renderInput:r=>u.renderInput(r.value,r.renderProps??{},r),renderSelect:r=>u.renderSelect(r.value,r.options??[],r.renderProps??{},r),renderPopSelect:r=>u.renderPopSelect(r.value,r.options??[],r.renderProps??{},r),renderTreeSelect:r=>u.renderTreeSelect(r.value,r.options??[],r.renderProps??{},r),renderRadioGroup:r=>u.renderRadioGroup(r.value,r.options??[],r.renderProps??{},r),renderRadioButtonGroup:r=>u.renderRadioButtonGroup(r.value,r.options??[],r.renderProps??{},r),renderCheckboxGroup:r=>u.renderCheckboxGroup(r.value,r.options??[],r.renderProps??{},r),renderSwitch:r=>u.renderSwitch(r.value,r.renderProps??{},r),renderDatePicker:r=>u.renderDatePicker(r.value,r.renderProps??{},r),renderTimePicker:r=>u.renderTimePicker(r.value,r.renderProps??{},r)};return i.map(r=>{const v=r;if(v.value=k.ensureRef(r.value),typeof r.render2=="function")v.render2=r.render2;else{const a=r.renderType??"renderInput",m=s[a];m?v.render2=()=>m(v):(console.warn(`[useDecorateForm] unknown renderType: ${r.renderType}`),v.render2=()=>s.renderInput(v))}return y?l.shallowReactive(v):v})}}const H=q(U);exports.EleDynamicCascadeInput=$;exports.EleDynamicForm=z;exports.EleDynamicInput=D;exports.renderCheckboxGroup=P;exports.renderDatePicker=B;exports.renderInput=I;exports.renderPopSelect=x;exports.renderRadioButtonGroup=O;exports.renderRadioGroup=w;exports.renderSelect=T;exports.renderSwitch=_;exports.renderTimePicker=j;exports.renderTreeSelect=A;exports.useDecorateForm=H;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { default as EleDynamicInput } from './EleDynamicInput
|
|
2
|
-
import { default as EleDynamicCascadeInput } from './EleDynamicCascadeInput
|
|
3
|
-
import {
|
|
1
|
+
import { default as EleDynamicInput } from './EleDynamicInput';
|
|
2
|
+
import { default as EleDynamicCascadeInput } from './EleDynamicCascadeInput';
|
|
3
|
+
import { default as EleDynamicForm } from './EleDynamicForm';
|
|
4
|
+
import { ExposeDyFType, ExposeType } from '../types';
|
|
5
|
+
import { useDecorateForm } from './hooks/decorateForm';
|
|
6
|
+
export { useDecorateForm };
|
|
7
|
+
export * from './hooks/renderForm';
|
|
4
8
|
export type eleDynamicInputRef = InstanceType<typeof EleDynamicInput> & ExposeType;
|
|
5
9
|
export type eleCascadeDynamicInputRef = InstanceType<typeof EleDynamicCascadeInput> & ExposeType;
|
|
6
|
-
export
|
|
10
|
+
export type eleDynamicFormRef = InstanceType<typeof EleDynamicForm> & ExposeDyFType;
|
|
11
|
+
export { EleDynamicInput, EleDynamicCascadeInput, EleDynamicForm };
|