[UI mobile] Grille planning : vue mobile dédiée #97

Merged
kyuno merged 2 commits from feat/mobile-planning-view into main 2026-09-07 17:39:18 +02:00
Owner

Contexte

La grille planning (7 colonnes × 5 repas) est l'écran principal de l'app, et le plus problématique sur téléphone : figée à min-width: 62rem (~992px), elle ne se réorganise pas sous ce seuil, elle scrolle juste horizontalement — un tableau desktop rétréci, pas un vrai écran mobile.

Ce que fait cette PR

Sous le breakpoint phone (useIsMobileViewport()), PlanningPage bascule entièrement sur une nouvelle PlanningDayView :

  • un sélecteur "un jour à la fois" (flèches jour précédent/suivant), borné au lundi/dimanche de la semaine affichée — pas de bouclage vers la semaine adjacente, ça reste le rôle des flèches du WeekNavigator ;
  • les 5 repas du jour sélectionné, empilés en cartes plutôt qu'en colonnes de tableau.

Mutualisation (mentionnée explicitement dans la demande initiale) : le contenu de chaque case (pastilles de recettes + bouton "+") est extrait dans une fonction non-hook partagée, mealCellBody, appelée aussi bien par MealCell (<td>, grille desktop) que par le nouveau MealCellRow (<div>, vue jour). Les deux restent des cibles @dnd-kit (useDroppable) avec exactement la même logique — le glisser-déposer d'un reste continue de fonctionner à l'identique sur mobile, sans code dupliqué.

Le desktop/tablette n'est pas touché : PlanningGrid (le tableau existant) reste inchangé, seul le point de bascule (isMobile ? <PlanningDayView/> : <PlanningGrid/>) est nouveau.

Tests

  • planning-page.cy.ts : nouveau describe "Planning day view (phone)" — 2 tests (défaut sur aujourd'hui + filtrage par jour + bornage lundi, bornage dimanche + le "+" ouvre bien le sélecteur de recette).
  • layout.cy.ts : son test d'origine ("la grille reste scrollable horizontalement sur phone", issue #39) décrivait un comportement que ce ticket remplace — réécrit pour vérifier la bascule vers la vue jour à la place.
  • Suite complète : biome check, tsc -b --force, build, 146/146 e2e, 71/71 composants — tous verts.

Closes #88

🤖 Generated with Claude Code

## Contexte La grille planning (7 colonnes × 5 repas) est l'écran principal de l'app, et le plus problématique sur téléphone : figée à `min-width: 62rem` (~992px), elle ne se réorganise pas sous ce seuil, elle scrolle juste horizontalement — un tableau desktop rétréci, pas un vrai écran mobile. ## Ce que fait cette PR Sous le breakpoint phone (`useIsMobileViewport()`), `PlanningPage` bascule entièrement sur une nouvelle `PlanningDayView` : - un sélecteur "un jour à la fois" (flèches jour précédent/suivant), **borné** au lundi/dimanche de la semaine affichée — pas de bouclage vers la semaine adjacente, ça reste le rôle des flèches du `WeekNavigator` ; - les 5 repas du jour sélectionné, empilés en cartes plutôt qu'en colonnes de tableau. **Mutualisation** (mentionnée explicitement dans la demande initiale) : le contenu de chaque case (pastilles de recettes + bouton "+") est extrait dans une fonction non-hook partagée, `mealCellBody`, appelée aussi bien par `MealCell` (`<td>`, grille desktop) que par le nouveau `MealCellRow` (`<div>`, vue jour). Les deux restent des cibles `@dnd-kit` (`useDroppable`) avec exactement la même logique — le glisser-déposer d'un reste continue de fonctionner à l'identique sur mobile, sans code dupliqué. Le desktop/tablette n'est pas touché : `PlanningGrid` (le tableau existant) reste inchangé, seul le point de bascule (`isMobile ? <PlanningDayView/> : <PlanningGrid/>`) est nouveau. ## Tests - `planning-page.cy.ts` : nouveau describe "Planning day view (phone)" — 2 tests (défaut sur aujourd'hui + filtrage par jour + bornage lundi, bornage dimanche + le "+" ouvre bien le sélecteur de recette). - `layout.cy.ts` : son test d'origine ("la grille reste scrollable horizontalement sur phone", issue #39) décrivait un comportement que ce ticket remplace — réécrit pour vérifier la bascule vers la vue jour à la place. - Suite complète : `biome check`, `tsc -b --force`, `build`, 146/146 e2e, 71/71 composants — tous verts. Closes #88 🤖 Generated with [Claude Code](https://claude.com/claude-code)
kyuno added 1 commit 2026-09-07 16:28:08 +02:00
feat(planning): vue mobile dédiée "un jour à la fois" pour la grille (#88)
Some checks failed
CI / lint (push) Successful in 2m36s
CI / build (push) Successful in 2m55s
CI / intent-service-test (push) Successful in 4m19s
CI / test (push) Failing after 4m23s
CI / e2e (push) Successful in 8m41s
CI / build-android (push) Has been skipped
964269d3f3
La grille planning (7 colonnes × 5 repas, min-width: 62rem) était le
principal écran inaccessible sur téléphone : sous ce seuil elle ne se
réorganisait pas, elle scrollait juste horizontalement — un tableau
desktop rétréci, pas un vrai écran mobile.

Sous le breakpoint phone (useIsMobileViewport()), PlanningPage bascule
désormais entièrement sur PlanningDayView : un sélecteur de jour (jour
précédent/suivant, borné au lundi/dimanche de la semaine affichée, pas
de bouclage vers la semaine adjacente — ça reste le rôle des flèches du
WeekNavigator) suivi des 5 repas du jour sélectionné, empilés en
cartes.

Le contenu de chaque case (pastilles de recettes + bouton "+") est
mutualisé entre les deux layouts via une fonction non-hook partagée,
mealCellBody, appelée aussi bien par MealCell (<td>, grille desktop)
que par le nouveau MealCellRow (<div>, vue jour) — même logique de
drop-target @dnd-kit (useDroppable) des deux côtés, donc le glisser-
déposer d'un reste continue de fonctionner à l'identique sur mobile.

Mise à jour de layout.cy.ts : son test #39 "la grille reste scrollable
horizontalement sur phone" décrivait un comportement désormais remplacé
par ce ticket — réécrit pour vérifier la bascule vers la vue jour au
lieu du scroll horizontal.

Closes #88

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno added 1 commit 2026-09-07 17:38:15 +02:00
chore: relance la CI (504 transitoire GitHub CDN sur le téléchargement du modèle spaCy)
Some checks failed
CI / e2e (push) Has been cancelled
CI / build (push) Has been cancelled
CI / build-android (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / intent-service-test (push) Has been cancelled
8e3ec3ed12
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
kyuno merged commit e21c3f8255 into main 2026-09-07 17:39:18 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: kyuno/batchCooking#97
No description provided.