UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

43 lines (42 loc) 2.62 kB
import type { EventReturnWithStateObjectAndSuccess, EventStateObjectWithSuccess, Identifier, FieldStatus } from '../types'; import type { FormError } from '../utils'; import type { SubmitStateWithValidating, PersistErrorStateMethod, ErrorInitiator } from './useFieldError'; export type AsyncProcesses = 'onChangeValidator' | 'onBlurValidator' | 'onChangeLocal' | 'onChangeContext'; export type UseFieldAsyncParams<Value> = { onChange: (...args: unknown[]) => unknown; onChangeContext: (...args: unknown[]) => unknown; valueRef: React.RefObject<Value>; forceUpdate: () => void; persistErrorState: (method: PersistErrorStateMethod, initiator: ErrorInitiator, error?: Error | FormError | Array<Error | FormError>) => void; revealError: () => void; setFieldState: (state: SubmitStateWithValidating) => void; hasError: () => boolean; warningRef: React.RefObject<FieldStatus['warning']>; infoRef: React.RefObject<FieldStatus['info']>; fieldStateRef: React.RefObject<SubmitStateWithValidating>; removeErrorRef: React.RefObject<() => void>; hasPath: boolean; identifier: Identifier; executeOnChangeRegardlessOfError: boolean; handlePathChangeDataContext: (identifier: Identifier) => EventReturnWithStateObjectAndSuccess | Promise<EventReturnWithStateObjectAndSuccess>; }; export default function useFieldAsync<Value>({ onChange, onChangeContext, valueRef, forceUpdate, persistErrorState, revealError, setFieldState, hasError, warningRef, infoRef, fieldStateRef, removeErrorRef, hasPath, identifier, executeOnChangeRegardlessOfError, handlePathChangeDataContext, }: UseFieldAsyncParams<Value>): { asyncBehaviorIsEnabled: boolean; defineAsyncProcess: (name: AsyncProcesses) => void; addToPool: (name: "onChangeValidator" | "onBlurValidator" | "onChangeLocal" | "onChangeContext", fn: any, runAsync: any) => void; runPool: (cb?: any) => Promise<void>; yieldAsyncProcess: ({ name, waitFor, }: { name: "onChangeLocal" | "onChangeContext" | "onSubmitContext"; waitFor: Array<{ processName?: AsyncProcesses; withStates: Array<SubmitStateWithValidating>; hasValue?: Value; }>; }) => Promise<void>; handleChangeEventResult: () => Promise<void>; setEventResult: (result: EventReturnWithStateObjectAndSuccess) => Promise<void>; callOnChangeContext: () => Promise<void>; asyncProcessRef: import("react").RefObject<AsyncProcesses>; validatedValueRef: import("react").RefObject<Value>; changeEventResultRef: import("react").RefObject<EventStateObjectWithSuccess>; };