Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/BootstrapBlazor/Components/Message/Message.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,8 @@ public async Task Dismiss(string id)
{
await option.OnDismiss();
}
if (option is { DismissMode: MessageDismissMode.DeleteSource })
_messages.Remove(option);
}

/// <summary>
Expand Down
5 changes: 4 additions & 1 deletion src/BootstrapBlazor/Components/Message/Message.razor.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,13 @@ export function show(id, msgId) {
clearTimeout(hideHandler);

// remove Id
msg.items.pop();
const rmDom = msg.items.pop();
if (msg.items.length === 0) {
// call server method prepare remove dom
msg.invoke.invokeMethodAsync(msg.callback);
} else {
const alertId = rmDom.el.id;
msg.invoke.invokeMethodAsync('Dismiss', alertId);
}
}, 500);
};
Expand Down
5 changes: 5 additions & 0 deletions src/BootstrapBlazor/Components/Message/MessageOption.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,9 @@ public class MessageOption : PopupOptionBase
/// 获得/设置 消息显示模式,默认为 <see cref="MessageShowMode.Multiple"/>
/// </summary>
public MessageShowMode ShowMode { get; set; } = MessageShowMode.Multiple;

/// <summary>
/// 获得/设置 消息关闭模式,默认为 <see cref="MessageDismissMode.OnlyHidden"/>
/// </summary>
public MessageDismissMode DismissMode { get; set; } = MessageDismissMode.OnlyHidden;
}
15 changes: 15 additions & 0 deletions src/BootstrapBlazor/Enums/MessageShowMode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,18 @@ public enum MessageShowMode
/// </summary>
Multiple
}

/// <summary>
/// 消息关闭模式
/// </summary>
public enum MessageDismissMode
{
/// <summary>
/// 关闭时仅隐藏原弹窗,保持占位直到所有弹窗均隐藏时一次性清空,这是之前的默认行为
/// </summary>
OnlyHidden,
/// <summary>
/// 关闭时直接删除原弹窗的数据对象,不存在占位
/// </summary>
DeleteSource,
}
20 changes: 20 additions & 0 deletions test/UnitTest/Components/MessageTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -133,4 +133,24 @@ await cut.InvokeAsync(() => service.Show(new MessageOption()
ShowMode = MessageShowMode.Single
}, cut.Instance));
}

[Fact]
public async Task DisMissMode_Ok()
{
var service = Context.Services.GetRequiredService<MessageService>();
var cut = Context.RenderComponent<Message>();
await cut.InvokeAsync(() => service.Show(new MessageOption()
{
Content = "Test Content",
IsAutoHide = false,
ShowDismiss = true,
Icon = "fa-solid fa-font-awesome",
DismissMode = MessageDismissMode.DeleteSource
}, cut.Instance));
var alert = cut.Find(".alert");
Assert.NotNull(alert);
Assert.NotNull(alert.Id);

await cut.Instance.Dismiss(alert.Id);
}
}
Loading