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 0e0b2aa480..2d89ff866d 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 @@ -1,6 +1,4 @@ -@using Microsoft.Extensions.Localization -@using Volo.Abp.PermissionManagement.Localization -@inherits Volo.Abp.AspNetCore.Components.AbpComponentBase +@inherits Volo.Abp.AspNetCore.Components.AbpComponentBase @@ -8,74 +6,95 @@ + + + + + + + + + + + + + + + + + + + + @L["SelectAllInAllTabs"] + + + + - - - @L["SelectAllInAllTabs"] - - - - - - @if (_groups != null) - { - - - @foreach (var group in _groups) - { - - @if (group.Permissions.Any(x => x.IsGranted)) +
+ @L["PermissionGroup"] + + @if (_groups != null && _groups.Any()) + { + + + @foreach (var group in _groups) { - - @group.DisplayName ( @(group.Permissions.Count(x => x.IsGranted)) ) - + + @if (group.Permissions.Any(x => x.IsGranted)) + { + + @group.DisplayName ( @(group.Permissions.Count(x => x.IsGranted)) ) + + } + else + { + + @group.DisplayName ( @(group.Permissions.Count(x => x.IsGranted)) ) + + } + } - else + + + @foreach (var group in _groups) { - - @group.DisplayName ( @(group.Permissions.Count(x => x.IsGranted)) ) - - } - - } - - - @foreach (var group in _groups) - { - - - - - @L["SelectAllInThisTab"] - - + + + + + @L["SelectAllInThisTab"] + + - - - @foreach (var permission in group.Permissions) - { - - - @GetShownName(permission) - - + + + @foreach (var permission in group.Permissions) + { + + + @GetShownName(permission) + + + } + + } - - - } - - - } + + + } + +
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 65a2416bcc..a087a5cb8a 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 @@ -24,6 +24,7 @@ public partial class PermissionManagementModal protected string _providerKey; protected string _entityDisplayName; + protected List _allGroups; protected List _groups; protected List _disabledPermissions = new List(); @@ -34,6 +35,8 @@ public partial class PermissionManagementModal protected int _notGrantedPermissionCount = 0; protected bool _selectAllDisabled; + + protected string _permissionGroupSearchText; protected bool GrantAll { get { @@ -85,35 +88,15 @@ public partial class PermissionManagementModal { _providerName = providerName; _providerKey = providerKey; + _permissionGroupSearchText = null; var result = await PermissionAppService.GetAsync(_providerName, _providerKey); _entityDisplayName = entityDisplayName ?? result.EntityDisplayName; - _groups = result.Groups; + _allGroups = result.Groups; + _groups = _allGroups; - _selectAllDisabled = _groups.All(IsPermissionGroupDisabled); - - _grantedPermissionCount = 0; - _notGrantedPermissionCount = 0; - foreach (var permission in _groups.SelectMany(x => x.Permissions)) - { - if (permission.IsGranted && permission.GrantedProviders.All(x => x.ProviderName != _providerName)) - { - _disabledPermissions.Add(permission); - continue; - } - - if (permission.IsGranted) - { - _grantedPermissionCount++; - } - else - { - _notGrantedPermissionCount++; - } - } - - _selectedTabName = GetNormalizedGroupName(_groups.First().Name); + NormalizePermissionGroup(); foreach (var group in _groups) { @@ -127,6 +110,34 @@ public partial class PermissionManagementModal await HandleErrorAsync(ex); } } + + protected void NormalizePermissionGroup() + { + _selectAllDisabled = _groups.All(IsPermissionGroupDisabled); + + _grantedPermissionCount = 0; + _notGrantedPermissionCount = 0; + _disabledPermissions.Clear(); + foreach (var permission in _groups.SelectMany(x => x.Permissions)) + { + if (permission.IsGranted && permission.GrantedProviders.All(x => x.ProviderName != _providerName)) + { + _disabledPermissions.Add(permission); + continue; + } + + if (permission.IsGranted) + { + _grantedPermissionCount++; + } + else + { + _notGrantedPermissionCount++; + } + } + + _selectedTabName = GetNormalizedGroupName(_groups.First().Name); + } protected Task CloseModal() { @@ -317,4 +328,26 @@ public partial class PermissionManagementModal return permissions.All(x => x.IsGranted) && grantedProviders.Any(p => p.ProviderName != _providerName); } + + protected virtual async Task OnPermissionGroupSearchTextChangedAsync(string value) + { + if (value == _permissionGroupSearchText) + { + return; + } + + _permissionGroupSearchText = value; + _groups = _permissionGroupSearchText.IsNullOrWhiteSpace() ? _allGroups : _allGroups.Where(x => x.DisplayName.Contains(_permissionGroupSearchText, StringComparison.OrdinalIgnoreCase)).ToList(); + + NormalizePermissionGroup(); + + await InvokeAsync(StateHasChanged); + } + + protected virtual Task OnSelectedTabChangedAsync(string name) + { + _selectedTabName = name; + + return Task.CompletedTask; + } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.css b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.css new file mode 100644 index 0000000000..6c827bec4a --- /dev/null +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.css @@ -0,0 +1,31 @@ +fieldset legend { + float: none; + width: auto; +} + +.lpx-scroll-pills-container ul { + display: block; + max-height: 500px; + overflow-y: auto; +} + +.lpx-scroll-pills-container .tab-content { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.lpx-scroll-pills-container ul li { + border: 1px solid #e8eef3; + margin-bottom: 10px; + border-radius: 10px; +} + +.lpx-scroll-pills-container ul li a.active { + color: #fff !important; + border-color: #6c5dd3 !important; + background-color: #6c5dd3 !important; +} + +.lpx-theme-dark .lpx-scroll-pills-container ul li { + border: 1px solid #23262a; +} \ No newline at end of file