@axos-web-dev/shared-components 1.0.100-dev.41 → 1.0.100-dev.42-enhancementvalidationcalls.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ATMLocator/ATMLocator.js +2 -3
- package/dist/Auth/ErrorAlert.js +1 -2
- package/dist/Auth/SignInPassword.js +2 -2
- package/dist/BulletItem/BulletItem.js +1 -0
- package/dist/Button/Button.js +1 -2
- package/dist/Calculators/AnnualFeeCalculator/index.js +1 -1
- package/dist/Calculators/BuyDownCalculator/index.js +1 -1
- package/dist/Calculators/Calculator.js +2 -3
- package/dist/Calculators/MarineLoanMonthlyPaymentCalculator/index.js +1 -1
- package/dist/Calculators/MaxLoanCalculator/index.js +1 -1
- package/dist/Calculators/MonthlyPaymentCalculator/index.js +1 -1
- package/dist/Carousel/index.js +1 -2
- package/dist/Chatbot/Bubble.css.js +0 -1
- package/dist/Chatbot/ChatWindow.css.js +1 -0
- package/dist/Chatbot/Chatbot.d.ts +1 -1
- package/dist/Chatbot/Chatbot.js +6 -5
- package/dist/Chevron/index.js +1 -2
- package/dist/Comparison/Comparison.js +1 -2
- package/dist/ExecutiveBio/ExecutiveBio.js +1 -2
- package/dist/FaqAccordion/index.js +1 -2
- package/dist/FooterSiteMap/AxosBank/FooterSiteMap.js +1 -2
- package/dist/Forms/ApplicationStart.js +4 -2
- package/dist/Forms/ApplyNow.js +2 -3
- package/dist/Forms/ClearingForm.js +4 -2
- package/dist/Forms/CommercialDeposits.js +4 -2
- package/dist/Forms/CommercialDepositsNoLendingOption.js +4 -2
- package/dist/Forms/CommercialLending.js +4 -2
- package/dist/Forms/CommercialPremiumFinance.js +4 -2
- package/dist/Forms/ContactCompany.js +4 -2
- package/dist/Forms/ContactCompanyTitle.js +4 -2
- package/dist/Forms/ContactUs.js +4 -2
- package/dist/Forms/ContactUsAAS.js +4 -2
- package/dist/Forms/ContactUsBusiness.js +5 -4
- package/dist/Forms/ContactUsBusinessNameEmail.js +5 -4
- package/dist/Forms/ContactUsLVF.js +4 -2
- package/dist/Forms/ContactUsNMLSId.js +5 -4
- package/dist/Forms/CpraRequest.d.ts +1 -1
- package/dist/Forms/CpraRequest.js +5 -2
- package/dist/Forms/CraPublicFile.js +5 -4
- package/dist/Forms/DealerServices.js +4 -2
- package/dist/Forms/EmailOnly.js +5 -4
- package/dist/Forms/EmailUs.js +4 -2
- package/dist/Forms/HoneyPot/index.js +2 -1
- package/dist/Forms/MortgageRate/MortgageRateForm.js +5 -4
- package/dist/Forms/MortgageRate/MortgageRateWatch.js +1 -2
- package/dist/Forms/MortgageWarehouseLending.js +5 -4
- package/dist/Forms/QuickPricer/QuickPricerForm.js +16 -12
- package/dist/Forms/ScheduleCall.js +4 -2
- package/dist/Forms/ScheduleCallPremier.js +4 -2
- package/dist/Forms/SuccesForm.js +2 -3
- package/dist/Forms/VendorQuestionnaire.js +6 -2
- package/dist/Forms/index.js +1 -0
- package/dist/Hyperlink/index.js +1 -2
- package/dist/ImageLink/ImageLink.js +2 -3
- package/dist/ImageLink/ImageLinkSet.js +1 -2
- package/dist/ImageLink/index.js +1 -2
- package/dist/Insight/Featured/CategorySelector.js +1 -2
- package/dist/Insight/Featured/Featured.js +1 -2
- package/dist/Insight/Featured/Header.js +1 -2
- package/dist/LoadingIndicator/index.js +1 -0
- package/dist/Modal/Modal.js +1 -2
- package/dist/Modal/contextApi/store.js +1 -1
- package/dist/NavigationMenu/AxosALTS/NavData.js +1 -2
- package/dist/NavigationMenu/AxosALTS/index.js +1 -2
- package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.js +1 -2
- package/dist/NavigationMenu/AxosBank/NavData.js +1 -2
- package/dist/NavigationMenu/AxosBank/SubNavBar.js +1 -2
- package/dist/NavigationMenu/AxosBank/index.js +1 -2
- package/dist/NavigationMenu/LaVictoire/NavData.js +1 -2
- package/dist/NavigationMenu/LaVictoire/index.js +1 -2
- package/dist/NavigationMenu/NavDataJson.js +1 -2
- package/dist/NavigationMenu/Navbar.js +1 -2
- package/dist/NavigationMenu/SignInNavButton.js +1 -2
- package/dist/SetContainer/SetContainer.js +2 -3
- package/dist/SocialMediaBar/iconsRepository.js +1 -2
- package/dist/Tab/Tab.js +1 -0
- package/dist/Table/Table.d.ts +1 -1
- package/dist/VideoTile/VideoTile.js +1 -2
- package/dist/VideoWrapper/index.js +1 -2
- package/dist/main.js +8 -1
- package/dist/utils/emailValidation.d.ts +1 -0
- package/dist/utils/emailValidation.js +31 -0
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.js +9 -1
- package/dist/utils/nmlsValidation.d.ts +1 -0
- package/dist/utils/nmlsValidation.js +34 -0
- package/dist/utils/useCachedValidators.d.ts +2 -0
- package/dist/utils/useCachedValidators.js +22 -0
- package/package.json +136 -136
package/dist/Forms/ContactUs.js
CHANGED
|
@@ -26,11 +26,12 @@ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/Downl
|
|
|
26
26
|
/* empty css */
|
|
27
27
|
/* empty css */
|
|
28
28
|
import "../utils/allowedAxosDomains.js";
|
|
29
|
+
import * as z from "zod";
|
|
29
30
|
import { associatedEmail } from "../utils/EverestValidity.js";
|
|
30
31
|
import { getVariant } from "../utils/getVariant.js";
|
|
32
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
31
33
|
import clsx from "clsx";
|
|
32
34
|
import { useForm, FormProvider } from "react-hook-form";
|
|
33
|
-
import * as z from "zod";
|
|
34
35
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
35
36
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
36
37
|
import { SalesforceSchema } from "./SalesforceFieldsForm.js";
|
|
@@ -49,10 +50,11 @@ const ContactUs = ({
|
|
|
49
50
|
onValidate,
|
|
50
51
|
id
|
|
51
52
|
}) => {
|
|
53
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
52
54
|
const schema = z.object({
|
|
53
55
|
first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
|
|
54
56
|
last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
|
|
55
|
-
email: z.string().email({ message: "Email is required." }).refine(
|
|
57
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
56
58
|
phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
57
59
|
const removeDashes = val.replace(/-/gi, "");
|
|
58
60
|
if (removeDashes.length !== 10) {
|
|
@@ -27,10 +27,11 @@ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/Downl
|
|
|
27
27
|
/* empty css */
|
|
28
28
|
/* empty css */
|
|
29
29
|
import "../utils/allowedAxosDomains.js";
|
|
30
|
+
import { z } from "zod";
|
|
30
31
|
import { getVariant } from "../utils/getVariant.js";
|
|
32
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
31
33
|
import clsx from "clsx";
|
|
32
34
|
import { useForm, FormProvider } from "react-hook-form";
|
|
33
|
-
import { z } from "zod";
|
|
34
35
|
import { Roles } from "./FormEnums.js";
|
|
35
36
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
36
37
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
@@ -50,6 +51,7 @@ const ContactUsAAS = ({
|
|
|
50
51
|
onValidate,
|
|
51
52
|
id
|
|
52
53
|
}) => {
|
|
54
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
53
55
|
const schema = z.object({
|
|
54
56
|
first_name: z.string({ message: "First name is required." }).regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g, {
|
|
55
57
|
message: "Invalid first name"
|
|
@@ -57,7 +59,7 @@ const ContactUsAAS = ({
|
|
|
57
59
|
last_name: z.string({ message: "Last name is required." }).regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g, {
|
|
58
60
|
message: "Invalid last name"
|
|
59
61
|
}).trim().min(1, { message: "Last Name is required." }),
|
|
60
|
-
email: z.string({ message: "Email is required." }).email({ message: "Email is required." }).refine(
|
|
62
|
+
email: z.string({ message: "Email is required." }).email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
61
63
|
phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
62
64
|
const removeDashes = val.replace(/-/gi, "");
|
|
63
65
|
if (removeDashes.length !== 10) {
|
|
@@ -35,6 +35,8 @@ import "react-use";
|
|
|
35
35
|
import "../ArticlesSet/ArticlesSet.css.js";
|
|
36
36
|
import "../IconBillboard/IconBillboard.css.js";
|
|
37
37
|
import "../utils/allowedAxosDomains.js";
|
|
38
|
+
import { z } from "zod";
|
|
39
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
38
40
|
import "../Calculators/calculator.css.js";
|
|
39
41
|
import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
|
|
40
42
|
import "../Calculators/ApyCalculator/ApyCalculator.css.js";
|
|
@@ -43,7 +45,6 @@ import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
|
|
|
43
45
|
import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
|
|
44
46
|
import "../Input/PercentageInput.js";
|
|
45
47
|
import { useForm, FormProvider } from "react-hook-form";
|
|
46
|
-
import { z } from "zod";
|
|
47
48
|
import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
48
49
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
49
50
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
@@ -74,13 +75,12 @@ import "../Auth/SignInPassword.js";
|
|
|
74
75
|
/* empty css */
|
|
75
76
|
/* empty css */
|
|
76
77
|
import "../Carousel/index.js";
|
|
77
|
-
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
78
78
|
/* empty css */
|
|
79
79
|
import "../Chatbot/store/chat.js";
|
|
80
80
|
import "../Chatbot/authenticate.js";
|
|
81
|
+
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
81
82
|
/* empty css */
|
|
82
83
|
import "../Chatbot/store/messages.js";
|
|
83
|
-
import "@ujet/websdk-headless";
|
|
84
84
|
/* empty css */
|
|
85
85
|
import "../Comparison/Comparison.css.js";
|
|
86
86
|
import "next/image.js";
|
|
@@ -149,10 +149,11 @@ const ContactUsBusiness = ({
|
|
|
149
149
|
onValidate,
|
|
150
150
|
id
|
|
151
151
|
}) => {
|
|
152
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
152
153
|
const schema = z.object({
|
|
153
154
|
first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
|
|
154
155
|
last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
|
|
155
|
-
email: z.string().email({ message: "Email is required." }).refine(
|
|
156
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
156
157
|
phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
157
158
|
const removeDashes = val.replace(/-/gi, "");
|
|
158
159
|
if (removeDashes.length !== 10) {
|
|
@@ -35,6 +35,8 @@ import "react-use";
|
|
|
35
35
|
import "../ArticlesSet/ArticlesSet.css.js";
|
|
36
36
|
import "../IconBillboard/IconBillboard.css.js";
|
|
37
37
|
import "../utils/allowedAxosDomains.js";
|
|
38
|
+
import { z } from "zod";
|
|
39
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
38
40
|
import "../Calculators/calculator.css.js";
|
|
39
41
|
import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
|
|
40
42
|
import "../Calculators/ApyCalculator/ApyCalculator.css.js";
|
|
@@ -43,7 +45,6 @@ import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
|
|
|
43
45
|
import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
|
|
44
46
|
import "../Input/PercentageInput.js";
|
|
45
47
|
import { useForm, FormProvider } from "react-hook-form";
|
|
46
|
-
import { z } from "zod";
|
|
47
48
|
import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
48
49
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
49
50
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
@@ -74,13 +75,12 @@ import "../Auth/SignInPassword.js";
|
|
|
74
75
|
/* empty css */
|
|
75
76
|
/* empty css */
|
|
76
77
|
import "../Carousel/index.js";
|
|
77
|
-
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
78
78
|
/* empty css */
|
|
79
79
|
import "../Chatbot/store/chat.js";
|
|
80
80
|
import "../Chatbot/authenticate.js";
|
|
81
|
+
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
81
82
|
/* empty css */
|
|
82
83
|
import "../Chatbot/store/messages.js";
|
|
83
|
-
import "@ujet/websdk-headless";
|
|
84
84
|
/* empty css */
|
|
85
85
|
import "../Comparison/Comparison.css.js";
|
|
86
86
|
import "next/image.js";
|
|
@@ -149,10 +149,11 @@ const ContactUsBusinessNameAndEmail = ({
|
|
|
149
149
|
onValidate,
|
|
150
150
|
id
|
|
151
151
|
}) => {
|
|
152
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
152
153
|
const schema = z.object({
|
|
153
154
|
first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
|
|
154
155
|
last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
|
|
155
|
-
email: z.string().email({ message: "Email is required." }).refine(
|
|
156
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
156
157
|
Business_Name__c: z.string().min(1)
|
|
157
158
|
});
|
|
158
159
|
const gen_schema = schema.merge(SalesforceSchema).merge(honeyPotSchema).superRefine((data, ctx) => {
|
|
@@ -26,11 +26,12 @@ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/Downl
|
|
|
26
26
|
/* empty css */
|
|
27
27
|
/* empty css */
|
|
28
28
|
import "../utils/allowedAxosDomains.js";
|
|
29
|
+
import * as z from "zod";
|
|
29
30
|
import { associatedEmail } from "../utils/EverestValidity.js";
|
|
30
31
|
import { getVariant } from "../utils/getVariant.js";
|
|
32
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
31
33
|
import clsx from "clsx";
|
|
32
34
|
import { useForm, FormProvider } from "react-hook-form";
|
|
33
|
-
import * as z from "zod";
|
|
34
35
|
import { iconForm, headerContainer, headerForm, form, descriptionField, fullRowForm, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
35
36
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
36
37
|
import { SalesforceSchema } from "./SalesforceFieldsForm.js";
|
|
@@ -51,6 +52,7 @@ const ContactUsLVF = ({
|
|
|
51
52
|
dealerCheckbox = true,
|
|
52
53
|
contextData
|
|
53
54
|
}) => {
|
|
55
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
54
56
|
const schema = z.object({
|
|
55
57
|
firstname: z.string().regex(/^[a-zA-Z]*(?:[a-zA-Z][a-zA-Z'-]*\s{0,1}){2,}$/g, {
|
|
56
58
|
message: "Invalid first name"
|
|
@@ -58,7 +60,7 @@ const ContactUsLVF = ({
|
|
|
58
60
|
lastname: z.string().regex(/^[a-zA-Z]*(?:[a-zA-Z][a-zA-Z'-]*\s{0,1}){2,}$/g, {
|
|
59
61
|
message: "Invalid last name"
|
|
60
62
|
}).trim().min(1, { message: "Please complete this required field." }),
|
|
61
|
-
email: z.string().email({ message: "Please complete this required field." }).refine(
|
|
63
|
+
email: z.string().email({ message: "Please complete this required field." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
62
64
|
phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
63
65
|
const removeDashes = val.replace(/-/gi, "");
|
|
64
66
|
if (removeDashes.length !== 10) {
|
|
@@ -35,6 +35,8 @@ import "react-use";
|
|
|
35
35
|
import "../ArticlesSet/ArticlesSet.css.js";
|
|
36
36
|
import "../IconBillboard/IconBillboard.css.js";
|
|
37
37
|
import "../utils/allowedAxosDomains.js";
|
|
38
|
+
import { z } from "zod";
|
|
39
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
38
40
|
import "../Calculators/calculator.css.js";
|
|
39
41
|
import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
|
|
40
42
|
import "../Calculators/ApyCalculator/ApyCalculator.css.js";
|
|
@@ -43,7 +45,6 @@ import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
|
|
|
43
45
|
import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
|
|
44
46
|
import "../Input/PercentageInput.js";
|
|
45
47
|
import { useForm, FormProvider } from "react-hook-form";
|
|
46
|
-
import { z } from "zod";
|
|
47
48
|
import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
48
49
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
49
50
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
@@ -74,13 +75,12 @@ import "../Auth/SignInPassword.js";
|
|
|
74
75
|
/* empty css */
|
|
75
76
|
/* empty css */
|
|
76
77
|
import "../Carousel/index.js";
|
|
77
|
-
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
78
78
|
/* empty css */
|
|
79
79
|
import "../Chatbot/store/chat.js";
|
|
80
80
|
import "../Chatbot/authenticate.js";
|
|
81
|
+
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
81
82
|
/* empty css */
|
|
82
83
|
import "../Chatbot/store/messages.js";
|
|
83
|
-
import "@ujet/websdk-headless";
|
|
84
84
|
/* empty css */
|
|
85
85
|
import "../Comparison/Comparison.css.js";
|
|
86
86
|
import "next/image.js";
|
|
@@ -149,10 +149,11 @@ const ContactUsNMLSId = ({
|
|
|
149
149
|
onValidate,
|
|
150
150
|
id
|
|
151
151
|
}) => {
|
|
152
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
152
153
|
const schema = z.object({
|
|
153
154
|
first_name: z.string().regex(/^[a-zA-Z]*(?:[a-zA-Z][a-zA-Z'-]*\s{0,1}){2,}$/g).trim().min(1, { message: "First Name is required." }),
|
|
154
155
|
last_name: z.string().regex(/^[a-zA-Z]*(?:[a-zA-Z][a-zA-Z'-]*\s{0,1}){2,}$/g).trim().min(1, { message: "Last Name is required." }),
|
|
155
|
-
email: z.string().email({ message: "Email is required." }).refine(
|
|
156
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
156
157
|
phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
157
158
|
const removeDashes = val.replace(/-/gi, "");
|
|
158
159
|
if (removeDashes.length !== 10) {
|
|
@@ -24,4 +24,4 @@ export type CpraInputs = {
|
|
|
24
24
|
Zip_Code: string;
|
|
25
25
|
Contact_Method: "Email" | "Postal Mail";
|
|
26
26
|
};
|
|
27
|
-
export declare const CpraRequest: ({ icon, children, onSubmit, disclosure, variant: fullVariant, headline, description, callToAction, onValidate, id, }: FormProps) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export declare const CpraRequest: ({ icon, children, onSubmit, disclosure, variant: fullVariant, headline, description, callToAction, validateEmail, onValidate, id, }: FormProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -27,11 +27,12 @@ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/Downl
|
|
|
27
27
|
/* empty css */
|
|
28
28
|
/* empty css */
|
|
29
29
|
import { findMoreAxosDomains } from "../utils/allowedAxosDomains.js";
|
|
30
|
+
import * as z from "zod";
|
|
30
31
|
import { associatedEmail } from "../utils/EverestValidity.js";
|
|
31
32
|
import { getVariant } from "../utils/getVariant.js";
|
|
33
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
32
34
|
import clsx from "clsx";
|
|
33
35
|
import { useForm, FormProvider } from "react-hook-form";
|
|
34
|
-
import * as z from "zod";
|
|
35
36
|
import { iconForm, headerContainer, form, descriptionField, fullRowForm, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
36
37
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
37
38
|
const CpraRequest = ({
|
|
@@ -45,9 +46,11 @@ const CpraRequest = ({
|
|
|
45
46
|
headline,
|
|
46
47
|
description,
|
|
47
48
|
callToAction,
|
|
49
|
+
validateEmail,
|
|
48
50
|
onValidate,
|
|
49
51
|
id
|
|
50
52
|
}) => {
|
|
53
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
51
54
|
const schema = z.object({
|
|
52
55
|
California_Resident: z.string(),
|
|
53
56
|
Categories_of_personal_info: z.string(),
|
|
@@ -73,7 +76,7 @@ const CpraRequest = ({
|
|
|
73
76
|
Last_Name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g, {
|
|
74
77
|
message: "Last Name is required."
|
|
75
78
|
}).trim().min(1, { message: "Last Name is required." }),
|
|
76
|
-
email: z.string().email({ message: "Email is required." }),
|
|
79
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
77
80
|
Telephone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
78
81
|
const removeDashes = val.replace(/-/gi, "");
|
|
79
82
|
if (removeDashes.length !== 10) {
|
|
@@ -35,6 +35,8 @@ import "react-use";
|
|
|
35
35
|
import "../ArticlesSet/ArticlesSet.css.js";
|
|
36
36
|
import "../IconBillboard/IconBillboard.css.js";
|
|
37
37
|
import "../utils/allowedAxosDomains.js";
|
|
38
|
+
import { z } from "zod";
|
|
39
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
38
40
|
import "../Calculators/calculator.css.js";
|
|
39
41
|
import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
|
|
40
42
|
import "../Calculators/ApyCalculator/ApyCalculator.css.js";
|
|
@@ -43,7 +45,6 @@ import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
|
|
|
43
45
|
import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
|
|
44
46
|
import "../Input/PercentageInput.js";
|
|
45
47
|
import { useForm, FormProvider } from "react-hook-form";
|
|
46
|
-
import { z } from "zod";
|
|
47
48
|
import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
48
49
|
import { iconForm, headerContainer, headerForm, form, descriptionField, fullRowForm, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
49
50
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
@@ -74,13 +75,12 @@ import "../Auth/SignInPassword.js";
|
|
|
74
75
|
/* empty css */
|
|
75
76
|
/* empty css */
|
|
76
77
|
import "../Carousel/index.js";
|
|
77
|
-
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
78
78
|
/* empty css */
|
|
79
79
|
import "../Chatbot/store/chat.js";
|
|
80
80
|
import "../Chatbot/authenticate.js";
|
|
81
|
+
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
81
82
|
/* empty css */
|
|
82
83
|
import "../Chatbot/store/messages.js";
|
|
83
|
-
import "@ujet/websdk-headless";
|
|
84
84
|
/* empty css */
|
|
85
85
|
import "../Comparison/Comparison.css.js";
|
|
86
86
|
import "next/image.js";
|
|
@@ -149,10 +149,11 @@ const CraPublicFile = ({
|
|
|
149
149
|
onValidate,
|
|
150
150
|
id
|
|
151
151
|
}) => {
|
|
152
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
152
153
|
const schema = z.object({
|
|
153
154
|
First_Name__c: z.string({ message: "Invalid first name." }).regex(/^[a-zA-Z]*(?:[a-zA-Z][a-zA-Z'-]*\s{0,1}){2,}$/g).trim().min(1, { message: "First Name is required." }).optional().or(z.literal("")),
|
|
154
155
|
Last_Name__c: z.string({ message: "Invalid last name." }).regex(/^[a-zA-Z]*(?:[a-zA-Z][a-zA-Z'-]*\s{0,1}){2,}$/g).trim().min(1, { message: "Last Name is required." }).optional().or(z.literal("")),
|
|
155
|
-
Customer_Email__c: z.string({ message: "Invalid email." }).email({ message: "Email is required." }).refine(
|
|
156
|
+
Customer_Email__c: z.string({ message: "Invalid email." }).email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }).optional().or(z.literal("")),
|
|
156
157
|
Customer_Phone__c: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
157
158
|
const removeDashes = val.replace(/-/gi, "");
|
|
158
159
|
if (removeDashes.length !== 10) {
|
|
@@ -26,11 +26,12 @@ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/Downl
|
|
|
26
26
|
/* empty css */
|
|
27
27
|
/* empty css */
|
|
28
28
|
import "../utils/allowedAxosDomains.js";
|
|
29
|
+
import * as z from "zod";
|
|
29
30
|
import { associatedEmail } from "../utils/EverestValidity.js";
|
|
30
31
|
import { getVariant } from "../utils/getVariant.js";
|
|
32
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
31
33
|
import clsx from "clsx";
|
|
32
34
|
import { useForm, FormProvider } from "react-hook-form";
|
|
33
|
-
import * as z from "zod";
|
|
34
35
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
35
36
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
36
37
|
import { SalesforceSchema } from "./SalesforceFieldsForm.js";
|
|
@@ -49,10 +50,11 @@ const DealerServices = ({
|
|
|
49
50
|
onValidate,
|
|
50
51
|
id
|
|
51
52
|
}) => {
|
|
53
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
52
54
|
const schema = z.object({
|
|
53
55
|
first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
|
|
54
56
|
last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
|
|
55
|
-
email: z.string().email({ message: "Email is required." }),
|
|
57
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
56
58
|
phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
57
59
|
const removeDashes = val.replace(/-/gi, "");
|
|
58
60
|
if (removeDashes.length !== 10) {
|
package/dist/Forms/EmailOnly.js
CHANGED
|
@@ -35,7 +35,9 @@ import "react-use";
|
|
|
35
35
|
import "../ArticlesSet/ArticlesSet.css.js";
|
|
36
36
|
import "../IconBillboard/IconBillboard.css.js";
|
|
37
37
|
import "../utils/allowedAxosDomains.js";
|
|
38
|
+
import { z } from "zod";
|
|
38
39
|
import { associatedEmail } from "../utils/EverestValidity.js";
|
|
40
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
39
41
|
import "../Calculators/calculator.css.js";
|
|
40
42
|
import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
|
|
41
43
|
import "../Calculators/ApyCalculator/ApyCalculator.css.js";
|
|
@@ -44,7 +46,6 @@ import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
|
|
|
44
46
|
import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
|
|
45
47
|
import "../Input/PercentageInput.js";
|
|
46
48
|
import { useForm, FormProvider } from "react-hook-form";
|
|
47
|
-
import { z } from "zod";
|
|
48
49
|
import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
49
50
|
import { iconForm, headerContainer, headerForm, email_only_h2, form, descriptionField, actions, email_only_btn, formWrapper, disclosureForm, formContainer, email_only_padding } from "./Forms.css.js";
|
|
50
51
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
@@ -75,13 +76,12 @@ import "../Auth/SignInPassword.js";
|
|
|
75
76
|
/* empty css */
|
|
76
77
|
/* empty css */
|
|
77
78
|
import "../Carousel/index.js";
|
|
78
|
-
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
79
79
|
/* empty css */
|
|
80
80
|
import "../Chatbot/store/chat.js";
|
|
81
81
|
import "../Chatbot/authenticate.js";
|
|
82
|
+
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
82
83
|
/* empty css */
|
|
83
84
|
import "../Chatbot/store/messages.js";
|
|
84
|
-
import "@ujet/websdk-headless";
|
|
85
85
|
/* empty css */
|
|
86
86
|
import "../Comparison/Comparison.css.js";
|
|
87
87
|
import "next/image.js";
|
|
@@ -150,8 +150,9 @@ const EmailOnly = ({
|
|
|
150
150
|
onValidate,
|
|
151
151
|
id
|
|
152
152
|
}) => {
|
|
153
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
153
154
|
const schema = z.object({
|
|
154
|
-
email: z.string().email({ message: "Email is required." }).refine(
|
|
155
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." })
|
|
155
156
|
});
|
|
156
157
|
const gen_schema = schema.merge(SalesforceSchema).merge(honeyPotSchema).superRefine((data, ctx) => {
|
|
157
158
|
if (!isValidHoneyPot(data)) {
|
package/dist/Forms/EmailUs.js
CHANGED
|
@@ -18,11 +18,12 @@ import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/Downl
|
|
|
18
18
|
/* empty css */
|
|
19
19
|
/* empty css */
|
|
20
20
|
import "../utils/allowedAxosDomains.js";
|
|
21
|
+
import * as z from "zod";
|
|
21
22
|
import { associatedEmail } from "../utils/EverestValidity.js";
|
|
22
23
|
import { getVariant } from "../utils/getVariant.js";
|
|
24
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
23
25
|
import clsx from "clsx";
|
|
24
26
|
import { useForm, FormProvider } from "react-hook-form";
|
|
25
|
-
import * as z from "zod";
|
|
26
27
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
27
28
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
28
29
|
const EmailUs = ({
|
|
@@ -40,8 +41,9 @@ const EmailUs = ({
|
|
|
40
41
|
description,
|
|
41
42
|
id
|
|
42
43
|
}) => {
|
|
44
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
43
45
|
const schema = z.object({
|
|
44
|
-
email: z.string().email({ message: "Email is required." }).refine(
|
|
46
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
45
47
|
message: z.string().min(2, "Message is required")
|
|
46
48
|
});
|
|
47
49
|
const gen_schema = schema.merge(honeyPotSchema).superRefine((data, ctx) => {
|
|
@@ -11,8 +11,9 @@ import "../../Input/InputTextArea.js";
|
|
|
11
11
|
import "../../Input/DownPaymentInput.js";
|
|
12
12
|
import "../../Input/RadioButton.js";
|
|
13
13
|
import "../../utils/allowedAxosDomains.js";
|
|
14
|
-
import { getVariant } from "../../utils/getVariant.js";
|
|
15
14
|
import { z } from "zod";
|
|
15
|
+
import { getVariant } from "../../utils/getVariant.js";
|
|
16
|
+
import "react";
|
|
16
17
|
import { form_field_container } from "./HoneyPot.css.js";
|
|
17
18
|
const honeyPotSchema = z.object({
|
|
18
19
|
AlternativeEmail: z.string().refine((val) => val === "bestbank@axos.com"),
|
|
@@ -12,8 +12,10 @@ import '../../assets/VideoWrapper/VideoWrapper.css';import '../../assets/Topical
|
|
|
12
12
|
/* empty css */
|
|
13
13
|
/* empty css */
|
|
14
14
|
import "../../utils/allowedAxosDomains.js";
|
|
15
|
+
import * as z from "zod";
|
|
15
16
|
import { associatedEmail } from "../../utils/EverestValidity.js";
|
|
16
17
|
import { getVariant } from "../../utils/getVariant.js";
|
|
18
|
+
import { useCachedEmailValidator } from "../../utils/useCachedValidators.js";
|
|
17
19
|
import clsx from "clsx";
|
|
18
20
|
/* empty css */
|
|
19
21
|
/* empty css */
|
|
@@ -43,7 +45,6 @@ import { DownPaymentInput } from "../../Input/DownPaymentInput.js";
|
|
|
43
45
|
import "../../Input/RadioButton.js";
|
|
44
46
|
import "../../Input/PercentageInput.js";
|
|
45
47
|
import { useForm, FormProvider } from "react-hook-form";
|
|
46
|
-
import * as z from "zod";
|
|
47
48
|
import "../../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
48
49
|
import { iconForm, headerForm, form, descriptionField, headerContainer, fullRowSelect, formWrapper, centerSelect, mt2rem, fullRowForm, disclosureForm, actions, formBtns, na_cursor, formContainer } from "../Forms.css.js";
|
|
49
50
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "../HoneyPot/index.js";
|
|
@@ -75,13 +76,12 @@ import "../../Auth/SignInPassword.js";
|
|
|
75
76
|
/* empty css */
|
|
76
77
|
/* empty css */
|
|
77
78
|
import "../../Carousel/index.js";
|
|
78
|
-
import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
79
79
|
/* empty css */
|
|
80
80
|
import "../../Chatbot/store/chat.js";
|
|
81
81
|
import "../../Chatbot/authenticate.js";
|
|
82
|
+
import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
82
83
|
/* empty css */
|
|
83
84
|
import "../../Chatbot/store/messages.js";
|
|
84
|
-
import "@ujet/websdk-headless";
|
|
85
85
|
/* empty css */
|
|
86
86
|
import "../../Comparison/Comparison.css.js";
|
|
87
87
|
import "next/image.js";
|
|
@@ -160,6 +160,7 @@ const MortgageRate = ({
|
|
|
160
160
|
const [_downPayment, setDownPayment] = useState(0);
|
|
161
161
|
const [isTypingDownPayment, setIsTypingDownPayment] = useState(false);
|
|
162
162
|
const [salesPriceVal, setSalesPriceVal] = useState(0);
|
|
163
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
163
164
|
const schema = z.object({
|
|
164
165
|
firstName: z.string({ message: "First Name is required." }).regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g, {
|
|
165
166
|
message: "First Name is required."
|
|
@@ -167,7 +168,7 @@ const MortgageRate = ({
|
|
|
167
168
|
lastName: z.string({ message: "Last Name is required." }).regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g, {
|
|
168
169
|
message: "Last Name is required."
|
|
169
170
|
}).trim().min(1, { message: "Last Name is required." }),
|
|
170
|
-
email: z.string().email({ message: "Email is required." }).refine(
|
|
171
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
171
172
|
phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, { message: "Phone is required." }).min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
172
173
|
const removeDashes = val.replace(/-/gi, "");
|
|
173
174
|
if (removeDashes.length !== 10) {
|
|
@@ -71,13 +71,12 @@ import "../../Auth/SignInPassword.js";
|
|
|
71
71
|
/* empty css */
|
|
72
72
|
/* empty css */
|
|
73
73
|
import "../../Carousel/index.js";
|
|
74
|
-
import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
75
74
|
/* empty css */
|
|
76
75
|
import "../../Chatbot/store/chat.js";
|
|
77
76
|
import "../../Chatbot/authenticate.js";
|
|
77
|
+
import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
78
78
|
/* empty css */
|
|
79
79
|
import "../../Chatbot/store/messages.js";
|
|
80
|
-
import "@ujet/websdk-headless";
|
|
81
80
|
/* empty css */
|
|
82
81
|
import "../../Comparison/Comparison.css.js";
|
|
83
82
|
import "next/image.js";
|
|
@@ -35,6 +35,8 @@ import "react-use";
|
|
|
35
35
|
import "../ArticlesSet/ArticlesSet.css.js";
|
|
36
36
|
import "../IconBillboard/IconBillboard.css.js";
|
|
37
37
|
import "../utils/allowedAxosDomains.js";
|
|
38
|
+
import { z } from "zod";
|
|
39
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
38
40
|
import "../Calculators/calculator.css.js";
|
|
39
41
|
import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
|
|
40
42
|
import "../Calculators/ApyCalculator/ApyCalculator.css.js";
|
|
@@ -43,7 +45,6 @@ import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
|
|
|
43
45
|
import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
|
|
44
46
|
import "../Input/PercentageInput.js";
|
|
45
47
|
import { useForm, FormProvider } from "react-hook-form";
|
|
46
|
-
import { z } from "zod";
|
|
47
48
|
import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
48
49
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
49
50
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "./HoneyPot/index.js";
|
|
@@ -74,13 +75,12 @@ import "../Auth/SignInPassword.js";
|
|
|
74
75
|
/* empty css */
|
|
75
76
|
/* empty css */
|
|
76
77
|
import "../Carousel/index.js";
|
|
77
|
-
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
78
78
|
/* empty css */
|
|
79
79
|
import "../Chatbot/store/chat.js";
|
|
80
80
|
import "../Chatbot/authenticate.js";
|
|
81
|
+
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
81
82
|
/* empty css */
|
|
82
83
|
import "../Chatbot/store/messages.js";
|
|
83
|
-
import "@ujet/websdk-headless";
|
|
84
84
|
/* empty css */
|
|
85
85
|
import "../Comparison/Comparison.css.js";
|
|
86
86
|
import "next/image.js";
|
|
@@ -149,10 +149,11 @@ const MortgageWarehouseLending = ({
|
|
|
149
149
|
onValidate,
|
|
150
150
|
id
|
|
151
151
|
}) => {
|
|
152
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
152
153
|
const schema = z.object({
|
|
153
154
|
first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
|
|
154
155
|
last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
|
|
155
|
-
email: z.string().email({ message: "Email is required." }).refine(
|
|
156
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
156
157
|
phone: z.string({ message: "Phone is required." }).regex(/[\d-]{10}/, "Invalid phone number.").min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
157
158
|
const removeDashes = val.replace(/-/gi, "");
|
|
158
159
|
if (removeDashes.length !== 10) {
|
|
@@ -26,12 +26,13 @@ import '../../assets/icons/FollowIcon/FollowIcon.css';import '../../assets/icons
|
|
|
26
26
|
/* empty css */
|
|
27
27
|
/* empty css */
|
|
28
28
|
import "../../utils/allowedAxosDomains.js";
|
|
29
|
+
import * as z from "zod";
|
|
29
30
|
import { associatedEmail } from "../../utils/EverestValidity.js";
|
|
30
31
|
import { getVariant } from "../../utils/getVariant.js";
|
|
32
|
+
import { useCachedEmailValidator, useCachedNMLSValidator } from "../../utils/useCachedValidators.js";
|
|
31
33
|
import { format } from "@react-input/number-format";
|
|
32
34
|
import clsx from "clsx";
|
|
33
35
|
import { useForm, FormProvider } from "react-hook-form";
|
|
34
|
-
import * as z from "zod";
|
|
35
36
|
import { BrokerConpensation, PrepaymentPenalty, NumberOfUnits, Occupancy, PropertyType, BankruptcySeasoning, BankruptcyType, HousingEventHistory, HousingEventType, MortgageLates24, MortgageLates12, Citizenship, DocType, RepresentativesFico, Purposes } from "../FormEnums.js";
|
|
36
37
|
import { iconForm, headerContainer, headerForm, form, descriptionField, one_row, section_title, checkbox_group, formWrapper, disclosureForm, actions, formContainer } from "../Forms.css.js";
|
|
37
38
|
import { honeyPotSchema, isValidHoneyPot, HoneyPot } from "../HoneyPot/index.js";
|
|
@@ -60,6 +61,8 @@ const QuickPricer = ({
|
|
|
60
61
|
const [bankruptcySeasoning, setBankruptcySeasoning] = useState(false);
|
|
61
62
|
const [numberOfUnits, setNumberOfUnits] = useState(false);
|
|
62
63
|
const [prepaymentPenalty, setPrepaymentPenalty] = useState(false);
|
|
64
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
65
|
+
const cachedNMLSValidator = useCachedNMLSValidator(validateNMLS);
|
|
63
66
|
const schema = z.object({
|
|
64
67
|
Base_Loan_Amount__c: z.string({
|
|
65
68
|
message: "Please provide a valid base loan amount"
|
|
@@ -169,11 +172,8 @@ const QuickPricer = ({
|
|
|
169
172
|
message: "Broker compensation is required"
|
|
170
173
|
}
|
|
171
174
|
),
|
|
172
|
-
NMLS__c: z.string().min(4, "Valid NMLS should have at least 4 characters").max(15, "Valid NMLS should have at most 15 characters").refine(
|
|
173
|
-
|
|
174
|
-
return res?.body?.data?.records?.length > 0;
|
|
175
|
-
}, "NMLS ID is not valid"),
|
|
176
|
-
Email_Address__c: z.string().email({ message: "Email is required." }).refine(async (val) => await validateEmail(val)),
|
|
175
|
+
NMLS__c: z.string().min(4, "Valid NMLS should have at least 4 characters").max(15, "Valid NMLS should have at most 15 characters").refine(cachedNMLSValidator, "NMLS ID is not valid"),
|
|
176
|
+
Email_Address__c: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." }),
|
|
177
177
|
Cell_Phone__c: z.string().regex(/[\d-]{10}/).min(10, { message: "Phone is required." }).max(12, { message: "Phone is required." }).transform((val, ctx) => {
|
|
178
178
|
const removeDashes = val.replace(/-/gi, "");
|
|
179
179
|
if (removeDashes.length !== 10) {
|
|
@@ -216,10 +216,14 @@ const QuickPricer = ({
|
|
|
216
216
|
}
|
|
217
217
|
});
|
|
218
218
|
const methods = useForm({
|
|
219
|
-
resolver: zodResolver(
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
219
|
+
resolver: zodResolver(
|
|
220
|
+
gen_schema,
|
|
221
|
+
{
|
|
222
|
+
async: true
|
|
223
|
+
},
|
|
224
|
+
{ mode: "async" }
|
|
225
|
+
),
|
|
226
|
+
mode: "onChange",
|
|
223
227
|
reValidateMode: "onChange",
|
|
224
228
|
defaultValues: {
|
|
225
229
|
Cash_Out_Amount__c: format(0),
|
|
@@ -236,7 +240,7 @@ const QuickPricer = ({
|
|
|
236
240
|
const {
|
|
237
241
|
handleSubmit,
|
|
238
242
|
register,
|
|
239
|
-
formState: { errors, isValid },
|
|
243
|
+
formState: { errors, isValid, isValidating },
|
|
240
244
|
setValue
|
|
241
245
|
} = methods;
|
|
242
246
|
const submitForm = async (data) => {
|
|
@@ -875,7 +879,7 @@ const QuickPricer = ({
|
|
|
875
879
|
color: getVariant(callToAction?.variant),
|
|
876
880
|
as: "button",
|
|
877
881
|
type: "submit",
|
|
878
|
-
disabled: !isValid,
|
|
882
|
+
disabled: !isValid || isValidating,
|
|
879
883
|
children: callToAction?.displayText
|
|
880
884
|
}
|
|
881
885
|
) })
|