slider question preview supports range

This commit is contained in:
nflnkr 2023-10-11 04:55:50 +03:00
parent 040bf3acdd
commit 158471c2e0
2 changed files with 20 additions and 8 deletions

@ -2,7 +2,7 @@ import { Slider } from "@mui/material";
type CustomSliderProps = { type CustomSliderProps = {
defaultValue?: number; defaultValue?: number;
value?: number; value?: number | number[];
min?: number; min?: number;
max?: number; max?: number;
step?: number; step?: number;

@ -1,7 +1,7 @@
import { Box, Typography } from "@mui/material"; import { Box, Typography } from "@mui/material";
import { CustomSlider } from "@ui_kit/CustomSlider"; import { CustomSlider } from "@ui_kit/CustomSlider";
import { QuizQuestionNumber } from "model/questionTypes/number"; import { QuizQuestionNumber } from "model/questionTypes/number";
import { useState } from "react"; import { useLayoutEffect, useState } from "react";
interface Props { interface Props {
@ -9,7 +9,19 @@ interface Props {
} }
export default function Number({ question }: Props) { export default function Number({ question }: Props) {
const [sliderValue, setSliderValue] = useState<number>(question.content.start); const [sliderValues, setSliderValues] = useState<number | number[]>(0);
const start = question.content.start;
const min = parseInt(question.content.range.split("—")[0]);
const max = parseInt(question.content.range.split("—")[1]);
useLayoutEffect(() => {
if (question.content.chooseRange) {
setSliderValues([start, start + (max - start) / 2]);
} else {
setSliderValues(start);
}
}, [max, question.content.chooseRange, start]);
return ( return (
<Box sx={{ <Box sx={{
@ -22,11 +34,11 @@ export default function Number({ question }: Props) {
px: 2, px: 2,
}}> }}>
<CustomSlider <CustomSlider
value={sliderValue} value={sliderValues}
onChange={v => setSliderValue(v as number)} onChange={value => setSliderValues(value)}
min={parseInt(question.content.range.split("—")[0])} min={min}
max={parseInt(question.content.range.split("—")[1])} max={max}
defaultValue={question.content.start} defaultValue={start}
step={question.content.step} step={question.content.step}
/> />
</Box> </Box>