import { For, createSignal, type JSX } from 'solid-js' import Box from '@suid/material/Box' import Button from '@suid/material/Button' import Card from '@suid/material/Card' import CardContent from '@suid/material/CardContent' import MenuItem from '@suid/material/MenuItem' import Stack from '@suid/material/Stack' import TextField from '@suid/material/TextField' import Typography from '@suid/material/Typography' import { createAdminQuestion, deleteAdminQuestion, listAdminQuestions, type AdminQuestion, type CreateQuestionInput, } from '../services/adminQuestions' type FormState = CreateQuestionInput const defaultState: FormState = { theme: 'Général', text: '', answer: '', hint: '', difficulty: 'medium', } function readInputValue(event: Event): string { return (event.target as HTMLInputElement).value } export default function AdminQuestionsRoute(): JSX.Element { const [items, setItems] = createSignal(listAdminQuestions()) const [form, setForm] = createSignal(defaultState) const [error, setError] = createSignal(null) const updateField = (key: keyof FormState, value: string): void => { setForm((prev) => ({ ...prev, [key]: value }) as FormState) } const submit = (): void => { const current = form() if (!current.theme.trim() || !current.text.trim() || !current.answer.trim()) { setError('Theme, question et réponse sont requis.') return } createAdminQuestion(current) setItems(listAdminQuestions()) setForm(defaultState) setError(null) } const remove = (id: string): void => { deleteAdminQuestion(id) setItems(listAdminQuestions()) } return ( Admin - Questions Créer une question {error() && {error()}} updateField('theme', readInputValue(event))} inputProps={{ 'data-testid': 'admin-theme-input' }} fullWidth /> updateField('text', readInputValue(event))} inputProps={{ 'data-testid': 'admin-question-input' }} fullWidth /> updateField('answer', readInputValue(event))} inputProps={{ 'data-testid': 'admin-answer-input' }} fullWidth /> updateField('hint', readInputValue(event))} inputProps={{ 'data-testid': 'admin-hint-input' }} fullWidth /> updateField('difficulty', readInputValue(event))} inputProps={{ 'data-testid': 'admin-difficulty-select' }} fullWidth > easy medium hard Questions existantes {(item) => ( {item.text} Theme: {item.theme} Réponse: {item.answer} )} ) }