diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/Extensibility/EntityActions/EntityAction.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/Extensibility/EntityActions/EntityAction.cs index fbc0ba2d73..8d2646e688 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/Extensibility/EntityActions/EntityAction.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/Extensibility/EntityActions/EntityAction.cs @@ -12,6 +12,7 @@ namespace Volo.Abp.AspNetCore.Components.Extensibility.EntityActions public bool Primary { get; set; } public object Color { get; set; } public string Icon { get; set; } + public Func> Visible { get; set; } public bool Equals(EntityAction other) { return string.Equals(Text, other?.Text, StringComparison.OrdinalIgnoreCase); diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor index c743542bf8..ae5e106a72 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor @@ -30,6 +30,7 @@ Icon="@action.Icon" Clicked="async () => await action.Clicked(context)" ConfirmationMessage="() => action.ConfirmationMessage.Invoke(context)" + Visible="async () => await action.Visible?.Invoke(context)" Text="@action.Text"> } @@ -40,6 +41,7 @@ Clicked="async () => await action.Clicked(context)" Color="@(action.Color!=null ? (Blazorise.Color)action.Color : Blazorise.Color.None)" Icon="@action.Icon" + Visible="async () => await action.Visible?.Invoke(context)" Text="@action.Text"> } diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/EntityAction.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/EntityAction.razor index 1312e1b2ae..dedb1ed24d 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/EntityAction.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/EntityAction.razor @@ -3,14 +3,14 @@ @if (ParentActions.Type == ActionType.Dropdown) { - if (IsVisible && Primary == false) + if (IsEntityActionVisible && Primary == false) { @Text } } else { - if (IsVisible) + if (IsEntityActionVisible) { : ComponentBase { - internal bool IsVisible = true; + internal bool IsEntityActionVisible = true; [Parameter] public string Text { get; set; } @@ -35,6 +35,9 @@ namespace Volo.Abp.BlazoriseUI.Components [Parameter] public string Icon { get; set; } + [Parameter] + public Func> Visible { get; set; } + [CascadingParameter] public EntityActions ParentActions { get; set; } @@ -48,9 +51,11 @@ namespace Volo.Abp.BlazoriseUI.Components { await base.OnInitializedAsync(); await SetDefaultValuesAsync(); - if (!RequiredPolicy.IsNullOrEmpty()) + IsEntityActionVisible = await Visible?.Invoke(); + + if (!RequiredPolicy.IsNullOrEmpty() && !IsEntityActionVisible) { - IsVisible = await AuthorizationService.IsGrantedAsync(RequiredPolicy); + IsEntityActionVisible = await AuthorizationService.IsGrantedAsync(RequiredPolicy); } ParentActions.AddAction(this); } diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/EntityActions.razor.cs b/framework/src/Volo.Abp.BlazoriseUI/Components/EntityActions.razor.cs index 1785079cf0..df039a2c14 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/EntityActions.razor.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/EntityActions.razor.cs @@ -12,7 +12,7 @@ namespace Volo.Abp.BlazoriseUI.Components protected readonly List> Actions = new List>(); protected bool HasPrimaryAction => Actions.Any(t => t.Primary); protected EntityAction PrimaryAction => Actions.FirstOrDefault(t => t.Primary); - protected internal ActionType Type => Actions.Count(t => t.IsVisible) > 1 ? ActionType.Dropdown : ActionType.Button; + protected internal ActionType Type => Actions.Count(t => t.IsEntityActionVisible) > 1 ? ActionType.Dropdown : ActionType.Button; [Parameter] public Color ToggleColor { get; set; } = Color.Primary; @@ -34,7 +34,7 @@ namespace Volo.Abp.BlazoriseUI.Components Actions.Add(action); if (EntityActionsColumn != null) { - EntityActionsColumn.Displayable = Actions.Any(t => t.IsVisible); + EntityActionsColumn.Displayable = Actions.Any(t => t.IsEntityActionVisible); } StateHasChanged(); }