feat(#96): harmoniser les icones de rôles en liste et modale
Uniformise l'identité visuelle des rôles (admin, super admin, gestionnaire, parent) avec icônes dédiées dans les listes et la modale, et affiche le téléphone dans la ligne admin en retirant le rôle redondant. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
2645cf1cd6
commit
d14550a1cf
@ -43,6 +43,46 @@ class _AdminUserFormDialogState extends State<AdminUserFormDialog> {
|
|||||||
widget.initialUser?.role.toLowerCase() == 'super_admin';
|
widget.initialUser?.role.toLowerCase() == 'super_admin';
|
||||||
bool get _isLockedAdminIdentity =>
|
bool get _isLockedAdminIdentity =>
|
||||||
_isEditMode && widget.adminMode && _isSuperAdminTarget;
|
_isEditMode && widget.adminMode && _isSuperAdminTarget;
|
||||||
|
String get _targetRoleKey {
|
||||||
|
if (widget.initialUser != null) {
|
||||||
|
return widget.initialUser!.role.toLowerCase();
|
||||||
|
}
|
||||||
|
return widget.adminMode ? 'administrateur' : 'gestionnaire';
|
||||||
|
}
|
||||||
|
|
||||||
|
String get _targetRoleLabel {
|
||||||
|
switch (_targetRoleKey) {
|
||||||
|
case 'super_admin':
|
||||||
|
return 'Super administrateur';
|
||||||
|
case 'administrateur':
|
||||||
|
return 'Administrateur';
|
||||||
|
case 'gestionnaire':
|
||||||
|
return 'Gestionnaire';
|
||||||
|
case 'assistante_maternelle':
|
||||||
|
return 'Assistante maternelle';
|
||||||
|
case 'parent':
|
||||||
|
return 'Parent';
|
||||||
|
default:
|
||||||
|
return 'Utilisateur';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IconData get _targetRoleIcon {
|
||||||
|
switch (_targetRoleKey) {
|
||||||
|
case 'super_admin':
|
||||||
|
return Icons.verified_user_outlined;
|
||||||
|
case 'administrateur':
|
||||||
|
return Icons.admin_panel_settings_outlined;
|
||||||
|
case 'gestionnaire':
|
||||||
|
return Icons.assignment_ind_outlined;
|
||||||
|
case 'assistante_maternelle':
|
||||||
|
return Icons.child_care_outlined;
|
||||||
|
case 'parent':
|
||||||
|
return Icons.supervisor_account_outlined;
|
||||||
|
default:
|
||||||
|
return Icons.person_outline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@ -371,19 +411,23 @@ class _AdminUserFormDialogState extends State<AdminUserFormDialog> {
|
|||||||
return AlertDialog(
|
return AlertDialog(
|
||||||
title: Row(
|
title: Row(
|
||||||
children: [
|
children: [
|
||||||
|
CircleAvatar(
|
||||||
|
radius: 16,
|
||||||
|
backgroundColor: const Color(0xFFEDE5FA),
|
||||||
|
child: Icon(
|
||||||
|
_targetRoleIcon,
|
||||||
|
size: 20,
|
||||||
|
color: const Color(0xFF6B3FA0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(width: 8),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Text(
|
child: Text(
|
||||||
_isEditMode
|
_isEditMode
|
||||||
? (widget.readOnly
|
? (widget.readOnly
|
||||||
? (widget.adminMode
|
? 'Consulter un "$_targetRoleLabel"'
|
||||||
? 'Consulter un administrateur'
|
: 'Modifier un "$_targetRoleLabel"')
|
||||||
: 'Consulter un gestionnaire')
|
: 'Créer un "$_targetRoleLabel"',
|
||||||
: (widget.adminMode
|
|
||||||
? 'Modifier un administrateur'
|
|
||||||
: 'Modifier un gestionnaire'))
|
|
||||||
: (widget.adminMode
|
|
||||||
? 'Créer un administrateur'
|
|
||||||
: 'Créer un gestionnaire'),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (_isEditMode && !widget.readOnly)
|
if (_isEditMode && !widget.readOnly)
|
||||||
|
|||||||
@ -118,9 +118,12 @@ class _AdminManagementWidgetState extends State<AdminManagementWidget> {
|
|||||||
final canEdit = _canEditAdmin(user);
|
final canEdit = _canEditAdmin(user);
|
||||||
return AdminUserCard(
|
return AdminUserCard(
|
||||||
title: user.fullName,
|
title: user.fullName,
|
||||||
|
fallbackIcon: isSuperAdmin
|
||||||
|
? Icons.verified_user_outlined
|
||||||
|
: Icons.manage_accounts_outlined,
|
||||||
subtitleLines: [
|
subtitleLines: [
|
||||||
user.email,
|
user.email,
|
||||||
'Rôle : ${user.role}',
|
'Téléphone : ${user.telephone?.trim().isNotEmpty == true ? user.telephone : 'Non renseigné'}',
|
||||||
],
|
],
|
||||||
avatarUrl: user.photoUrl,
|
avatarUrl: user.photoUrl,
|
||||||
borderColor: isSuperAdmin
|
borderColor: isSuperAdmin
|
||||||
|
|||||||
@ -86,6 +86,7 @@ class _GestionnaireManagementWidgetState
|
|||||||
final user = filteredGestionnaires[index];
|
final user = filteredGestionnaires[index];
|
||||||
return AdminUserCard(
|
return AdminUserCard(
|
||||||
title: user.fullName,
|
title: user.fullName,
|
||||||
|
fallbackIcon: Icons.assignment_ind_outlined,
|
||||||
avatarUrl: user.photoUrl,
|
avatarUrl: user.photoUrl,
|
||||||
subtitleLines: [
|
subtitleLines: [
|
||||||
user.email,
|
user.email,
|
||||||
|
|||||||
@ -75,6 +75,7 @@ class _ParentManagementWidgetState extends State<ParentManagementWidget> {
|
|||||||
final parent = filteredParents[index];
|
final parent = filteredParents[index];
|
||||||
return AdminUserCard(
|
return AdminUserCard(
|
||||||
title: parent.user.fullName,
|
title: parent.user.fullName,
|
||||||
|
fallbackIcon: Icons.supervisor_account_outlined,
|
||||||
avatarUrl: parent.user.photoUrl,
|
avatarUrl: parent.user.photoUrl,
|
||||||
subtitleLines: [
|
subtitleLines: [
|
||||||
parent.user.email,
|
parent.user.email,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user