frontPanel/src/pages/Questions/DropDown/settingDropDown.tsx

195 lines
8.2 KiB
TypeScript
Raw Normal View History

2023-10-04 13:40:22 +00:00
import {
Box,
Tooltip,
Typography,
useMediaQuery,
useTheme,
2023-10-04 13:40:22 +00:00
} from "@mui/material";
2023-11-27 23:07:24 +00:00
import { setQuestionInnerName, updateQuestion } from "@root/questions/actions";
import CustomCheckbox from "@ui_kit/CustomCheckbox";
import CustomTextField from "@ui_kit/CustomTextField";
2023-09-20 09:07:33 +00:00
import { useDebouncedCallback } from "use-debounce";
import InfoIcon from "../../../assets/icons/InfoIcon";
2023-10-03 14:03:57 +00:00
import type { QuizQuestionSelect } from "../../../model/questionTypes/select";
2023-08-25 10:27:43 +00:00
type SettingDropDownProps = {
question: QuizQuestionSelect;
2023-08-25 10:27:43 +00:00
};
export default function SettingDropDown({ question }: SettingDropDownProps) {
const theme = useTheme();
const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
const isMobile = useMediaQuery(theme.breakpoints.down(790));
const debounced = useDebouncedCallback((value) => {
setQuestionInnerName(question.id, value);
2023-11-27 23:07:24 +00:00
}, 200);
2023-09-26 21:11:27 +00:00
const debounceAnswer = useDebouncedCallback((value) => {
2023-11-27 23:07:24 +00:00
updateQuestion(question.id, question => {
if (question.type !== "select") return;
2023-09-15 12:37:12 +00:00
question.content.default = value;
});
2023-11-27 23:07:24 +00:00
}, 200);
return (
<>
<Box
sx={{
position: "relative",
display: "flex",
gap: "20px",
width: "100%",
justifyContent: "space-between",
flexDirection: isMobile ? "column" : null,
}}
2023-09-26 21:11:27 +00:00
>
<Box
sx={{
pt: isMobile ? "25px" : "20px",
pb: isMobile ? "25px" : "20px",
pl: "20px",
display: "flex",
flexDirection: "column",
gap: "14px",
width: "100%",
maxWidth: isFigmaTablte ? "297px" : "360px",
}}
>
{/* <Typography
sx={{
height: isMobile ? "18px" : "auto",
fontWeight: "500",
fontSize: "18px",
color: " #4D4D4D",
}}
>
Настройки ответов
</Typography>
<CustomCheckbox
label={"Можно несколько"}
checked={question.content.multi}
dataCy="multiple-answers-checkbox"
handleChange={({ target }) =>
2023-11-27 23:07:24 +00:00
updateQuestion(question.id, question => {
if (question.type !== "select") return;
question.content.multi = target.checked;
})
}
/> */}
<Box
sx={{
display: isMobile ? "none" : "block",
mt: isMobile ? "11px" : "6px",
}}
>
<Typography
sx={{
height: isMobile ? "18px" : "auto",
fontWeight: "500",
fontSize: "18px",
color: " #4D4D4D",
mb: "14px",
}}
>
Текст в выпадающем списке
</Typography>
<CustomTextField
placeholder={"Выберите вариант"}
text={question.content.default}
onChange={({ target }) => debounceAnswer(target.value)}
/>
</Box>
</Box>
<Box
sx={{
pt: isMobile ? "0px" : "20px",
pb: "20px",
pl: isFigmaTablte ? (isMobile ? "20px" : "30px") : "0px",
pr: isFigmaTablte ? "19px" : "20px",
display: "flex",
flexDirection: "column",
gap: "14px",
width: isMobile ? "auto" : "100%",
}}
>
<Typography
sx={{
height: isMobile ? "18px" : "auto",
fontWeight: "500",
fontSize: "18px",
color: " #4D4D4D",
}}
>
Настройки вопросов
</Typography>
<CustomCheckbox
label={"Необязательный вопрос"}
2023-12-13 18:19:12 +00:00
checked={!question.content.required}
handleChange={(e) => {
2023-12-13 18:19:12 +00:00
updateQuestion<QuizQuestionSelect>(question.id, question => {
question.content.required = !e.target.checked;
});
}}
/>
{/*<Box sx={{ position: "relative", display: "flex", alignItems: "flex-start" }}>*/}
{/* <CustomCheckbox*/}
{/* sx={{ height: isMobile ? "100%" : "26px", alignItems: isMobile ? "flex-start" : "center" }}*/}
{/* label={"Внутреннее название вопроса"}*/}
{/* checked={question.content.innerNameCheck}*/}
{/* handleChange={({ target }) => {*/}
{/* updateQuestion<QuizQuestionSelect>(question.id, question => {*/}
{/* question.content.innerNameCheck = target.checked;*/}
{/* question.content.innerName = target.checked ? question.content.innerName : "";*/}
{/* });*/}
{/* }}*/}
{/* />*/}
{/* <Tooltip*/}
{/* title="Будет отображаться как заголовок вопроса в приходящих заявках."*/}
{/* placement="top"*/}
{/* >*/}
{/* <Box>*/}
{/* <InfoIcon />*/}
{/* </Box>*/}
{/* </Tooltip>*/}
{/*</Box>*/}
<Box
sx={{
width: "100%",
pt: "20px",
display: isMobile ? "block" : "none",
}}
>
<Typography
sx={{
height: isMobile ? "18px" : "auto",
fontWeight: "500",
fontSize: "18px",
color: " #4D4D4D",
mb: "10px",
}}
>
Текст в выпадающем списке
</Typography>
<CustomTextField
placeholder={"Выберите вариант"}
text={question.content.default}
onChange={({ target }) => debounceAnswer(target.value)}
/>
</Box>
{/*{question.content.innerNameCheck && (*/}
{/* <CustomTextField*/}
{/* placeholder={"Развёрнутое описание вопроса"}*/}
{/* text={question.content.innerName}*/}
{/* onChange={({ target }) => debounced(target.value || " ")}*/}
{/* />*/}
{/*)}*/}
</Box>
</Box>
</>
);
2023-08-25 10:27:43 +00:00
}