import React, { useState } from "react"; const MultiEmailInvite: React.FC = () => { const [emails, setEmails] = useState([]); const [inputValue, setInputValue] = useState(""); const handleAddEmail = () => { const trimmedEmail = inputValue.trim(); // Validate email if (!trimmedEmail || !validateEmail(trimmedEmail)) { alert("Please enter a valid email address."); return; } // Check for duplicates if (emails.includes(trimmedEmail)) { alert("This email has already been added."); return; } // Add email to the list setEmails([...emails, trimmedEmail]); setInputValue(""); // Clear the input field after adding }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter" || e.key === ",") { e.preventDefault(); handleAddEmail(); } }; const handleRemoveEmail = (emailToRemove: string) => { setEmails(emails.filter((email) => email !== emailToRemove)); }; const validateEmail = (email: string) => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); }; const [inputFocus, setInputFocus] = useState(false); return (
{emails.map((email, index) => (
{email} handleRemoveEmail(email)}>×
))} setInputValue(e.target.value)} onFocus={() => setInputFocus(true)} onBlur={() => setInputFocus(false)} onKeyDown={handleKeyDown} placeholder="Enter email and press Enter or comma" />
Invite
); }; export default MultiEmailInvite;