import { Box, Typography, Button, Paper, TextField, Link, InputAdornment, useTheme } from "@mui/material"; import NameIcon from "@icons/ContactFormIcon/NameIcon"; import EmailIcon from "@icons/ContactFormIcon/EmailIcon"; import PhoneIcon from "@icons/ContactFormIcon/PhoneIcon"; import TextIcon from "@icons/ContactFormIcon/TextIcon"; import AddressIcon from "@icons/ContactFormIcon/AddressIcon"; import { useDebouncedCallback } from "use-debounce"; import CustomCheckbox from "@ui_kit/CustomCheckbox"; import { useEffect, useRef, useState } from "react"; import { useQuestionsStore } from "@root/quizData/store"; import { checkEmptyData } from "./tools/checkEmptyData"; import type { AnyTypedQuizQuestion } from "../../model/questionTypes/shared"; import { enqueueSnackbar } from "notistack"; import { sendFC } from "@api/quizRelase"; import { NameplateLogo } from "@icons/NameplateLogo"; import { modes } from "../../utils/themes/Publication/themePublication"; import { QuizQuestionResult } from "@model/questionTypes/result"; import { ApologyPage } from "./ApologyPage"; type ContactFormProps = { currentQuestion: any; showResultForm: boolean; setShowContactForm: (show: boolean) => void; setShowResultForm: (show: boolean) => void; }; const icons = [ { type: "name", icon: NameIcon, defaultText: "Введите имя", defaultTitle: "имя", backendName: "name" }, { type: "email", icon: EmailIcon, defaultText: "Введите Email", defaultTitle: "Email", backendName: "email" }, { type: "phone", icon: PhoneIcon, defaultText: "Введите номер телефона", defaultTitle: "номер телефона", backendName: "phone" }, { type: "text", icon: TextIcon, defaultText: "Введите фамилию", defaultTitle: "фамилию", backendName: "adress" }, { type: "address", icon: AddressIcon, defaultText: "Введите адрес", defaultTitle: "адрес", backendName: "adress" }, ] export const ContactForm = ({ currentQuestion, showResultForm, setShowContactForm, setShowResultForm, }: ContactFormProps) => { const { settings, items } = useQuestionsStore() const [ready, setReady] = useState(false) const [name, setName] = useState("") const [email, setEmail] = useState("") const [phone, setPhone] = useState("") const [text, setText] = useState("") const [adress, setAdress] = useState("") const fireOnce = useRef(true) const [fire, setFire] = useState(false) const followNextForm = () => { setShowContactForm(false); setShowResultForm(true); }; const theme = useTheme(); const mode = modes; //@ts-ignore const resultQuestion: QuizQuestionResult = items.find((question) => { if (settings?.cfg.haveRoot) { //ветвимся return ( question.type === "result" && //@ts-ignore question.content.rule.parentId === currentQuestion.content.id ) } else {// не ветвимся return ( question.type === "result" && question.content.rule.parentId === "line" ) } } ); const inputHC = async () => { const body = {} //@ts-ignore if (name.length > 0) body.name = name //@ts-ignore if (email.length > 0) body.email = email //@ts-ignore if (phone.length > 0) body.phone = phone //@ts-ignore if (text.length > 0) body.text = text //@ts-ignore if (adress.length > 0) body.adress = adress if (Object.keys(body).length > 0) { try { await sendFC({ questionId: resultQuestion?.id, body: body, //@ts-ignore qid: settings.qid }) } catch (e) { enqueueSnackbar("ответ не был засчитан") } } } if (!resultQuestion) return return ( {settings?.cfg.formContact.title || "Заполните форму, чтобы получить результаты теста"} { settings?.cfg.formContact.desc && {settings?.cfg.formContact.desc} } { // resultQuestion && // settings?.cfg.resultInfo.when === "after" && ( )} { setReady(target.checked) }} checked={ready} colorIcon={theme.palette.primary.main} /> С  Положением об обработке персональных данных  и  Политикой конфиденциальности  ознакомлен Сделано на Penasettings ); }; const Inputs = ({ name, setName, email, setEmail, phone, setPhone, text, setText, adress, setAdress }: any) => { const { settings, items } = useQuestionsStore() //@ts-ignore const FC: any = settings?.cfg.formContact.fields || settings?.cfg.formContact //@ts-ignore const Name = setName(target.value)} id={name} title={FC["name"].innerText || "Введите имя"} desc={FC["name"].text || "имя"} Icon={NameIcon} /> //@ts-ignore const Email = setEmail(target.value)} id={email} title={FC["email"].innerText || "Введите Email"} desc={FC["email"].text || "Email"} Icon={EmailIcon} /> //@ts-ignore const Phone = setPhone(target.value)} id={phone} title={FC["phone"].innerText || "Введите номер телефона"} desc={FC["phone"].text || "номер телефона"} Icon={PhoneIcon} /> //@ts-ignore const Text = setText(target.value)} id={text} title={FC["text"].innerText || "Введите фамилию"} desc={FC["text"].text || "фамилию"} Icon={TextIcon} /> //@ts-ignore const Adress = setAdress(target.value)} id={adress} title={FC["address"].innerText || "Введите адрес"} desc={FC["address"].text || "адрес"} Icon={AddressIcon} /> //@ts-ignore if (Object.values(FC).some((data) => data.used)) { return <> {FC["name"].used ? Name : <>} {FC["email"].used ? Email : <>} {FC["phone"].used ? Phone : <>} {FC["text"].used ? Text : <>} {FC["address"].used ? Adress : <>} } else { return <> {Name} {Email} {Phone} } } const CustomInput = ({ title, desc, Icon, onChange }: any) => { //@ts-ignore return {title} , }} /> }