yanzhen-design-vue
Version:
69 lines (68 loc) • 2.73 kB
TypeScript
import { NullValue } from '@yanzhen-libs/utils';
import { ComponentPublicInstance, SetupContext, VNode, VNodeRef } from 'vue';
import { ColProps } from '../../col';
import { RowProps } from '../../row';
import { FormItemProps } from '../../form-item';
import { FormProps } from '../../form';
import { AntUseForm } from '../../form/src/hooks/use-form';
import { UnwrapRefs } from '@yanzhen-libs/utils-vue';
import { SchemaConfig } from '@yanzhen-lowcode/core';
export type FormProviderModel = {
[field: string]: any;
};
export interface FormProviderItemColProps extends Omit<ColProps, 'span'> {
span: string | number | ColProps['span'];
}
export interface FormProviderRolProps extends RowProps, Omit<ColProps, keyof RowProps> {
col?: Partial<FormProviderItemColProps>;
}
export type FormProviderFieldItemProps = FormItemProps;
export interface FormProviderSchemaProps extends Omit<FormProps, 'model'> {
model: FormProviderModel;
}
export interface FormProviderFieldProps extends FormProviderSchemaProps, Omit<FormItemProps, keyof FormProviderSchemaProps> {
item?: Partial<FormItemProps>;
}
export interface FormProviderBaseBody {
type: string | VNode;
props?: Record<string, any>;
events?: Record<string, any>;
use?: boolean;
draggable?: boolean | Record<string, any>;
readOnly?: boolean;
hidden?: boolean;
visible?: boolean;
field?: FormProviderFieldProps;
col?: FormProviderItemColProps;
body?: ProviderBodyFn<FormProviderBody | VNode | NullValue<void>>;
}
export type FormProviderBody = FormProviderBaseBody;
type ProviderBodyFn<T> = T | T[] | (() => T | T[]);
export interface FormProviderBaseSchema extends Omit<FormProviderBaseBody, 'col' | 'body' | 'props'> {
preview?: boolean;
readOnly?: boolean;
grid?: boolean;
row?: FormProviderRolProps;
ref?: VNodeRef | VNodeRef[];
props?: Partial<FormProviderSchemaProps>;
body?: ProviderBodyFn<FormProviderBody | VNode | NullValue<void>>;
}
export interface FormProviderSchema extends Omit<FormProviderBaseSchema, 'row'> {
row?: boolean | FormProviderRolProps;
}
export type AntUseFormProps = UnwrapRefs<AntUseForm>;
export interface FormProviderSchemaOptions extends Omit<AntUseFormProps, 'modelRef' | 'rulesRef'> {
model?: FormProviderFieldProps['model'];
rules?: FormProviderFieldProps['rules'];
slots?: SetupContext['slots'];
emit?: SetupContext['emit'];
fields?: any;
row?: Partial<FormProviderRolProps>;
form?: Partial<FormProviderFieldProps>;
rowSchema?: SchemaConfig;
formSchema?: SchemaConfig;
useModelValue?: boolean;
[option: string]: any;
}
export type FormProviderRefInstance = ComponentPublicInstance | Element | null;
export {};