vue-admin-core
Version:
A Component Library for Vue 3
435 lines (434 loc) • 20.7 kB
TypeScript
import { DefineComponent, ISchema, ISchemaFieldProps, SchemaKey, VueComponent } from "@formily/vue";
import { Form as FormilyForm, IFormProps } from "@formily/core";
import { Options, Result, Service } from "../useRequest/src/types";
import { type PropType, type Ref } from "vue";
import { ArrayTable, ITable } from "vue-admin-core/es/formily";
import defaultProps from "element-plus/es/components/table/src/table/defaults";
/**
* useFormilyTable Hook 的签名
*/
declare type useFormilyTable = <TData, TParams extends any[]>(request: Service<TData, TParams> | Result<TData, TParams>, options?: Options<TData, TParams> & {
formProps?: IFormProps<object>;
}, definitions?: Record<string, ISchema>, SchemaField?: DefineComponent<ISchemaFieldProps>) => {
form: Ref<FormilyForm>;
Table: DefineComponent<PropType<typeof ArrayTable>>;
request: Result<TData, TParams>;
table: ITable;
};
export type UseFormilyTableSchema = Record<SchemaKey, {
"x-table-header": boolean;
"x-column-props": typeof defaultProps;
} & ISchema>;
export declare const transformTableSchema: (schemas: UseFormilyTableSchema) => Record<string, import("@formily/vue").Stringify<{
[key: symbol]: any;
[key: `x-${string}`]: any;
[key: `x-${number}`]: any;
version?: string | undefined;
name?: SchemaKey | undefined;
title?: any;
description?: any;
default?: any;
readOnly?: boolean | undefined;
writeOnly?: boolean | undefined;
type?: import("@formily/vue").SchemaTypes | undefined;
enum?: import("@formily/vue").SchemaEnum<any> | undefined;
const?: any;
multipleOf?: number | undefined;
maximum?: number | undefined;
exclusiveMaximum?: number | undefined;
minimum?: number | undefined;
exclusiveMinimum?: number | undefined;
maxLength?: number | undefined;
minLength?: number | undefined;
pattern?: string | RegExp | undefined;
maxItems?: number | undefined;
minItems?: number | undefined;
uniqueItems?: boolean | undefined;
maxProperties?: number | undefined;
minProperties?: number | undefined;
required?: string | boolean | string[] | undefined;
format?: string | undefined;
$ref?: string | undefined;
$namespace?: string | undefined;
definitions?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
properties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
items?: import("@formily/vue").SchemaItems<any, any, any, any, any, any, any, any> | undefined;
additionalItems?: import("@formily/vue").Stringify<any> | undefined;
patternProperties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
additionalProperties?: import("@formily/vue").Stringify<any> | undefined;
"x-value"?: any;
"x-index"?: number | undefined;
"x-pattern"?: any;
"x-display"?: any;
"x-validator"?: any;
"x-decorator"?: any;
"x-decorator-props"?: any;
"x-component"?: any;
"x-component-props"?: any;
"x-reactions"?: import("@formily/vue").SchemaReactions<any> | undefined;
"x-content"?: any;
"x-data"?: any;
"x-visible"?: boolean | undefined;
"x-hidden"?: boolean | undefined;
"x-disabled"?: boolean | undefined;
"x-editable"?: boolean | undefined;
"x-read-only"?: boolean | undefined;
"x-read-pretty"?: boolean | undefined;
"x-compile-omitted"?: string[] | undefined;
}>>;
export declare const useFormilyTable: <TData, TParams extends any[]>(request: Service<TData, TParams> | Result<TData, TParams>, options?: (Options<TData, TParams> & {
formProps?: IFormProps<object> | undefined;
}) | undefined, SchemaField?: DefineComponent<ISchemaFieldProps>) => {
form: Ref<FormilyForm<any>>;
Table: import("vue").DefineComponent<{
schema: {
type: PropType<UseFormilyTableSchema>;
required: true;
};
components: {
type: PropType<Record<string, VueComponent>>;
};
scope: {
type: ObjectConstructor;
};
name: {
type: PropType<SchemaKey>;
};
definitions: {
type: PropType<Record<string, import("@formily/vue").Stringify<{
[key: symbol]: any;
[key: `x-${string}`]: any;
[key: `x-${number}`]: any;
version?: string | undefined;
name?: SchemaKey | undefined;
title?: any;
description?: any;
default?: any;
readOnly?: boolean | undefined;
writeOnly?: boolean | undefined;
type?: import("@formily/vue").SchemaTypes | undefined;
enum?: import("@formily/vue").SchemaEnum<any> | undefined;
const?: any;
multipleOf?: number | undefined;
maximum?: number | undefined;
exclusiveMaximum?: number | undefined;
minimum?: number | undefined;
exclusiveMinimum?: number | undefined;
maxLength?: number | undefined;
minLength?: number | undefined;
pattern?: string | RegExp | undefined;
maxItems?: number | undefined;
minItems?: number | undefined;
uniqueItems?: boolean | undefined;
maxProperties?: number | undefined;
minProperties?: number | undefined;
required?: string | boolean | string[] | undefined;
format?: string | undefined;
$ref?: string | undefined;
$namespace?: string | undefined;
definitions?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
properties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
items?: import("@formily/vue").SchemaItems<any, any, any, any, any, any, any, any> | undefined;
additionalItems?: import("@formily/vue").Stringify<any> | undefined;
patternProperties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
additionalProperties?: import("@formily/vue").Stringify<any> | undefined;
"x-value"?: any;
"x-index"?: number | undefined;
"x-pattern"?: any;
"x-display"?: any;
"x-validator"?: any;
"x-decorator"?: any;
"x-decorator-props"?: any;
"x-component"?: any;
"x-component-props"?: any;
"x-reactions"?: import("@formily/vue").SchemaReactions<any> | undefined;
"x-content"?: any;
"x-data"?: any;
"x-visible"?: boolean | undefined;
"x-hidden"?: boolean | undefined;
"x-disabled"?: boolean | undefined;
"x-editable"?: boolean | undefined;
"x-read-only"?: boolean | undefined;
"x-read-pretty"?: boolean | undefined;
"x-compile-omitted"?: string[] | undefined;
}>>>;
};
data: {
type: PropType<any[]>;
default: () => never[];
};
size: {
readonly type: PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "large" | "default", never>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
width: (NumberConstructor | StringConstructor)[];
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
fit: {
type: BooleanConstructor;
default: boolean;
};
stripe: BooleanConstructor;
border: BooleanConstructor;
rowKey: PropType<string | ((row: any) => string) | undefined>;
showHeader: {
type: BooleanConstructor;
default: boolean;
};
showSummary: BooleanConstructor;
sumText: StringConstructor;
summaryMethod: PropType<import("element-plus/es/components/table/src/table/defaults").SummaryMethod<any> | undefined>;
rowClassName: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnCls<any> | undefined>;
rowStyle: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnStyle<any> | undefined>;
cellClassName: PropType<import("element-plus/es/components/table/src/table/defaults").CellCls<any> | undefined>;
cellStyle: PropType<import("element-plus/es/components/table/src/table/defaults").CellStyle<any> | undefined>;
headerRowClassName: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnCls<any> | undefined>;
headerRowStyle: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnStyle<any> | undefined>;
headerCellClassName: PropType<import("element-plus/es/components/table/src/table/defaults").CellCls<any> | undefined>;
headerCellStyle: PropType<import("element-plus/es/components/table/src/table/defaults").CellStyle<any> | undefined>;
highlightCurrentRow: BooleanConstructor;
currentRowKey: (NumberConstructor | StringConstructor)[];
emptyText: StringConstructor;
expandRowKeys: PropType<any[] | undefined>;
defaultExpandAll: BooleanConstructor;
defaultSort: PropType<import("element-plus/es/components/table/src/table/defaults").Sort | undefined>;
tooltipEffect: StringConstructor;
tooltipOptions: PropType<Partial<Pick<import("element-plus").ElTooltipProps, "showArrow" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter" | "hideAfter">> | undefined>;
spanMethod: PropType<((data: {
row: any;
rowIndex: number;
column: import("element-plus/es/components/table/src/table-column/defaults").TableColumnCtx<any>;
columnIndex: number;
}) => number[] | {
rowspan: number;
colspan: number;
} | undefined) | undefined>;
selectOnIndeterminate: {
type: BooleanConstructor;
default: boolean;
};
indent: {
type: NumberConstructor;
default: number;
};
treeProps: {
type: PropType<{
hasChildren?: string | undefined;
children?: string | undefined;
} | undefined>;
default: () => {
hasChildren: string;
children: string;
};
};
lazy: BooleanConstructor;
load: PropType<((row: any, treeNode: import("element-plus/es/components/table/src/table/defaults").TreeNode, resolve: (data: any[]) => void) => void) | undefined>;
style: {
type: PropType<import("vue").CSSProperties>;
default: () => {};
};
className: {
type: StringConstructor;
default: string;
};
tableLayout: {
type: PropType<"fixed" | "auto">;
default: string;
};
scrollbarAlwaysOn: {
type: BooleanConstructor;
default: boolean;
};
flexible: BooleanConstructor;
showOverflowTooltip: PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "showArrow" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter" | "hideAfter">> | undefined>;
}, () => any, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
schema: {
type: PropType<UseFormilyTableSchema>;
required: true;
};
components: {
type: PropType<Record<string, VueComponent>>;
};
scope: {
type: ObjectConstructor;
};
name: {
type: PropType<SchemaKey>;
};
definitions: {
type: PropType<Record<string, import("@formily/vue").Stringify<{
[key: symbol]: any;
[key: `x-${string}`]: any;
[key: `x-${number}`]: any;
version?: string | undefined;
name?: SchemaKey | undefined;
title?: any;
description?: any;
default?: any;
readOnly?: boolean | undefined;
writeOnly?: boolean | undefined;
type?: import("@formily/vue").SchemaTypes | undefined;
enum?: import("@formily/vue").SchemaEnum<any> | undefined;
const?: any;
multipleOf?: number | undefined;
maximum?: number | undefined;
exclusiveMaximum?: number | undefined;
minimum?: number | undefined;
exclusiveMinimum?: number | undefined;
maxLength?: number | undefined;
minLength?: number | undefined;
pattern?: string | RegExp | undefined;
maxItems?: number | undefined;
minItems?: number | undefined;
uniqueItems?: boolean | undefined;
maxProperties?: number | undefined;
minProperties?: number | undefined;
required?: string | boolean | string[] | undefined;
format?: string | undefined;
$ref?: string | undefined;
$namespace?: string | undefined;
definitions?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
properties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
items?: import("@formily/vue").SchemaItems<any, any, any, any, any, any, any, any> | undefined;
additionalItems?: import("@formily/vue").Stringify<any> | undefined;
patternProperties?: import("@formily/vue").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
additionalProperties?: import("@formily/vue").Stringify<any> | undefined;
"x-value"?: any;
"x-index"?: number | undefined;
"x-pattern"?: any;
"x-display"?: any;
"x-validator"?: any;
"x-decorator"?: any;
"x-decorator-props"?: any;
"x-component"?: any;
"x-component-props"?: any;
"x-reactions"?: import("@formily/vue").SchemaReactions<any> | undefined;
"x-content"?: any;
"x-data"?: any;
"x-visible"?: boolean | undefined;
"x-hidden"?: boolean | undefined;
"x-disabled"?: boolean | undefined;
"x-editable"?: boolean | undefined;
"x-read-only"?: boolean | undefined;
"x-read-pretty"?: boolean | undefined;
"x-compile-omitted"?: string[] | undefined;
}>>>;
};
data: {
type: PropType<any[]>;
default: () => never[];
};
size: {
readonly type: PropType<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "small" | "large" | "default", never>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
width: (NumberConstructor | StringConstructor)[];
height: (NumberConstructor | StringConstructor)[];
maxHeight: (NumberConstructor | StringConstructor)[];
fit: {
type: BooleanConstructor;
default: boolean;
};
stripe: BooleanConstructor;
border: BooleanConstructor;
rowKey: PropType<string | ((row: any) => string) | undefined>;
showHeader: {
type: BooleanConstructor;
default: boolean;
};
showSummary: BooleanConstructor;
sumText: StringConstructor;
summaryMethod: PropType<import("element-plus/es/components/table/src/table/defaults").SummaryMethod<any> | undefined>;
rowClassName: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnCls<any> | undefined>;
rowStyle: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnStyle<any> | undefined>;
cellClassName: PropType<import("element-plus/es/components/table/src/table/defaults").CellCls<any> | undefined>;
cellStyle: PropType<import("element-plus/es/components/table/src/table/defaults").CellStyle<any> | undefined>;
headerRowClassName: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnCls<any> | undefined>;
headerRowStyle: PropType<import("element-plus/es/components/table/src/table/defaults").ColumnStyle<any> | undefined>;
headerCellClassName: PropType<import("element-plus/es/components/table/src/table/defaults").CellCls<any> | undefined>;
headerCellStyle: PropType<import("element-plus/es/components/table/src/table/defaults").CellStyle<any> | undefined>;
highlightCurrentRow: BooleanConstructor;
currentRowKey: (NumberConstructor | StringConstructor)[];
emptyText: StringConstructor;
expandRowKeys: PropType<any[] | undefined>;
defaultExpandAll: BooleanConstructor;
defaultSort: PropType<import("element-plus/es/components/table/src/table/defaults").Sort | undefined>;
tooltipEffect: StringConstructor;
tooltipOptions: PropType<Partial<Pick<import("element-plus").ElTooltipProps, "showArrow" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter" | "hideAfter">> | undefined>;
spanMethod: PropType<((data: {
row: any;
rowIndex: number;
column: import("element-plus/es/components/table/src/table-column/defaults").TableColumnCtx<any>;
columnIndex: number;
}) => number[] | {
rowspan: number;
colspan: number;
} | undefined) | undefined>;
selectOnIndeterminate: {
type: BooleanConstructor;
default: boolean;
};
indent: {
type: NumberConstructor;
default: number;
};
treeProps: {
type: PropType<{
hasChildren?: string | undefined;
children?: string | undefined;
} | undefined>;
default: () => {
hasChildren: string;
children: string;
};
};
lazy: BooleanConstructor;
load: PropType<((row: any, treeNode: import("element-plus/es/components/table/src/table/defaults").TreeNode, resolve: (data: any[]) => void) => void) | undefined>;
style: {
type: PropType<import("vue").CSSProperties>;
default: () => {};
};
className: {
type: StringConstructor;
default: string;
};
tableLayout: {
type: PropType<"fixed" | "auto">;
default: string;
};
scrollbarAlwaysOn: {
type: BooleanConstructor;
default: boolean;
};
flexible: BooleanConstructor;
showOverflowTooltip: PropType<boolean | Partial<Pick<import("element-plus").ElTooltipProps, "showArrow" | "effect" | "enterable" | "popperClass" | "offset" | "placement" | "popperOptions" | "showAfter" | "hideAfter">> | undefined>;
}>>, {
style: import("vue").CSSProperties;
data: any[];
className: string;
fit: boolean;
stripe: boolean;
border: boolean;
showHeader: boolean;
showSummary: boolean;
highlightCurrentRow: boolean;
defaultExpandAll: boolean;
selectOnIndeterminate: boolean;
indent: number;
treeProps: {
hasChildren?: string | undefined;
children?: string | undefined;
} | undefined;
lazy: boolean;
tableLayout: "fixed" | "auto";
scrollbarAlwaysOn: boolean;
flexible: boolean;
}, {}>;
request: Result<TData, TParams>;
table: ITable;
};
export default useFormilyTable;