Il IDialogService fournit des méthodes pour afficher des dialogues modaux à l’utilisateur, y compris des invites de confirmation, des messages d’erreur, des notifications d’information, des notifications de réussite, des avertissements et des dialogues contenant votre propre contenu.
Accédez au service de dialogue depuis n’importe quel composant. Dans React, appeler useDialogService() depuis l’intérieur de l’arbre enroulé par le fournisseur de dialogue du cadre ; dans Blazor, injecter le service via injection de propriétés. Notez que le service de dialogue PowerPortalsPro est distinct du service de dialogue sous-jacent FluentUI.
// useDialogService() renvoie l’API de dialogue du framework. Disponible sur n’importe quel
// fonction composante en dessous de <FluentDialogProvider> montée à l’application
// Racine. L’objet retourné expose des méthodes asynchrones de montre* pour les confirmations,
// Infos / succès / avertissements / barres de messages d’erreur, et affichage personnalisé des dialogues.
import { useDialogService } from '@powerportalspro/react-fluent';
function MyComponent() {
const dialogs = useDialogService();
// ...
}using IDialogService = PowerPortalsPro.Web.Blazor.Services.IDialogService;
[Inject]
private IDialogService _dialogService { get; set; } = null!;Utilisez-le ShowConfirmationAsync pour poser une question oui/non à l’utilisateur. La propriété retournée DialogResult.Cancelled est true lorsque l’utilisateur sélectionne l’option secondaire (négative).
const result = await dialogs.showConfirmationAsync(
'Êtes-vous sûr de vouloir supprimer cet enregistrement ?',
{
title: 'Confirmer Supprimer',
primaryText: 'Oui',
secondaryText: 'Non',
},
);
if (!result.cancelled) {
// Utilisateur confirmé — procéder à la suppression
}var result = await _dialogService.ShowConfirmationAsync(
"Êtes-vous sûr de vouloir supprimer cet enregistrement ?",
title: "Confirmer Supprimer",
primaryText: "Oui",
secondaryText: "Non");
if (!result.Cancelled)
{
// Utilisateur confirmé — procéder à la suppression
}Utilisez les méthodes suivantes pour afficher des dialogues de messages à un seul bouton avec différents styles visuels :
ShowInfoAsync — Message d’information avec une icône neutre.ShowSuccessAsync — Message de réussite avec une icône verte à cocher.ShowWarningAsync — Message d’avertissement avec une icône d’avertissement jaune.ShowErrorAsync — Message d’erreur avec une icône d’erreur rouge.await dialogs.showInfoAsync('L’opération est terminée.', 'Informations');
await dialogs.showSuccessAsync('Disque sauvegardé avec succès.', 'Succès');
await dialogs.showWarningAsync('Cette action ne peut être annulée.', 'Avertissement');
await dialogs.showErrorAsync('Une erreur s’est produite lors de la sauvegarde.', 'Erreur');await _dialogService.ShowInfoAsync("L’opération est terminée.", "Informations");
await _dialogService.ShowSuccessAsync("Disque sauvegardé avec succès.", "Succès");
await _dialogService.ShowWarningAsync("Cette action ne peut être annulée.", "Avertissement");
await _dialogService.ShowErrorAsync("Une erreur s’est produite lors de la sauvegarde.", "Erreur");ShowDialogAsync affiche votre propre contenu, comme un formulaire, un sélecteur ou un aperçu, et renvoie ce avec quoi se termine la conversation. Dans Blazor, passez un composant (ou un RenderFragment) ; dans React, passez une fonction qui affiche le contenu. Définissez PrimaryText et SecondaryText pour les boutons que le service dessine, ou laissez les deux de côté pour le contenu qui dessine le sien.
Le contenu reçoit le dialogue dans lequel il est affiché : an IDialogContext in Blazor, reçu comme paramètre en cascade, et a DialogHandle dans React, passé à la fonction de rendu et disponible n’importe où à l’intérieur via useDialogHandle(). Utilisez-le pour fermer avec une valeur, annuler, activer ou désactiver le bouton principal, ou définir ce que fait le bouton principal. Ce que cette action retourne, c’est ce que le dialogue renvoie. Return KeepOpen (KEEP_OPEN dans React) pour garder la boîte de dialogue ouverte, par exemple tant que l’entrée n’est pas encore valide.
// Le contenu est rendu là où les dialogues sont hébergés, pas là où il a été ouvert. Il peut utiliser les services de l’application, mais pas le contexte propre à la page, donc transmets ce dont il a besoin.
const result = await dialogs.showDialogAsync<string>(
(dialog) => <RenameForm initialName={name} dialog={dialog} />,
{
title: 'Renom',
primaryText: 'Sauvegarder',
secondaryText: 'Annuler',
},
);
if (!result.cancelled && result.data !== undefined) {
// Le dialogue a été sauvegardé : utilisez le nom qu’il a renvoyé
}
// RenameForm
function RenameForm({ initialName, dialog }: { initialName: string; dialog: DialogHandle<string> }) {
const [name, setName] = useState(initialName);
dialog.onPrimary(async () =>
name.trim() ? name.trim() : KEEP_OPEN); // Ce n’est pas encore valable : expliquez pourquoi et gardez le dialogue ouvert
return <Input value={name} onChange={(_, d) => setName(d.value)} />;
}// Le contenu est rendu là où les dialogues sont hébergés, pas là où il a été ouvert. Il peut utiliser les services de l’application, mais pas le contexte propre à la page, donc transmets ce dont il a besoin.
var result = await _dialogService.ShowDialogAsync<RenameDialog>(
options =>
{
options.Title = "Renom";
options.PrimaryText = "Sauvegarder";
options.SecondaryText = "Annuler";
},
new Dictionary<string, object?> { [nameof(RenameDialog.InitialName)] = name });
if (result.GetData<string>() is { } newName)
{
// Le dialogue a été sauvegardé : utilisez le nom qu’il a renvoyé
}
// RenameDialog.razor: <FluentTextInput @bind-Value="_name" />
[CascadingParameter] public IDialogContext Dialog { get; set; } = default!;
[Parameter] public string? InitialName { get; set; }
private string? _name;
protected override void OnInitialized()
{
_name = InitialName;
Dialog.OnPrimary = () => Task.FromResult<object?>(string.IsNullOrWhiteSpace(_name)
? IDialogContext.KeepOpen // Ce n’est pas encore valable : expliquez pourquoi et gardez le dialogue ouvert
: _name.Trim());
}Ouvre une boîte de dialogue avec un formulaire. Sauvegarde garde la boîte ouverte jusqu’à ce qu’un nom soit saisi, puis le renvoie à la page ; Annuler ne renvoie rien.
Toutes les méthodes de dialogue acceptent les options title et primaryText les paramètres. Si elles sont omises, des valeurs par défaut localisées sont utilisées. La boîte de dialogue de confirmation accepte également un secondaryText paramètre pour l’étiquette du bouton annuler.
Toutes les méthodes retournent un DialogResult objet. Pour les dialogues de confirmation, vérifiez la Cancelled propriété afin de déterminer le choix de l’utilisateur. Pour les dialogues de messages, le résultat indique que le dialogue a été rejeté.
Utilisez les contrôles ci-dessous pour personnaliser le titre de dialogue et le message, puis cliquez sur n’importe quel bouton pour voir le type de dialogue correspondant.
Nom | Type | Par défaut | Description |
|---|---|---|---|
OpenDialogCount | int | Combien de dialogues ce service a-t-il actuellement ouverts ? |
OpenDialogCountNom | Paramètres | Type | Description |
|---|---|---|---|
ShowConfirmationAsync | string message string title string primaryText string secondaryText | Task<DialogResult> | Affiche une boîte de confirmation avec les boutons fournis message et deux boutons d’action, puis attend l’utilisateur doit en choisir un. Le retour Services.DialogResult est DialogResult.Cancelled fixé à |
ShowDialogAsync<TComponent> | Action<CustomDialogOptions> configure IDictionary<string, Object> parameters | Task<DialogResult> | Ça apparaît |
ShowErrorAsync | string message string title string primaryText | Task<DialogResult> | Affiche une boîte d’erreur avec le fichier fourni message et attend que l’utilisateur la désactive. |
ShowInfoAsync | string message string title string primaryText | Task<DialogResult> | Affiche une conversation informative avec le contenu fourni message et attend que l’utilisateur la renverse. |
ShowSuccessAsync | string message string title string primaryText | Task<DialogResult> | Affiche un dialogue de réussite avec le fourni message et attend que l’utilisateur le rejette. |
ShowWarningAsync | string message string title string primaryText | Task<DialogResult> | Affiche une boîte d’avertissement avec le contenu fourni message et attend que l’utilisateur la renverse. |
ShowConfirmationAsyncmessage et deux boutons d’action, puis attend l’utilisateur doit en choisir un. Le retour Services.DialogResult est DialogResult.Cancelled fixé à ShowDialogAsync<TComponent>ShowErrorAsyncmessage et attend que l’utilisateur la désactive.ShowInfoAsyncmessage et attend que l’utilisateur la renverse.ShowSuccessAsyncmessage et attend que l’utilisateur le rejette.ShowWarningAsyncmessage et attend que l’utilisateur la renverse.Nom | Type | Par défaut | Description |
|---|---|---|---|
Cancelled | bool | False | Obtient une valeur indiquant si le dialogue a été annulé (par exemple, l’utilisateur l’a rejeté sans confirmer). |
Data | Object? | Une charge utile de données optionnelle est renvoyée par la boîte de dialogue lorsqu’elle était fermée. |
CancelledDataNom | Paramètres | Type | Description |
|---|---|---|---|
Cancel | Object data | DialogResult | Crée un Services.DialogResult représentant un résultat annulé, transportant éventuellement une charge utile de données. |
GetData<T> | T? | La valeur avec laquelle le dialogue se terminait, comme | |
Ok<T> | T result | DialogResult | Crée un Services.DialogResult représentant un résultat confirmé, portant result comme charge utile de données. |
TryGetData<T> | out T value | bool | Lit la valeur avec laquelle le dialogue s’est fermé, comme |
CancelServices.DialogResult représentant un résultat annulé, transportant éventuellement une charge utile de données.GetData<T>Ok<T>Services.DialogResult représentant un résultat confirmé, portant result comme charge utile de données.TryGetData<T>Nom | Type | Par défaut | Description |
|---|---|---|---|
PreventDismissOnEscape | bool | False | Si Échapement est empêché de fermer le dialogue ? Par défaut false. |
PrimaryText | string? | L’étiquette du bouton principal. Le service dessine le bouton lorsque ce bouton est réglé ; laissez les deux et CustomDialogOptions.SecondaryText déconfiguré pour le contenu qui dessine ses propres boutons. Quel est le bouton fait est jusqu’à IDialogContext.OnPrimary. | |
SecondaryText | string? | L’appellation du bouton secondaire. Le service dessine le bouton lorsque ce bouton est activé, puis il annule Le dialogue. | |
ShowDismiss | bool | True | Si l’en-tête affiche un bouton de fermeture. Par défaut true. |
Title | string? | Le titre du dialogue, indiqué dans son en-tête. Omets-le pour un dialogue sans en-tête. | |
Width | string? | La largeur du dialogue en tant que longueur CSS, par exemple |
PreventDismissOnEscapefalse.PrimaryTextCustomDialogOptions.SecondaryText déconfiguré pour le contenu qui dessine ses propres boutons. Quel est le bouton fait est jusqu’à IDialogContext.OnPrimary.SecondaryTextShowDismisstrue.TitleWidthNom | Type | Par défaut | Description |
|---|---|---|---|
OnPrimary | Func<Task<Object>>? | S’exécute lorsque le bouton principal tiré par le service est pressé. Son résultat est ce que le dialogue revient, dans DialogResult.Data; retourner IDialogContext.KeepOpen pour garder le dialogue ouvert à la place. Désactivé, le bouton ferme la boîte de dialogue sans données. Pendant qu’il s’exécute, les boutons sont désactivé et Évasion ne désactive pas le dialogue (sur Blazor Server, à partir d’un instant après le clique : le bloc atteint le navigateur un aller-retour plus tard). S’il lance, l’erreur est enregistrée, la boîte de dialogue reste ouverte, et un message d’erreur général s’affiche au-dessus ; pour Les défaillances qu’un utilisateur peut corriger, dire soi-même ce qui a mal tourné et retourner IDialogContext.KeepOpen. | |
PrimaryEnabled | bool | Si le bouton principal tiré par le service peut être pressé, par exemple seulement une fois qu’un choix requis est Fait. Par défaut true. |
OnPrimaryDialogResult.Data; retourner IDialogContext.KeepOpen pour garder le dialogue ouvert à la place. Désactivé, le bouton ferme la boîte de dialogue sans données. Pendant qu’il s’exécute, les boutons sont désactivé et Évasion ne désactive pas le dialogue (sur Blazor Server, à partir d’un instant après le clique : le bloc atteint le navigateur un aller-retour plus tard). S’il lance, l’erreur est enregistrée, la boîte de dialogue reste ouverte, et un message d’erreur général s’affiche au-dessus ; pour Les défaillances qu’un utilisateur peut corriger, dire soi-même ce qui a mal tourné et retourner IDialogContext.KeepOpen.PrimaryEnabledtrue.Nom | Paramètres | Type | Description |
|---|---|---|---|
CancelAsync | Task | Ferme le dialogue comme annulé, ce qui renvoie Cancel(System.Object). | |
CloseAsync | Object data | Task | Ferme le dialogue, qui revient DialogResult.Ok`<T>(`<U>) avec data. |
CancelAsyncCancel(System.Object).CloseAsyncDialogResult.Ok`<T>(`<U>) avec data.