import {useState, useEffect, useRef, KeyboardEvent} from 'react'; import {Label, Modal, ModalBody, Form} from 'reactstrap'; import {faPlus, faArrowLeft} from '@fortawesome/free-solid-svg-icons'; import {useTranslation} from 'next-i18next'; import {ElectionTypes, useElection} from '@services/ElectionContext'; import Button from '@components/Button'; import {AppTypes, useAppContext} from '@services/context'; const TitleModal = ({isOpen, toggle}) => { const {t} = useTranslation(); const [election, dispatch] = useElection(); const [_, dispatchApp] = useAppContext(); const [name, setName] = useState(election.name); const disabled = name === ''; const inputRef = useRef(null); useEffect(() => { setName(election.name); }, [election.name]); useEffect(() => { // When isOpen got active, we put the focus on the input field setTimeout(() => { if (isOpen && inputRef && inputRef.current) { inputRef.current.focus(); } }, 100); }, [isOpen]); const save = (e) => { e.preventDefault(); if (name === '') { dispatchApp({ type: AppTypes.TOAST_ADD, status: 'error', message: t('error.empty-name'), }); return; } dispatch({ type: ElectionTypes.SET, field: 'name', value: name, }); toggle(); }; // check if key down is enter const handleKeyDown = (e: KeyboardEvent) => { if (e.key == 'Enter') { save(e); } }; const handleName = (e) => { setName(e.target.value); }; return (

{t('admin.set-title')}

); }; export default TitleModal;