import { useState, useEffect } from "react"; import MiniButtonSetting from "@ui_kit/MiniButtonSetting"; import { useParams } from "react-router-dom"; import SettingIcon from "../../assets/icons/questionsPage/settingIcon"; import Clue from "../../assets/icons/questionsPage/clue"; import Branching from "../../assets/icons/questionsPage/branching"; import { Box, Typography, Tooltip, IconButton, useTheme, useMediaQuery, } from "@mui/material"; import { HideIcon } from "../../assets/icons/questionsPage/hideIcon"; import { CopyIcon } from "../../assets/icons/questionsPage/CopyIcon"; import { questionStore, resetSomeField, copyQuestion, removeQuestionForce, updateQuestionsList, removeQuestion, } from "@root/questions"; import { quizStore } from "@root/quizes"; import { DoubleTick } from "@icons/questionsPage/DoubleTick"; import { DoubleArrowRight } from "@icons/questionsPage/DoubleArrowRight"; import { VectorQuestions } from "@icons/questionsPage/VectorQuestions"; import { DeleteIcon } from "@icons/questionsPage/deleteIcon"; import type { SxProps } from "@mui/material"; import type { QuizQuestionBase } from "../../model/questionTypes/shared"; interface Props { switchState: string; SSHC: (data: string) => void; totalIndex: number; sx?: SxProps; } export default function ButtonsOptions({ SSHC, switchState, totalIndex, }: Props) { const quizId = Number(useParams().quizId); const { openedModalSettings, listQuestions } = questionStore(); const { listQuizes } = quizStore(); const [openedReallyChangingModal, setOpenedReallyChangingModal] = useState(false); const quize = listQuizes[quizId]; const question = listQuestions[quizId][totalIndex] as QuizQuestionBase; useEffect(() => { if (question.deleteTimeoutId) { clearTimeout(question.deleteTimeoutId); } }, [listQuestions]); const openedModal = () => { resetSomeField({ openedModalSettings: "open" }); }; const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const isMobile = useMediaQuery(theme.breakpoints.down(790)); const isWrappMiniButtonSetting = useMediaQuery(theme.breakpoints.down(920)); const buttonSetting: { icon: JSX.Element; title: string; value: string; myFunc?: any; }[] = [ { icon: ( ), title: "Настройки", value: "setting", }, { icon: ( ), title: "Подсказка", value: "help", }, { icon: ( ), title: "Ветвление", value: "branching", myFunc: openedModal, }, ]; return ( {buttonSetting.map(({ icon, title, value, myFunc }) => ( {value === "branching" ? ( Будет показан при условии Название Условие 1, Условие 2 Все условия обязательны } > { SSHC(value); myFunc(); }} sx={{ backgroundColor: switchState === value ? theme.palette.brightPurple.main : "transparent", color: switchState === value ? "#ffffff" : theme.palette.grey3.main, minWidth: isWrappMiniButtonSetting ? "30px" : "64px", height: "30px", "&:hover": { color: theme.palette.grey3.main, "& path": { stroke: theme.palette.grey3.main }, }, }} > {icon} {isWrappMiniButtonSetting ? null : title} ) : ( <> { SSHC(value); myFunc(); }} sx={{ backgroundColor: switchState === value ? theme.palette.brightPurple.main : "transparent", color: switchState === value ? "#ffffff" : theme.palette.grey3.main, minWidth: isWrappMiniButtonSetting ? "30px" : "64px", height: "30px", "&:hover": { color: theme.palette.grey3.main, "& path": { stroke: theme.palette.grey3.main }, }, }} > {icon} {isWrappMiniButtonSetting ? null : title} )} ))} <> setOpenedReallyChangingModal(true)} sx={{ minWidth: "30px", height: "30px", backgroundColor: "#FEDFD0", }} > setOpenedReallyChangingModal(true)} sx={{ minWidth: "30px", height: "30px", backgroundColor: "#FEDFD0", }} > setOpenedReallyChangingModal(true)} sx={{ minWidth: "30px", height: "30px", backgroundColor: "#FEDFD0", }} > copyQuestion(quizId, totalIndex)} > { const removedId = question.id; if (question.deleteTimeoutId) { clearTimeout(question.deleteTimeoutId); } removeQuestion(quizId, totalIndex); const newTimeoutId = window.setTimeout(() => { removeQuestionForce(quizId, removedId); }, 5000); updateQuestionsList(quizId, totalIndex, { ...question, deleteTimeoutId: newTimeoutId, }); }} > ); }