import { useMemo, useState } from 'react' import PzBusy from './PzBusy.jsx' import { t } from '../i18n/index.js' const EMPTY_FORM = { selfFirstName: '', selfLastName: '', selfBirthYear: '', parent1FirstName: '', parent1LastName: '', parent2FirstName: '', parent2LastName: '', } function toDateFromYear(yearText) { const year = Number.parseInt(yearText, 10) if (!Number.isFinite(year) || year < 1000 || year > 2999) { return null } return `${year.toString().padStart(4, '0')}-01-01` } const InitialTreeWizard = ({ loading, errorMessage, onSubmit, onSkip }) => { const [form, setForm] = useState(EMPTY_FORM) const canSubmit = useMemo(() => { return ( form.selfFirstName.trim().length > 0 && form.selfLastName.trim().length > 0 && form.parent1FirstName.trim().length > 0 && form.parent1LastName.trim().length > 0 && form.parent2FirstName.trim().length > 0 && form.parent2LastName.trim().length > 0 && !loading ) }, [form, loading]) const updateField = (key, value) => { setForm((current) => ({ ...current, [key]: value })) } const handleSubmit = async (event) => { event.preventDefault() if (!canSubmit) return await onSubmit({ self: { firstName: form.selfFirstName.trim(), lastName: form.selfLastName.trim(), birthDate: toDateFromYear(form.selfBirthYear.trim()), }, parent1: { firstName: form.parent1FirstName.trim(), lastName: form.parent1LastName.trim(), }, parent2: { firstName: form.parent2FirstName.trim(), lastName: form.parent2LastName.trim(), }, }) } return (
{t('Vous')}
updateField('selfFirstName', e.target.value)} required /> updateField('selfLastName', e.target.value)} required />
updateField('selfBirthYear', e.target.value)} />
{t('Parent 1')}
updateField('parent1FirstName', e.target.value)} required /> updateField('parent1LastName', e.target.value)} required />
{t('Parent 2')}
updateField('parent2FirstName', e.target.value)} required /> updateField('parent2LastName', e.target.value)} required />
{errorMessage &&
{errorMessage}
}
) } export default InitialTreeWizard