import React, { useState, useContext } from "react"; import { useNavigate, useLocation } from 'react-router-dom'; import classes from "../assets/styles/newForm.module.scss"; import MyButton from "../components/MyButton.jsx"; import AnswerModal from "../components/AnswerModal.jsx"; import PreviewModal from "../components/PreviewModal.jsx" import { FormsData, TypeAnswerData } from "../context"; const NewForm = () => { const navigate = useNavigate(); const location = useLocation(); const [dragElem, setDragElem] = useState(null); const [dropElem, setDropElem] = useState(null); const {forms, setForms} = useContext(FormsData); const {listTypeAnswer, setListTypeAnswer} = useContext(TypeAnswerData); const nextID = (list) => { return list.length ? list.at(-1).id + 1 : 1 }; const [question, setQuestion] = useState(""); const [comment, setComment] = useState(""); const [datetime, setDatetime] = useState(""); const [mandatory, setMandatory] = useState(false); const [optionAnswer, setOptionAnswer] = useState([]); const [file, setFile] = useState([]); const [currentTypeAnswer, setCurrentTypeAnswer] = useState(""); const [currentOptionAnswer, setCurrentOptionAnswer] = useState(""); const [newForm, setNewForm] = useState(location.state ? location.state.data : []); const [stateModal, setStateModal] = useState(false) function removeAnswerByForm(id) { setNewForm([...newForm.filter(item => item.id !== id)]); } function cleanStates() { setStateModal(false) setQuestion(""); setComment(""); setDatetime(""); setOptionAnswer([]) setFile([]); setCurrentTypeAnswer(""); setCurrentOptionAnswer("") setMandatory(false); } function addOptionAnswer(text) { setOptionAnswer([...optionAnswer, { id: nextID(optionAnswer), text: currentOptionAnswer }]); setCurrentOptionAnswer(""); } function editAnswerByForm(id) { const obj = newForm.find(item => item.id === id); setQuestion(obj.question); setComment(obj.comment); setDatetime(obj.datetime); setFile(obj.file); setCurrentTypeAnswer(obj.typeAnswer); setOptionAnswer(obj.optionAnswer); setMandatory(obj.mandatory); setStateModal(id); } function updateAnswerByForm() { setNewForm(newForm.map(item => { if (item.id === stateModal) { item.question = question; item.comment = comment; item.datetime = datetime; item.file = file; item.mandatory = mandatory; item.optionAnswer = optionAnswer; item.typeAnswer = currentTypeAnswer; } return item })) cleanStates() } function saveStates() { setNewForm([...newForm, { id: nextID(newForm), question: question, typeAnswer: currentTypeAnswer, comment: comment, datetime: datetime, mandatory: mandatory, optionAnswer: optionAnswer, file: file }]); cleanStates(); } function updateFormByForms() { setForms( forms.map(item => { if (item.id === location.state.id) { item.title = 'Новая форма', item.answers = 'Без изменений', item.update = '01/01/24', item.listAnswer = newForm } return item }) ) cleanStates(); navigate("/forms"); } function saveForm() { setForms( [...forms, { id: nextID(forms), title: 'Новая форма', answers: 'Без изменений', update: '01/01/24', listAnswer: newForm }] ); cleanStates(); navigate("/forms"); } return (