frontPanel/src/pages/Questions/OwnTextField/OwnTextField.tsx

99 lines
2.7 KiB
TypeScript
Raw Normal View History

2023-12-31 02:53:25 +00:00
import {
Box,
Tooltip,
Typography,
useMediaQuery,
useTheme,
} from "@mui/material";
2023-11-27 23:07:24 +00:00
import { updateQuestion } from "@root/questions/actions";
import CustomTextField from "@ui_kit/CustomTextField";
2023-08-25 08:29:42 +00:00
import { useState } from "react";
2023-09-20 09:07:33 +00:00
import { useDebouncedCallback } from "use-debounce";
import InfoIcon from "../../../assets/icons/InfoIcon";
import type { QuizQuestionText } from "../../../model/questionTypes/text";
import ButtonsOptions from "../ButtonsOptions";
import SwitchTextField from "./switchTextField";
2023-08-25 08:29:42 +00:00
interface Props {
2023-12-31 02:53:25 +00:00
question: QuizQuestionText;
2023-08-24 11:09:47 +00:00
}
2023-08-25 08:29:42 +00:00
export default function OwnTextField({ question }: Props) {
2023-12-31 02:53:25 +00:00
const [switchState, setSwitchState] = useState("setting");
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down(790));
const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
2023-12-31 02:53:25 +00:00
const setPlaceholder = useDebouncedCallback((value) => {
updateQuestion(question.id, (question) => {
if (question.type !== "text") return;
2023-12-31 02:53:25 +00:00
question.content.placeholder = value;
});
}, 200);
2023-12-31 02:53:25 +00:00
const SSHC = (data: string) => {
setSwitchState(data);
};
2023-08-25 08:29:42 +00:00
2023-12-31 02:53:25 +00:00
return (
<>
<Box
sx={{
width: "auto",
maxWidth: "745px",
display: "flex",
pb: "20px",
pl: "20px",
pr: "20px",
flexDirection: "column",
gap: isMobile ? "15px" : "20px",
}}
>
<CustomTextField
placeholder={"Пример ответа"}
text={question.content.placeholder}
onChange={({ target }) => setPlaceholder(target.value)}
sx={{
maxWidth: isFigmaTablte ? "549px" : "640px",
width: "100%",
mt: isMobile ? "15px" : "0px",
}}
/>
<Box
sx={{
display: "flex",
alignItems: isMobile ? "flex-start" : "center",
gap: "12px",
}}
>
<Typography
sx={{
fontWeight: 400,
fontSize: "16px",
lineHeight: "18.96px",
color: theme.palette.grey2.main,
}}
>
Пользователю будет дано поле для ввода значения
</Typography>
<Tooltip
title="Будет использоваться для ввода значения."
placement="top"
>
<Box>
<InfoIcon />
2023-09-18 12:34:41 +00:00
</Box>
2023-12-31 02:53:25 +00:00
</Tooltip>
</Box>
</Box>
<ButtonsOptions
switchState={switchState}
SSHC={SSHC}
question={question}
/>
<SwitchTextField switchState={switchState} question={question} />
</>
);
}