Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5ef0f8f
Initial Toast work
vnbaaij Feb 24, 2026
692ab4e
Merge
vnbaaij Mar 10, 2026
deab381
Make it work with toast service
vnbaaij Mar 10, 2026
bf4f316
Merge branch 'dev-v5' into users/vnbaaij/dev-v5/toast-part1
vnbaaij Mar 16, 2026
75f495f
Big refactor. Use a FluentToast and FluentProgressToast as component …
vnbaaij Mar 18, 2026
0ab98a5
Merge branch 'dev-v5' into users/vnbaaij/dev-v5/toast-part1
vnbaaij Mar 18, 2026
7a85d82
Refactoring again
vnbaaij Mar 19, 2026
de285b1
Make dismiss use close action
vnbaaij Mar 20, 2026
623740e
Fix closing animation
vnbaaij Mar 20, 2026
0a247af
Fix layout, styling and animations
vnbaaij Mar 23, 2026
0b3f017
Implement action calbacks, add close reason, remove ToastResult, rena…
vnbaaij Mar 24, 2026
d6a5275
Implement queueing
vnbaaij Mar 24, 2026
82c6326
Add more tests, some small refactoring
vnbaaij Mar 24, 2026
cc4fee6
Merge branch 'dev-v5' into users/vnbaaij/dev-v5/toast-part1
vnbaaij Mar 25, 2026
c5b99d3
Add more tests, add xml comments, process Copilot review comments
vnbaaij Mar 25, 2026
09ed468
Merge branch 'users/vnbaaij/dev-v5/toast-part1' of https://github.com…
vnbaaij Mar 25, 2026
efda6fc
Rename and remove parameters, adjust tests
vnbaaij Mar 25, 2026
c2b270e
Process Copilot recommendation
vnbaaij Mar 25, 2026
77c6836
Merge branch 'dev-v5' into users/vnbaaij/dev-v5/toast-part1
vnbaaij Mar 27, 2026
9c65808
Finalize work, add docs and examples
vnbaaij Mar 27, 2026
904ad41
Update tests
vnbaaij Mar 27, 2026
934beb5
Added 1 new test and removed 1 obsolete test
vnbaaij Mar 27, 2026
1bb96d8
Process Copilot comments
vnbaaij Mar 27, 2026
57171c8
- Add `Inverted` parameter wit example, tests and docs
vnbaaij Mar 30, 2026
6da5e66
Add and fix test
vnbaaij Mar 30, 2026
f731ac2
Merge branch 'dev-v5' into users/vnbaaij/dev-v5/toast-part1
dvoituron Apr 3, 2026
affe63d
Delete AssemblyInfo.cs
vnbaaij Apr 3, 2026
603533a
Use LibraryConfig for ToastProvider settings
vnbaaij Apr 4, 2026
7549795
Remove a couple of toast now that provider doesn't have parameters an…
vnbaaij Apr 5, 2026
0a23f74
Merge branch 'dev-v5' into users/vnbaaij/dev-v5/toast-part1
vnbaaij Apr 5, 2026
212f8ad
Merge branch 'dev-v5' into users/vnbaaij/dev-v5/toast-part1
vnbaaij Apr 7, 2026
252302d
Merge branch 'dev-v5' into users/vnbaaij/dev-v5/toast-part1
vnbaaij Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,32 +1,101 @@
@page "/Toast/Debug/Service"
@page "/Toast/Debug/Service"
@inject IToastService ToastService

<FluentButton OnClick="@OpenToastAsync"
Appearance="ButtonAppearance.Primary">
Open Toast
</FluentButton>
<FluentStack Orientation="Orientation.Vertical" VerticalGap="12">
<FluentStack>
<FluentButton OnClick="@OpenToastAsync" Appearance="ButtonAppearance.Primary">
Open confirmation toast
</FluentButton>
<FluentButton OnClick="@OpenDismissableToastAsync" Appearance="ButtonAppearance.Outline">
Open communication toast
</FluentButton>
<FluentButton OnClick="@OpenProgressToastAsync" Appearance="ButtonAppearance.Subtle">
Open progress toast
</FluentButton>
<FluentButton OnClick="@OpenProgressToast2Async" Appearance="ButtonAppearance.Subtle">
Open determinate progress toast
</FluentButton>
</FluentStack>

<div style="font-size: var(--fontSizeBase200); color: var(--colorNeutralForeground2);">
Last result: @_lastResult
</div>
</FluentStack>

@code
{
private async Task OpenToastAsync()
{
var result = await ToastService.ShowToastAsync<DebugToastContent>(options =>
private string _lastResult = "(none)";

private async Task OpenDismissableToastAsync()
{
var result = await ToastService.ShowToastAsync<FluentToast>(options =>
{
options.Timeout = 70000;
options.Parameters[nameof(FluentToast.Intent)] = ToastIntent.Warning;
options.Parameters[nameof(FluentToast.Title)] = "Delete item?";
options.Parameters[nameof(FluentToast.Body)] = "This action can't be undone.";
options.Parameters[nameof(FluentToast.QuickAction1)] = "Delete";
options.Parameters[nameof(FluentToast.QuickAction2)] = "Cancel";
options.Parameters[nameof(FluentToast.ShowDismissButton)] = true;
options.OnStateChange = (e) =>
{
Console.WriteLine($"State changed: {e.State}");
};
});

_lastResult = result.Cancelled ? "Confirmation: Cancelled" : "Confirmation: Ok";
}

private async Task OpenToastAsync()
{
options.Parameters.Add(nameof(DebugToastContent.Name), "John");
var result = await ToastService.ShowToastAsync<FluentToast>(options =>
{
options.Timeout = 70000;
options.Parameters[nameof(FluentToast.Intent)] = ToastIntent.Info;
options.Parameters[nameof(FluentToast.Title)] = "Email sent";
options.Parameters[nameof(FluentToast.Body)] = "Your message was delivered.";
options.Parameters[nameof(FluentToast.Subtitle)] = "Just now";
options.Parameters[nameof(FluentToast.QuickAction1)] = "Undo";
options.Parameters[nameof(FluentToast.QuickAction2)] = "Dismiss";
options.Parameters[nameof(FluentToast.ShowDismissButton)] = false;
});

options.OnStateChange = (e) =>
{
Console.WriteLine($"State changed: {e.State}");
};
});
_lastResult = result.Cancelled ? "Communication: Cancelled" : "Communication: Ok";
}

if (result.Cancelled)
private async Task OpenProgressToastAsync()
{
Console.WriteLine($"Toast Canceled: {result.Value}");
var result = await ToastService.ShowToastAsync<FluentProgressToast>(options =>
{
options.Timeout = 0;
options.Parameters[nameof(FluentProgressToast.Intent)] = ToastIntent.Info;
options.Parameters[nameof(FluentProgressToast.Title)] = "Uploading";
options.Parameters[nameof(FluentProgressToast.Body)] = "Please wait while your files are uploaded.";
options.Parameters[nameof(FluentProgressToast.Status)] = "Uploading 3 files...";
options.Parameters[nameof(FluentProgressToast.Indeterminate)] = true;
options.Parameters[nameof(FluentProgressToast.QuickAction1)] = "Hide";
options.Parameters[nameof(FluentProgressToast.QuickAction2)] = "Cancel";
options.Parameters[nameof(FluentProgressToast.ShowDismissButton)] = false;
});

_lastResult = result.Cancelled ? "Progress: Cancelled" : "Progress: Ok";
}
else

private async Task OpenProgressToast2Async()
{
Console.WriteLine($"Toast Confirmed: {result.Value}");
var result = await ToastService.ShowToastAsync<FluentProgressToast>(options =>
{
options.Timeout = 0;
options.Parameters[nameof(FluentProgressToast.Intent)] = ToastIntent.Info;
options.Parameters[nameof(FluentProgressToast.Title)] = "Uploading";
options.Parameters[nameof(FluentProgressToast.Body)] = "Please wait while your files are uploaded.";
options.Parameters[nameof(FluentProgressToast.Status)] = "Uploading 3 files...";
options.Parameters[nameof(FluentProgressToast.Indeterminate)] = false;
options.Parameters[nameof(FluentProgressToast.QuickAction1)] = "Hide";
options.Parameters[nameof(FluentProgressToast.QuickAction2)] = "Cancel";
options.Parameters[nameof(FluentProgressToast.ShowDismissButton)] = false;
});

_lastResult = result.Cancelled ? "Progress: Cancelled" : "Progress: Ok";
}
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
<div>
Toast Content
</div>
<div>
<FluentButton Appearance="ButtonAppearance.Primary"
OnClick="btnOK_Click">OK</FluentButton>
<FluentButton Appearance="ButtonAppearance.Default"
OnClick="btnCancel_Click">Cancel</FluentButton>
<div class="fluent-toast">
<div class="fluent-toast-title-icon">
<!-- icon -->
</div>
<div id="toast-title-123" class="fluent-toast-title">Email sent</div>
<div class="fluent-toast-title-action">
<!-- close or undo button as link -->
</div>
<div id="toast-body-123" class="fluent-toast-body">This is a toast body</div>
<div class="fluent-toast-body-subtitle">Subtitle</div>
<div class="fluent-toast-footer">
<!-- action button 1 as link -->
<!-- action button 2 as link -->
</div>
</div>

@code {
Expand All @@ -26,7 +32,7 @@
{
await Toast.CloseAsync(ToastResult.Ok("Yes"));
}

private async Task btnCancel_Click()
{
await Toast.CloseAsync(ToastResult.Cancel("No"));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
title: Toast
route: /Toast
category: 20|Components
icon: FoodToast
---

# Toast

The `FluentToast` component is a temporary notification that appears on the edge of the screen.

To display the `FluentToast` component, you need to set the `Opened` parameter to `true`.
This parameter is bindable, so you can control the visibility of the `FluentToast` from your code.

## Examples


### Default

{{ FluentToastDefault }}

## API Documentation

{{ API Type=FluentToast }}

Loading
Loading