/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { ReactiveControllerHost } from 'lit'; import { BaseComponentController, BaseHost } from './base.controller.js'; /** * Shared validation rule interface (matches src/shared/validation.types.ts) */ export interface SharedValidationRule { /** Validation function that returns true if valid */ validator: (value: any) => boolean | Promise; /** Error/warning message to display if validation fails */ message: string; /** Validation level */ level?: 'error' | 'warning'; /** Whether this rule should block form submission */ blocking?: boolean; } /** * Abstract base validation controller that provides shared validation * state management, form integration, and event dispatching. * * Used by input, textarea, select, and radio-group validation controllers * to avoid duplicating common validation patterns. * * @typeParam THost - The component host type */ export declare abstract class BaseValidationController extends BaseComponentController { protected _isValid: boolean; protected _validationMessage: string; protected _validationState: string; protected _rules: SharedValidationRule[]; /** * Whether the current value is valid */ get isValid(): boolean; /** * Current validation message */ get validationMessage(): string; /** * Current validation state (e.g., 'pristine', 'valid', 'invalid', 'warning', 'pending') */ get validationState(): string; /** * Add a validation rule */ addRule(rule: SharedValidationRule): void; /** * Remove validation rules matching the predicate */ removeRule(predicate: (rule: SharedValidationRule) => boolean): void; /** * Clear all validation rules */ clearRules(): void; /** * Clear validation state back to pristine */ clearValidation(): void; /** * HTML5 constraint validation API - check validity */ checkValidity(): boolean; /** * HTML5 constraint validation API - report validity */ reportValidity(): boolean; /** * Dispatch a standardized 'nr-validation' event from the host */ protected dispatchValidationEvent(): void; /** * Component-specific validation logic. * Subclasses must implement this with their own validation. */ abstract validate(): Promise | boolean; } //# sourceMappingURL=base-validation.controller.d.ts.map