mirror of
https://github.com/LukeHagar/form.git
synced 2025-12-09 12:27:44 +00:00
checkpoint
This commit is contained in:
@@ -12,16 +12,20 @@ export type FieldOptions<TData, TFormData> = {
|
||||
validate?: (
|
||||
value: TData,
|
||||
fieldApi: FieldApi<TData, TFormData>,
|
||||
) => ValidationError
|
||||
validateAsync?: (
|
||||
value: TData,
|
||||
fieldApi: FieldApi<TData, TFormData>,
|
||||
) => ValidationError | Promise<ValidationError>
|
||||
validatePristine?: boolean
|
||||
validatePristine?: boolean // Default: false
|
||||
validateOn?: ValidateOn // Default: 'change'
|
||||
validateAsyncOn?: ValidateOn // Default: 'blur'
|
||||
validateAsyncDebounceMs?: number
|
||||
filterValue?: (value: TData) => TData
|
||||
defaultMeta?: Partial<FieldMeta>
|
||||
change?: boolean
|
||||
blur?: boolean
|
||||
submit?: boolean
|
||||
validateUntouched?: boolean // Default: false
|
||||
validateOn?: ValidateOn // Default: 'change'
|
||||
validateAsyncOn?: ValidateOn // Default: 'blur'
|
||||
}
|
||||
|
||||
export type FieldMeta = {
|
||||
@@ -148,7 +152,12 @@ export class FieldApi<TData, TFormData> {
|
||||
}
|
||||
|
||||
update = (opts: FieldApiOptions<TData, TFormData>) => {
|
||||
this.options = { validateOn: 'change', validateAsyncOn: 'blur', ...opts }
|
||||
this.options = {
|
||||
validateOn: 'change',
|
||||
validateAsyncOn: 'blur',
|
||||
validateAsyncDebounceMs: 0,
|
||||
...opts,
|
||||
}
|
||||
|
||||
// Default Value
|
||||
if (
|
||||
@@ -191,7 +200,7 @@ export class FieldApi<TData, TFormData> {
|
||||
form: this.form,
|
||||
})
|
||||
|
||||
validate = async () => {
|
||||
#validate = async (isAsync: boolean) => {
|
||||
if (!this.options.validate) {
|
||||
return
|
||||
}
|
||||
@@ -251,6 +260,9 @@ export class FieldApi<TData, TFormData> {
|
||||
return this.getInfo().validationPromise
|
||||
}
|
||||
|
||||
validate = () => this.#validate(false)
|
||||
validateAsync = () => this.#validate(true)
|
||||
|
||||
getChangeProps = <T extends ChangeProps<any>>(
|
||||
props: T = {} as T,
|
||||
): ChangeProps<TData> & Omit<T, keyof ChangeProps<TData>> => {
|
||||
|
||||
Reference in New Issue
Block a user