Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WEB-2201] fix: clear email button on login screen #5546

Merged
merged 9 commits into from
Sep 9, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 22 additions & 13 deletions space/core/components/account/auth-forms/email.tsx
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -22,7 +22,6 @@ export const AuthEmailForm: FC<TAuthEmailForm> = 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),
Expand All @@ -41,6 +40,9 @@ export const AuthEmailForm: FC<TAuthEmailForm> = observer((props) => {

const isButtonDisabled = email.length === 0 || Boolean(emailError?.email) || isSubmitting;

const [isSel, setIsSel] = useState(true)
const inputRef = useRef<HTMLInputElement>(null);

return (
<form onSubmit={handleFormSubmit} className="mt-5 space-y-4">
<div className="space-y-1">
Expand All @@ -50,8 +52,11 @@ export const AuthEmailForm: FC<TAuthEmailForm> = observer((props) => {
<div
className={cn(
`relative flex items-center rounded-md bg-onboarding-background-200 border`,
!isFocused && Boolean(emailError?.email) ? `border-red-500` : `border-onboarding-border-100`
!isSel && Boolean(emailError?.email) ? `border-red-500` : `border-onboarding-border-100`
)}
tabIndex={-1}
onFocus={() => {setIsSel(true)}}
onBlur={() => {setIsSel(false)}}
>
<Input
id="email"
Expand All @@ -61,19 +66,23 @@ export const AuthEmailForm: FC<TAuthEmailForm> = 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 && (
<XCircle
className="absolute right-3 h-5 w-5 stroke-custom-text-400 hover:cursor-pointer"
onClick={() => setEmail("")}
/>
)}
{email.length > 0 && (
<button className="h-[46px] items-center content-center px-3"
onClick={() => {
setEmail("")
inputRef.current?.focus()
}}>
<XCircle
className="h-5 w-5 stroke-custom-text-400 hover:cursor-pointer text-xs"
/>
</button>
)}
</div>
{emailError?.email && !isFocused && (
{emailError?.email && !isSel && (
<p className="flex items-center gap-1 text-xs text-red-600 px-0.5">
<CircleAlert height={12} width={12} />
{emailError.email}
Expand All @@ -85,4 +94,4 @@ export const AuthEmailForm: FC<TAuthEmailForm> = observer((props) => {
</Button>
</form>
);
});
});
35 changes: 22 additions & 13 deletions web/core/components/account/auth-forms/email.tsx
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -22,7 +22,6 @@ export const AuthEmailForm: FC<TAuthEmailForm> = 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),
Expand All @@ -41,6 +40,9 @@ export const AuthEmailForm: FC<TAuthEmailForm> = observer((props) => {

const isButtonDisabled = email.length === 0 || Boolean(emailError?.email) || isSubmitting;

const [isSel, setIsSel] = useState(true)
const inputRef = useRef<HTMLInputElement>(null);

return (
<form onSubmit={handleFormSubmit} className="mt-5 space-y-4">
<div className="space-y-1">
Expand All @@ -50,8 +52,11 @@ export const AuthEmailForm: FC<TAuthEmailForm> = observer((props) => {
<div
className={cn(
`relative flex items-center rounded-md bg-onboarding-background-200 border`,
!isFocused && Boolean(emailError?.email) ? `border-red-500` : `border-onboarding-border-100`
!isSel && Boolean(emailError?.email) ? `border-red-500` : `border-onboarding-border-100`
)}
tabIndex={-1}
onFocus={() => {setIsSel(true)}}
onBlur={() => {setIsSel(false)}}
>
<Input
id="email"
Expand All @@ -61,19 +66,23 @@ export const AuthEmailForm: FC<TAuthEmailForm> = 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 && (
<XCircle
className="absolute right-3 h-5 w-5 stroke-custom-text-400 hover:cursor-pointer"
onClick={() => setEmail("")}
/>
)}
{email.length > 0 && (
<button className="h-[46px] items-center content-center px-3"
onClick={() => {
setEmail("")
inputRef.current?.focus()
}}>
<XCircle
className="h-5 w-5 stroke-custom-text-400 hover:cursor-pointer text-xs"
/>
</button>
)}
</div>
{emailError?.email && !isFocused && (
{emailError?.email && !isSel && (
<p className="flex items-center gap-1 text-xs text-red-600 px-0.5">
<CircleAlert height={12} width={12} />
{emailError.email}
Expand All @@ -85,4 +94,4 @@ export const AuthEmailForm: FC<TAuthEmailForm> = observer((props) => {
</Button>
</form>
);
});
});
Loading