Désactive le bouton d'enregistrement de la question quand rien n'a changé
Build and deploy / deploy (push) Successful in 35s
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:
@@ -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>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user