@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
54 lines (53 loc) • 2.05 kB
TypeScript
import { ReactNode } from 'react';
import { AnyObject } from '../common-types/any-object';
import messages from '../validators/messages';
export type DataTypeValidators = 'string' | 'integer' | 'boolean' | 'number' | 'float';
export type ValidatorFunction<TValue = any, TFormValues extends Record<string, any> = Record<string, any>, TMeta extends Record<string, any> = Record<string, any>> = (value: TValue, allValues?: TFormValues, meta?: TMeta) => Promise<any> | ReactNode | {
type: 'warning';
error: any;
} | undefined;
export interface ValidatorConfiguration<TValue = any> extends AnyObject {
type: string;
message?: string | ((value: TValue) => string);
msg?: string | ((value: TValue) => string);
warning?: boolean;
}
export type Validator<TValue = any, TFormValues extends Record<string, any> = Record<string, any>, TMeta extends Record<string, any> = Record<string, any>> = ValidatorConfiguration<TValue> | ValidatorFunction<TValue, TFormValues, TMeta>;
export interface LengthOptions<TValue extends {
length: number;
} = string> extends ValidatorConfiguration<TValue> {
'='?: string | number;
is?: number;
max?: number;
maximum?: number;
min?: number;
minimum?: number;
}
export interface LenghtOptions extends LengthOptions {
}
export interface PatternOptions<TValue = string> extends ValidatorConfiguration<TValue> {
pattern?: string | RegExp;
flags?: string;
}
export interface NumericalityOptions<TValue = number> extends ValidatorConfiguration<TValue> {
even?: boolean;
odd?: boolean;
equalTo?: number;
otherThan?: number;
greaterThan?: number;
lessThan?: number;
greaterThanOrEqualTo?: number;
lessThanOrEqualTo?: number;
'='?: string | number;
'!='?: string | number;
'>'?: string | number;
'<'?: string | number;
'>='?: string | number;
'<='?: string | number;
}
interface ValidatorsType {
messages: typeof messages;
urlProtocols: string[];
}
declare const Validators: ValidatorsType;
export default Validators;