UNPKG

yanzhen-design-vue

Version:

69 lines (68 loc) 2.73 kB
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 {};