Skip to content

Commit 49a44fd

Browse files
Merge pull request #122 from Web3Auth/fix/add-disabled-button
Disable email submit button when email invalid
2 parents 2fa4a01 + 82eb378 commit 49a44fd

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

packages/ui/css/web3auth.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,11 @@
369369
background: #6f717a;
370370
}
371371

372+
#w3a-modal button.w3a-button:disabled {
373+
background: #27282D;
374+
color: #6F717A;
375+
}
376+
372377
#w3a-modal button.w3a-button:focus-visible {
373378
outline: 1px solid #daf0ff;
374379
outline-offset: -1px;
@@ -815,6 +820,10 @@
815820
background-color: #ffffff;
816821
border: 1px solid #f3f3f4;
817822
box-shadow: none;
823+
color: #595857;
824+
}
825+
826+
#w3a-modal.w3a-modal--light button.w3a-button:disabled {
818827
color: #b7b8bd;
819828
}
820829

packages/ui/src/components/SocialLoginEmail.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
1-
import { FormEvent } from "react";
1+
import { ChangeEvent, FormEvent, useState } from "react";
22

33
interface SocialLoginEmailProps {
44
adapter: string;
55
handleSocialLoginClick: (params: { adapter: string; loginParams: { loginProvider: string; login_hint?: string } }) => void;
66
}
77
export default function SocialLoginEmail(props: SocialLoginEmailProps) {
88
const { handleSocialLoginClick, adapter } = props;
9+
const [isValidEmail, setIsValidEmail] = useState(false);
10+
911
const handleEmailSubmit = (e: FormEvent<HTMLFormElement>) => {
1012
e.preventDefault();
1113
const email = ((e.target as HTMLFormElement)[0] as HTMLInputElement).value;
1214
if (email) handleSocialLoginClick({ adapter, loginParams: { loginProvider: "email_passwordless", login_hint: email } });
1315
};
16+
const handleEmailChange = (e: ChangeEvent<HTMLInputElement>) => {
17+
const email = e.target.value;
18+
const emailValid = email.match(/^([\w.%+-]+)@([\w-]+\.)+([\w]{2,})$/i);
19+
setIsValidEmail(!!emailValid);
20+
};
1421
return (
1522
<div className="w3ajs-email-passwordless w3a-group w3a-group--email">
1623
<div className="w3a-group__title">EMAIL</div>
1724
<form className="w3ajs-email-passwordless-form" onSubmit={(e) => handleEmailSubmit(e)}>
18-
<input className="w3a-text-field" type="email" name="email" required placeholder="Email" />
19-
<button className="w3a-button" type="submit">
25+
<input className="w3a-text-field" type="email" name="email" required placeholder="Email" onChange={(e) => handleEmailChange(e)} />
26+
<button disabled={!isValidEmail} className="w3a-button" type="submit">
2027
Continue with Email
2128
</button>
2229
</form>

0 commit comments

Comments
 (0)