import { useEffect, useState } from "react"; import { Box, FormGroup, RadioGroup, Typography, useTheme, } from "@mui/material"; import { VariantItem } from "./VariantItem"; import { useQuizViewStore } from "@stores/quizView"; import { useRootContainerSize } from "@contexts/RootContainerWidthContext"; import type { QuizQuestionVariant } from "@model/questionTypes/variant"; import moment from "moment"; type VariantProps = { currentQuestion: QuizQuestionVariant; }; export const Variant = ({ currentQuestion }: VariantProps) => { const [isSending, setIsSending] = useState(false); const answers = useQuizViewStore((state) => state.answers); const { ownVariants, updateOwnVariant } = useQuizViewStore((state) => state); const theme = useTheme(); const isMobile = useRootContainerSize() < 650; const { answer } = answers.find(({ questionId }) => questionId === currentQuestion.id) ?? {}; const ownVariant = ownVariants.find( (variant) => variant.id === currentQuestion.id ); const Group = currentQuestion.content.multi ? FormGroup : RadioGroup; useEffect(() => { if (!ownVariant) { updateOwnVariant(currentQuestion.id, ""); } }, []); if (moment.isMoment(answer)) throw new Error("Answer is Moment in Variant question"); return ( {currentQuestion.title} answer === id )} sx={{ display: "flex", flexWrap: "wrap", flexDirection: "row", justifyContent: "space-between", flexBasis: "100%", marginTop: "20px", width: isMobile ? "100%" : undefined, }} > {currentQuestion.content.variants.map((variant, index) => ( ))} {currentQuestion.content.own && ownVariant && ( )} {currentQuestion.content.back && currentQuestion.content.back !== " " && ( )} ); };