diff --git a/.dockerignore b/.dockerignore
index b0542ba..36d88eb 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,4 +1,5 @@
/dist
+/dist-package
/widget
Makefile
README.md
diff --git a/.gitignore b/.gitignore
index a302ba2..5d68f75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,7 @@ lerna-debug.log*
node_modules
dist
+dist-package
dist-ssr
widget
*.local
@@ -22,4 +23,4 @@ widget
*.ntvs*
*.njsproj
*.sln
-*.sw?
\ No newline at end of file
+*.sw?
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f6f7e1b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,52 @@
+## Виджет
+### Сборка
+```bash
+yarn build:widget
+```
+### Использование
+```html
+
+```
+## Npm-пакет
+### Перед использованием и публикацией
+```bash
+npm config set //penahub.gitlab.yandexcloud.net/api/v4/packages/npm/:_authToken=INSTANCE_TOKEN
+npm config set //penahub.gitlab.yandexcloud.net/api/v4/projects/43/packages/npm/:_authToken=PROJECT_TOKEN
+```
+### Публикация
+1. Инкрементировать версию в package.json
+2.
+```bash
+yarn publish
+```
+3. Нажать enter при запросе версии
+### Установка
+Добавить в корень проекта файл .yarnrc с содержимым
+```
+"@frontend:registry" "https://penahub.gitlab.yandexcloud.net/api/v4/packages/npm/"
+```
+```bash
+yarn add @frontend/squzanswerer
+```
+Peer dependencies:
+```bash
+yarn add @emoji-mart/data @emoji-mart/react @emotion/react @emotion/styled @mui/icons-material @mui/material @mui/x-date-pickers axios emoji-mart immer moment nanoid notistack react-dom react-error-boundary react-router-dom react swr use-debounce zustand
+```
+### Использование
+```ts
+import { QuizView } from "@frontend/squzanswerer";
+
+export default function Component() {
+ // ...
+ return (
+
+ }
+}
+```
diff --git a/src/api/quizRelase.ts b/lib/api/quizRelase.ts
similarity index 100%
rename from src/api/quizRelase.ts
rename to lib/api/quizRelase.ts
diff --git a/src/assets/icons/ArrowDownIcon.tsx b/lib/assets/icons/ArrowDownIcon.tsx
old mode 100755
new mode 100644
similarity index 100%
rename from src/assets/icons/ArrowDownIcon.tsx
rename to lib/assets/icons/ArrowDownIcon.tsx
diff --git a/src/assets/icons/BlankImage.tsx b/lib/assets/icons/BlankImage.tsx
similarity index 100%
rename from src/assets/icons/BlankImage.tsx
rename to lib/assets/icons/BlankImage.tsx
diff --git a/src/assets/icons/CalendarIcon.tsx b/lib/assets/icons/CalendarIcon.tsx
similarity index 100%
rename from src/assets/icons/CalendarIcon.tsx
rename to lib/assets/icons/CalendarIcon.tsx
diff --git a/src/assets/icons/Checkbox.tsx b/lib/assets/icons/Checkbox.tsx
similarity index 100%
rename from src/assets/icons/Checkbox.tsx
rename to lib/assets/icons/Checkbox.tsx
diff --git a/src/assets/icons/CloseBold.tsx b/lib/assets/icons/CloseBold.tsx
similarity index 100%
rename from src/assets/icons/CloseBold.tsx
rename to lib/assets/icons/CloseBold.tsx
diff --git a/src/assets/icons/ContactFormIcon/AddressIcon.tsx b/lib/assets/icons/ContactFormIcon/AddressIcon.tsx
similarity index 100%
rename from src/assets/icons/ContactFormIcon/AddressIcon.tsx
rename to lib/assets/icons/ContactFormIcon/AddressIcon.tsx
diff --git a/src/assets/icons/ContactFormIcon/EmailIcon.tsx b/lib/assets/icons/ContactFormIcon/EmailIcon.tsx
similarity index 100%
rename from src/assets/icons/ContactFormIcon/EmailIcon.tsx
rename to lib/assets/icons/ContactFormIcon/EmailIcon.tsx
diff --git a/src/assets/icons/ContactFormIcon/NameIcon.tsx b/lib/assets/icons/ContactFormIcon/NameIcon.tsx
similarity index 100%
rename from src/assets/icons/ContactFormIcon/NameIcon.tsx
rename to lib/assets/icons/ContactFormIcon/NameIcon.tsx
diff --git a/src/assets/icons/ContactFormIcon/PhoneIcon.tsx b/lib/assets/icons/ContactFormIcon/PhoneIcon.tsx
similarity index 100%
rename from src/assets/icons/ContactFormIcon/PhoneIcon.tsx
rename to lib/assets/icons/ContactFormIcon/PhoneIcon.tsx
diff --git a/src/assets/icons/ContactFormIcon/TextIcon.tsx b/lib/assets/icons/ContactFormIcon/TextIcon.tsx
similarity index 100%
rename from src/assets/icons/ContactFormIcon/TextIcon.tsx
rename to lib/assets/icons/ContactFormIcon/TextIcon.tsx
diff --git a/src/assets/icons/Info.tsx b/lib/assets/icons/Info.tsx
similarity index 100%
rename from src/assets/icons/Info.tsx
rename to lib/assets/icons/Info.tsx
diff --git a/src/assets/icons/NameplateLogo.tsx b/lib/assets/icons/NameplateLogo.tsx
similarity index 100%
rename from src/assets/icons/NameplateLogo.tsx
rename to lib/assets/icons/NameplateLogo.tsx
diff --git a/src/assets/icons/NameplateLogoFQ.tsx b/lib/assets/icons/NameplateLogoFQ.tsx
similarity index 100%
rename from src/assets/icons/NameplateLogoFQ.tsx
rename to lib/assets/icons/NameplateLogoFQ.tsx
diff --git a/src/assets/icons/NameplateLogoFQDark.tsx b/lib/assets/icons/NameplateLogoFQDark.tsx
similarity index 100%
rename from src/assets/icons/NameplateLogoFQDark.tsx
rename to lib/assets/icons/NameplateLogoFQDark.tsx
diff --git a/src/assets/icons/UploadIcon.tsx b/lib/assets/icons/UploadIcon.tsx
old mode 100755
new mode 100644
similarity index 100%
rename from src/assets/icons/UploadIcon.tsx
rename to lib/assets/icons/UploadIcon.tsx
diff --git a/src/assets/icons/questionsPage/FlagIcon.tsx b/lib/assets/icons/questionsPage/FlagIcon.tsx
similarity index 100%
rename from src/assets/icons/questionsPage/FlagIcon.tsx
rename to lib/assets/icons/questionsPage/FlagIcon.tsx
diff --git a/src/assets/icons/questionsPage/StarIconMini.tsx b/lib/assets/icons/questionsPage/StarIconMini.tsx
similarity index 100%
rename from src/assets/icons/questionsPage/StarIconMini.tsx
rename to lib/assets/icons/questionsPage/StarIconMini.tsx
diff --git a/src/assets/icons/questionsPage/hashtagIcon.tsx b/lib/assets/icons/questionsPage/hashtagIcon.tsx
similarity index 100%
rename from src/assets/icons/questionsPage/hashtagIcon.tsx
rename to lib/assets/icons/questionsPage/hashtagIcon.tsx
diff --git a/src/assets/icons/questionsPage/heartIcon.tsx b/lib/assets/icons/questionsPage/heartIcon.tsx
similarity index 100%
rename from src/assets/icons/questionsPage/heartIcon.tsx
rename to lib/assets/icons/questionsPage/heartIcon.tsx
diff --git a/src/assets/icons/questionsPage/lightbulbIcon.tsx b/lib/assets/icons/questionsPage/lightbulbIcon.tsx
similarity index 100%
rename from src/assets/icons/questionsPage/lightbulbIcon.tsx
rename to lib/assets/icons/questionsPage/lightbulbIcon.tsx
diff --git a/src/assets/icons/questionsPage/likeIcon.tsx b/lib/assets/icons/questionsPage/likeIcon.tsx
similarity index 100%
rename from src/assets/icons/questionsPage/likeIcon.tsx
rename to lib/assets/icons/questionsPage/likeIcon.tsx
diff --git a/src/assets/icons/questionsPage/tropfyIcon.tsx b/lib/assets/icons/questionsPage/tropfyIcon.tsx
similarity index 100%
rename from src/assets/icons/questionsPage/tropfyIcon.tsx
rename to lib/assets/icons/questionsPage/tropfyIcon.tsx
diff --git a/src/QuizAnswerer.tsx b/lib/components/QuizAnswerer.tsx
similarity index 93%
rename from src/QuizAnswerer.tsx
rename to lib/components/QuizAnswerer.tsx
index d39e206..50fa0cd 100644
--- a/src/QuizAnswerer.tsx
+++ b/lib/components/QuizAnswerer.tsx
@@ -10,8 +10,8 @@ import { SnackbarProvider } from 'notistack';
import { Suspense } from "react";
import { ErrorBoundary } from "react-error-boundary";
import { SWRConfig } from "swr";
-import ViewPublicationPage from "./pages/ViewPublicationPage/ViewPublicationPage";
-import lightTheme from "./utils/themes/light";
+import ViewPublicationPage from "./ViewPublicationPage/ViewPublicationPage";
+import lightTheme from "@utils/themes/light";
moment.locale("ru");
diff --git a/src/WidgetApp.tsx b/lib/components/QuizView.tsx
similarity index 74%
rename from src/WidgetApp.tsx
rename to lib/components/QuizView.tsx
index f04d727..bddf360 100644
--- a/src/WidgetApp.tsx
+++ b/lib/components/QuizView.tsx
@@ -1,18 +1,22 @@
import { Box } from "@mui/material";
-import { startTransition, useEffect, useRef, useState } from "react";
+import { startTransition, useEffect, useLayoutEffect, useRef, useState } from "react";
+import { QuizIdContext } from "@contexts/QuizIdContext";
+import { RootContainerWidthContext } from "@contexts/RootContainerWidthContext";
import QuizAnswerer from "./QuizAnswerer";
-import { QuizIdContext } from "./contexts/QuizIdContext";
-import { RootContainerWidthContext } from "./contexts/RootContainerWidthContext";
interface Props {
quizId: string;
}
-export default function WidgetApp({ quizId }: Props) {
+export default function QuizView({ quizId }: Props) {
const [rootContainerSize, setRootContainerSize] = useState(() => window.innerWidth);
const rootContainerRef = useRef(null);
+ useLayoutEffect(() => {
+ if (rootContainerRef.current) setRootContainerSize(rootContainerRef.current.clientWidth);
+ }, []);
+
useEffect(() => {
const handleWindowResize = () => {
startTransition(() => {
diff --git a/src/pages/ViewPublicationPage/ApologyPage.tsx b/lib/components/ViewPublicationPage/ApologyPage.tsx
similarity index 100%
rename from src/pages/ViewPublicationPage/ApologyPage.tsx
rename to lib/components/ViewPublicationPage/ApologyPage.tsx
diff --git a/src/pages/ViewPublicationPage/ContactForm.tsx b/lib/components/ViewPublicationPage/ContactForm.tsx
similarity index 100%
rename from src/pages/ViewPublicationPage/ContactForm.tsx
rename to lib/components/ViewPublicationPage/ContactForm.tsx
diff --git a/src/pages/ViewPublicationPage/Footer.tsx b/lib/components/ViewPublicationPage/Footer.tsx
similarity index 100%
rename from src/pages/ViewPublicationPage/Footer.tsx
rename to lib/components/ViewPublicationPage/Footer.tsx
diff --git a/src/pages/ViewPublicationPage/Question.tsx b/lib/components/ViewPublicationPage/Question.tsx
similarity index 100%
rename from src/pages/ViewPublicationPage/Question.tsx
rename to lib/components/ViewPublicationPage/Question.tsx
diff --git a/src/pages/ViewPublicationPage/ResultForm.tsx b/lib/components/ViewPublicationPage/ResultForm.tsx
similarity index 94%
rename from src/pages/ViewPublicationPage/ResultForm.tsx
rename to lib/components/ViewPublicationPage/ResultForm.tsx
index 1f4b153..267130a 100644
--- a/src/pages/ViewPublicationPage/ResultForm.tsx
+++ b/lib/components/ViewPublicationPage/ResultForm.tsx
@@ -8,11 +8,11 @@ import {
import { NameplateLogo } from "@icons/NameplateLogo";
import YoutubeEmbedIframe from "./tools/YoutubeEmbedIframe";
-import { setCurrentQuizStep } from "@stores/quizView/store";
import { useQuizData } from "@utils/hooks/useQuizData";
import { quizThemes } from "@utils/themes/Publication/themePublication";
import { useRootContainerSize } from "../../contexts/RootContainerWidthContext";
import type { QuizQuestionResult } from "../../model/questionTypes/result";
+import { setCurrentQuizStep } from "@stores/quizView";
type ResultFormProps = {
@@ -132,6 +132,7 @@ export const ResultForm = ({ resultQuestion }: ResultFormProps) => {
mt: "15px",
gap: "10px",
textDecoration: "none",
+ mb: "5px"
}}
>
{
display: "flex",
justifyContent: "center",
alignItems: "center",
- p: settings.cfg.resultInfo.showResultForm === "before" ||
+ p:
+ (
+ settings.cfg.resultInfo.showResultForm === "before" &&
+ !Boolean(settings.cfg.score)
+ ) ||
(
settings.cfg.resultInfo.showResultForm === "after" &&
resultQuestion.content.redirect
- ) ? "20px" : "0",
+ )
+ ? "20px" : "0",
}}
>
- {settings.cfg.resultInfo.showResultForm === "before" && (
+ {settings.cfg.resultInfo.showResultForm === "before" && !Boolean(settings.cfg.score) && (