validation now async
This commit is contained in:
@@ -10,12 +10,12 @@ export const FormObject = (controls) => {
|
||||
const keys = item ? [item] : Object.keys(this);
|
||||
let valid = true;
|
||||
|
||||
keys.every((key) => {
|
||||
keys.every(async (key) => {
|
||||
if (
|
||||
typeof this[key] == "object" &&
|
||||
Object.keys(this[key]).includes("validation")
|
||||
) {
|
||||
this[key].validation.result = this[
|
||||
this[key].validation.result = await this[
|
||||
key
|
||||
].validation.validator.validate(this[key].value);
|
||||
|
||||
|
||||
@@ -237,9 +237,9 @@ export function Email(options?: ValidationEmailOptions): ValidationEmailObject {
|
||||
...options,
|
||||
validate: function (value: string): ValidationResult {
|
||||
return {
|
||||
valid: /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(
|
||||
value
|
||||
),
|
||||
valid:
|
||||
value.length == 0 ||
|
||||
/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(value),
|
||||
invalidMessages: [
|
||||
typeof this.invalidMessage === "string"
|
||||
? this.invalidMessage
|
||||
@@ -278,7 +278,9 @@ export function Phone(options?: ValidationPhoneOptions): ValidationPhoneObject {
|
||||
...options,
|
||||
validate: function (value: string): ValidationResult {
|
||||
return {
|
||||
valid: /^(\+|00)?[0-9][0-9 \-().]{7,32}$/.test(value),
|
||||
valid:
|
||||
value.length == 0 ||
|
||||
/^(\+|00)?[0-9][0-9 \-().]{7,32}$/.test(value),
|
||||
invalidMessages: [
|
||||
typeof this.invalidMessage === "string"
|
||||
? this.invalidMessage
|
||||
@@ -319,7 +321,7 @@ export function Number(
|
||||
...options,
|
||||
validate: function (value: string): ValidationResult {
|
||||
return {
|
||||
valid: /^0?\d+$/.test(value),
|
||||
valid: value.length == 0 || /^0?\d+$/.test(value),
|
||||
invalidMessages: [
|
||||
typeof this.invalidMessage === "string"
|
||||
? this.invalidMessage
|
||||
@@ -612,14 +614,14 @@ interface ValidationCustomOptions {
|
||||
}
|
||||
|
||||
interface ValidationCustomObject extends ValidationCustomOptions {
|
||||
validate: (value: string) => ValidationResult;
|
||||
validate: (value: string) => Promise<ValidationResult>;
|
||||
}
|
||||
|
||||
const defaultValidationCustomOptions: ValidationCustomOptions = {
|
||||
callback: () => {
|
||||
return true;
|
||||
},
|
||||
invalidMessage: "Your Custom number is not in a supported format.",
|
||||
invalidMessage: "This field is invalid.",
|
||||
};
|
||||
|
||||
export function Custom(
|
||||
@@ -653,7 +655,7 @@ export function Custom(
|
||||
|
||||
return {
|
||||
...options,
|
||||
validate: function (value: string): ValidationResult {
|
||||
validate: async function (value: string): Promise<ValidationResult> {
|
||||
const validateResult = {
|
||||
valid: true,
|
||||
invalidMessages: [
|
||||
@@ -665,7 +667,7 @@ export function Custom(
|
||||
|
||||
const callbackResult =
|
||||
typeof this.callback === "function"
|
||||
? this.callback(value)
|
||||
? await this.callback(value)
|
||||
: true;
|
||||
|
||||
if (typeof callbackResult === "string") {
|
||||
|
||||
Reference in New Issue
Block a user