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);
}
/// Több-üzenetes messagebox: minden üzenet KÜLÖN SORBAN jelenik meg. A sima Text-be fűzött
/// sortörések a HTML-renderelésnél szóközzé olvadnának — a CssClass + a white-space: pre-line
/// szabály (app.css: .fb-msgbox-multiline) tartja meg őket. (A MessageBoxOptions-nek nincs
/// BodyTemplate-je, ezért CSS-megoldás.)
public static async Task ShowMessageBoxAsync(this IDialogService messageBox, string title, IReadOnlyCollection lines, MessageBoxRenderStyle messageBoxRenderStyle)
{
// "• " prefix = lista-hatás (a MessageBoxOptions csak sima szöveget tud, /- 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 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;
}
}