diff --git a/src/pages/Questions/OptionsAndPicture/OptionsAndPicture.tsx b/src/pages/Questions/OptionsAndPicture/OptionsAndPicture.tsx index 2ef3ffc9..aea79644 100644 --- a/src/pages/Questions/OptionsAndPicture/OptionsAndPicture.tsx +++ b/src/pages/Questions/OptionsAndPicture/OptionsAndPicture.tsx @@ -1,18 +1,25 @@ +import { useState } from "react"; import { Box, Link, Typography, - ButtonBase, useTheme, useMediaQuery, InputAdornment, IconButton, + Button, Popover, TextareaAutosize, TextField, } from "@mui/material"; import { useParams } from "react-router-dom"; -import AddImage from "../../../assets/icons/questionsPage/addImage"; + +import { AnswerDraggableList } from "../AnswerDraggableList"; +import { CropModal } from "@ui_kit/Modal/CropModal"; +import { UploadImageModal } from "../UploadImage/UploadImageModal"; + +import AddImage from "@icons/questionsPage/addImage"; +import Image from "@icons/questionsPage/image"; import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon"; import ButtonsOptionsAndPict from "../ButtonsOptionsAndPict"; import SwitchOptionsAndPict from "./switchOptionsAndPict"; @@ -22,233 +29,344 @@ import { ImageAddIcons } from "@icons/ImageAddIcons"; import { PointsIcon } from "@icons/questionsPage/PointsIcon"; import { MessageIcon } from "@icons/messagIcon"; import { DeleteIcon } from "@icons/questionsPage/deleteIcon"; +import PlusImage from "@icons/questionsPage/plus"; interface Props { totalIndex: number; } export default function OptionsAndPicture({ totalIndex }: Props) { - const [switchState, setSwitchState] = React.useState("setting"); - const { listQuestions } = questionStore(); - const quizId = Number(useParams().quizId); + const [open, setOpen] = useState(false); + const [opened, setOpened] = useState(false); + const [switchState, setSwitchState] = useState("setting"); + const [currentIndex, setCurrentIndex] = useState(0); const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const isMobile = useMediaQuery(theme.breakpoints.down(790)); + const quizId = Number(useParams().quizId); + const { listQuestions } = questionStore(); const SSHC = (data: string) => { setSwitchState(data); }; + const uploadImage = (files: FileList | null) => { + if (files?.length) { + const [file] = Array.from(files); + + const clonContent = { ...listQuestions[quizId][totalIndex].content }; + clonContent.variants[currentIndex].image = URL.createObjectURL(file); + updateQuestionsList(quizId, totalIndex, { content: clonContent }); + + setOpen(false); + setOpened(true); + } + }; + + const addNewAnswer = () => { + const answerNew = + listQuestions[quizId][totalIndex].content.variants.slice(); + answerNew.push({ answer: "", hints: "", emoji: "", image: "" }); + + updateQuestionsList(quizId, totalIndex, { + content: { + ...listQuestions[quizId][totalIndex].content, + variants: answerNew, + }, + }); + }; + return ( <> - - {listQuestions[quizId][totalIndex].content.variants.map((_, index) => ( - - { - if (target.files?.length) { - const clonContent = listQuestions[quizId][totalIndex].content; - - clonContent.variants[index].answer = URL.createObjectURL(target.files[0]); - - updateQuestionsList(quizId, totalIndex, { - content: clonContent, - }); - } - }} - hidden - accept="image/*" - multiple - type="file" - /> - + ( + <> + {!isMobile && ( { + setCurrentIndex(index); + setOpen(true); }} > - - - - + + + + + + ) : ( + + )} + + )} + + )} + additionalMobile={(variant, index) => ( + <> + {isMobile && ( + { + setCurrentIndex(index); + setOpen(true); + }} + sx={{ + overflow: "hidden", + display: "flex", + alignItems: "center", + m: "8px", + position: "relative", + borderRadius: "3px", + }} + > + + {variant.image ? ( + + + + ) : ( + + )} + + + - + - - Добавьте ответ - - - - ))} - - - - - - {!isMobile && ( + )} + + )} + /> + setOpen(false)} + imgHC={uploadImage} + /> + setOpened(false)} + picture={ + listQuestions[quizId][totalIndex].content.variants[currentIndex] + .image + } + /> + + + + + + {!isMobile && ( + - - - - - + - + - )} - - ), - endAdornment: ( - - - - - - - - - - - - ), - }} - sx={{ - "& .MuiInputBase-root": { - padding: "13.5px", - borderRadius: "10px", - background: "#ffffff", - height: "48px", - }, - "& .MuiOutlinedInput-notchedOutline": { - border: "none", - }, - }} - inputProps={{ - sx: { fontSize: "18px", lineHeight: "21px", py: 0 }, - }} - /> + + + + + + )} + + ), + endAdornment: ( + + + + + + + + + + + + ), + }} + sx={{ + "& .MuiInputBase-root": { + padding: "13.5px", + borderRadius: "10px", + background: "#ffffff", + height: "48px", + }, + "& .MuiOutlinedInput-notchedOutline": { + border: "none", + }, + }} + inputProps={{ + sx: { fontSize: "18px", lineHeight: "21px", py: 0 }, + }} + /> - {isMobile && ( + {isMobile && ( + + + - - - - + - + + - )} - + + )} или нажмите Enter - + )}