From de3401664253284ae7f532fbef56e6c4ff5770a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 8 Oct 2020 10:45:56 +0300 Subject: [PATCH 1/2] Temporary refactor the ui message service --- .../BlazoriseUiMessageService.cs | 22 ++++- .../Components/UiMessageAlert.razor.cs | 82 +++++++++---------- 2 files changed, 60 insertions(+), 44 deletions(-) diff --git a/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs b/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs index 70643069be..c9f4b39a04 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs @@ -1,4 +1,7 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; +using Localization.Resources.AbpUi; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Volo.Abp.AspNetCore.Components.WebAssembly; @@ -10,21 +13,34 @@ namespace Volo.Abp.BlazoriseUI public class BlazoriseUiMessageService : IUiMessageService, IScopedDependency { private readonly UiMessageNotifierService uiMessageNotifierService; + private readonly IStringLocalizer _localizer; public ILogger Logger { get; set; } - public BlazoriseUiMessageService(UiMessageNotifierService uiMessageNotifierService) + public BlazoriseUiMessageService( + UiMessageNotifierService uiMessageNotifierService, + IStringLocalizer localizer) { this.uiMessageNotifierService = uiMessageNotifierService; + _localizer = localizer; Logger = NullLogger.Instance; } - public Task InfoAsync(string message, string title = null, UiMessageOptions options = null) + public Task InfoAsync(string message, string title = null, Action optionsActions = null) { + var options = CreateDefaultOptions(); + optionsActions?.Invoke(options); return uiMessageNotifierService.NotifyMessageReceivedAsync(UiMessageType.Info, message, title, options); } + protected virtual UiMessageOptions CreateDefaultOptions() + { + return new UiMessageOptions { + ConfirmButtonText = _localizer["Yes"] + }; + } + public Task SuccessAsync(string message, string title = null, UiMessageOptions options = null) { return uiMessageNotifierService.NotifyMessageReceivedAsync(UiMessageType.Success, message, title, options); diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs b/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs index 7dada11bd3..afedc0a866 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs @@ -9,11 +9,50 @@ namespace Volo.Abp.BlazoriseUI.Components { public partial class UiMessageAlert : ComponentBase, IDisposable { - protected override void OnInitialized() + protected virtual string MessageIconStyle { - UiMessageNotifierService.MessageReceived += OnMessageReceived; + get + { + var sb = new StringBuilder(); + + sb.Append($"color:{MessageIconColor}"); + + return sb.ToString(); + } + } + + protected virtual string OkButtonText + => Options?.OkButtonText ?? "OK"; + + protected virtual string ConfirmButtonText + => Options?.ConfirmButtonText ?? "Confirm"; + + protected virtual string CancelButtonText + => Options?.CancelButtonText ?? "Cancel"; + [Parameter] public UiMessageType MessageType { get; set; } + + [Parameter] public string Title { get; set; } + + [Parameter] public string Message { get; set; } + + [Parameter] public TaskCompletionSource Callback { get; set; } + + [Parameter] public UiMessageOptions Options { get; set; } + + [Parameter] public EventCallback Okayed { get; set; } // TODO: ? + + [Parameter] public EventCallback Confirmed { get; set; } + + [Parameter] public EventCallback Canceled { get; set; } + + [Inject] protected UiMessageNotifierService UiMessageNotifierService { get; set; } + + protected override void OnInitialized() + { base.OnInitialized(); + + UiMessageNotifierService.MessageReceived += OnMessageReceived; } private void OnMessageReceived(object sender, UiMessageEventArgs e) @@ -94,44 +133,5 @@ namespace Volo.Abp.BlazoriseUI.Components UiMessageType.Confirmation => "var(--b-theme-secondary, var(--secondary, #6c757d))", _ => null, }; - - protected virtual string MessageIconStyle - { - get - { - var sb = new StringBuilder(); - - sb.Append($"color:{MessageIconColor}"); - - return sb.ToString(); - } - } - - protected virtual string OkButtonText - => Options?.OkButtonText ?? "OK"; - - protected virtual string ConfirmButtonText - => Options?.ConfirmButtonText ?? "Confirm"; - - protected virtual string CancelButtonText - => Options?.CancelButtonText ?? "Cancel"; - - [Parameter] public UiMessageType MessageType { get; set; } - - [Parameter] public string Title { get; set; } - - [Parameter] public string Message { get; set; } - - [Parameter] public TaskCompletionSource Callback { get; set; } - - [Parameter] public UiMessageOptions Options { get; set; } - - [Parameter] public EventCallback Okayed { get; set; } // TODO: ? - - [Parameter] public EventCallback Confirmed { get; set; } - - [Parameter] public EventCallback Canceled { get; set; } - - [Inject] protected UiMessageNotifierService UiMessageNotifierService { get; set; } } } From ec186a49e23c513652784339603d2a57079b6c9d Mon Sep 17 00:00:00 2001 From: Mladen Macanovic Date: Thu, 8 Oct 2020 12:25:58 +0200 Subject: [PATCH 2/2] Refactored UIMessageService and UIMessageAlert --- .../WebAssembly/IUiMessageService.cs | 13 ++-- .../WebAssembly/NullUiMessageService.cs | 13 ++-- .../WebAssembly/UiMessageOptions.cs | 9 ++- .../WebAssembly/UiMessageService.cs | 13 ++-- .../BlazoriseUiMessageService.cs | 74 +++++++++++++------ .../Components/UiMessageAlert.razor | 2 +- .../Components/UiMessageAlert.razor.cs | 71 +++++++++--------- .../UiMessageNotifierService.cs | 20 ----- .../Pages/Index.razor.cs | 12 ++- 9 files changed, 125 insertions(+), 102 deletions(-) delete mode 100644 framework/src/Volo.Abp.BlazoriseUI/UiMessageNotifierService.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs index ff86c1c867..fd70cc40e1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/IUiMessageService.cs @@ -1,17 +1,18 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; namespace Volo.Abp.AspNetCore.Components.WebAssembly { public interface IUiMessageService { - Task InfoAsync(string message, string title = null, UiMessageOptions options = null); + Task InfoAsync(string message, string title = null, Action options = null); - Task SuccessAsync(string message, string title = null, UiMessageOptions options = null); + Task SuccessAsync(string message, string title = null, Action options = null); - Task WarnAsync(string message, string title = null, UiMessageOptions options = null); + Task WarnAsync(string message, string title = null, Action options = null); - Task ErrorAsync(string message, string title = null, UiMessageOptions options = null); + Task ErrorAsync(string message, string title = null, Action options = null); - Task ConfirmAsync(string message, string title = null, UiMessageOptions options = null); + Task ConfirmAsync(string message, string title = null, Action options = null); } } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiMessageService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiMessageService.cs index 0c7df5780d..2a00d29ec5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiMessageService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/NullUiMessageService.cs @@ -1,31 +1,32 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Volo.Abp.DependencyInjection; namespace Volo.Abp.AspNetCore.Components.WebAssembly { public class NullUiMessageService : IUiMessageService, ITransientDependency { - public Task InfoAsync(string message, string title = null, UiMessageOptions options = null) + public Task InfoAsync(string message, string title = null, Action options = null) { return Task.CompletedTask; } - public Task SuccessAsync(string message, string title = null, UiMessageOptions options = null) + public Task SuccessAsync(string message, string title = null, Action options = null) { return Task.CompletedTask; } - public Task WarnAsync(string message, string title = null, UiMessageOptions options = null) + public Task WarnAsync(string message, string title = null, Action options = null) { return Task.CompletedTask; } - public Task ErrorAsync(string message, string title = null, UiMessageOptions options = null) + public Task ErrorAsync(string message, string title = null, Action options = null) { return Task.CompletedTask; } - public Task ConfirmAsync(string message, string title = null, UiMessageOptions options = null) + public Task ConfirmAsync(string message, string title = null, Action options = null) { return Task.FromResult(true); } diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageOptions.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageOptions.cs index 85b26bc4b6..59b2e8f400 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageOptions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageOptions.cs @@ -6,9 +6,14 @@ public class UiMessageOptions { /// - /// If true, the message dialog will show the large icon for the current message type. + /// If true, the message dialogue will be centered on the screen. /// - public bool ShowMessageIcon { get; set; } = true; + public bool CenterMessage { get; set; } + + /// + /// If true, the message dialogue will show the large icon for the current message type. + /// + public bool ShowMessageIcon { get; set; } /// /// Overrides the build-in message icon. diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs index dfdc09f55d..93970de348 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/UiMessageService.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System; +using System.Threading.Tasks; using Microsoft.JSInterop; using Volo.Abp.DependencyInjection; @@ -14,27 +15,27 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly JsRuntime = jsRuntime; } - public async Task InfoAsync(string message, string title = null, UiMessageOptions options = null) + public async Task InfoAsync(string message, string title = null, Action options = null) { await JsRuntime.InvokeVoidAsync("alert", message); } - public async Task SuccessAsync(string message, string title = null, UiMessageOptions options = null) + public async Task SuccessAsync(string message, string title = null, Action options = null) { await JsRuntime.InvokeVoidAsync("alert", message); } - public async Task WarnAsync(string message, string title = null, UiMessageOptions options = null) + public async Task WarnAsync(string message, string title = null, Action options = null) { await JsRuntime.InvokeVoidAsync("alert", message); } - public async Task ErrorAsync(string message, string title = null, UiMessageOptions options = null) + public async Task ErrorAsync(string message, string title = null, Action options = null) { await JsRuntime.InvokeVoidAsync("alert", message); } - public async Task ConfirmAsync(string message, string title = null, UiMessageOptions options = null) + public async Task ConfirmAsync(string message, string title = null, Action options = null) { return await JsRuntime.InvokeAsync("confirm", message); } diff --git a/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs b/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs index c9f4b39a04..f22ec3b653 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiMessageService.cs @@ -12,57 +12,85 @@ namespace Volo.Abp.BlazoriseUI [Dependency(ReplaceServices = true)] public class BlazoriseUiMessageService : IUiMessageService, IScopedDependency { - private readonly UiMessageNotifierService uiMessageNotifierService; - private readonly IStringLocalizer _localizer; + /// + /// An event raised after the message is received. Used to notify the message dialog. + /// + public event EventHandler MessageReceived; + + private readonly IStringLocalizer localizer; public ILogger Logger { get; set; } public BlazoriseUiMessageService( - UiMessageNotifierService uiMessageNotifierService, IStringLocalizer localizer) { - this.uiMessageNotifierService = uiMessageNotifierService; - _localizer = localizer; + this.localizer = localizer; Logger = NullLogger.Instance; } - public Task InfoAsync(string message, string title = null, Action optionsActions = null) + public Task InfoAsync(string message, string title = null, Action options = null) { - var options = CreateDefaultOptions(); - optionsActions?.Invoke(options); - return uiMessageNotifierService.NotifyMessageReceivedAsync(UiMessageType.Info, message, title, options); - } + var uiMessageOptions = CreateDefaultOptions(); + options?.Invoke(uiMessageOptions); - protected virtual UiMessageOptions CreateDefaultOptions() - { - return new UiMessageOptions { - ConfirmButtonText = _localizer["Yes"] - }; + MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Info, message, title, uiMessageOptions)); + + return Task.CompletedTask; } - public Task SuccessAsync(string message, string title = null, UiMessageOptions options = null) + public Task SuccessAsync(string message, string title = null, Action options = null) { - return uiMessageNotifierService.NotifyMessageReceivedAsync(UiMessageType.Success, message, title, options); + var uiMessageOptions = CreateDefaultOptions(); + options?.Invoke(uiMessageOptions); + + MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Success, message, title, uiMessageOptions)); + + return Task.CompletedTask; } - public Task WarnAsync(string message, string title = null, UiMessageOptions options = null) + public Task WarnAsync(string message, string title = null, Action options = null) { - return uiMessageNotifierService.NotifyMessageReceivedAsync(UiMessageType.Warning, message, title, options); + var uiMessageOptions = CreateDefaultOptions(); + options?.Invoke(uiMessageOptions); + + MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Warning, message, title, uiMessageOptions)); + + return Task.CompletedTask; } - public Task ErrorAsync(string message, string title = null, UiMessageOptions options = null) + public Task ErrorAsync(string message, string title = null, Action options = null) { - return uiMessageNotifierService.NotifyMessageReceivedAsync(UiMessageType.Error, message, title, options); + var uiMessageOptions = CreateDefaultOptions(); + options?.Invoke(uiMessageOptions); + + MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Error, message, title, uiMessageOptions)); + + return Task.CompletedTask; } - public async Task ConfirmAsync(string message, string title = null, UiMessageOptions options = null) + public async Task ConfirmAsync(string message, string title = null, Action options = null) { + var uiMessageOptions = CreateDefaultOptions(); + options?.Invoke(uiMessageOptions); + var callback = new TaskCompletionSource(); - await uiMessageNotifierService.NotifyMessageReceivedAsync(UiMessageType.Confirmation, message, title, options, callback); + MessageReceived?.Invoke(this, new UiMessageEventArgs(UiMessageType.Confirmation, message, title, uiMessageOptions)); return await callback.Task; } + + protected virtual UiMessageOptions CreateDefaultOptions() + { + return new UiMessageOptions + { + CenterMessage = true, + ShowMessageIcon = true, + OkButtonText = localizer["Ok"], + CancelButtonText = localizer["Cancel"], + ConfirmButtonText = localizer["Yes"], + }; + } } } diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor b/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor index 6caf37c0b9..cd8fd5cada 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor @@ -1,6 +1,6 @@  - + @Title diff --git a/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs b/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs index afedc0a866..59e4aa3820 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/Components/UiMessageAlert.razor.cs @@ -9,6 +9,38 @@ namespace Volo.Abp.BlazoriseUI.Components { public partial class UiMessageAlert : ComponentBase, IDisposable { + protected Modal ModalRef { get; set; } + + protected virtual bool IsConfirmation + => MessageType == UiMessageType.Confirmation; + + protected virtual bool CenterMessage + => Options?.CenterMessage ?? true; + + protected virtual bool ShowMessageIcon + => Options?.ShowMessageIcon ?? true; + + protected virtual object MessageIcon => Options?.MessageIcon ?? MessageType switch + { + UiMessageType.Info => IconName.Info, + UiMessageType.Success => IconName.Check, + UiMessageType.Warning => IconName.Exclamation, + UiMessageType.Error => IconName.Times, + UiMessageType.Confirmation => IconName.QuestionCircle, + _ => null, + }; + + protected virtual string MessageIconColor => MessageType switch + { + // gets the color in the order of importance: Blazorise > Bootstrap > fallback color + UiMessageType.Info => "var(--b-theme-info, var(--info, #17a2b8))", + UiMessageType.Success => "var(--b-theme-success, var(--success, #28a745))", + UiMessageType.Warning => "var(--b-theme-warning, var(--warning, #ffc107))", + UiMessageType.Error => "var(--b-theme-danger, var(--danger, #dc3545))", + UiMessageType.Confirmation => "var(--b-theme-secondary, var(--secondary, #6c757d))", + _ => null, + }; + protected virtual string MessageIconStyle { get @@ -40,19 +72,19 @@ namespace Volo.Abp.BlazoriseUI.Components [Parameter] public UiMessageOptions Options { get; set; } - [Parameter] public EventCallback Okayed { get; set; } // TODO: ? + [Parameter] public EventCallback Okayed { get; set; } [Parameter] public EventCallback Confirmed { get; set; } [Parameter] public EventCallback Canceled { get; set; } - [Inject] protected UiMessageNotifierService UiMessageNotifierService { get; set; } + [Inject] protected BlazoriseUiMessageService UiMessageService { get; set; } protected override void OnInitialized() { base.OnInitialized(); - UiMessageNotifierService.MessageReceived += OnMessageReceived; + UiMessageService.MessageReceived += OnMessageReceived; } private void OnMessageReceived(object sender, UiMessageEventArgs e) @@ -68,9 +100,9 @@ namespace Volo.Abp.BlazoriseUI.Components public void Dispose() { - if (UiMessageNotifierService != null) + if (UiMessageService != null) { - UiMessageNotifierService.MessageReceived -= OnMessageReceived; + UiMessageService.MessageReceived -= OnMessageReceived; } } @@ -104,34 +136,5 @@ namespace Volo.Abp.BlazoriseUI.Components return Canceled.InvokeAsync(null); } - - protected Modal ModalRef { get; set; } - - protected virtual bool IsConfirmation - => MessageType == UiMessageType.Confirmation; - - protected virtual bool ShowMessageIcon - => Options?.ShowMessageIcon ?? true; - - protected virtual object MessageIcon => Options?.MessageIcon ?? MessageType switch - { - UiMessageType.Info => IconName.Info, - UiMessageType.Success => IconName.Check, - UiMessageType.Warning => IconName.Exclamation, - UiMessageType.Error => IconName.Times, - UiMessageType.Confirmation => IconName.QuestionCircle, - _ => null, - }; - - protected virtual string MessageIconColor => MessageType switch - { - // gets the color in the order of importance: Blazorise > Bootstrap > fallback color - UiMessageType.Info => "var(--b-theme-info, var(--info, #17a2b8))", - UiMessageType.Success => "var(--b-theme-success, var(--success, #28a745))", - UiMessageType.Warning => "var(--b-theme-warning, var(--warning, #ffc107))", - UiMessageType.Error => "var(--b-theme-danger, var(--danger, #dc3545))", - UiMessageType.Confirmation => "var(--b-theme-secondary, var(--secondary, #6c757d))", - _ => null, - }; } } diff --git a/framework/src/Volo.Abp.BlazoriseUI/UiMessageNotifierService.cs b/framework/src/Volo.Abp.BlazoriseUI/UiMessageNotifierService.cs deleted file mode 100644 index af49f993b5..0000000000 --- a/framework/src/Volo.Abp.BlazoriseUI/UiMessageNotifierService.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Threading.Tasks; -using Volo.Abp.AspNetCore.Components.WebAssembly; -using Volo.Abp.DependencyInjection; - -namespace Volo.Abp.BlazoriseUI -{ - [Dependency(ReplaceServices = true)] - public class UiMessageNotifierService : IScopedDependency - { - public event EventHandler MessageReceived; - - public Task NotifyMessageReceivedAsync(UiMessageType messageType, string message, string title, UiMessageOptions options, TaskCompletionSource callback = null) - { - MessageReceived?.Invoke(this, new UiMessageEventArgs(messageType, message, title, options, callback)); - - return Task.CompletedTask; - } - } -} diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.cs index 7ac6682659..0724ee6c97 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/Index.razor.cs @@ -23,10 +23,10 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages Task OnInfoTestClicked() { - return UiMessageService.InfoAsync( "This is the Info message", "Info", new UiMessageOptions + return UiMessageService.InfoAsync( "This is the Info message", "Info", options => { - OkButtonIcon = IconName.InfoCircle, - OkButtonText = "Hello info" + options.OkButtonIcon = IconName.InfoCircle; + options.OkButtonText = "Hello info"; } ); } @@ -47,7 +47,11 @@ namespace MyCompanyName.MyProjectName.Blazor.Pages Task OnConfirmTestClicked() { - return UiMessageService.ConfirmAsync( "This is the Confirm message", "Confirm" ) + return UiMessageService.ConfirmAsync( "Are you sure you want to delete the item?", "Confirm", options => + { + options.CancelButtonText = "Do not delete it"; + options.ConfirmButtonText = "Yes I'm sure"; + } ) .ContinueWith( result => { if ( result.Result )