import { Box, Button, ButtonBase, Checkbox, FormControl, FormControlLabel, Link, MenuItem, Select, Typography, useTheme } from "@mui/material"; import { useState } from "react"; import CustomCheckbox from "@ui_kit/CustomCheckbox"; import AlignLeftIcon from "../../assets/icons/AlignLeftIcon"; import AlignRightIcon from "../../assets/icons/AlignRightIcon"; import ArrowDown from "../../assets/icons/ArrowDownIcon"; import InfoIcon from "../../assets/icons/InfoIcon"; import LayoutCenteredIcon from "../../assets/icons/LayoutCenteredIcon"; import LayoutExpandedIcon from "../../assets/icons/LayoutExpandedIcon"; import LayoutStandartIcon from "../../assets/icons/LayoutStandartIcon"; import MobilePhoneIcon from "../../assets/icons/MobilePhoneIcon"; import UploadIcon from "../../assets/icons/UploadIcon"; import SelectableButton from "@ui_kit/SelectableButton"; import SelectableIconButton from "./SelectableIconButton"; import UploadBox from "@ui_kit/UploadBox"; import CustomTextField from "@ui_kit/CustomTextField"; import {quizStore} from "@root/quizes"; import {useParams} from "react-router-dom"; import * as React from "react"; import ModalSizeImage from "./ModalSizeImage"; import DropZone from "./dropZone"; const designTypes = [ ["standard", (color: string) => , "Standard"], ["expanded", (color: string) => , "Expanded"], ["centered", (color: string) => , "Centered"] ] as const; // type DesignType = typeof designTypes[number][0]; type BackgroundType = "image" | "video"; type AlignType = "left" | "right"; export default function StartPageSettings() { const {listQuizes, updateQuizesList, removeQuiz, createBlank} = quizStore(); const params = Number(useParams().quizId); const theme = useTheme(); const designType = listQuizes[params].startpage const StartPageClone = listQuizes[params] console.log(StartPageClone) const [backgroundType, setBackgroundType] = useState(listQuizes[params].config.startpage.background.type); const [alignType, setAlignType] = useState("left"); //дропзона //для Изображения const imgHC = (imgInp:any) => { const [file] = imgInp.files setImg(URL.createObjectURL(file)) } const [img, setImg] = React.useState(""); const dropZone = React.useRef(null); const [ready, setReady] = React.useState(false); const dragenterHC = () => { console.log("a") setReady(true) } const dragexitHC = () => { setReady(false) } const ondropHC = (event: any) => { event.preventDefault() const file = event.dataTransfer.files[0] console.log(event.dataTransfer.files[0]) setImg(URL.createObjectURL(file)) setReady(false) } const ondragOverHC = (event: any) => { event.preventDefault() console.log(event) } React.useEffect(() => { dropZone.current.addEventListener("dragenter", dragenterHC) dropZone.current.addEventListener("dragexit", dragexitHC) dropZone.current.addEventListener("dragover", ondragOverHC) dropZone.current.addEventListener("drop", ondropHC) console.log(dropZone.current) },) //для Логотипа const logoHC = (imgInp:any) => { const [fileL] = imgInp.files setLogo(URL.createObjectURL(fileL)) } const [logo, setLogo] = React.useState(""); const dropZoneLogo = React.useRef(null); const [readyLogo, setReadyLogo] = React.useState(false); const dragenterLogoHC = () => { console.log("b") setReadyLogo(true) } const dragexitLogoHC = () => { setReadyLogo(false) } const ondropLogoHC = (event: any) => { event.preventDefault() const fileL = event.dataTransfer.files[0] console.log(event.dataTransfer.files[0]) setLogo(URL.createObjectURL(fileL)) setReadyLogo(false) } const ondragOverLogoHC = (event: any) => { event.preventDefault() console.log(event) } React.useEffect(() => { dropZoneLogo.current.addEventListener("dragenter", dragenterLogoHC) dropZoneLogo.current.addEventListener("dragexit", dragexitLogoHC) dropZone.current.addEventListener("dragover", ondragOverLogoHC) dropZone.current.addEventListener("drop", ondropLogoHC) console.log(dropZoneLogo.current) },) // для фавиконки const favHC = (imgInp:any) => { const [file] = imgInp.files setFav(URL.createObjectURL(file)) } const [fav, setFav] = React.useState(""); const dropZoneFav = React.useRef(null); const [readyFav, setReadyFav] = React.useState(false); const dragenterFavHC = () => { console.log("c") setReadyFav(true) } const dragexitFavHC = () => { setReadyFav(false) } React.useEffect(() => { // if (dropZoneFav.current) { dropZoneFav.current.addEventListener("dragenter", dragenterFavHC) dropZoneFav.current.addEventListener("dragexit", dragexitFavHC) console.log(dropZoneFav.current) // } // return () => {dropZoneFav.current.removeEventListener("dragenter", dragenterFavHC) // dropZoneFav.current.removeEventListener("dragexit", dragenterFavHC) // } },) //изображение для мобильной версии const mobileImgHC = (imgInp:any) => { const [file] = imgInp.files setMobileImg(URL.createObjectURL(file)) } const [mobileImg, setMobileImg] = React.useState(""); const dropZoneMobile = React.useRef(null); const [readyMobile, setReadyMobile] = React.useState(false); const dragenterMobileHC = () => { console.log("d") setReadyMobile(true) } const dragexitMobileHC = () => { setReadyMobile(false) } React.useEffect(() => { // if (dropZoneMobile.current) { dropZoneMobile.current.addEventListener("dragenter", dragenterMobileHC) dropZoneMobile.current.addEventListener("dragexit", dragexitMobileHC) console.log(dropZoneMobile.current) // } // return () => {dropZoneMobile.current.removeEventListener("dragenter", dragenterMobileHC) // dropZoneMobile.current.removeEventListener("dragexit", dragexitMobileHC) // } },) // для видео const videoHC = (videoInp:any) => { const [file] = videoInp.files setVideo(URL.createObjectURL(file)) } const [video, setVideo] = React.useState(""); const mutationHC = (e: any) => { let SPageClone = listQuizes[params].config SPageClone.startpage.description = e.target.value updateQuizesList(params, {config: SPageClone }) } const mutationButtonHC = (e: any) => { let SPageClone = listQuizes[params].config SPageClone.startpage.button = e.target.value updateQuizesList(params, {config: SPageClone }) } const mutationPhoneHC = (e: any) => { let SPageClone = listQuizes[params].config SPageClone.info.phonenumber = e.target.value updateQuizesList(params, {config: SPageClone }) } const mutationSiteHC = (e: any) => { let SPageClone = listQuizes[params].config SPageClone.info.site = e.target.value updateQuizesList(params, {config: SPageClone }) } const mutationLawHC = (e: any) => { let SPageClone = listQuizes[params].config SPageClone.info.law = e.target.value updateQuizesList(params, {config: SPageClone }) } const mutationOrgNameHC = (e: any) => { let SPageClone = listQuizes[params].config SPageClone.info.orgname = e.target.value updateQuizesList(params, {config: SPageClone }) } const mutationOrgMetaHC = (e: any) => { let SPageClone = listQuizes[params].config SPageClone.meta = e.target.value updateQuizesList(params, {config: SPageClone }) } return ( <> Стартовая страница Дизайн Фон { setBackgroundType("image") let SPageClone = listQuizes[params].config SPageClone.startpage.background.type = "image" updateQuizesList(params, {config: SPageClone }) }}> Изображение { setBackgroundType("video") let SPageClone = listQuizes[params].config SPageClone.startpage.background.type = "video" updateQuizesList(params, {config: SPageClone }) }}> Видео Изображение imgHC(event.target)} hidden accept="image/*" multiple type="file" /> {/*} text="5 MB максимум" ref={dropZone} />*/} 5 MB максимум {img ? : null } } checkedIcon={} />} label= "мобильная версия" sx={{ color: theme.palette.brightPurple.main, textDecorationLine: "underline", textDecorationColor: theme.palette.brightPurple.main, ml: "-9px", userSelect: "none", }} /> Добавить видео videoHC(event.target) } hidden accept=".mp4" multiple type="file" /> } sx={{ height: "48px", width: "48px", marginBottom: "20px" }} /> {video ? Расположение элементов setAlignType("left")} isActive={alignType === "left"} Icon={AlignLeftIcon} /> setAlignType("right")} isActive={alignType === "right"} Icon={AlignRightIcon} /> Логотип logoHC(event.target) } hidden accept="image/*" multiple type="file" /> 5 MB максимум {logo ? : null } Favicon favHC(event.target)} hidden accept="image/*" multiple type="file" /> {fav ? : null } 5 MB максимум {/*Правая сторона*/} Заголовок updateQuizesList(params, {name: e.target.value})} /> Текст Текст кнопки Телефон {console.log(e.target.checked) let SPageClone = listQuizes[params].config SPageClone.info.clickable = e.target.checked updateQuizesList(params, {config: SPageClone })} }/> Название или слоган компании Сайт Юридическая информация Дополнительно Mета заголовок Текст-заполнитель — это текст, который имеет Текст-заполнитель — это текст, который имеет Текст-заполнитель — это текст, который имеет Текст-заполнитель — это текст, который имеет Текст-заполнитель ); } function IconCheck() { return ( ); }