@qin-ui/element-plus-pro 1.0.7 → 1.1.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/AI-CONTEXT.md +227 -23
- package/LICENSE +9 -0
- package/api.json +44 -27
- package/bin/init-ai.mjs +214 -52
- package/es/component-provider/{index-Bmx9Q9Q-.js → index-BGGIWSkO.js} +2 -1
- package/es/component-provider/index-BGGIWSkO.js.map +1 -0
- package/es/component-provider/index.js +2 -1
- package/es/component-provider/index.js.map +1 -0
- package/es/components/component-provider/components/index.vue.d.ts +27 -0
- package/es/components/component-provider/components/index.vue.d.ts.map +1 -0
- package/es/components/component-provider/constants/index.d.ts +16 -0
- package/es/components/component-provider/constants/index.d.ts.map +1 -0
- package/es/components/component-provider/index.d.ts +4 -0
- package/es/components/component-provider/index.d.ts.map +1 -0
- package/es/components/component-provider/types/index.d.ts +35 -0
- package/es/components/component-provider/types/index.d.ts.map +1 -0
- package/es/components/form/components/BaseField/index.vue.d.ts +13 -0
- package/es/components/form/components/BaseField/index.vue.d.ts.map +1 -0
- package/es/components/form/components/BaseField/utils/index.d.ts +3 -0
- package/es/components/form/components/BaseField/utils/index.d.ts.map +1 -0
- package/es/components/form/components/BaseFormItem/index.vue.d.ts +9 -0
- package/es/components/form/components/BaseFormItem/index.vue.d.ts.map +1 -0
- package/es/components/form/components/ContainerFragment/index.vue.d.ts +23 -0
- package/es/components/form/components/ContainerFragment/index.vue.d.ts.map +1 -0
- package/es/components/form/components/GroupedFieldAttrs/index.vue.d.ts +31 -0
- package/es/components/form/components/GroupedFieldAttrs/index.vue.d.ts.map +1 -0
- package/es/components/form/components/PathProvider/index.vue.d.ts +24 -0
- package/es/components/form/components/PathProvider/index.vue.d.ts.map +1 -0
- package/es/components/form/components/ProForm/index.vue.d.ts +36 -0
- package/es/components/form/components/ProForm/index.vue.d.ts.map +1 -0
- package/es/components/form/components/SlotComponent/index.vue.d.ts +7 -0
- package/es/components/form/components/SlotComponent/index.vue.d.ts.map +1 -0
- package/es/components/form/components/index.d.ts +12 -0
- package/es/components/form/components/index.d.ts.map +1 -0
- package/es/components/form/constants/index.d.ts +67 -0
- package/es/components/form/constants/index.d.ts.map +1 -0
- package/es/components/form/hooks/index.d.ts +5 -0
- package/es/components/form/hooks/index.d.ts.map +1 -0
- package/es/components/form/hooks/useFields.d.ts +57 -0
- package/es/components/form/hooks/useFields.d.ts.map +1 -0
- package/es/components/form/hooks/useForm.d.ts +93 -0
- package/es/components/form/hooks/useForm.d.ts.map +1 -0
- package/es/components/form/hooks/useFormRef.d.ts +30 -0
- package/es/components/form/hooks/useFormRef.d.ts.map +1 -0
- package/es/components/form/index.d.ts +7 -0
- package/es/components/form/index.d.ts.map +1 -0
- package/es/components/form/types/index.d.ts +234 -0
- package/es/components/form/types/index.d.ts.map +1 -0
- package/es/components/table/components/ColumnControl.vue.d.ts +9 -0
- package/es/components/table/components/ColumnControl.vue.d.ts.map +1 -0
- package/es/components/table/components/DefaultSearchFormContainer.vue.d.ts +18 -0
- package/es/components/table/components/DefaultSearchFormContainer.vue.d.ts.map +1 -0
- package/es/components/table/components/DefaultTableContainer.vue.d.ts +18 -0
- package/es/components/table/components/DefaultTableContainer.vue.d.ts.map +1 -0
- package/es/components/table/components/ProTable.vue.d.ts +47 -0
- package/es/components/table/components/ProTable.vue.d.ts.map +1 -0
- package/es/components/table/components/SearchForm.vue.d.ts +48 -0
- package/es/components/table/components/SearchForm.vue.d.ts.map +1 -0
- package/es/components/table/components/SizeControl.vue.d.ts +12 -0
- package/es/components/table/components/SizeControl.vue.d.ts.map +1 -0
- package/es/components/table/components/TableColumnRenderer.vue.d.ts +17 -0
- package/es/components/table/components/TableColumnRenderer.vue.d.ts.map +1 -0
- package/es/components/table/components/icons/ColumnHeightOutlined.vue.d.ts +3 -0
- package/es/components/table/components/icons/ColumnHeightOutlined.vue.d.ts.map +1 -0
- package/es/components/table/components/icons/DownOutlined.vue.d.ts +3 -0
- package/es/components/table/components/icons/DownOutlined.vue.d.ts.map +1 -0
- package/es/components/table/components/icons/FilterOutlined.vue.d.ts +3 -0
- package/es/components/table/components/icons/FilterOutlined.vue.d.ts.map +1 -0
- package/es/components/table/components/index.d.ts +5 -0
- package/es/components/table/components/index.d.ts.map +1 -0
- package/es/components/table/index.d.ts +33 -0
- package/es/components/table/index.d.ts.map +1 -0
- package/es/components/table/types/index.d.ts +67 -0
- package/es/components/table/types/index.d.ts.map +1 -0
- package/es/components/table/useTable.d.ts +111 -0
- package/es/components/table/useTable.d.ts.map +1 -0
- package/es/element-plus-pro.css +10 -10
- package/es/form/{index-D8btGgqa.js → index-oI6LGSpA.js} +13 -7
- package/es/form/index-oI6LGSpA.js.map +1 -0
- package/es/form/index.js +4 -3
- package/es/form/index.js.map +1 -0
- package/es/index.d.ts +76 -1472
- package/es/index.d.ts.map +1 -0
- package/es/index.js +14 -23
- package/es/index.js.map +1 -0
- package/es/shared/core/index.d.ts +6 -0
- package/es/shared/core/index.d.ts.map +1 -0
- package/es/shared/ui/index.d.ts +12 -0
- package/es/shared/ui/index.d.ts.map +1 -0
- package/es/table/index.js +10 -10
- package/es/table/index.js.map +1 -0
- package/package.json +10 -11
- package/src/components/component-provider/components/index.vue +67 -0
- package/src/components/component-provider/constants/index.ts +209 -0
- package/src/components/component-provider/index.ts +6 -0
- package/src/components/component-provider/types/index.ts +64 -0
- package/src/components/form/components/BaseField/index.vue +181 -0
- package/src/components/form/components/BaseField/utils/index.ts +15 -0
- package/src/components/form/components/BaseFormItem/index.vue +170 -0
- package/src/components/form/components/ContainerFragment/index.vue +24 -0
- package/src/components/form/components/GroupedFieldAttrs/index.vue +115 -0
- package/src/components/form/components/PathProvider/index.vue +19 -0
- package/src/components/form/components/ProForm/index.vue +106 -0
- package/src/components/form/components/SlotComponent/index.vue +26 -0
- package/src/components/form/components/index.ts +15 -0
- package/src/components/form/constants/index.ts +116 -0
- package/src/components/form/hooks/index.ts +5 -0
- package/src/components/form/hooks/useFields.ts +67 -0
- package/src/components/form/hooks/useForm.ts +110 -0
- package/src/components/form/hooks/useFormRef.ts +35 -0
- package/src/components/form/index.ts +29 -0
- package/src/components/form/types/index.ts +300 -0
- package/src/components/table/components/ColumnControl.vue +136 -0
- package/src/components/table/components/DefaultSearchFormContainer.vue +14 -0
- package/src/components/table/components/DefaultTableContainer.vue +14 -0
- package/src/components/table/components/ProTable.vue +420 -0
- package/src/components/table/components/SearchForm.vue +302 -0
- package/src/components/table/components/SizeControl.vue +55 -0
- package/src/components/table/components/TableColumnRenderer.vue +71 -0
- package/src/components/table/components/icons/ColumnHeightOutlined.vue +4 -0
- package/src/components/table/components/icons/DownOutlined.vue +4 -0
- package/src/components/table/components/icons/FilterOutlined.vue +4 -0
- package/src/components/table/components/index.ts +4 -0
- package/src/components/table/index.ts +38 -0
- package/src/components/table/types/index.ts +77 -0
- package/src/components/table/useTable.ts +144 -0
- package/src/index.ts +81 -0
- package/src/shared/core/index.ts +38 -0
- package/src/shared/ui/index.ts +106 -0
- package/es/core/index-C0Pbv44C.js +0 -360
- package/es/vendor/utils/lodash-es-p6jau26B.js +0 -1120
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FormProps as ElFormProps } from '../../../../shared/ui';
|
|
2
|
+
import { Slot } from 'vue';
|
|
3
|
+
import { Grid, VModelProps } from '../../types';
|
|
4
|
+
import { Path } from '../../../../shared/core';
|
|
5
|
+
import { Form } from '../../hooks/useForm';
|
|
6
|
+
declare const _default: <F extends Form<any> = Form>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
7
|
+
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, never>, never> & ({
|
|
8
|
+
grid?: Grid;
|
|
9
|
+
form?: F;
|
|
10
|
+
} & Partial<Omit<ElFormProps, "model">>) & Partial<{}>> & import('vue').PublicProps;
|
|
11
|
+
expose(exposed: import('vue').ShallowUnwrapRef<{}>): void;
|
|
12
|
+
attrs: any;
|
|
13
|
+
slots: Readonly<Partial<Record<F extends Form<infer D extends import('@qin-ui/pro-components-core').Data> ? Path<D> : string, Slot<VModelProps & {
|
|
14
|
+
path?: string;
|
|
15
|
+
} & import('@qin-ui/pro-components-core').Data & {
|
|
16
|
+
[x: string]: any;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
}>> & {
|
|
19
|
+
default: Slot;
|
|
20
|
+
}>> & Partial<Record<F extends Form<infer D extends import('@qin-ui/pro-components-core').Data> ? Path<D> : string, Slot<VModelProps & {
|
|
21
|
+
path?: string;
|
|
22
|
+
} & import('@qin-ui/pro-components-core').Data & {
|
|
23
|
+
[x: string]: any;
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
}>> & {
|
|
26
|
+
default: Slot;
|
|
27
|
+
}>;
|
|
28
|
+
emit: {};
|
|
29
|
+
}>) => import('vue').VNode & {
|
|
30
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
31
|
+
};
|
|
32
|
+
export default _default;
|
|
33
|
+
type __VLS_PrettifyLocal<T> = {
|
|
34
|
+
[K in keyof T]: T[K];
|
|
35
|
+
} & {};
|
|
36
|
+
//# sourceMappingURL=index.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/ProForm/index.vue"],"names":[],"mappings":"AA4GA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAEL,SAAS,IAAI,WAAW,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,KAAK,IAAI,EAIV,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,IAAI,EAAsB,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;yBAE/B,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAC1C,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,eAAe,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EACjE;WAqIO,mBAAmB,CAAC;eAhIN,IAAI;eAAS,CAAC;0DAgI0D,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;wDAzGgC,CAAC;;;;mBAEjB,OAAO;;iBAGwB,IAAI;8CALnB,CAAC;;;;mBAEjB,OAAO;;iBAGwB,IAAI;;UAsGvD,EAAE;EAEL,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAE;AAhJzE,wBAgJ4E;AAC5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SlotComponentType } from '../../types';
|
|
2
|
+
type Props = {
|
|
3
|
+
component?: SlotComponentType;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=index.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/components/SlotComponent/index.vue"],"names":[],"mappings":"AAmCA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B,CAAC;;AAkDF,wBAMG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ComponentProps, ComponentExposed } from 'vue-component-type-helpers';
|
|
2
|
+
import { default as ProForm } from './ProForm/index.vue';
|
|
3
|
+
import { default as BaseFormItem } from './BaseFormItem/index.vue';
|
|
4
|
+
export { default as BaseField } from './BaseField/index.vue';
|
|
5
|
+
export { default as ContainerFragment } from './ContainerFragment/index.vue';
|
|
6
|
+
export { default as SlotComponent } from './SlotComponent/index.vue';
|
|
7
|
+
export { ProForm, BaseFormItem };
|
|
8
|
+
export type ProFormInstance = ComponentExposed<typeof ProForm>;
|
|
9
|
+
export type ProFormProps = ComponentProps<typeof ProForm>;
|
|
10
|
+
export type ProFormItemInstance = ComponentExposed<typeof BaseFormItem>;
|
|
11
|
+
export type ProFormItemProps = ComponentProps<typeof BaseFormItem>;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/form/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAGjC,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,OAAO,CAAC,CAAC;AAC/D,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,YAAY,CAAC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Cascader, CheckboxGroup, DatePicker, AutoComplete, Input, InputNumber, RadioGroup, Select, Slider, Switch, TimePicker, TimeSelect, Transfer, TreeSelect } from '../../../shared/ui';
|
|
2
|
+
/**
|
|
3
|
+
* FormItem 插槽名称列表
|
|
4
|
+
* @description 用于在字段配置中透传 FormItem 的插槽(Element Plus 版本)
|
|
5
|
+
*/
|
|
6
|
+
export declare const FORM_ITEM_SLOT_KEYS: readonly ["label", "error"];
|
|
7
|
+
/**
|
|
8
|
+
* 内置组件映射表
|
|
9
|
+
* @description Element Plus 内置支持的组件类型映射
|
|
10
|
+
*/
|
|
11
|
+
export type BaseComponentMap = {
|
|
12
|
+
'input': typeof Input;
|
|
13
|
+
'input-number': typeof InputNumber;
|
|
14
|
+
'autocomplete': typeof AutoComplete;
|
|
15
|
+
'select': typeof Select;
|
|
16
|
+
'cascader': typeof Cascader;
|
|
17
|
+
'date-picker': typeof DatePicker;
|
|
18
|
+
'time-picker': typeof TimePicker;
|
|
19
|
+
'time-select': typeof TimeSelect;
|
|
20
|
+
'checkbox-group': typeof CheckboxGroup;
|
|
21
|
+
'radio-group': typeof RadioGroup;
|
|
22
|
+
'switch': typeof Switch;
|
|
23
|
+
'slider': typeof Slider;
|
|
24
|
+
'tree-select': typeof TreeSelect;
|
|
25
|
+
'transfer': typeof Transfer;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* 组件映射扩展接口
|
|
29
|
+
* @description 暴露给外部扩充自定义组件类型的接口。
|
|
30
|
+
* 用户可通过 TypeScript 的声明合并(module augmentation)添加自定义组件。
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* declare module '@qin-ui/element-plus-pro' {
|
|
35
|
+
* interface ComponentMap {
|
|
36
|
+
* 'my-custom-input': typeof MyCustomInput;
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
export interface ComponentMap {
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 组件名称联合类型
|
|
47
|
+
* @description 所有支持的组件名称
|
|
48
|
+
|
|
49
|
+
* @public
|
|
50
|
+
*/
|
|
51
|
+
export type ComponentName = keyof BaseComponentMap | keyof ComponentMap | 'custom';
|
|
52
|
+
/**
|
|
53
|
+
* 根据组件名获取组件类型
|
|
54
|
+
* @template K - 组件名称
|
|
55
|
+
*/
|
|
56
|
+
export type GetComponentType<K extends ComponentName> = K extends keyof ComponentMap ? ComponentMap[K] : K extends keyof BaseComponentMap ? BaseComponentMap[K] : never;
|
|
57
|
+
/**
|
|
58
|
+
* 组件名称到 Element Plus 组件的映射
|
|
59
|
+
*/
|
|
60
|
+
export declare const componentMap: BaseComponentMap;
|
|
61
|
+
/**
|
|
62
|
+
* Teleport 组件名称前缀
|
|
63
|
+
* @description 用于通过插槽动态替换指定 path 的组件
|
|
64
|
+
*/
|
|
65
|
+
export declare const TeleportComponentNamePrefix = "TeleportComponent_";
|
|
66
|
+
export { InjectionFormKey, InjectionPathKey } from '../../../shared/core';
|
|
67
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/form/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AAEH,eAAO,MAAM,mBAAmB,6BAA8B,CAAC;AAE/D;;;GAGG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,KAAK,CAAC;IACtB,cAAc,EAAE,OAAO,WAAW,CAAC;IACnC,cAAc,EAAE,OAAO,YAAY,CAAC;IACpC,QAAQ,EAAE,OAAO,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,QAAQ,CAAC;IAC5B,aAAa,EAAE,OAAO,UAAU,CAAC;IACjC,aAAa,EAAE,OAAO,UAAU,CAAC;IACjC,aAAa,EAAE,OAAO,UAAU,CAAC;IACjC,gBAAgB,EAAE,OAAO,aAAa,CAAC;IACvC,aAAa,EAAE,OAAO,UAAU,CAAC;IACjC,QAAQ,EAAE,OAAO,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,MAAM,CAAC;IACxB,aAAa,EAAE,OAAO,UAAU,CAAC;IACjC,UAAU,EAAE,OAAO,QAAQ,CAAC;CAC7B,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,YAAY;CAAG;AAEhC;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB,MAAM,gBAAgB,GACtB,MAAM,YAAY,GAClB,QAAQ,CAAC;AAEb;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,aAAa,IAClD,CAAC,SAAS,MAAM,YAAY,GACxB,YAAY,CAAC,CAAC,CAAC,GACf,CAAC,SAAS,MAAM,gBAAgB,GAC9B,gBAAgB,CAAC,CAAC,CAAC,GACnB,KAAK,CAAC;AAEd;;GAEG;AAEH,eAAO,MAAM,YAAY,EAAE,gBAe1B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,uBAAuB,CAAC;AAGhE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/form/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { FormItemInstance } from '../../../shared/ui';
|
|
2
|
+
import { UseFieldsReturn, Data } from '../../../shared/core';
|
|
3
|
+
import { Field, Fields } from '../types';
|
|
4
|
+
import { ComponentName } from '../constants';
|
|
5
|
+
/**
|
|
6
|
+
* 字段配置管理 Hook
|
|
7
|
+
*
|
|
8
|
+
* @description 基于 `@qin-ui/pro-components-core` 的 `useFields`,将泛型参数绑定为 Element Plus 的本地类型:
|
|
9
|
+
* - 字段类型 F -> `Field<ComponentName, D>`(支持 Element Plus 组件类型推导)
|
|
10
|
+
* - FormItem 实例 -> Element Plus 的 `FormItemInstance`
|
|
11
|
+
*
|
|
12
|
+
* 提供对字段配置数组的增删改查操作,支持:
|
|
13
|
+
* - 通过路径字符串或查找函数定位字段
|
|
14
|
+
* - 深层嵌套字段的遍历和匹配
|
|
15
|
+
* - 字段配置的合并/覆盖更新
|
|
16
|
+
* - 字段的添加、插入、删除
|
|
17
|
+
* - 父级字段查找
|
|
18
|
+
*
|
|
19
|
+
* @template D - 表单数据类型
|
|
20
|
+
* @param {Fields<D>} [initFields] - 初始字段配置数组
|
|
21
|
+
*
|
|
22
|
+
* @returns 字段操作对象,包含以下属性:
|
|
23
|
+
* - `fields` - 字段配置数组(响应式 Ref\<F[]\>)
|
|
24
|
+
* - `getField(path)` - 获取字段配置,支持路径字符串或查找函数
|
|
25
|
+
* - `setField(path, field, options?)` - 更新字段配置,默认合并模式
|
|
26
|
+
* - `deleteField(path, options?)` - 删除字段配置
|
|
27
|
+
* - `appendField(path, field, options?)` - 在指定字段后追加
|
|
28
|
+
* - `prependField(path, field, options?)` - 在指定字段前插入
|
|
29
|
+
* - `getParentField(path, options?)` - 获取父级字段配置
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* interface User { name: string; age: number }
|
|
34
|
+
*
|
|
35
|
+
* const { fields, getField, setField } = useFields<User>([
|
|
36
|
+
* { path: 'name', label: '姓名', component: 'input' },
|
|
37
|
+
* { path: 'age', label: '年龄', component: 'input-number' },
|
|
38
|
+
* ])
|
|
39
|
+
*
|
|
40
|
+
* // 通过路径获取
|
|
41
|
+
* getField('name')
|
|
42
|
+
* // 通过查找函数获取
|
|
43
|
+
* getField(f => f.label === '姓名')
|
|
44
|
+
* // 更新字段(合并模式)
|
|
45
|
+
* setField('name', { label: '用户名', disabled: true })
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @see {@link coreUseFields} 底层核心实现(来自 @qin-ui/pro-components-core)
|
|
49
|
+
*
|
|
50
|
+
* @public
|
|
51
|
+
*/
|
|
52
|
+
export declare function useFields<D extends Data = Data>(initFields?: Fields<D>): UseFieldsReturn<D, Field<ComponentName, D>, FormItemInstance>;
|
|
53
|
+
/** useFields 返回值类型
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
export type UseFields<D extends Data = Data> = ReturnType<typeof useFields<D>>;
|
|
57
|
+
//# sourceMappingURL=useFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFields.d.ts","sourceRoot":"","sources":["../../../../src/components/form/hooks/useFields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GACrB,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAKjE;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,IAAI,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Form as _Form, Data, ExtendWithAny, DeepPartial } from '../../../shared/core';
|
|
2
|
+
import { Field } from '../types';
|
|
3
|
+
import { ComponentName } from '../constants';
|
|
4
|
+
import { FormInstance } from '../../../shared/ui';
|
|
5
|
+
/**
|
|
6
|
+
* 表单实例类型
|
|
7
|
+
*
|
|
8
|
+
* @description 在 core Form 类型的基础上,将字段类型 F 绑定为本地 Field<ComponentName, D>,
|
|
9
|
+
* 将底层表单实例 I 绑定为 Element Plus 的 FormInstance,使 formRef 获得完整的类型提示。
|
|
10
|
+
*
|
|
11
|
+
* @template D - 表单数据类型
|
|
12
|
+
* @template F - 字段配置类型,默认使用本地 Field 类型
|
|
13
|
+
*
|
|
14
|
+
* @property formData - 响应式表单数据对象,可直接读写,支持深层路径如 `formData.address.city`
|
|
15
|
+
* @property getFormData - 获取指定路径的表单数据,支持点号分隔的深层路径,如 `getFormData('address.city')`
|
|
16
|
+
* @property setFormData - 设置表单数据,支持三种调用方式:<br>
|
|
17
|
+
* 1. `setFormData(path, value)` - 设置指定路径的值<br>
|
|
18
|
+
* 2. `setFormData(path, prev => newVal)` - 函数式更新<br>
|
|
19
|
+
* 3. `setFormData({ ... })` - 批量覆盖整个表单
|
|
20
|
+
* @property fields - 字段配置数组(响应式 Ref),ProForm 根据此数组渲染表单字段
|
|
21
|
+
* @property getField - 获取字段配置,支持路径字符串(如 `'name'`)或查找函数(如 `f => f.label === '姓名'`)
|
|
22
|
+
* @property setField - 更新字段配置,默认合并模式(Object.assign),可通过 `{ updateType: 'rewrite' }` 覆盖
|
|
23
|
+
* @property deleteField - 删除字段配置,支持 `{ all: true }` 批量删除所有匹配项
|
|
24
|
+
* @property appendField - 在指定字段后追加新字段,传 `undefined` 则在末尾追加
|
|
25
|
+
* @property prependField - 在指定字段前插入新字段,传 `undefined` 则在开头插入
|
|
26
|
+
* @property getParentField - 获取指定字段的父级字段配置,用于嵌套字段场景
|
|
27
|
+
* @property formRef - 底层 Element Plus Form 组件实例的响应式引用(Ref),可调用 `validate()`、`resetFields()` 等方法
|
|
28
|
+
* @property setFormRef - 设置底层 Form 组件实例,由 ProForm 内部自动调用,一般无需手动使用
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* interface User { name: string; age: number }
|
|
33
|
+
* const form: Form<User> = useForm({ name: '张三', age: 25 })
|
|
34
|
+
*
|
|
35
|
+
* form.formData.name // 直接读写响应式数据
|
|
36
|
+
* form.getFormData('name') // 通过路径读取
|
|
37
|
+
* form.setFormData('name', '李四') // 更新数据
|
|
38
|
+
* form.formRef.value?.validate() // 访问底层 Form 实例
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
export type Form<D extends Data = Data, F extends Field<ComponentName, D> = Field<ComponentName, D>> = _Form<D, F, FormInstance>;
|
|
44
|
+
/**
|
|
45
|
+
* 创建表单实例的 Hook
|
|
46
|
+
*
|
|
47
|
+
* @description 基于 `@qin-ui/pro-components-core` 的 `useForm`,将泛型参数绑定为 Element Plus 的本地类型:
|
|
48
|
+
* - 字段类型 F -> `Field<ComponentName, D>`(支持 Element Plus 所有内置组件类型推导)
|
|
49
|
+
* - 表单实例 -> Element Plus 的 `FormInstance`(使 formRef 获得完整的类型提示)
|
|
50
|
+
*
|
|
51
|
+
* 表单实例组合了三个子模块的能力:
|
|
52
|
+
* - **useFormData**:表单数据管理(响应式数据、读写、批量更新)
|
|
53
|
+
* - **useFields**:字段配置管理(增删改查字段配置,支持嵌套)
|
|
54
|
+
* - **useFormRef**:底层 Form 组件实例引用
|
|
55
|
+
*
|
|
56
|
+
* @template D - 表单数据类型
|
|
57
|
+
*
|
|
58
|
+
* @param {ExtendWithAny<DeepPartial<D>>} [initFormData] - 初始表单数据
|
|
59
|
+
* @param {Field<ComponentName, D>[]} [initFields] - 初始字段配置数组
|
|
60
|
+
* @param {boolean} [root=true] - 是否为根表单。设为 `false` 时尝试从父组件注入获取表单实例
|
|
61
|
+
*
|
|
62
|
+
* @returns {Form<D>} 表单实例,包含数据操作、字段操作和 ref 操作
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* interface User { name: string; age: number }
|
|
67
|
+
*
|
|
68
|
+
* // 方式一:同时传入初始数据和字段
|
|
69
|
+
* const form = useForm<User>(
|
|
70
|
+
* { name: '张三', age: 25 },
|
|
71
|
+
* [
|
|
72
|
+
* { path: 'name', label: '姓名', component: 'input' },
|
|
73
|
+
* { path: 'age', label: '年龄', component: 'input-number' },
|
|
74
|
+
* ],
|
|
75
|
+
* true
|
|
76
|
+
* )
|
|
77
|
+
*
|
|
78
|
+
* // 方式二:仅设置 root 标识
|
|
79
|
+
* const form = useForm<User>(true)
|
|
80
|
+
*
|
|
81
|
+
* // 使用
|
|
82
|
+
* const { formData, formRef, fields, setFormData, getField } = form
|
|
83
|
+
* setFormData('name', '李四')
|
|
84
|
+
* await formRef.value?.validate()
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @see {@link coreUseForm} 底层核心实现(来自 @qin-ui/pro-components-core)
|
|
88
|
+
*
|
|
89
|
+
* @public
|
|
90
|
+
*/
|
|
91
|
+
export declare function useForm<D extends Data = Data>(initFormData?: ExtendWithAny<DeepPartial<D>>, initFields?: Field<ComponentName, D>[], root?: boolean): Form<D, Field<ComponentName, D>>;
|
|
92
|
+
export declare function useForm<D extends Data = Data>(root?: boolean): Form<D, Field<ComponentName, D>>;
|
|
93
|
+
//# sourceMappingURL=useForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../src/components/form/hooks/useForm.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,IAAI,IAAI,KAAK,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,MAAM,IAAI,CACd,CAAC,SAAS,IAAI,GAAG,IAAI,EACrB,CAAC,SAAS,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,IACzD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC3C,YAAY,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAC5C,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EACtC,IAAI,CAAC,EAAE,OAAO,GACb,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,wBAAgB,OAAO,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAC3C,IAAI,CAAC,EAAE,OAAO,GACb,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { UseFormRefReturn } from '../../../shared/core';
|
|
2
|
+
import { FormInstance } from '../../../shared/ui';
|
|
3
|
+
/**
|
|
4
|
+
* 表单组件实例引用 Hook
|
|
5
|
+
*
|
|
6
|
+
* @description 基于 `@qin-ui/pro-components-core` 的 `useFormRef`,将泛型参数绑定为 Element Plus 的 `FormInstance`,
|
|
7
|
+
* 使 formRef 获取到完整的 Element Plus Form 组件 API 类型提示(如 `validate()`、`resetFields()` 等)。
|
|
8
|
+
*
|
|
9
|
+
* `formRef` 由 ProForm 组件内部自动通过 `setFormRef` 绑定,无需手动调用。
|
|
10
|
+
*
|
|
11
|
+
* @returns 表单组件实例引用管理对象:
|
|
12
|
+
* - `formRef` — Element Plus Form 组件实例的响应式引用(`Ref<FormInstance | undefined>`)
|
|
13
|
+
* - `setFormRef(inst)` — 设置 Form 组件实例,由 ProForm 内部自动调用
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const { formRef, setFormRef } = useFormRef()
|
|
18
|
+
*
|
|
19
|
+
* // formRef 由 ProForm 自动绑定,可直接使用
|
|
20
|
+
* await formRef.value?.validate()
|
|
21
|
+
* formRef.value?.resetFields()
|
|
22
|
+
* formRef.value?.scrollToField('username')
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @see {@link coreUseFormRef} 底层核心实现(来自 @qin-ui/pro-components-core)
|
|
26
|
+
*
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export declare function useFormRef(): UseFormRefReturn<FormInstance>;
|
|
30
|
+
//# sourceMappingURL=useFormRef.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFormRef.d.ts","sourceRoot":"","sources":["../../../../src/components/form/hooks/useFormRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,UAAU,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAE3D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { default as ProForm } from './components/ProForm/index.vue';
|
|
2
|
+
export { ContainerFragment, SlotComponent, type ProFormProps, type ProFormInstance, type ProFormItemProps, type ProFormItemInstance, } from './components';
|
|
3
|
+
export { type ComponentMap, type ComponentName } from './constants';
|
|
4
|
+
export { type Field, type Fields } from './types';
|
|
5
|
+
export { useForm, useFields, useFormRef, useFormData, type Form, type UseFields, } from './hooks';
|
|
6
|
+
export default ProForm;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gCAAgC,CAAC;AAGrD,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAGlD,OAAO,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,IAAI,EACT,KAAK,SAAS,GACf,MAAM,SAAS,CAAC;AAEjB,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { FormItemProps, GridProps, GridItemProps, FormInstance, FormItem } from '../../../shared/ui';
|
|
2
|
+
import { ComponentProps, ComponentSlots } from 'vue-component-type-helpers';
|
|
3
|
+
import { CSSProperties, Component, Raw, MaybeRef, ComputedRef, VNode, VNodeProps } from 'vue';
|
|
4
|
+
import { Data, Path } from '../../../shared/core';
|
|
5
|
+
import { ComponentName, GetComponentType } from '../constants';
|
|
6
|
+
export type { FormInstance };
|
|
7
|
+
export type PathProps = {
|
|
8
|
+
path?: string;
|
|
9
|
+
} & Data;
|
|
10
|
+
export type VModelProps<T = any> = {
|
|
11
|
+
modelValue?: T;
|
|
12
|
+
'onUpdate:modelValue'?: (val: T) => void;
|
|
13
|
+
};
|
|
14
|
+
export type ValueFormatter = {
|
|
15
|
+
(val: any, oldVal: any): any;
|
|
16
|
+
} | {
|
|
17
|
+
get?: (val: any) => any;
|
|
18
|
+
set?: (val: any, oldVal: any) => any;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* @description 自定义组件
|
|
22
|
+
* @example (p, ctx) => h('div', ctx.attrs)
|
|
23
|
+
*/
|
|
24
|
+
export type RenderComponentType = Component<VModelProps & PathProps>;
|
|
25
|
+
/**
|
|
26
|
+
* @description 插槽组件类型
|
|
27
|
+
*/
|
|
28
|
+
export type SlotComponentType = Component<PathProps> | VNode | string | number | boolean | null | undefined | ((...args: any[]) => SlotComponentType);
|
|
29
|
+
/**
|
|
30
|
+
* @description 容器组件类型
|
|
31
|
+
*/
|
|
32
|
+
export type ContainerComponent = Component<PathProps>;
|
|
33
|
+
/**
|
|
34
|
+
* @description 插槽对象类型
|
|
35
|
+
*/
|
|
36
|
+
export type Slots = {
|
|
37
|
+
[name: string]: SlotComponentType;
|
|
38
|
+
};
|
|
39
|
+
export type Option = {
|
|
40
|
+
label: string;
|
|
41
|
+
value: any;
|
|
42
|
+
[x: string]: any;
|
|
43
|
+
};
|
|
44
|
+
export type Options = Array<Option>;
|
|
45
|
+
export type Grid = boolean | (GridProps & {});
|
|
46
|
+
type BaseCommon<D extends Data = Data> = {
|
|
47
|
+
/**
|
|
48
|
+
* @description 字段标识namePath, 同prop
|
|
49
|
+
* @example 'name' | 'age' | 'sex' | ...
|
|
50
|
+
*/
|
|
51
|
+
path?: Path<D>;
|
|
52
|
+
/**
|
|
53
|
+
* @description 字段是否隐藏
|
|
54
|
+
*/
|
|
55
|
+
hidden?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* @description 字段是否禁用
|
|
58
|
+
*/
|
|
59
|
+
disabled?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* @description 字段中文名称,支持字符串或组件
|
|
62
|
+
* @example '姓名' | '年龄' | '性别' | () => h('span', '自定义标签')
|
|
63
|
+
*/
|
|
64
|
+
label?: SlotComponentType;
|
|
65
|
+
/**
|
|
66
|
+
* @description 字段插槽配置,可包含formItem插槽和component插槽
|
|
67
|
+
* @example
|
|
68
|
+
* ```js
|
|
69
|
+
* slots: {
|
|
70
|
+
* label: () => h('div', { style: { fontSize: '12px' } }, '年龄'),
|
|
71
|
+
* addonAfter: '岁',
|
|
72
|
+
* suffix: () => h('span', '元')
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
slots?: Partial<ComponentSlots<typeof FormItem>>;
|
|
77
|
+
/**
|
|
78
|
+
* @description 字段formItem样式属性
|
|
79
|
+
* @example { marginBottom: '8px', padding: '12px' }
|
|
80
|
+
*/
|
|
81
|
+
formItemStyle?: CSSProperties;
|
|
82
|
+
/**
|
|
83
|
+
* @description 字段formItem样式类名
|
|
84
|
+
* @example 'custom-form-item' | 'required-field'
|
|
85
|
+
*/
|
|
86
|
+
formItemClass?: string;
|
|
87
|
+
/**
|
|
88
|
+
* @description 字段formItem容器包裹组件
|
|
89
|
+
* @example (props, ctx) => h('div', { class: 'custom-container' }, ctx.slots.default?.())
|
|
90
|
+
*/
|
|
91
|
+
formItemContainer?: ContainerComponent;
|
|
92
|
+
/**
|
|
93
|
+
* @description 将属性附加到 FormItem 的 DOM 节点
|
|
94
|
+
* @example { 'data-form-item-test': 'test-value', 'aria-label': 'name' }
|
|
95
|
+
*/
|
|
96
|
+
formItemDataAttrs?: Record<string, string>;
|
|
97
|
+
/**
|
|
98
|
+
* @description 额外的自定义属性,不会被当作组件参数,仅用做给字段添加标识属性等功能
|
|
99
|
+
* @example { group: 'group-1' }
|
|
100
|
+
*/
|
|
101
|
+
extraProps?: Record<string, any>;
|
|
102
|
+
};
|
|
103
|
+
type BaseWithFields<D extends Data = Data> = BaseCommon<D> & {
|
|
104
|
+
/**
|
|
105
|
+
* @description 嵌套子字段配置
|
|
106
|
+
* @example [{ key: 'firstName', label: '名' }, { key: 'lastName', label: '姓' }]
|
|
107
|
+
*/
|
|
108
|
+
fields: Fields<D>;
|
|
109
|
+
/**
|
|
110
|
+
* @description 网格布局属性,true表示使用默认网格布局,针对具有嵌套字段的字段
|
|
111
|
+
* @example boolean | { gutter: 24 }
|
|
112
|
+
*/
|
|
113
|
+
grid?: Grid;
|
|
114
|
+
component?: never;
|
|
115
|
+
/**
|
|
116
|
+
* @description 字段component样式属性
|
|
117
|
+
* @example { width: '100%', borderColor: '#d9d9d9' }
|
|
118
|
+
*/
|
|
119
|
+
componentStyle?: never;
|
|
120
|
+
/**
|
|
121
|
+
* @description 字段component样式类名
|
|
122
|
+
* @example 'custom-input' | 'error-input'
|
|
123
|
+
*/
|
|
124
|
+
componentClass?: never;
|
|
125
|
+
/**
|
|
126
|
+
* @description 字段component容器包裹组件
|
|
127
|
+
* @example (props, ctx) => h('div', { class: 'input-wrapper' }, ctx.slots.default?.())
|
|
128
|
+
*/
|
|
129
|
+
componentContainer?: never;
|
|
130
|
+
/**
|
|
131
|
+
* @description 将属性附加到表单组件的 DOM 节点
|
|
132
|
+
* @example { 'data-test': 'input-value', 'aria-label': 'name' }
|
|
133
|
+
*/
|
|
134
|
+
componentDataAttrs?: never;
|
|
135
|
+
/**
|
|
136
|
+
* @description 字段值处理函数,在onUpdateValue前执行,函数返回值将作为更新值,也可设置get和set函数,用于处理字段值
|
|
137
|
+
* @example (val) => val?.trim()
|
|
138
|
+
*/
|
|
139
|
+
valueFormatter?: never;
|
|
140
|
+
/**
|
|
141
|
+
* @description 组件v-model双向绑定更新属性名,默认'modelValue'
|
|
142
|
+
*/
|
|
143
|
+
modelProp?: never;
|
|
144
|
+
};
|
|
145
|
+
type BaseWithoutFields<D extends Data = Data> = BaseCommon<D> & {
|
|
146
|
+
fields?: undefined;
|
|
147
|
+
grid?: never;
|
|
148
|
+
/**
|
|
149
|
+
* @description 字段component样式属性
|
|
150
|
+
* @example { width: '100%', borderColor: '#d9d9d9' }
|
|
151
|
+
*/
|
|
152
|
+
componentStyle?: CSSProperties;
|
|
153
|
+
/**
|
|
154
|
+
* @description 字段component样式类名
|
|
155
|
+
* @example 'custom-input' | 'error-input'
|
|
156
|
+
*/
|
|
157
|
+
componentClass?: string;
|
|
158
|
+
/**
|
|
159
|
+
* @description 字段component容器包裹组件
|
|
160
|
+
* @example (props, ctx) => h('div', { class: 'input-wrapper' }, ctx.slots.default?.())
|
|
161
|
+
*/
|
|
162
|
+
componentContainer?: ContainerComponent;
|
|
163
|
+
/**
|
|
164
|
+
* @description 将属性附加到表单组件的 DOM 节点
|
|
165
|
+
* @example { 'data-test': 'input-value', 'aria-label': 'name' }
|
|
166
|
+
*/
|
|
167
|
+
componentDataAttrs?: Record<string, string>;
|
|
168
|
+
/**
|
|
169
|
+
* @description 字段值处理函数,在onUpdateValue前执行,函数返回值将作为更新值,也可设置get和set函数,用于处理字段值
|
|
170
|
+
* @example (val) => val?.trim()
|
|
171
|
+
*/
|
|
172
|
+
valueFormatter?: ValueFormatter;
|
|
173
|
+
/**
|
|
174
|
+
* @description 组件v-model双向绑定更新属性名,默认'modelValue'
|
|
175
|
+
*/
|
|
176
|
+
modelProp?: string;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* @type {Object} Base - 基础公共字段类型
|
|
180
|
+
*/
|
|
181
|
+
export type Base<D extends Data = Data> = BaseWithFields<D> | BaseWithoutFields<D>;
|
|
182
|
+
/**
|
|
183
|
+
* @type {FieldTypeMap} 字段类型集合
|
|
184
|
+
*/
|
|
185
|
+
export type FieldTypeMap<D extends Data = Data> = {
|
|
186
|
+
[K in ComponentName]: K extends 'custom' ? WithCommon<{
|
|
187
|
+
slots?: Slots;
|
|
188
|
+
[x: string]: any;
|
|
189
|
+
}, D> & {
|
|
190
|
+
component?: RenderComponentType | Raw<RenderComponentType>;
|
|
191
|
+
} : WithComponent<GetComponentType<K>, D> & {
|
|
192
|
+
component?: K;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* @description 不支持响应式的属性名
|
|
197
|
+
*/
|
|
198
|
+
type NotSupportedRefOrGetterProps = 'component' | 'formItemContainer' | 'componentContainer' | 'valueFormatter' | 'fields' | 'slots' | 'modelProp';
|
|
199
|
+
type MaybeRefOrComputedRef<T = any> = MaybeRef<T> | ComputedRef<T>;
|
|
200
|
+
/**
|
|
201
|
+
* @description 为对象属性添加响应式支持的类型
|
|
202
|
+
* @template T - 原始类型
|
|
203
|
+
*/
|
|
204
|
+
export type WithRef<T> = {
|
|
205
|
+
[P in keyof T]: P extends NotSupportedRefOrGetterProps ? T[P] : T[P] extends (...args: any[]) => any ? T[P] : MaybeRefOrComputedRef<T[P]>;
|
|
206
|
+
};
|
|
207
|
+
type WithCommonBase<T = unknown> = T & Omit<FormItemProps, 'label'> & GridItemProps;
|
|
208
|
+
type WithCommon<T, D extends Data = Data> = WithRef<WithCommonBase<T> & BaseWithoutFields<D>>;
|
|
209
|
+
type WithFields<D extends Data = Data> = WithRef<WithCommonBase & BaseWithFields<D>>;
|
|
210
|
+
/**
|
|
211
|
+
* @description 自动从 Vue 组件提取 Props 和 Slots,并加上公共表单字段属性
|
|
212
|
+
* @template T - Vue 组件类型
|
|
213
|
+
* @template D - 数据对象类型
|
|
214
|
+
*/
|
|
215
|
+
type WithComponent<T extends abstract new (...args: any) => any, D extends Data = Data> = WithCommon<{
|
|
216
|
+
slots?: Partial<ComponentSlots<T>>;
|
|
217
|
+
} & Partial<Omit<ComponentProps<T>, keyof VNodeProps>>, D>;
|
|
218
|
+
/**
|
|
219
|
+
* @description 字段配置类型,包含所有字段属性和响应式支持
|
|
220
|
+
* @template D - 数据对象类型
|
|
221
|
+
|
|
222
|
+
* @public
|
|
223
|
+
*/
|
|
224
|
+
export type Field<C extends ComponentName = ComponentName, D extends Data = Data> = (FieldTypeMap<D>[C] & {
|
|
225
|
+
component?: C extends 'custom' ? FieldTypeMap<D>[C]['component'] : C;
|
|
226
|
+
}) | WithFields<D>;
|
|
227
|
+
/**
|
|
228
|
+
* @description 字段数组类型
|
|
229
|
+
* @template D - 数据对象类型
|
|
230
|
+
|
|
231
|
+
* @public
|
|
232
|
+
*/
|
|
233
|
+
export type Fields<D extends Data = Data> = Array<Field<ComponentName, D>>;
|
|
234
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/form/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Columns } from '../types';
|
|
2
|
+
import { Table } from '../useTable';
|
|
3
|
+
type Props = {
|
|
4
|
+
columns: Columns;
|
|
5
|
+
table?: Table;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=ColumnControl.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnControl.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/table/components/ColumnControl.vue"],"names":[],"mappings":"AAkJA,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;;AA2PF,wBAOG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare function __VLS_template(): {
|
|
2
|
+
attrs: Partial<{}>;
|
|
3
|
+
slots: {
|
|
4
|
+
default?(_: {}): any;
|
|
5
|
+
};
|
|
6
|
+
refs: {};
|
|
7
|
+
rootEl: HTMLDivElement;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
10
|
+
declare const __VLS_component: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
11
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
12
|
+
export default _default;
|
|
13
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
14
|
+
new (): {
|
|
15
|
+
$slots: S;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=DefaultSearchFormContainer.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultSearchFormContainer.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/table/components/DefaultSearchFormContainer.vue"],"names":[],"mappings":"AAkBA,iBAAS,cAAc;WA2BT,OAAO,IAA6B;;yBAVrB,GAAG;;;;EAe/B;AAOD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,0RAMnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAEpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|