FruitBankHybridApp/FruitBankHybrid.Shared/Extensions/DevexpressComponentExtensio...

46 lines
2.1 KiB
C#

using DevExpress.Blazor;
using DevExpress.Blazor.Internal;
namespace FruitBankHybrid.Shared.Extensions;
public static class DevexpressComponentExtensions
{
public static async Task ShowMessageBoxAsync(this IDialogService messageBox, string title, string text, MessageBoxRenderStyle messageBoxRenderStyle)
{
var messageBoxOptions = CreateMessageBoxOptions(title, text, messageBoxRenderStyle);
await messageBox.AlertAsync(messageBoxOptions);
}
/// <summary>Több-üzenetes messagebox: minden üzenet KÜLÖN SORBAN jelenik meg. A sima <c>Text</c>-be fűzött
/// sortörések a HTML-renderelésnél szóközzé olvadnának — a <c>CssClass</c> + a <c>white-space: pre-line</c>
/// szabály (app.css: <c>.fb-msgbox-multiline</c>) tartja meg őket. (A <c>MessageBoxOptions</c>-nek nincs
/// BodyTemplate-je, ezért CSS-megoldás.)</summary>
public static async Task ShowMessageBoxAsync(this IDialogService messageBox, string title, IReadOnlyCollection<string> lines, MessageBoxRenderStyle messageBoxRenderStyle)
{
// "• " prefix = lista-hatás (a MessageBoxOptions csak sima szöveget tud, <ul>/<li> nem lehetséges).
var messageBoxOptions = CreateMessageBoxOptions(title, string.Join(Environment.NewLine, lines.Select(l => $"• {l}")), messageBoxRenderStyle);
messageBoxOptions.CssClass = "fb-msgbox-multiline";
await messageBox.AlertAsync(messageBoxOptions);
}
public static async Task<bool> ShowConfirmBoxAsync(this IDialogService messageBox, string title, string text, MessageBoxRenderStyle messageBoxRenderStyle)
{
var messageBoxOptions = CreateMessageBoxOptions(title, text, messageBoxRenderStyle);
return await messageBox.ConfirmAsync(messageBoxOptions);
}
private static MessageBoxOptions CreateMessageBoxOptions(string title, string text, MessageBoxRenderStyle messageBoxRenderStyle)
{
var messageBoxOptions = new MessageBoxOptions
{
Title = title,
Text = text,
RenderStyle = messageBoxRenderStyle,
ShowIcon = false
};
return messageBoxOptions;
}
}