diff --git a/src/ui_kit/CustomSlider.tsx b/src/ui_kit/CustomSlider.tsx index be6b7ec0..859edde2 100644 --- a/src/ui_kit/CustomSlider.tsx +++ b/src/ui_kit/CustomSlider.tsx @@ -2,7 +2,7 @@ import { Slider } from "@mui/material"; type CustomSliderProps = { defaultValue?: number; - value?: number; + value?: number | number[]; min?: number; max?: number; step?: number; diff --git a/src/ui_kit/QuizPreview/QuizPreviewQuestionTypes/Number.tsx b/src/ui_kit/QuizPreview/QuizPreviewQuestionTypes/Number.tsx index c34985d3..57665991 100644 --- a/src/ui_kit/QuizPreview/QuizPreviewQuestionTypes/Number.tsx +++ b/src/ui_kit/QuizPreview/QuizPreviewQuestionTypes/Number.tsx @@ -1,7 +1,7 @@ import { Box, Typography } from "@mui/material"; import { CustomSlider } from "@ui_kit/CustomSlider"; import { QuizQuestionNumber } from "model/questionTypes/number"; -import { useState } from "react"; +import { useLayoutEffect, useState } from "react"; interface Props { @@ -9,7 +9,19 @@ interface Props { } export default function Number({ question }: Props) { - const [sliderValue, setSliderValue] = useState(question.content.start); + const [sliderValues, setSliderValues] = useState(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 ( setSliderValue(v as number)} - min={parseInt(question.content.range.split("—")[0])} - max={parseInt(question.content.range.split("—")[1])} - defaultValue={question.content.start} + value={sliderValues} + onChange={value => setSliderValues(value)} + min={min} + max={max} + defaultValue={start} step={question.content.step} />