この IDialogService は、確認プロンプト、エラーメッセージ、情報通知、成功通知や警告、そして自分自身の内容を含むダイアログなど、モーダルダイアログを表示する方法を提供しています。
任意のコンポーネントからダイアログサービスにアクセスできます。Reactでは、フレームワークダイアログプロバイダーによってラップされた木の内部から useDialogService() を呼び出します。Blazorではプロパティ注入によってサービスに注入します。PowerPortalsProのダイアログサービスは、基盤となるFluentUIダイアログサービスとは異なることに注意してください。
// useDialogService() はフレームワークのダイアログAPIを返します。どの場所からでも入手可能です
// <FluentDialogProvider> アプリにマウントされた関数コンポーネントの下にあります
// 根。返されたオブジェクトは確認のための非同期show*メソッドを公開します。
// 情報/成功/警告/エラーメッセージバー、そしてカスタムダイアログのレンダリング。
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!;ShowConfirmationAsyncを使ってユーザーにはい/いいえの質問を促します。ユーザーが二次(ネガティブ)オプションを選択すると、返DialogResult.Cancelledプロパティがtrueされます。
const result = await dialogs.showConfirmationAsync(
'本当にこの記録を削除したいのですか?',
{
title: '確認 削除',
primaryText: 'はい',
secondaryText: 'いいえ',
},
);
if (!result.cancelled) {
// ユーザー確認 — 削除を進めてください
}var result = await _dialogService.ShowConfirmationAsync(
"本当にこの記録を削除したいのですか?",
title: "確認 削除",
primaryText: "はい",
secondaryText: "いいえ");
if (!result.Cancelled)
{
// ユーザー確認 — 削除を進めてください
}以下の方法で、異なるビジュアルスタイルでシングルボタンのメッセージダイアログを表示します:
ShowInfoAsync — 中立アイコン付きの情報メッセージ。ShowSuccessAsync — 緑色のチェックマークアイコン付きの成功メッセージ。ShowWarningAsync — 黄色の警告アイコン付きの警告メッセージ。ShowErrorAsync — 赤いエラーアイコン付きのエラーメッセージ。await dialogs.showInfoAsync('作戦は完了した。', '情報');
await dialogs.showSuccessAsync('記録が正常に保存されました。', '成功');
await dialogs.showWarningAsync('この行動は取り消せない。', '警告');
await dialogs.showErrorAsync('セーブ中にエラーが発生しました。', 'エラー');await _dialogService.ShowInfoAsync("作戦は完了した。", "情報");
await _dialogService.ShowSuccessAsync("記録が正常に保存されました。", "成功");
await _dialogService.ShowWarningAsync("この行動は取り消せない。", "警告");
await _dialogService.ShowErrorAsync("セーブ中にエラーが発生しました。", "エラー");ShowDialogAsync フォーム、ピッカー、プレビューなど自分のコンテンツを表示し、ダイアログの最後に返す内容を返します。Blazorではコンポーネント(または RenderFragment)を渡し、Reactではそのコンテンツをレンダリングする関数を渡します。サービスが描画するボタンに対して PrimaryText と SecondaryText を設定し、または自ら描画するコンテンツのために両方を省きます。
コンテンツは表示されるダイアログが与えられます。BlazorのIDialogContextはカスケードパラメータとして受け取り、ReactではDialogHandleがレンダリング関数に渡され、useDialogHandle()を通じてどこでも利用可能です。それを使って値で閉じたり、主ボタンをキャンセルしたり、有効または無効にしたり、主ボタンの動作を設定することができます。そのアクションが返すものがダイアログの返す内容です。ReactでKEEP_OPENKeepOpenを返して、例えば入力がまだ有効でない間にダイアログを開いたままにします。
// コンテンツはダイアログがホストされている場所でレンダリングされ、どこから開いたかではありません。アプリのサービスは使えますが、ページ自体のコンテキストは利用できないので、必要なものを渡してください。
const result = await dialogs.showDialogAsync<string>(
(dialog) => <RenameForm initialName={name} dialog={dialog} />,
{
title: '名称変更',
primaryText: 'セーブ',
secondaryText: 'キャンセル',
},
);
if (!result.cancelled && result.data !== undefined) {
// ダイアログは保存されていました:返された名前を使え
}
// RenameForm
function RenameForm({ initialName, dialog }: { initialName: string; dialog: DialogHandle<string> }) {
const [name, setName] = useState(initialName);
dialog.onPrimary(async () =>
name.trim() ? name.trim() : KEEP_OPEN); // まだ有効ではない:理由を伝え、対話を開いたままにしてください
return <Input value={name} onChange={(_, d) => setName(d.value)} />;
}// コンテンツはダイアログがホストされている場所でレンダリングされ、どこから開いたかではありません。アプリのサービスは使えますが、ページ自体のコンテキストは利用できないので、必要なものを渡してください。
var result = await _dialogService.ShowDialogAsync<RenameDialog>(
options =>
{
options.Title = "名称変更";
options.PrimaryText = "セーブ";
options.SecondaryText = "キャンセル";
},
new Dictionary<string, object?> { [nameof(RenameDialog.InitialName)] = name });
if (result.GetData<string>() is { } newName)
{
// ダイアログは保存されていました:返された名前を使え
}
// 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 // まだ有効ではない:理由を伝え、対話を開いたままにしてください
: _name.Trim());
}フォームでダイアログを開きます。 セーブ は名前が入力されるまでダイアログを開いたままにし、その後ページに戻します。 キャンセルは 何も返しません。
すべてのダイアログメソッドはオプションの title および primaryText パラメータを受け付けています。省略する場合は、ローカライズされたデフォルト値が使われます。確認ダイアログではキャンセルボタンラベルの secondaryText パラメータも受け入れられます。
すべてのメソッドは DialogResult オブジェクトを返します。確認ダイアログについては、 Cancelled プロパティを確認してユーザーの選択を決定してください。メッセージのダイアログでは、結果がダイアログが終了したことを示します。
以下の操作でダイアログのタイトルとメッセージをカスタマイズし、任意のボタンをクリックすると対応するダイアログタイプが表示されます。
名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
OpenDialogCount | int | このサービスが現在開いているダイアログはいくつありますか。 |
OpenDialogCount名称 | パラメータ | 種類 | 概要 |
|---|---|---|---|
ShowConfirmationAsync | string message string title string primaryText string secondaryText | Task<DialogResult> | 提供された message と2つのアクションボタンで確認ダイアログが表示され、その後 ユーザーが一つ選ぶことができます。返 Services.DialogResult は DialogResult.Cancelled ユーザーが二次(マイナス)オプションを選択すると |
ShowDialogAsync<TComponent> | Action<CustomDialogOptions> configure IDictionary<string, Object> parameters | Task<DialogResult> | ダイアログで |
ShowErrorAsync | string message string title string primaryText | Task<DialogResult> | 提供された message とのエラーダイアログが表示され、ユーザーがそれを終了するのを待ちます。 |
ShowInfoAsync | string message string title string primaryText | Task<DialogResult> | 提供された message に関する情報ダイアログが表示され、ユーザーが終了するのを待ちます。 |
ShowSuccessAsync | string message string title string primaryText | Task<DialogResult> | 提供された message との成功ダイアログが表示され、ユーザーが終了するのを待ちます。 |
ShowWarningAsync | string message string title string primaryText | Task<DialogResult> | 提供された message で警告ダイアログが表示され、ユーザーがそれを終了するのを待ちます。 |
ShowConfirmationAsyncmessage と2つのアクションボタンで確認ダイアログが表示され、その後 ユーザーが一つ選ぶことができます。返 Services.DialogResult は DialogResult.Cancelled ユーザーが二次(マイナス)オプションを選択すると ShowDialogAsync<TComponent>ShowErrorAsyncmessage とのエラーダイアログが表示され、ユーザーがそれを終了するのを待ちます。ShowInfoAsyncmessage に関する情報ダイアログが表示され、ユーザーが終了するのを待ちます。ShowSuccessAsyncmessage との成功ダイアログが表示され、ユーザーが終了するのを待ちます。ShowWarningAsyncmessage で警告ダイアログが表示され、ユーザーがそれを終了するのを待ちます。名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
Cancelled | bool | False | ダイアログがキャンセルされたかどうか(例:ユーザーが確認せずに終了した)を示す値が付与されます。 |
Data | Object? | ダイアログが閉じたときに返されるオプションのデータペイロード。 |
CancelledData名称 | パラメータ | 種類 | 概要 |
|---|---|---|---|
Cancel | Object data | DialogResult | キャンセルされた結果を表す Services.DialogResult を作成し、オプションでデータペイロードを搭載します。 |
GetData<T> | T? | ダイアログが終了したときの値( | |
Ok<T> | T result | DialogResult | resultをデータペイロードとして運ぶ、確認された結果を表すServices.DialogResultを作成します。 |
TryGetData<T> | out T value | bool | ダイアログの終了時に使った値を読み取 |
CancelServices.DialogResult を作成し、オプションでデータペイロードを搭載します。GetData<T>Ok<T>resultをデータペイロードとして運ぶ、確認された結果を表すServices.DialogResultを作成します。TryGetData<T>名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
PreventDismissOnEscape | bool | False | Escapeがダイアログを閉じられないようにするかどうか。デフォルトの false。 |
PrimaryText | string? | 主ボタンのラベル。サービスはこれが設定されるとボタンを引きます。両方とも残しておきます そして CustomDialogOptions.SecondaryText 独自のボタンを引くコンテンツのために設定されていません。何だってボタンだ DOSは1 IDialogContext.OnPrimaryまでです。 | |
SecondaryText | string? | セカンダリーボタンのラベルです。これが設定されるとサービスがボタンを引き出し、キャンセルします その対話。 | |
ShowDismiss | bool | True | ヘッダーに閉じボタンが表示されているかどうか。デフォルトの true。 |
Title | string? | ダイアログのタイトルはヘッダーに表示されています。タイトルのないダイアログの場合は省略してください。 | |
Width | string? | ダイアログの幅はCSSの長さとして使われます。例:「 |
PreventDismissOnEscapefalse。PrimaryTextCustomDialogOptions.SecondaryText 独自のボタンを引くコンテンツのために設定されていません。何だってボタンだ DOSは1 IDialogContext.OnPrimaryまでです。SecondaryTextShowDismisstrue。TitleWidth名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
OnPrimary | Func<Task<Object>>? | サービスで引き出されたプライマリボタンが押されると実行されます。その結果はダイアログが返す結果です。 DialogResult.Data;ダイアログを開いたままにするために IDialogContext.KeepOpen 戻る 代わりに。未設定の場合、ボタンはデータなしでダイアログを閉じます。実行中、ボタンは 無効化され、Escapeはダイアログを終了しません(Blazor Server上では、 クリック:ブロックは往復後にブラウザに到達します)。もし 投げられたら、 エラーは記録され、ダイアログは開いたまま、一般的なエラーメッセージが表示されます。に対して ユーザーが修正できる故障は、自分で何が問題だったか言い、返品すればいい IDialogContext.KeepOpen。 | |
PrimaryEnabled | bool | サービスで引き出されたプライマリボタンを押せるかどうか、例えば必要な選択を一度だけ押せるかどうかは 作った。デフォルトの true。 |
OnPrimaryDialogResult.Data;ダイアログを開いたままにするために IDialogContext.KeepOpen 戻る 代わりに。未設定の場合、ボタンはデータなしでダイアログを閉じます。実行中、ボタンは 無効化され、Escapeはダイアログを終了しません(Blazor Server上では、 クリック:ブロックは往復後にブラウザに到達します)。もし 投げられたら、 エラーは記録され、ダイアログは開いたまま、一般的なエラーメッセージが表示されます。に対して ユーザーが修正できる故障は、自分で何が問題だったか言い、返品すればいい IDialogContext.KeepOpen。PrimaryEnabledtrue。名称 | パラメータ | 種類 | 概要 |
|---|---|---|---|
CancelAsync | Task | ダイアログをキャンセルとして閉じ、 Cancel(System.Object)を返します。 | |
CloseAsync | Object data | Task | ダイアログを閉じ、会話は dataでDialogResult.Ok`<T>(`<U>)戻ります。 |
CancelAsyncCancel(System.Object)を返します。CloseAsyncdataでDialogResult.Ok`<T>(`<U>)戻ります。