[feat] <FilterPanel> : slot temporel injecte + multi-select comptes #274

Closed
opened 2026-07-09 00:37:57 +00:00 by maximus · 0 comments
Owner

Composant de filtres partage <FilterPanel> : recoit le controle temporel de la page en prop (temporalControl: ReactNode) et rend le multi-select de comptes. Pas d'etat temporel interne (evite le melange de sources d'etat). Epic #260.

Fichiers concernes

  • nouveau src/components/reports/FilterPanel.tsx
  • src/i18n/locales/fr.json, src/i18n/locales/en.json (libelles « Comptes »/filtres)
  • test du composant

Depends on

  • #272 (type ReportFilters / accountIds)

Criteres d'acceptation

  • <FilterPanel temporalControl={...} accountIds={} onAccountIdsChange={} accounts={} /> rend le temporalControl tel quel + un multi-select des comptes actifs (sources d'import actives)
  • Selection vide → accountIds = [] (= tous)
  • i18n FR/EN, aucun texte en dur
  • Libelle du filtre compte distinct du libelle « valeur nette » Bilan (caveat import-source vs balance)
  • Tests : rendu + logique de selection
  • build + npm test verts

Review caveats

  • 🟡 (Archi) : enum temporalMode abandonne au profit du slot injecte — le panneau ne possede pas l'etat temporel (compare = reducer local, pas URL ; budget = annee). Le vrai partage = le filtre compte.

Decisions prises

  • Design « slot » : chaque page injecte son controle temporel (PeriodSelector/CompareReferenceMonthPicker/YearNavigator), FilterPanel n'unifie que le compte.

Spec source

spec-plan-rapports-uniformes-suite.md

Composant de filtres partage `<FilterPanel>` : recoit le controle temporel de la page en prop (`temporalControl: ReactNode`) et rend le **multi-select de comptes**. Pas d'etat temporel interne (evite le melange de sources d'etat). Epic #260. ## Fichiers concernes - nouveau `src/components/reports/FilterPanel.tsx` - `src/i18n/locales/fr.json`, `src/i18n/locales/en.json` (libelles « Comptes »/filtres) - test du composant ## Depends on - #272 (type `ReportFilters` / `accountIds`) ## Criteres d'acceptation - [ ] `<FilterPanel temporalControl={...} accountIds={} onAccountIdsChange={} accounts={} />` rend le `temporalControl` tel quel + un multi-select des comptes actifs (sources d'import actives) - [ ] Selection vide → `accountIds = []` (= tous) - [ ] i18n FR/EN, aucun texte en dur - [ ] Libelle du filtre compte **distinct** du libelle « valeur nette » Bilan (caveat import-source vs balance) - [ ] Tests : rendu + logique de selection - [ ] build + `npm test` verts ## Review caveats - 🟡 (Archi) : enum `temporalMode` abandonne au profit du slot injecte — le panneau ne possede pas l'etat temporel (compare = reducer local, pas URL ; budget = annee). Le vrai partage = le filtre compte. ## Decisions prises - Design « slot » : chaque page injecte son controle temporel (`PeriodSelector`/`CompareReferenceMonthPicker`/`YearNavigator`), FilterPanel n'unifie que le compte. ## Spec source spec-plan-rapports-uniformes-suite.md
maximus added this to the overnight-2026-07-08-filtres-fondation milestone 2026-07-09 00:37:57 +00:00
maximus added the
status:ready
type:feature
source:human
labels 2026-07-09 00:37:57 +00:00
maximus added
status:review
and removed
status:ready
labels 2026-07-11 19:32:46 +00:00
maximus added
status:approved
and removed
status:review
labels 2026-07-11 20:20:47 +00:00
Sign in to join this conversation.
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: maximus/Simpl-Resultat#274
No description provided.