@ordojs/forms
Version:
Comprehensive form handling system for OrdoJS
68 lines • 2.65 kB
TypeScript
/**
* Simplified validation system for forms
*/
import type { FieldError, FieldValue, FieldValues, ValidationRule } from './types.js';
/**
* Built-in validation rules
*/
export declare class ValidationRules {
static required(message?: string): ValidationRule;
static minLength(min: number, message?: string): ValidationRule;
static maxLength(max: number, message?: string): ValidationRule;
static min(min: number, message?: string): ValidationRule;
static max(max: number, message?: string): ValidationRule;
static email(message?: string): ValidationRule;
static url(message?: string): ValidationRule;
static pattern(regex: RegExp, message?: string): ValidationRule;
static oneOf(options: FieldValue[], message?: string): ValidationRule;
static custom(validator: (value: FieldValue, formValues?: FieldValues) => boolean | Promise<boolean>, message?: string): ValidationRule;
static equalTo(fieldName: string, message?: string): ValidationRule;
static date(message?: string): ValidationRule;
static file(options?: {
maxSize?: number;
allowedTypes?: string[];
message?: string;
}): ValidationRule;
}
/**
* Simple validation manager
*/
export declare class ValidationManager {
private static instance;
private customValidators;
static getInstance(): ValidationManager;
/**
* Register a custom validator globally
*/
registerValidator(name: string, rule: ValidationRule): void;
/**
* Get a registered validator
*/
getValidator(name: string): ValidationRule | undefined;
/**
* Validate a single field with multiple rules
*/
validateField(value: FieldValue, rules: ValidationRule[], formValues?: FieldValues): Promise<FieldError | null>;
/**
* Combine multiple validation rules
*/
combineRules(...rules: ValidationRule[]): ValidationRule[];
/**
* Create conditional validation rule
*/
when(condition: (formValues: FieldValues) => boolean, thenRule: ValidationRule, elseRule?: ValidationRule): ValidationRule;
}
/**
* Utility functions for validation
*/
export declare const validation: {
rules: typeof ValidationRules;
manager: ValidationManager;
email: () => ValidationRule;
required: () => ValidationRule;
minLength: (min: number) => ValidationRule;
maxLength: (max: number) => ValidationRule;
pattern: (regex: RegExp, message?: string) => ValidationRule;
async: (validator: (value: FieldValue, formValues?: FieldValues) => Promise<boolean>, message: string) => ValidationRule;
};
//# sourceMappingURL=validation-simple.d.ts.map