Commit graph

1 commit

Author SHA1 Message Date
Imugiii
0e51d6151d feat(borne): modale options produit + grille en modales (P5 L3)
All checks were successful
CI / static-tests (pull_request) Successful in 51s
CI / secret-scan (push) Successful in 12s
CI / js-tests (push) Successful in 29s
CI / secret-scan (pull_request) Successful in 12s
CI / php-lint (pull_request) Successful in 24s
CI / js-tests (pull_request) Successful in 31s
CI / php-lint (push) Successful in 28s
CI / static-tests (push) Successful in 56s
Cliquer un produit ouvre desormais une modale au-dessus de la grille (paradigme
maquette : ecran de commande unique + modales) au lieu de naviguer vers product.html.
Menu -> composeur (L2) ; produit simple -> modale quantite+ajout. A l'ajout, le
panneau de commande persistant (L1) est re-rendu : la commande se met a jour sans
navigation. product.html reste un repli (lien direct).

- product-options.js : modale (image, prix unitaire, stepper quantite, total) ;
  productCartItem pur ; a11y (role=dialog, focus-trap, ESC, fond aria-hidden,
  overflow restaure, aria-live sur quantite ET total).
- page-products.js : clic carte -> modale (preventDefault sur le <a>) ; bouton 'i'
  allergenes garde son stopPropagation.
- style.css : .product-options + .qty-control (reutilise .qty-btn/.qty-value).
- tests : product-options.test.js (productCartItem + rendu/stepper/ajout). 56/56 verts.

Taille 30/50Cl de la maquette differee : absente du modele produit (un seul
price_cents) -> necessitera des variantes produit cote API.
Revue adversariale : 1 finding MEDIUM (aria-live du total) corrige.
2026-06-19 16:39:39 +00:00