ownPlaceholder добавлен

This commit is contained in:
Nastya 2024-09-12 19:15:12 +03:00
parent 22f8e80d16
commit 63bfe53e6c
8 changed files with 25 additions and 11 deletions

1
CHANGELOG.md Normal file

@ -0,0 +1 @@
1.0.0 Добавлены фичи "мультиответ", "перенос строки в своём ответе", "свой ответ", "плейсхолдер своего ответа"

@ -27,13 +27,21 @@ type AnswerItemProps = {
additionalContent?: ReactNode; additionalContent?: ReactNode;
additionalMobile?: ReactNode; additionalMobile?: ReactNode;
isOwn: boolean; isOwn: boolean;
ownPlaceholder: string;
}; };
const AnswerItem = memo<AnswerItemProps>( const AnswerItem = memo<AnswerItemProps>(
({ index, variant, questionId, largeCheck = false, additionalContent, additionalMobile, disableKeyDown, isOwn }) => { ({ index, variant, questionId, largeCheck = false, additionalContent, additionalMobile, disableKeyDown, isOwn, ownPlaceholder }) => {
const theme = useTheme(); const theme = useTheme();
const isTablet = useMediaQuery(theme.breakpoints.down(790)); const isTablet = useMediaQuery(theme.breakpoints.down(790));
const setOwnPlaceholder = (replText: string) => {
updateQuestion(questionId, (question) => {
question.content.ownPlaceholder = replText;
console.log(question)
});
};
return ( return (
<Draggable <Draggable
draggableId={String(index)} draggableId={String(index)}
@ -56,13 +64,16 @@ const AnswerItem = memo<AnswerItemProps>(
}} }}
> >
<TextField <TextField
value={variant.answer} value={ isOwn ? ownPlaceholder : variant.answer}
fullWidth fullWidth
focused={false} focused={false}
placeholder={isOwn ? "Добавьте текст-подсказку для ввода “своего ответа”" : "Добавьте ответ"} placeholder={isOwn ? "Добавьте текст-подсказку для ввода “своего ответа”" : "Добавьте ответ"}
multiline={largeCheck} multiline={largeCheck}
onChange={({ target }: ChangeEvent<HTMLInputElement>) => { onChange={({ target }: ChangeEvent<HTMLInputElement>) => {
if (target.value.length <= 1000) { if (target.value.length <= 1000) {
isOwn ?
setOwnPlaceholder(target.value || " ")
:
setQuestionVariantField(questionId, variant.id, "answer", target.value || " "); setQuestionVariantField(questionId, variant.id, "answer", target.value || " ");
} }
}} }}

@ -15,6 +15,7 @@ type Props = Omit<
) => Promise<void>; ) => Promise<void>;
openImageUploadModal: () => void; openImageUploadModal: () => void;
isOwn: boolean; isOwn: boolean;
ownPlaceholder: string;
}; };
export default function ImageEditAnswerItem({ export default function ImageEditAnswerItem({
@ -29,6 +30,7 @@ export default function ImageEditAnswerItem({
openCropModal, openCropModal,
openImageUploadModal, openImageUploadModal,
isOwn, isOwn,
ownPlaceholder,
}: Props) { }: Props) {
const addOrEditImageButton = useMemo(() => { const addOrEditImageButton = useMemo(() => {
return ( return (
@ -108,6 +110,7 @@ export default function ImageEditAnswerItem({
additionalContent={addOrEditImageButton} additionalContent={addOrEditImageButton}
additionalMobile={addOrEditImageButtonMobile} additionalMobile={addOrEditImageButtonMobile}
isOwn={isOwn} isOwn={isOwn}
ownPlaceholder={ownPlaceholder}
/> />
); );
} }

@ -46,6 +46,7 @@ export default function Emoji({ question, openBranchingPage, setOpenBranchingPag
setOpen={setOpen} setOpen={setOpen}
setSelectedVariant={setSelectedVariant} setSelectedVariant={setSelectedVariant}
isOwn={Boolean(variant?.isOwn)} isOwn={Boolean(variant?.isOwn)}
ownPlaceholder={question.content.ownPlaceholder}
/> />
))} ))}
/> />

@ -13,6 +13,7 @@ type Props = Omit<
setSelectedVariant: React.Dispatch<React.SetStateAction<string | null>>; setSelectedVariant: React.Dispatch<React.SetStateAction<string | null>>;
setOpen: React.Dispatch<React.SetStateAction<boolean>>; setOpen: React.Dispatch<React.SetStateAction<boolean>>;
isOwn: boolean; isOwn: boolean;
ownPlaceholder: string;
}; };
export default function EmojiAnswerItem({ export default function EmojiAnswerItem({
@ -25,16 +26,10 @@ export default function EmojiAnswerItem({
setAnchorElement, setAnchorElement,
setSelectedVariant, setSelectedVariant,
setOpen, setOpen,
isOwn isOwn,
ownPlaceholder,
}: Props) { }: Props) {
const setOwnPlaceholder = (replText: string) => {
updateQuestion(questionId, (question) => {
if (question.type !== "varimg") return;
question.content.ownPlaceholder = replText;
});
};
const addOrEditImageButton = useMemo(() => { const addOrEditImageButton = useMemo(() => {
return ( return (
@ -90,7 +85,7 @@ export default function EmojiAnswerItem({
additionalContent={addOrEditImageButton} additionalContent={addOrEditImageButton}
additionalMobile={addOrEditImageButtonMobile} additionalMobile={addOrEditImageButtonMobile}
isOwn={isOwn} isOwn={isOwn}
changeOwnText={setOwnPlaceholder} ownPlaceholder={ownPlaceholder}
/> />
); );
} }

@ -89,6 +89,7 @@ export default function OptionsAndPicture({ question, setOpenBranchingPage }: Pr
pictureUploding={pictureUploding} pictureUploding={pictureUploding}
setSelectedVariantId={setSelectedVariantId} setSelectedVariantId={setSelectedVariantId}
isOwn={Boolean(variant?.isOwn)} isOwn={Boolean(variant?.isOwn)}
ownPlaceholder={question.content.ownPlaceholder}
/> />
))} ))}
/> />

@ -85,6 +85,7 @@ export default function OptionsPicture({ question, openBranchingPage, setOpenBra
pictureUploding={pictureUploding} pictureUploding={pictureUploding}
setSelectedVariantId={setSelectedVariantId} setSelectedVariantId={setSelectedVariantId}
isOwn={Boolean(variant?.isOwn)} isOwn={Boolean(variant?.isOwn)}
ownPlaceholder={question.content.ownPlaceholder}
/> />
))} ))}
/> />

@ -54,6 +54,7 @@ export default function AnswerOptions({ question, openBranchingPage, setOpenBran
questionId={question.id} questionId={question.id}
variant={variant} variant={variant}
isOwn={Boolean(variant.isOwn)} isOwn={Boolean(variant.isOwn)}
ownPlaceholder={question.content.ownPlaceholder}
/> />
))} ))}
/> />