feat(recipes): barre Enregistrer/Annuler collée en pied du formulaire (#132) #135
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/recipe-form-sticky-actions"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Closes #132(puce 5 de #3).Le formulaire de recette (
/recettes/nouvelle,/recettes/:id/modifier) est long ; jusqu'ici son unique bouton Enregistrer vivait en fin de flux (.recipe-form__actions { margin-top: var(--space-xl) }), et aucun bouton Annuler n'existait.Changements
recipes.scss— nouveau modificateur.recipe-form__actions--sticky:position: sticky; bottom: 0contre.app-content(le seul conteneur scrollable,AppLayout.scss), fond opaque + bordure haute, alignement à droite.bottom: 0ancre la barre à la limite de padding de.app-content(petit décalage assumé, correct sur tous les breakpoints sans surcharge par viewport). Nouveau style.recipe-form__cancel(bouton secondaire, même langage que.recipe-detail-panel__delete-confirm).RecipeFormPage.tsx— bouton « Annuler » (type="button") +handleCancel→/recettes/:iden édition,/recettesen création. Pas de garde « abandonner ? » : action explicite sur un formulaire sans autosave, cohérent avec le reste de l'app (seule la suppression, irréversible, est confirmée).RecipeImportFormn'est volontairement pas touché (il s'embarque aussi dansRecipePickerDialogqui a déjà son propre pied de page — à traiter à part si besoin).recipes.form.cancel.recipe-form.feature) — 3 scénarios : la barre reste ancrée en bas après défilement vers le haut d'un formulaire plus haut que la fenêtre (assertion surgetBoundingClientRect) ; « Annuler » revient au catalogue en création ; « Annuler » revient à la recette en édition.Vérification locale
pnpm lint✓ ·pnpm build✓ ·cypress run:recipe-form.feature8/8, régressionrecipes.feature+recipes.cy.ts+layout.cy.ts28/28. Mocha non concerné (aucun changement API).🤖 Generated with Claude Code