Page d'édition de recette : boutons Enregistrer / Annuler toujours visibles en pied de page #132
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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
Origine : ticket #3, puce 5 — « Dans la page d'édition des recettes, faire en sorte que les boutons sauvegarder/annuler soient toujours visibles en pied de page ».
RecipeFormPage(/recettes/nouvelle,/recettes/:id/modifier) est un formulaire long (nom, description, photo, portions, visibilité, régimes, liste d'ingrédients, liste d'étapes). Aujourd'hui :type="submit", dans.recipe-form__actionstout en bas du flux (RecipeFormPage.tsx:349-353)..recipe-form__actions { margin-top: var(--space-xl); }— aucunposition: sticky(recipes.scss:1383-1385).RecipeImportForm, RecipeImportForm.tsx:502-508).Sur une recette avec beaucoup d'étapes, il faut scroller jusqu'en bas pour enregistrer, et il n'y a pas de sortie explicite.
Comportement souhaité
Une barre d'actions collante en bas de la zone de contenu, toujours visible pendant le défilement, contenant :
submitactuel, mêmes étatsisSubmitting/!canSubmit.navigate(-1)ou retour vers/recettes/:id(édition) //recettes(création) ; avecwindow.confirmsi le formulaire est dirty (à trancher).Fichiers à toucher
apps/web/src/features/recipes/recipes.scss—.recipe-form__actions:position: sticky; bottom: 0;+ fondvar(--color-surface)+ bordure/ombre haute + z-index, layout flex pour 2 boutons. Style du bouton Annuler secondaire (réutiliser le langage.recipe-detail-panel__delete-confirm button:not(...)). Ajuster lepadding-bottomde.recipe-formpour que la barre ne masque pas le dernier champ.RecipeFormPage.tsx—<button type="button">Annuler dans.recipe-form__actions; handlerhandleCancel(+ suivi dirty si retenu). Le hintincompleteIngredientsHint(RecipeFormPage.tsx:345-347) reste au-dessus de la barre.RecipeImportForm.tsx— même barre pour cohérence (partage.recipe-form/.recipe-form__actions) ; « Annuler » via une nouvelle proponCancel(le contexte diffère : routeImportRecipePagevs embarqué dansRecipePickerDialog).RecipePickerDialog— une barre sticky dans un<dialog>scrollable doit coller au conteneur, pas au viewport.recipes.form.cancel,recipes.form.cancelConfirm.Découpage proposé
Une PR. Petit chantier, surtout SCSS + un bouton.
Tests (obligatoires, cf.
specs/dev-conventions.md)recipe-form.feature/ spec dédié) : la barre reste visible après scroll jusqu'aux étapes ; clic Annuler revient à la page précédente sans enregistrer ; clic Enregistrer inchangé. Sur mobile (resize_window) la barre ne recouvre pas le contenu.Documentation à mettre à jour
specs/frontend-architecture.md— mention de la barre d'actions collante du formulaire recette, si la section décrit ce formulaire.Points restant à trancher en revue
window.confirmnatif, ou retour immédiat sans garde ? Un vrai suivi dirty implique de comparer l'état à sa valeur au chargement.RecipeImportFormdans ce ticket ou le limiter àRecipeFormPage(la puce dit « page d'édition des recettes ») ? (inclure = cohérence visuelle, faible coût.)🤖 Filed by Claude Code
Implémenté par la PR #135 (
feat/recipe-form-sticky-actions), mergée dansmain(c3560ec)..recipe-form__actions--sticky(position: sticky; bottom: 0) + bouton Annuler (handleCancel) dansRecipeFormPage. Vérifié présent surmain.