From defa438edffb846986d787285df47aacd9437c65 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Wed, 25 Feb 2026 16:35:35 +0100 Subject: [PATCH] feat(#44): UserManagementPanel + masquer onglet Administrateurs (dashboard gestionnaire) Co-authored-by: Cursor --- .../admin_dashboardScreen.dart | 2 +- .../gestionnaire_dashboard_screen.dart | 6 +++-- .../lib/widgets/admin/dashboard_admin.dart | 23 ++++++++++++------- .../widgets/admin/user_management_panel.dart | 20 +++++++++++----- 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/frontend/lib/screens/administrateurs/admin_dashboardScreen.dart b/frontend/lib/screens/administrateurs/admin_dashboardScreen.dart index 892eb8b..43d3ca6 100644 --- a/frontend/lib/screens/administrateurs/admin_dashboardScreen.dart +++ b/frontend/lib/screens/administrateurs/admin_dashboardScreen.dart @@ -106,6 +106,6 @@ class _AdminDashboardScreenState extends State { selectedSettingsTabIndex: settingsSubIndex, ); } - return const AdminUserManagementPanel(); + return const UserManagementPanel(); } } diff --git a/frontend/lib/screens/gestionnaire/gestionnaire_dashboard_screen.dart b/frontend/lib/screens/gestionnaire/gestionnaire_dashboard_screen.dart index 7be3387..f712dca 100644 --- a/frontend/lib/screens/gestionnaire/gestionnaire_dashboard_screen.dart +++ b/frontend/lib/screens/gestionnaire/gestionnaire_dashboard_screen.dart @@ -4,7 +4,7 @@ import 'package:p_tits_pas/widgets/admin/user_management_panel.dart'; import 'package:p_tits_pas/widgets/app_footer.dart'; /// Dashboard gestionnaire – même shell que l'admin, sans onglet Paramètres. -/// Réutilise [AdminUserManagementPanel]. +/// Réutilise [UserManagementPanel]. class GestionnaireDashboardScreen extends StatefulWidget { const GestionnaireDashboardScreen({super.key}); @@ -36,7 +36,9 @@ class _GestionnaireDashboardScreenState extends State onSubTabChange; @@ -148,6 +149,14 @@ class DashboardUserManagementSubBar extends StatelessWidget { final Widget? filterControl; final VoidCallback? onAddPressed; final String addLabel; + final int subTabCount; + + static const List _tabLabels = [ + 'Gestionnaires', + 'Parents', + 'Assistantes maternelles', + 'Administrateurs', + ]; const DashboardUserManagementSubBar({ Key? key, @@ -158,6 +167,7 @@ class DashboardUserManagementSubBar extends StatelessWidget { this.filterControl, this.onAddPressed, this.addLabel = '+ Ajouter', + this.subTabCount = 4, }) : super(key: key); @override @@ -171,13 +181,10 @@ class DashboardUserManagementSubBar extends StatelessWidget { padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 6), child: Row( children: [ - _buildSubNavItem(context, 'Gestionnaires', 0), - const SizedBox(width: 12), - _buildSubNavItem(context, 'Parents', 1), - const SizedBox(width: 12), - _buildSubNavItem(context, 'Assistantes maternelles', 2), - const SizedBox(width: 12), - _buildSubNavItem(context, 'Administrateurs', 3), + for (int i = 0; i < subTabCount; i++) ...[ + if (i > 0) const SizedBox(width: 12), + _buildSubNavItem(context, _tabLabels[i], i), + ], const SizedBox(width: 36), _pillField( width: 320, diff --git a/frontend/lib/widgets/admin/user_management_panel.dart b/frontend/lib/widgets/admin/user_management_panel.dart index 63bc921..18ba940 100644 --- a/frontend/lib/widgets/admin/user_management_panel.dart +++ b/frontend/lib/widgets/admin/user_management_panel.dart @@ -6,15 +6,20 @@ import 'package:p_tits_pas/widgets/admin/dashboard_admin.dart'; import 'package:p_tits_pas/widgets/admin/gestionnaire_management_widget.dart'; import 'package:p_tits_pas/widgets/admin/parent_managmant_widget.dart'; -class AdminUserManagementPanel extends StatefulWidget { - const AdminUserManagementPanel({super.key}); +class UserManagementPanel extends StatefulWidget { + /// Afficher l'onglet Administrateurs (sinon 3 onglets : Gestionnaires, Parents, AM). + final bool showAdministrateursTab; + + const UserManagementPanel({ + super.key, + this.showAdministrateursTab = true, + }); @override - State createState() => - _AdminUserManagementPanelState(); + State createState() => _UserManagementPanelState(); } -class _AdminUserManagementPanelState extends State { +class _UserManagementPanelState extends State { int _subIndex = 0; int _gestionnaireRefreshTick = 0; int _adminRefreshTick = 0; @@ -44,8 +49,9 @@ class _AdminUserManagementPanelState extends State { } void _onSubTabChange(int index) { + final maxIndex = widget.showAdministrateursTab ? 3 : 2; setState(() { - _subIndex = index; + _subIndex = index.clamp(0, maxIndex); _searchController.clear(); _parentStatus = null; _amCapacityController.clear(); @@ -161,6 +167,7 @@ class _AdminUserManagementPanelState extends State { @override Widget build(BuildContext context) { + final subTabCount = widget.showAdministrateursTab ? 4 : 3; return Column( children: [ DashboardUserManagementSubBar( @@ -171,6 +178,7 @@ class _AdminUserManagementPanelState extends State { filterControl: _subBarFilterControl(), onAddPressed: _handleAddPressed, addLabel: 'Ajouter', + subTabCount: subTabCount, ), Expanded(child: _buildBody()), ],