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)
- + 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'); }); } 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() {