import { useParams } from "react-router-dom"; import { Box, ButtonBase, Slider, 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 InfoIcon from "../../../assets/icons/InfoIcon"; import TropfyIcon from "../../../assets/icons/questionsPage/tropfyIcon"; import FlagIcon from "../../../assets/icons/questionsPage/FlagIcon"; import HeartIcon from "../../../assets/icons/questionsPage/heartIcon"; import LikeIcon from "../../../assets/icons/questionsPage/likeIcon"; import LightbulbIcon from "../../../assets/icons/questionsPage/lightbulbIcon"; import HashtagIcon from "../../../assets/icons/questionsPage/hashtagIcon"; import StarIconMini from "../../../assets/icons/questionsPage/StarIconMini"; import type { ButtonRatingFrom } from "./RatingOptions"; import type { QuizQuestionNumber } from "../../../model/questionTypes/number"; type SettingSliderProps = { totalIndex: number; }; export default function SettingSlider({ totalIndex }: SettingSliderProps) { const quizId = Number(useParams().quizId); const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down(790)); const isWrappColumn = useMediaQuery(theme.breakpoints.down(980)); const { listQuestions } = questionStore(); const question = listQuestions[quizId][totalIndex] as QuizQuestionNumber; const debounced = useDebouncedCallback((value) => { updateQuestionsList(quizId, totalIndex, { content: { ...question.content, innerName: value }, }); }, 1000); const buttonRatingForm: ButtonRatingFrom[] = [ { name: "star", icon: }, { name: "trophie", icon: }, { name: "flag", icon: }, { name: "heart", icon: }, { name: "like", icon: }, { name: "bubble", icon: , }, { name: "hashtag", icon: }, ]; return ( Настройки рейтинга Форма {buttonRatingForm.map(({ name, icon }, index) => ( { updateQuestionsList(quizId, totalIndex, { content: { ...question.content, form: name }, }); }} sx={{ backgroundColor: question.content.form === name ? theme.palette.brightPurple.main : "transparent", color: question.content.form === name ? "#ffffff" : theme.palette.grey3.main, width: "40px", height: "40px", borderRadius: "4px", }} > {icon} ))} Количество { updateQuestionsList(quizId, totalIndex, { content: { ...question.content, steps: Number(value) || 1 }, }); }} /> Настройки вопросов { updateQuestionsList(quizId, totalIndex, { required: !e.target.checked, }); }} /> { updateQuestionsList(quizId, totalIndex, { content: { ...question.content, innerNameCheck: target.checked, innerName: target.checked ? question.content.innerName : "", }, }); }} /> {question.content.innerNameCheck && ( debounced(target.value)} /> )} ); }