redesign for settings page
This commit is contained in:
58
frontend/pweb/lib/pages/roles/widgets/list.dart
Normal file
58
frontend/pweb/lib/pages/roles/widgets/list.dart
Normal file
@@ -0,0 +1,58 @@
|
||||
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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user