48 lines
1019 B
Plaintext
48 lines
1019 B
Plaintext
@if (!Working)
|
|
{
|
|
<button class="btn @(CssClasses)" @onclick="Do">
|
|
@Text
|
|
@ChildContent
|
|
</button>
|
|
}
|
|
else
|
|
{
|
|
<button class="btn @(CssClasses) disabled" disabled="">
|
|
<span class="spinner-border spinner-border-sm align-middle me-2"></span>
|
|
@WorkingText
|
|
</button>
|
|
}
|
|
|
|
@code
|
|
{
|
|
private bool Working { get; set; } = false;
|
|
|
|
[Parameter]
|
|
public string CssClasses { get; set; } = "btn-primary";
|
|
|
|
[Parameter]
|
|
public string Text { get; set; } = "";
|
|
|
|
[Parameter]
|
|
public string WorkingText { get; set; } = "";
|
|
|
|
[Parameter]
|
|
public Func<Task>? OnClick { get; set; }
|
|
|
|
[Parameter]
|
|
public RenderFragment ChildContent { get; set; }
|
|
|
|
private async Task Do()
|
|
{
|
|
Working = true;
|
|
StateHasChanged();
|
|
await Task.Run(async () =>
|
|
{
|
|
if(OnClick != null)
|
|
await OnClick.Invoke();
|
|
|
|
Working = false;
|
|
await InvokeAsync(StateHasChanged);
|
|
});
|
|
}
|
|
} |