diff --git a/frontend/src/components/questions/QuestionRenderer.tsx b/frontend/src/components/questions/QuestionRenderer.tsx new file mode 100644 index 0000000..28d85db --- /dev/null +++ b/frontend/src/components/questions/QuestionRenderer.tsx @@ -0,0 +1,38 @@ +import type { Question } from '../../types' +import MultipleChoice from './MultipleChoice' +import MultipleSelect from './MultipleSelect' +import ShortAnswer from './ShortAnswer' +import MathInput from './MathInput' +import Essay from './Essay' +import Match from './Match' +import OrderQuestion from './OrderQuestion' + +interface Props { + q: Question + value: unknown + onChange: (val: unknown) => void + locked?: boolean + graded?: boolean +} + +export default function QuestionRenderer({ q, value, onChange, locked, graded }: Props) { + switch (q.type) { + case 'multiple-choice': + return void} locked={locked} graded={graded} /> + case 'multiple-select': + return void} locked={locked} graded={graded} /> + case 'short-answer': + case 'translation': + return void} locked={locked} /> + case 'math-input': + return void} locked={locked} /> + case 'essay': + return } onChange={onChange as (v: Record) => void} locked={locked} /> + case 'match': + return } onChange={onChange as (v: Record) => void} locked={locked} graded={graded} /> + case 'order': + return void} locked={locked} graded={graded} /> + default: + return
Unsupported question type: {q.type}
+ } +}