40 lines
1.1 KiB
Plaintext
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();
|
|
}
|
|
}
|