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)}
/>
)}
);
}