diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/SubmitButton.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/SubmitButton.razor new file mode 100644 index 0000000000..97194720fe --- /dev/null +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/SubmitButton.razor @@ -0,0 +1,3 @@ + diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/SubmitButton.razor.cs b/framework/src/Volo.Abp.BlazoriseUI/Components/SubmitButton.razor.cs new file mode 100644 index 0000000000..b4a7e13afd --- /dev/null +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/SubmitButton.razor.cs @@ -0,0 +1,62 @@ +using System; +using System.Threading.Tasks; +using Blazorise; +using Microsoft.AspNetCore.Components; + +namespace Volo.Abp.BlazoriseUI.Components +{ + public partial class SubmitButton : ComponentBase + { + protected bool Submiting { get; set; } + + [Parameter] + public string Form { get; set; } + + [Parameter] + public ButtonType Type { get; set; } = ButtonType.Submit; + + [Parameter] + public Color Color { get; set; } = Color.Primary; + + [Parameter] + public bool PreventDefaultOnSubmit { get; set; } = true; + + [Parameter] + public bool Block { get; set; } + + [Parameter] + public bool? Disabled { get; set; } + + [Parameter] + public EventCallback Clicked { get; set; } + + [Parameter] + public RenderFragment ChildContent { get; set; } + + protected bool IsDisabled + => Disabled == true || Submiting; + + protected bool IsLoading + => Submiting; + + protected virtual async Task OnClickedHandler() + { + try + { + Submiting = true; + + await Clicked.InvokeAsync(null); + } + catch (Exception) + { + throw; + } + finally + { + Submiting = false; + + await InvokeAsync(StateHasChanged); + } + } + } +}