import 'package:flutter/material.dart'; import 'package:pshared/models/permissions/descriptions/role.dart'; import 'package:pweb/models/state/visibility.dart'; import 'package:pweb/pages/roles/widgets/empty_state.dart'; import 'package:pweb/pages/roles/widgets/role_card.dart'; class RolesList extends StatelessWidget { final List roles; final VisibilityState Function(RoleDescription role) canCopy; final VisibilityState Function(RoleDescription role) canDelete; final VisibilityState Function(RoleDescription role) canManagePolicies; final String emptyLabel; final int Function(RoleDescription role) policiesCount; final ValueChanged onCopy; final ValueChanged onDelete; final ValueChanged onManagePolicies; const RolesList({ super.key, required this.roles, required this.canCopy, required this.canDelete, required this.canManagePolicies, required this.emptyLabel, required this.policiesCount, required this.onCopy, required this.onDelete, required this.onManagePolicies, }); @override Widget build(BuildContext context) { if (roles.isEmpty) { return RolesEmptyState(label: emptyLabel); } return Column( children: roles.map((role) { return Padding( padding: const EdgeInsets.only(bottom: 12), child: RoleCard( role: role, policyCount: policiesCount(role), canManagePolicies: canManagePolicies(role), canCopy: canCopy(role), canDelete: canDelete(role), onCopy: () => onCopy(role), onDelete: () => onDelete(role), onManagePolicies: () => onManagePolicies(role), ), ); }).toList(), ); } }