import { Box, FormControl, FormLabel, Checkbox, FormControlLabel, useTheme, useMediaQuery } from "@mui/material"; import CheckboxIcon from "@icons/Checkbox"; import AgeInputWithSelect from "./AgeInputWithSelect"; import { useState, useEffect } from "react"; import CreateButtonWithTooltip from "./CreateButtonWithTooltip"; interface GenderAndAgeSelectorProps { gender: string; age: string; ageError: boolean; onGenderChange: (gender: string) => void; onAgeChange: (age: string) => void; onAgeErrorChange: (error: boolean) => void; onStartCreate: () => void; } export default function GenderAndAgeSelector({ gender, age, ageError, onGenderChange, onAgeChange, onAgeErrorChange, onStartCreate }: GenderAndAgeSelectorProps) { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down(845)); const [maleChecked, setMaleChecked] = useState(false); const [femaleChecked, setFemaleChecked] = useState(false); // Синхронизируем состояние чекбоксов с пропсом gender useEffect(() => { if (gender === '1') { setMaleChecked(true); setFemaleChecked(false); } else if (gender === '0') { setMaleChecked(false); setFemaleChecked(true); } else if (gender === '2') { setMaleChecked(true); setFemaleChecked(true); } else { setMaleChecked(false); setFemaleChecked(false); } }, [gender]); const handleGenderChange = (type: 'male' | 'female', checked: boolean) => { if (type === 'male') { setMaleChecked(checked); } else { setFemaleChecked(checked); } // Обновляем значение gender в родительском компоненте if (type === 'male' && checked && !femaleChecked) { onGenderChange('1'); // Только мужской } else if (type === 'female' && checked && !maleChecked) { onGenderChange('0'); // Только женский } else if (type === 'male' && checked && femaleChecked) { onGenderChange('2'); // Оба пола } else if (type === 'female' && checked && maleChecked) { onGenderChange('2'); // Оба пола } else if (type === 'male' && !checked && femaleChecked) { onGenderChange('0'); // Только женский } else if (type === 'female' && !checked && maleChecked) { onGenderChange('1'); // Только мужской } else { onGenderChange(''); // Ничего не выбрано } }; return ( Пол } checkedIcon={} checked={maleChecked} onChange={(e) => handleGenderChange('male', e.target.checked)} /> } label="М" /> } checkedIcon={} checked={femaleChecked} onChange={(e) => handleGenderChange('female', e.target.checked)} /> } label="Ж" /> Возраст ); }