import type { Dispatch, SetStateAction, RefObject } from "react"; import type { TValidationEvent as TInputValidationEvent, TValidationInput } from "../../plugins/forms/validation/index.d.mts"; type TFormValidationEvent = CustomEvent<{ isValid: boolean; inputs: TValidationInput[]; }>; type TValidationEntity = "form" | "input"; type TValidationEventMap = { form: TFormValidationEvent; input: TInputValidationEvent; }; type TValidState = boolean | null; type TValidationResult = { isValid: TValidState; invalidInputNames: string[]; setIsValid: Dispatch>; }; /** * Добавляет валидацию на элемент формы либо на форму целиком и возвращает её результат * @template TType - тип источника валидации: `"input"` для отдельного поля или `"form"` для всей формы. * @returns {TValidationResult} Возвращает флаги валидации (`isValid`, `invalidInputNames`) и `setIsValid` для ручного сброса состояния. * @example * import { useRef } from "react"; * import { useFormValidation } from "@delement/ui/utils/react"; * import { Form, FormRow, Btn, Input } from "@delement/ui/components"; * * const App = () => { * * const ref = useRef(null); * const { isValid, invalidInputNames } = useFormValidation(ref, null, "form"); // invalidInputNames содержит массив полей с ошибками * * return ( *
* * * * * * * * * *
* ) * } */ export declare const useFormValidation: (ref: RefObject, onValidate?: ((event: TValidationEventMap[TType]) => void) | null, type?: TType) => TValidationResult; export {};