English
Français

Blog of Denis VOITURON

for a better .NET world

FluentUI.Blazor v5.rc2

Posted on 2026-04-08

Annonce de Fluent UI Blazor v5 RC2 — Toast, Autocomplete, Thèmes et plus encore

Nous sommes ravis d’annoncer la deuxième Release Candidate de la bibliothèque Fluent UI Blazor v5 ! Depuis la RC1, l’équipe a travaillé intensément sur la branche dev-v5, livrant deux nouveaux composants — FluentAutocomplete et FluentToast — ainsi qu’une puissante API de Thèmes avec un Theme Designer intégré, des améliorations majeures du DataGrid incluant les colonnes épinglées, et des dizaines d’améliorations sur l’ensemble de la bibliothèque.

Visitez notre site de démonstration.

Nouveau composant : FluentAutocomplete

Le composant FluentAutocomplete apporte une expérience d’autocomplétion complète à la v5, remplaçant l’implémentation de la v4 par un composant moderne entièrement réécrit.

Fonctionnalités clés

Utilisation de base

<FluentAutocomplete OnOptionsSearch="@OnSearchAsync"
                    OptionText="@(item => item.Name)"
                    OptionDisabled="@(e => e.Code == "au")"
                    @bind-SelectedItems="@SelectedCountries" />

@code
{
    IEnumerable<Country> SelectedCountries { get; set; } = [];

    Task OnSearchAsync(OptionsSearchEventArgs<Country> e)
    {
        e.Items = Countries.Where(i => i.Name.StartsWith(e.Text, StringComparison.OrdinalIgnoreCase))
                           .OrderBy(i => i.Name);

        return Task.CompletedTask;
    }
}

Ce composant est une réécriture complète — veuillez consulter la documentation de migration pour les changements par rapport au FluentAutocomplete de la v4.


Nouveau composant : FluentToast & Service Toast

Le nouveau service Toast offre une expérience de notification complète, incluant la prise en charge des toasts avec progression en temps réel.

Types de toast

La bibliothèque prend en charge quatre scénarios de toast via ToastType :

Type Description
Communication Notifications et messages généraux
Confirmation Confirmations de succès / échec
IndeterminateProgress Opérations longues sans suivi de progression
DeterminateProgress Opérations avec progression mesurable (ex. téléversement)

Utilisation simple

@inject IToastService ToastService

// Déclencher et oublier
await ToastService.ShowToastAsync(options =>
{
    options.Title = "Fichier sauvegardé",
    options.Intent = ToastIntent.Success,
    Timeout = 3000,
});

Avancé : instance de toast en temps réel

Pour des scénarios comme les téléversements ou les opérations longues, utilisez ShowToastInstanceAsync pour obtenir une référence en temps réel :

var toast = await ToastService.ShowToastInstanceAsync(options =>
{
    options.Title = "Téléversement du document...";
    options.Type = ToastType.DeterminateProgress;
});

// Mettre à jour la progression pendant l'affichage
await toast.UpdateAsync(t => t.Progress = 50);

// Terminer et fermer
await toast.UpdateAsync(t => t.Progress = 100);
await toast.CloseAsync();

Points clés du comportement


API de Thèmes & Theme Designer

La version RC2 introduit une API de Thèmes complète qui vous donne un contrôle total sur l’identité visuelle de votre application — d’une simple couleur de marque à un ensemble complet de design tokens personnalisés, avec persistance intégrée et un Theme Designer interactif.

Définir la couleur de marque de manière déclarative

Ajoutez les attributs data-theme et data-theme-color à votre balise <body> :

<body data-theme="light" data-theme-color="#0078D4">

La bibliothèque détecte automatiquement ces attributs, génère une rampe de couleurs et l’applique à l’application.

Définir la couleur de marque par code

Une API complète est disponible via IThemeService :

@inject IThemeService ThemeService

// Définir une couleur de marque personnalisée
await ThemeService.SetThemeAsync("#6B2AEE");

// Passer en mode sombre
await ThemeService.SetDarkThemeAsync();

// Basculer entre clair ↔ sombre
await ThemeService.SwitchThemeAsync();

// Appliquer le thème Teams
await ThemeService.SetTeamsLightThemeAsync();

// Contrôle complet avec les paramètres
await ThemeService.SetThemeAsync(new ThemeSettings
{
    Color = "#6B2AEE",
    Mode = ThemeMode.Dark,
    HueTorsion = 0.1f,
    Vibrancy = 0.2f,
});

Theme Designer

Le site de démonstration inclut une page Theme Designer où vous pouvez choisir interactivement une couleur de marque, ajuster la torsion de teinte et la vibrance, prévisualiser la rampe de couleurs générée, et voir votre thème appliqué à de vrais composants en temps réel. Lorsque le résultat vous convient, appliquez-le ou exportez les paramètres.

Fonctionnalités clés

Fonctionnalité Description
Rampe de couleurs Génération automatique d’une rampe complète à partir d’une seule couleur hexadécimale
Clair / Sombre / Système Prise en charge des trois modes, avec détection automatique de la préférence système
Thèmes Teams Thèmes Teams Light et Teams Dark intégrés
localStorage Les paramètres de thème sont mis en cache et restaurés automatiquement entre les sessions
Thème par élément Appliquez un thème personnalisé à un ElementReference spécifique sans changer le thème global
Support RTL SwitchDirectionAsync() pour basculer entre LTR et RTL

Améliorations du DataGrid

Le FluentDataGrid a reçu plusieurs améliorations importantes dans la RC2.

Colonnes épinglées (figées)

Les colonnes peuvent désormais être épinglées au bord gauche ou droit de la grille, afin qu’elles restent visibles lors du défilement horizontal :

<FluentDataGrid Items="@people" Style="overflow-x: auto; max-width: 800px;">
    <PropertyColumn Property="@(p => p.Id)" Width="80px" Pin="DataGridColumnPin.Left" />
    <PropertyColumn Property="@(p => p.Name)" Width="200px" Pin="DataGridColumnPin.Left" />
    <PropertyColumn Property="@(p => p.Email)" Width="300px" />
    <PropertyColumn Property="@(p => p.City)" Width="200px" />
    <PropertyColumn Property="@(p => p.Country)" Width="200px" />
    <PropertyColumn Property="@(p => p.Actions)" Width="100px" Pin="DataGridColumnPin.Right" />
</FluentDataGrid>

Les colonnes épinglées nécessitent une largeur explicite en pixels et doivent être contiguës (toutes les colonnes épinglées à gauche doivent être en premier, toutes celles épinglées à droite en dernier). La grille valide ces règles et lève une exception descriptive en cas de configuration invalide.

HierarchicalSelectColumn

Un nouveau type de colonne qui fournit un comportement de sélection parent-enfant, permettant aux utilisateurs de sélectionner des groupes de lignes liées via une case à cocher hiérarchique.

Autres améliorations du DataGrid

Fonctionnalité / Correction PR
Paramètre StripedRows pour l’alternance des styles de lignes #4594
Paramètre DisableCellFocus #4653
Callback d’événement OnSortChanged #4572
Ignorer le délai de debounce au premier appel du provider avec virtualisation #4679
Correction des SelectedItems désélectionnés lors de la pagination/virtualisation #4624
Correction des problèmes de largeur #4588

Calendrier & DatePicker

<FluentCalendar @bind-Value="@selectedDate"
                MinDate="@DateTime.Today"
                MaxDate="@DateTime.Today.AddMonths(3)" />

Améliorations des composants

Composant / Zone Changement PR
FluentLink Prise en charge des liens cliquables avec événements OnClick et styles de survol améliorés #4649
Badge Ajout des classes CSS .fluent-badge pour la personnalisation #4597
AppBar Possibilité de masquer la barre active, rendu de la barre active en mode horizontal #4581
AppBar Calcul dynamique de la hauteur de la barre active #4580
Nav Amélioration du support de l’accessibilité (a11y) #4553
Nav Refactoring et corrections de bugs #4550
DragContainer/DropZone Passage de Action à EventCallback pour les gestionnaires d’événements #4590
Checkbox Correction de la logique “checked” pour respecter le paramètre ThreeState #4634
Accordion Correction de l’événement change pour ne se déclencher que pour les éléments fluent-accordion #4600
List Refactoring de OptionSelectedComparer pour utiliser IEqualityComparer #4666
Placeholder Correction d’une erreur de rendu du placeholder #4618
Événements personnalisés Renommage des événements personnalisés pour éviter une exception .NET 11 #4607

Localisation

En s’appuyant sur le système de localisation introduit dans la RC1 :


Serveur MCP & Outillage


Essayez-le maintenant

Ressource Lien
NuGet Microsoft.FluentUI.AspNetCore.Components --prerelease
Documentation https://fluentui-blazor-v5.azurewebsites.net
GitHub https://github.com/microsoft/fluentui-blazor
Guide de migration Migration vers la v5

Il s’agit encore d’une Release Candidate — la surface d’API est stabilisée, mais nous continuons à compter sur la communauté pour nous aider à identifier les problèmes restants avant la version finale. N’hésitez pas à signaler des issues sur GitHub et à contribuer.

Nous travaillons encore sur les éléments restants pour la version finale : dev-v5 - Liste TODO

Merci à tous ceux qui ont contribué, testé et fourni des retours. Un grand bravo aux contributeurs de la communauté qui ont apporté des contributions significatives à cette version !


Happy Blazoring !

Langues

EnglishEnglish
FrenchFrançais

Suivez-moi

Articles récents