Désactive le bouton d'enregistrement de la question quand rien n'a changé
Build and deploy / deploy (push) Successful in 35s

Ajoute un suivi de la dernière valeur sauvegardée (comme le pattern
déjà utilisé dans admin-members-table.tsx et profile-form.tsx) : le
bouton "Enregistrer" se grise et affiche "Déjà enregistrée" tant que
le texte n'a pas été modifié depuis la dernière sauvegarde, dès le
chargement de la page si la question n'a pas bougé.
This commit is contained in:
Valentin ROBIN
2026-08-21 17:26:24 +02:00
parent 76fa8cd451
commit 6badff38af
+7 -3
View File
@@ -13,6 +13,7 @@ export function ChariotSubmissionForm({
frozen: boolean;
}) {
const [text, setText] = useState(initialText);
const [savedText, setSavedText] = useState(initialText);
const [saving, setSaving] = useState(false);
const [error, setError] = useState<string | null>(null);
const [success, setSuccess] = useState(false);
@@ -28,6 +29,8 @@ export function ChariotSubmissionForm({
);
}
const dirty = text.trim() !== savedText;
async function handleSubmit(event: FormEvent) {
event.preventDefault();
setError(null);
@@ -48,6 +51,7 @@ export function ChariotSubmissionForm({
setError("Une erreur est survenue, réessaie.");
return;
}
setSavedText(trimmed);
setSuccess(true);
}
@@ -73,14 +77,14 @@ export function ChariotSubmissionForm({
{error}
</p>
)}
{success && <p className="text-sm text-olive">Question enregistrée.</p>}
{success && !dirty && <p className="text-sm text-olive">Question enregistrée.</p>}
<button
type="submit"
disabled={saving}
disabled={saving || !dirty}
className="rounded-md bg-ink-2 px-4 py-2 font-heading text-sm tracking-wide text-gold-bright uppercase transition hover:bg-ink disabled:opacity-50"
>
{saving ? "Enregistrement…" : "Enregistrer"}
{saving ? "Enregistrement…" : !dirty && savedText ? "Déjà enregistrée" : "Enregistrer"}
</button>
</form>
);