From 4a7761d538b3d0064071316430bd4cd7e4abbc69 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 18 Oct 2025 10:14:42 +0800 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=20Clear=20?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E7=94=A8=E4=BA=8E=E8=A7=A6=E5=8F=91=E5=8F=8C?= =?UTF-8?q?=E5=90=91=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoComplete/AutoComplete.razor.cs | 17 ++++++++++++++--- .../AutoComplete/AutoComplete.razor.js | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs index f4586ac4907..82d3f6f2cfd 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs @@ -192,6 +192,19 @@ private async Task OnClickItem(string val) private List Rows => _filterItems ?? [.. Items]; + /// + /// 点击清空按钮时调用此方法 由 Javascript 触发 + /// + /// + [JSInvokable] + public async Task TriggerClear() + { + await TriggerFilter(""); + + _clientValue = null; + CurrentValueAsString = string.Empty; + } + /// /// TriggerFilter method /// @@ -228,12 +241,10 @@ public async Task TriggerFilter(string val) /// /// [JSInvokable] - public Task TriggerChange(string v) + public void TriggerChange(string v) { _clientValue = v; CurrentValueAsString = v; - - return Task.CompletedTask; } private List GetFilterItemsByValue(string val) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js index e222fbcd3a6..ce9c7e8bd61 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js @@ -143,7 +143,7 @@ export function init(id, invoke, value, changedEventCallback) { EventHandler.on(el, 'click', '.clear-icon', e => { input.value = ''; - invoke.invokeMethodAsync('TriggerFilter', ''); + invoke.invokeMethodAsync('TriggerClear'); }); } From 9bbededb78c8748dc1b539292e8cdb24972bf47c Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 18 Oct 2025 10:14:49 +0800 Subject: [PATCH 2/3] =?UTF-8?q?doc:=20=E6=9B=B4=E6=96=B0=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Samples/AutoCompletes.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor.Server/Components/Samples/AutoCompletes.razor b/src/BootstrapBlazor.Server/Components/Samples/AutoCompletes.razor index 4e42c5a9605..37f11ceba7f 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/AutoCompletes.razor +++ b/src/BootstrapBlazor.Server/Components/Samples/AutoCompletes.razor @@ -37,7 +37,7 @@
@((MarkupString)Localizer["ShowLabelDescription"].Value)
- + From fe7ef2926f73f4ec36d2bf12ddb04b96e35c107f Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 18 Oct 2025 10:21:30 +0800 Subject: [PATCH 3/3] =?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 --- test/UnitTest/Components/AutoCompleteTest.cs | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/UnitTest/Components/AutoCompleteTest.cs b/test/UnitTest/Components/AutoCompleteTest.cs index d21ebce790d..e2971345e30 100644 --- a/test/UnitTest/Components/AutoCompleteTest.cs +++ b/test/UnitTest/Components/AutoCompleteTest.cs @@ -196,6 +196,27 @@ public async Task IgnoreCase_Ok() Assert.Equal(2, menus.Count); } + [Fact] + public async Task TriggerClear_Ok() + { + var val = "task1"; + var items = new List() { "task1", "Task2" }; + var cut = Context.RenderComponent(builder => + { + builder.Add(a => a.Items, items); + builder.Add(a => a.IgnoreCase, false); + builder.Add(a => a.Value, val); + builder.Add(a => a.IsClearable, true); + builder.Add(a => a.ValueChanged, EventCallback.Factory.Create(this, v => + { + val = v; + })); + }); + + await cut.InvokeAsync(cut.Instance.TriggerClear); + Assert.Empty(val); + } + [Fact] public async Task DisplayCount_Ok() {