Skip to content

Commit

Permalink
Merge pull request #64 from Blazored/option-to-remove-toasts-on-navig…
Browse files Browse the repository at this point in the history
…ation

Added ability to remove toasts on navigation
  • Loading branch information
chrissainty authored May 8, 2020
2 parents c7a062b + d4ee43f commit fd60c69
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
12 changes: 6 additions & 6 deletions samples/BlazorServer/Shared/NavMenu.razor
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
</div>

<div class="@NavMenuCssClass" @onclick="@ToggleNavMenu">
<ul class="nav flex-column">
<li class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</li>
<ul class="nav flex-column">
<li class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="oi oi-home" aria-hidden="true"></span> Home
</NavLink>
</li>
</ul>
</div>

Expand Down
15 changes: 15 additions & 0 deletions src/Blazored.Toast/BlazoredToasts.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<ToastInstance> ToastList { get; set; } = new List<ToastInstance>();
Expand All @@ -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)
Expand All @@ -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)
Expand Down

0 comments on commit fd60c69

Please # to comment.