From 68fdad506af1a23c503166fd6075bfaffcb4a345 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 5 Feb 2026 14:16:49 +0800 Subject: [PATCH 1/2] Fix Grant All checkbox not showing indeterminate state in permission modal When selecting "Select All" for a specific permission group, the "Grant All Permissions" checkbox should display an indeterminate state if not all permissions are granted. The issue was that GrantAll and GrantAny were calculated based on _groups (filtered list) instead of _allGroups (all groups), causing incorrect checkbox state when groups were filtered. Co-Authored-By: Claude Opus 4.5 --- .../Components/PermissionManagementModal.razor.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs index b3c917177b..6a72ab0d8d 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs @@ -203,8 +203,8 @@ public partial class PermissionManagementModal } } - GrantAll = _groups.SelectMany(x => x.Permissions).All(p => p.IsGranted); - GrantAny = !GrantAll && _groups.SelectMany(x => x.Permissions).Any(p => p.IsGranted); + GrantAll = _allGroups.SelectMany(x => x.Permissions).All(p => p.IsGranted); + GrantAny = !GrantAll && _allGroups.SelectMany(x => x.Permissions).Any(p => p.IsGranted); await InvokeAsync(StateHasChanged); } @@ -226,8 +226,8 @@ public partial class PermissionManagementModal } } - GrantAll = _groups.SelectMany(x => x.Permissions).All(p => p.IsGranted); - GrantAny = !GrantAll && _groups.SelectMany(x => x.Permissions).Any(p => p.IsGranted); + GrantAll = _allGroups.SelectMany(x => x.Permissions).All(p => p.IsGranted); + GrantAny = !GrantAll && _allGroups.SelectMany(x => x.Permissions).Any(p => p.IsGranted); await InvokeAsync(StateHasChanged); } @@ -339,8 +339,8 @@ public partial class PermissionManagementModal _permissionGroupSearchText = value; _groups = _permissionGroupSearchText.IsNullOrWhiteSpace() ? _allGroups.ToList() : _allGroups.Where(x => x.DisplayName.Contains(_permissionGroupSearchText, StringComparison.OrdinalIgnoreCase) || x.Permissions.Any(permission => permission.DisplayName.Contains(_permissionGroupSearchText, StringComparison.OrdinalIgnoreCase))).ToList(); - GrantAll = _groups.SelectMany(x => x.Permissions).All(p => p.IsGranted); - GrantAny = !GrantAll && _groups.SelectMany(x => x.Permissions).Any(p => p.IsGranted); + GrantAll = _allGroups.SelectMany(x => x.Permissions).All(p => p.IsGranted); + GrantAny = !GrantAll && _allGroups.SelectMany(x => x.Permissions).Any(p => p.IsGranted); NormalizePermissionGroup(false); From a82acb1214b8daa008ec3d6f715069f27478d093 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 5 Feb 2026 14:31:22 +0800 Subject: [PATCH 2/2] Use _allGroups for GrantAll/GrantAny checks --- .../Components/PermissionManagementModal.razor.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs index 6a72ab0d8d..d2a105a14d 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs @@ -62,8 +62,8 @@ public partial class PermissionManagementModal NormalizePermissionGroup(); - GrantAll = _groups.SelectMany(x => x.Permissions).All(p => p.IsGranted); - GrantAny = !GrantAll && _groups.SelectMany(x => x.Permissions).Any(p => p.IsGranted); + GrantAll = _allGroups.SelectMany(x => x.Permissions).All(p => p.IsGranted); + GrantAny = !GrantAll && _allGroups.SelectMany(x => x.Permissions).Any(p => p.IsGranted); await InvokeAsync(_modal.Show); }