Better move error visibility
This commit is contained in:
39
Shogi.UI/Shared/TemporaryModal.razor
Normal file
39
Shogi.UI/Shared/TemporaryModal.razor
Normal file
@@ -0,0 +1,39 @@
|
||||
@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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user