Skip to content

[dev-v5] Toast Service Refactoring#4950

Open
dvoituron wants to merge 45 commits into
dev-v5from
users/dvoituron/dev-v5/toast-refactor
Open

[dev-v5] Toast Service Refactoring#4950
dvoituron wants to merge 45 commits into
dev-v5from
users/dvoituron/dev-v5/toast-refactor

Conversation

@dvoituron

@dvoituron dvoituron commented Jun 21, 2026

Copy link
Copy Markdown
Collaborator

[dev-v5] Toast Service Refactoring

Migrate Toast components to a new notification system, improving the structure, state management, and customization options. Update the documentation and examples. This change improves user interaction and aligns with the new naming conventions to facilitate maintenance.

Main new features:

  • Use of an INotificationService, shared with MessageBar and Toast
  • Generalization of the Toast content to allow insertion of any Razor component and use of Parameters to communicate with that component (similar to Dialog)
  • Addition of convenience methods such as ShowSuccessToastAsync
  • Use of a common ToastOptionsAction class for quick actions and dismiss actions
  • Addition of a ResultTiming option to interact with the Result value when it is available in C# (await keyword)
  • WebComponent: no change

Examples

Fastest helper methods

This example shows the fastest helper methods to display success, info, warning, error and progress toasts
by using a required title plus optional message and dismiss button details.

<FluentButton OnClick="@(async e => await NotificationService.ShowSuccessToastAsync($"Success toast #{counter++}", lifetime: 5))">
    Show Success
</FluentButton>
<FluentButton OnClick="@(async e => await NotificationService.ShowWarningToastAsync($"Warning toast #{counter++}", lifetime: 5))">
    Show Warning
</FluentButton>

Default

This example shows the standard toast setup with default behavior and intent. Use it as the baseline pattern for simple status feedback.

In this example, Success, Warning, Error, and Info toasts are shown for 5 seconds (lifetime = 5) and then close automatically.
The Progress toast behaves differently: the line ProgressResult = await NotificationService.ShowProgressToastAsync() returns immediately
a toast instance that is stored in ProgressResult.Instance.
When ProgressResult is available, the [Close Progress] button is enabled so the user can close that toast manually.

var result = await NotificationService.ShowToastAsync(options =>
{
    options.Intent = intent;
    options.Title = $"{intent} toast #{counter++}";
    options.Message = "Toasts are used to show brief messages to the user.";
    options.Subtitle = "Sent by Fluent UI Blazor";
    options.AllowDismiss = true;
    options.OnStatusChange = (e) =>
    {
        Console.WriteLine($" . '{e.Instance.Options.Title}' status changed to: {e.Status}");
    };
});

Console.WriteLine($"'{result.Instance.Options.Title}' closed with Reason: {result.Reason}");

Custom dismissal

This example shows a toast that uses a custom dismiss action instead of the default dismiss button, useful when you need a tailored close flow.

var result = await NotificationService.ShowToastAsync(options =>
{
    options.Intent = ToastIntent.Success;
    options.Title = $"App update available";
    options.Lifetime = TimeSpan.FromSeconds(10);
    options.Message = "This toast has a custom dismiss action.";
    options.DismissAction.Label = "Review";
    options.DismissAction.Tooltip = "Click to review the update.";
    options.DismissAction.OnClickAsync = async (e) =>
    {
        Console.WriteLine($"Review action clicked.");
        await e.Instance.CloseAsync(ToastCloseReason.Dismissed);
    };
});

Determinate progress

This example shows a determinate progress toast that updates as the operation advances toward completion.

It uses ShowToastAsync<TToast>(...), where the generic type TToast is the Razor component dynamically rendered inside the toast body.
With this approach, you can open any Razor component in the toast and fully customize its content and behavior.

var result = await NotificationService.ShowToastAsync<Toast.CustomizedProgressToast>(options =>
{
    options.Title = "Downloading file";
    options.Icon = new Icons.Regular.Size24.ArrowDownload();
    options.AllowDismiss = false;
    options.Width = "400px";
    options.Parameters.Add("ProgressValue", 0);
});

Quick actions

This example shows quick action links inside the toast so people can immediately respond to the notification.

options.QuickAction1.Label = "Review changes";
options.QuickAction1.Tooltip = "Click to review changes made in Comtoso Dashboard.";
options.QuickAction1.OnClickAsync = async (e) =>
{
    Console.WriteLine($"Review action clicked.");
    await e.Instance.CloseAsync(ToastCloseReason.Dismissed);
};

Result Timing

This example shows when your application should consider an interaction with a context notification to be complete and when the .NET code should continue executing
var result = await NotificationService.ShowToastAsync().

By default, await NotificationService.ShowToastAsync(...) resumes only when the toast is closed.

If you do not want to wait for the result, start the call without waiting for completion:
_ = NotificationService.ShowToastAsync(...);

You can also control when the awaited result is completed with ResultTiming:

  • ResultTiming = Closed (default): code after await runs after the toast is closed.
  • ResultTiming = Visible: code after await runs as soon as the toast is visible.

When using Visible, keep the returned result.Instance if you need to interact with that toast later (for example, close it programmatically).

In the sample, both toasts stay visible for 5 seconds. Show Lifetime On Close reports the result after the toast closes,
while Show Lifetime On Visible reports it immediately when the toast appears.

var resultOnVisible = await NotificationService.ShowToastAsync(options =>
{
    options.Title = $"App update available";
    options.Lifetime = TimeSpan.FromSeconds(5);
    options.ResultTiming = ToastResultTiming.Visible;   // ResultTiming = On Visible, which means the result will complete as soon as the toast is rendered and visible to the user
});

TODO

  • Copilot Review
  • Unit Tests

dvoituron added 30 commits June 18, 2026 17:53
…ss handling, and update close method signature
…tates, and enhance toast instance management
…nd DismissTooltip, enhancing customization options for dismiss actions
…ion of dismiss options, including label, tooltip, and callback functionality.
…ser interaction with customizable actions in the toast footer.
… detailed usage guidelines and examples for better user understanding.
…tdated content and enhancing usage guidelines. Update toast component to use transparent button appearance for dismiss action and remove unnecessary timestamp property from ToastOptions.
…allbackAsync to OnClickAsync for improved clarity and consistency. Add new example for default toast options.
… methods for improved clarity and consistency. Update button actions to reflect changes in toast display logic.
… rendering and improve type safety with DynamicallyAccessedMembers attributes. Update toast content rendering logic for better flexibility.
…uce ToastResultTiming enum for improved result completion control.
…ntrol and user interaction. Introduce new example for result timing options and update toast service methods for improved clarity.
…t functionality into a more streamlined testing approach.
Copilot AI review requested due to automatic review settings June 21, 2026 17:30
@github-actions

github-actions Bot commented Jun 21, 2026

Copy link
Copy Markdown

✅ All tests passed successfully

Details on your Workflow / Core Tests page.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the Toast system to use a unified INotificationService shared with MessageBar, introducing new toast option semantics (custom body components + parameters, action model, and result timing) and updating providers, docs, and demo examples accordingly.

Changes:

  • Replaced IToastService/ToastService with INotificationService/NotificationService for toast operations and lifecycle handling.
  • Updated toast APIs (ToastOptions, ToastInstance, ToastResult, ToastResultTiming, action model) and provider rendering to support dynamic Razor components and actions.
  • Removed legacy toast tests and updated MessageBar tests; refreshed documentation and demo examples; extracted toast web-component styles into a separate TS module.

Reviewed changes

Copilot reviewed 49 out of 49 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
tests/Core/Components/Toast/ToastInstanceTests.razor Removed legacy toast instance/service tests (no replacement included in this PR).
tests/Core/Components/Toast/FluentToastTests.razor Removed legacy FluentToast bUnit test suite.
tests/Core/Components/Toast/FluentToastTests.FluentToast_WithInstance.verified.razor.html Removed legacy snapshot for toast tests.
tests/Core/Components/Toast/FluentToastProviderTests.razor Removed legacy FluentToastProvider test suite.
tests/Core/Components/MessageBar/MessageBarServiceTests.cs Updated tests to resolve INotificationService from DI using bUnit context.
tests/Core/Components/MessageBar/MessageBarInstanceTests.cs Updated tests for new notification service base types and DI usage.
tests/Core/Components/MessageBar/MessageBarEventArgsTests.cs Updated tests to use DI-provided notification service.
tests/Core/Components/MessageBar/FluentMessageBarProviderTests.razor Adjusted fake instance implementation for INotificationInstance.
src/Core/Extensions/ServiceCollectionExtensions.cs Removed IToastService registration; registers INotificationService as the unified service.
src/Core/Events/ToastEventArgs.cs Simplified event args construction; updated docs to reference notification service.
src/Core/Enums/ToastResultTiming.cs Introduced ToastResultTiming (replacing previous enum content) for controlling when results complete.
src/Core/Enums/ToastIntent.cs Expanded intent docs and added Progress.
src/Core/Components/Toast/Services/ToastService.cs Removed legacy ToastService implementation.
src/Core/Components/Toast/Services/ToastResult.cs Added structured toast result (Reason, Data, Instance).
src/Core/Components/Toast/Services/ToastOptionsAction.cs Added unified action model for quick/dismiss actions.
src/Core/Components/Toast/Services/ToastOptions.cs Renamed/reshaped toast options (message/lifetime/actions/parameters/result timing).
src/Core/Components/Toast/Services/ToastInstance.cs Updated toast instance to work with notification service + new result model and status transitions.
src/Core/Components/Toast/Services/NotificationService.cs Added toast-related notification service implementation (show/close/queue/remove).
src/Core/Components/Toast/Services/LibraryToastOptions.cs Updated global toast defaults (lifetime/allow dismiss/width) and documentation.
src/Core/Components/Toast/Services/IToastService.cs Removed legacy toast service interface.
src/Core/Components/Toast/Services/IToastInstance.cs Updated toast instance interface to align with notification-instance model and results.
src/Core/Components/Toast/Services/INotificationService.cs Added toast-capable notification service interface (toast API surface).
src/Core/Components/Toast/FluentToastProvider.razor.cs Updated provider to subscribe/unsubscribe to notification updates; new queue/render logic.
src/Core/Components/Toast/FluentToastProvider.razor Updated provider rendering: cascading instance, dynamic body component/message, footer template, lifetime, width.
src/Core/Components/Toast/FluentToast.razor.cs Updated FluentToast component API (lifetime, actions, cascading instance) and lifecycle handling.
src/Core/Components/Toast/FluentToast.razor Updated toast markup (slots, lifetime->timeout ms, sanitized title/subtitle, footer template).
src/Core/Components/MessageBar/Services/NotificationService.Subscribers.cs Generalized subscribers to INotificationInstance.
src/Core/Components/MessageBar/Services/NotificationService.cs Converted service base type to INotificationInstance and generalized CloseAsync(id, ...) to close message bars or toasts.
src/Core/Components/MessageBar/Services/MessageBarOptions.cs Minor doc improvement for options factory parameter.
src/Core/Components/MessageBar/Services/MessageBarInstance.cs Updated to implement INotificationInstance component-type plumbing with trimming annotations.
src/Core/Components/MessageBar/Services/INotificationService.cs Updated notification service interface base type and generalized close-by-id semantics.
src/Core/Components/MessageBar/Services/INotificationInstance.cs Added shared notification instance abstraction (Id, Index, CloseAsync, optional component type).
src/Core/Components/MessageBar/Services/IMessageBarInstance.cs Updated to inherit INotificationInstance.
src/Core/Components/MessageBar/FluentMessageBarProvider.razor.cs Updated provider filtering to use new INotificationInstance item store.
src/Core/Components/Dialog/DialogEventArgs.cs Extracted dialog state derivation into reusable helper (GetDialogState).
src/Core/Components/Base/FluentSlot.cs Added toast slot constants (ToastMedia, ToastTitle, ToastAction, ToastSubtitle, ToastFooter).
src/Core.Scripts/src/Components/Toast/FluentToast.ts Refactored style injection to use extracted TS styles module.
src/Core.Scripts/src/Components/Toast/FluentToast-Styles.ts Added extracted toast CSS as a TS string constant.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/FluentToast.md Updated docs to reference INotificationService, new options/actions/result timing, and updated defaults.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/Toast/CustomizedProgressToast.razor Added custom toast body component example using cascading toast instance + parameters.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/FluentToastResultTiming.razor Added result timing example (Closed vs Visible).
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/FluentToastQuickActions.razor Added quick actions example using ToastOptionsAction.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/FluentToastInverted.razor Updated inverted toast demo to use INotificationService + new options.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/FluentToastIndeterminateProgress.razor Updated progress example to new progress intent + instance tracking.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/FluentToastDeterminateProgress.razor Updated determinate progress example to use custom component toast.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/FluentToastDefaultOptions.razor Added new default-options sample using intent-based toasts.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/FluentToastDefault.razor Updated default demo to use convenience toast methods + progress instance handling.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/Toast/Examples/FluentToastCustomDismiss.razor Updated custom dismiss example to use new dismiss action model.
examples/Demo/FluentUI.Demo.Client/Documentation/Components/TextInput/Examples/TextInputPrefixSuffix.razor Updated clipboard toast usage to INotificationService.
Comments suppressed due to low confidence (1)

src/Core/Components/Toast/FluentToastProvider.razor.cs:180

  • SynchronizeToastQueue doesn't handle the documented MaxToastCount = 0 (unlimited) case. With maxToastCount == 0, the condition activeCount >= maxToastCount is always true, so queued toasts will never be promoted to visible.
        var maxToastCount = configuration.Toast.MaxToastCount;
        var activeCount = ToastItems.Count(toast => toast.LifecycleStatus is ToastLifecycleStatus.Visible or ToastLifecycleStatus.Dismissed);
        var queuedToasts = ToastItems.Where(toast => toast.LifecycleStatus == ToastLifecycleStatus.Queued)
                                     .OrderBy(toast => toast.Index)
                                     .ToList();

        foreach (var toast in queuedToasts)
        {
            if (activeCount >= maxToastCount)
            {
                break;

Comment thread src/Core/Components/Toast/FluentToastProvider.razor.cs
Comment thread src/Core/Components/Toast/FluentToastProvider.razor.cs
Comment thread src/Core/Components/Toast/Services/LibraryToastOptions.cs
Comment thread src/Core/Events/ToastEventArgs.cs
Comment thread src/Core/Components/Toast/Services/NotificationService.cs
Comment thread src/Core/Components/Toast/Services/INotificationService.cs
@github-actions

github-actions Bot commented Jun 22, 2026

Copy link
Copy Markdown

Summary - Unit Tests Code Coverage

Summary
Generated on: 06/23/2026 - 16:13:00
Coverage date: 06/23/2026 - 16:12:35
Parser: Cobertura
Assemblies: 1
Classes: 261
Files: 363
Line coverage: 98.5% (11718 of 11896)
Covered lines: 11718
Uncovered lines: 178
Coverable lines: 11896
Total lines: 41770
Branch coverage: 92.7% (5875 of 6337)
Covered branches: 5875
Total branches: 6337
Method coverage: Feature is only available for sponsors
Tag: 6645_28039601033

Coverage

Microsoft.FluentUI.AspNetCore.Components - 98.5%
Name Line Branch
Microsoft.FluentUI.AspNetCore.Components 98.5% 92.7%
Microsoft.FluentUI.AspNetCore.Components.AccordionItemEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.AdditionalAttributesExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.AutocompleteHeaderFooterContent`1 100% 50%
Microsoft.FluentUI.AspNetCore.Components.CachedServices 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Calendar.CalendarExtended 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Calendar.CalendarTitles`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Calendar.CalendarTValue 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColorPicker.ColorHelper 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColorPicker.DefaultColors 100%
Microsoft.FluentUI.AspNetCore.Components.ColorPicker.HsvColor 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColorPicker.WheelColor 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnBase`1 95.2% 91.6%
Microsoft.FluentUI.AspNetCore.Components.ColumnHeaderCapabilities 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnKeyGridSort`1 94.4% 75%
Microsoft.FluentUI.AspNetCore.Components.ColumnMenuSettings 100%
Microsoft.FluentUI.AspNetCore.Components.ColumnReorderOptions`1 55.5%
Microsoft.FluentUI.AspNetCore.Components.ColumnResizeOptions`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.CustomEmoji 100% 100%
Microsoft.FluentUI.AspNetCore.Components.CustomIcon 100%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.Defer 100%
Microsoft.FluentUI.AspNetCore.Components.DataGrid.Infrastructure.InternalGr
idContext`1
100% 100%
Microsoft.FluentUI.AspNetCore.Components.DataGridSortEventArgs`1 100%
Microsoft.FluentUI.AspNetCore.Components.DateTimeProvider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DateTimeProviderContext 100% 92.8%
Microsoft.FluentUI.AspNetCore.Components.DefaultStyles 100%
Microsoft.FluentUI.AspNetCore.Components.Dialog.MessageBox.FluentMessageBox 100% 75%
Microsoft.FluentUI.AspNetCore.Components.DialogEventArgs 100% 92.8%
Microsoft.FluentUI.AspNetCore.Components.DialogInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptions 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptionsFooter 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptionsFooterAction 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptionsHeader 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogOptionsHeaderAction 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogResult 100% 100%
Microsoft.FluentUI.AspNetCore.Components.DialogResult`1 100%
Microsoft.FluentUI.AspNetCore.Components.DialogService 98.1% 81.8%
Microsoft.FluentUI.AspNetCore.Components.DialogToggleEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.DropdownEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.Emoji 100% 100%
Microsoft.FluentUI.AspNetCore.Components.EmojiCompress 100% 100%
Microsoft.FluentUI.AspNetCore.Components.EmojiExtensions 100% 50%
Microsoft.FluentUI.AspNetCore.Components.EmojiInfo 100%
Microsoft.FluentUI.AspNetCore.Components.Extensions.DateTimeExtensions 98.4% 90.3%
Microsoft.FluentUI.AspNetCore.Components.Extensions.DisplayAttributeExtensi
ons
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Extensions.EnumExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Extensions.FieldSizeExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Extensions.FluentInputExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FileSizeConverter 100%
Microsoft.FluentUI.AspNetCore.Components.FluentAccordion 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentAccordionItem 100% 95.8%
Microsoft.FluentUI.AspNetCore.Components.FluentAnchorButton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentAppBar 97.4% 97.6%
Microsoft.FluentUI.AspNetCore.Components.FluentAppBarItem 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentAutocomplete`2 95.4% 91.6%
Microsoft.FluentUI.AspNetCore.Components.FluentAvatar 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentBadge 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentButton 98.4% 90.6%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendar`1 96.7% 84.8%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarBase`1 100% 94.4%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarDay`1 100% 95.8%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarMonth`1 100% 85.7%
Microsoft.FluentUI.AspNetCore.Components.FluentCalendarYear`1 100% 91.6%
Microsoft.FluentUI.AspNetCore.Components.FluentCard 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCheckbox 100% 97.3%
Microsoft.FluentUI.AspNetCore.Components.FluentColorPicker 97.4% 96%
Microsoft.FluentUI.AspNetCore.Components.FluentColorPickerInput 98.7% 95.6%
Microsoft.FluentUI.AspNetCore.Components.FluentCombobox`2 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentComponentBase 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCompoundButton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentCounterBadge 100% 95%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGrid`1 99.1% 95.9%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGridCell`1 100% 95.5%
Microsoft.FluentUI.AspNetCore.Components.FluentDataGridRow`1 98.5% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDatePicker`1 97.5% 85.8%
Microsoft.FluentUI.AspNetCore.Components.FluentDialog 98.8% 90.7%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogBody 97.7% 94.4%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDialogProvider 100% 75%
Microsoft.FluentUI.AspNetCore.Components.FluentDivider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDragContainer`1 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDragEventArgs`1 100%
Microsoft.FluentUI.AspNetCore.Components.FluentDropZone`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentEmoji`1 100% 95%
Microsoft.FluentUI.AspNetCore.Components.FluentErrorBoundary 95.3% 93.7%
Microsoft.FluentUI.AspNetCore.Components.FluentField 99.1% 97.6%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldCondition 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldConditionItem 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldConditionOptions 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentFieldParameterSelector 97.6% 94.4%
Microsoft.FluentUI.AspNetCore.Components.FluentGrid 100% 90%
Microsoft.FluentUI.AspNetCore.Components.FluentGridItem 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentHighlighter 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentIcon`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentImage 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputBase`1 87.5% 50%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFile 100% 93.3%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFileBuffer 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFileErrorEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputFileEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentInputImmediateBase`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentJSModule 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCode 100% 92.8%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCodeEventArgs 100% 75%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyCodeProvider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentKeyPressEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLabel 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLabelInfo 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLayout 100% 88.8%
Microsoft.FluentUI.AspNetCore.Components.FluentLayoutHamburger 100% 96.6%
Microsoft.FluentUI.AspNetCore.Components.FluentLayoutItem 100% 91%
Microsoft.FluentUI.AspNetCore.Components.FluentLink 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentListBase`2 94.2% 88.6%
Microsoft.FluentUI.AspNetCore.Components.FluentListbox`2 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLocalizerExtensions 100%
Microsoft.FluentUI.AspNetCore.Components.FluentLocalizerInternal 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMenu 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuButton 100% 71.4%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuItem 100% 90.4%
Microsoft.FluentUI.AspNetCore.Components.FluentMenuList 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMessageBar 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMessageBarProvider 100% 90%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitter 100% 93.4%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterPane 100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.FluentMultiSplitterResizeEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentNav 100% 95.4%
Microsoft.FluentUI.AspNetCore.Components.FluentNavBase 100%
Microsoft.FluentUI.AspNetCore.Components.FluentNavCategory 97.8% 93%
Microsoft.FluentUI.AspNetCore.Components.FluentNavItem 100% 91.2%
Microsoft.FluentUI.AspNetCore.Components.FluentNavSectionHeader 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentNumberInput`1 99.3% 91.4%
Microsoft.FluentUI.AspNetCore.Components.FluentNumberInputCultureInfo 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOption`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOptionString 100%
Microsoft.FluentUI.AspNetCore.Components.FluentOverflow 100% 95.8%
Microsoft.FluentUI.AspNetCore.Components.FluentOverflowItem 100% 80%
Microsoft.FluentUI.AspNetCore.Components.FluentOverlay 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentPaginator 100% 95.4%
Microsoft.FluentUI.AspNetCore.Components.FluentPopover 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentPresenceBadge 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentProgress 100%
Microsoft.FluentUI.AspNetCore.Components.FluentProgressBar 100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.FluentProgressRing 100%
Microsoft.FluentUI.AspNetCore.Components.FluentProviders 100%
Microsoft.FluentUI.AspNetCore.Components.FluentPullToRefresh 100% 96.7%
Microsoft.FluentUI.AspNetCore.Components.FluentRadio`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentRadioGroup`1 100% 88.8%
Microsoft.FluentUI.AspNetCore.Components.FluentRatingDisplay 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSelect`2 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentServiceBase`1 100%
Microsoft.FluentUI.AspNetCore.Components.FluentServiceProviderException`1 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSkeleton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSlider`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSortableList`1 95.8% 92.3%
Microsoft.FluentUI.AspNetCore.Components.FluentSortableListEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSpacer 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSpinner 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSplitButton 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentStack 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentStatus 100%
Microsoft.FluentUI.AspNetCore.Components.FluentSwitch 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTab 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTabs 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentText 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTextArea 98.6% 66.6%
Microsoft.FluentUI.AspNetCore.Components.FluentTextInput 100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.FluentTimePicker`1 98% 74.6%
Microsoft.FluentUI.AspNetCore.Components.FluentToast 100% 93.8%
Microsoft.FluentUI.AspNetCore.Components.FluentToastProvider 100% 96.6%
Microsoft.FluentUI.AspNetCore.Components.FluentToggleButton 100% 91.6%
Microsoft.FluentUI.AspNetCore.Components.FluentTooltip 100% 95%
Microsoft.FluentUI.AspNetCore.Components.FluentTooltipProvider 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentTreeItem 100% 95.3%
Microsoft.FluentUI.AspNetCore.Components.FluentTreeView 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentValidationMessage`1 98% 88.8%
Microsoft.FluentUI.AspNetCore.Components.FluentValidationSummary 100% 100%
Microsoft.FluentUI.AspNetCore.Components.FluentWizard 89.1% 77.9%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStep 73.2% 64.9%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStepArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStepChangeEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.FluentWizardStepValidator 0% 0%
Microsoft.FluentUI.AspNetCore.Components.FreeOptionOutput 100%
Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderRequest`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderResult 100%
Microsoft.FluentUI.AspNetCore.Components.GridItemsProviderResult`1 100%
Microsoft.FluentUI.AspNetCore.Components.GridSort`1 100% 100%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridItem`2 100% 100%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalGridUtilities 100% 100%
Microsoft.FluentUI.AspNetCore.Components.HierarchicalSelectColumn`1 98.8% 95.5%
Microsoft.FluentUI.AspNetCore.Components.HighlighterSplitter 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Icon 100% 95%
Microsoft.FluentUI.AspNetCore.Components.IconFromImage 100%
Microsoft.FluentUI.AspNetCore.Components.IconInfo 100%
Microsoft.FluentUI.AspNetCore.Components.IconsExtensions 100% 50%
Microsoft.FluentUI.AspNetCore.Components.IFluentComponentChangeAfterKeyPres
s
100% 100%
Microsoft.FluentUI.AspNetCore.Components.IFluentLocalizer 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Infrastructure.EventCallbackSubscr
ibable`1
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Infrastructure.EventCallbackSubscr
iber`1
100% 87.5%
Microsoft.FluentUI.AspNetCore.Components.InputFileInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.InputFileOptions 100%
Microsoft.FluentUI.AspNetCore.Components.InternalAppBarContext 100% 100%
Microsoft.FluentUI.AspNetCore.Components.InternalListContext`1 100%
Microsoft.FluentUI.AspNetCore.Components.KeyCodeService 100% 85.7%
Microsoft.FluentUI.AspNetCore.Components.KeyPress 100%
Microsoft.FluentUI.AspNetCore.Components.LabelInfo 100%
Microsoft.FluentUI.AspNetCore.Components.LayoutHamburgerEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.LibraryToastOptions 100%
Microsoft.FluentUI.AspNetCore.Components.LibraryTooltipOptions 100%
Microsoft.FluentUI.AspNetCore.Components.Localization.LanguageResource 100% 100%
Microsoft.FluentUI.AspNetCore.Components.MarkupSanitizedOptions 100%
Microsoft.FluentUI.AspNetCore.Components.MenuItemEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBarEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBarInstance 94.4% 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBarOptions 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBarResult 100%
Microsoft.FluentUI.AspNetCore.Components.MessageBoxOptions 100%
Microsoft.FluentUI.AspNetCore.Components.Migration.AppearanceExtensions 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Migration.FluentInputAppearanceExt
ensions
100% 100%
Microsoft.FluentUI.AspNetCore.Components.Migration.TooltipPositionExtension 100% 100%
Microsoft.FluentUI.AspNetCore.Components.NotificationService 95.9% 97.4%
Microsoft.FluentUI.AspNetCore.Components.OptionsSearchEventArgs`1 100%
Microsoft.FluentUI.AspNetCore.Components.OverlayOptions 100%
Microsoft.FluentUI.AspNetCore.Components.PaginationState 100% 81.2%
Microsoft.FluentUI.AspNetCore.Components.ProgressFileDetails 100%
Microsoft.FluentUI.AspNetCore.Components.PropertyColumn`2 100% 81.8%
Microsoft.FluentUI.AspNetCore.Components.RadioEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.RangeOfDates 96.5% 86.1%
Microsoft.FluentUI.AspNetCore.Components.SelectAllTemplateArgs 100%
Microsoft.FluentUI.AspNetCore.Components.SelectColumn`1 93.1% 88.9%
Microsoft.FluentUI.AspNetCore.Components.ServiceProviderExtensions 100%
Microsoft.FluentUI.AspNetCore.Components.SetValueEventArgs`2 100%
Microsoft.FluentUI.AspNetCore.Components.SortedProperty 100%
Microsoft.FluentUI.AspNetCore.Components.SpacingExtensions 100% 97.2%
Microsoft.FluentUI.AspNetCore.Components.TabChangeEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.TemplateColumn`1 100% 25%
Microsoft.FluentUI.AspNetCore.Components.Theme 100% 80%
Microsoft.FluentUI.AspNetCore.Components.ThemeExtensions 94.7% 87.5%
Microsoft.FluentUI.AspNetCore.Components.ThemeService 100% 88.8%
Microsoft.FluentUI.AspNetCore.Components.ThemeSettings 100%
Microsoft.FluentUI.AspNetCore.Components.ToastEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.ToastInstance 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ToastOptions 100%
Microsoft.FluentUI.AspNetCore.Components.ToastOptionsAction 100%
Microsoft.FluentUI.AspNetCore.Components.ToastResult 100%
Microsoft.FluentUI.AspNetCore.Components.TooltipEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.TotalItemCountChangedEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.TreeItemChangedEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.TreeViewItem 100% 100%
Microsoft.FluentUI.AspNetCore.Components.TreeViewItemExpandedEventArgs 100%
Microsoft.FluentUI.AspNetCore.Components.UploadedFileDetails 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.AddTag 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.CssBuilder 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.Debounce 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.Identifier 100% 100%
Microsoft.FluentUI.AspNetCore.Components.Utilities.IdentifierContext 100% 75%
Microsoft.FluentUI.AspNetCore.Components.Utilities.InlineStyleBuilder 100% 91.6%
Microsoft.FluentUI.AspNetCore.Components.Utilities.MarkupStringSanitized 100% 92.5%
Microsoft.FluentUI.AspNetCore.Components.Utilities.RangeOf`1 96.7% 97.2%
Microsoft.FluentUI.AspNetCore.Components.Utilities.StyleBuilder 100% 100%
Microsoft.FluentUI.AspNetCore.Components.ZIndex 100%

@dvoituron dvoituron marked this pull request as ready for review June 22, 2026 20:19
@dvoituron dvoituron requested a review from vnbaaij as a code owner June 22, 2026 20:19
@dvoituron dvoituron enabled auto-merge (squash) June 22, 2026 20:19
Comment thread src/Core.Scripts/src/Components/Dialog/FluentDialog.ts
Comment thread src/Core/Components/Toast/Services/LibraryToastOptions.cs Outdated
Comment thread src/Core/Components/Toast/Services/LibraryToastOptions.cs
Comment thread src/Core/Enums/ToastResultTiming.cs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants