|
|
|
@ -1,5 +1,4 @@ |
|
|
|
@using Services |
|
|
|
@inject IToastService toastService |
|
|
|
@inject IToastService toastService |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@implements IDisposable |
|
|
|
@implements IDisposable |
|
|
|
|
|
|
|
|
|
|
|
@ -9,18 +8,18 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
<div onclick="@Dismiss" class="toastContainer @FadeoutStyle @Toast.SeverityType.ToLower()"> |
|
|
|
<div onclick="@Dismiss" style="opacity: @Opacity()" class="toastContainer @Toast.SeverityType.ToLower()"> |
|
|
|
<div class="toastTitle"> |
|
|
|
<div class="toastTitle"> |
|
|
|
@Toast.Title |
|
|
|
@Toast.Title |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
@Toast.Message |
|
|
|
@Toast.Message |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
<style> |
|
|
|
<style> |
|
|
|
.toastContainer { |
|
|
|
.toastContainer { |
|
|
|
border: 4px solid; |
|
|
|
border: 4px solid; |
|
|
|
border-radius: 4px; |
|
|
|
border-radius: 4px; |
|
|
|
padding: 16px; |
|
|
|
padding: 16px; |
|
|
|
@ -28,15 +27,9 @@ else |
|
|
|
flex-direction: column; |
|
|
|
flex-direction: column; |
|
|
|
justify-items: stretch; |
|
|
|
justify-items: stretch; |
|
|
|
width: 250px; |
|
|
|
width: 250px; |
|
|
|
opacity: 1; |
|
|
|
|
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.fadeout { |
|
|
|
|
|
|
|
transition: opacity 3s ease-in; |
|
|
|
|
|
|
|
opacity: 0; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.@SeverityType.Warning.ToLower() { |
|
|
|
.@SeverityType.Warning.ToLower() { |
|
|
|
background-color: var(--severity-warning-color); |
|
|
|
background-color: var(--severity-warning-color); |
|
|
|
border-color: var(--severity-warning-border-color); |
|
|
|
border-color: var(--severity-warning-border-color); |
|
|
|
@ -64,49 +57,28 @@ else |
|
|
|
</style> |
|
|
|
</style> |
|
|
|
|
|
|
|
|
|
|
|
@code { |
|
|
|
@code { |
|
|
|
|
|
|
|
|
|
|
|
[Parameter] |
|
|
|
[Parameter] |
|
|
|
public ToastModel? Toast { get; set; } = default!; |
|
|
|
public ToastModel? Toast { get; set; } = default!; |
|
|
|
|
|
|
|
|
|
|
|
private bool isFadingOut = false; |
|
|
|
private float removalTime = 1300; |
|
|
|
|
|
|
|
private float fadeoutTime = 1200; |
|
|
|
|
|
|
|
|
|
|
|
private string FadeoutStyle => isFadingOut ? "fadeout" : ""; |
|
|
|
private float Opacity() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (Toast!.Age < fadeoutTime) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return 1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private int removalTime = 150000; |
|
|
|
return 1.0f - (Toast.Age - fadeoutTime) / (removalTime - fadeoutTime); |
|
|
|
private int fadeoutTime = 1000; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Timer removalTimer = null!; |
|
|
|
int elapsed = 0; |
|
|
|
private Timer fadeoutTimer = null!; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected override void OnInitialized() |
|
|
|
protected override void OnInitialized() |
|
|
|
{ |
|
|
|
{ |
|
|
|
#if DEBUG |
|
|
|
toastService.Subscribe(OnUpdate); |
|
|
|
removalTime = 8000; |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
removalTimer = new Timer(removalTime); |
|
|
|
|
|
|
|
removalTimer.Elapsed += OnRemoval!; |
|
|
|
|
|
|
|
removalTimer.Enabled = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fadeoutTimer = new Timer(removalTime - fadeoutTime); |
|
|
|
|
|
|
|
fadeoutTimer.Elapsed += OnFadeout!; |
|
|
|
|
|
|
|
fadeoutTimer.Enabled = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
toastService.Subscribe(StateHasChanged); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void OnFadeout(object source, ElapsedEventArgs eventArgs) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// isFadingOut = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StateHasChanged(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void OnRemoval(object source, ElapsedEventArgs eventArgs) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
//toastService.RemoveToast(Toast!); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StateHasChanged(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Dismiss() |
|
|
|
void Dismiss() |
|
|
|
@ -116,9 +88,15 @@ else |
|
|
|
|
|
|
|
|
|
|
|
public void Dispose() |
|
|
|
public void Dispose() |
|
|
|
{ |
|
|
|
{ |
|
|
|
removalTimer.Elapsed -= OnRemoval!; |
|
|
|
toastService.Unsubscribe(OnUpdate); |
|
|
|
fadeoutTimer.Elapsed -= OnFadeout!; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
toastService.Unsubscribe(StateHasChanged); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void OnUpdate() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (Toast!.Age > removalTime) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
toastService.RemoveToast(Toast); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |