Browse Source

fix: getSelectAllCheckboxState function to remove providerName parameter and optimize logic for determining checkbox state based on granted permissions.

pull/25852/head
sumeyye 4 weeks ago
parent
commit
71b55bdf4a
  1. 22
      npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts

22
npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts

@ -187,11 +187,11 @@ export class PermissionManagementComponent {
});
protected readonly selectThisTabState = computed(() =>
getSelectAllCheckboxState(this.selectedGroupPermissions(), this.providerName),
getSelectAllCheckboxState(this.selectedGroupPermissions()),
);
protected readonly selectAllTabState = computed(() =>
getSelectAllCheckboxState(this.permissionsState(), this.providerName),
getSelectAllCheckboxState(this.permissionsState()),
);
// Disabled state is based on the API snapshot (not live edits) so select-all stays toggleable.
@ -588,20 +588,18 @@ function isSelectAllDisabled(
);
}
function getSelectAllCheckboxState(
permissions: PermissionGrantInfoDto[],
providerName: string,
): SelectAllCheckboxState {
const selectablePermissions = permissions.filter(permission =>
(permission.grantedProviders ?? []).every(p => p.providerName === providerName),
);
const selectedPermissions = selectablePermissions.filter(permission => permission.isGranted);
function getSelectAllCheckboxState(permissions: PermissionGrantInfoDto[]): SelectAllCheckboxState {
if (!permissions.length) {
return { checked: false, indeterminate: false };
}
const grantedCount = permissions.filter(permission => permission.isGranted).length;
if (!selectablePermissions.length || selectedPermissions.length === 0) {
if (grantedCount === 0) {
return { checked: false, indeterminate: false };
}
if (selectedPermissions.length === selectablePermissions.length) {
if (grantedCount === permissions.length) {
return { checked: true, indeterminate: false };
}

Loading…
Cancel
Save