@iswangh/element-plus-kit-form 0.2.0 → 0.3.0
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 +107 -6
- package/dist/FormAction.vue.d.ts.map +1 -1
- package/dist/FormItem.vue.d.ts +6 -9
- package/dist/FormItem.vue.d.ts.map +1 -1
- package/dist/composables/index.d.ts +1 -1
- package/dist/composables/index.d.ts.map +1 -1
- package/dist/composables/useChangeEventState.d.ts +2 -2
- package/dist/composables/useChangeEventState.d.ts.map +1 -1
- package/dist/composables/useLoadOptions.d.ts +57 -0
- package/dist/composables/useLoadOptions.d.ts.map +1 -0
- package/dist/config/comp.d.ts +1 -9
- package/dist/config/comp.d.ts.map +1 -1
- package/dist/config/form-item.d.ts +6 -0
- package/dist/config/form-item.d.ts.map +1 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +721 -848
- package/dist/style.css +1 -1
- package/dist/types/comp.d.ts +29 -29
- package/dist/types/el.d.ts +3 -0
- package/dist/types/form-item.d.ts +13 -17
- package/dist/types/index.d.ts +8 -9
- package/dist/types/options.d.ts +3 -62
- package/dist/types/scope.d.ts +30 -0
- package/dist/utils/action.d.ts.map +1 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +4 -3
- package/dist/composables/useClearState.d.ts +0 -17
- package/dist/composables/useClearState.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/utils/options.d.ts +0 -21
- package/dist/utils/options.d.ts.map +0 -1
- package/dist/utils/value.d.ts +0 -21
- package/dist/utils/value.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -95,6 +95,23 @@ import '@iswangh/element-plus-kit-form/style.css'
|
|
|
95
95
|
| cancel | 取消按钮点击事件 | - |
|
|
96
96
|
| expand | 展开状态变化事件 | `(value: boolean)` |
|
|
97
97
|
|
|
98
|
+
**可配置化事件**:
|
|
99
|
+
- 除了在 `WForm` 标签上监听事件,还可以在 `formItems` 配置对象的 `compProps` 中定义事件处理器
|
|
100
|
+
- 事件名以 `on` 开头(如 `onBlur`、`onFocus`、`onInput` 等),直接接收原始事件参数(不需要 `extendedParams`)
|
|
101
|
+
- 可配置化事件优先级高于 `WForm` 标签上的事件,如果同时定义了可配置化事件和标签事件,会优先使用可配置化事件
|
|
102
|
+
- 示例:
|
|
103
|
+
```typescript
|
|
104
|
+
{
|
|
105
|
+
prop: 'username',
|
|
106
|
+
compType: 'input',
|
|
107
|
+
compProps: {
|
|
108
|
+
onBlur: (event: FocusEvent) => {
|
|
109
|
+
console.log('onBlur 事件:', event)
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
98
115
|
### Slots
|
|
99
116
|
|
|
100
117
|
| 插槽名 | 说明 | 作用域参数 |
|
|
@@ -104,6 +121,28 @@ import '@iswangh/element-plus-kit-form/style.css'
|
|
|
104
121
|
| `{prop}-{slotName}` | 动态组件插槽,如 `username-prefix`、`email-suffix` | `FormItemSlotScope` |
|
|
105
122
|
| `expand-toggle` | 展开/折叠按钮插槽,用于自定义按钮 | `{ expanded: boolean, toggle: (value?: boolean) => void }` |
|
|
106
123
|
|
|
124
|
+
**可配置化插槽**:
|
|
125
|
+
- 除了使用模板插槽,还可以在 `formItems` 配置对象中直接定义插槽
|
|
126
|
+
- **FormItem 插槽**:在配置对象的 `slots` 字段中定义,用于自定义 `el-form-item` 的插槽(如 `label`、`error` 等)
|
|
127
|
+
- **动态组件插槽**:在 `compProps.slots` 字段中定义,用于自定义动态组件的插槽(如 `prefix`、`suffix` 等)
|
|
128
|
+
- 可配置化插槽优先级高于模板插槽,如果同时定义了可配置化插槽和模板插槽,会优先使用可配置化插槽
|
|
129
|
+
- 插槽函数使用 `h()` 函数创建 VNode,接收 `FormItemSlotScope` 参数
|
|
130
|
+
- 示例:
|
|
131
|
+
```typescript
|
|
132
|
+
{
|
|
133
|
+
prop: 'username',
|
|
134
|
+
compType: 'input',
|
|
135
|
+
slots: {
|
|
136
|
+
label: props => h('span', {}, props.formItem.label),
|
|
137
|
+
},
|
|
138
|
+
compProps: {
|
|
139
|
+
slots: {
|
|
140
|
+
prefix: () => h(User),
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
107
146
|
### FormItem 配置
|
|
108
147
|
|
|
109
148
|
#### 基础配置
|
|
@@ -113,11 +152,12 @@ interface FormItem<C extends FormItemComp = FormItemComp> {
|
|
|
113
152
|
prop: string // 表单字段名(必填)
|
|
114
153
|
label: string // 标签文本
|
|
115
154
|
compType: FormItemComp // 组件类型(必填)
|
|
116
|
-
compProps?: FormItemCompProps<C> // 组件属性配置
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
155
|
+
compProps?: FormItemCompProps<C> // 组件属性配置 // 对于支持 options 的组件(如 select、cascader、radio、checkbox 等),支持两种配置方式:
|
|
156
|
+
// 1. 静态数组:compProps.options: [{ label: '选项1', value: '1' }]
|
|
157
|
+
// 2. 动态加载(compProps.optionsLoader):
|
|
158
|
+
// - 函数模式:optionsLoader: (formData: Record<string, unknown>) => [{ label: '选项1', value: '1' }]
|
|
159
|
+
// - 对象模式:optionsLoader: { loader: (formData: Record<string, unknown>) => [...], deps: ['field1'], immediate: true }
|
|
160
|
+
// 当同时配置 options 和 optionsLoader 时,optionsLoader 优先级更高
|
|
121
161
|
vIf?: boolean | ((data?: any) => boolean) // 条件渲染(v-if)
|
|
122
162
|
vShow?: boolean | ((data?: any) => boolean) // 显示/隐藏(v-show)
|
|
123
163
|
colProps?: ColProps // 列布局属性(ElCol 属性)
|
|
@@ -267,7 +307,7 @@ const formItems: FormItems = [
|
|
|
267
307
|
|
|
268
308
|
### 自定义插槽
|
|
269
309
|
|
|
270
|
-
|
|
310
|
+
使用模板插槽自定义表单项内容:
|
|
271
311
|
|
|
272
312
|
```vue
|
|
273
313
|
<template>
|
|
@@ -279,6 +319,39 @@ const formItems: FormItems = [
|
|
|
279
319
|
</template>
|
|
280
320
|
```
|
|
281
321
|
|
|
322
|
+
### 可配置化插槽
|
|
323
|
+
|
|
324
|
+
除了使用模板插槽,还可以在 `formItems` 配置对象中直接定义插槽:
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
import { h } from 'vue'
|
|
328
|
+
import { User } from '@element-plus/icons-vue'
|
|
329
|
+
|
|
330
|
+
const formItems: FormItems = [
|
|
331
|
+
{
|
|
332
|
+
prop: 'username',
|
|
333
|
+
label: '用户名',
|
|
334
|
+
compType: 'input',
|
|
335
|
+
// FormItem 插槽配置
|
|
336
|
+
slots: {
|
|
337
|
+
label: props => h('span', { class: 'flex items-center gap-1' }, [
|
|
338
|
+
h('span', props.formItem.label),
|
|
339
|
+
h('span', { class: 'text-red-500' }, '*'),
|
|
340
|
+
]),
|
|
341
|
+
},
|
|
342
|
+
// 动态组件插槽配置
|
|
343
|
+
compProps: {
|
|
344
|
+
placeholder: '请输入用户名',
|
|
345
|
+
slots: {
|
|
346
|
+
prefix: () => h(User, { class: 'text-gray-400' }),
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
]
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**优先级**:可配置化插槽优先级高于模板插槽,如果同时定义了可配置化插槽和模板插槽,会优先使用可配置化插槽。
|
|
354
|
+
|
|
282
355
|
### 表单验证
|
|
283
356
|
|
|
284
357
|
```typescript
|
|
@@ -297,6 +370,8 @@ const formItems: FormItems = [
|
|
|
297
370
|
|
|
298
371
|
### 监听事件
|
|
299
372
|
|
|
373
|
+
在 `WForm` 标签上监听事件:
|
|
374
|
+
|
|
300
375
|
```vue
|
|
301
376
|
<template>
|
|
302
377
|
<WForm
|
|
@@ -318,6 +393,32 @@ const onSubmit = () => {
|
|
|
318
393
|
</script>
|
|
319
394
|
```
|
|
320
395
|
|
|
396
|
+
### 可配置化事件
|
|
397
|
+
|
|
398
|
+
除了在 `WForm` 标签上监听事件,还可以在 `formItems` 配置对象中直接定义事件处理器:
|
|
399
|
+
|
|
400
|
+
```typescript
|
|
401
|
+
const formItems: FormItems = [
|
|
402
|
+
{
|
|
403
|
+
prop: 'username',
|
|
404
|
+
label: '用户名',
|
|
405
|
+
compType: 'input',
|
|
406
|
+
compProps: {
|
|
407
|
+
placeholder: '请输入用户名',
|
|
408
|
+
// 动态组件的事件在 compProps 中定义
|
|
409
|
+
onBlur: (event: FocusEvent) => {
|
|
410
|
+
console.log('onBlur 事件:', event)
|
|
411
|
+
},
|
|
412
|
+
onFocus: (event: FocusEvent) => {
|
|
413
|
+
console.log('onFocus 事件:', event)
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
},
|
|
417
|
+
]
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
**优先级**:可配置化事件优先级高于 `WForm` 标签上的事件,如果同时定义了可配置化事件和标签事件,会优先使用可配置化事件。
|
|
421
|
+
|
|
321
422
|
### 展开/折叠功能
|
|
322
423
|
|
|
323
424
|
表单支持展开/折叠功能,可以控制表单项的显示和隐藏,适用于字段较多的表单场景。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAction.vue.d.ts","sourceRoot":"","sources":["../src/FormAction.vue"],"names":[],"mappings":"AACA;
|
|
1
|
+
{"version":3,"file":"FormAction.vue.d.ts","sourceRoot":"","sources":["../src/FormAction.vue"],"names":[],"mappings":"AACA;AA+JA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,KAAK,EAAwB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAMrE,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mBAAmB;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B;AAqGD,iBAAS,cAAc;WAsHT,OAAO,IAA6B;;yBAVpB,GAAG;;;;EAehC;AAoBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;mBAlPiB,MAAM;eAAS,GAAG;;;;;;;;mBAAlB,MAAM;eAAS,GAAG;;;cAV3C,OAAO;YAJT,OAAO;YAEP,gBAAgB;4EAqQzB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KAAC,CAAC,GAC5C,CAAC,CAAC,CAAC,CAAC;CACP,CAAC;AACF,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC;AACF,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC;AACF,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
package/dist/FormItem.vue.d.ts
CHANGED
|
@@ -6,9 +6,8 @@ interface ProcessedSlot {
|
|
|
6
6
|
slotFn: Slot;
|
|
7
7
|
}
|
|
8
8
|
interface FormSlots {
|
|
9
|
-
formItemSlots: ProcessedSlot[]
|
|
10
|
-
|
|
11
|
-
customComponentSlots: Map<string, ProcessedSlot[]>;
|
|
9
|
+
formItemSlots: Map<string, ProcessedSlot[]>;
|
|
10
|
+
dynamicCompSlots: Map<string, ProcessedSlot[]>;
|
|
12
11
|
}
|
|
13
12
|
interface Props {
|
|
14
13
|
formItem: FormItem;
|
|
@@ -24,16 +23,14 @@ type __VLS_PublicProps = {
|
|
|
24
23
|
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_PublicProps>, {
|
|
25
24
|
formData: () => {};
|
|
26
25
|
formSlots: () => {
|
|
27
|
-
formItemSlots:
|
|
28
|
-
|
|
29
|
-
customComponentSlots: Map<any, any>;
|
|
26
|
+
formItemSlots: Map<any, any>;
|
|
27
|
+
dynamicCompSlots: Map<any, any>;
|
|
30
28
|
};
|
|
31
29
|
}>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_PublicProps>, {
|
|
32
30
|
formData: () => {};
|
|
33
31
|
formSlots: () => {
|
|
34
|
-
formItemSlots:
|
|
35
|
-
|
|
36
|
-
customComponentSlots: Map<any, any>;
|
|
32
|
+
formItemSlots: Map<any, any>;
|
|
33
|
+
dynamicCompSlots: Map<any, any>;
|
|
37
34
|
};
|
|
38
35
|
}>>> & Readonly<{}>, {
|
|
39
36
|
formData: Record<string, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormItem.vue.d.ts","sourceRoot":"","sources":["../src/FormItem.vue"],"names":[],"mappings":"AACA;
|
|
1
|
+
{"version":3,"file":"FormItem.vue.d.ts","sourceRoot":"","sources":["../src/FormItem.vue"],"names":[],"mappings":"AACA;AAgLA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAA+B,MAAM,SAAS,CAAA;AAMpE,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,IAAI,CAAA;CACb;AAED,UAAU,SAAS;IACjB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;IAC3C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;CAC/C;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAA;IAC1D,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAQD,KAAK,WAAW,GAAG,KAAK,CAAC;AAiHzB,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;CAChB,GAAG,WAAW,CAAC;;;;;;;;;;;;;;cA9HH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;eAElB,SAAS;;AAuQvB,wBAUG;AAEH,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KAAC,CAAC,GAC5C,CAAC,CAAC,CAAC,CAAC;CACP,CAAC;AACF,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC;AACF,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composables/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composables/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* 用于区分不同类型的值变化,防止重复触发 change 事件
|
|
4
4
|
*/
|
|
5
5
|
export declare function useChangeEventState(): {
|
|
6
|
-
/**
|
|
7
|
-
readonly
|
|
6
|
+
/** 是否在用户交互期间 */
|
|
7
|
+
readonly isUserInteractionDuring: boolean;
|
|
8
8
|
/** 开始用户交互 */
|
|
9
9
|
start(): void;
|
|
10
10
|
/** 结束用户交互(在 nextTick 中调用) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChangeEventState.d.ts","sourceRoot":"","sources":["../../src/composables/useChangeEventState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,mBAAmB;IAI/B,
|
|
1
|
+
{"version":3,"file":"useChangeEventState.d.ts","sourceRoot":"","sources":["../../src/composables/useChangeEventState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,mBAAmB;IAI/B,gBAAgB;;IAKhB,aAAa;;IAKb,6BAA6B;;EAKhC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 选项结果类型
|
|
3
|
+
*/
|
|
4
|
+
type OptionsResult = any[] | Array<{
|
|
5
|
+
prop: string;
|
|
6
|
+
options: any[];
|
|
7
|
+
}>;
|
|
8
|
+
/**
|
|
9
|
+
* 选项加载组合式函数
|
|
10
|
+
*
|
|
11
|
+
* @param formItems - 表单配置项
|
|
12
|
+
* @param formData - 表单数据(可选),会传递给 optionsLoader 函数
|
|
13
|
+
* @returns 加载函数、获取函数和加载状态
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
*
|
|
17
|
+
* const form = ref({ province: '1' })
|
|
18
|
+
* const formItems = ref<FormItems>([
|
|
19
|
+
* {
|
|
20
|
+
* prop: 'city',
|
|
21
|
+
* compType: 'select',
|
|
22
|
+
* compProps: {
|
|
23
|
+
* optionsLoader: (formData) => {
|
|
24
|
+
* const province = formData?.province || form.value.province
|
|
25
|
+
* return fetch(`/api/cities?province=${province}`).then(r => r.json())
|
|
26
|
+
* },
|
|
27
|
+
* },
|
|
28
|
+
* },
|
|
29
|
+
* ])
|
|
30
|
+
*
|
|
31
|
+
* const { loadOptions, getOptions, loading } = useLoadOptions(formItems.value, form.value)
|
|
32
|
+
*
|
|
33
|
+
* // 加载单个字段的选项
|
|
34
|
+
* await loadOptions('city')
|
|
35
|
+
*
|
|
36
|
+
* // 加载多个字段的选项
|
|
37
|
+
* await loadOptions(['city', 'district'])
|
|
38
|
+
*
|
|
39
|
+
* // 加载所有有 optionsLoader 的字段
|
|
40
|
+
* await loadOptions()
|
|
41
|
+
*
|
|
42
|
+
* // 获取单个字段的选项
|
|
43
|
+
* const cityOptions = getOptions('city') // 返回: any[]
|
|
44
|
+
*
|
|
45
|
+
* // 获取多个字段的选项
|
|
46
|
+
* const options = getOptions(['city', 'district']) // 返回: [{prop: 'city', options: [...]}, ...]
|
|
47
|
+
*
|
|
48
|
+
* // 获取所有字段的选项
|
|
49
|
+
* const allOptions = getOptions() // 返回: [{prop: 'city', options: [...]}, ...]
|
|
50
|
+
*/
|
|
51
|
+
export declare function useLoadOptions(formItems: any[], formData?: Record<string, any>): {
|
|
52
|
+
loading: import('vue').Ref<boolean, boolean>;
|
|
53
|
+
loadOptions: (props?: string | string[]) => Promise<void>;
|
|
54
|
+
getOptions: (props?: string | string[]) => OptionsResult;
|
|
55
|
+
};
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=useLoadOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLoadOptions.d.ts","sourceRoot":"","sources":["../../src/composables/useLoadOptions.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,KAAK,aAAa,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,wBAAgB,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;0BAqB1C,MAAM,GAAG,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAAC;yBAkCxC,MAAM,GAAG,MAAM,EAAE,KAAG,aAAa;EAmB9D"}
|
package/dist/config/comp.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { FormItem } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* 需要从 FormItem 中排除的自定义属性键名
|
|
4
|
-
* 这些属性不会传递给 el-form-item 组件
|
|
5
|
-
*/
|
|
6
|
-
export declare const FORM_ITEM_EXCLUDED_KEYS: readonly ["compType", "compProps", "vIf", "vShow"];
|
|
7
2
|
/**
|
|
8
3
|
* 拓展的组件映射
|
|
9
4
|
* 导出以便在类型文件中使用 typeof 提取类型
|
|
@@ -28,10 +23,7 @@ export declare const COMP_DEFAULT_CONFIG: {
|
|
|
28
23
|
/**
|
|
29
24
|
* 获取组件默认属性
|
|
30
25
|
*/
|
|
31
|
-
getDefaults(formItem: FormItem):
|
|
32
|
-
[x: string]: any;
|
|
33
|
-
options?: any[] | import('../types').OptionsLoader | import('../types').OptionsConfig | undefined;
|
|
34
|
-
};
|
|
26
|
+
getDefaults(formItem: FormItem): any;
|
|
35
27
|
/**
|
|
36
28
|
* 判断组件类型
|
|
37
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comp.d.ts","sourceRoot":"","sources":["../../src/config/comp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC;;;GAGG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"comp.d.ts","sourceRoot":"","sources":["../../src/config/comp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC;;;GAGG;AACH,eAAO,MAAM,eAAe;;CAA6B,CAAA;AA+BzD;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAwD,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAE1G;;GAEG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;OAEG;0BACmB,QAAQ;IAe9B;;OAEG;sBACe,MAAM;IAoBxB;;OAEG;kCAC2B,QAAQ,QAAQ,MAAM;IAkBpD;;OAEG;6BACsB,QAAQ,QAAQ,MAAM;CAYhD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-item.d.ts","sourceRoot":"","sources":["../../src/config/form-item.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,6DAA8D,CAAA"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
export * from './composables';
|
|
1
2
|
export { default } from './Form.vue';
|
|
2
3
|
export { default as WForm } from './Form.vue';
|
|
3
|
-
export type { FormActionConfig, FormItemEventExtendedParams, FormItems } from './types';
|
|
4
|
+
export type { FormActionConfig, FormItemEventExtendedParams, FormItems, FormItemSlotScope } from './types';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,2CAA2C,CAAA;AAClD,OAAO,gDAAgD,CAAA;AAEvD,OAAO,0CAA0C,CAAA;AACjD,OAAO,0CAA0C,CAAA;AAEjD,OAAO,6CAA6C,CAAA;AAEpD,OAAO,2CAA2C,CAAA;AAKlD,OAAO,4CAA4C,CAAA;AACnD,OAAO,mDAAmD,CAAA;AAC1D,OAAO,gDAAgD,CAAA;AACvD,OAAO,mDAAmD,CAAA;AAC1D,OAAO,8CAA8C,CAAA;AAErD,OAAO,6CAA6C,CAAA;AACpD,OAAO,gDAAgD,CAAA;AACvD,OAAO,+CAA+C,CAAA;AACtD,OAAO,kDAAkD,CAAA;AAEzD,OAAO,kDAAkD,CAAA;AACzD,OAAO,wDAAwD,CAAA;AAC/D,OAAO,kDAAkD,CAAA;AACzD,OAAO,kDAAkD,CAAA;AAEzD,OAAO,qDAAqD,CAAA;AAC5D,OAAO,kDAAkD,CAAA;AACzD,OAAO,6CAA6C,CAAA;AACpD,OAAO,6CAA6C,CAAA;AACpD,OAAO,2CAA2C,CAAA;AAClD,OAAO,mDAAmD,CAAA;AAC1D,OAAO,yDAAyD,CAAA;AAChE,OAAO,+CAA+C,CAAA;AAEtD,OAAO,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,2CAA2C,CAAA;AAClD,OAAO,gDAAgD,CAAA;AAEvD,OAAO,0CAA0C,CAAA;AACjD,OAAO,0CAA0C,CAAA;AAEjD,OAAO,6CAA6C,CAAA;AAEpD,OAAO,2CAA2C,CAAA;AAKlD,OAAO,4CAA4C,CAAA;AACnD,OAAO,mDAAmD,CAAA;AAC1D,OAAO,gDAAgD,CAAA;AACvD,OAAO,mDAAmD,CAAA;AAC1D,OAAO,8CAA8C,CAAA;AAErD,OAAO,6CAA6C,CAAA;AACpD,OAAO,gDAAgD,CAAA;AACvD,OAAO,+CAA+C,CAAA;AACtD,OAAO,kDAAkD,CAAA;AAEzD,OAAO,kDAAkD,CAAA;AACzD,OAAO,wDAAwD,CAAA;AAC/D,OAAO,kDAAkD,CAAA;AACzD,OAAO,kDAAkD,CAAA;AAEzD,OAAO,qDAAqD,CAAA;AAC5D,OAAO,kDAAkD,CAAA;AACzD,OAAO,6CAA6C,CAAA;AACpD,OAAO,6CAA6C,CAAA;AACpD,OAAO,2CAA2C,CAAA;AAClD,OAAO,mDAAmD,CAAA;AAC1D,OAAO,yDAAyD,CAAA;AAChE,OAAO,+CAA+C,CAAA;AAEtD,OAAO,oBAAoB,CAAA;AAG3B,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAE7C,YAAY,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
|