Files
canvasManagement/Management.Web/Shared/Components/ConfirmationModal.razor

85 lines
1.7 KiB
Plaintext

@namespace Management.Web.Shared.Components
@code {
[Parameter]
public Action? OnConfirm { get; init; }
[Parameter]
public Action? OnDeny { get; init; }
[Parameter]
public Func<Task>? OnConfirmAsync { get; init; }
[Parameter]
public Func<Task>? OnDenyAsync { get; init; }
[Parameter]
[EditorRequired]
public string Label { get; set; } = "";
[Parameter]
[EditorRequired]
public string Class { get; set; } = "";
[Parameter]
public bool Disabled { get; set; } = false;
private Modal? modal { get; set; } = null;
private bool doingAsyncThings { get; set; } = false;
private async Task HandleDeny()
{
if(OnDeny != null)
OnDeny();
if(OnDenyAsync != null)
{
doingAsyncThings = true;
await OnDenyAsync();
doingAsyncThings = false;
}
modal?.Hide();
}
private async Task HandleConfirm()
{
if(OnConfirm != null)
OnConfirm();
if(OnConfirmAsync != null)
{
doingAsyncThings = true;
await OnConfirmAsync();
doingAsyncThings = false;
}
modal?.Hide();
}
}
<button
class="@(Class != "" ? Class : "btn btn-danger ")"
@onclick="() => modal?.Show()"
disabled="@Disabled"
>
@Label
</button>
<Modal @ref="modal">
<Title>Are you sure you want to @Label?</Title>
<Body>
<div class="text-center">
<button
class="btn btn-secondary"
@onclick="HandleDeny"
disabled="@Disabled"
>
no
</button>
<button
class="btn btn-primary"
@onclick="HandleConfirm"
disabled="@Disabled"
>
yes
</button>
</div>
</Body>
<Footer>
@if(doingAsyncThings)
{
<Spinnner />
}
</Footer>
</Modal>