diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 3b35884692d..f1b8fa707cb 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 9.3.1-beta39 + 9.4.0 diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButton.razor b/src/BootstrapBlazor/Components/Button/PopConfirmButton.razor index 2bd5c84fa04..19572d4546f 100644 --- a/src/BootstrapBlazor/Components/Button/PopConfirmButton.razor +++ b/src/BootstrapBlazor/Components/Button/PopConfirmButton.razor @@ -33,8 +33,8 @@ else @ChildContent ; diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButtonBase.cs b/src/BootstrapBlazor/Components/Button/PopConfirmButtonBase.cs index 2df52c159fc..db9af328978 100644 --- a/src/BootstrapBlazor/Components/Button/PopConfirmButtonBase.cs +++ b/src/BootstrapBlazor/Components/Button/PopConfirmButtonBase.cs @@ -105,6 +105,12 @@ public abstract class PopConfirmButtonBase : ButtonBase [NotNull] public string? CloseButtonText { get; set; } + /// + /// 获得/设置 关闭按钮显示图标 + /// + [Parameter] + public string? CloseButtonIcon { get; set; } + /// /// 获得/设置 确认按钮显示文字 默认为 确定 /// @@ -118,6 +124,12 @@ public abstract class PopConfirmButtonBase : ButtonBase [Parameter] public Color ConfirmButtonColor { get; set; } = Color.Primary; + /// + /// 获得/设置 确认按钮显示图标 + /// + [Parameter] + public string? ConfirmButtonIcon { get; set; } + /// /// 获得/设置 确认框图标 /// diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor index d56520630ce..fe0e579ae44 100644 --- a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor +++ b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor @@ -27,15 +27,17 @@
@if (ShowCloseButton) { -
+
+ } @if (ShowConfirmButton) { -
+
+ }
} diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs index 70fd7ec5c05..ad5d382ddc7 100644 --- a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs +++ b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs @@ -59,6 +59,12 @@ public partial class PopConfirmButtonContent [Parameter] public RenderFragment? ChildContent { get; set; } + /// + /// 获得/设置 关闭按钮显示图标 + /// + [Parameter] + public string? CloseButtonIcon { get; set; } + /// /// 获得/设置 关闭按钮显示文字 /// @@ -71,6 +77,12 @@ public partial class PopConfirmButtonContent [Parameter] public Color CloseButtonColor { get; set; } = Color.Secondary; + /// + /// 获得/设置 确认按钮显示图标 + /// + [Parameter] + public string? ConfirmButtonIcon { get; set; } + /// /// 获得/设置 确认按钮显示文字 /// @@ -87,7 +99,6 @@ public partial class PopConfirmButtonContent /// 获得/设置 确认框图标 /// [Parameter] - [NotNull] public string? Icon { get; set; } /// @@ -114,6 +125,8 @@ protected override void OnParametersSet() base.OnParametersSet(); Icon ??= IconTheme.GetIconByKey(ComponentIcons.PopConfirmButtonConfirmIcon); + CloseButtonIcon ??= IconTheme.GetIconByKey(ComponentIcons.PopConfirmButtonContentCloseButtonIcon); + ConfirmButtonIcon ??= IconTheme.GetIconByKey(ComponentIcons.PopConfirmButtonContentConfirmButtonIcon); } /// diff --git a/src/BootstrapBlazor/Enums/ComponentIcons.cs b/src/BootstrapBlazor/Enums/ComponentIcons.cs index 2ba9373ddc0..471c07d4846 100644 --- a/src/BootstrapBlazor/Enums/ComponentIcons.cs +++ b/src/BootstrapBlazor/Enums/ComponentIcons.cs @@ -410,6 +410,16 @@ public enum ComponentIcons /// PopConfirmButtonConfirmIcon, + /// + /// PopConfirmButton 组件弹窗中 CloseButtonIcon 图标 + /// + PopConfirmButtonContentCloseButtonIcon, + + /// + /// PopConfirmButton 组件弹窗中 ConfirmButtonIcon 图标 + /// + PopConfirmButtonContentConfirmButtonIcon, + /// /// Rate 组件 StarIcon 图标 /// diff --git a/src/BootstrapBlazor/Icons/BootstrapIcons.cs b/src/BootstrapBlazor/Icons/BootstrapIcons.cs index b6c6298b95c..fa16c111a57 100644 --- a/src/BootstrapBlazor/Icons/BootstrapIcons.cs +++ b/src/BootstrapBlazor/Icons/BootstrapIcons.cs @@ -97,7 +97,9 @@ internal static class BootstrapIcons { ComponentIcons.PaginationPrevEllipsisPageIcon, "bi bi-three-dots" }, { ComponentIcons.PaginationNextEllipsisPageIcon, "bi bi-three-dots" }, - { ComponentIcons.PopConfirmButtonConfirmIcon, "bi bi-exclamation-circle" }, + { ComponentIcons.PopConfirmButtonConfirmIcon, "bi bi-exclamation-circle-fill" }, + { ComponentIcons.PopConfirmButtonContentCloseButtonIcon, "bi bi-x" }, + { ComponentIcons.PopConfirmButtonContentConfirmButtonIcon, "bi bi-check" }, { ComponentIcons.RateStarIcon, "bi bi-star-fill" }, { ComponentIcons.RateUnStarIcon, "bi bi-star" }, diff --git a/src/BootstrapBlazor/Icons/FontAwesomeIcons.cs b/src/BootstrapBlazor/Icons/FontAwesomeIcons.cs index cd8ffadb184..c317e33e9fa 100644 --- a/src/BootstrapBlazor/Icons/FontAwesomeIcons.cs +++ b/src/BootstrapBlazor/Icons/FontAwesomeIcons.cs @@ -96,6 +96,8 @@ internal static class FontAwesomeIcons { ComponentIcons.PaginationNextEllipsisPageIcon, "fa-solid fa-ellipsis" }, { ComponentIcons.PopConfirmButtonConfirmIcon, "fa-solid fa-circle-exclamation" }, + { ComponentIcons.PopConfirmButtonContentCloseButtonIcon, "fa-solid fa-xmark" }, + { ComponentIcons.PopConfirmButtonContentConfirmButtonIcon, "fa-solid fa-check" }, { ComponentIcons.RateStarIcon, "fa-solid fa-star" }, { ComponentIcons.RateUnStarIcon, "fa-regular fa-star" }, diff --git a/src/BootstrapBlazor/Icons/MaterialDesignIcons.cs b/src/BootstrapBlazor/Icons/MaterialDesignIcons.cs index 1ecb8e07400..b9691d768cd 100644 --- a/src/BootstrapBlazor/Icons/MaterialDesignIcons.cs +++ b/src/BootstrapBlazor/Icons/MaterialDesignIcons.cs @@ -97,7 +97,9 @@ internal static class MaterialDesignIcons { ComponentIcons.PaginationPrevEllipsisPageIcon, "mdi mdi-dots-horizontal" }, { ComponentIcons.PaginationNextEllipsisPageIcon, "mdi mdi-dots-horizontal" }, - { ComponentIcons.PopConfirmButtonConfirmIcon, "mdi mdi-exclamation" }, + { ComponentIcons.PopConfirmButtonConfirmIcon, "mdi mdi-alert-circle" }, + { ComponentIcons.PopConfirmButtonContentCloseButtonIcon, "mdi mdi-close" }, + { ComponentIcons.PopConfirmButtonContentConfirmButtonIcon, "mdi mdi-check" }, { ComponentIcons.RateStarIcon, "mdi mdi-star" }, { ComponentIcons.RateUnStarIcon, "mdi mdi-star-outline" }, diff --git a/test/UnitTest/Components/PopConfirmButtonTest.cs b/test/UnitTest/Components/PopConfirmButtonTest.cs index 8c5b2376899..da5b9d908b2 100644 --- a/test/UnitTest/Components/PopConfirmButtonTest.cs +++ b/test/UnitTest/Components/PopConfirmButtonTest.cs @@ -22,9 +22,14 @@ public async Task Show_Ok() pb.Add(a => a.ConfirmButtonColor, Color.Danger); pb.Add(a => a.Icon, "fa-solid fa-font-awesome"); pb.Add(a => a.Text, "Test_Text"); + pb.Add(a => a.CloseButtonIcon, "fa-solid fa-xmark"); + pb.Add(a => a.ConfirmButtonIcon, "fa-solid fa-check"); }); }); + cut.Contains("fa-solid fa-xmark"); + cut.Contains("fa-solid fa-check"); + // Show var button = cut.Find("div"); await cut.InvokeAsync(() => @@ -33,7 +38,7 @@ await cut.InvokeAsync(() => }); // Close - var buttons = cut.FindAll(".popover-confirm-buttons div"); + var buttons = cut.FindAll(".popover-confirm-buttons button"); await cut.InvokeAsync(() => { buttons[0].Click(); @@ -45,7 +50,7 @@ await cut.InvokeAsync(() => { button.Click(); }); - buttons = cut.FindAll(".popover-confirm-buttons div"); + buttons = cut.FindAll(".popover-confirm-buttons button"); await cut.InvokeAsync(() => { buttons[1].Click(); @@ -97,7 +102,7 @@ await cut.InvokeAsync(() => }); // Close - buttons = cut.FindAll(".popover-confirm-buttons div"); + buttons = cut.FindAll(".popover-confirm-buttons button"); await cut.InvokeAsync(() => { buttons[0].Click(); @@ -111,7 +116,7 @@ await cut.InvokeAsync(() => { button.Click(); }); - buttons = cut.FindAll(".popover-confirm-buttons div"); + buttons = cut.FindAll(".popover-confirm-buttons button"); await cut.InvokeAsync(() => { buttons[1].Click(); @@ -132,7 +137,7 @@ await cut.InvokeAsync(() => }); // Confirm - buttons = cut.FindAll(".popover-confirm-buttons div"); + buttons = cut.FindAll(".popover-confirm-buttons button"); await cut.InvokeAsync(() => { buttons[1].Click(); @@ -158,7 +163,7 @@ await cut.InvokeAsync(() => }); // async confirm - buttons = cut.FindAll(".popover-confirm-buttons div"); + buttons = cut.FindAll(".popover-confirm-buttons button"); _ = cut.InvokeAsync(() => { buttons[1].Click(); @@ -178,7 +183,7 @@ await cut.InvokeAsync(() => }); // async confirm - buttons = cut.FindAll(".popover-confirm-buttons div"); + buttons = cut.FindAll(".popover-confirm-buttons button"); await cut.InvokeAsync(() => { buttons[1].Click(); @@ -248,10 +253,12 @@ public void Trigger_Ok() } [Fact] - public void ConfirmIcon_Ok() + public void Icon_Ok() { var cut = Context.RenderComponent(); cut.Contains("text-info fa-solid fa-circle-exclamation"); + cut.Contains("fa-solid fa-xmark"); + cut.Contains("fa-solid fa-check"); } [Fact] diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index f8d2fbd2fec..b20df021baa 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -5538,49 +5538,8 @@ public async Task OnAfterCancelSaveAsync_EditForm() await cut.InvokeAsync(() => button[0].Click()); // 取消按钮 - var cancelButton = cut.Find(".form-footer .btn-secondary"); - await cut.InvokeAsync(() => cancelButton.Click()); - Assert.True(afterCancelSave); - } - - [Fact] - public async Task OnAfterCancelSaveAsync_InCell() - { - var localizer = Context.Services.GetRequiredService>(); - var items = Foo.GenerateFoo(localizer, 2); - var afterCancelSave = false; - var cut = Context.RenderComponent(pb => - { - pb.AddChildContent>(pb => - { - pb.Add(a => a.RenderMode, TableRenderMode.Table); - pb.Add(a => a.Items, items); - pb.Add(a => a.IsMultipleSelect, true); - pb.Add(a => a.ShowToolbar, true); - pb.Add(a => a.ShowExtendButtons, true); - pb.Add(a => a.EditMode, EditMode.EditForm); - pb.Add(a => a.OnAfterCancelSaveAsync, () => - { - afterCancelSave = true; - return Task.CompletedTask; - }); - pb.Add(a => a.TableColumns, foo => builder => - { - builder.OpenComponent>(0); - builder.AddAttribute(1, "Field", "Name"); - builder.AddAttribute(2, "FieldExpression", Utility.GenerateValueExpression(foo, "Name", typeof(string))); - builder.CloseComponent(); - }); - }); - }); - - // test edit button - var button = cut.FindAll("tbody tr button"); + button = cut.FindAll("tbody tr.is-editform button"); await cut.InvokeAsync(() => button[0].Click()); - - // 取消按钮 - button = cut.FindAll("tbody tr button"); - await cut.InvokeAsync(() => button[1].Click()); Assert.True(afterCancelSave); }