From 3277f77846d9b8a5c139553a3aa4fdc3ec103dcc Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Fri, 17 Jul 2026 15:39:59 +0200 Subject: [PATCH] fix(#146): densifier la liste et corriger l'affichage des responsables. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les cartes compactes montrent plus d'enfants d'un coup ; le nom ne monopolise plus la largeur au détriment des infos. Co-authored-by: Cursor --- .../lib/widgets/admin/common/admin_enfant_user_card.dart | 7 +++++++ .../widgets/admin/common/admin_select_enfant_modal.dart | 6 +++++- .../lib/widgets/admin/common/admin_select_list_modal.dart | 8 ++++---- frontend/lib/widgets/admin/common/admin_user_card.dart | 8 +++++++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/frontend/lib/widgets/admin/common/admin_enfant_user_card.dart b/frontend/lib/widgets/admin/common/admin_enfant_user_card.dart index 6284e3d..a9b0f7f 100644 --- a/frontend/lib/widgets/admin/common/admin_enfant_user_card.dart +++ b/frontend/lib/widgets/admin/common/admin_enfant_user_card.dart @@ -35,6 +35,7 @@ class AdminEnfantUserCard extends StatelessWidget { final List actions; final VoidCallback? onCardTap; final EdgeInsetsGeometry? margin; + final EdgeInsetsGeometry? contentPadding; const AdminEnfantUserCard({ super.key, @@ -44,6 +45,7 @@ class AdminEnfantUserCard extends StatelessWidget { this.actions = const [], this.onCardTap, this.margin, + this.contentPadding, }); factory AdminEnfantUserCard.fromEnfant( @@ -52,6 +54,7 @@ class AdminEnfantUserCard extends StatelessWidget { List actions = const [], VoidCallback? onCardTap, EdgeInsetsGeometry? margin, + EdgeInsetsGeometry? contentPadding, }) { final parents = enfant.parentLinks .map((l) => l.parentName ?? 'Parent') @@ -72,6 +75,7 @@ class AdminEnfantUserCard extends StatelessWidget { actions: actions, onCardTap: onCardTap, margin: margin, + contentPadding: contentPadding, ); } @@ -81,6 +85,7 @@ class AdminEnfantUserCard extends StatelessWidget { List actions = const [], VoidCallback? onCardTap, EdgeInsetsGeometry? margin, + EdgeInsetsGeometry? contentPadding, }) { return AdminEnfantUserCard( title: child.fullName, @@ -94,6 +99,7 @@ class AdminEnfantUserCard extends StatelessWidget { actions: actions, onCardTap: onCardTap, margin: margin, + contentPadding: contentPadding, ); } @@ -107,6 +113,7 @@ class AdminEnfantUserCard extends StatelessWidget { actions: actions, onCardTap: onCardTap, margin: margin, + contentPadding: contentPadding, ); } } diff --git a/frontend/lib/widgets/admin/common/admin_select_enfant_modal.dart b/frontend/lib/widgets/admin/common/admin_select_enfant_modal.dart index 1c5bc48..dafe5d4 100644 --- a/frontend/lib/widgets/admin/common/admin_select_enfant_modal.dart +++ b/frontend/lib/widgets/admin/common/admin_select_enfant_modal.dart @@ -53,7 +53,11 @@ class AdminSelectEnfantModal { return AdminEnfantUserCard.fromEnfant( e, onCardTap: onSelect, - margin: const EdgeInsets.only(bottom: 6), + margin: const EdgeInsets.only(bottom: 4), + contentPadding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 5, + ), actions: [ IconButton( icon: const Icon(Icons.add_link), diff --git a/frontend/lib/widgets/admin/common/admin_select_list_modal.dart b/frontend/lib/widgets/admin/common/admin_select_list_modal.dart index bd5c0e5..61bcd39 100644 --- a/frontend/lib/widgets/admin/common/admin_select_list_modal.dart +++ b/frontend/lib/widgets/admin/common/admin_select_list_modal.dart @@ -52,8 +52,8 @@ class AdminSelectListModal extends StatefulWidget { this.emptyMessage = 'Aucun élément disponible', this.noResultsMessage = 'Aucun résultat pour cette recherche', this.modalWidth = 930, - this.cardExtent = 70, - this.minVisibleCards = 5, + this.cardExtent = 52, + this.minVisibleCards = 8, this.toggleFilter, }); @@ -71,8 +71,8 @@ class AdminSelectListModal extends StatefulWidget { String emptyMessage = 'Aucun élément disponible', String noResultsMessage = 'Aucun résultat pour cette recherche', double modalWidth = 930, - double cardExtent = 70, - int minVisibleCards = 5, + double cardExtent = 52, + int minVisibleCards = 8, AdminSelectToggleFilter? toggleFilter, }) { return showDialog( diff --git a/frontend/lib/widgets/admin/common/admin_user_card.dart b/frontend/lib/widgets/admin/common/admin_user_card.dart index 2d02650..f7cbc1b 100644 --- a/frontend/lib/widgets/admin/common/admin_user_card.dart +++ b/frontend/lib/widgets/admin/common/admin_user_card.dart @@ -15,6 +15,7 @@ class AdminUserCard extends StatefulWidget { final String? vigilanceTooltip; final VoidCallback? onCardTap; final EdgeInsetsGeometry? margin; + final EdgeInsetsGeometry? contentPadding; const AdminUserCard({ super.key, @@ -30,6 +31,7 @@ class AdminUserCard extends StatefulWidget { this.vigilanceTooltip, this.onCardTap, this.margin, + this.contentPadding, }); @override @@ -69,7 +71,8 @@ class _AdminUserCardState extends State { side: BorderSide(color: widget.borderColor ?? Colors.grey.shade300), ), child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 9), + padding: widget.contentPadding ?? + const EdgeInsets.symmetric(horizontal: 12, vertical: 9), child: Row( children: [ _buildAvatar(avatarUrl), @@ -88,7 +91,10 @@ class _AdminUserCardState extends State { Expanded( child: Row( children: [ + // flex: 0 → largeur du nom ; le reste va aux infos + // (évite le partage 50/50 qui tronque « Responsables »). Flexible( + flex: 0, fit: FlexFit.loose, child: Text( widget.title.isNotEmpty ? widget.title : 'Sans nom',