// Question;tsx import React, { useMemo } from 'react'; import { Question } from 'gift-pegjs'; import TrueFalseQuestion from './TrueFalseQuestion/TrueFalseQuestion'; import MultipleChoiceQuestionDisplay from './MultipleChoiceQuestionDisplay/MultipleChoiceQuestionDisplay'; import NumericalQuestion from './NumericalQuestion/NumericalQuestion'; import ShortAnswerQuestion from './ShortAnswerQuestion/ShortAnswerQuestion'; import useCheckMobileScreen from '../../services/useCheckMobileScreen'; interface QuestionProps { question: Question; handleOnSubmitAnswer?: (answer: string | number | boolean) => void; showAnswer?: boolean; } const QuestionDisplay: React.FC = ({ question, handleOnSubmitAnswer, showAnswer, }) => { const isMobile = useCheckMobileScreen(); const imgWidth = useMemo(() => { return isMobile ? '100%' : '20%'; }, [isMobile]); let questionTypeComponent = null; switch (question?.type) { case 'TF': questionTypeComponent = ( ); break; case 'MC': questionTypeComponent = ( ); break; case 'Numerical': if (question.choices) { if (!Array.isArray(question.choices)) { questionTypeComponent = ( ); } else { questionTypeComponent = ( // TODO fix NumericalQuestion (correctAnswers is borked) ); } } break; case 'Short': questionTypeComponent = ( ({ ...choice, id: index.toString() }))} handleOnSubmitAnswer={handleOnSubmitAnswer} showAnswer={showAnswer} globalFeedback={question.formattedGlobalFeedback?.text} /> ); break; } return (
{questionTypeComponent ? ( <> {imageUrl && ( QuestionImage )} {questionTypeComponent} ) : (
Question de type inconnue
)}
); }; export default QuestionDisplay;