Added IMessageDisplay Interface, added implementation to ToastComponent

This commit is contained in:
Mia Rose Winter 2024-02-14 19:41:26 +01:00
parent 3bd17a4cb5
commit 33e8d490ac
Signed by: miawinter
GPG key ID: 4B6F6A83178F595E
3 changed files with 25 additions and 19 deletions

View file

@ -2,6 +2,7 @@
@using Microsoft.AspNetCore.Identity
@using Wave.Data
@using Humanizer
@using Wave.Utilities
@rendermode InteractiveServer
@attribute [Authorize(Policy = "RoleAssignPermissions")]
@ -59,7 +60,7 @@
@code {
[CascadingParameter(Name = "TitlePrefix")]
private string TitlePrefix { get; set; } = default!;
public ToastComponent Toast { get; set; } = null!;
public IMessageDisplay Toast { get; set; } = null!;
private string ModalId { get; } = "UserDialog";
[CascadingParameter]

View file

@ -1,4 +1,7 @@
<div class="toast toast-start z-10" role="alert">
@using Wave.Utilities
@implements IMessageDisplay
<div class="toast toast-start z-10" role="alert">
@foreach (var message in Messages) {
<div class="alert @message.Type" @onclick="() => Messages.Remove(message)">
@if (message.Title is null) {
@ -12,24 +15,10 @@
</div>
@code {
private List<Message> Messages { get; } = [];
private List<IMessageDisplay.Message> Messages { get; } = [];
public void ShowInfo(string message, string? title = null) {
Messages.Add(new Message(message, "alert-info", title, DateTimeOffset.UtcNow));
public void ShowMessage(IMessageDisplay.Message message) {
Messages.Add(message);
StateHasChanged();
}
public void ShowSuccess(string message, string? title = null) {
Messages.Add(new Message(message, "alert-success", title, DateTimeOffset.UtcNow));
StateHasChanged();
}
public void ShowWarning(string message, string? title = null) {
Messages.Add(new Message(message, "alert-warning", title, DateTimeOffset.UtcNow));
StateHasChanged();
}
public void ShowError(string message, string? title = null) {
Messages.Add(new Message(message, "alert-error", title, DateTimeOffset.UtcNow));
StateHasChanged();
}
private sealed record Message(string Body, string Type, string? Title, DateTimeOffset Created);
}

View file

@ -0,0 +1,16 @@
namespace Wave.Utilities;
public interface IMessageDisplay {
public void ShowMessage(Message message);
public void ShowInfo(string message, string? title = null)
=> ShowMessage(new Message(message, "alert-info", title, DateTimeOffset.UtcNow));
public void ShowSuccess(string message, string? title = null)
=> ShowMessage(new Message(message, "alert-success", title, DateTimeOffset.UtcNow));
public void ShowWarning(string message, string? title = null)
=> ShowMessage(new Message(message, "alert-warning", title, DateTimeOffset.UtcNow));
public void ShowError(string message, string? title = null)
=> ShowMessage(new Message(message, "alert-error", title, DateTimeOffset.UtcNow));
public sealed record Message(string Body, string Type, string? Title, DateTimeOffset Created);
}