diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor index bc89353185..634acfa4a6 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor @@ -24,7 +24,7 @@ - + @L["SelectAllInAllTabs"] 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 fcacf10ab3..2a618b9d4b 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 @@ -36,6 +36,7 @@ public partial class PermissionManagementModal protected string _permissionGroupSearchText; protected bool GrantAll { get; set; } + protected bool GrantAny { get; set; } protected Dictionary _permissionDepths = new Dictionary(); @@ -61,6 +62,7 @@ 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); await InvokeAsync(_modal.Show); } @@ -73,13 +75,14 @@ public partial class PermissionManagementModal protected virtual async Task GrantAllAsync(bool grantAll) { GrantAll = grantAll; + GrantAny = false; if (_allGroups == null) { return; } - await OnPermissionGroupSearchTextChangedAsync(string.Empty); + await ResetSearchTextAsync(); foreach (var permission in _allGroups.SelectMany(x => x.Permissions)) { @@ -194,6 +197,7 @@ 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); await InvokeAsync(StateHasChanged); } @@ -216,6 +220,7 @@ 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); await InvokeAsync(StateHasChanged); } @@ -307,6 +312,16 @@ public partial class PermissionManagementModal return permissions.All(x => x.IsGranted) && grantedProviders.Any(p => p.ProviderName != _providerName); } + protected virtual async Task ResetSearchTextAsync() + { + _permissionGroupSearchText = string.Empty; + _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(); + + NormalizePermissionGroup(false); + + await InvokeAsync(StateHasChanged); + } + protected virtual async Task OnPermissionGroupSearchTextChangedAsync(string value) { if (value == _permissionGroupSearchText) @@ -317,6 +332,9 @@ 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); + NormalizePermissionGroup(false); await InvokeAsync(StateHasChanged);