Files
sendico/frontend/pweb/lib/pages/roles/widgets/list.dart
2026-03-13 23:01:57 +03:00

59 lines
1.8 KiB
Dart

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<RoleDescription> 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<RoleDescription> onCopy;
final ValueChanged<RoleDescription> onDelete;
final ValueChanged<RoleDescription> 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(),
);
}
}