import Pristine from 'pristinejs' import { useEffect, useState } from 'react' import { UserIcon, EyeIcon, EyeSlashIcon, KeyIcon } from '@heroicons/react/24/solid' import functions from 'v-functions' import useI18n from '@/hooks/useI18n' import presets from '@/utils/globalPresets' import useHasMounted from '@/hooks/useHasMounted' let validateLogin = null const FormLogin = ({ onLogin }) => { const i18n = useI18n() const hasMounted = useHasMounted() const [viewPassword, setViewPassword] = useState(false) const [isInputValid, setIsInputValid] = useState(false) const validate = (event) => { if (event) { event.preventDefault() event.stopPropagation() } if (validateLogin && validateLogin !== null) { const resulValidate = validateLogin.validate() setIsInputValid(resulValidate) } } const doLogin = (event) => { if (event) { event.preventDefault() event.stopPropagation() } if (isInputValid === true) { const emailLogin = document.getElementById('usuario') const passwordLogin = document.getElementById('clave') const datos = { email: functions.toUpperCaseAndTrim(emailLogin.value), password: functions.trim(passwordLogin.value) } setIsInputValid(false) // para prevenir doble click onLogin(datos) } } // when page is mounted useEffect(() => { if (hasMounted) { const helem = document.getElementById('frmLogin') validateLogin = new Pristine(helem, presets.pristine, false) const helemUsuario = document.getElementById('usuario') helemUsuario.focus() } }, [hasMounted]) useEffect(() => { const handleKeyDown = (event) => { if (event.key === 'Enter') { validate(event) if (isInputValid === true) { doLogin(event) event.preventDefault() event.stopPropagation() } } } document.addEventListener('keydown', handleKeyDown) return () => { document.removeEventListener('keydown', handleKeyDown) } }) return (
) } export default FormLogin