From 27eec5e4a3c90bcecdffba8926376e4b7508d71a Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 26 Feb 2025 20:35:34 +0800 Subject: [PATCH 01/10] =?UTF-8?q?refactor:=20=E7=B2=BE=E7=AE=80=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Button/PopConfirmButtonContent.razor | 4 ++-- .../Button/PopConfirmButtonContent.razor.cs | 14 ++------------ 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor index 9efcb76e31c..d56520630ce 100644 --- a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor +++ b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor @@ -10,8 +10,8 @@
@if (ChildContent != null) { - - + + @ChildContent diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs index 6ca5c43be95..70fd7ec5c05 100644 --- a/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs +++ b/src/BootstrapBlazor/Components/Button/PopConfirmButtonContent.razor.cs @@ -121,6 +121,7 @@ protected override void OnParametersSet() /// public async Task OnCloseClick() { + await InvokeVoidAsync("hide", Id); if (OnClose != null) { await OnClose(); @@ -132,21 +133,10 @@ public async Task OnCloseClick() /// public async Task OnConfirmClick() { + await InvokeVoidAsync("hide", Id); if (OnConfirm != null) { await OnConfirm(); } } - - private async Task TriggerCloseAsync() - { - await InvokeVoidAsync("hide", Id); - await OnCloseClick(); - } - - private async Task TriggerConfirmAsync() - { - await InvokeVoidAsync("hide", Id); - await OnConfirmClick(); - } } From a944ad84c0c724f401e119d8c3335134d5d5bcd7 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 26 Feb 2025 20:35:52 +0800 Subject: [PATCH 02/10] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=20dismiss?= =?UTF-8?q?=20=E5=A4=84=E7=90=86=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Button/PopConfirmButton.razor.js | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/src/BootstrapBlazor/Components/Button/PopConfirmButton.razor.js b/src/BootstrapBlazor/Components/Button/PopConfirmButton.razor.js index b6aadfbf311..def41f9a6af 100644 --- a/src/BootstrapBlazor/Components/Button/PopConfirmButton.razor.js +++ b/src/BootstrapBlazor/Components/Button/PopConfirmButton.razor.js @@ -5,7 +5,6 @@ import EventHandler from "../../modules/event-handler.js" const config = { class: 'popover-confirm', - dismiss: '.popover-confirm-buttons > div', popoverSelector: '.popover-confirm.show' } @@ -63,22 +62,6 @@ export function init(id) { EventHandler.on(el, 'inserted.bs.popover', confirm.inserted) EventHandler.on(el, 'hide.bs.popover', confirm.hide) - if (config.dismiss != null) { - confirm.dismissHandler = e => { - const ele = e.target.closest(config.popoverSelector) - if (ele) { - const element = getDescribedOwner(ele) - if (element) { - const popover = bootstrap.Popover.getInstance(element); - if (popover) { - popover.hide() - } - } - } - } - EventHandler.on(document, 'click', config.dismiss, confirm.dismissHandler) - } - confirm.checkCancel = el => { // check button let self = el === confirm.el || el.closest('.dropdown-toggle') === confirm.el @@ -170,9 +153,6 @@ export function dispose(id) { if (confirm.popover) { confirm.popover.dispose(); } - if (config.dismiss) { - EventHandler.off(document, 'click', config.dismiss, confirm.dismissHandler) - } } } From 759403a38d86008736d8f9015fc98b36c0d28c61 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 26 Feb 2025 21:00:59 +0800 Subject: [PATCH 03/10] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E5=9B=BE?= =?UTF-8?q?=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Icons/BootstrapIcons.cs | 4 +++- src/BootstrapBlazor/Icons/FontAwesomeIcons.cs | 2 ++ src/BootstrapBlazor/Icons/MaterialDesignIcons.cs | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) 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" }, From d2d7145db05654acdd22a62e7612f0d7e71a6077 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 26 Feb 2025 21:01:23 +0800 Subject: [PATCH 04/10] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E5=86=85=E6=8C=89=E9=92=AE=E5=9B=BE=E6=A0=87=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Button/PopConfirmButtonContent.razor | 10 ++++++---- .../Button/PopConfirmButtonContent.razor.cs | 15 ++++++++++++++- src/BootstrapBlazor/Enums/ComponentIcons.cs | 10 ++++++++++ 3 files changed, 30 insertions(+), 5 deletions(-) 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 图标 /// From 3f6ea913f500dd6401ff2240cb8a76b9277b224b Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 26 Feb 2025 21:29:11 +0800 Subject: [PATCH 05/10] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E5=9B=BE=E6=A0=87=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Button/PopConfirmButton.razor | 4 ++-- .../Components/Button/PopConfirmButtonBase.cs | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) 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; } + /// /// 获得/设置 确认框图标 /// From a2b144e69ecb04bfe808563686d44bd1cef9f72c Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 26 Feb 2025 21:29:17 +0800 Subject: [PATCH 06/10] =?UTF-8?q?test:=20=E5=A2=9E=E5=8A=A0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/PopConfirmButtonTest.cs | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) 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] From cf6489b2cab26eb093a9480fb348ff67bfe41260 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Feb 2025 08:39:06 +0800 Subject: [PATCH 07/10] =?UTF-8?q?test:=20=E6=9B=B4=E6=96=B0=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/TableTest.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index f8d2fbd2fec..dc6473951b6 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -5544,7 +5544,7 @@ public async Task OnAfterCancelSaveAsync_EditForm() } [Fact] - public async Task OnAfterCancelSaveAsync_InCell() + public async Task OnAfterCancelSaveAsync_EditForm() { var localizer = Context.Services.GetRequiredService>(); var items = Foo.GenerateFoo(localizer, 2); @@ -5579,8 +5579,8 @@ public async Task OnAfterCancelSaveAsync_InCell() await cut.InvokeAsync(() => button[0].Click()); // 取消按钮 - button = cut.FindAll("tbody tr button"); - await cut.InvokeAsync(() => button[1].Click()); + button = cut.FindAll("tbody tr.is-editform button"); + await cut.InvokeAsync(() => button[0].Click()); Assert.True(afterCancelSave); } From b95832d78708b952b3f22826f0b7719ae1d840ea Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Feb 2025 08:40:29 +0800 Subject: [PATCH 08/10] chore: bump version 9.4.0 --- src/BootstrapBlazor/BootstrapBlazor.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 3b35884692d..82b87202a9e 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 9.3.1-beta39 + 9.3.1 From 96a5a36726254593825a6bb476fca2b103d76fb4 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Feb 2025 08:40:44 +0800 Subject: [PATCH 09/10] chore: bump version 9.4.0 --- src/BootstrapBlazor/BootstrapBlazor.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 82b87202a9e..f1b8fa707cb 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 9.3.1 + 9.4.0 From e412d91ff8b1360360f2a8c13b5ec416983fb291 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Thu, 27 Feb 2025 08:45:25 +0800 Subject: [PATCH 10/10] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E5=86=97?= =?UTF-8?q?=E4=BD=99=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/UnitTest/Components/TableTest.cs | 41 --------------------------- 1 file changed, 41 deletions(-) diff --git a/test/UnitTest/Components/TableTest.cs b/test/UnitTest/Components/TableTest.cs index dc6473951b6..b20df021baa 100644 --- a/test/UnitTest/Components/TableTest.cs +++ b/test/UnitTest/Components/TableTest.cs @@ -5502,47 +5502,6 @@ public async Task OnSaveAsync_Ok() Assert.True(afterModify); } - [Fact] - public async Task OnAfterCancelSaveAsync_EditForm() - { - 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"); - 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_EditForm() {