diff --git a/resources/js/helpers/form.ts b/resources/js/helpers/form.ts index 57d034d..a88d846 100644 --- a/resources/js/helpers/form.ts +++ b/resources/js/helpers/form.ts @@ -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); diff --git a/resources/js/helpers/validate.ts b/resources/js/helpers/validate.ts index d04c62d..6837bc1 100644 --- a/resources/js/helpers/validate.ts +++ b/resources/js/helpers/validate.ts @@ -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; } 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 { 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") {