UNPKG

react-forminate

Version:

React.js + Typescript package that creates dynamic UI forms based on the JSON schema

42 lines (41 loc) 2.34 kB
import { ValidationPatternType, MessageType, MinType, MaxType, MinLengthType, MaxLengthType, ValidationCustomRuleType } from './primitiveTypes'; export type DateTimePatternType = `${number}-${number}-${number}` | `${number}-${number}-${number}T${number}:${number}:${number}Z` | `${number}-${number}-${number}T${number}:${number}` | `${number}-${number}-${number}T${number}:${number}:${number}` | `${number}-${number}-${number}T${number}:${number}:${number}.${number}Z` | `${number}/${number}/${number}` | `${number}.${number}.${number}` | `${string} ${number}, ${number}` | `${number} ${string} ${number}` | `${number}${number}${number}` | `${number}-${number}` | `${number}:${number}` | `${number}:${number}:${number}` | `${number}/${number}/${number} ${number}:${number}` | `${number}-${number}-${number} ${number}:${number}` | `${number}-${number}-${number} ${number}:${number}:${number}` | `${number}.${number}.${number} ${number}:${number}` | `${string} ${number}, ${number} ${number}:${number}`; export interface ValidationStrategy { validate(value: any, rule: ValidationRule, context?: any): ValidationResponseType | Promise<ValidationResponseType>; } export interface ValidationRule { pattern?: ValidationPatternType; message?: MessageType; min?: MinType; max?: MaxType; minLength?: MinLengthType; maxLength?: MaxLengthType; custom?: ValidationCustomRuleType; type?: "password" | "required" | "email" | "equalTo" | "url" | (string & {}); minDate?: DateTimePatternType; maxDate?: DateTimePatternType; minItems?: number; maxItems?: number; requireUpperCase?: boolean; requireLowerCase?: boolean; requireNumber?: boolean; requireSpecialChar?: boolean; specialCharsPattern?: string | RegExp; caseSensitive?: boolean; equalTo?: string | ((context: any) => string); requireAbsolute?: boolean; requireHttps?: boolean; allowRelative?: boolean; validateAs?: "ip" | "ipPort"; } export interface ValidationResponseType { isValid: boolean; message?: string; } export type SetErrorsFn = (update: (prev: Record<string, string>) => Record<string, string>) => void; export type ValidationContext = { values: Record<string, any>; touchedFields?: Record<string, boolean>; forceValidate: boolean; validateFieldsOnBlur?: boolean; };