Skip to content

Commit

Permalink
New DisableTimeout setting (#206)
Browse files Browse the repository at this point in the history
* New DisableTimeout setting
* Fix potential null error
  • Loading branch information
chrissainty authored Feb 21, 2023
1 parent 1c7a8a8 commit 8763944
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 10 deletions.
1 change: 1 addition & 0 deletions samples/BlazorWebAssembly/Pages/Index.razor
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<h1>Blazored Toasts</h1>

<button class="btn btn-info" id="InfoButton" @onclick="@(() => ToastService.ShowInfo("I'm an INFO message", settings => settings.IconType = IconType.None))">Info Toast</button>
<button class="btn btn-info" @onclick="@(() => ToastService.ShowInfo("I'm an INFO message", settings => { settings.IconType = IconType.None; settings.DisableTimeout = true; }))">Info Toast without timeout</button>
<button class="btn btn-success" id="SuccessButton" @onclick="@(() => ToastService.ShowSuccess("I'm a SUCCESS message with a lot of text to see what a toast looks like when it's really big."))">Success Toast</button>
<button class="btn btn-warning" @onclick="@(() => ToastService.ShowWarning("I'm a WARNING message"))">Warning Toast</button>
<button class="btn btn-danger" @onclick="@(() => ToastService.ShowError("I'm an ERROR message"))">Error Toast</button>
Expand Down
3 changes: 1 addition & 2 deletions samples/BlazorWebAssembly/Shared/MainLayout.razor
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@
@using Blazored.Toast.Configuration

<BlazoredToasts Position="ToastPosition.BottomRight"
Timeout="120"
ShowProgressBar="true"
IconType="IconType.FontAwesome"
SuccessClass="success-toast-override"
ErrorIcon="fa fa-bug"
SuccessIcon="fa fa-thumbs-up" />
SuccessIcon="fa fa-thumbs-up"/>

<div class="page">
<div class="sidebar">
Expand Down
6 changes: 3 additions & 3 deletions src/Blazored.Toast/BlazoredToast.razor
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@ChildContent
</CascadingValue>

@if (Settings.ShowProgressBar)
@if (Settings is { DisableTimeout: false, ShowProgressBar: true })
{
<div class="blazored-toast-progressbar">
<span style="width: @(_progress)%;"></span>
Expand Down Expand Up @@ -70,7 +70,7 @@ else

<p class="blazored-toast-message">@Message</p>

@if (Settings.ShowCloseButton)
@if (Settings.DisableTimeout!.Value || Settings.ShowCloseButton)
{
<button type="button" class="blazored-toast-close" @onclick=@Close>
<i aria-label="icon: close" class="blazored-toast-close-icon">
Expand All @@ -88,7 +88,7 @@ else
</button>
}

@if (Settings.ShowProgressBar)
@if (Settings is { DisableTimeout: false, ShowProgressBar: true })
{
<div class="blazored-toast-progressbar">
<span style="width: @(_progress)%;"></span>
Expand Down
5 changes: 5 additions & 0 deletions src/Blazored.Toast/BlazoredToast.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ public partial class BlazoredToast : IDisposable

protected override async Task OnInitializedAsync()
{
if (Settings.DisableTimeout ?? false)
{
return;
}

if (Settings.ShowProgressBar)
{
_countdownTimer = new CountdownTimer(Settings.Timeout)
Expand Down
14 changes: 10 additions & 4 deletions src/Blazored.Toast/BlazoredToasts.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public partial class BlazoredToasts
[Parameter] public bool ShowProgressBar { get; set; }
[Parameter] public RenderFragment? CloseButtonContent { get; set; }
[Parameter] public bool ShowCloseButton { get; set; } = true;
[Parameter] public bool DisableTimeout { get; set; }

private string PositionClass { get; set; } = string.Empty;
private List<ToastInstance> ToastList { get; set; } = new();
Expand Down Expand Up @@ -62,6 +63,7 @@ private ToastSettings BuildCustomToastSettings(Action<ToastSettings>? settings)
{
var instanceToastSettings = new ToastSettings();
settings?.Invoke(instanceToastSettings);
instanceToastSettings.DisableTimeout ??= DisableTimeout;

return instanceToastSettings;
}
Expand All @@ -80,31 +82,35 @@ private ToastSettings BuildToastSettings(ToastLevel level, RenderFragment messag
ShowProgressBar,
ShowCloseButton,
toastInstanceSettings.OnClick,
toastInstanceSettings.Timeout == 0 ? Timeout : toastInstanceSettings.Timeout),
toastInstanceSettings.Timeout == 0 ? Timeout : toastInstanceSettings.Timeout,
toastInstanceSettings.DisableTimeout ?? DisableTimeout),
ToastLevel.Info => new ToastSettings(
"blazored-toast-info",
toastInstanceSettings.IconType ?? IconType,
toastInstanceSettings.Icon ?? InfoIcon ?? "",
ShowProgressBar,
ShowCloseButton,
toastInstanceSettings.OnClick,
toastInstanceSettings.Timeout == 0 ? Timeout : toastInstanceSettings.Timeout),
toastInstanceSettings.Timeout == 0 ? Timeout : toastInstanceSettings.Timeout,
toastInstanceSettings.DisableTimeout ?? DisableTimeout),
ToastLevel.Success => new ToastSettings(
"blazored-toast-success",
toastInstanceSettings.IconType ?? IconType,
toastInstanceSettings.Icon ?? SuccessIcon ?? "",
ShowProgressBar,
ShowCloseButton,
toastInstanceSettings.OnClick,
toastInstanceSettings.Timeout == 0 ? Timeout : toastInstanceSettings.Timeout),
toastInstanceSettings.Timeout == 0 ? Timeout : toastInstanceSettings.Timeout,
toastInstanceSettings.DisableTimeout ?? DisableTimeout),
ToastLevel.Warning => new ToastSettings(
"blazored-toast-warning",
toastInstanceSettings.IconType ?? IconType,
toastInstanceSettings.Icon ?? WarningIcon ?? "",
ShowProgressBar,
ShowCloseButton,
toastInstanceSettings.OnClick,
toastInstanceSettings.Timeout == 0 ? Timeout : toastInstanceSettings.Timeout),
toastInstanceSettings.Timeout == 0 ? Timeout : toastInstanceSettings.Timeout,
toastInstanceSettings.DisableTimeout ?? DisableTimeout),
_ => throw new InvalidOperationException()
};
}
Expand Down
5 changes: 4 additions & 1 deletion src/Blazored.Toast/Configuration/ToastSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public class ToastSettings
public bool ShowCloseButton { get; set; }
public Action? OnClick { get; set; }
public int Timeout { get; set; }
public bool? DisableTimeout { get; set; }

public ToastSettings(
string additionalClasses,
Expand All @@ -20,7 +21,8 @@ public ToastSettings(
bool showProgressBar,
bool showCloseButton,
Action? onClick,
int timeout)
int timeout,
bool disableTimeout)
{
AdditionalClasses = additionalClasses;
IconType = iconType;
Expand All @@ -29,6 +31,7 @@ public ToastSettings(
ShowCloseButton = showCloseButton;
OnClick = onClick;
Timeout = timeout;
DisableTimeout = disableTimeout;

if (onClick is not null)
{
Expand Down

0 comments on commit 8763944

Please sign in to comment.