fix: conflicts resolved
This commit is contained in:
commit
dc4edf9be7
@ -20,6 +20,7 @@
|
|||||||
"@types/react": "^18.0.0",
|
"@types/react": "^18.0.0",
|
||||||
"@types/react-dnd": "^3.0.2",
|
"@types/react-dnd": "^3.0.2",
|
||||||
"@types/react-dom": "^18.0.0",
|
"@types/react-dom": "^18.0.0",
|
||||||
|
"@types/react-slick": "^0.23.13",
|
||||||
"axios": "^1.5.1",
|
"axios": "^1.5.1",
|
||||||
"cypress-file-upload": "^5.0.8",
|
"cypress-file-upload": "^5.0.8",
|
||||||
"cytoscape": "^3.26.0",
|
"cytoscape": "^3.26.0",
|
||||||
@ -47,6 +48,8 @@
|
|||||||
"react-rnd": "^10.4.1",
|
"react-rnd": "^10.4.1",
|
||||||
"react-router-dom": "^6.6.2",
|
"react-router-dom": "^6.6.2",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "5.0.1",
|
||||||
|
"react-slick": "^0.29.0",
|
||||||
|
"slick-carousel": "^1.8.1",
|
||||||
"swr": "^2.2.4",
|
"swr": "^2.2.4",
|
||||||
"typescript": "^5.2.2",
|
"typescript": "^5.2.2",
|
||||||
"use-debounce": "^9.0.4",
|
"use-debounce": "^9.0.4",
|
||||||
|
@ -124,7 +124,7 @@ export default function App() {
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
useUserFetcher({
|
useUserFetcher({
|
||||||
url: `https://hub.pena.digital/user/${userId}`,
|
url: `https://squiz.pena.digital/user/${userId}`,
|
||||||
userId,
|
userId,
|
||||||
onNewUser: setUser,
|
onNewUser: setUser,
|
||||||
onError: (error) => {
|
onError: (error) => {
|
||||||
|
13
src/assets/icons/arrow_left.svg
Normal file
13
src/assets/icons/arrow_left.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#FFFFFF;stroke:#7E2AEA;stroke-width:2;stroke-miterlimit:10;}
|
||||||
|
.st1{fill:none;stroke:#7E2AEA;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M6.3,24.7C6.3,14.4,14.7,6,25.1,6s18.8,8.4,18.8,18.8s-8.4,18.8-18.8,18.8S6.3,35.1,6.3,24.7z"/>
|
||||||
|
<path class="st1" d="M27.4,17.7l-7.8,7l7.8,7"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 725 B |
13
src/assets/icons/arrow_right.svg
Normal file
13
src/assets/icons/arrow_right.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 24.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Слой_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#FFFFFF;stroke:#7E2AEA;stroke-width:2;stroke-miterlimit:10;}
|
||||||
|
.st1{fill:none;stroke:#7E2AEA;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
|
||||||
|
</style>
|
||||||
|
<g>
|
||||||
|
<path class="st0" d="M43.8,24.7c0,10.4-8.4,18.8-18.8,18.8S6.3,35.1,6.3,24.7S14.7,6,25.1,6S43.8,14.4,43.8,24.7z"/>
|
||||||
|
<path class="st1" d="M22.7,31.8l7.8-7l-7.8-7"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 724 B |
@ -122,7 +122,8 @@ export default function Component() {
|
|||||||
<Button
|
<Button
|
||||||
variant="text"
|
variant="text"
|
||||||
sx={{ fontSize: "16px", fontWeight: 500, color: "white" }}
|
sx={{ fontSize: "16px", fontWeight: 500, color: "white" }}
|
||||||
href={"https://docs.pena.digital/docs"}
|
href={"https://shub.pena.digital/docs/oferta"}
|
||||||
|
target="_blank"
|
||||||
>
|
>
|
||||||
Пользовательское соглашение
|
Пользовательское соглашение
|
||||||
</Button>
|
</Button>
|
||||||
|
@ -1,33 +1,97 @@
|
|||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import TariffCard from "./TariffCard";
|
import TariffCard from "./TariffCard";
|
||||||
import NumberIcon from "@icons/NumberIcon";
|
import NumberIcon from "@icons/NumberIcon";
|
||||||
import { useTheme } from "@mui/material";
|
import { Box, useTheme } from "@mui/material";
|
||||||
|
|
||||||
export default function FreeTariffCard() {
|
export default function FreeTariffCard() {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TariffCard
|
// <TariffCard
|
||||||
icon={<NumberIcon number={0} color="#7e2aea" backgroundColor="white" />}
|
// icon={<NumberIcon number={0} color="#7e2aea" backgroundColor="white" />}
|
||||||
discount={""}
|
// discount={""}
|
||||||
headerText="бесплатно"
|
// headerText="бесплатно"
|
||||||
text="Первые 14 дней после регистрации, вы можете пользоваться полным функционалом сервиса совершенно бесплатно"
|
// text="Каждому пользователю все наши продукты в первые 14 дней доступны совершенно бесплатно (кроме доп.услуг)"
|
||||||
price={
|
// price={
|
||||||
<Typography variant="price" color="white">
|
// <Typography variant="price" color="white">
|
||||||
0 руб.
|
// 0 руб.
|
||||||
</Typography>
|
// </Typography>
|
||||||
}
|
// }
|
||||||
|
// sx={{
|
||||||
|
// backgroundColor: "#7e2aea",
|
||||||
|
// color: "white",
|
||||||
|
// }}
|
||||||
|
// />
|
||||||
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
|
width: "100%",
|
||||||
|
minHeight: "250px",
|
||||||
backgroundColor: "#7e2aea",
|
backgroundColor: "#7e2aea",
|
||||||
color: "white",
|
color: "white",
|
||||||
|
borderRadius: "12px",
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
alignItems: "start",
|
||||||
|
p: "20px",
|
||||||
}}
|
}}
|
||||||
buttonProps={{
|
>
|
||||||
text: "Выбрать",
|
<Box
|
||||||
sx: {
|
sx={{
|
||||||
color: "white",
|
position: "relative",
|
||||||
borderColor: "white",
|
width: "100%",
|
||||||
},
|
display: "flex",
|
||||||
}}
|
justifyContent: "space-between",
|
||||||
/>
|
alignItems: "center",
|
||||||
|
gap: "16px",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<NumberIcon number={0} color="#7e2aea" backgroundColor="white" />
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "baseline",
|
||||||
|
flexWrap: "wrap",
|
||||||
|
columnGap: "10px",
|
||||||
|
rowGap: 0,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Typography
|
||||||
|
sx={{
|
||||||
|
fontWeight: 500,
|
||||||
|
fontSize: "20px",
|
||||||
|
lineHeight: "24px",
|
||||||
|
}}
|
||||||
|
color="white"
|
||||||
|
>
|
||||||
|
{" "}
|
||||||
|
0 руб{" "}
|
||||||
|
</Typography>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
|
<Typography
|
||||||
|
variant="h5"
|
||||||
|
sx={{
|
||||||
|
mt: "14px",
|
||||||
|
mb: "10px",
|
||||||
|
textOverflow: "ellipsis",
|
||||||
|
overflow: "hidden",
|
||||||
|
whiteSpace: "nowrap",
|
||||||
|
width: "100%",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Бесплатно 14 дней
|
||||||
|
</Typography>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
width: "100%",
|
||||||
|
mb: "auto",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Typography sx={{ overflow: "hidden", textOverflow: "ellipsis" }}>
|
||||||
|
Каждому пользователю все наши продукты в первые 14 дней доступны
|
||||||
|
совершенно бесплатно (кроме доп.услуг)
|
||||||
|
</Typography>
|
||||||
|
</Box>
|
||||||
|
</Box>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -131,9 +131,22 @@ export default function TariffCard({
|
|||||||
{buttonProps && (
|
{buttonProps && (
|
||||||
<Button
|
<Button
|
||||||
onClick={buttonProps.onClick}
|
onClick={buttonProps.onClick}
|
||||||
variant="pena-outlined-purple"
|
variant="outlined"
|
||||||
sx={{
|
sx={{
|
||||||
mt: "10px",
|
mt: "10px",
|
||||||
|
color: "#7e2aea",
|
||||||
|
minWidth: "180px",
|
||||||
|
background: "transparent",
|
||||||
|
"&:hover": {
|
||||||
|
color: "#7E2AEA",
|
||||||
|
backgroundColor: "#F2F3F7",
|
||||||
|
border: "1px solid #7E2AEA",
|
||||||
|
},
|
||||||
|
"&:active": {
|
||||||
|
color: "#FFFFFF",
|
||||||
|
backgroundColor: " #581CA7",
|
||||||
|
border: "1px solid #581CA7",
|
||||||
|
},
|
||||||
...buttonProps.sx,
|
...buttonProps.sx,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
@ -53,11 +53,25 @@ export const createTariffElements = (
|
|||||||
price={
|
price={
|
||||||
<>
|
<>
|
||||||
{priceBeforeDiscounts !== priceAfterDiscounts && (
|
{priceBeforeDiscounts !== priceAfterDiscounts && (
|
||||||
<Typography variant="oldPrice">
|
<Typography
|
||||||
|
sx={{
|
||||||
|
textDecorationLine: "line-through",
|
||||||
|
color: "#FB5607",
|
||||||
|
fontSize: "15px",
|
||||||
|
lineHeight: "21px",
|
||||||
|
}}
|
||||||
|
>
|
||||||
{currencyFormatter.format(priceBeforeDiscounts / 100)}
|
{currencyFormatter.format(priceBeforeDiscounts / 100)}
|
||||||
</Typography>
|
</Typography>
|
||||||
)}
|
)}
|
||||||
<Typography variant="price">
|
<Typography
|
||||||
|
sx={{
|
||||||
|
fontWeight: 500,
|
||||||
|
fontSize: "20px",
|
||||||
|
lineHeight: "24px",
|
||||||
|
color: "#4D4D4D",
|
||||||
|
}}
|
||||||
|
>
|
||||||
{currencyFormatter.format(priceAfterDiscounts / 100)}
|
{currencyFormatter.format(priceAfterDiscounts / 100)}
|
||||||
</Typography>
|
</Typography>
|
||||||
</>
|
</>
|
||||||
|
@ -222,9 +222,18 @@ export const ContactForm = ({
|
|||||||
/>
|
/>
|
||||||
<Typography sx={{ color: theme.palette.text.primary }}>
|
<Typography sx={{ color: theme.palette.text.primary }}>
|
||||||
С 
|
С 
|
||||||
<Link> Положением об обработке персональных данных </Link>
|
<Link href={"https://shub.pena.digital/ppdd"} target="_blank">
|
||||||
|
{" "}
|
||||||
|
Положением об обработке персональных данных{" "}
|
||||||
|
</Link>
|
||||||
 и 
|
 и 
|
||||||
<Link> Политикой конфиденциальности </Link>
|
<Link
|
||||||
|
href={"https://shub.pena.digital/docs/privacy"}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
{" "}
|
||||||
|
Политикой конфиденциальности{" "}
|
||||||
|
</Link>
|
||||||
 ознакомлен
|
 ознакомлен
|
||||||
</Typography>
|
</Typography>
|
||||||
</Box>
|
</Box>
|
||||||
|
@ -79,10 +79,8 @@ export default function Main({ sidebar, header, footer, Page }: Props) {
|
|||||||
setOpenBranchingPage((old) => !old);
|
setOpenBranchingPage((old) => !old);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!quizConfig) return <></>;
|
|
||||||
|
|
||||||
const isConditionMet =
|
const isConditionMet =
|
||||||
[1].includes(currentStep) && quizConfig.type !== "form";
|
[1].includes(currentStep) && quizConfig?.type !== "form";
|
||||||
|
|
||||||
const changePage = (index: number) => {
|
const changePage = (index: number) => {
|
||||||
if (currentStep === 2) {
|
if (currentStep === 2) {
|
||||||
@ -106,10 +104,11 @@ export default function Main({ sidebar, header, footer, Page }: Props) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
observer.current.observe(mainBlock.current);
|
if (mainBlock.current) observer.current.observe(mainBlock.current);
|
||||||
}, [mainBlock, observer]);
|
}, [mainBlock, observer]);
|
||||||
console.log(widthMain);
|
console.log(widthMain);
|
||||||
|
|
||||||
|
if (!quizConfig) return <></>;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Header setMobileSidebar={setMobileSidebar} />
|
<Header setMobileSidebar={setMobileSidebar} />
|
||||||
|
@ -61,7 +61,7 @@ export default function EditPage({
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const currentStep = useQuizStore((state) => state.currentStep);
|
const currentStep = useQuizStore((state) => state.currentStep);
|
||||||
const isBranchingLogic = useMediaQuery(theme.breakpoints.down(1100));
|
const isBranchingLogic = useMediaQuery(theme.breakpoints.down(1100));
|
||||||
const isMobile = useMediaQuery(theme.breakpoints.down(660));
|
const isMobile = useMediaQuery(theme.breakpoints.down(650));
|
||||||
const quizConfig = quiz?.config;
|
const quizConfig = quiz?.config;
|
||||||
// const [openBranchingPage, setOpenBranchingPage] = useState<boolean>(false);
|
// const [openBranchingPage, setOpenBranchingPage] = useState<boolean>(false);
|
||||||
|
|
||||||
|
@ -1,13 +1,42 @@
|
|||||||
import { Box, Button } from "@mui/material";
|
import { Box, Button, useMediaQuery, useTheme } from "@mui/material";
|
||||||
import CreationCard from "@ui_kit/CreationCard";
|
import CreationCard from "@ui_kit/CreationCard";
|
||||||
import quizCreationImage1 from "../../assets/quiz-creation-1.png";
|
import quizCreationImage1 from "../../assets/quiz-creation-1.png";
|
||||||
import quizCreationImage2 from "../../assets/quiz-creation-2.png";
|
import quizCreationImage2 from "../../assets/quiz-creation-2.png";
|
||||||
import { setQuizType } from "@root/quizes/actions";
|
import { setQuizType } from "@root/quizes/actions";
|
||||||
import { useCurrentQuiz } from "@root/quizes/hooks";
|
import { useCurrentQuiz } from "@root/quizes/hooks";
|
||||||
|
import { useEffect, useRef, useState } from "react";
|
||||||
|
|
||||||
|
import arrowLeftIcon from "../../assets/icons/arrow_left.svg";
|
||||||
|
import arrowRightIcon from "../../assets/icons/arrow_right.svg";
|
||||||
|
|
||||||
export default function StepOne() {
|
export default function StepOne() {
|
||||||
const quiz = useCurrentQuiz();
|
const quiz = useCurrentQuiz();
|
||||||
const config = quiz?.config;
|
const config = quiz?.config;
|
||||||
|
const theme = useTheme();
|
||||||
|
const isSlider = useMediaQuery(theme.breakpoints.down(950));
|
||||||
|
|
||||||
|
const containerRef = useRef<HTMLDivElement | null>(null);
|
||||||
|
const buttonRefs = useRef<(HTMLButtonElement | null)[]>([]);
|
||||||
|
const [currentIndex, setCurrentIndex] = useState(0);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (containerRef.current && buttonRefs.current.length > 0) {
|
||||||
|
const buttonWidth = buttonRefs.current[0]!.offsetWidth;
|
||||||
|
|
||||||
|
containerRef.current.scrollTo({
|
||||||
|
left: currentIndex * buttonWidth,
|
||||||
|
behavior: "smooth",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [currentIndex]);
|
||||||
|
|
||||||
|
const handlePrevClick = () => {
|
||||||
|
setCurrentIndex((prevIndex) => Math.max(prevIndex - 1, 0));
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleNextClick = () => {
|
||||||
|
setCurrentIndex((prevIndex) => Math.min(prevIndex + 1, 1));
|
||||||
|
};
|
||||||
|
|
||||||
if (!config) return null;
|
if (!config) return null;
|
||||||
|
|
||||||
@ -20,14 +49,22 @@ export default function StepOne() {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Box
|
<Box
|
||||||
|
ref={containerRef}
|
||||||
sx={{
|
sx={{
|
||||||
minWidth: "720px",
|
overflow: "auto",
|
||||||
display: "flex",
|
display: "flex",
|
||||||
gap: "20px",
|
gap: "20px",
|
||||||
mt: "60px",
|
mt: "60px",
|
||||||
|
position: "relative",
|
||||||
|
scrollbarWidth: "none",
|
||||||
|
"&::-webkit-scrollbar": {
|
||||||
|
width: 0,
|
||||||
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
|
sx={{ minWidth: "325px" }}
|
||||||
|
ref={(ref) => (buttonRefs.current[0] = ref as HTMLButtonElement)}
|
||||||
variant="text"
|
variant="text"
|
||||||
data-cy="create-quiz-card"
|
data-cy="create-quiz-card"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
@ -42,6 +79,8 @@ export default function StepOne() {
|
|||||||
/>
|
/>
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
|
sx={{ minWidth: "325px" }}
|
||||||
|
ref={(ref) => (buttonRefs.current[1] = ref as HTMLButtonElement)}
|
||||||
variant="text"
|
variant="text"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setQuizType(quiz.id, "form");
|
setQuizType(quiz.id, "form");
|
||||||
@ -55,6 +94,33 @@ export default function StepOne() {
|
|||||||
/>
|
/>
|
||||||
</Button>
|
</Button>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
|
{isSlider && (
|
||||||
|
<>
|
||||||
|
<img
|
||||||
|
onClick={handlePrevClick}
|
||||||
|
style={{
|
||||||
|
position: "absolute",
|
||||||
|
left: "0",
|
||||||
|
top: "50%",
|
||||||
|
width: "40px",
|
||||||
|
height: "40px",
|
||||||
|
}}
|
||||||
|
src={arrowLeftIcon}
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
onClick={handleNextClick}
|
||||||
|
style={{
|
||||||
|
position: "absolute",
|
||||||
|
right: "0",
|
||||||
|
top: "50%",
|
||||||
|
width: "40px",
|
||||||
|
height: "40px",
|
||||||
|
}}
|
||||||
|
src={arrowRightIcon}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -11,13 +11,40 @@ import cardImage1 from "../../assets/card-1.png";
|
|||||||
import cardImage2 from "../../assets/card-2.png";
|
import cardImage2 from "../../assets/card-2.png";
|
||||||
import cardImage3 from "../../assets/card-3.png";
|
import cardImage3 from "../../assets/card-3.png";
|
||||||
import CardWithImage from "./CardWithImage";
|
import CardWithImage from "./CardWithImage";
|
||||||
|
import { useRef, useState, useEffect } from "react";
|
||||||
|
|
||||||
|
import arrowLeftIcon from "../../assets/icons/arrow_left.svg";
|
||||||
|
import arrowRightIcon from "../../assets/icons/arrow_right.svg";
|
||||||
|
|
||||||
export default function Steptwo() {
|
export default function Steptwo() {
|
||||||
|
const quiz = useCurrentQuiz();
|
||||||
|
const config = quiz?.config;
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const isSmallMonitor = useMediaQuery(theme.breakpoints.down(1300));
|
const isSmallMonitor = useMediaQuery(theme.breakpoints.down(1300));
|
||||||
const quiz = useCurrentQuiz();
|
const isSlider = useMediaQuery(theme.breakpoints.down(1250));
|
||||||
|
|
||||||
const config = quiz?.config;
|
const containerRef = useRef<HTMLDivElement | null>(null);
|
||||||
|
const buttonRefs = useRef<(HTMLButtonElement | null)[]>([]);
|
||||||
|
const [currentIndex, setCurrentIndex] = useState(0);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (containerRef.current && buttonRefs.current.length > 0) {
|
||||||
|
const buttonWidth = buttonRefs.current[0]!.offsetWidth;
|
||||||
|
|
||||||
|
containerRef.current.scrollTo({
|
||||||
|
left: currentIndex * buttonWidth,
|
||||||
|
behavior: "smooth",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}, [currentIndex]);
|
||||||
|
|
||||||
|
const handlePrevClick = () => {
|
||||||
|
setCurrentIndex((prevIndex) => Math.max(prevIndex - 1, 0));
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleNextClick = () => {
|
||||||
|
setCurrentIndex((prevIndex) => Math.min(prevIndex + 1, 2));
|
||||||
|
};
|
||||||
|
|
||||||
if (!config) return null;
|
if (!config) return null;
|
||||||
|
|
||||||
@ -26,21 +53,29 @@ export default function Steptwo() {
|
|||||||
<Typography variant="h5">Стартовая страница</Typography>
|
<Typography variant="h5">Стартовая страница</Typography>
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
overflowX: "scroll",
|
|
||||||
paddingBottom: "15px",
|
paddingBottom: "15px",
|
||||||
"&::-webkit-scrollbar": { width: 0 },
|
"&::-webkit-scrollbar": { width: 0 },
|
||||||
|
position: "relative",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Box
|
<Box
|
||||||
|
ref={containerRef}
|
||||||
sx={{
|
sx={{
|
||||||
minWidth: "950px",
|
overflow: "auto",
|
||||||
display: "flex",
|
display: "flex",
|
||||||
gap: "20px",
|
gap: "20px",
|
||||||
mt: "40px",
|
mt: "40px",
|
||||||
|
position: "relative",
|
||||||
padding: isSmallMonitor ? "0 15px 15px" : 0,
|
padding: isSmallMonitor ? "0 15px 15px" : 0,
|
||||||
|
scrollbarWidth: "none",
|
||||||
|
"&::-webkit-scrollbar": {
|
||||||
|
width: 0,
|
||||||
|
},
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
|
sx={{ minWidth: "325px" }}
|
||||||
|
ref={(ref) => (buttonRefs.current[0] = ref as HTMLButtonElement)}
|
||||||
variant="text"
|
variant="text"
|
||||||
data-cy="select-quiz-layout-standard"
|
data-cy="select-quiz-layout-standard"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
@ -58,6 +93,8 @@ export default function Steptwo() {
|
|||||||
/>
|
/>
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
|
sx={{ minWidth: "325px" }}
|
||||||
|
ref={(ref) => (buttonRefs.current[1] = ref as HTMLButtonElement)}
|
||||||
variant="text"
|
variant="text"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setQuizStartpageType(quiz.id, "expanded");
|
setQuizStartpageType(quiz.id, "expanded");
|
||||||
@ -74,6 +111,8 @@ export default function Steptwo() {
|
|||||||
/>
|
/>
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
|
sx={{ minWidth: "325px" }}
|
||||||
|
ref={(ref) => (buttonRefs.current[2] = ref as HTMLButtonElement)}
|
||||||
variant="text"
|
variant="text"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setQuizStartpageType(quiz.id, "centered");
|
setQuizStartpageType(quiz.id, "centered");
|
||||||
@ -90,6 +129,32 @@ export default function Steptwo() {
|
|||||||
/>
|
/>
|
||||||
</Button>
|
</Button>
|
||||||
</Box>
|
</Box>
|
||||||
|
{isSlider && (
|
||||||
|
<>
|
||||||
|
<img
|
||||||
|
onClick={handlePrevClick}
|
||||||
|
style={{
|
||||||
|
position: "absolute",
|
||||||
|
left: "0",
|
||||||
|
top: "55%",
|
||||||
|
width: "40px",
|
||||||
|
top: "calc(50% - 40px)",
|
||||||
|
}}
|
||||||
|
src={arrowLeftIcon}
|
||||||
|
/>
|
||||||
|
<img
|
||||||
|
onClick={handleNextClick}
|
||||||
|
style={{
|
||||||
|
position: "absolute",
|
||||||
|
right: "0",
|
||||||
|
top: "55%",
|
||||||
|
width: "40px",
|
||||||
|
top: "calc(50% - 40px)",
|
||||||
|
}}
|
||||||
|
src={arrowRightIcon}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
|
@ -128,7 +128,7 @@ export const Header = ({ setMobileSidebar }: HeaderProps) => {
|
|||||||
>
|
>
|
||||||
{isMobile ? (
|
{isMobile ? (
|
||||||
<>
|
<>
|
||||||
<ToTariffsButton color={"#F2F3F7"} />
|
<ToTariffsButton />
|
||||||
<Burger
|
<Burger
|
||||||
onClick={() => setMobileSidebar((visible: boolean) => !visible)}
|
onClick={() => setMobileSidebar((visible: boolean) => !visible)}
|
||||||
style={{ fontSize: "30px", color: "white", cursor: "pointer" }}
|
style={{ fontSize: "30px", color: "white", cursor: "pointer" }}
|
||||||
@ -136,7 +136,7 @@ export const Header = ({ setMobileSidebar }: HeaderProps) => {
|
|||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<ToTariffsButton color={"#7e2aea"} />
|
<ToTariffsButton />
|
||||||
<LogoutButton onClick={handleLogoutClick} />
|
<LogoutButton onClick={handleLogoutClick} />
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
@ -58,7 +58,7 @@ export default function HeaderFull() {
|
|||||||
<Logotip width={124} />
|
<Logotip width={124} />
|
||||||
</Link>
|
</Link>
|
||||||
<Box sx={{ display: "flex", ml: "auto" }}>
|
<Box sx={{ display: "flex", ml: "auto" }}>
|
||||||
<ToTariffsButton color={"#7e2aea"} />
|
<ToTariffsButton />
|
||||||
<LogoutButton
|
<LogoutButton
|
||||||
onClick={handleLogoutClick}
|
onClick={handleLogoutClick}
|
||||||
sx={{
|
sx={{
|
||||||
|
@ -37,7 +37,7 @@ export const ButtonTestPublication = () => {
|
|||||||
lineHeight: "18px",
|
lineHeight: "18px",
|
||||||
height: "34px",
|
height: "34px",
|
||||||
whiteSpace: "nowrap",
|
whiteSpace: "nowrap",
|
||||||
minWidth: "116px",
|
minWidth: "146px",
|
||||||
}}
|
}}
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
Object.keys(whyCantCreatePublic).length === 0
|
Object.keys(whyCantCreatePublic).length === 0
|
||||||
|
@ -1,10 +1,17 @@
|
|||||||
import { Button } from "@mui/material";
|
import { Button, SxProps, Theme } from "@mui/material";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
|
interface Props {
|
||||||
|
variant: string;
|
||||||
|
color?: string;
|
||||||
|
sx?: SxProps<Theme>;
|
||||||
|
}
|
||||||
|
|
||||||
export const ToTariffsButton = (color?: string) => {
|
export const ToTariffsButton = () => {
|
||||||
return (
|
return (
|
||||||
<Link to="/tariffs">
|
<Link to="/tariffs">
|
||||||
<Button sx={{ color: color }}>Пополнить</Button>
|
<Button variant={"contained"} sx={{ height: "34px", fontSize: "14px" }}>
|
||||||
|
Пополнить
|
||||||
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -11,7 +11,13 @@ export const replaceSpacesToEmptyLines = <T = unknown>(object: T): T => {
|
|||||||
|
|
||||||
for (const [key, value] of Object.entries(object)) {
|
for (const [key, value] of Object.entries(object)) {
|
||||||
if (typeof value === "string") {
|
if (typeof value === "string") {
|
||||||
result[key] = value.replace(" ", "").replace(/\" \"/g, '""');
|
if (value === " ") {
|
||||||
|
result[key] = value.replace(" ", "");
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
result[key] = value.replace(/\" \"/g, '""');
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
50
yarn.lock
50
yarn.lock
@ -2436,6 +2436,13 @@
|
|||||||
hoist-non-react-statics "^3.3.0"
|
hoist-non-react-statics "^3.3.0"
|
||||||
redux "^4.0.0"
|
redux "^4.0.0"
|
||||||
|
|
||||||
|
"@types/react-slick@^0.23.13":
|
||||||
|
version "0.23.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/react-slick/-/react-slick-0.23.13.tgz#037434e73a58063047b121e08565f7185d811f36"
|
||||||
|
integrity sha512-bNZfDhe/L8t5OQzIyhrRhBr/61pfBcWaYJoq6UDqFtv5LMwfg4NsVDD2J8N01JqdAdxLjOt66OZEp6PX+dGs/A==
|
||||||
|
dependencies:
|
||||||
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react-transition-group@^4.4.7", "@types/react-transition-group@^4.4.8":
|
"@types/react-transition-group@^4.4.7", "@types/react-transition-group@^4.4.8":
|
||||||
version "4.4.9"
|
version "4.4.9"
|
||||||
resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz"
|
resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz"
|
||||||
@ -3617,6 +3624,11 @@ cjs-module-lexer@^1.0.0:
|
|||||||
resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz"
|
resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz"
|
||||||
integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
|
integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
|
||||||
|
|
||||||
|
classnames@^2.2.5:
|
||||||
|
version "2.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
|
||||||
|
integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
|
||||||
|
|
||||||
clean-css@^5.2.2:
|
clean-css@^5.2.2:
|
||||||
version "5.3.1"
|
version "5.3.1"
|
||||||
resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz"
|
resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz"
|
||||||
@ -4633,6 +4645,11 @@ enhanced-resolve@^5.10.0:
|
|||||||
graceful-fs "^4.2.4"
|
graceful-fs "^4.2.4"
|
||||||
tapable "^2.2.0"
|
tapable "^2.2.0"
|
||||||
|
|
||||||
|
enquire.js@^2.1.6:
|
||||||
|
version "2.1.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814"
|
||||||
|
integrity sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==
|
||||||
|
|
||||||
enquirer@^2.3.6:
|
enquirer@^2.3.6:
|
||||||
version "2.4.1"
|
version "2.4.1"
|
||||||
resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz"
|
resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz"
|
||||||
@ -6965,6 +6982,13 @@ json-stringify-safe@~5.0.1:
|
|||||||
resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
|
resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
|
||||||
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
|
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
|
||||||
|
|
||||||
|
json2mq@^0.2.0:
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a"
|
||||||
|
integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==
|
||||||
|
dependencies:
|
||||||
|
string-convert "^0.2.0"
|
||||||
|
|
||||||
json5@^1.0.1:
|
json5@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz"
|
resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz"
|
||||||
@ -8919,6 +8943,17 @@ react-scripts@5.0.1:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "^2.3.2"
|
fsevents "^2.3.2"
|
||||||
|
|
||||||
|
react-slick@^0.29.0:
|
||||||
|
version "0.29.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.29.0.tgz#0bed5ea42bf75a23d40c0259b828ed27627b51bb"
|
||||||
|
integrity sha512-TGdOKE+ZkJHHeC4aaoH85m8RnFyWqdqRfAGkhd6dirmATXMZWAxOpTLmw2Ll/jPTQ3eEG7ercFr/sbzdeYCJXA==
|
||||||
|
dependencies:
|
||||||
|
classnames "^2.2.5"
|
||||||
|
enquire.js "^2.1.6"
|
||||||
|
json2mq "^0.2.0"
|
||||||
|
lodash.debounce "^4.0.8"
|
||||||
|
resize-observer-polyfill "^1.5.0"
|
||||||
|
|
||||||
react-transition-group@^4.4.5:
|
react-transition-group@^4.4.5:
|
||||||
version "4.4.5"
|
version "4.4.5"
|
||||||
resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz"
|
resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz"
|
||||||
@ -9122,6 +9157,11 @@ requires-port@^1.0.0:
|
|||||||
resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
|
resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
|
||||||
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
|
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
|
||||||
|
|
||||||
|
resize-observer-polyfill@^1.5.0:
|
||||||
|
version "1.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
|
||||||
|
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
|
||||||
|
|
||||||
resolve-cwd@^3.0.0:
|
resolve-cwd@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz"
|
resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz"
|
||||||
@ -9529,6 +9569,11 @@ slice-ansi@^7.0.0:
|
|||||||
ansi-styles "^6.2.1"
|
ansi-styles "^6.2.1"
|
||||||
is-fullwidth-code-point "^5.0.0"
|
is-fullwidth-code-point "^5.0.0"
|
||||||
|
|
||||||
|
slick-carousel@^1.8.1:
|
||||||
|
version "1.8.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.8.1.tgz#a4bfb29014887bb66ce528b90bd0cda262cc8f8d"
|
||||||
|
integrity sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==
|
||||||
|
|
||||||
sockjs@^0.3.24:
|
sockjs@^0.3.24:
|
||||||
version "0.3.24"
|
version "0.3.24"
|
||||||
resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz"
|
resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz"
|
||||||
@ -9667,6 +9712,11 @@ string-argv@0.3.2:
|
|||||||
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6"
|
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6"
|
||||||
integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==
|
integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==
|
||||||
|
|
||||||
|
string-convert@^0.2.0:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97"
|
||||||
|
integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==
|
||||||
|
|
||||||
string-length@^4.0.1:
|
string-length@^4.0.1:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz"
|
resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz"
|
||||||
|
Loading…
Reference in New Issue
Block a user