@iswangh/element-plus-kit-form 0.2.1 → 0.3.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 CHANGED
@@ -152,11 +152,12 @@ interface FormItem<C extends FormItemComp = FormItemComp> {
152
152
  prop: string // 表单字段名(必填)
153
153
  label: string // 标签文本
154
154
  compType: FormItemComp // 组件类型(必填)
155
- compProps?: FormItemCompProps<C> // 组件属性配置
156
- // 对于支持 options 的组件(如 select、cascader、radio、checkbox 等),compProps.options 支持三种模式:
157
- // 1. 静态数组:options: [{ label: '选项1', value: '1' }]
158
- // 2. 函数模式:options: (formData) => [{ label: '选项1', value: '1' }]
159
- // 3. 对象模式:options: { loader: (formData) => [...], deps: ['field1'], immediate: true }
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 优先级更高
160
161
  vIf?: boolean | ((data?: any) => boolean) // 条件渲染(v-if)
161
162
  vShow?: boolean | ((data?: any) => boolean) // 显示/隐藏(v-show)
162
163
  colProps?: ColProps // 列布局属性(ElCol 属性)
@@ -170,7 +171,8 @@ interface FormItem<C extends FormItemComp = FormItemComp> {
170
171
 
171
172
  - `autocomplete` - 自动完成输入框
172
173
  - `cascader` - 级联选择器
173
- - `checkbox` - 复选框组
174
+ - `checkbox` - 复选框(单个)
175
+ - `checkbox-group` - 复选框组
174
176
  - `color-picker` - 颜色选择器
175
177
  - `color-picker-panel` - 颜色选择器面板
176
178
  - `date-picker` - 日期选择器
@@ -179,7 +181,7 @@ interface FormItem<C extends FormItemComp = FormItemComp> {
179
181
  - `input-number` - 数字输入框
180
182
  - `input-tag` - 标签输入框
181
183
  - `mention` - 提及输入框
182
- - `radio` - 单选框组
184
+ - `radio-group` - 单选框组
183
185
  - `rate` - 评分
184
186
  - `select` - 选择器
185
187
  - `select-v2` - 虚拟列表选择器
@@ -189,6 +191,7 @@ interface FormItem<C extends FormItemComp = FormItemComp> {
189
191
  - `time-select` - 时间选择
190
192
  - `transfer` - 穿梭框
191
193
  - `tree-select` - 树形选择器
194
+ - `w-check-tag` - 可选标签(支持单选/多选)
192
195
  - `custom` - 自定义组件(使用插槽)
193
196
 
194
197
  #### 使用示例
@@ -0,0 +1,112 @@
1
+ import { FormItemProp } from 'element-plus';
2
+ import { Arrayable, ElFormProps, FormActionConfig, FormItemEventExtendedParams, FormItems, FormItemSlotScope, RowProps } from './types';
3
+ interface Props extends ElFormProps {
4
+ formItems: FormItems;
5
+ rowProps?: RowProps;
6
+ actionConfig?: FormActionConfig;
7
+ }
8
+ interface Slots {
9
+ /**
10
+ * FormItem 通用插槽
11
+ * @example #form-item-label
12
+ */
13
+ [key: `form-item-${string}`]: (props: FormItemSlotScope) => any;
14
+ /**
15
+ * 动态组件插槽
16
+ * @example #username-prefix, #email-suffix
17
+ */
18
+ [key: `${string}-${string}`]: (props: FormItemSlotScope) => any;
19
+ /**
20
+ * 自定义组件插槽
21
+ * @example #custom-field
22
+ */
23
+ [key: string]: (props: FormItemSlotScope) => any;
24
+ }
25
+ type __VLS_Props = Props;
26
+ /**
27
+ * 切换或设置表单展开/折叠状态
28
+ *
29
+ * @param value - 可选,不传参则切换状态,传布尔值则设置状态
30
+ */
31
+ declare function toggleExpand(value?: boolean): void;
32
+ type __VLS_PublicProps = {
33
+ 'expanded'?: boolean;
34
+ } & __VLS_Props;
35
+ declare function __VLS_template(): {
36
+ attrs: Partial<{}>;
37
+ slots: Readonly<Slots> & Slots;
38
+ refs: {
39
+ formRef: any;
40
+ };
41
+ rootEl: any;
42
+ };
43
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
44
+ declare const __VLS_component: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_PublicProps>, {
45
+ model: () => {};
46
+ rowProps: () => {};
47
+ actionConfig: () => {};
48
+ }>>, {
49
+ fields: import('vue').Reactive<import('element-plus').FormItemContext[]> | undefined;
50
+ getField: (prop: FormItemProp) => import('element-plus').FormItemContext | undefined;
51
+ validate: () => import('element-plus').FormValidationResult | undefined;
52
+ validateField: (props: Arrayable<FormItemProp>) => import('element-plus').FormValidationResult | undefined;
53
+ resetFields: (props?: Arrayable<FormItemProp>) => void | undefined;
54
+ clearValidate: (props?: Arrayable<FormItemProp>) => void | undefined;
55
+ scrollToField: (prop: FormItemProp) => void | undefined;
56
+ expanded: boolean;
57
+ /** 切换或设置展开/折叠状态 */
58
+ toggleExpand: typeof toggleExpand;
59
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
60
+ validate: (prop: FormItemProp, isValid: boolean, message: string) => void;
61
+ change: (extendedParams: FormItemEventExtendedParams<string>, value: any) => void;
62
+ action: (eventName: string, data?: any) => void;
63
+ search: () => void;
64
+ reset: (resetData: Record<string, any>) => void;
65
+ submit: () => void;
66
+ cancel: () => void;
67
+ expand: (value: boolean) => void;
68
+ "update:expanded": (value: boolean) => void;
69
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_PublicProps>, {
70
+ model: () => {};
71
+ rowProps: () => {};
72
+ actionConfig: () => {};
73
+ }>>> & Readonly<{
74
+ onValidate?: ((prop: FormItemProp, isValid: boolean, message: string) => any) | undefined;
75
+ onSearch?: (() => any) | undefined;
76
+ onChange?: ((extendedParams: FormItemEventExtendedParams<string>, value: any) => any) | undefined;
77
+ onReset?: ((resetData: Record<string, any>) => any) | undefined;
78
+ onSubmit?: (() => any) | undefined;
79
+ onCancel?: (() => any) | undefined;
80
+ onExpand?: ((value: boolean) => any) | undefined;
81
+ onAction?: ((eventName: string, data?: any) => any) | undefined;
82
+ "onUpdate:expanded"?: ((value: boolean) => any) | undefined;
83
+ }>, {
84
+ model: Record<string, any>;
85
+ rowProps: RowProps;
86
+ actionConfig: FormActionConfig;
87
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
88
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
89
+ export default _default;
90
+ type __VLS_WithDefaults<P, D> = {
91
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
92
+ default: D[K];
93
+ }> : P[K];
94
+ };
95
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
96
+ type __VLS_TypePropsToOption<T> = {
97
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
98
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
99
+ } : {
100
+ type: import('vue').PropType<T[K]>;
101
+ required: true;
102
+ };
103
+ };
104
+ type __VLS_WithTemplateSlots<T, S> = T & {
105
+ new (): {
106
+ $slots: S;
107
+ };
108
+ };
109
+ type __VLS_PrettifyLocal<T> = {
110
+ [K in keyof T]: T[K];
111
+ } & {};
112
+ //# sourceMappingURL=Form.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Form.vue.d.ts","sourceRoot":"","sources":["../src/Form.vue"],"names":[],"mappings":"AACA;AAqjBA,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,cAAc,CAAA;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAmB,WAAW,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,SAAS,EAAuB,iBAAiB,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAA;AAWhM,UAAU,KAAM,SAAQ,WAAW;IACjC,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,gBAAgB,CAAA;CAChC;AAeD,UAAU,KAAK;IACb;;;OAGG;IACH,CAAC,GAAG,EAAE,aAAa,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,GAAG,CAAA;IAE/D;;;OAGG;IACH,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,GAAG,CAAA;IAE/D;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,GAAG,CAAA;CACjD;AAID,KAAK,WAAW,GAAG,KAAK,CAAC;AA0EzB;;;;GAIG;AACH,iBAAS,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,QAapC;AA8WD,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,WAAW,CAAC;AAKhB,iBAAS,cAAc;WAqJT,OAAO,IAA6B;;;;;;EAKjD;AA6BD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;qBAvOF,YAAY;;2BAEN,SAAS,CAAC,YAAY,CAAC;0BACxB,SAAS,CAAC,YAAY,CAAC;4BACrB,SAAS,CAAC,YAAY,CAAC;0BACzB,YAAY;;IAKlC,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAndR,QAAQ;kBACJ,gBAAgB;4EA0rB/B,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormAction.vue.d.ts","sourceRoot":"","sources":["../src/FormAction.vue"],"names":[],"mappings":"AACA;AAkKA,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;AAwGD,iBAAS,cAAc;WAsHT,OAAO,IAA6B;;yBAVpB,GAAG;;;;EAehC;AAoBD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;mBArPiB,MAAM;eAAS,GAAG;;;;;;;;mBAAlB,MAAM;eAAS,GAAG;;;cAV3C,OAAO;YAJT,OAAO;YAEP,gBAAgB;4EAwQzB,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"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormItem.vue.d.ts","sourceRoot":"","sources":["../src/FormItem.vue"],"names":[],"mappings":"AACA;AAkaA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAA6D,MAAM,SAAS,CAAA;AAOlG,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;AAkWzB,KAAK,iBAAiB,GAAG;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;CAChB,GAAG,WAAW,CAAC;;;;;;;;;;;;;;cA/WH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;eAElB,SAAS;;AAwfvB,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
+ {"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,4 +1,4 @@
1
1
  export * from './useAutoExpandOnHover';
2
2
  export * from './useChangeEventState';
3
- export * from './useClearState';
3
+ export * from './useLoadOptions';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -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,iBAAiB,CAAA"}
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 isUser: boolean;
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,aAAa;;IAKb,aAAa;;IAKb,6BAA6B;;EAKhC"}
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;yBAuCxC,MAAM,GAAG,MAAM,EAAE,KAAG,aAAa;EA0B9D"}
@@ -3,9 +3,7 @@ import { FormItem } from '../types';
3
3
  * 拓展的组件映射
4
4
  * 导出以便在类型文件中使用 typeof 提取类型
5
5
  */
6
- export declare const EXPAND_COMP_MAP: {
7
- readonly custom: "div";
8
- };
6
+ export declare const EXPAND_COMP_MAP: Record<string, any>;
9
7
  /**
10
8
  * 表单组件类型映射配置
11
9
  *
@@ -24,8 +22,6 @@ export declare const COMP_DEFAULT_CONFIG: {
24
22
  * 获取组件默认属性
25
23
  */
26
24
  getDefaults(formItem: FormItem): {
27
- [x: string]: any;
28
- options?: any[] | import('../types').OptionsLoader | import('../types').OptionsConfig | undefined;
29
25
  slots?: import('../types').CompSlotsConfig<import('../types').FormItemComp> | undefined;
30
26
  };
31
27
  /**
@@ -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,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"}
1
+ {"version":3,"file":"comp.d.ts","sourceRoot":"","sources":["../../src/config/comp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAIxC;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAGtC,CAAA;AAgCV;;;;;;;;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"}
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, FormItemSlotScope } from './types';
4
+ export type { FormActionConfig, FormItemEventExtendedParams, FormItems, FormItemSlotScope, RowProps, } from './types';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAE7C,YAAY,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,SAAS,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,+CAA+C,CAAA;AACtD,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,EACV,gBAAgB,EAChB,2BAA2B,EAC3B,SAAS,EACT,iBAAiB,EACjB,QAAQ,GACT,MAAM,SAAS,CAAA"}