@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
82 lines (81 loc) • 4.79 kB
TypeScript
import type { ValidateFunction } from 'ajv/dist/2020.js';
import { FormError } from '../utils';
import type { AjvInstance } from '../utils/ajv';
import type * as z from 'zod';
import type { FieldPropsGeneric, ReceiveAdditionalEventArgs, Validator, Identifier } from '../types';
import type { TransformerFns } from './useFieldTransform';
import type { SubmitStateWithValidating, PersistErrorStateMethod, ErrorInitiator } from './useFieldError';
import type { AsyncProcesses } from './useFieldAsync';
export type UseFieldValidationParams<Value> = {
finalSchema: unknown;
hasZodSchema: boolean;
onChangeValidatorProp: Validator<Value>;
onBlurValidator: Validator<Value>;
validateInitially: boolean;
validateUnchanged: boolean;
validateContinuously: boolean;
identifier: Identifier;
disabled: boolean;
emptyValue: unknown;
required: boolean;
hasDataContext: boolean;
getAjvInstanceDataContext: () => AjvInstance;
setFieldEventListener: (identifier: Identifier, event: string, fn: () => void) => void;
getValueByPath: (path: string) => unknown;
getSourceValue: (path: string) => unknown;
exportValidators: unknown;
props: unknown;
dataContext: unknown;
combinedErrorMessages: Record<string, string>;
makeIteratePath: (path: string, suffix?: string, options?: unknown) => string;
errorPrioritization: string[];
sectionPath: string;
hasSectionSchema: boolean;
dataContextSchema: unknown;
valueRef: React.RefObject<Value>;
changedRef: React.RefObject<boolean>;
transformers: React.RefObject<TransformerFns<Value>>;
schemaValidatorRef: React.RefObject<ValidateFunction | ((value: unknown) => true | z.ZodError<unknown>)>;
asyncProcessRef: React.RefObject<AsyncProcesses | null>;
validatedValueRef: React.RefObject<Value>;
changeEventResultRef: React.RefObject<unknown>;
localErrorInitiatorRef: React.RefObject<ErrorInitiator>;
error: FieldPropsGeneric<Value>['error'];
persistErrorState: (method: PersistErrorStateMethod, initiator: ErrorInitiator, error?: Error | FormError | Array<Error | FormError>) => void;
clearErrorState: () => void;
revealError: () => void;
hideError: () => void;
setFieldState: (state: SubmitStateWithValidating) => void;
ensureErrorMessageObject: <T>(error: T) => T;
asyncBehaviorIsEnabled: boolean;
defineAsyncProcess: (name: AsyncProcesses) => void;
forceUpdate: () => void;
revealErrorRef: React.RefObject<boolean | null>;
};
export default function useFieldValidation<Value>({ finalSchema, hasZodSchema, onChangeValidatorProp, onBlurValidator, validateInitially, validateUnchanged, validateContinuously, identifier, disabled, emptyValue, required, hasDataContext, getAjvInstanceDataContext, setFieldEventListener, getValueByPath, getSourceValue, exportValidators, props, dataContext, combinedErrorMessages, makeIteratePath, errorPrioritization, sectionPath, hasSectionSchema, dataContextSchema, valueRef, changedRef, transformers, schemaValidatorRef, asyncProcessRef, validatedValueRef, changeEventResultRef, localErrorInitiatorRef, error, persistErrorState, clearErrorState, revealError, hideError, setFieldState, ensureErrorMessageObject, asyncBehaviorIsEnabled, defineAsyncProcess, forceUpdate, revealErrorRef, }: UseFieldValidationParams<Value>): {
validateValue: () => Promise<any>;
startOnChangeValidatorValidation: () => Promise<{
result: string | void | Error | (Error | FormError)[] | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Validator<Value, import("../types").DefaultErrorMessages>[];
}>;
startOnBlurValidatorProcess: ({ overrideValue, }?: {
overrideValue?: Value;
}) => Promise<{
result: string | void | Error | (Error | FormError)[] | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Validator<Value, import("../types").DefaultErrorMessages>[];
}>;
runOnChangeValidator: () => Promise<any>;
runOnBlurValidator: () => Promise<any>;
callOnBlurValidator: ({ overrideValue, }?: {
overrideValue?: Value;
}) => Promise<{
result?: undefined;
} | {
result: string | void | Error | (Error | FormError)[] | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Validator<Value, import("../types").DefaultErrorMessages>[];
}>;
handleConnectWithPath: (path: Identifier) => {
getValue: () => unknown;
};
onChangeValidator: Validator<Value>;
onChangeValidatorRef: import("react").RefObject<Validator<Value>>;
onBlurValidatorRef: import("react").RefObject<Validator<Value>>;
additionalArgs: ReceiveAdditionalEventArgs<Value>;
};