@volverjs/form-vue
Version:
Vue 3 Forms with @volverjs/ui-vue
130 lines (129 loc) • 5.72 kB
TypeScript
import { Component, ConcreteComponent, DeepReadonly, InjectionKey, PropType, Ref, SlotsType } from 'vue';
import { FormFieldComponentOptions, FormSchema, InjectedFormData, InjectedFormFieldData, InjectedFormWrapperData, Path, InferSchema, InferFormattedError } from './types';
import { FormFieldType } from './enums';
export declare function defineFormField<Schema extends FormSchema, Type = undefined>(formProvideKey: InjectionKey<InjectedFormData<Schema, Type>>, wrapperProvideKey: InjectionKey<InjectedFormWrapperData<Schema>>, formFieldInjectionKey: InjectionKey<InjectedFormFieldData<Schema>>, options?: FormFieldComponentOptions): import('vue').DefineComponent<import('vue').ExtractPropTypes<{
type: {
type: PropType<`${FormFieldType}`>;
validator: (value: FormFieldType) => boolean;
default: FormFieldType;
};
is: {
type: PropType<Component | string>;
default: undefined;
};
name: {
type: PropType<Path<InferSchema<Schema>>>;
required: true;
};
props: {
type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
default: () => {};
};
showValid: {
type: BooleanConstructor;
default: boolean;
};
defaultValue: {
type: (ArrayConstructor | NumberConstructor | ObjectConstructor | BooleanConstructor | StringConstructor)[];
default: undefined;
};
lazyLoad: {
type: BooleanConstructor;
default: boolean;
};
readonly: {
type: BooleanConstructor;
default: undefined;
};
}>, {
component: import('vue').ComputedRef<{
new (...args: any[]): any;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
} | ConcreteComponent>;
hasProps: import('vue').ComputedRef<{
name: {} | ([{
type: PropType<Path<InferSchema<Schema>>>;
required: true;
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('@vue/shared').IfAny<V, V, D> : V : V : {
type: PropType<Path<InferSchema<Schema>>>;
required: true;
});
invalid: boolean;
valid: boolean | undefined;
type: FormFieldType | undefined;
invalidLabel: string[] | undefined;
modelValue: unknown;
readonly: boolean;
'onUpdate:modelValue': (value: unknown) => void;
}>;
invalid: import('vue').ComputedRef<boolean>;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("invalid" | "valid" | "update:modelValue" | "update:formData")[], "invalid" | "valid" | "update:modelValue" | "update:formData", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
type: {
type: PropType<`${FormFieldType}`>;
validator: (value: FormFieldType) => boolean;
default: FormFieldType;
};
is: {
type: PropType<Component | string>;
default: undefined;
};
name: {
type: PropType<Path<InferSchema<Schema>>>;
required: true;
};
props: {
type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
default: () => {};
};
showValid: {
type: BooleanConstructor;
default: boolean;
};
defaultValue: {
type: (ArrayConstructor | NumberConstructor | ObjectConstructor | BooleanConstructor | StringConstructor)[];
default: undefined;
};
lazyLoad: {
type: BooleanConstructor;
default: boolean;
};
readonly: {
type: BooleanConstructor;
default: undefined;
};
}>> & Readonly<{
onInvalid?: ((...args: any[]) => any) | undefined;
onValid?: ((...args: any[]) => any) | undefined;
"onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
"onUpdate:formData"?: ((...args: any[]) => any) | undefined;
}>, {
type: "number" | "text" | "email" | "password" | "tel" | "url" | "search" | "date" | "time" | "datetime-local" | "month" | "week" | "color" | "select" | "checkbox" | "radio" | "textarea" | "radioGroup" | "checkboxGroup" | "combobox" | "custom";
readonly: boolean;
props: [{
type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
default: () => {};
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('@vue/shared').IfAny<V, V, D> : V : V : {
type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
default: () => {};
};
is: string | Component;
showValid: boolean;
defaultValue: string | number | boolean | unknown[] | Record<string, any>;
lazyLoad: boolean;
}, SlotsType<{
[key: string]: any;
default: {
errors: DeepReadonly<InferFormattedError<Schema> | undefined>;
formData?: undefined extends Type ? Partial<InferSchema<Schema>> : Type;
formErrors?: DeepReadonly<InferFormattedError<Schema>>;
invalid: boolean;
invalidLabel?: string[];
modelValue: any;
readonly: boolean;
onUpdate: (value: unknown) => void;
submit?: InjectedFormData<Schema, Type>["submit"];
validate?: InjectedFormData<Schema, Type>["validate"];
};
}>, {}, {}, "invalid" | "type" | "errors" | "component" | "hasProps" | "invalidLabel" | "is", import('vue').ComponentProvideOptions, true, {}, any>;