import { useParams } from "react-router-dom"; import { Box, FormControl, FormControlLabel, Radio, RadioGroup, Typography, Tooltip, useMediaQuery, useTheme, } from "@mui/material"; import { useDebouncedCallback } from "use-debounce"; import CustomCheckbox from "@ui_kit/CustomCheckbox"; import CustomTextField from "@ui_kit/CustomTextField"; import { questionStore, updateQuestionsList } from "@root/questions"; import CheckedIcon from "@ui_kit/RadioCheck"; import CheckIcon from "@ui_kit/RadioIcon"; import InfoIcon from "../../../assets/icons/InfoIcon"; type SettingTextFieldProps = { totalIndex: number; }; type Answer = { name: string; value: "single" | "multi" | "number"; }; const ANSWER_TYPES: Answer[] = [ { name: "Однострочное", value: "single" }, { name: "Многострочное", value: "multi" }, { name: "Только числа", value: "number" }, ]; export default function SettingTextField({ totalIndex, }: SettingTextFieldProps) { const { listQuestions } = questionStore(); const quizId = Number(useParams().quizId); const theme = useTheme(); const isWrapperColumn = useMediaQuery(theme.breakpoints.down(980)); const isMobile = useMediaQuery(theme.breakpoints.down(790)); const debounced = useDebouncedCallback((value) => { let clonContent = listQuestions[quizId][totalIndex].content; clonContent.innerName = value; updateQuestionsList(quizId, totalIndex, { content: clonContent }); }, 1000); return ( Настройки ответов listQuestions[quizId][totalIndex].content[value] )} onChange={({ target }: React.ChangeEvent) => { const clonContent = { ...listQuestions[quizId][totalIndex].content, single: false, multi: false, number: false, [ANSWER_TYPES[Number(target.value)].value]: true, }; updateQuestionsList(quizId, totalIndex, { content: clonContent }); }} > {ANSWER_TYPES.map(({ name }, index) => ( } checkedIcon={} /> } label={name} /> ))} Настройки вопросов { const clonContent = listQuestions[quizId][totalIndex].content; clonContent.autofill = target.checked; updateQuestionsList(quizId, totalIndex, { content: clonContent }); }} /> { updateQuestionsList(quizId, totalIndex, { required: !e.target.checked, }); }} /> { let clonContent = listQuestions[quizId][totalIndex].content; clonContent.innerNameCheck = e.target.checked; if (!e.target.checked) { clonContent.innerName = ""; } updateQuestionsList(quizId, totalIndex, { content: clonContent }); }} /> {listQuestions[quizId][totalIndex].content.innerNameCheck && ( debounced(target.value)} /> )} ); }