import { QuizQuestionRating } from "@model/questionTypes/rating";
import { Box, ButtonBase, Slider, Tooltip, Typography, useMediaQuery, useTheme } from "@mui/material";
import { setQuestionInnerName, updateQuestionWithFnOptimistic } from "@root/questions/actions";
import CustomCheckbox from "@ui_kit/CustomCheckbox";
import CustomTextField from "@ui_kit/CustomTextField";
import { useDebouncedCallback } from "use-debounce";
import InfoIcon from "../../../assets/icons/InfoIcon";
import FlagIcon from "../../../assets/icons/questionsPage/FlagIcon";
import StarIconMini from "../../../assets/icons/questionsPage/StarIconMini";
import HashtagIcon from "../../../assets/icons/questionsPage/hashtagIcon";
import HeartIcon from "../../../assets/icons/questionsPage/heartIcon";
import LightbulbIcon from "../../../assets/icons/questionsPage/lightbulbIcon";
import LikeIcon from "../../../assets/icons/questionsPage/likeIcon";
import TropfyIcon from "../../../assets/icons/questionsPage/tropfyIcon";
import type { ButtonRatingFrom } from "./RatingOptions";
type SettingSliderProps = {
question: QuizQuestionRating;
};
export default function SettingSlider({ question }: SettingSliderProps) {
const theme = useTheme();
const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
const isMobile = useMediaQuery(theme.breakpoints.down(790));
const isWrappColumn = useMediaQuery(theme.breakpoints.down(980));
const setInnerName = useDebouncedCallback((value) => {
setQuestionInnerName(question.id, 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) => (
{
updateQuestionWithFnOptimistic(question.id, question => {
if (question.type !== "rating") return;
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}
))}
Количество
{
updateQuestionWithFnOptimistic(question.id, question => {
if (question.type !== "rating") return;
question.content.steps = Number(value) || 1;
});
}}
/>
Настройки вопросов
{
updateQuestionWithFnOptimistic(question.id, question => {
if (question.type !== "rating") return;
question.required = !e.target.checked;
});
}}
/>
{
updateQuestionWithFnOptimistic(question.id, question => {
if (question.type !== "rating") return;
question.content.innerNameCheck = target.checked;
question.content.innerName = target.checked ? question.content.innerName : "";
});
}}
/>
{question.content.innerNameCheck && (
setInnerName(target.value)}
/>
)}
);
}