import { SVGAttributes, useLayoutEffect, useRef, useState } from 'react' import { Email, domains } from '../../../src' import { OnSelectData } from '../../../src/types' import { Section } from '../../Section' import './styles.css' enum Valididty { IDLE, VALID, INVALID, } function testEmail(value: string) { return /^\w+@[a-zA-Z.,]+?\.[a-zA-Z]{2,3}$/.test(value) } const classes = { wrapper: 'eventsWrapper', dropdown: 'eventsDropdown', suggestion: 'eventsSuggestion', domain: 'eventsDomain', } const baseList = ['gmail.com', 'yahoo.com', 'hotmail.com', 'aol.com', 'msn.com', 'proton.me'] export function EventsChildren() { const inputRef = useRef(null) const [email, setEmail] = useState('sadjhgghjsadghjds') const [validity, setValidity] = useState(Valididty.IDLE) useLayoutEffect(() => { setValidity(getValidity(email)) // eslint-disable-next-line react-hooks/exhaustive-deps }, []) function handleFocus() { setValidity(Valididty.IDLE) } function handleBlur() { if (email.length > 0) setValidity(getValidity(email)) } function handleSelect({ value }: OnSelectData) { setValidity(getValidity(value)) } function getValidity(value: string) { return testEmail(value) ? Valididty.VALID : Valididty.INVALID } const isValid = validity === Valididty.VALID const isInvalid = validity === Valididty.INVALID function getValidityClasses() { if (isValid) return 'validInput' if (isInvalid) return 'invalidInput' return '' } return (
{isValid && } {isInvalid && }
) } const ValidIcon = () => ( ) const invalidIconAttrs: SVGAttributes = { transform: 'translate(5.659 5.659)', fill: 'none', stroke: '#ff7272', strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: '3', } const InvalidIcon = () => ( )