UNPKG

use-state-validate

Version:
45 lines (44 loc) 2.23 kB
import type { DependencyList, ReactNode } from "react"; declare type IFieldObjectCustomConfig<T, P> = Pick<P, Exclude<keyof P, keyof IFieldValidationConfigBase<T>>>; interface IFieldValidationStateBase<T> { changed: boolean; cue: boolean; cueInvalid: boolean; errors: ReactNode[]; label?: string; required: boolean; valid: boolean; value: T; } interface IFieldObjectBase<T> extends IFieldValidationStateBase<T> { restore: () => void; setCue: (cue: boolean) => void; setValue: (newValue: T) => void; } export declare type IFieldObject<T, P = {}> = IFieldObjectCustomConfig<T, P> & IFieldObjectBase<T>; export declare type RuleCallback<T> = (value: T) => boolean; interface IFieldValidationConfigBase<T> { cueDelay?: number; deps?: DependencyList; label?: string; required?: boolean | ReactNode; rules?: [RuleCallback<T>, ReactNode?][]; } export declare type IFieldValidationConfig<T, P = {}> = P & IFieldValidationConfigBase<T>; export declare const useStateValidate: <T, P extends IFieldValidationConfigBase<T>>(initial: T, config: P) => IFieldObject<T, P>; export declare const fieldBagChanged: <T, P = {}>(fieldBag: object) => boolean; export declare const fieldBagValid: <T, P = {}>(fieldBag: object) => boolean; export declare const fieldBagReduceToValues: <T, F extends object>(fieldBag: F) => { [key in keyof F]: string; }; export declare const fieldBagTraverse: <T, P = {}>(fieldBag: object, cb: (field: IFieldObject<T, P>) => void) => void; export declare const ruleEmail: () => (value: string) => boolean; export declare const ruleEnum: (list: string[]) => (value: string) => boolean; export declare const ruleLength: ({ min, max }: { min?: number | undefined; max?: number | undefined; }) => (value: string) => boolean; export declare const ruleMatch: (pattern: RegExp) => (value: string) => boolean; export declare const ruleNumeric: () => (value: string) => boolean; export declare const rulePhone: () => (value: string) => boolean; export declare const ruleZip: () => (value: string) => boolean; export declare const defineConfig: <T, P = {}>(rule: IFieldValidationConfig<T, P>) => IFieldValidationConfig<T, P>; export default useStateValidate;