mirror of https://github.com/abpframework/abp.git
4 changed files with 123 additions and 0 deletions
@ -0,0 +1,21 @@ |
|||
@typeparam TItem |
|||
@using Blazorise |
|||
|
|||
@if (ParentActions.Type == ActionType.Dropdown) |
|||
{ |
|||
if (IsVisible && Primary == false) |
|||
{ |
|||
<DropdownItem Clicked="@ActionClickedAsync">@Text</DropdownItem> |
|||
} |
|||
} |
|||
else |
|||
{ |
|||
if (IsVisible) |
|||
{ |
|||
<Blazorise.Button Block="true" |
|||
Color="Color.Primary" |
|||
Clicked="@ActionClickedAsync"> |
|||
@Text |
|||
</Blazorise.Button> |
|||
} |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
using System.Threading.Tasks; |
|||
using Microsoft.AspNetCore.Components; |
|||
|
|||
namespace Volo.Abp.BlazoriseUI.Components |
|||
{ |
|||
public partial class EntityAction<TItem> : ComponentBase |
|||
{ |
|||
[Parameter] |
|||
public bool IsVisible { get; set; } |
|||
[Parameter] |
|||
public string Text { get; set; } |
|||
|
|||
[Parameter] |
|||
public bool Primary { get; set; } |
|||
|
|||
[Parameter] |
|||
public EventCallback<TItem> Clicked { get; set; } |
|||
|
|||
[CascadingParameter] |
|||
public EntityActions<TItem> ParentActions { get; set; } |
|||
|
|||
protected override void OnInitialized() |
|||
{ |
|||
base.OnInitialized(); |
|||
ParentActions.AddAction(this); |
|||
} |
|||
|
|||
protected virtual async Task ActionClickedAsync() |
|||
{ |
|||
await Clicked.InvokeAsync(ParentActions.Entity); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
@typeparam TItem |
|||
<CascadingValue Value="this"> |
|||
@if (Type == ActionType.Dropdown) |
|||
{ |
|||
<Dropdown> |
|||
@if (HasPrimaryAction) |
|||
{ |
|||
<Blazorise.Button Block="true" |
|||
Color="Color.Primary" |
|||
Clicked="async ()=> await PrimaryAction.Clicked.InvokeAsync(Entity)"> |
|||
@PrimaryAction.Text |
|||
</Blazorise.Button> |
|||
<DropdownToggle Color="@ToggleColor" Split="true" /> |
|||
} |
|||
else |
|||
{ |
|||
<DropdownToggle Color="@ToggleColor"> |
|||
@ToggleText |
|||
</DropdownToggle> |
|||
} |
|||
<DropdownMenu> |
|||
@ChildContent |
|||
</DropdownMenu> |
|||
</Dropdown> |
|||
} |
|||
else |
|||
{ |
|||
@ChildContent |
|||
} |
|||
</CascadingValue> |
|||
@ -0,0 +1,39 @@ |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using Blazorise; |
|||
using Microsoft.AspNetCore.Components; |
|||
|
|||
namespace Volo.Abp.BlazoriseUI.Components |
|||
{ |
|||
public partial class EntityActions<TItem> : ComponentBase |
|||
{ |
|||
protected List<EntityAction<TItem>> Actions = new List<EntityAction<TItem>>(); |
|||
protected bool HasPrimaryAction => Actions.Any(t => t.Primary); |
|||
protected EntityAction<TItem> PrimaryAction => Actions.FirstOrDefault(t => t.Primary); |
|||
protected internal ActionType Type => Actions.Count(t => t.IsVisible) > 1 ? ActionType.Dropdown : ActionType.Button; |
|||
|
|||
[Parameter] |
|||
public Color ToggleColor { get; set; } |
|||
|
|||
[Parameter] |
|||
public string ToggleText { get; set; } |
|||
|
|||
[Parameter] |
|||
public TItem Entity { get; set; } |
|||
|
|||
[Parameter] |
|||
public RenderFragment ChildContent { get; set; } |
|||
|
|||
internal void AddAction(EntityAction<TItem> action) |
|||
{ |
|||
Actions.Add(action); |
|||
StateHasChanged(); |
|||
} |
|||
} |
|||
|
|||
public enum ActionType |
|||
{ |
|||
Dropdown, |
|||
Button |
|||
} |
|||
} |
|||
Loading…
Reference in new issue