Files
Shogi/Shogi.UI/Shared/TemporaryModal.razor

40 lines
1.1 KiB
Plaintext

@using System.Timers
<div class="TemporaryModal PrimaryTheme ThemeVariant--Contrast">
<div class="content">
@ChildContent
</div>
<button class="close" @onclick="OnClickClose">X</button>
<div class="countdown" style="--timeToClose: @TimeToClose">
<div class="time-background">
<div class="time"></div>
</div>
<div class="time-helper-text">This message will close soon.</div>
</div>
</div>
@code {
[Parameter][EditorRequired] public RenderFragment? ChildContent { get; set; }
[Parameter][EditorRequired] public EventCallback OnClickClose { get; set; }
[Parameter] public int SecondsUntilClose { get; set; } = 3;
private string TimeToClose => $"{SecondsUntilClose}s";
private System.Timers.Timer closingTimer = new System.Timers.Timer();
protected override void OnParametersSet()
{
closingTimer = new System.Timers.Timer(TimeSpan.FromSeconds(SecondsUntilClose).TotalMilliseconds)
{
AutoReset = false
};
closingTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimerElapsed);
closingTimer.Start();
}
private void OnTimerElapsed(object? source, ElapsedEventArgs elapsedEventArgs)
{
OnClickClose.InvokeAsync();
}
}