From ad5c6ee4f5e23851e483ee1df6c9a5d028470558 Mon Sep 17 00:00:00 2001 From: Ketan Sharma Date: Mon, 9 Sep 2024 14:58:06 +0530 Subject: [PATCH] [WEB-2201] fix: clear email button on login screen (#5546) * fixed the logic * made required css changes * replicated same for space component * fixed variable name * replicated for space * better variable name * improved the css * replicated for space --- .../components/account/auth-forms/email.tsx | 23 ++++++++++++------- .../components/account/auth-forms/email.tsx | 23 ++++++++++++------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/space/core/components/account/auth-forms/email.tsx b/space/core/components/account/auth-forms/email.tsx index 6721aedab..f0b88407a 100644 --- a/space/core/components/account/auth-forms/email.tsx +++ b/space/core/components/account/auth-forms/email.tsx @@ -1,6 +1,6 @@ "use client"; -import { FC, FormEvent, useMemo, useState } from "react"; +import { FC, FormEvent, useMemo, useRef, useState } from "react"; import { observer } from "mobx-react"; // icons import { CircleAlert, XCircle } from "lucide-react"; @@ -22,7 +22,6 @@ export const AuthEmailForm: FC = observer((props) => { // states const [isSubmitting, setIsSubmitting] = useState(false); const [email, setEmail] = useState(defaultEmail); - const [isFocused, setFocused] = useState(false); const emailError = useMemo( () => (email && !checkEmailValidity(email) ? { email: "Email is invalid" } : undefined), @@ -41,6 +40,9 @@ export const AuthEmailForm: FC = observer((props) => { const isButtonDisabled = email.length === 0 || Boolean(emailError?.email) || isSubmitting; + const [isFocused, setIsFocused] = useState(true) + const inputRef = useRef(null); + return (
@@ -52,6 +54,9 @@ export const AuthEmailForm: FC = observer((props) => { `relative flex items-center rounded-md bg-onboarding-background-200 border`, !isFocused && Boolean(emailError?.email) ? `border-red-500` : `border-onboarding-border-100` )} + tabIndex={-1} + onFocus={() => {setIsFocused(true)}} + onBlur={() => {setIsFocused(false)}} > = observer((props) => { onChange={(e) => setEmail(e.target.value)} placeholder="name@company.com" className={`disable-autofill-style h-[46px] w-full placeholder:text-onboarding-text-400 autofill:bg-red-500 border-0 focus:bg-none active:bg-transparent`} - onFocus={() => setFocused(true)} - onBlur={() => setFocused(false)} autoComplete="on" autoFocus + ref={inputRef} /> - {email.length > 0 && ( + {email.length > 0 && ( setEmail("")} + className="h-[46px] w-11 px-3 stroke-custom-text-400 hover:cursor-pointer text-xs" + onClick={() => { + setEmail(""); + inputRef.current?.focus(); + }} /> )}
@@ -85,4 +92,4 @@ export const AuthEmailForm: FC = observer((props) => { ); -}); +}); \ No newline at end of file diff --git a/web/core/components/account/auth-forms/email.tsx b/web/core/components/account/auth-forms/email.tsx index ab328a7e1..1e96ed3f2 100644 --- a/web/core/components/account/auth-forms/email.tsx +++ b/web/core/components/account/auth-forms/email.tsx @@ -1,6 +1,6 @@ "use client"; -import { FC, FormEvent, useMemo, useState } from "react"; +import { FC, FormEvent, useMemo, useRef, useState } from "react"; import { observer } from "mobx-react"; // icons import { CircleAlert, XCircle } from "lucide-react"; @@ -22,7 +22,6 @@ export const AuthEmailForm: FC = observer((props) => { // states const [isSubmitting, setIsSubmitting] = useState(false); const [email, setEmail] = useState(defaultEmail); - const [isFocused, setFocused] = useState(false); const emailError = useMemo( () => (email && !checkEmailValidity(email) ? { email: "Email is invalid" } : undefined), @@ -41,6 +40,9 @@ export const AuthEmailForm: FC = observer((props) => { const isButtonDisabled = email.length === 0 || Boolean(emailError?.email) || isSubmitting; + const [isFocused, setIsFocused] = useState(true) + const inputRef = useRef(null); + return (
@@ -52,6 +54,9 @@ export const AuthEmailForm: FC = observer((props) => { `relative flex items-center rounded-md bg-onboarding-background-200 border`, !isFocused && Boolean(emailError?.email) ? `border-red-500` : `border-onboarding-border-100` )} + tabIndex={-1} + onFocus={() => {setIsFocused(true)}} + onBlur={() => {setIsFocused(false)}} > = observer((props) => { onChange={(e) => setEmail(e.target.value)} placeholder="name@example.com" className={`disable-autofill-style h-[46px] w-full placeholder:text-onboarding-text-400 autofill:bg-red-500 border-0 focus:bg-none active:bg-transparent`} - onFocus={() => setFocused(true)} - onBlur={() => setFocused(false)} autoComplete="on" autoFocus + ref={inputRef} /> - {email.length > 0 && ( + {email.length > 0 && ( setEmail("")} + className="h-[46px] w-11 px-3 stroke-custom-text-400 hover:cursor-pointer text-xs" + onClick={() => { + setEmail(""); + inputRef.current?.focus(); + }} /> )}
@@ -85,4 +92,4 @@ export const AuthEmailForm: FC = observer((props) => { ); -}); +}); \ No newline at end of file