feat(#44): UserManagementPanel + masquer onglet Administrateurs (dashboard gestionnaire)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
MARTIN Julien 2026-02-25 16:35:35 +01:00
parent e990d576cf
commit defa438edf
4 changed files with 34 additions and 17 deletions

View File

@ -106,6 +106,6 @@ class _AdminDashboardScreenState extends State<AdminDashboardScreen> {
selectedSettingsTabIndex: settingsSubIndex,
);
}
return const AdminUserManagementPanel();
return const UserManagementPanel();
}
}

View File

@ -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<GestionnaireDashboardScree
),
body: Column(
children: [
const Expanded(child: AdminUserManagementPanel()),
Expanded(
child: UserManagementPanel(showAdministrateursTab: false),
),
const AppFooter(),
],
),

View File

@ -139,7 +139,8 @@ class DashboardAppBarAdmin extends StatelessWidget
}
}
/// Sous-barre : Gestionnaires | Parents | Assistantes maternelles | Administrateurs.
/// Sous-barre : Gestionnaires | Parents | Assistantes maternelles | [Administrateurs].
/// [subTabCount] = 3 pour masquer l'onglet Administrateurs (dashboard gestionnaire).
class DashboardUserManagementSubBar extends StatelessWidget {
final int selectedSubIndex;
final ValueChanged<int> onSubTabChange;
@ -148,6 +149,14 @@ class DashboardUserManagementSubBar extends StatelessWidget {
final Widget? filterControl;
final VoidCallback? onAddPressed;
final String addLabel;
final int subTabCount;
static const List<String> _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,

View File

@ -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<AdminUserManagementPanel> createState() =>
_AdminUserManagementPanelState();
State<UserManagementPanel> createState() => _UserManagementPanelState();
}
class _AdminUserManagementPanelState extends State<AdminUserManagementPanel> {
class _UserManagementPanelState extends State<UserManagementPanel> {
int _subIndex = 0;
int _gestionnaireRefreshTick = 0;
int _adminRefreshTick = 0;
@ -44,8 +49,9 @@ class _AdminUserManagementPanelState extends State<AdminUserManagementPanel> {
}
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<AdminUserManagementPanel> {
@override
Widget build(BuildContext context) {
final subTabCount = widget.showAdministrateursTab ? 4 : 3;
return Column(
children: [
DashboardUserManagementSubBar(
@ -171,6 +178,7 @@ class _AdminUserManagementPanelState extends State<AdminUserManagementPanel> {
filterControl: _subBarFilterControl(),
onAddPressed: _handleAddPressed,
addLabel: 'Ajouter',
subTabCount: subTabCount,
),
Expanded(child: _buildBody()),
],