diff --git a/src/pages/startPage/StartPageSettings.tsx b/src/pages/startPage/StartPageSettings.tsx
index c1b0d330..69546533 100755
--- a/src/pages/startPage/StartPageSettings.tsx
+++ b/src/pages/startPage/StartPageSettings.tsx
@@ -64,11 +64,11 @@ export default function StartPageSettings() {
const [mobileVersion, setMobileVersion] = useState(false);
if (!quiz) return null; // TODO throw and catch with error boundary
-
+
const MobileVersionHC = (bool: boolean) => {
setMobileVersion(bool);
};
-
+
const designType = quiz?.config?.startpageType;
const favIconDropZoneElement = (
@@ -475,36 +475,37 @@ export default function StartPageSettings() {
>
Расположение элементов
-
- updateQuiz(quiz.id, quiz => {
- quiz.config.startpage.position = "left";
- })}
- isActive={quiz.config.startpage.position === "left"}
- Icon={AlignLeftIcon}
- />
- updateQuiz(quiz.id, quiz => {
- quiz.config.startpage.position = "center";
- })}
- isActive={quiz.config.startpage.position === "center"}
- Icon={AlignCenterIcon}
- sx={{ display: designType === "centered" ? "flex" : "none" }}
- />
- updateQuiz(quiz.id, quiz => {
- quiz.config.startpage.position = "right";
- })}
- isActive={quiz.config.startpage.position === "right"}
- Icon={AlignRightIcon}
- />
-
-
+ {designType !== "centered" &&
+
+ updateQuiz(quiz.id, quiz => {
+ quiz.config.startpage.position = "left";
+ })}
+ isActive={quiz.config.startpage.position === "left"}
+ Icon={AlignLeftIcon}
+ />
+ updateQuiz(quiz.id, quiz => {
+ quiz.config.startpage.position = "center";
+ })}
+ isActive={quiz.config.startpage.position === "center"}
+ Icon={AlignCenterIcon}
+ sx={{ display: designType === "standard" ? "none" : "flex" }}
+ />
+ updateQuiz(quiz.id, quiz => {
+ quiz.config.startpage.position = "right";
+ })}
+ isActive={quiz.config.startpage.position === "right"}
+ Icon={AlignRightIcon}
+ />
+
+ }
{(isTablet || !isSmallMonitor) && (
<>
{
+ navigator.clipboard.writeText(quiz.config.info.phonenumber);
+ };
+
+ const background = quiz.config.startpage.background.type === "image"
+ ? quiz.config.startpage.background.desktop
+ ? (
+
+ )
+ : null
+ : quiz.config.startpage.background.type === "video"
+ ? quiz.config.startpage.background.video
+ ? (
+
+ )
+ : null
+ : null;
return (
-
-
+
-
+ alignItems: "center",
+ gap: "20px",
+ }}>
{quiz.config.startpage.logo && (
-
+ >}
+ quizMainBlock={<>
+
{quiz.name}
{quiz.config.startpage.description}
@@ -89,42 +95,146 @@ export default function QuizPreviewLayout() {
padding: "10px 15px",
}}
>
- {quiz.config.startpage.button ? quiz.config.startpage.button : "Пройти тест"}
+ {quiz.config.startpage.button.trim() ? quiz.config.startpage.button : "Пройти тест"}
-
- {quiz.config.info.phonenumber}
-
+ {quiz.config.info.clickable ? (
+ isMobileDevice ? (
+
+
+ {quiz.config.info.phonenumber}
+
+
+ ) : (
+
+
+ {quiz.config.info.phonenumber}
+
+
+ )
+ ) : (
+
+ {quiz.config.info.phonenumber}
+
+ )}
{quiz.config.info.law}
-
- {!isTablet && isMediaFileExist && (
-
- {quiz.config.startpage.background.type === "image" &&
- quiz.config.startpage.background.desktop && (
-
- )}
- {quiz.config.startpage.background.type === "video" &&
- quiz.config.startpage.background.video && (
-
- )}
-
- )}
-
+ >}
+ backgroundBlock={background}
+ startpageType={quiz.config.startpageType}
+ alignType={quiz.config.startpage.position}
+ />
);
}
+
+function QuizPreviewLayoutByType({ quizHeaderBlock, quizMainBlock, backgroundBlock, startpageType, alignType }: {
+ quizHeaderBlock: JSX.Element;
+ quizMainBlock: JSX.Element;
+ backgroundBlock: JSX.Element | null;
+ startpageType: QuizStartpageType;
+ alignType: QuizStartpageAlignType;
+}) {
+ const theme = useTheme();
+ const isTablet = useMediaQuery(theme.breakpoints.down(630));
+
+ switch (startpageType) {
+ case null:
+ case "standard": {
+ return (
+
+
+ {quizHeaderBlock}
+ {quizMainBlock}
+
+
+ {backgroundBlock}
+
+
+ );
+ }
+ case "expanded": {
+ return (
+
+
+ {quizHeaderBlock}
+ {quizMainBlock}
+
+
+ {backgroundBlock}
+
+
+ );
+ }
+ case "centered": {
+ return (
+
+ {quizHeaderBlock}
+ {backgroundBlock &&
+
+ {backgroundBlock}
+
+ }
+ {quizMainBlock}
+
+ );
+ }
+ default: notReachable(startpageType);
+ }
+}
+
+const startpageAlignTypeToJustifyContent: Record = {
+ left: "start",
+ center: "center",
+ right: "end",
+};
diff --git a/src/ui_kit/StartPagePreview/YoutubeEmbedIframe.tsx b/src/ui_kit/StartPagePreview/YoutubeEmbedIframe.tsx
index 6f43440f..5e83bf19 100644
--- a/src/ui_kit/StartPagePreview/YoutubeEmbedIframe.tsx
+++ b/src/ui_kit/StartPagePreview/YoutubeEmbedIframe.tsx
@@ -17,6 +17,7 @@ export default function YoutubeEmbedIframe({ videoUrl }: Props) {
{
topLeft: {
top: "-1px",
left: "-1px",
+ zIndex: 100,
},
}}
style={{
diff --git a/src/utils/hooks/useUADevice.ts b/src/utils/hooks/useUADevice.ts
new file mode 100644
index 00000000..d50db9eb
--- /dev/null
+++ b/src/utils/hooks/useUADevice.ts
@@ -0,0 +1,13 @@
+import { useEffect, useState } from "react";
+
+export function useUADevice(): { isMobileDevice: boolean; } {
+ const [isMobileDevice, setIsMobileDevice] = useState(false);
+
+ useEffect(() => {
+ const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
+
+ setIsMobileDevice(isMobile);
+ }, [navigator.userAgent]);
+
+ return { isMobileDevice };
+}