@axos-web-dev/shared-components 2.0.0-dev.33 → 2.0.0-dev.37
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 +21 -89
- package/dist/Auth/ErrorAlert.js +6 -93
- package/dist/Button/Button.js +6 -126
- package/dist/Calculators/ApyCalculator/index.js +88 -6
- package/dist/Calculators/Calculator.d.ts +1 -1
- package/dist/Calculators/Calculator.js +19 -94
- package/dist/Calculators/MarginTradingCalculator/index.js +2 -118
- package/dist/Calculators/SummitApyCalculator/index.js +11 -5
- package/dist/Carousel/index.js +4 -115
- package/dist/Chatbot/ChatWindow.css.js +1 -0
- package/dist/Chatbot/Chatbot.css.js +0 -1
- package/dist/Chevron/index.js +5 -121
- package/dist/Comparison/Comparison.js +5 -127
- package/dist/ExecutiveBio/ExecutiveBio.interface.d.ts +3 -2
- package/dist/ExecutiveBio/ExecutiveBio.js +4 -132
- package/dist/FaqAccordion/index.js +5 -113
- package/dist/FooterSiteMap/AxosBank/FooterSiteMap.js +4 -115
- package/dist/FooterSiteMap/AxosBank/ServerFooterSiteMap.d.ts +10 -0
- package/dist/FooterSiteMap/AxosBank/ServerFooterSiteMap.js +151 -0
- package/dist/FooterSiteMap/AxosBank/index.d.ts +1 -0
- package/dist/FooterSiteMap/AxosBank/index.js +2 -0
- package/dist/FooterSiteMap/index.js +2 -0
- package/dist/Forms/ApplyNow.js +3 -114
- package/dist/Forms/ContactCompany.d.ts +1 -1
- package/dist/Forms/ContactCompanyTitle.d.ts +1 -1
- package/dist/Forms/ContactUsBusiness.js +5 -107
- package/dist/Forms/ContactUsBusinessNameEmail.js +6 -107
- package/dist/Forms/ContactUsNMLSId.js +5 -107
- package/dist/Forms/CpraRequest.js +2 -101
- package/dist/Forms/CraPublicFile.js +5 -107
- package/dist/Forms/DealerServices.d.ts +1 -1
- package/dist/Forms/EmailOnly.js +6 -118
- package/dist/Forms/FormEnums.d.ts +16 -0
- package/dist/Forms/FormEnums.js +27 -0
- package/dist/Forms/MortgageRate/MortgageRateForm.js +33 -108
- package/dist/Forms/MortgageRate/MortgageRateQuoteFilters.js +34 -13
- package/dist/Forms/MortgageRate/MortgageRateWatch.d.ts +1 -1
- package/dist/Forms/MortgageRate/MortgageRateWatch.js +94 -115
- package/dist/Forms/MortgageWarehouseLending.js +5 -107
- package/dist/Forms/NameAndEmail.d.ts +8 -0
- package/dist/Forms/NameAndEmail.js +165 -0
- package/dist/Forms/NonQMLoans.d.ts +16 -0
- package/dist/Forms/NonQMLoans.js +369 -0
- package/dist/Forms/SuccesForm.js +7 -95
- package/dist/Forms/index.d.ts +2 -0
- package/dist/Forms/index.js +4 -0
- package/dist/Hyperlink/index.js +4 -115
- package/dist/ImageLink/ImageLink.js +8 -113
- package/dist/ImageLink/ImageLinkSet.js +6 -120
- package/dist/ImageLink/index.js +5 -109
- package/dist/ImageToast/index.js +2 -113
- package/dist/Input/DownPaymentInput.js +1 -0
- package/dist/Insight/Featured/CategorySelector.css.d.ts +5 -3
- package/dist/Insight/Featured/CategorySelector.css.js +12 -8
- package/dist/Insight/Featured/CategorySelector.d.ts +2 -1
- package/dist/Insight/Featured/CategorySelector.js +76 -145
- package/dist/Insight/Featured/Featured.css.d.ts +13 -4
- package/dist/Insight/Featured/Featured.css.js +37 -18
- package/dist/Insight/Featured/Featured.d.ts +1 -0
- package/dist/Insight/Featured/Featured.js +131 -205
- package/dist/Insight/Featured/Header.css.d.ts +1 -0
- package/dist/Insight/Featured/Header.css.js +9 -6
- package/dist/Insight/Featured/Header.js +14 -132
- package/dist/Insight/Featured/index.js +13 -4
- package/dist/Insight/index.js +13 -4
- package/dist/LandingPageHeader/LandingPageHeader.d.ts +1 -1
- package/dist/LandingPageHeader/WithLogin.js +7 -124
- package/dist/Modal/Modal.js +2 -128
- package/dist/NavigationMenu/AxosALTS/index.js +6 -117
- package/dist/NavigationMenu/AxosAdvisor/NavBar.module.js +52 -52
- package/dist/NavigationMenu/AxosBank/MobileMenu/MobileMenu.js +4 -114
- package/dist/NavigationMenu/AxosBank/MobileMenu/MobileNavData.js +1 -1
- package/dist/NavigationMenu/AxosBank/SubNavBar.js +7 -115
- package/dist/NavigationMenu/AxosBank/index.js +6 -124
- package/dist/NavigationMenu/LaVictoire/index.js +4 -123
- package/dist/NavigationMenu/NavItem/index.js +4 -116
- package/dist/NavigationMenu/ServerNavigation/DropwdownButton.js +4 -123
- package/dist/NavigationMenu/ServerNavigation/Menu.js +4 -121
- package/dist/NavigationMenu/ServerNavigation/MobileMenu/MobileMenu.js +17 -125
- package/dist/NavigationMenu/ServerNavigation/MobileMenu/MobileNavData.d.ts +1 -1
- package/dist/NavigationMenu/ServerNavigation/MobileMenu/MobileNavData.js +3 -3
- package/dist/NavigationMenu/ServerNavigation/SubNavBar.js +5 -115
- package/dist/NavigationMenu/ServerNavigation/SubNavItem.js +4 -116
- package/dist/NavigationMenu/ServerNavigation/index.js +15 -116
- package/dist/NavigationMenu/getPathFromNavUrl.d.ts +3 -0
- package/dist/NavigationMenu/getPathFromNavUrl.js +15 -0
- package/dist/NavigationMenu/index.d.ts +3 -2
- package/dist/NavigationMenu/index.js +8 -7
- package/dist/NavigationMenu/utils.d.ts +0 -3
- package/dist/NavigationMenu/utils.js +0 -13
- package/dist/SetContainer/SetContainer.js +9 -115
- package/dist/SocialMediaBar/iconsRepository.js +0 -130
- package/dist/VideoTile/VideoTile.js +2 -112
- package/dist/VideoWrapper/index.js +7 -116
- package/dist/assets/CallToActionBar/CallToActionBar.css +2 -1
- package/dist/assets/Forms/Forms.css +2 -1
- package/dist/assets/ImageBillboard/ImageBillboard.css +1 -1
- package/dist/assets/Input/Input.css +1 -0
- package/dist/assets/Insight/Featured/CategorySelector.css +60 -38
- package/dist/assets/Insight/Featured/Featured.css +126 -65
- package/dist/assets/Insight/Featured/Header.css +22 -13
- package/dist/assets/NavigationMenu/AxosAdvisor/NavBar.css +609 -609
- package/dist/assets/SetContainer/SetContainer.css +6 -6
- package/dist/assets/TextBlock/TextBlock.css +0 -1
- package/dist/icons/Clock/index.js +1 -0
- package/dist/main.js +28 -10
- package/dist/utils/allowedAxosDomains.d.ts +1 -1
- package/dist/utils/allowedAxosDomains.js +33 -20
- package/dist/utils/createUrlResolver.d.ts +3 -0
- package/dist/utils/createUrlResolver.js +7 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/insightsData.d.ts +1 -1
- package/dist/utils/insightsData.js +1 -6
- package/package.json +1 -1
|
@@ -24,7 +24,7 @@ import { checkbox } from "../../Input/Checkbox.css.js";
|
|
|
24
24
|
import "../../IconBillboard/IconBillboard.css.js";
|
|
25
25
|
import "../../icons/ArrowIcon/ArrowIcon.css.js";
|
|
26
26
|
import "../../icons/CheckIcon/CheckIcon.css.js";
|
|
27
|
-
import '../../assets/
|
|
27
|
+
import '../../assets/Modal/Modal.css';import '../../assets/BulletItem/BulletItem.css';import '../../assets/Typography/Typography.css';import '../../assets/icons/FollowIcon/FollowIcon.css';import '../../assets/icons/DownloadIcon/DownloadIcon.css';import '../../assets/themes/victorie.css';import '../../assets/themes/ufb.css';import '../../assets/themes/premier.css';import '../../assets/themes/axos.css';/* empty css */
|
|
28
28
|
/* empty css */
|
|
29
29
|
/* empty css */
|
|
30
30
|
/* empty css */
|
|
@@ -32,107 +32,13 @@ import '../../assets/VideoWrapper/VideoWrapper.css';import '../../assets/Topical
|
|
|
32
32
|
/* empty css */
|
|
33
33
|
/* empty css */
|
|
34
34
|
/* empty css */
|
|
35
|
-
import "../../Accordion/Accordion.js";
|
|
36
|
-
import "../../Accordion/Accordion.css.js";
|
|
37
|
-
import "../../AlertBanner/AlertBanner.css.js";
|
|
38
|
-
import "../../Article/Article.css.js";
|
|
39
|
-
import "../../ArticlesSet/ArticlesSet.css.js";
|
|
40
|
-
import "../../Calculators/calculator.css.js";
|
|
41
|
-
import "../../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
|
|
42
|
-
import "../../Modal/contextApi/store.js";
|
|
43
|
-
import "next/image.js";
|
|
44
|
-
import { button } from "../../Button/Button.css.js";
|
|
45
|
-
import "../../Calculators/ApyCalculator/ApyCalculator.css.js";
|
|
46
|
-
import "../../Calculators/ApyCalculatorUserTest/ApyCalculatorUserTest.css.js";
|
|
47
|
-
import "../../HeroBanner/LargeBanner.css.js";
|
|
48
|
-
import "../../HeroBanner/HeroBanner.css.js";
|
|
49
|
-
import "../../HeroBanner/SelectionBanner.css.js";
|
|
50
|
-
/* empty css */
|
|
51
|
-
import "../../SetContainer/SetContainer.css.js";
|
|
52
|
-
import "../../Table/Table.css.js";
|
|
53
|
-
import "../../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
|
|
54
|
-
import "../../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
|
|
55
|
-
import "../../Input/PercentageInput.js";
|
|
56
|
-
import "../../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
57
|
-
/* empty css */
|
|
58
|
-
import "../HoneyPot/honeyPotValidation.js";
|
|
59
|
-
import "../SalesforceFieldsForm.js";
|
|
60
|
-
import "react-use";
|
|
61
35
|
import "../../Chevron/Chevron.css.js";
|
|
62
36
|
/* empty css */
|
|
37
|
+
import "../../Modal/contextApi/store.js";
|
|
63
38
|
import "../../Interstitial/Interstitial-variants.css.js";
|
|
64
|
-
|
|
65
|
-
import "
|
|
66
|
-
/* empty css */
|
|
39
|
+
import { button } from "../../Button/Button.css.js";
|
|
40
|
+
import "react-use";
|
|
67
41
|
import { SuccesFormWrapper } from "../SuccesForm.js";
|
|
68
|
-
import "iframe-resizer";
|
|
69
|
-
/* empty css */
|
|
70
|
-
import "../../Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
|
|
71
|
-
import "../../Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css.js";
|
|
72
|
-
import "../../Calculators/SummitApyCalculator/BalanceAPYCalculator.css.js";
|
|
73
|
-
/* empty css */
|
|
74
|
-
import "react-dom";
|
|
75
|
-
/* empty css */
|
|
76
|
-
import "../../Auth/SignInPassword.js";
|
|
77
|
-
/* empty css */
|
|
78
|
-
/* empty css */
|
|
79
|
-
/* empty css */
|
|
80
|
-
/* empty css */
|
|
81
|
-
import "../../Carousel/index.js";
|
|
82
|
-
/* empty css */
|
|
83
|
-
/* empty css */
|
|
84
|
-
import "../../Chatbot/store/chat.js";
|
|
85
|
-
import "../../Chatbot/Chatbot.js";
|
|
86
|
-
import "../../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
87
|
-
/* empty css */
|
|
88
|
-
import "../../Chatbot/store/messages.js";
|
|
89
|
-
/* empty css */
|
|
90
|
-
import "../../Comparison/Comparison.css.js";
|
|
91
|
-
import "../../Tab/Tab.css.js";
|
|
92
|
-
import "../../icons/Star/Star.css.js";
|
|
93
|
-
import "../../ContentBanner/ContentBanner.css.js";
|
|
94
|
-
/* empty css */
|
|
95
|
-
import "../../ExecutiveBio/ExecutiveBio.css.js";
|
|
96
|
-
import "../../FaqAccordion/index.js";
|
|
97
|
-
import "../../FooterDisclosure/FooterDisclosure.css.js";
|
|
98
|
-
/* empty css */
|
|
99
|
-
/* empty css */
|
|
100
|
-
/* empty css */
|
|
101
|
-
import "../../ImageBillboard/ImageBillboard.css.js";
|
|
102
|
-
import "next/script.js";
|
|
103
|
-
/* empty css */
|
|
104
|
-
/* empty css */
|
|
105
|
-
/* empty css */
|
|
106
|
-
/* empty css */
|
|
107
|
-
/* empty css */
|
|
108
|
-
import "../../LandingPageHeader/LandingPageHeader.css.js";
|
|
109
|
-
import "next/link.js";
|
|
110
|
-
/* empty css */
|
|
111
|
-
/* empty css */
|
|
112
|
-
import "next/navigation.js";
|
|
113
|
-
/* empty css */
|
|
114
|
-
/* empty css */
|
|
115
|
-
/* empty css */
|
|
116
|
-
/* empty css */
|
|
117
|
-
import "../../NavigationMenu/ServerNavigation/Menu.js";
|
|
118
|
-
import "../../NavigationMenu/ServerNavigation/SubNavbar.css.js";
|
|
119
|
-
/* empty css */
|
|
120
|
-
/* empty css */
|
|
121
|
-
/* empty css */
|
|
122
|
-
/* empty css */
|
|
123
|
-
import "../../PageNavItem/PageNavItem.css.js";
|
|
124
|
-
import "react-slick";
|
|
125
|
-
/* empty css */
|
|
126
|
-
/* empty css */
|
|
127
|
-
/* empty css */
|
|
128
|
-
/* empty css */
|
|
129
|
-
import "../../StepItem/StepItem.css.js";
|
|
130
|
-
import "../../StepItemSet/StepItemSet.css.js";
|
|
131
|
-
/* empty css */
|
|
132
|
-
/* empty css */
|
|
133
|
-
/* empty css */
|
|
134
|
-
/* empty css */
|
|
135
|
-
/* empty css */
|
|
136
42
|
const RateWatchForm = ({
|
|
137
43
|
email,
|
|
138
44
|
lastName,
|
|
@@ -140,12 +46,34 @@ const RateWatchForm = ({
|
|
|
140
46
|
toggleModal,
|
|
141
47
|
setRateWatchSubmitted
|
|
142
48
|
}) => {
|
|
49
|
+
const desiredRateFields = [
|
|
50
|
+
"tR1DesiredRate",
|
|
51
|
+
"tR2DesiredRate",
|
|
52
|
+
"tR3DesiredRate"
|
|
53
|
+
];
|
|
54
|
+
const sanitizeDesiredRate = (value) => {
|
|
55
|
+
if (!value) return "";
|
|
56
|
+
const normalizedValue = value.replace(/[^\d.]/g, "");
|
|
57
|
+
if (!normalizedValue || normalizedValue === ".") return "";
|
|
58
|
+
const [wholePart, decimalPart = ""] = normalizedValue.split(".");
|
|
59
|
+
const trimmedDecimal = decimalPart.slice(0, 4);
|
|
60
|
+
const formattedValue = trimmedDecimal ? `${wholePart || "0"}.${trimmedDecimal}` : wholePart || "0";
|
|
61
|
+
const numericValue = Number(formattedValue);
|
|
62
|
+
if (!Number.isFinite(numericValue)) return "";
|
|
63
|
+
return Number.isInteger(numericValue) ? String(numericValue) : numericValue.toFixed(4).replace(/\.0+$|(?<=\.\d*)(0+)$/, "").replace(/\.$/, "");
|
|
64
|
+
};
|
|
65
|
+
const isDesiredRateOutOfRange = (value) => {
|
|
66
|
+
if (!value) return false;
|
|
67
|
+
const numericValue = Number(value);
|
|
68
|
+
if (!Number.isFinite(numericValue)) return false;
|
|
69
|
+
return numericValue < 2 || numericValue > 10;
|
|
70
|
+
};
|
|
143
71
|
const [updateType, setUpdateType] = useState(
|
|
144
72
|
"Target Rate"
|
|
145
73
|
);
|
|
146
74
|
const schema = z.object({
|
|
147
75
|
updateType: z.string().min(1, { message: "Update type is required." }),
|
|
148
|
-
updateCadence: z.string().refine((val) => !(updateType === "Frequency" && !val), {
|
|
76
|
+
updateCadence: z.string().optional().refine((val) => !(updateType === "Frequency" && !val), {
|
|
149
77
|
message: "Frequency is required."
|
|
150
78
|
}),
|
|
151
79
|
loanTerms: z.string().optional().refine((val) => !(updateType === "Frequency" && !val), {
|
|
@@ -154,11 +82,13 @@ const RateWatchForm = ({
|
|
|
154
82
|
hasSmsConsent: z.boolean().refine((val) => val === true, {
|
|
155
83
|
message: "You must agree to receive SMS messages."
|
|
156
84
|
}),
|
|
157
|
-
tR1DesiredRate: z.string().optional().refine(
|
|
85
|
+
tR1DesiredRate: z.string().optional().refine((val) => updateType === "Target Rate" ? !!val : true, {
|
|
86
|
+
message: "Desired Rate is required."
|
|
87
|
+
}).refine(
|
|
158
88
|
(val) => {
|
|
159
89
|
if (val && updateType === "Target Rate") {
|
|
160
90
|
const numericValue = +val;
|
|
161
|
-
return
|
|
91
|
+
return numericValue >= 2 && numericValue <= 10;
|
|
162
92
|
}
|
|
163
93
|
return true;
|
|
164
94
|
},
|
|
@@ -197,15 +127,21 @@ const RateWatchForm = ({
|
|
|
197
127
|
email: z.string()
|
|
198
128
|
});
|
|
199
129
|
const methods = useForm({
|
|
200
|
-
resolver: zodResolver(schema)
|
|
130
|
+
resolver: zodResolver(schema),
|
|
131
|
+
mode: "onChange"
|
|
201
132
|
});
|
|
202
133
|
const {
|
|
203
134
|
handleSubmit,
|
|
204
135
|
register,
|
|
205
136
|
formState: { errors, isSubmitting, isValid },
|
|
206
137
|
setValue,
|
|
207
|
-
clearErrors
|
|
138
|
+
clearErrors,
|
|
139
|
+
watch
|
|
208
140
|
} = methods;
|
|
141
|
+
const watchedDesiredRates = watch(desiredRateFields);
|
|
142
|
+
const hasDesiredRateWarning = desiredRateFields.some(
|
|
143
|
+
(_, index) => isDesiredRateOutOfRange(watchedDesiredRates[index])
|
|
144
|
+
);
|
|
209
145
|
const submitForm = async (data) => {
|
|
210
146
|
const processedData = {
|
|
211
147
|
...data,
|
|
@@ -244,12 +180,22 @@ const RateWatchForm = ({
|
|
|
244
180
|
const handleTypeChange = (event) => {
|
|
245
181
|
const value = event.target.value;
|
|
246
182
|
setUpdateType(value);
|
|
183
|
+
methods.setValue("updateType", value, { shouldValidate: true });
|
|
184
|
+
};
|
|
185
|
+
const handleDesiredRateChange = (fieldName) => (event) => {
|
|
186
|
+
const sanitizedValue = sanitizeDesiredRate(event.target.value);
|
|
187
|
+
event.target.value = sanitizedValue;
|
|
188
|
+
setValue(fieldName, sanitizedValue, {
|
|
189
|
+
shouldValidate: true,
|
|
190
|
+
shouldDirty: true,
|
|
191
|
+
shouldTouch: true
|
|
192
|
+
});
|
|
247
193
|
};
|
|
248
194
|
const handleSubmitClick = () => {
|
|
249
195
|
handleSubmit(submitForm)();
|
|
250
196
|
};
|
|
251
197
|
useEffect(() => {
|
|
252
|
-
methods.reset();
|
|
198
|
+
methods.reset({ updateType });
|
|
253
199
|
}, [updateType]);
|
|
254
200
|
return /* @__PURE__ */ jsx("section", { className: "rate-watch-form", children: /* @__PURE__ */ jsx(FormProvider, { ...methods, children: /* @__PURE__ */ jsx(
|
|
255
201
|
SuccesFormWrapper,
|
|
@@ -327,7 +273,7 @@ const RateWatchForm = ({
|
|
|
327
273
|
/* @__PURE__ */ jsx("p", { className: mt1Rem, children: "You can establish up to three different targets with one rate watch." }),
|
|
328
274
|
/* @__PURE__ */ jsxs("div", { className: threeColRow, children: [
|
|
329
275
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
330
|
-
/* @__PURE__ */ jsx("label", { className: resposiveLabel, children: "Select a Loan Type
|
|
276
|
+
/* @__PURE__ */ jsx("label", { className: resposiveLabel, children: "Select a Loan Type" }),
|
|
331
277
|
/* @__PURE__ */ jsxs(
|
|
332
278
|
Dropdown,
|
|
333
279
|
{
|
|
@@ -346,18 +292,24 @@ const RateWatchForm = ({
|
|
|
346
292
|
)
|
|
347
293
|
] }),
|
|
348
294
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
349
|
-
/* @__PURE__ */
|
|
295
|
+
/* @__PURE__ */ jsxs("label", { className: resposiveLabel, children: [
|
|
296
|
+
"Desired Rate",
|
|
297
|
+
/* @__PURE__ */ jsx("sup", { children: "*" })
|
|
298
|
+
] }),
|
|
350
299
|
/* @__PURE__ */ jsx(
|
|
351
300
|
Input,
|
|
352
301
|
{
|
|
353
302
|
className: dynPH,
|
|
354
303
|
...register("tR1DesiredRate", {
|
|
355
|
-
setValueAs: (value) => value
|
|
304
|
+
setValueAs: (value) => sanitizeDesiredRate(String(value ?? ""))
|
|
356
305
|
}),
|
|
306
|
+
onChange: handleDesiredRateChange("tR1DesiredRate"),
|
|
357
307
|
type: "number",
|
|
308
|
+
min: "2",
|
|
309
|
+
max: "10",
|
|
358
310
|
placeholder: "Desired Rate",
|
|
359
311
|
error: !!errors.tR1DesiredRate,
|
|
360
|
-
helperText: errors.tR1DesiredRate?.message
|
|
312
|
+
helperText: isDesiredRateOutOfRange(watch("tR1DesiredRate")) ? "Desired Rate must be between 2 and 10." : errors.tR1DesiredRate?.message
|
|
361
313
|
}
|
|
362
314
|
)
|
|
363
315
|
] }),
|
|
@@ -408,9 +360,16 @@ const RateWatchForm = ({
|
|
|
408
360
|
Input,
|
|
409
361
|
{
|
|
410
362
|
className: dynPH,
|
|
411
|
-
...register("tR2DesiredRate"
|
|
412
|
-
|
|
413
|
-
|
|
363
|
+
...register("tR2DesiredRate", {
|
|
364
|
+
setValueAs: (value) => sanitizeDesiredRate(String(value ?? ""))
|
|
365
|
+
}),
|
|
366
|
+
onChange: handleDesiredRateChange("tR2DesiredRate"),
|
|
367
|
+
type: "number",
|
|
368
|
+
min: "2",
|
|
369
|
+
max: "10",
|
|
370
|
+
placeholder: "Desired Rate",
|
|
371
|
+
error: isDesiredRateOutOfRange(watch("tR2DesiredRate")),
|
|
372
|
+
helperText: isDesiredRateOutOfRange(watch("tR2DesiredRate")) ? "Desired Rate must be between 2 and 10." : errors.tR2DesiredRate?.message
|
|
414
373
|
}
|
|
415
374
|
) }),
|
|
416
375
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
|
|
@@ -456,10 +415,17 @@ const RateWatchForm = ({
|
|
|
456
415
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
457
416
|
Input,
|
|
458
417
|
{
|
|
459
|
-
...register("tR3DesiredRate"
|
|
460
|
-
|
|
418
|
+
...register("tR3DesiredRate", {
|
|
419
|
+
setValueAs: (value) => sanitizeDesiredRate(String(value ?? ""))
|
|
420
|
+
}),
|
|
421
|
+
onChange: handleDesiredRateChange("tR3DesiredRate"),
|
|
422
|
+
type: "number",
|
|
423
|
+
min: "2",
|
|
424
|
+
max: "10",
|
|
461
425
|
placeholder: "Desired Rate",
|
|
462
|
-
className: dynPH
|
|
426
|
+
className: dynPH,
|
|
427
|
+
error: isDesiredRateOutOfRange(watch("tR3DesiredRate")),
|
|
428
|
+
helperText: isDesiredRateOutOfRange(watch("tR3DesiredRate")) ? "Desired Rate must be between 2 and 10." : errors.tR3DesiredRate?.message
|
|
463
429
|
}
|
|
464
430
|
) }),
|
|
465
431
|
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
|
|
@@ -484,7 +450,20 @@ const RateWatchForm = ({
|
|
|
484
450
|
}
|
|
485
451
|
) })
|
|
486
452
|
] }),
|
|
487
|
-
/* @__PURE__ */
|
|
453
|
+
/* @__PURE__ */ jsxs(
|
|
454
|
+
"p",
|
|
455
|
+
{
|
|
456
|
+
className: mt1Rem,
|
|
457
|
+
style: {
|
|
458
|
+
color: hasDesiredRateWarning ? "#d92d20" : void 0,
|
|
459
|
+
fontWeight: hasDesiredRateWarning ? 600 : void 0
|
|
460
|
+
},
|
|
461
|
+
children: [
|
|
462
|
+
/* @__PURE__ */ jsx("sup", { children: "*" }),
|
|
463
|
+
" Please enter a desired rate between 2% and 10%"
|
|
464
|
+
]
|
|
465
|
+
}
|
|
466
|
+
)
|
|
488
467
|
] }),
|
|
489
468
|
/* @__PURE__ */ jsxs("div", { className: modalCheckboxContainer, children: [
|
|
490
469
|
/* @__PURE__ */ jsx(
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
4
|
+
import { Button } from "../Button/Button.js";
|
|
5
|
+
import "../Button/Button.css.js";
|
|
6
|
+
import "react";
|
|
7
|
+
import "react-use";
|
|
4
8
|
import "../Input/Checkbox.js";
|
|
5
9
|
import "../Input/CurrencyInput.js";
|
|
6
10
|
import "../Input/Dropdown.js";
|
|
@@ -16,126 +20,20 @@ import "../icons/ArrowIcon/ArrowIcon.css.js";
|
|
|
16
20
|
import SvgAxosX from "../icons/AxosX/index.js";
|
|
17
21
|
import SvgComponent from "../icons/AxosX/Blue.js";
|
|
18
22
|
import "../icons/CheckIcon/CheckIcon.css.js";
|
|
19
|
-
import '../assets/
|
|
23
|
+
import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/DownloadIcon/DownloadIcon.css';import '../assets/themes/victorie.css';import '../assets/themes/ufb.css';import '../assets/themes/premier.css';import '../assets/themes/axos.css';/* empty css */
|
|
20
24
|
/* empty css */
|
|
21
25
|
/* empty css */
|
|
22
26
|
/* empty css */
|
|
23
27
|
/* empty css */
|
|
24
28
|
/* empty css */
|
|
25
|
-
import "../Accordion/Accordion.js";
|
|
26
|
-
import "../Accordion/Accordion.css.js";
|
|
27
29
|
import { z } from "zod";
|
|
28
30
|
import { getVariant } from "../utils/getVariant.js";
|
|
29
31
|
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
30
32
|
import clsx from "clsx";
|
|
31
|
-
import "react";
|
|
32
|
-
import "../Chevron/Chevron.css.js";
|
|
33
|
-
import "../AlertBanner/AlertBanner.css.js";
|
|
34
|
-
import "../Article/Article.css.js";
|
|
35
|
-
import { Button } from "../Button/Button.js";
|
|
36
|
-
import "../Button/Button.css.js";
|
|
37
|
-
import "react-use";
|
|
38
|
-
import "../ArticlesSet/ArticlesSet.css.js";
|
|
39
|
-
import "../IconBillboard/IconBillboard.css.js";
|
|
40
|
-
import "../Calculators/calculator.css.js";
|
|
41
|
-
import "../Calculators/AnnualFeeCalculator/AnnualFeeCalculator.css.js";
|
|
42
|
-
import "../Modal/contextApi/store.js";
|
|
43
|
-
import "next/image.js";
|
|
44
|
-
import "../Calculators/ApyCalculator/ApyCalculator.css.js";
|
|
45
|
-
import "../Calculators/ApyCalculatorUserTest/ApyCalculatorUserTest.css.js";
|
|
46
|
-
import "../HeroBanner/LargeBanner.css.js";
|
|
47
|
-
import "../HeroBanner/HeroBanner.css.js";
|
|
48
|
-
import "../HeroBanner/SelectionBanner.css.js";
|
|
49
|
-
/* empty css */
|
|
50
|
-
/* empty css */
|
|
51
|
-
/* empty css */
|
|
52
|
-
import "../SetContainer/SetContainer.css.js";
|
|
53
|
-
import "../Table/Table.css.js";
|
|
54
|
-
import "../Calculators/AxosOneCalculator/BalanceAPYCalculator.css.js";
|
|
55
|
-
import "../Calculators/BalanceAPYCalculator/BalanceAPYCalculator.css.js";
|
|
56
|
-
import "../Input/PercentageInput.js";
|
|
57
33
|
import { useForm, FormProvider } from "react-hook-form";
|
|
58
|
-
import "../Calculators/BuyDownCalculator/BuyDownCalculator.css.js";
|
|
59
34
|
import { iconForm, headerContainer, headerForm, form, descriptionField, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
60
35
|
import { HoneyPot } from "./HoneyPot/index.js";
|
|
61
36
|
import { SalesforceSchema } from "./SalesforceFieldsForm.js";
|
|
62
|
-
import "../Input/RadioButton.css.js";
|
|
63
|
-
import "../Input/Checkbox.css.js";
|
|
64
|
-
import "../LoadingIndicator/LoadingIndicator.css.js";
|
|
65
|
-
/* empty css */
|
|
66
|
-
import "../Interstitial/Interstitial-variants.css.js";
|
|
67
|
-
import "../Inputs/Input.css.js";
|
|
68
|
-
/* empty css */
|
|
69
|
-
import "../Hyperlink/Hyperlink.css.js";
|
|
70
|
-
/* empty css */
|
|
71
|
-
import "iframe-resizer";
|
|
72
|
-
/* empty css */
|
|
73
|
-
import "../Calculators/MonthlyPaymentCalculator/MonthlyPaymentCalculator.css.js";
|
|
74
|
-
import "../Calculators/MonthlyPaymentLVFCalculator/MonthlyPaymentCalculator.css.js";
|
|
75
|
-
import "../Calculators/SummitApyCalculator/BalanceAPYCalculator.css.js";
|
|
76
|
-
/* empty css */
|
|
77
|
-
import "react-dom";
|
|
78
|
-
/* empty css */
|
|
79
|
-
import "../Auth/SignInPassword.js";
|
|
80
|
-
/* empty css */
|
|
81
|
-
/* empty css */
|
|
82
|
-
/* empty css */
|
|
83
|
-
/* empty css */
|
|
84
|
-
import "../Carousel/index.js";
|
|
85
|
-
/* empty css */
|
|
86
|
-
/* empty css */
|
|
87
|
-
import "../Chatbot/store/chat.js";
|
|
88
|
-
import "../Chatbot/Chatbot.js";
|
|
89
|
-
import "../Chatbot/Chatbot.css.ts.vanilla.css.js";
|
|
90
|
-
/* empty css */
|
|
91
|
-
import "../Chatbot/store/messages.js";
|
|
92
|
-
/* empty css */
|
|
93
|
-
import "../Comparison/Comparison.css.js";
|
|
94
|
-
import "../Tab/Tab.css.js";
|
|
95
|
-
import "../icons/Star/Star.css.js";
|
|
96
|
-
import "../ContentBanner/ContentBanner.css.js";
|
|
97
|
-
/* empty css */
|
|
98
|
-
import "../ExecutiveBio/ExecutiveBio.css.js";
|
|
99
|
-
import "../FaqAccordion/index.js";
|
|
100
|
-
import "../FooterDisclosure/FooterDisclosure.css.js";
|
|
101
|
-
/* empty css */
|
|
102
|
-
/* empty css */
|
|
103
|
-
/* empty css */
|
|
104
|
-
import "../ImageBillboard/ImageBillboard.css.js";
|
|
105
|
-
import "next/script.js";
|
|
106
|
-
/* empty css */
|
|
107
|
-
/* empty css */
|
|
108
|
-
/* empty css */
|
|
109
|
-
/* empty css */
|
|
110
|
-
/* empty css */
|
|
111
|
-
import "../LandingPageHeader/LandingPageHeader.css.js";
|
|
112
|
-
import "next/link.js";
|
|
113
|
-
/* empty css */
|
|
114
|
-
/* empty css */
|
|
115
|
-
import "next/navigation.js";
|
|
116
|
-
/* empty css */
|
|
117
|
-
/* empty css */
|
|
118
|
-
/* empty css */
|
|
119
|
-
/* empty css */
|
|
120
|
-
import "../NavigationMenu/ServerNavigation/Menu.js";
|
|
121
|
-
import "../NavigationMenu/ServerNavigation/SubNavbar.css.js";
|
|
122
|
-
/* empty css */
|
|
123
|
-
/* empty css */
|
|
124
|
-
/* empty css */
|
|
125
|
-
/* empty css */
|
|
126
|
-
import "../PageNavItem/PageNavItem.css.js";
|
|
127
|
-
import "react-slick";
|
|
128
|
-
/* empty css */
|
|
129
|
-
/* empty css */
|
|
130
|
-
/* empty css */
|
|
131
|
-
/* empty css */
|
|
132
|
-
import "../StepItem/StepItem.css.js";
|
|
133
|
-
import "../StepItemSet/StepItemSet.css.js";
|
|
134
|
-
/* empty css */
|
|
135
|
-
/* empty css */
|
|
136
|
-
/* empty css */
|
|
137
|
-
/* empty css */
|
|
138
|
-
/* empty css */
|
|
139
37
|
import { honeyPotSchema, isValidHoneyPot } from "./HoneyPot/honeyPotValidation.js";
|
|
140
38
|
const MortgageWarehouseLending = ({
|
|
141
39
|
icon = false,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FormProps } from './FormProps';
|
|
2
|
+
|
|
3
|
+
export type NameAndEmailInputs = {
|
|
4
|
+
first_name: string;
|
|
5
|
+
last_name: string;
|
|
6
|
+
email: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const NameAndEmail: ({ icon, children, onSubmit, disclosure, variant: fullVariant, headline, description, callToAction, validateEmail, onValidate, id, }: FormProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { zodResolver } from "@hookform/resolvers/zod";
|
|
4
|
+
import { Button } from "../Button/Button.js";
|
|
5
|
+
import "../Button/Button.css.js";
|
|
6
|
+
import "react";
|
|
7
|
+
import "react-use";
|
|
8
|
+
import { Input } from "../Input/Input.js";
|
|
9
|
+
import "../icons/ArrowIcon/ArrowIcon.css.js";
|
|
10
|
+
import SvgAxosX from "../icons/AxosX/index.js";
|
|
11
|
+
import SvgComponent from "../icons/AxosX/Blue.js";
|
|
12
|
+
import "../icons/CheckIcon/CheckIcon.css.js";
|
|
13
|
+
import '../assets/icons/FollowIcon/FollowIcon.css';import '../assets/icons/DownloadIcon/DownloadIcon.css';import '../assets/themes/victorie.css';import '../assets/themes/ufb.css';import '../assets/themes/premier.css';import '../assets/themes/axos.css';/* empty css */
|
|
14
|
+
/* empty css */
|
|
15
|
+
/* empty css */
|
|
16
|
+
/* empty css */
|
|
17
|
+
/* empty css */
|
|
18
|
+
/* empty css */
|
|
19
|
+
import * as z from "zod";
|
|
20
|
+
import { associatedEmail } from "../utils/EverestValidity.js";
|
|
21
|
+
import { getVariant } from "../utils/getVariant.js";
|
|
22
|
+
import { useCachedEmailValidator } from "../utils/useCachedValidators.js";
|
|
23
|
+
import clsx from "clsx";
|
|
24
|
+
import { useForm, FormProvider } from "react-hook-form";
|
|
25
|
+
import { iconForm, headerContainer, headerForm, form, descriptionField, fullRowForm, formWrapper, disclosureForm, actions, formContainer } from "./Forms.css.js";
|
|
26
|
+
import { HoneyPot } from "./HoneyPot/index.js";
|
|
27
|
+
import { SalesforceSchema } from "./SalesforceFieldsForm.js";
|
|
28
|
+
import { honeyPotSchema, isValidHoneyPot } from "./HoneyPot/honeyPotValidation.js";
|
|
29
|
+
const NameAndEmail = ({
|
|
30
|
+
icon = false,
|
|
31
|
+
children,
|
|
32
|
+
onSubmit = (values) => {
|
|
33
|
+
console.log(values);
|
|
34
|
+
},
|
|
35
|
+
disclosure,
|
|
36
|
+
variant: fullVariant = "primary",
|
|
37
|
+
headline,
|
|
38
|
+
description,
|
|
39
|
+
callToAction,
|
|
40
|
+
validateEmail,
|
|
41
|
+
onValidate,
|
|
42
|
+
id
|
|
43
|
+
}) => {
|
|
44
|
+
const cachedEmailValidator = useCachedEmailValidator(validateEmail);
|
|
45
|
+
const schema = z.object({
|
|
46
|
+
first_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "First Name is required." }),
|
|
47
|
+
last_name: z.string().regex(/^[A-Za-z][^0-9_!¡?÷?¿/\\+=@#$%ˆ&*,.^(){}|~<>;:[\]]{1,}$/g).trim().min(1, { message: "Last Name is required." }),
|
|
48
|
+
email: z.string().email({ message: "Email is required." }).refine(cachedEmailValidator, { message: "Invalid email address." })
|
|
49
|
+
});
|
|
50
|
+
const gen_schema = schema.merge(SalesforceSchema).merge(honeyPotSchema).superRefine((data, ctx) => {
|
|
51
|
+
if (!isValidHoneyPot(data)) {
|
|
52
|
+
ctx.addIssue({
|
|
53
|
+
code: z.ZodIssueCode.custom,
|
|
54
|
+
message: "fields are not valid."
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
const methods = useForm({
|
|
59
|
+
resolver: zodResolver(gen_schema),
|
|
60
|
+
mode: "all",
|
|
61
|
+
defaultValues: {
|
|
62
|
+
email: ""
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
const {
|
|
66
|
+
handleSubmit,
|
|
67
|
+
register,
|
|
68
|
+
formState: { errors, isValid, isSubmitting }
|
|
69
|
+
} = methods;
|
|
70
|
+
const submitForm = async (data) => {
|
|
71
|
+
await onSubmit(data);
|
|
72
|
+
};
|
|
73
|
+
const variant = getVariant(fullVariant);
|
|
74
|
+
return /* @__PURE__ */ jsx("section", { id, className: clsx(formContainer({ variant })), children: /* @__PURE__ */ jsx("div", { className: clsx("containment"), children: /* @__PURE__ */ jsxs(FormProvider, { ...methods, children: [
|
|
75
|
+
icon && /* @__PURE__ */ jsx("div", { className: clsx("text_center", iconForm), children: ["primary", "secondary"].includes(variant) ? /* @__PURE__ */ jsx(SvgComponent, {}) : /* @__PURE__ */ jsx(SvgAxosX, {}) }),
|
|
76
|
+
/* @__PURE__ */ jsxs("div", { className: `${headerContainer} text_center`, children: [
|
|
77
|
+
/* @__PURE__ */ jsx("h2", { className: clsx("header_2", headerForm({ variant })), children: headline }),
|
|
78
|
+
description && /* @__PURE__ */ jsx(
|
|
79
|
+
"div",
|
|
80
|
+
{
|
|
81
|
+
className: `${form} ${descriptionField({ variant })} text_center`,
|
|
82
|
+
children: description
|
|
83
|
+
}
|
|
84
|
+
)
|
|
85
|
+
] }),
|
|
86
|
+
/* @__PURE__ */ jsxs(
|
|
87
|
+
"form",
|
|
88
|
+
{
|
|
89
|
+
className: form,
|
|
90
|
+
onSubmit: async (e) => {
|
|
91
|
+
onValidate && onValidate(e);
|
|
92
|
+
await handleSubmit(submitForm)(e);
|
|
93
|
+
e.preventDefault();
|
|
94
|
+
},
|
|
95
|
+
children: [
|
|
96
|
+
/* @__PURE__ */ jsxs("div", { className: clsx(formWrapper({ variant })), children: [
|
|
97
|
+
/* @__PURE__ */ jsx("div", { className: "", children: /* @__PURE__ */ jsx(
|
|
98
|
+
Input,
|
|
99
|
+
{
|
|
100
|
+
id: "first_name",
|
|
101
|
+
...register("first_name", { required: true }),
|
|
102
|
+
label: "First Name",
|
|
103
|
+
sizes: "medium",
|
|
104
|
+
placeholder: "First Name",
|
|
105
|
+
required: true,
|
|
106
|
+
error: !!errors.first_name,
|
|
107
|
+
helperText: errors.first_name?.message,
|
|
108
|
+
variant
|
|
109
|
+
}
|
|
110
|
+
) }),
|
|
111
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
112
|
+
Input,
|
|
113
|
+
{
|
|
114
|
+
id: "last_name",
|
|
115
|
+
...register("last_name", { required: true }),
|
|
116
|
+
label: "Last Name",
|
|
117
|
+
sizes: "medium",
|
|
118
|
+
placeholder: "Last Name",
|
|
119
|
+
required: true,
|
|
120
|
+
error: !!errors.last_name,
|
|
121
|
+
helperText: errors.last_name?.message,
|
|
122
|
+
variant
|
|
123
|
+
}
|
|
124
|
+
) }),
|
|
125
|
+
/* @__PURE__ */ jsx("div", { className: fullRowForm, children: /* @__PURE__ */ jsx(
|
|
126
|
+
Input,
|
|
127
|
+
{
|
|
128
|
+
id: "email",
|
|
129
|
+
...register("email", {
|
|
130
|
+
required: true,
|
|
131
|
+
validate: {
|
|
132
|
+
isValid: associatedEmail
|
|
133
|
+
}
|
|
134
|
+
}),
|
|
135
|
+
label: "Email",
|
|
136
|
+
sizes: "medium",
|
|
137
|
+
placeholder: "Email",
|
|
138
|
+
required: true,
|
|
139
|
+
error: !!errors.email,
|
|
140
|
+
helperText: errors.email?.message,
|
|
141
|
+
variant
|
|
142
|
+
}
|
|
143
|
+
) }),
|
|
144
|
+
/* @__PURE__ */ jsx(HoneyPot, { register, variant })
|
|
145
|
+
] }),
|
|
146
|
+
children,
|
|
147
|
+
/* @__PURE__ */ jsx("div", { className: disclosureForm({ variant }), children: disclosure }),
|
|
148
|
+
/* @__PURE__ */ jsx("div", { className: actions, children: /* @__PURE__ */ jsx(
|
|
149
|
+
Button,
|
|
150
|
+
{
|
|
151
|
+
color: getVariant(callToAction?.variant),
|
|
152
|
+
as: "button",
|
|
153
|
+
type: "submit",
|
|
154
|
+
disabled: !isValid || isSubmitting,
|
|
155
|
+
children: callToAction?.displayText
|
|
156
|
+
}
|
|
157
|
+
) })
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
)
|
|
161
|
+
] }) }) }, id);
|
|
162
|
+
};
|
|
163
|
+
export {
|
|
164
|
+
NameAndEmail
|
|
165
|
+
};
|