espace-paie-odentas/PAGINATION_CONTRATS_IMPROVEMENT.md

3.3 KiB

Amélioration de la Pagination - Page Contrats

Date

13 octobre 2025

Résumé

Amélioration de la pagination de la page /contrats pour offrir une meilleure expérience utilisateur avec :

  • Pagination affichée en haut ET en bas du tableau
  • Affichage du nombre total de contrats (pas seulement le nombre affiché)
  • Affichage du nombre total de pages
  • Possibilité de choisir le nombre d'éléments par page (10, 50, 100)

Modifications apportées

1. API Backend (app/api/contrats/route.ts)

  • Ajout de total et totalPages dans la réponse JSON
  • Calcul correct : total: filtered.length et totalPages: Math.ceil(filtered.length / limit)
  • Mise à jour pour le mode démo également

2. Frontend (app/(app)/contrats/page.tsx)

a) Type de données

  • Mise à jour du type de retour de l'API pour inclure total?: number et totalPages?: number
  • Extraction des valeurs : const total = data?.total ?? 0; et const totalPages = data?.totalPages ?? 0;

b) Nouveau composant Pagination

Création d'un composant réutilisable avec :

type PaginationProps = {
  page: number;
  totalPages: number;
  total: number;
  limit: number;
  onPageChange: (page: number) => void;
  onLimitChange: (limit: number) => void;
  isFetching?: boolean;
  itemsCount: number;
};

Fonctionnalités :

  • Navigation avec boutons Précédent/Suivant (désactivés aux extrémités)
  • Affichage "Page X sur Y"
  • Sélecteur pour changer le nombre d'éléments affichés (10, 50, 100)
  • Indicateur de chargement pendant les requêtes
  • Affichage du nombre total de contrats et du nombre affiché

c) Intégration

  • Pagination supérieure : Ajoutée avant le tableau (uniquement si des contrats sont affichés)
  • Pagination inférieure : Remplace l'ancienne pagination simple sous le tableau

Comportement

Affichage

  • La pagination apparaît en haut du tableau uniquement s'il y a des résultats
  • La pagination en bas est toujours présente (même sans résultats)
  • Format responsive adapté mobile/desktop

Informations affichées

Page 1 sur 5 | Afficher : [10 ▼] | 47 contrats au total • 10 affichés

Changement de limite

  • Quand l'utilisateur change le nombre d'éléments par page, la page est automatiquement réinitialisée à 1
  • Les options disponibles : 10, 50, 100 contrats par page

Navigation

  • Boutons Précédent/Suivant avec icônes chevron
  • Désactivation automatique aux extrémités (page 1 ou dernière page)
  • Effet hover sur les boutons actifs

Styles

  • Design cohérent avec le reste de l'application
  • Support du mode sombre (dark mode)
  • Bordures et espacements harmonieux
  • Icônes Lucide React

Tests recommandés

  1. Vérifier l'affichage avec différents nombres de contrats (0, 1-10, 11-50, 50+)
  2. Tester la navigation entre les pages
  3. Tester le changement de limite (10/50/100)
  4. Vérifier que le total affiché est correct
  5. Tester en mode CDDU et Régime Général
  6. Tester avec les filtres (recherche, période, organisation pour staff)
  7. Vérifier le responsive mobile
  8. Tester en mode démo

Fichiers modifiés

  • /Users/renaud/Projet Nouvel Espace Paie/app/api/contrats/route.ts
  • /Users/renaud/Projet Nouvel Espace Paie/app/(app)/contrats/page.tsx