SavingToast
Description
A toast notification for save operations
The SavingToast component helps viewing the state of a saving operation (Saving, Saved, Error) with appropriate icons and colors.
Samples
Trigger states
saving-toast-triggers-sample.js
using System.Threading.Tasks;
using H5.Core;
using Tesserae;
using static H5.Core.dom;
using static Tesserae.UI;
namespace Tesserae.Tests
{
internal static class App
{
private static async Task ShowMany()
{
var toast1 = SavingToast();
var toast2 = SavingToast();
var toast3 = SavingToast();
toast1.Saving("Starting save...");
toast2.Saving("Starting save...");
toast3.Saving("Starting save...");
await Task.Delay(2000);
toast1.Saved("All done!");
await Task.Delay(2000);
toast2.Saved("All done!");
await Task.Delay(2000);
toast3.Saved("All done!");
}
private static void Main()
{
var component = HStack().Children(
Button("Trigger Saving").OnClick(() => SavingToast().Saving("Saving data...")),
Button("Trigger Saved" ).OnClick(() => SavingToast().Saved("Data saved successfully!")),
Button("Trigger Error" ).OnClick(() => SavingToast().Error("Could not save data.")),
Button("Trigger Error with Close" ).OnClick(() => SavingToast().Error("Could not save data.", untilDismissed: true)),
Button("Many Toasts").OnClickSpinWhile(() => ShowMany())
).Gap(8.px());
document.body.style.overflow = "hidden";
MountCenteredToBody(component);
}
}
}
Live Demo
saving-toast-live-sample.js
using System.Threading.Tasks;
using H5.Core;
using Tesserae;
using static H5.Core.dom;
using static Tesserae.UI;
namespace Tesserae.Tests
{
internal static class App
{
private static void Main()
{
var component = Button("Simulate Save Process").OnClick(async () => {
var savingToast = SavingToast();
savingToast.Saving("Starting save...");
await Task.Delay(2000);
savingToast.Saved("All done!");
});
document.body.style.overflow = "hidden";
MountCenteredToBody(component);
}
}
}