? OnClose { get; set; }
+ ///
+ /// 获得/设置 是否显示关闭按钮
+ ///
+ [Parameter]
+ public bool ShowCloseButton { get; set; } = true;
+
///
/// 获得/设置 点击确认弹窗前回调方法 返回真时弹出弹窗 返回假时不弹出 默认 null
///
diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor
index f4c69075170..507c7ccfa08 100644
--- a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor
+++ b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor
@@ -10,7 +10,11 @@
@if (ChildContent != null)
{
- @ChildContent
+
+
+ @ChildContent
+
+
}
else
{
@@ -19,12 +23,18 @@
}
diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs
index 8e773a64b45..23071f3e329 100644
--- a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs
+++ b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs
@@ -27,6 +27,18 @@ public partial class PopConfirmButtonContent
.AddClass(Icon)
.Build();
+ ///
+ /// 获得/设置 是否显示确认按钮
+ ///
+ [Parameter]
+ public bool ShowConfirmButton { get; set; } = true;
+
+ ///
+ /// 获得/设置 是否显示关闭按钮
+ ///
+ [Parameter]
+ public bool ShowCloseButton { get; set; } = true;
+
///
/// 获得/设置 显示标题
///
diff --git a/test/UnitTest/Components/PopConfirmButtonTest.cs b/test/UnitTest/Components/PopConfirmButtonTest.cs
index dd48f59c22e..2a33be83130 100644
--- a/test/UnitTest/Components/PopConfirmButtonTest.cs
+++ b/test/UnitTest/Components/PopConfirmButtonTest.cs
@@ -55,43 +55,36 @@ await cut.InvokeAsync(() =>
var close = false;
var beforeClose = false;
- await cut.InvokeAsync(() =>
+ var popButton = cut.FindComponent();
+ popButton.SetParametersAndRender(pb =>
{
- var popButton = cut.FindComponent();
- popButton.SetParametersAndRender(pb =>
+ pb.Add(a => a.Content, "Test_Content");
+ pb.Add(a => a.ConfirmButtonText, "Test_Confirm_Text");
+ pb.Add(a => a.CloseButtonText, "Test_Close_Text");
+ pb.Add(a => a.CustomClass, "test-custom-class");
+ pb.Add(a => a.OnConfirm, () =>
{
- pb.Add(a => a.Content, "Test_Content");
- pb.Add(a => a.ConfirmButtonText, "Test_Confirm_Text");
- pb.Add(a => a.CloseButtonText, "Test_Close_Text");
- pb.Add(a => a.CustomClass, "test-custom-class");
- pb.Add(a => a.OnConfirm, () =>
- {
- confirm = true;
- return Task.CompletedTask;
- });
- pb.Add(a => a.OnClose, () =>
- {
- close = true;
- return Task.CompletedTask;
- });
- pb.Add(a => a.OnBeforeClick, () =>
- {
- beforeClose = true;
- return Task.FromResult(true);
- });
+ confirm = true;
+ return Task.CompletedTask;
+ });
+ pb.Add(a => a.OnClose, () =>
+ {
+ close = true;
+ return Task.CompletedTask;
+ });
+ pb.Add(a => a.OnBeforeClick, () =>
+ {
+ beforeClose = true;
+ return Task.FromResult(true);
});
});
// 默认设置增加 shadow 样式
Assert.Contains("data-bs-custom-class=\"test-custom-class shadow\"", cut.Markup);
- var popButton = cut.FindComponent();
- await cut.InvokeAsync(() =>
+ // 移除 shadow 样式
+ popButton.SetParametersAndRender(pb =>
{
- // 移除 shadow 样式
- popButton.SetParametersAndRender(pb =>
- {
- pb.Add(a => a.ShowShadow, false);
- });
+ pb.Add(a => a.ShowShadow, false);
});
Assert.Contains("data-bs-custom-class=\"test-custom-class\"", cut.Markup);
@@ -125,13 +118,9 @@ await cut.InvokeAsync(() =>
Assert.True(confirm);
// Submit
- popButton = cut.FindComponent();
- await cut.InvokeAsync(() =>
+ popButton.SetParametersAndRender(pb =>
{
- popButton.SetParametersAndRender(pb =>
- {
- pb.Add(a => a.ButtonType, ButtonType.Submit);
- });
+ pb.Add(a => a.ButtonType, ButtonType.Submit);
});
// Show
@@ -150,17 +139,13 @@ await cut.InvokeAsync(() =>
// IsAsync
var tcs = new TaskCompletionSource();
- popButton = cut.FindComponent();
- await cut.InvokeAsync(() =>
+ popButton.SetParametersAndRender(pb =>
{
- popButton.SetParametersAndRender(pb =>
+ pb.Add(a => a.IsAsync, true);
+ pb.Add(a => a.OnConfirm, () =>
{
- pb.Add(a => a.IsAsync, true);
- pb.Add(a => a.OnConfirm, () =>
- {
- tcs.TrySetResult();
- return Task.CompletedTask;
- });
+ tcs.TrySetResult();
+ return Task.CompletedTask;
});
});
@@ -179,13 +164,9 @@ await cut.InvokeAsync(() =>
});
await tcs.Task;
- popButton = cut.FindComponent();
- await cut.InvokeAsync(() =>
+ popButton.SetParametersAndRender(pb =>
{
- popButton.SetParametersAndRender(pb =>
- {
- pb.Add(a => a.ButtonType, ButtonType.Button);
- });
+ pb.Add(a => a.ButtonType, ButtonType.Button);
});
// Show
@@ -203,39 +184,53 @@ await cut.InvokeAsync(() =>
});
// IsLink
- popButton = cut.FindComponent();
- await cut.InvokeAsync(() =>
+ popButton.SetParametersAndRender(pb =>
{
- popButton.SetParametersAndRender(pb =>
- {
- pb.Add(a => a.IsLink, true);
- });
+ pb.Add(a => a.IsLink, true);
});
- popButton = cut.FindComponent();
await cut.InvokeAsync(() =>
{
popButton.Contains("");
+
+ // 级联参数
+ popButton.SetParametersAndRender(pb =>
+ {
+ pb.Add(a => a.ShowCloseButton, true);
+ pb.Add(a => a.ShowConfirmButton, true);
+ pb.Add(a => a.BodyTemplate, builder =>
+ {
+ builder.OpenComponent(0);
+ builder.CloseComponent();
+ });
+ });
+
+ var mockContent = cut.FindComponent();
+ Assert.True(mockContent.Instance.Close());
+ Assert.True(mockContent.Instance.Confirm());
}
[Fact]
@@ -293,4 +288,17 @@ public void TooltipText_Ok()
});
cut.Contains("data-bs-original-title=\"pop-tooltip\"");
}
+
+ public class MockContent : ComponentBase
+ {
+ [CascadingParameter(Name = "PopoverConfirmButtonCloseAsync")]
+ private Func? OnCloseAsync { get; set; }
+
+ [CascadingParameter(Name = "PopoverConfirmButtonConfirmAsync")]
+ private Func? OnConfirmAsync { get; set; }
+
+ public bool Close() => OnCloseAsync != null;
+
+ public bool Confirm() => OnConfirmAsync != null;
+ }
}