diff --git a/packages/create-invoice-form/src/lib/invoice/form.svelte b/packages/create-invoice-form/src/lib/invoice/form.svelte index 3762f3c1..f58c0686 100644 --- a/packages/create-invoice-form/src/lib/invoice/form.svelte +++ b/packages/create-invoice-form/src/lib/invoice/form.svelte @@ -26,8 +26,17 @@ export let handleNetworkChange: (chainId: string) => void; export let networks; export let defaultCurrencies: any = []; - export let payeeAddressError = false; - export let clientAddressError = false; + + let validationErrors = { + payeeAddress: false, + clientAddress: false, + sellerInfo: { + email: false, + }, + buyerInfo: { + email: false, + }, + }; let creatorId = ""; @@ -35,12 +44,17 @@ creatorId = formData.creatorId; } + const validateEmail = (email: string, type: "sellerInfo" | "buyerInfo") => { + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + validationErrors[`${type}`].email = !emailRegex.test(email); + }; + const checkPayeeAddress = () => { - payeeAddressError = !checkAddress(formData.payeeAddress); + validationErrors.payeeAddress = !checkAddress(formData.payeeAddress); }; const checkClientAddress = () => { - clientAddressError = !checkAddress(formData.payerAddress); + validationErrors.clientAddress = !checkAddress(formData.payerAddress); }; const calculateInputWidth = (value: string) => { @@ -177,7 +191,13 @@ type="email" value={formData.sellerInfo?.email} placeholder="Email" - handleInput={handleAdditionalInfo} + handleInput={(e) => { + handleAdditionalInfo(e); + }} + onBlur={(e) => validateEmail(e?.target?.value, "sellerInfo")} + error={validationErrors.sellerInfo.email + ? "Please enter a valid email" + : ""} /> - {#if clientAddressError} -
Please enter a valid Ethereum address
- {/if}Please enter a valid Ethereum address
- {/if}