diff --git a/ CHANGELOG.md b/ CHANGELOG.md
new file mode 100644
index 00000000..dcee8de5
--- /dev/null
+++ b/ CHANGELOG.md
@@ -0,0 +1 @@
+1.0.0 Добавлены фичи "мультиответ", "перенос строки в своём ответе", "свой ответ", "плейсхолдер своего ответа"
\ No newline at end of file
diff --git a/src/model/questionTypes/shared.ts b/src/model/questionTypes/shared.ts
index e85692af..43679060 100644
--- a/src/model/questionTypes/shared.ts
+++ b/src/model/questionTypes/shared.ts
@@ -30,6 +30,17 @@ export function createQuestionVariant(): QuestionVariant {
answer: "",
extendedText: "",
hints: "",
+ isOwn: false,
+ originalImageUrl: "",
+ };
+}
+export function createQuestionOwnVariant(): QuestionVariant {
+ return {
+ id: nanoid(),
+ answer: "",
+ extendedText: "",
+ hints: "",
+ isOwn: true,
originalImageUrl: "",
};
}
diff --git a/src/pages/ContactFormPage/ButtonSettingForms.tsx b/src/pages/ContactFormPage/ButtonSettingForms.tsx
index 023fbf5d..d6614e51 100644
--- a/src/pages/ContactFormPage/ButtonSettingForms.tsx
+++ b/src/pages/ContactFormPage/ButtonSettingForms.tsx
@@ -7,10 +7,10 @@ import SupplementIcon from "../../assets/icons/ContactFormIcon/supplementIcon";
interface Props {
switchState: string;
- SSHC: (data: string) => void;
+ setSwitchState: (data: string) => void;
}
-export default function ButtonSettingForms({ SSHC, switchState }: Props) {
+export default function ButtonSettingForms({ setSwitchState, switchState }: Props) {
const theme = useTheme();
const buttonSetting: { icon: JSX.Element; title: string; value: string }[] = [
{
@@ -68,7 +68,7 @@ export default function ButtonSettingForms({ SSHC, switchState }: Props) {
{
- SSHC(e.value);
+ setSwitchState(e.value);
}}
sx={{
backgroundColor:
diff --git a/src/pages/IntegrationsPage/IntegrationsModal/Amo/AnswerItem.tsx b/src/pages/IntegrationsPage/IntegrationsModal/Amo/AnswerItem.tsx
index a237cd7c..b2e7545d 100644
--- a/src/pages/IntegrationsPage/IntegrationsModal/Amo/AnswerItem.tsx
+++ b/src/pages/IntegrationsPage/IntegrationsModal/Amo/AnswerItem.tsx
@@ -9,8 +9,6 @@ type AnswerItemProps = {
};
export const AnswerItem: FC = ({ fieldName, fieldValue, deleteHC }) => {
- console.log("AnswerItem")
- console.log(fieldName)
const theme = useTheme();
return (
= ({
selectedTags,
}) => {
const theme = useTheme();
- console.log(step)
const isMobile = useMediaQuery(theme.breakpoints.down(600));
if (step === 0) {
return;
diff --git a/src/pages/Landing/Tariffs/Tariffs.tsx b/src/pages/Landing/Tariffs/Tariffs.tsx
index 8628e66c..96dfe63c 100644
--- a/src/pages/Landing/Tariffs/Tariffs.tsx
+++ b/src/pages/Landing/Tariffs/Tariffs.tsx
@@ -59,7 +59,7 @@ export const Tariffs = () => {
type: "duration",
description: "30 дней безлимитного пользования сервисом",
actualPrice: "969",
- oldPrice: "1024",
+ oldPrice: "1020",
discount: "5",
},
{
@@ -99,7 +99,7 @@ export const Tariffs = () => {
type: "requests",
description: "Полное прохождение 1000 опросов респондентом",
actualPrice: "12 740",
- oldPrice: "2 000",
+ oldPrice: "20 000",
discount: "36",
},
{
diff --git a/src/pages/Questions/AnswerDraggableList/AnswerItem.tsx b/src/pages/Questions/AnswerDraggableList/AnswerItem.tsx
index 1b22b6aa..80d96dad 100644
--- a/src/pages/Questions/AnswerDraggableList/AnswerItem.tsx
+++ b/src/pages/Questions/AnswerDraggableList/AnswerItem.tsx
@@ -10,11 +10,11 @@ import {
useMediaQuery,
useTheme,
} from "@mui/material";
-import { addQuestionVariant, deleteQuestionVariant, setQuestionVariantField } from "@root/questions/actions";
+import { addQuestionVariant, deleteQuestionVariant, setQuestionVariantField, updateQuestion } from "@root/questions/actions";
import { enqueueSnackbar } from "notistack";
import { memo, type ChangeEvent, type FC, type KeyboardEvent, type ReactNode } from "react";
import { Draggable } from "react-beautiful-dnd";
-import type { QuestionVariant } from "@frontend/squzanswerer";
+import type { QuestionVariant, QuizQuestionVariant } from "@frontend/squzanswerer";
const TextField = MuiTextField as unknown as FC;
@@ -26,13 +26,22 @@ type AnswerItemProps = {
disableKeyDown?: boolean;
additionalContent?: ReactNode;
additionalMobile?: ReactNode;
+ isOwn: boolean;
+ ownPlaceholder: string;
};
const AnswerItem = memo(
- ({ index, variant, questionId, largeCheck = false, additionalContent, additionalMobile, disableKeyDown }) => {
+ ({ index, variant, questionId, largeCheck = false, additionalContent, additionalMobile, disableKeyDown, isOwn, ownPlaceholder }) => {
const theme = useTheme();
const isTablet = useMediaQuery(theme.breakpoints.down(790));
+ const setOwnPlaceholder = (replText: string) => {
+ updateQuestion(questionId, (question) => {
+ question.content.ownPlaceholder = replText;
+ console.log(question)
+ });
+ };
+
return (
(
}}
>
) => {
if (target.value.length <= 1000) {
+ isOwn ?
+ setOwnPlaceholder(target.value || " ")
+ :
setQuestionVariantField(questionId, variant.id, "answer", target.value || " ");
}
}}
onKeyDown={(event: KeyboardEvent) => {
if (disableKeyDown) {
- enqueueSnackbar("100 максимальное количество вопросов");
+ enqueueSnackbar("100 максимальное количество");
} else if (event.code === "Enter" && !largeCheck) {
addQuestionVariant(questionId);
}
@@ -88,7 +100,13 @@ const AnswerItem = memo(
deleteQuestionVariant(questionId, variant.id)}
+ onClick={() => {
+ isOwn ? updateQuestion(questionId, (question) => {
+ question.content.own = false;
+ })
+ :
+ deleteQuestionVariant(questionId, variant.id)
+ }}
>
(
"& .MuiInputBase-root": {
padding: additionalContent ? "5px 13px" : "13px",
borderRadius: "10px",
- background: "#ffffff",
+ background: isOwn ? "#F2F3F7" : "white",
"& input.MuiInputBase-input": {
height: "22px",
},
diff --git a/src/pages/Questions/AnswerDraggableList/ImageEditAnswerItem.tsx b/src/pages/Questions/AnswerDraggableList/ImageEditAnswerItem.tsx
index 7e45d691..d019b07e 100644
--- a/src/pages/Questions/AnswerDraggableList/ImageEditAnswerItem.tsx
+++ b/src/pages/Questions/AnswerDraggableList/ImageEditAnswerItem.tsx
@@ -14,6 +14,8 @@ type Props = Omit<
originalImageUrl?: string | null | undefined,
) => Promise;
openImageUploadModal: () => void;
+ isOwn: boolean;
+ ownPlaceholder: string;
};
export default function ImageEditAnswerItem({
@@ -27,6 +29,8 @@ export default function ImageEditAnswerItem({
pictureUploding,
openCropModal,
openImageUploadModal,
+ isOwn,
+ ownPlaceholder,
}: Props) {
const addOrEditImageButton = useMemo(() => {
return (
@@ -105,6 +109,8 @@ export default function ImageEditAnswerItem({
variant={variant}
additionalContent={addOrEditImageButton}
additionalMobile={addOrEditImageButtonMobile}
+ isOwn={isOwn}
+ ownPlaceholder={ownPlaceholder}
/>
);
}
diff --git a/src/pages/Questions/BranchingMap/CsComponent.tsx b/src/pages/Questions/Branching/BranchingMap/CsComponent.tsx
similarity index 100%
rename from src/pages/Questions/BranchingMap/CsComponent.tsx
rename to src/pages/Questions/Branching/BranchingMap/CsComponent.tsx
diff --git a/src/pages/Questions/BranchingMap/CsNodeButtons.tsx b/src/pages/Questions/Branching/BranchingMap/CsNodeButtons.tsx
similarity index 100%
rename from src/pages/Questions/BranchingMap/CsNodeButtons.tsx
rename to src/pages/Questions/Branching/BranchingMap/CsNodeButtons.tsx
diff --git a/src/pages/Questions/BranchingMap/FirstNodeField.tsx b/src/pages/Questions/Branching/BranchingMap/FirstNodeField.tsx
similarity index 100%
rename from src/pages/Questions/BranchingMap/FirstNodeField.tsx
rename to src/pages/Questions/Branching/BranchingMap/FirstNodeField.tsx
diff --git a/src/pages/Questions/BranchingMap/InfoBanner/InfoBanner.tsx b/src/pages/Questions/Branching/BranchingMap/InfoBanner/InfoBanner.tsx
similarity index 100%
rename from src/pages/Questions/BranchingMap/InfoBanner/InfoBanner.tsx
rename to src/pages/Questions/Branching/BranchingMap/InfoBanner/InfoBanner.tsx
diff --git a/src/pages/Questions/BranchingMap/PositionControl/PositionControl.tsx b/src/pages/Questions/Branching/BranchingMap/PositionControl/PositionControl.tsx
similarity index 100%
rename from src/pages/Questions/BranchingMap/PositionControl/PositionControl.tsx
rename to src/pages/Questions/Branching/BranchingMap/PositionControl/PositionControl.tsx
diff --git a/src/pages/Questions/BranchingMap/ZoomControl/ZoomControl.tsx b/src/pages/Questions/Branching/BranchingMap/ZoomControl/ZoomControl.tsx
similarity index 100%
rename from src/pages/Questions/BranchingMap/ZoomControl/ZoomControl.tsx
rename to src/pages/Questions/Branching/BranchingMap/ZoomControl/ZoomControl.tsx
diff --git a/src/pages/Questions/BranchingMap/helper.ts b/src/pages/Questions/Branching/BranchingMap/helper.ts
similarity index 100%
rename from src/pages/Questions/BranchingMap/helper.ts
rename to src/pages/Questions/Branching/BranchingMap/helper.ts
diff --git a/src/pages/Questions/BranchingMap/hooks/usePopper.ts b/src/pages/Questions/Branching/BranchingMap/hooks/usePopper.ts
similarity index 100%
rename from src/pages/Questions/BranchingMap/hooks/usePopper.ts
rename to src/pages/Questions/Branching/BranchingMap/hooks/usePopper.ts
diff --git a/src/pages/Questions/BranchingMap/hooks/useRemoveNode.ts b/src/pages/Questions/Branching/BranchingMap/hooks/useRemoveNode.ts
similarity index 100%
rename from src/pages/Questions/BranchingMap/hooks/useRemoveNode.ts
rename to src/pages/Questions/Branching/BranchingMap/hooks/useRemoveNode.ts
diff --git a/src/pages/Questions/BranchingMap/index.tsx b/src/pages/Questions/Branching/BranchingMap/index.tsx
similarity index 100%
rename from src/pages/Questions/BranchingMap/index.tsx
rename to src/pages/Questions/Branching/BranchingMap/index.tsx
diff --git a/src/pages/Questions/BranchingMap/nameCutter.ts b/src/pages/Questions/Branching/BranchingMap/nameCutter.ts
similarity index 100%
rename from src/pages/Questions/BranchingMap/nameCutter.ts
rename to src/pages/Questions/Branching/BranchingMap/nameCutter.ts
diff --git a/src/pages/Questions/BranchingMap/style/styles.css b/src/pages/Questions/Branching/BranchingMap/style/styles.css
similarity index 92%
rename from src/pages/Questions/BranchingMap/style/styles.css
rename to src/pages/Questions/Branching/BranchingMap/style/styles.css
index fe965139..a1683d74 100644
--- a/src/pages/Questions/BranchingMap/style/styles.css
+++ b/src/pages/Questions/Branching/BranchingMap/style/styles.css
@@ -38,7 +38,7 @@
align-items: center;
justify-content: center;
border-radius: 6px;
- background-image: url("../../../../assets/icons/ArrowGear.svg");
+ background-image: url("../../../../../assets/icons/ArrowGear.svg");
font-size: 0px;
background-repeat: no-repeat;
background-size: contain;
diff --git a/src/pages/Questions/BranchingMap/style/stylesheet.ts b/src/pages/Questions/Branching/BranchingMap/style/stylesheet.ts
similarity index 100%
rename from src/pages/Questions/BranchingMap/style/stylesheet.ts
rename to src/pages/Questions/Branching/BranchingMap/style/stylesheet.ts
diff --git a/src/pages/Questions/BranchingModal/BranchingQuestionsModal.tsx b/src/pages/Questions/Branching/BranchingModal/BranchingQuestionsModal.tsx
similarity index 99%
rename from src/pages/Questions/BranchingModal/BranchingQuestionsModal.tsx
rename to src/pages/Questions/Branching/BranchingModal/BranchingQuestionsModal.tsx
index 834608c5..80ac87ce 100644
--- a/src/pages/Questions/BranchingModal/BranchingQuestionsModal.tsx
+++ b/src/pages/Questions/Branching/BranchingModal/BranchingQuestionsModal.tsx
@@ -11,7 +11,7 @@ import {
useMediaQuery,
useTheme,
} from "@mui/material";
-import { createBranchingRuleMain } from "../../../model/questionTypes/shared";
+import { createBranchingRuleMain } from "../../../../model/questionTypes/shared";
import InfoIcon from "@icons/Info";
import { TypeSwitch } from "./Settings";
diff --git a/src/pages/Questions/BranchingModal/Settings.tsx b/src/pages/Questions/Branching/BranchingModal/Settings.tsx
similarity index 100%
rename from src/pages/Questions/BranchingModal/Settings.tsx
rename to src/pages/Questions/Branching/BranchingModal/Settings.tsx
diff --git a/src/pages/Questions/BranchingPanel/index.tsx b/src/pages/Questions/Branching/BranchingPanel/index.tsx
similarity index 100%
rename from src/pages/Questions/BranchingPanel/index.tsx
rename to src/pages/Questions/Branching/BranchingPanel/index.tsx
diff --git a/src/pages/Questions/BranchingQuestionsModal/index.tsx b/src/pages/Questions/Branching/BranchingQuestionsModal/index.tsx
similarity index 100%
rename from src/pages/Questions/BranchingQuestionsModal/index.tsx
rename to src/pages/Questions/Branching/BranchingQuestionsModal/index.tsx
diff --git a/src/pages/Questions/DeleteNodeModal/index.tsx b/src/pages/Questions/Branching/DeleteNodeModal/index.tsx
similarity index 100%
rename from src/pages/Questions/DeleteNodeModal/index.tsx
rename to src/pages/Questions/Branching/DeleteNodeModal/index.tsx
diff --git a/src/pages/Questions/QuestionSwitchWindowTool.tsx b/src/pages/Questions/Branching/QuestionSwitchWindowTool.tsx
similarity index 97%
rename from src/pages/Questions/QuestionSwitchWindowTool.tsx
rename to src/pages/Questions/Branching/QuestionSwitchWindowTool.tsx
index 95687b43..390c1d1d 100644
--- a/src/pages/Questions/QuestionSwitchWindowTool.tsx
+++ b/src/pages/Questions/Branching/QuestionSwitchWindowTool.tsx
@@ -1,7 +1,7 @@
import { Box, Skeleton, useMediaQuery, useTheme } from "@mui/material";
import { deleteTimeoutedQuestions } from "@utils/deleteTimeoutedQuestions";
import { lazy, Suspense, useCallback } from "react";
-import { DraggableList } from "./DraggableList";
+import { DraggableList } from "../DraggableList";
import { SwitchBranchingPanel } from "./SwitchBranchingPanel";
const BranchingMap = lazy(() =>
diff --git a/src/pages/Questions/SwitchBranchingPanel/QuestionsList.tsx b/src/pages/Questions/Branching/SwitchBranchingPanel/QuestionsList.tsx
similarity index 100%
rename from src/pages/Questions/SwitchBranchingPanel/QuestionsList.tsx
rename to src/pages/Questions/Branching/SwitchBranchingPanel/QuestionsList.tsx
diff --git a/src/pages/Questions/SwitchBranchingPanel/index.tsx b/src/pages/Questions/Branching/SwitchBranchingPanel/index.tsx
similarity index 100%
rename from src/pages/Questions/SwitchBranchingPanel/index.tsx
rename to src/pages/Questions/Branching/SwitchBranchingPanel/index.tsx
diff --git a/src/pages/Questions/DropDown/DropDown.tsx b/src/pages/Questions/DropDown/DropDown.tsx
index b1fe9e49..fd6640c9 100644
--- a/src/pages/Questions/DropDown/DropDown.tsx
+++ b/src/pages/Questions/DropDown/DropDown.tsx
@@ -3,7 +3,7 @@ import { useCallback, useState } from "react";
import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon";
import { useAddAnswer } from "../../../utils/hooks/useAddAnswer";
import { AnswerDraggableList } from "../AnswerDraggableList";
-import ButtonsOptions from "../ButtonsOptions";
+import ButtonsOptions from "../QuestionOptions/ButtonsLayout/ButtonsOptions";
import SwitchDropDown from "./switchDropDown";
import type { QuizQuestionSelect } from "@frontend/squzanswerer";
@@ -100,7 +100,7 @@ export default function DropDown({ question, openBranchingPage, setOpenBranching
("setting");
- const onClickAddAnAnswer = useAddAnswer();
+ const {onClickAddAnAnswer} = useAddAnswer();
const [open, setOpen] = useState(false);
const [anchorElement, setAnchorElement] = useState(null);
const [selectedVariant, setSelectedVariant] = useState(null);
@@ -29,9 +29,12 @@ export default function Emoji({ question, openBranchingPage, setOpenBranchingPag
return (
<>
+
(
+ variants={question.content.variants
+ .filter(variant => !variant.isOwn ? true : question.content.own && variant.isOwn)
+ .map((variant, index) => (
))}
/>
+
,
@@ -11,6 +12,8 @@ type Props = Omit<
setAnchorElement: React.Dispatch>;
setSelectedVariant: React.Dispatch>;
setOpen: React.Dispatch>;
+ isOwn: boolean;
+ ownPlaceholder: string;
};
export default function EmojiAnswerItem({
@@ -23,7 +26,11 @@ export default function EmojiAnswerItem({
setAnchorElement,
setSelectedVariant,
setOpen,
+ isOwn,
+ ownPlaceholder,
}: Props) {
+
+
const addOrEditImageButton = useMemo(() => {
return (
!isTablet && (
@@ -77,6 +84,8 @@ export default function EmojiAnswerItem({
variant={variant}
additionalContent={addOrEditImageButton}
additionalMobile={addOrEditImageButtonMobile}
+ isOwn={isOwn}
+ ownPlaceholder={ownPlaceholder}
/>
);
}
diff --git a/src/pages/Questions/Emoji/settingEmoji.tsx b/src/pages/Questions/Emoji/settingEmoji.tsx
index 827cdb93..1cff9275 100644
--- a/src/pages/Questions/Emoji/settingEmoji.tsx
+++ b/src/pages/Questions/Emoji/settingEmoji.tsx
@@ -1,23 +1,37 @@
-import type { QuizQuestionEmoji, QuizQuestionVariant } from "@frontend/squzanswerer";
+import type { QuestionType, QuizQuestionEmoji, QuizQuestionVariant } from "@frontend/squzanswerer";
import { Box, Typography, useMediaQuery, useTheme } from "@mui/material";
import { updateQuestion } from "@root/questions/actions";
import CustomCheckbox from "@ui_kit/CustomCheckbox";
import { memo } from "react";
+import CustomTextField from "@ui_kit/CustomTextField";
+import { useAddAnswer } from "@/utils/hooks/useAddAnswer";
type SettingEmojiProps = {
+ question: QuizQuestionEmoji;
questionId: string;
isRequired: boolean;
isMulti: boolean;
isOwn: boolean;
+ isLargeCheck?: boolean;
};
-const SettingEmoji = memo(function ({ questionId, isRequired, isMulti, isOwn }) {
+const SettingEmoji = memo(function ({ question, questionId, isRequired, isLargeCheck, isMulti, isOwn }) {
const theme = useTheme();
+ const {switchOwn} = useAddAnswer();
+
const isWrappColumn = useMediaQuery(theme.breakpoints.down(980));
const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
const isTablet = useMediaQuery(theme.breakpoints.down(985));
const isMobile = useMediaQuery(theme.breakpoints.down(790));
+ const setOwnPlaceholder = (replText: string) => {
+ updateQuestion(questionId, (question) => {
+ if (question.type !== "varimg") return;
+
+ question.content.ownPlaceholder = replText;
+ });
+ };
+
return (
(function ({ questionId, isRequired,
pt: isTablet ? "5px" : "0px",
}}
>
- {/* (function ({ questionId, isRequired,
>
Настройки ответов
+ {/* {
+ updateQuestion(questionId, (question) => {
+ question.content.largeCheck = target.checked;
+ });
+ }}
+ /> */}
(function ({ questionId, isRequired,
label={'Вариант "свой ответ"'}
checked={isOwn}
handleChange={({ target }) => {
- updateQuestion(questionId, (question) => {
- question.content.own = target.checked;
- });
+ switchOwn({question, checked:target.checked})
}}
/>
- */}
+ {/*
+
+ Подсказка "своего ответа"
+
+ setOwnPlaceholder(target.value)}
+ />
+ */}
+
);
case "help":
diff --git a/src/pages/Questions/OwnTextField/OwnTextField.tsx b/src/pages/Questions/OwnTextField/OwnTextField.tsx
index 92f96647..9de2e7f0 100644
--- a/src/pages/Questions/OwnTextField/OwnTextField.tsx
+++ b/src/pages/Questions/OwnTextField/OwnTextField.tsx
@@ -5,7 +5,7 @@ import TooltipClickInfo from "@ui_kit/Toolbars/TooltipClickInfo";
import { useEffect, useState } from "react";
import InfoIcon from "../../../assets/icons/InfoIcon";
import type { QuizQuestionText } from "@frontend/squzanswerer";
-import ButtonsOptionsAndPict from "../ButtonsOptionsAndPict";
+import ButtonsOptions from "../QuestionOptions/ButtonsLayout/ButtonsOptions";
import SwitchTextField from "./switchTextField";
interface Props {
@@ -90,9 +90,9 @@ export default function OwnTextField({ question, openBranchingPage, setOpenBranc
)}
- void;
+ setSwitchState: (data: string) => void;
openBranchingPage: boolean;
setOpenBranchingPage: (a: boolean) => void;
questionId: string;
questionType: QuestionType;
questionContentId: string;
questionHasParent: boolean;
-}
+};
-const ButtonsOptionsAndPict = memo(function ({
- SSHC,
+const IgnoreImage = ["images", "emoji", "number", "date", "select", "text", "file", "rating"]
+
+const ButtonsOptions = memo(function ({
+ setSwitchState,
switchState,
openBranchingPage,
setOpenBranchingPage,
@@ -47,17 +51,17 @@ const ButtonsOptionsAndPict = memo(function ({
questionContentId,
questionHasParent,
}) {
- const [buttonHover, setButtonHover] = useState("");
- const [openedReallyChangingModal, setOpenedReallyChangingModal] =
- useState(false);
const theme = useTheme();
- const isMobile = useMediaQuery(theme.breakpoints.down(790));
- const isIconMobile = useMediaQuery(theme.breakpoints.down(1050));
const quiz = useCurrentQuiz();
+ const isQuestionFirst = useQuestionsStore((state) => state.questions[0]?.id === questionId,);
+
+ const isIconMobile = useMediaQuery(theme.breakpoints.down(1050));
+ const isMobile = useMediaQuery(theme.breakpoints.down(790));
+ const isIgnoreImage = !IgnoreImage.includes(questionType)
+
+ const [buttonHover, setButtonHover] = useState("");
+ const [openedReallyChangingModal, setOpenedReallyChangingModal] = useState(false);
const [openDelete, setOpenDelete] = useState(false);
- const isQuestionFirst = useQuestionsStore(
- (state) => state.questions[0]?.id === questionId,
- );
if (!quiz) return null;
@@ -85,7 +89,7 @@ const ButtonsOptionsAndPict = memo(function ({
onMouseEnter={() => setButtonHover("setting")}
onMouseLeave={() => setButtonHover("")}
onClick={() => {
- SSHC("setting");
+ switchState === "setting" ? setSwitchState("") : setSwitchState("setting");
}}
sx={{
maxWidth: "104px",
@@ -153,38 +157,40 @@ const ButtonsOptionsAndPict = memo(function ({
{isIconMobile ? null : "Ветвление"}
)}
- setButtonHover("image")}
- onMouseLeave={() => setButtonHover("")}
- onClick={() => {
- SSHC("image");
- }}
- sx={{
- height: "30px",
- maxWidth: "123px",
- minWidth: isIconMobile ? "30px" : "64px",
- backgroundColor:
- switchState === "image"
- ? theme.palette.brightPurple.main
- : "transparent",
- color:
- switchState === "image" ? "#ffffff" : theme.palette.grey3.main,
- "&:hover": {
- color: switchState === "image" ? theme.palette.grey3.main : null,
- },
- }}
- >
-
- {isIconMobile ? null : "Изображение"}
-
+ {isIgnoreImage &&
+ setButtonHover("image")}
+ onMouseLeave={() => setButtonHover("")}
+ onClick={() => {
+ switchState === "image" ? setSwitchState("") : setSwitchState("image");
+ }}
+ sx={{
+ height: "30px",
+ maxWidth: "123px",
+ minWidth: isIconMobile ? "30px" : "64px",
+ backgroundColor:
+ switchState === "image"
+ ? theme.palette.brightPurple.main
+ : "transparent",
+ color:
+ switchState === "image" ? "#ffffff" : theme.palette.grey3.main,
+ "&:hover": {
+ color: switchState === "image" ? theme.palette.grey3.main : null,
+ },
+ }}
+ >
+
+ {isIconMobile ? null : "Изображение"}
+
+ }
(function ({
)}
- setOpenDelete(false)}>
-
-
- Вы удаляете вопрос, участвующий в ветвлении. Все его потомки
- потеряют данные ветвления. Вы уверены, что хотите удалить вопрос?
-
-
-
-
-
-
-
+ setOpenDelete(false)}
+ questionId={questionId}
+ />
setOpenedReallyChangingModal(false)}
@@ -271,6 +237,4 @@ const ButtonsOptionsAndPict = memo(function ({
);
});
-ButtonsOptionsAndPict.displayName = "ButtonsOptionsAndPict";
-
-export default ButtonsOptionsAndPict;
+export default ButtonsOptions;
diff --git a/src/pages/Questions/QuestionOptions/ButtonsLayout/DeleteBranchingQuestionModal.tsx b/src/pages/Questions/QuestionOptions/ButtonsLayout/DeleteBranchingQuestionModal.tsx
new file mode 100644
index 00000000..469eb5ba
--- /dev/null
+++ b/src/pages/Questions/QuestionOptions/ButtonsLayout/DeleteBranchingQuestionModal.tsx
@@ -0,0 +1,66 @@
+import { deleteQuestionWithTimeout } from "@/stores/questions/actions";
+import { DeleteFunction } from "@/utils/deleteFunc";
+import { Box, Button, Modal, Typography } from "@mui/material";
+
+interface Props {
+ open: boolean;
+ onclose: () => void;
+ questionId: string;
+}
+
+export const DeleteBranchingQuestionModal = ({
+ open,
+ onclose,
+ questionId,
+}: Props) => {
+ return (
+
+
+
+ Вы удаляете вопрос, участвующий в ветвлении. Все его потомки потеряют данные ветвления. Вы уверены, что хотите удалить вопрос?
+
+
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/pages/Questions/ButtonsOptions.tsx b/src/pages/Questions/QuestionOptions/ButtonsLayout/lalala.tsx
similarity index 68%
rename from src/pages/Questions/ButtonsOptions.tsx
rename to src/pages/Questions/QuestionOptions/ButtonsLayout/lalala.tsx
index 785b0a9c..8015eebe 100644
--- a/src/pages/Questions/ButtonsOptions.tsx
+++ b/src/pages/Questions/QuestionOptions/ButtonsLayout/lalala.tsx
@@ -8,15 +8,16 @@ import { updateDesireToOpenABranchingModal } from "@root/uiTools/actions";
import MiniButtonSetting from "@ui_kit/MiniButtonSetting";
import { DeleteFunction } from "@utils/deleteFunc";
import { memo, useState } from "react";
-import { CopyIcon } from "../../assets/icons/questionsPage/CopyIcon";
-import Branching from "../../assets/icons/questionsPage/branching";
-import SettingIcon from "../../assets/icons/questionsPage/settingIcon";
+import { CopyIcon } from "../../../../assets/icons/questionsPage/CopyIcon";
+import Branching from "../../../../assets/icons/questionsPage/branching";
+import SettingIcon from "../../../../assets/icons/questionsPage/settingIcon";
import { QuestionType } from "@model/question/question";
import type { AnyTypedQuizQuestion } from "@frontend/squzanswerer";
+import { DeleteBranchingQuestionModal } from "./DeleteBranchingQuestionModal";
interface Props {
switchState: string;
- SSHC: (data: string) => void;
+ setSwitchState: (data: string) => void;
questionId: string;
questionContentId: string;
questionType: QuestionType;
@@ -25,8 +26,8 @@ interface Props {
sx?: SxProps;
}
-const ButtonsOptions = memo(function ({
- SSHC,
+const lalalalala = memo(function ({
+ setSwitchState,
switchState,
questionId,
questionContentId,
@@ -54,21 +55,21 @@ const ButtonsOptions = memo(function ({
value: string;
myFunc?: any;
}[] = [
- {
- icon: ,
- title: "Настройки",
- value: "setting",
- },
- {
- icon: ,
- title: "Ветвление",
- value: "branching",
- myFunc: (question: AnyTypedQuizQuestion) => {
- setOpenBranchingPage(true);
- updateDesireToOpenABranchingModal(question.content.id);
+ {
+ icon: ,
+ title: "Настройки",
+ value: "setting",
},
- },
- ];
+ {
+ icon: ,
+ title: "Ветвление",
+ value: "branching",
+ myFunc: (question: AnyTypedQuizQuestion) => {
+ setOpenBranchingPage(true);
+ updateDesireToOpenABranchingModal(question.content.id);
+ },
+ },
+ ];
return (
(function ({
height: isMobile ? "92px" : "70px",
}}
>
+ ButtonsOptions
(function ({
{
- SSHC(value);
+ setSwitchState(value);
myFunc();
}}
sx={{
@@ -170,55 +172,11 @@ const ButtonsOptions = memo(function ({
)}
- setOpenDelete(false)}
- >
-
-
- Вы удаляете вопрос, участвующий в ветвлении. Все его потомки потеряют данные ветвления. Вы уверены, что
- хотите удалить вопрос?
-
-
-
-
-
-
-
+ onclose={() => setOpenDelete(false)}
+ questionId={questionId}
+ />
);
diff --git a/src/pages/Questions/DataOptions/DataOptions.tsx b/src/pages/Questions/QuestionOptions/DateOptions/DateOptions.tsx
similarity index 88%
rename from src/pages/Questions/DataOptions/DataOptions.tsx
rename to src/pages/Questions/QuestionOptions/DateOptions/DateOptions.tsx
index 3bd586ff..e1de3f99 100644
--- a/src/pages/Questions/DataOptions/DataOptions.tsx
+++ b/src/pages/Questions/QuestionOptions/DateOptions/DateOptions.tsx
@@ -1,8 +1,8 @@
import { Box, Tooltip, Typography, useMediaQuery, useTheme } from "@mui/material";
import { useState } from "react";
-import InfoIcon from "../../../assets/icons/InfoIcon";
-import ButtonsOptions from "../ButtonsOptions";
-import SwitchData from "./switchData";
+import InfoIcon from "@/assets/icons/InfoIcon";
+import ButtonsOptions from "../ButtonsLayout/ButtonsOptions";
+import SwitchDate from "./switchDate";
import TooltipClickInfo from "@ui_kit/Toolbars/TooltipClickInfo";
import { QuizQuestionDate } from "@frontend/squzanswerer";
@@ -12,7 +12,7 @@ interface Props {
setOpenBranchingPage: (a: boolean) => void;
}
-export default function DataOptions({ question, openBranchingPage, setOpenBranchingPage }: Props) {
+export default function DateOptions({ question, openBranchingPage, setOpenBranchingPage }: Props) {
const [switchState, setSwitchState] = useState("setting");
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down(790));
@@ -64,14 +64,14 @@ export default function DataOptions({ question, openBranchingPage, setOpenBranch
-
diff --git a/src/pages/Questions/DataOptions/settingData.tsx b/src/pages/Questions/QuestionOptions/DateOptions/settingDate.tsx
similarity index 100%
rename from src/pages/Questions/DataOptions/settingData.tsx
rename to src/pages/Questions/QuestionOptions/DateOptions/settingDate.tsx
diff --git a/src/pages/Questions/DataOptions/switchData.tsx b/src/pages/Questions/QuestionOptions/DateOptions/switchDate.tsx
similarity index 86%
rename from src/pages/Questions/DataOptions/switchData.tsx
rename to src/pages/Questions/QuestionOptions/DateOptions/switchDate.tsx
index 76eb1806..331305b1 100644
--- a/src/pages/Questions/DataOptions/switchData.tsx
+++ b/src/pages/Questions/QuestionOptions/DateOptions/switchDate.tsx
@@ -1,6 +1,6 @@
import { QuizQuestionDate } from "@frontend/squzanswerer";
-import HelpQuestions from "../helpQuestions";
-import SettingData from "./settingData";
+import HelpQuestions from "../../helpQuestions";
+import SettingDate from "./settingDate";
interface Props {
switchState: string;
@@ -11,7 +11,7 @@ export default function SwitchData({ switchState = "setting", question }: Props)
switch (switchState) {
case "setting":
return (
-
(
+ variants={question.content.variants
+ .filter(variant => !variant.isOwn ? true : question.content.own && variant.isOwn)
+ .map((variant, index) => (
))}
/>
@@ -152,9 +156,9 @@ export default function OptionsAndPicture({ question, setOpenBranchingPage }: Pr
)}
- (function ({ questionId, replText, isRequired, isOwn }) {
+const SettingOptionsAndPict = memo(function ({ question, questionId, ownPlaceholder, isMulti, isLargeCheck, replText, isRequired, isOwn }) {
const theme = useTheme();
+ const {switchOwn} = useAddAnswer();
+
const isWrappColumn = useMediaQuery(theme.breakpoints.down(980));
const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
const isTablet = useMediaQuery(theme.breakpoints.down(985));
const isMobile = useMediaQuery(theme.breakpoints.down(680));
+
const setReplText = (replText: string) => {
updateQuestion(questionId, (question) => {
@@ -49,7 +57,7 @@ const SettingOptionsAndPict = memo(function ({ quest
width: "100%",
}}
>
- {/* (function ({ quest
}}
>
Настройки ответов
- */}
- {/* {
- updateQuestion(questionId, (question) => {
- question.content.own = target.checked;
- });
- }}
- /> */}
+
+ {
+ switchOwn({question, checked:target.checked})
+ }}
+ />
{!isWrappColumn && (
);
case "help":
diff --git a/src/pages/Questions/OptionsPicture/OptionsPicture.tsx b/src/pages/Questions/QuestionOptions/OptionsPicture/OptionsPicture.tsx
similarity index 85%
rename from src/pages/Questions/OptionsPicture/OptionsPicture.tsx
rename to src/pages/Questions/QuestionOptions/OptionsPicture/OptionsPicture.tsx
index cef09aea..a4543324 100644
--- a/src/pages/Questions/OptionsPicture/OptionsPicture.tsx
+++ b/src/pages/Questions/QuestionOptions/OptionsPicture/OptionsPicture.tsx
@@ -3,14 +3,14 @@ import { clearQuestionImages, uploadQuestionImage } from "@root/questions/action
import { useCurrentQuiz } from "@root/quizes/hooks";
import { CropModal, useCropModalState } from "@ui_kit/Modal/CropModal";
import { useState } from "react";
-import { EnterIcon } from "../../../assets/icons/questionsPage/enterIcon";
+import { EnterIcon } from "@/assets/icons/questionsPage/enterIcon";
import type { QuizQuestionImages } from "@frontend/squzanswerer";
-import { useAddAnswer } from "../../../utils/hooks/useAddAnswer";
-import { useDisclosure } from "../../../utils/useDisclosure";
-import { AnswerDraggableList } from "../AnswerDraggableList";
-import ImageEditAnswerItem from "../AnswerDraggableList/ImageEditAnswerItem";
-import ButtonsOptions from "../ButtonsOptions";
-import { UploadImageModal } from "../UploadImage/UploadImageModal";
+import { useAddAnswer } from "@/utils/hooks/useAddAnswer";
+import { useDisclosure } from "@/utils/useDisclosure";
+import { AnswerDraggableList } from "../../AnswerDraggableList";
+import ImageEditAnswerItem from "../../AnswerDraggableList/ImageEditAnswerItem";
+import ButtonsOptions from "../ButtonsLayout/ButtonsOptions";
+import { UploadImageModal } from "../../UploadImage/UploadImageModal";
import SwitchAnswerOptionsPict from "./switchOptionsPict";
interface Props {
@@ -28,8 +28,7 @@ export default function OptionsPicture({ question, openBranchingPage, setOpenBra
const [switchState, setSwitchState] = useState("setting");
const isMobile = useMediaQuery(theme.breakpoints.down(790));
const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure();
- const { isCropModalOpen, openCropModal, closeCropModal, imageBlob, originalImageUrl, setCropModalImageBlob } =
- useCropModalState();
+ const { isCropModalOpen, openCropModal, closeCropModal, imageBlob, originalImageUrl, setCropModalImageBlob } = useCropModalState();
const handleImageUpload = async (file: File) => {
if (!selectedVariantId) return;
@@ -70,7 +69,9 @@ export default function OptionsPicture({ question, openBranchingPage, setOpenBra
(
+ variants={question.content.variants
+ .filter(variant => !variant.isOwn ? true : question.content.own && variant.isOwn)
+ .map((variant, index) => (
))}
/>
@@ -137,7 +140,7 @@ export default function OptionsPicture({ question, openBranchingPage, setOpenBra
(function ({
+const SettingOptionsPict = memo(function ({
+ question,
questionId,
isRequired,
- isMulti,
+ ownPlaceholder, isMulti, isLargeCheck,
isOwn,
proportions,
format,
@@ -55,6 +61,15 @@ const SettingOptionsPict = memo(function ({
const isTablet = useMediaQuery(theme.breakpoints.down(985));
const isMobile = useMediaQuery(theme.breakpoints.down(790));
const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
+
+ const setOwnPlaceholder = (replText: string) => {
+ updateQuestion(questionId, (question) => {
+ if (question.type !== "varimg") return;
+
+ question.content.ownPlaceholder = replText;
+ });
+ };
+ const {switchOwn} = useAddAnswer();
return (
(function ({
pt: isTablet ? "5px" : "0px",
}}
>
- {/*
-
+ {/* (function ({
/>
))}
-
+ */}
(function ({
>
Настройки ответов
+ {/* {
+ updateQuestion(questionId, (question) => {
+ question.content.largeCheck = target.checked;
+ });
+ }}
+ /> */}
(function ({
label={'Вариант "свой ответ"'}
checked={isOwn}
handleChange={({ target }) => {
- updateQuestion(questionId, (question) => {
- question.content.own = target.checked;
- });
+ switchOwn({question, checked:target.checked})
}}
/>
+ {/*
+
+ Подсказка "своего ответа"
+
+ setOwnPlaceholder(target.value)}
+ />
+ */}
- */}
+
{/*
);
case "help":
diff --git a/src/pages/Questions/PageOptions/PageOptions.tsx b/src/pages/Questions/QuestionOptions/PageOptions/PageOptions.tsx
similarity index 100%
rename from src/pages/Questions/PageOptions/PageOptions.tsx
rename to src/pages/Questions/QuestionOptions/PageOptions/PageOptions.tsx
diff --git a/src/pages/Questions/PageOptions/SettingPageOptions.tsx b/src/pages/Questions/QuestionOptions/PageOptions/SettingPageOptions.tsx
similarity index 100%
rename from src/pages/Questions/PageOptions/SettingPageOptions.tsx
rename to src/pages/Questions/QuestionOptions/PageOptions/SettingPageOptions.tsx
diff --git a/src/pages/Questions/PageOptions/switchPageOptions.tsx b/src/pages/Questions/QuestionOptions/PageOptions/switchPageOptions.tsx
similarity index 100%
rename from src/pages/Questions/PageOptions/switchPageOptions.tsx
rename to src/pages/Questions/QuestionOptions/PageOptions/switchPageOptions.tsx
diff --git a/src/pages/Questions/RatingOptions/RatingOptions.tsx b/src/pages/Questions/QuestionOptions/RatingOptions/RatingOptions.tsx
similarity index 94%
rename from src/pages/Questions/RatingOptions/RatingOptions.tsx
rename to src/pages/Questions/QuestionOptions/RatingOptions/RatingOptions.tsx
index fd6e9918..e86dd806 100644
--- a/src/pages/Questions/RatingOptions/RatingOptions.tsx
+++ b/src/pages/Questions/QuestionOptions/RatingOptions/RatingOptions.tsx
@@ -1,15 +1,15 @@
import { Box, TextField as MuiTextField, TextFieldProps, Typography, useMediaQuery, useTheme } from "@mui/material";
import { updateQuestion } from "@root/questions/actions";
import { FC, useLayoutEffect, useRef, useState } from "react";
-import FlagIcon from "../../../assets/icons/questionsPage/FlagIcon";
-import StarIconMini from "../../../assets/icons/questionsPage/StarIconMini";
-import HashtagIcon from "../../../assets/icons/questionsPage/hashtagIcon";
-import HeartIcon from "../../../assets/icons/questionsPage/heartIcon";
-import LightbulbIcon from "../../../assets/icons/questionsPage/lightbulbIcon";
-import LikeIcon from "../../../assets/icons/questionsPage/likeIcon";
-import TropfyIcon from "../../../assets/icons/questionsPage/tropfyIcon";
+import FlagIcon from "@/assets/icons/questionsPage/FlagIcon";
+import StarIconMini from "@/assets/icons/questionsPage/StarIconMini";
+import HashtagIcon from "@/assets/icons/questionsPage/hashtagIcon";
+import HeartIcon from "@/assets/icons/questionsPage/heartIcon";
+import LightbulbIcon from "@/assets/icons/questionsPage/lightbulbIcon";
+import LikeIcon from "@/assets/icons/questionsPage/likeIcon";
+import TropfyIcon from "@/assets/icons/questionsPage/tropfyIcon";
import type { QuizQuestionRating } from "@frontend/squzanswerer";
-import ButtonsOptions from "../ButtonsOptions";
+import ButtonsOptions from "../ButtonsLayout/ButtonsOptions";
import SwitchRating from "./switchRating";
const TextField = MuiTextField as unknown as FC;
@@ -289,7 +289,7 @@ export default function RatingOptions({ question, openBranchingPage, setOpenBran
(
+ variants={question.content.variants
+ .filter(variant => !variant.isOwn ? true : question.content.own && variant.isOwn)
+ .map((variant, index) => (
= 100}
questionId={question.id}
variant={variant}
+ isOwn={Boolean(variant.isOwn)}
+ ownPlaceholder={question.content.ownPlaceholder}
/>
))}
/>
@@ -100,9 +104,9 @@ export default function AnswerOptions({ question, openBranchingPage, setOpenBran
)}
- (function ({ questionId, isRequired, isLargeCheck, isMulti, isOwn }) {
+const ResponseSettings = memo(function ({question, questionId, ownPlaceholder, isRequired, isLargeCheck, isMulti, isOwn }) {
const theme = useTheme();
const isTablet = useMediaQuery(theme.breakpoints.down(900));
const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
const isMobile = useMediaQuery(theme.breakpoints.down(790));
+ const {switchOwn} = useAddAnswer();
return (
(function ({ questionId, isRequired, isLarge
pt: isTablet ? "5px" : "0px",
}}
>
- {/* (function ({ questionId, isRequired, isLarge
{
updateQuestion(questionId, (question) => {
@@ -79,12 +84,10 @@ const ResponseSettings = memo(function ({ questionId, isRequired, isLarge
label={'Вариант "свой ответ"'}
checked={isOwn}
handleChange={({ target }) => {
- updateQuestion(questionId, (question) => {
- question.content.own = target.checked;
- });
+ switchOwn({question, checked:target.checked})
}}
/>
- */}
+
);
case "help":
diff --git a/src/pages/Questions/QuestionsPage.tsx b/src/pages/Questions/QuestionsPage.tsx
index fc0c2c81..40c48a16 100755
--- a/src/pages/Questions/QuestionsPage.tsx
+++ b/src/pages/Questions/QuestionsPage.tsx
@@ -22,8 +22,8 @@ import { useLayoutEffect } from "react";
import { createPortal } from "react-dom";
import AddPlus from "../../assets/icons/questionsPage/addPlus";
import ArrowLeft from "../../assets/icons/questionsPage/arrowLeft";
-import BranchingQuestions from "./BranchingModal/BranchingQuestionsModal";
-import { QuestionSwitchWindowTool } from "./QuestionSwitchWindowTool";
+import BranchingQuestions from "./Branching/BranchingModal/BranchingQuestionsModal";
+import { QuestionSwitchWindowTool } from "./Branching/QuestionSwitchWindowTool";
interface Props {
openBranchingPage: boolean;
diff --git a/src/pages/Questions/SwitchQuestionsPage.tsx b/src/pages/Questions/SwitchQuestionsPage.tsx
index 602f73c1..bab1a9db 100644
--- a/src/pages/Questions/SwitchQuestionsPage.tsx
+++ b/src/pages/Questions/SwitchQuestionsPage.tsx
@@ -1,14 +1,14 @@
-import DataOptions from "./DataOptions/DataOptions";
+import DateOptions from "./QuestionOptions/DateOptions/DateOptions";
import DropDown from "./DropDown/DropDown";
import Emoji from "./Emoji/Emoji";
-import OptionsAndPicture from "./OptionsAndPicture/OptionsAndPicture";
-import OptionsPicture from "./OptionsPicture/OptionsPicture";
+import OptionsAndPicture from "./QuestionOptions/OptionsAndPicture/OptionsAndPicture";
+import OptionsPicture from "./QuestionOptions/OptionsPicture/OptionsPicture";
import OwnTextField from "./OwnTextField/OwnTextField";
-import PageOptions from "./PageOptions/PageOptions";
-import RatingOptions from "./RatingOptions/RatingOptions";
-import SliderOptions from "./SliderOptions/SliderOptions";
+import PageOptions from "./QuestionOptions/PageOptions/PageOptions";
+import RatingOptions from "./QuestionOptions/RatingOptions/RatingOptions";
+import SliderOptions from "./QuestionOptions/SliderOptions/SliderOptions";
import UploadFile from "./UploadFile/UploadFile";
-import AnswerOptions from "./answerOptions/AnswerOptions";
+import AnswerOptions from "./QuestionOptions/answerOptions/AnswerOptions";
import { notReachable } from "../../utils/notReachable";
import { AnyTypedQuizQuestion } from "@frontend/squzanswerer";
@@ -76,7 +76,7 @@ export default function SwitchQuestionsPage({ question, openBranchingPage, setOp
case "date":
return (
-
void;
+ setSwitchState: (data: string) => void;
}
-export default function ButtonsOptionsForm({ SSHC, switchState }: Props) {
+export default function ButtonsOptionsForm({ setSwitchState, switchState }: Props) {
const theme = useTheme();
const isTablet = useMediaQuery(theme.breakpoints.down(800));
@@ -74,7 +74,7 @@ export default function ButtonsOptionsForm({ SSHC, switchState }: Props) {
{
- SSHC(value);
+ setSwitchState(value);
}}
sx={{
backgroundColor:
diff --git a/src/pages/ResultPage/DescriptionForm/DescriptionForm.tsx b/src/pages/ResultPage/DescriptionForm/DescriptionForm.tsx
index 2038969f..e4c452b1 100644
--- a/src/pages/ResultPage/DescriptionForm/DescriptionForm.tsx
+++ b/src/pages/ResultPage/DescriptionForm/DescriptionForm.tsx
@@ -24,7 +24,7 @@ export const DescriptionForm = () => {
setPriceButtonsType(type);
};
- const SSHC = (data: string) => {
+ const setSwitchState = (data: string) => {
setSwitchState(data);
};
@@ -188,7 +188,7 @@ export const DescriptionForm = () => {
)}
-
+
);
diff --git a/src/pages/Tariffs/ModalRequestCreate.tsx b/src/pages/Tariffs/ModalRequestCreate.tsx
index 5d0a0e79..ab33e7a7 100644
--- a/src/pages/Tariffs/ModalRequestCreate.tsx
+++ b/src/pages/Tariffs/ModalRequestCreate.tsx
@@ -219,7 +219,6 @@ export const ModalRequestCreate = ({
time: moment(values.time).format("hh:mm")
})
})
- console.log(resp)
if (resp[0]?.status === 200) {
enqueueSnackbar("Запрос успешно отправлен")
setIsSending(true)
diff --git a/src/stores/questions/actions.ts b/src/stores/questions/actions.ts
index 023a8ac5..fdf78b43 100644
--- a/src/stores/questions/actions.ts
+++ b/src/stores/questions/actions.ts
@@ -4,7 +4,7 @@ import { devlog } from "@frontend/kitui";
import { AnyTypedQuizQuestion, QuestionVariant } from "@frontend/squzanswerer";
import { questionToEditQuestionRequest } from "@model/question/edit";
import { QuestionType, RawQuestion, rawQuestionToQuestion } from "@model/question/question";
-import { UntypedQuizQuestion, createQuestionVariant } from "@model/questionTypes/shared";
+import { UntypedQuizQuestion, createQuestionOwnVariant, createQuestionVariant } from "@model/questionTypes/shared";
import { produce } from "immer";
import { nanoid } from "nanoid";
import { enqueueSnackbar } from "notistack";
@@ -29,7 +29,6 @@ export const setQuestions = (questions: RawQuestion[] | null | undefined) =>
export const createUntypedQuestion = (quizId: number, insertAfterQuestionId?: string) => {
const { questions } = useQuestionsStore.getState();
- console.log("insertAfterQuestionId ", insertAfterQuestionId)
const questionsAmount = questions.filter(({ type }) => type !== "result").length;
@@ -68,7 +67,6 @@ export const createUntypedQuestion = (quizId: number, insertAfterQuestionId?: st
export const createUntypedQuestionForm = (quizId: number, insertAfterQuestionId?: string) => {
const { questions } = useQuestionsStore.getState();
- console.log("insertAfterQuestionId ", insertAfterQuestionId)
const questionsAmount = questions.filter(({ type }) => type !== "result").length;
@@ -338,6 +336,20 @@ export const addQuestionVariant = (questionId: string) => {
}
});
};
+export const addQuestionOwnVariant = (questionId: string) => {
+ updateQuestion(questionId, (question) => {
+ switch (question.type) {
+ case "variant":
+ case "emoji":
+ case "images":
+ case "varimg":
+ question.content.variants.push(createQuestionOwnVariant());
+ break;
+ default:
+ throw new Error(`Cannot add variant to question of type "${question.type}"`);
+ }
+ });
+};
export const deleteQuestionVariant = (questionId: string, variantId: string) => {
updateQuestion(questionId, (question) => {
diff --git a/src/utils/hooks/useAddAnswer.ts b/src/utils/hooks/useAddAnswer.ts
index fe9b2760..0c8ee048 100644
--- a/src/utils/hooks/useAddAnswer.ts
+++ b/src/utils/hooks/useAddAnswer.ts
@@ -1,10 +1,26 @@
import { QuizQuestionsWithVariants } from "@frontend/squzanswerer";
-import { addQuestionVariant } from "@root/questions/actions";
+import { addQuestionOwnVariant, addQuestionVariant, updateQuestion } from "@root/questions/actions";
export const useAddAnswer = () => {
const onClickAddAnAnswer = (question: QuizQuestionsWithVariants) => {
addQuestionVariant(question.id);
};
+ interface SwitchOwnProps {
+ question: QuizQuestionsWithVariants;
+ checked: boolean
+ }
+ const switchOwn = ({ question, checked }: SwitchOwnProps) => {
+ if (!question.content.variants.some(v => v.isOwn) && checked) {
+ addQuestionOwnVariant(question.id)
+ }
- return onClickAddAnAnswer;
+ updateQuestion(question.id, (question) => {
+ question.content.own = checked;
+ });
+ }
+
+ return {
+ onClickAddAnAnswer,
+ switchOwn
+ };
};
diff --git a/src/utils/hooks/useAutoPay.ts b/src/utils/hooks/useAutoPay.ts
index e4274de3..d0591061 100644
--- a/src/utils/hooks/useAutoPay.ts
+++ b/src/utils/hooks/useAutoPay.ts
@@ -32,11 +32,9 @@ export const useAfterPay = () => {
const [, payCartError] = await cartApi.pay();
if (payCartError) {
- console.log("попытка оплаты не удалась")
//Не получилось купить корзину. Ставим флаг, что сайт в состоянии ожидания пополнения счёта для оплаты
startPayCartProcess(paymentUserId)
} else {
- enqueueSnackbar("Товары успешно приобретены")
if (currentCC) navigate("/tariffs")
cancelPayCartProcess()
}
@@ -52,7 +50,6 @@ export const useAfterPay = () => {
//Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло.
(async () => {
- console.log("Время ещё не вышло. У нас стоит флаг покупать корзину если время не вышло.")
const [, payCartError] = await cartApi.pay();
if (!payCartError) {