frontPanel/src/pages/Questions/UploadFile/settingUpload.tsx

111 lines
4.1 KiB
TypeScript
Raw Normal View History

2023-10-03 14:03:57 +00:00
import {
Box,
Tooltip,
Typography,
useMediaQuery,
useTheme,
2023-10-03 14:03:57 +00:00
} from "@mui/material";
import { setQuestionInnerName, updateQuestionWithFnOptimistic } from "@root/questions/actions";
import CustomCheckbox from "@ui_kit/CustomCheckbox";
2023-09-08 13:42:52 +00:00
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 { QuizQuestionFile } from "../../../model/questionTypes/file";
2023-08-25 09:30:25 +00:00
type SettingsUploadProps = {
question: QuizQuestionFile;
2023-08-25 09:30:25 +00:00
};
export default function SettingsUpload({ question }: SettingsUploadProps) {
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down(790));
const setInnerName = useDebouncedCallback((value) => {
setQuestionInnerName(question.id, value);
}, 1000);
return (
<Box
sx={{
boxSizing: "border-box",
pt: isMobile ? "30px" : "20px",
pb: "20px",
pl: "20px",
pr: isMobile ? "20px" : "0px",
display: "flex",
flexDirection: "column",
gap: "14px",
width: isMobile ? "auto" : "100%",
}}
2023-10-06 08:34:44 +00:00
>
<Typography>Настройки вопроса</Typography>
<CustomCheckbox
sx={{
display: isMobile ? "flex" : "block",
mr: isMobile ? "0px" : "16px",
}}
label={"Автозаполнение адреса"}
checked={question.content.autofill}
handleChange={({ target }) => {
updateQuestionWithFnOptimistic(question.id, question => {
question.content.autofill = target.checked;
});
}}
/>
<CustomCheckbox
sx={{
display: isMobile ? "flex" : "block",
mr: isMobile ? "0px" : "16px",
}}
label={"Необязательный вопрос"}
checked={!question.required}
handleChange={(e) => {
updateQuestionWithFnOptimistic(question.id, question => {
question.required = !e.target.checked;
});
}}
/>
<Box
sx={{
width: isMobile ? "90%" : "auto",
display: "flex",
alignItems: "center",
}}
>
<CustomCheckbox
sx={{
mr: isMobile ? "0px" : "16px",
height: isMobile ? "100%" : "26px",
alignItems: "flex-start",
}}
label={"Внутреннее название вопроса"}
checked={question.content.innerNameCheck}
handleChange={({ target }) => {
updateQuestionWithFnOptimistic(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>
{question.content.innerNameCheck && (
<CustomTextField
placeholder={"Развёрнутое описание вопроса"}
text={question.content.innerName}
onChange={({ target }) => setInnerName(target.value)}
sx={{ paddingRight: "20px" }}
/>
)}
</Box>
);
2023-08-25 09:30:25 +00:00
}