/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { BaseInputController, InputHost } from './base.controller.js'; import { InputValidationResult } from '../input.types.js'; /** * Validation states for tracking validation lifecycle */ export declare enum ValidationState { Pristine = "pristine", Pending = "pending", Valid = "valid", Invalid = "invalid", Warning = "warning" } /** * Enhanced input host interface for state management */ export interface ValidationStateHost extends InputHost { validationTrigger: 'change' | 'blur' | 'submit'; validateOnChangeInput: boolean; validateOnBlurInput: boolean; validationDebounce?: number; allowWarnings: boolean; } /** * State controller interface for validation state management */ export interface StateController { validationState: ValidationState; isValidating: boolean; isValid: boolean; validationMessage: string; validationResult: InputValidationResult; setValidationState(state: ValidationState): void; setValidationResult(result: InputValidationResult): void; setValidating(validating: boolean): void; shouldValidateOnChange(): boolean; shouldValidateOnBlur(): boolean; clearDebounceTimer(): void; debounceValidation(callback: () => void): void; } /** * Validation state controller manages all state-related aspects of validation * including timing, debouncing, and state transitions. */ export declare class ValidationStateController extends BaseInputController implements StateController { private _validationState; private _isValidating; private _isValid; private _validationMessage; private _validationResult; private _debounceTimer; protected get stateHost(): ValidationStateHost; /** * Get current validation state */ get validationState(): ValidationState; /** * Check if currently validating */ get isValidating(): boolean; /** * Get validation validity status */ get isValid(): boolean; /** * Get validation message */ get validationMessage(): string; /** * Get validation result */ get validationResult(): InputValidationResult; /** * Set validation state and update component */ setValidationState(state: ValidationState): void; /** * Set validation result and update related state */ setValidationResult(result: InputValidationResult): void; /** * Set validating status */ setValidating(validating: boolean): void; /** * Check if validation should occur on change events */ shouldValidateOnChange(): boolean; /** * Check if validation should occur on blur events */ shouldValidateOnBlur(): boolean; /** * Clear any existing debounce timer */ clearDebounceTimer(): void; /** * Debounce validation execution */ debounceValidation(callback: () => void): void; /** * Reset validation state to pristine */ resetValidationState(): void; /** * Mark as touched (no longer pristine) */ markAsTouched(): void; /** * Check if validation state is pristine */ isPristine(): boolean; /** * Check if validation state has error */ hasError(): boolean; /** * Check if validation state has warning */ hasWarning(): boolean; /** * Check if validation is pending */ isPending(): boolean; /** * Get state summary for external use */ getStateSummary(): { state: ValidationState; isValidating: boolean; isValid: boolean; message: string; result: InputValidationResult; isPristine: boolean; hasError: boolean; hasWarning: boolean; shouldValidateOnChange: boolean; shouldValidateOnBlur: boolean; }; /** * Handle component lifecycle - cleanup timers */ hostDisconnected(): void; /** * Dispatch state change events */ private dispatchStateChangeEvent; } //# sourceMappingURL=state.controller.d.ts.map