From d4ee43fd1cf3a9fb79c9f07275e29995b2196018 Mon Sep 17 00:00:00 2001 From: Chris Sainty Date: Fri, 8 May 2020 12:25:41 +0100 Subject: [PATCH] Added ability to remove toasts on navigation --- samples/BlazorServer/Shared/NavMenu.razor | 12 ++++++------ src/Blazored.Toast/BlazoredToasts.razor.cs | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/samples/BlazorServer/Shared/NavMenu.razor b/samples/BlazorServer/Shared/NavMenu.razor index ae4a65c..b2d7a10 100644 --- a/samples/BlazorServer/Shared/NavMenu.razor +++ b/samples/BlazorServer/Shared/NavMenu.razor @@ -6,12 +6,12 @@
-
diff --git a/src/Blazored.Toast/BlazoredToasts.razor.cs b/src/Blazored.Toast/BlazoredToasts.razor.cs index 51da04c..5d76c13 100644 --- a/src/Blazored.Toast/BlazoredToasts.razor.cs +++ b/src/Blazored.Toast/BlazoredToasts.razor.cs @@ -27,6 +27,7 @@ public partial class BlazoredToasts [Parameter] public string ErrorIcon { get; set; } [Parameter] public ToastPosition Position { get; set; } = ToastPosition.TopRight; [Parameter] public int Timeout { get; set; } = 5; + [Parameter] public bool RemoveToastsOnNavigation { get; set; } private string PositionClass { get; set; } = string.Empty; internal List ToastList { get; set; } = new List(); @@ -35,6 +36,11 @@ protected override void OnInitialized() { ToastService.OnShow += ShowToast; + if (RemoveToastsOnNavigation) + { + NavigationManager.LocationChanged += ClearToasts; + } + PositionClass = $"position-{Position.ToString().ToLower()}"; if (( !string.IsNullOrEmpty(InfoIcon) @@ -57,6 +63,15 @@ public void RemoveToast(Guid toastId) }); } + private void ClearToasts(object sender, LocationChangedEventArgs args) + { + InvokeAsync(() => + { + ToastList.Clear(); + StateHasChanged(); + }); + } + private ToastSettings BuildToastSettings(ToastLevel level, RenderFragment message, string heading) { switch (level)