---
suivi: 1056
date: 2026-07-29
sujet: Bouton Créer projet invisible (modale Projets)
chantier: taches_suivi
type: bugfix
statut: poussé
hash: 65484ca0
fichiers:
  - resources/css/mes-taches.css
  - resources/js/Components/TachesSuivi/MesTachesProjetsPanel.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
---

## PROMPT ENVOYÉ

SUIVI #1056 — diagnostic H1/H2 puis fix si trivial. Modale Projets : formulaire création
affiche Nom + Description + Annuler seulement, pas de bouton Créer. Après déploiement #1055.

## SYNTHÈSE

### Verdict : H1 (régression visuelle / tokens CSS), pas H2
Le bouton **existe** dans le template depuis #1013 (`MesTachesProjetsPanel.vue` L440–446,
`type="submit"` class `mt-projets-btn primary`, libellé « Créer »). Le back `POST /projets`
+ `ProjetPolicy::create` (tout user authentifié) est OK. Entrée dans le champ Nom soumettait
déjà via `@submit.prevent` (contournement).

Cause : Dialog PrimeVue téléporté hors de `.mes-taches`. Les tokens `--mt-*` n’étaient définis
que sur `.mes-taches`. `.mt-projets-btn.primary` utilise `background: var(--mt-navy-800)` +
`color: #fff` → fond invalide/transparent + texte blanc = bouton **invisible**. « Annuler »
reste lisible (couleur héritée du dialog).

Le CSS +139 L de #1055 (étiquettes) n’est **pas** la règle fautive ; le défaut de portée des
tokens date du passage en modale (#1014) et n’avait pas été validé (#1012 backlog). #1055 a
coincidé avec le constat en prod.

### Fix
- Tokens `--mt-*` aussi sur `.mt-modal-sheet` (dialogs téléportés).
- Scroll content modal (`max-height` + `overflow-y: auto`).
- Bouton Créer/Enregistrer désactivé si nom vide (+ `saving` anti double-envoi déjà présent).

### Écrans potentiellement concernés (même cause tokens)
- `MesTachesProjetsPanel` (corrigé)
- `TacheSuiviDetailModal` / `TacheSuiviFormDialog` (`.mt-modal-sheet`) — boutons PrimeVue
  souvent en couleurs littérales, moins exposés ; tokens désormais disponibles.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan journal:sync
php artisan view:clear
find app/ -name "*.php" -exec touch {} +
```

Pas de migration. Pas de route:clear (aucune route ajoutée).

## LEÇON
Des custom properties définies uniquement sous un wrapper page (`.mes-taches`) ne s’appliquent
pas aux Dialogs PrimeVue téléportés sur `body`. Un bouton « primary » en `color:#fff` +
`background:var(--token-absent)` disparaît sans erreur JS — symptôme « le bouton n’existe
pas ». Toujours dupliquer les tokens sur le root de la modale (`.mt-modal-sheet`).
