import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import { Box, Button, IconButton, Link, Paper, SxProps, TextField, Theme, Typography, useTheme, Popover, useMediaQuery, Divider, } from "@mui/material"; import { incrementCurrentStep, updateQuiz } from "@root/quizes/actions"; import CustomTextField from "@ui_kit/CustomTextField"; import React, { ReactNode, useRef, useState } from "react"; import Info from "../../assets/icons/Info"; import Trash from "@icons/trash"; import { OneIcon } from "../../assets/icons/questionsPage/OneIcon"; import AddPlus from "../../assets/icons/questionsPage/addPlus"; import ArrowLeft from "../../assets/icons/questionsPage/arrowLeft"; import { decrementCurrentStep } from "@root/quizes/actions"; import ButtonSettingForms from "./ButtonSettingForms"; import DrawerNewField from "./DrawerParent"; import WindowMessengers from "./Massengers/WindowMessengers"; import WindowNewField from "./NewField/WindowNewField"; import SwitchContactForm from "./switchContactForm"; import GearIcon from "@icons/GearIcon"; import { useQuestionsStore } from "@root/questions/store"; import { useCurrentQuiz } from "@root/quizes/hooks"; import { FieldSettingsDrawerState, FormContactFieldName, } from "@model/quizSettings"; const buttons: { key: FormContactFieldName; name: string; desc: string }[] = [ { name: "Имя", desc: "Дмитрий", key: "name" }, { name: "Email", desc: "mail@example.ru", key: "email" }, { name: "Номер", desc: "+7 900 000 00 00", key: "phone" }, { name: "Фамилия", desc: "Иванов", key: "text" }, { name: "Адрес", desc: "Москва, Лаврушинский пер., 10", key: "address" }, ]; export default function ContactFormPage() { const theme = useTheme(); const quiz = useCurrentQuiz(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const [drawerNewField, setDrawerNewField] = useState({ field: "", isEdit: false }); const [drawerMessenger, setDrawerMessenger] = useState(false); const drawerMessengerHC = (bool: boolean) => { setDrawerMessenger(bool); }; return ( {/**/} {/* */} {/* Как собрать данные посетителя*/} {/* {" "}*/} {/* /!* */} {/* */} {/* *!/*/} {/**/} {!quiz?.config.formContact.fields.name.used && !quiz?.config.formContact.fields.email.used && !quiz?.config.formContact.fields.phone.used && !quiz?.config.formContact.fields.text.used && !quiz?.config.formContact.fields.address.used ? ( ) : ( )} setDrawerNewField({ field: "", isEdit: false })} > setDrawerNewField({ field: "", isEdit: false })} /> ); } interface Props { outerContainerSx?: SxProps; children?: ReactNode; } function ContactFormParent({ outerContainerSx: sx, children }: Props) { const theme = useTheme(); const isTablet = useMediaQuery(theme.breakpoints.down(1000)); const quiz = useCurrentQuiz(); if (!quiz) return null; return ( { updateQuiz(quiz.id, (quiz) => { quiz.config.formContact.title = target.value; }); }} value={quiz.config.formContact.title} placeholder="Заголовок формы" maxLength={200} /> { updateQuiz(quiz.id, (quiz) => { quiz.config.formContact.desc = target.value; }); }} value={quiz.config.formContact.desc} rows={8} placeholder="Дополнительный текст формы" sxForm={{ height: "197px", }} sx={{ height: "197px", }} maxLength={300} /> {children} ); } const SettingField = ({ name, placeholder, type, drawerNewFieldHC, }: { name: string; placeholder: string; type: FormContactFieldName; drawerNewFieldHC: (state: FieldSettingsDrawerState) => void; }) => { const theme = useTheme(); const quiz = useCurrentQuiz(); if (!quiz) return null; return ( <> {quiz.config.formContact.fields[type].text || name} {quiz.config.formContact.fields[type].innerText || placeholder} drawerNewFieldHC({ field: type, isEdit: true })} sx={{ position: "absolute", right: "0", }} > {(type !== "email" || quiz?.config.resultInfo.when !== "email") && ( updateQuiz(quiz?.id, (quiz) => { quiz.config.formContact.fields[type].used = false; }) } sx={{ width: "48px", ml: "5px", }} > )} ); }; const ButtonsCard = ({ drawerNewFieldHC, }: { drawerNewFieldHC: (state: FieldSettingsDrawerState) => void; }) => { const theme = useTheme(); const quiz = useCurrentQuiz(); if (!quiz) return null; return ( {buttons.flatMap((contentData) => { const content = quiz.config.formContact.fields[contentData.key]; return content.used ? ( ) : ( [] ); })} {quiz.config.formContact.fields.name.used && quiz.config.formContact.fields.email.used && quiz.config.formContact.fields.phone.used && quiz.config.formContact.fields.text.used && quiz.config.formContact.fields.address.used ? ( <> ) : ( )} {/* drawerMessengerHC(true)} sx={{ fontSize: "16px", lineHeight: "19px", color: theme.palette.brightPurple.main, textDecorationColor: theme.palette.brightPurple.main, textAlign: "left", }} > Добавить мессенджеры */} ); }; const EmptyCard = ({ drawerNewFieldHC, }: { drawerNewFieldHC: (state: FieldSettingsDrawerState) => void; }) => { const theme = useTheme(); const [FC, setFC] = useState(false); const openFC = () => setFC(true); const closeFC = () => setFC(false); const popover = useRef(null); return ( Будут показаны поля по умолчанию Будут поля:

Имя, Email, Телефон
{/* Добавить мессенджеры */}
); }; const PseudoButton = () => { const quiz = useCurrentQuiz(); if (!quiz) return null; return ( { updateQuiz(quiz.id, (quiz) => { quiz.config.formContact.button = target.value; }); }} value={quiz.config.formContact.button} sx={{ heigth: "44px", width: "190px", "& .MuiInputBase-root": { backgroundColor: "#7E2AEA", borderRadius: "8px", color: "white", }, "& .MuiInputBase-input": { padding: "10px 20px", textAlign: "center", }, "& .MuiInputBase-input::placeholder": { color: "white", opacity: "1", }, }} placeholder="Название кнопки" > {quiz.config.formContact.button || "Название кнопки"} ); };