/** * Событие валидации поля формы. */ export type TValidationEvent = CustomEvent; /** * Детали события валидации поля. */ export type TValidationEventDetail = { updateValidationUI: () => void | Promise; container: HTMLElement | null; reason: TValidationReason; isValid: boolean; msgCodes: TValidationMsgCodes; msgBlock: HTMLElement | null; validationType: string; input: TValidationInput; msg: Promise; }; /** * Допустимые типы полей для валидации. */ export type TValidationInput = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement; /** * Коды сообщений по причинам валидации. */ export type TValidationMsgCodes = Record; /** * Причина результата валидации. */ export type TValidationReason = "valid" | "invalid" | "empty"; /** * Результат проверки поля в детализированном виде. */ export type TValidationResult = { isValid: boolean; reason: TValidationReason; }; /** * Описание правила валидации. */ export type TValidationRule = { fn: (input: TValidationInput) => boolean; errorKeys: TValidationMsgCodes; }; type TValidationOptions = { rules?: Record; patterns?: Record; ns?: string; }; type TValidateCfg = { inputs?: TValidationInput[]; isIncludeDisabled?: boolean; isBubble?: boolean; isSilent?: boolean; isScroll?: boolean; ns?: string; }; type TValidateInputCfg = { isBubble?: boolean; isSilent?: boolean; isDetailResult?: boolean; getCustomValidityFn?: (input: TValidationInput) => TValidationResult; ns?: string; container?: HTMLElement | null; }; /** * Singleton. Плагин для валидации форм. Автоматически валидирует форму с атрибутом `data-js-form` и триггерит всплывающее событие. Работает как для `React` (триггер события), так и для статичной верстки (ручные манипуляции с DOM). Все исходные слушатели вешаются на документ. * @module FormValidation * @param options{Object=} параметры плагина * @param options.rules{Object=} объект дополнительных правил валидации * @param options.patterns{Object=} объект дополнительных паттернов валидации * @param options.ns{String=} неймспейс локалей * @example * //
* // * // * //
*/ export declare class FormValidation { #private; /** * Причины результата валидации */ static reasons: Record; /** * Паттерны валидации */ static patterns: { email: RegExp; phone: RegExp; }; /** * Карта валидаторов (для расширения исп. appendValidationRules) * @type {MapConstructor} */ static rules: Map; /** * Добавляет новые правила валидации * @param rules{Object} */ static appendValidationRules(rules?: Record): void; /** * Добавляет новый паттерн для масок * @param patterns{Object=} паттерны */ static appendPatterns(patterns: Record): void; constructor(options?: TValidationOptions); /** * Прокручивает к блоку указанного поля * @param input{HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement} */ static scrollToField(input: TValidationInput): void; /** * Проверят, валидна ли форма * @param form{HTMLFormElement|Element|HTMLElement|Node} форма либо иной HTML-элемент * @param params{Object=} дополнительные настройки * @param params.inputs{NodeList|Array|HTMLCollection=} собственный список полей для валидации * @param params.isIncludeDisabled{Boolean=} включение в валидацию полей с атрибутами disabled и readonly * @param params.isBubble{Boolean=} всплытие события о валидации * @param params.isSilent{Boolean=} включение "тихой" валидации без визуальных изменений * @param params.ns{String=} namespace для локали * @returns {boolean} возвращает результат валидации */ static isValidForm(form: HTMLFormElement, params?: TValidateCfg): boolean; /** * Получает список полей для валидации внутри формы * @param form{HTMLFormElement|HTMLElement|Node} форма * @param isIncludeDisabled{Boolean=} включать в проверку поля с disabled и readonly * @param selector{String=} селектор выбора полей * @returns {Array} возвращает массив полей */ static getInputsToValidate(form: HTMLFormElement | HTMLElement, isIncludeDisabled?: boolean, selector?: string): TValidationInput[]; /** * Получает статус поля как обязательного * @param input{HTMLInputElement|HTMLTextAreaElement} поле * @returns {boolean} */ static isInputRequired(input: TValidationInput): boolean; /** * Возвращает результат проверки поля без изменений в интерфейсе * @param input{HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} поле ввода * @param customType{String=} желаемый тип валидации * @param isDetailResult{Boolean=} детальный отчет о валидации * @returns {{reason: (string), isValid: *}|*} */ static isFieldValid(input: TValidationInput, customType?: string, isDetailResult?: boolean): boolean | { isValid: boolean; reason: TValidationReason; }; /** * Валидация Google Captcha * @param textarea{HTMLTextAreaElement} скрытое textarea-поле GreCaptcha * @returns {boolean} */ static isValidGreCaptcha(textarea: HTMLTextAreaElement): boolean; /** * Валидация email * @param input{HTMLInputElement} поле * @returns {boolean} */ static isValidEmail(input: HTMLInputElement): boolean; /** * Валидация номера телефона * @param input{HTMLInputElement} поле * @returns {boolean} */ static isValidPhone(input: HTMLInputElement): boolean; /** * Валидация radio input * @param input{HTMLInputElement} поле типа "radio" * @returns {boolean} */ static isValidRadio(input: HTMLInputElement): boolean; /** * Проверяет, валидный ли файл * @param input{HTMLInputElement} поле типа "file" * @returns {boolean} */ static isValidFile(input: HTMLInputElement): boolean; /** * Проверяет, валидный ли дата * @param input{HTMLInputElement} поле типа "text" * @returns {boolean} */ static isValidDate(input: HTMLInputElement): boolean; /** * Проверяет, валиден ли промежуток дат * @param input{HTMLInputElement} поле типа "text" * @returns {boolean} */ static isValidDateRange(input: HTMLInputElement): boolean; /** * Проверяет, валидный ли checkbox * @param input{HTMLInputElement} поле типа "checkbox" * @returns {boolean} */ static isValidCheckbox(input: HTMLInputElement): boolean; /** * Проверяет, заполнено ли текстовое поле * @param input{HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} поле ввода * @returns {boolean} */ static isValidText(input: TValidationInput): boolean; /** * Проверяет, выбрана ли опция в селекте * @param input{HTMLSelectElement} поле селекта * @returns {boolean} */ static isValidSelect(input: HTMLSelectElement): boolean; /** * Очищает блок с сообщениями поля * @param input{HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} поле ввода */ static clearInputMsgBlock(input: TValidationInput): void; /** * Валидация поля ввода * @param input{HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} поле ввода, * @param params{Object=} параметры валидации * @param params.isBubble{Boolean=} всплытие в результате валидации * @param params.isSilent{Boolean=} "тихая" валидация без изменений в интерфейсе * @param params.isDetailResult{Boolean=} вывод детального результата о валидации * @param params.ns{String=} неймспейс для локали * @param params.getCustomValidityFn{Function=} собственная логика валидации * @returns {{reason: (string), isValid: *}|*} */ static isInputValid(input: TValidationInput, params?: TValidateInputCfg): boolean | { isValid: boolean; reason: TValidationReason; }; /** * Управление состоянием ошибки или корректности поля ввода * @param input{HTMLInputElement|HTMLSelectElement|HTMLTextAreaElement} поле * @param isValid{Boolean=} валидность поля * @param msgCodes{Object=} объект с сообщениями об ошибке или успехе * @param reason{String=} причина успешной или неуспешной валидации * @param container{HTMLElement|null=} контейнер, для которого меняются классы * @returns {boolean} */ static setInputValidState(input: TValidationInput, isValid?: boolean, msgCodes?: TValidationMsgCodes, reason?: TValidationReason, container?: HTMLElement | null): void; } export {};