UNPKG

neumorphic-peripheral

Version:

A lightweight, framework-agnostic JavaScript/TypeScript library for beautiful neumorphic styling

147 lines 4.41 kB
/** * Joi Validation Adapter for Neumorphic Peripheral * * This adapter allows you to use Joi schemas for validation * Install: npm install joi * * Usage: * import Joi from 'joi' * import { joiAdapter } from 'neumorphic-peripheral/adapters/joi' * * const schema = Joi.string().email().min(5) * np.input(element, { validate: joiAdapter(schema) }) */ import { ValidationFunction, ValidationResult } from '../types'; type JoiSchema = any; /** * Creates a validation function from a Joi schema */ export declare function joiAdapter(schema: JoiSchema): ValidationFunction; /** * Creates a comprehensive validation function that returns all errors */ export declare function joiAdapterDetailed(schema: JoiSchema): (value: string) => ValidationResult; /** * Async validation adapter for Joi schemas */ export declare function joiAdapterAsync(schema: JoiSchema): (value: string) => Promise<ValidationResult>; /** * Schema builder utilities for common patterns */ export declare const joiSchemas: { email: () => Promise<any>; password: (minLength?: number) => Promise<any>; phone: () => Promise<any>; url: () => Promise<any>; required: (message?: string) => Promise<any>; number: (min?: number, max?: number) => Promise<any>; /** * Date validation schemas */ date: () => Promise<{ birthDate: any; futureDate: any; pastDate: any; ageRange: (minAge: number, maxAge: number) => any; }>; }; /** * Form-level validation using Joi */ export declare class JoiFormValidator { private schema; private fields; constructor(schema: JoiSchema); /** * Register a field with its schema key */ registerField(element: HTMLElement, key: string): void; /** * Validate a specific field */ validateField(element: HTMLElement): ValidationResult; /** * Async field validation */ validateFieldAsync(element: HTMLElement): Promise<ValidationResult>; /** * Validate entire form */ validateForm(): { isValid: boolean; errors: Record<string, string[]>; data?: any; }; /** * Async form validation */ validateFormAsync(): Promise<{ isValid: boolean; errors: Record<string, string[]>; data?: any; }>; private getElementValue; } /** * Helper function to create form validator */ export declare function createJoiFormValidator(schema: JoiSchema): JoiFormValidator; /** * Integration with neumorphic components */ export declare const joiIntegration: { /** * Setup form validation with Joi schema */ setupForm(formElement: HTMLFormElement, schema: JoiSchema, components: Record<string, any>): JoiFormValidator; /** * Setup async form validation */ setupAsyncForm(formElement: HTMLFormElement, schema: JoiSchema, components: Record<string, any>): JoiFormValidator; /** * Setup conditional validation based on other fields */ setupConditionalValidation(component: any, schemaBuilder: (formData: Record<string, any>) => JoiSchema, getFormData: () => Record<string, any>): void; }; /** * Advanced Joi utilities for neumorphic components */ export declare const joiUtils: { /** * Create a cross-field validation schema */ createCrossFieldValidation: (dependencies: string[]) => Promise<any>; /** * Create async validation (e.g., for username availability) */ createAsyncValidation: (checkFunction: (value: string) => Promise<boolean>, errorMessage?: string) => Promise<any>; /** * Create conditional validation based on other fields */ createConditionalValidation: (condition: (formData: any) => boolean, trueSchema: any, falseSchema?: any) => Promise<any>; /** * Create date validation with relative constraints */ createDateValidation: () => Promise<{ birthDate: any; futureDate: any; pastDate: any; ageRange: (minAge: number, maxAge: number) => any; }>; /** * Create file validation schemas */ createFileValidation: () => Promise<{ imageFile: any; documentFile: any; }>; }; export declare const examples: { basicField: string; asyncValidation: string; complexForm: string; dateValidation: string; fileValidation: string; }; export {}; //# sourceMappingURL=joi.d.ts.map