наполнение правой стороны настроек квиза складывается в стор

This commit is contained in:
Tamara 2023-06-14 00:59:16 +03:00
parent 09912cc884
commit bd0257ace2
3 changed files with 121 additions and 22 deletions

@ -34,6 +34,8 @@ export default function StartPageSettings() {
const params = Number(useParams().quizId); const params = Number(useParams().quizId);
const theme = useTheme(); const theme = useTheme();
const designType = listQuizes[params].startpage const designType = listQuizes[params].startpage
const StartPageClone = listQuizes[params]
console.log(StartPageClone)
const [backgroundType, setBackgroundType] = useState<BackgroundType>("image"); const [backgroundType, setBackgroundType] = useState<BackgroundType>("image");
const [alignType, setAlignType] = useState<AlignType>("left"); const [alignType, setAlignType] = useState<AlignType>("left");
//дропзона //дропзона
@ -50,14 +52,54 @@ export default function StartPageSettings() {
setReady(true) setReady(true)
} }
React.useEffect(() => { // React.useEffect(() => {
if (dropZone.current) { // if (dropZone.current) {
dropZone.current.addEventListener("dragenter", dragenterHC) // dropZone.current.addEventListener("dragenter", dragenterHC)
// }
// return () => {dropZone.current.removeEventListener("dragenter", dragenterHC)}
// },)
const mutationHC = (e: any) => {
let SPageClone = listQuizes[params].config1
SPageClone.startpage.description = e.target.value
updateQuizesList(params, {config1: SPageClone })
} }
return () => {dropZone.current.removeEventListener("dragenter", dragenterHC)}
},)
const mutationButtonHC = (e: any) => {
let SPageClone = listQuizes[params].config1
SPageClone.startpage.button = e.target.value
updateQuizesList(params, {config1: SPageClone })
}
const mutationPhoneHC = (e: any) => {
let SPageClone = listQuizes[params].config1
SPageClone.info.phonenumber = e.target.value
updateQuizesList(params, {config1: SPageClone })
}
const mutationSiteHC = (e: any) => {
let SPageClone = listQuizes[params].config1
SPageClone.info.site = e.target.value
updateQuizesList(params, {config1: SPageClone })
}
const mutationLawHC = (e: any) => {
let SPageClone = listQuizes[params].config1
SPageClone.info.law = e.target.value
updateQuizesList(params, {config1: SPageClone })
}
const mutationOrgNameHC = (e: any) => {
let SPageClone = listQuizes[params].config1
SPageClone.info.orgname = e.target.value
updateQuizesList(params, {config1: SPageClone })
}
const mutationOrgMetaHC = (e: any) => {
let SPageClone = listQuizes[params].config1
SPageClone.meta = e.target.value
updateQuizesList(params, {config1: SPageClone })
}
return ( return (
<> <>
@ -294,20 +336,54 @@ export default function StartPageSettings() {
flex: `1 1 795px`, flex: `1 1 795px`,
}}> }}>
<Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mb: "14px" }}>Заголовок</Typography> <Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mb: "14px" }}>Заголовок</Typography>
<CustomTextField placeholder="Текст-заполнитель — это текст, который " text={""} /> <CustomTextField
placeholder="Текст-заполнитель — это текст, который"
text={listQuizes[params].name}
onChange={e => updateQuizesList(params, {name: e.target.value})}
/>
<Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Текст</Typography> <Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Текст</Typography>
<CustomTextField placeholder="Текст-заполнитель — это текст, который " text={""} /> <CustomTextField
placeholder="Текст-заполнитель — это текст, который "
text={listQuizes[params].config1.startpage.description}
onChange={mutationHC}
/>
<Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Текст кнопки</Typography> <Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Текст кнопки</Typography>
<CustomTextField placeholder="Начать" text={""} /> <CustomTextField
placeholder="Начать"
text={listQuizes[params].config1.startpage.button}
onChange={mutationButtonHC}
/>
<Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Телефон</Typography> <Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Телефон</Typography>
<CustomTextField placeholder="+7 900 000 00 00" text={""} /> <CustomTextField
<CustomCheckbox label="Кликабельный" /> placeholder="+7 900 000 00 00"
text={listQuizes[params].config1.info.phonenumber}
onChange={mutationPhoneHC}
/>
<CustomCheckbox label="Кликабельный"
checked={listQuizes[params].config1.info.clickable}
handleChange={(e) => {console.log(e.target.checked)
let SPageClone = listQuizes[params].config1
SPageClone.info.clickable = e.target.checked
updateQuizesList(params, {config1: SPageClone })}
}/>
<Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "11px", mb: "14px" }}>Название или слоган компании</Typography> <Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "11px", mb: "14px" }}>Название или слоган компании</Typography>
<CustomTextField placeholder="Текст-заполнитель — это текст, который " text={""} /> <CustomTextField
placeholder="Текст-заполнитель — это текст, который "
text={listQuizes[params].config1.info.orgname}
onChange={mutationOrgNameHC}
/>
<Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Сайт</Typography> <Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Сайт</Typography>
<CustomTextField placeholder="Текст-заполнитель — это текст, который " text={""} /> <CustomTextField
placeholder="Текст-заполнитель — это текст, который "
text={listQuizes[params].config1.info.site}
onChange={mutationSiteHC}
/>
<Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Юридическая информация</Typography> <Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Юридическая информация</Typography>
<CustomTextField placeholder="Текст-заполнитель — это текст, который " text={""} /> <CustomTextField
placeholder="Текст-заполнитель — это текст, который "
text={listQuizes[params].config1.info.law}
onChange={mutationLawHC}
/>
<Link sx={{ <Link sx={{
mt: "20px", mt: "20px",
fontSize: "16px", fontSize: "16px",
@ -316,7 +392,7 @@ export default function StartPageSettings() {
textDecorationColor: theme.palette.brightPurple.main textDecorationColor: theme.palette.brightPurple.main
}}>Дополнительно</Link> }}>Дополнительно</Link>
<Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Mета заголовок</Typography> <Typography sx={{ fontWeight: 500, color: theme.palette.grey3.main, mt: "20px", mb: "14px" }}>Mета заголовок</Typography>
<CustomTextField placeholder="Текст-заполнитель — это текст, который " text={""} /> <CustomTextField placeholder="Текст-заполнитель — это текст, который " text={listQuizes[params].config1.meta} onChange={mutationOrgMetaHC} />
<Typography sx={{ <Typography sx={{
mt: "20px", mt: "20px",
fontSize: "16px", fontSize: "16px",

@ -37,7 +37,30 @@ interface Quizes {
group_id: number, group_id: number,
step: number, step: number,
startpage: string, startpage: string,
config1?: any config1: {
type: string,
logo: string,
startpage: {
description: string,
button: string,
position: string,
background: {
type: string,
desktop: string,
mobile: string,
video: string,
cycle: boolean
},
},
info: {
phonenumber: string,
clickable: boolean,
orgname: string,
site: string,
law?: string
},
meta: string,
}
} }
export const quizStore = create<QuizStore>()( export const quizStore = create<QuizStore>()(
@ -98,17 +121,14 @@ export const quizStore = create<QuizStore>()(
"startpage": "", "startpage": "",
"config1": { "config1": {
"type": "", // quiz или form "type": "", // quiz или form
"favicon": [
{"attrs": "320*650apple","link":"hub.pena.digital/fav/squiz1.jpg"}
],
"logo": "hub.pena.digital/img/logo", "logo": "hub.pena.digital/img/logo",
"startpage": { "startpage": {
"description": "",// приветственный текст опроса "description": "привет!",// приветственный текст опроса
"button": "Начать", // текст на кнопке начала опроса "button": "Начать", // текст на кнопке начала опроса
"position": "ltr", // ltr или rtl. отображение элементов поверх фона "position": "ltr", // ltr или rtl. отображение элементов поверх фона
"background": { "background": {
"type": "image", //image или video "type": "image", //image или video
"desctop": "hub.pena.digital/img/back/full.png", "desktop": "hub.pena.digital/img/back/full.png",
"mobile": "hub.pena.digital/img/back/mobile.png", "mobile": "hub.pena.digital/img/back/mobile.png",
"video":"hub.pena.digital/vid/back/vi1.mp4", "video":"hub.pena.digital/vid/back/vi1.mp4",
"cycle": true //зацикливать видео или нет "cycle": true //зацикливать видео или нет

@ -1,12 +1,14 @@
import {FormControl, TextField, useTheme, SxProps, Theme} from "@mui/material"; import {FormControl, TextField, useTheme, SxProps, Theme} from "@mui/material";
import {ChangeEvent} from "react";
interface CustomTextFieldProps { interface CustomTextFieldProps {
placeholder: string; placeholder: string;
onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
text?: string; text?: string;
sx?: SxProps<Theme>; sx?: SxProps<Theme>;
} }
export default function CustomTextField({ placeholder, text, sx}: CustomTextFieldProps) { export default function CustomTextField({ placeholder, text, sx, onChange}: CustomTextFieldProps) {
const theme = useTheme(); const theme = useTheme();
return ( return (
@ -19,6 +21,7 @@ export default function CustomTextField({ placeholder, text, sx}: CustomTextFiel
defaultValue={text} defaultValue={text}
fullWidth fullWidth
placeholder={placeholder} placeholder={placeholder}
onChange={onChange}
sx={{ sx={{
"& .MuiInputBase-root": { "& .MuiInputBase-root": {
backgroundColor: theme.palette.background.default, backgroundColor: theme.palette.background.default,