From b924844c0e3d3cd2227e4142910bd95bd0f7691f Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Fri, 11 Apr 2025 14:51:52 +0800 Subject: [PATCH 1/6] =?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 --- src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor | 2 +- .../Components/AutoComplete/AutoComplete.razor.cs | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor index 7cb4d6f865f..fdffce00ad6 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor @@ -5,7 +5,7 @@ { } -
+
public partial class AutoComplete { - /// - /// Gets the component style - /// private string? ClassString => CssBuilder.Default("auto-complete") .Build(); From 17116b3f56baf4265e0c016108d032e05636fc81 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 12 Apr 2025 09:56:06 +0800 Subject: [PATCH 2/6] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E4=B8=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoComplete/AutoComplete.razor.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs index b79a9939a54..07834e2ca7e 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs @@ -12,9 +12,6 @@ namespace BootstrapBlazor.Components; /// public partial class AutoComplete { - private string? ClassString => CssBuilder.Default("auto-complete") - .Build(); - /// /// Gets or sets the collection of matching data obtained by inputting a string /// From b691f77ffacc966400bdc71f6dca226ca536e114 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 12 Apr 2025 11:17:03 +0800 Subject: [PATCH 3/6] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoComplete/AutoComplete.razor.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs index 07834e2ca7e..cc284e8ef5f 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs @@ -173,6 +173,7 @@ public override async Task TriggerFilter(string val) [JSInvokable] public override Task TriggerChange(string val) { + // client input does not need to be re-rendered to prevent jitter when the network is congested _render = false; CurrentValue = val; if (!ValueChanged.HasDelegate) From 0c7a5ddbe2fa99674487bcb7cafcff987561254f Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 12 Apr 2025 20:41:43 +0800 Subject: [PATCH 4/6] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=20DeleteCall?= =?UTF-8?q?back=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoComplete/AutoComplete.razor.cs | 15 +++++++++++++-- .../Components/AutoComplete/AutoComplete.razor.js | 5 +++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs index cc284e8ef5f..1a6720bc03c 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs @@ -175,13 +175,24 @@ public override Task TriggerChange(string val) { // client input does not need to be re-rendered to prevent jitter when the network is congested _render = false; + CurrentValue = val; + _render = true; + _dropdown.Render(); + return Task.CompletedTask; + } + + /// + /// TriggerChange method + /// + /// + [JSInvokable] + public Task DeleteCallback(string val) + { CurrentValue = val; if (!ValueChanged.HasDelegate) { StateHasChanged(); } - _render = true; - _dropdown.Render(); return Task.CompletedTask; } } diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js index 1300fdd8b0d..b0d92c6470b 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js @@ -157,6 +157,11 @@ const handlerKeyup = (ac, e) => { current.classList.add('active'); scrollIntoView(el, current); } + else if (key === 'Backspace' || key === 'Delete') { + if (el.className === 'auto-complete') { + invoke.invokeMethodAsync('DeleteCallback', input.value); + } + } } export function showList(id) { From 8130a8df5b8f5c32664aea762c75afaf4452a3dd Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 12 Apr 2025 20:48:57 +0800 Subject: [PATCH 5/6] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=94=B9=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoComplete/AutoComplete.razor | 2 +- .../Components/AutoComplete/AutoComplete.razor.cs | 2 +- .../Components/AutoComplete/AutoComplete.razor.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor index fdffce00ad6..bbea8d05ecf 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor @@ -11,7 +11,7 @@ data-bs-offset="@OffsetString" data-bs-custom-class="@CustomClassString" data-bb-auto-dropdown-focus="@ShowDropdownListOnFocusString" data-bb-debounce="@DurationString" data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString" data-bb-blur="@TriggerBlurString" - data-bb-scroll-behavior="@ScrollIntoViewBehaviorString" + data-bb-scroll-behavior="@ScrollIntoViewBehaviorString" data-bb-trigger-delete="true" value="@CurrentValueAsString" placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement"/> diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs index 1a6720bc03c..e8f836b7d0b 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs @@ -186,7 +186,7 @@ public override Task TriggerChange(string val) /// /// [JSInvokable] - public Task DeleteCallback(string val) + public Task TriggerDeleteCallback(string val) { CurrentValue = val; if (!ValueChanged.HasDelegate) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js index b0d92c6470b..a917c780048 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js @@ -158,8 +158,8 @@ const handlerKeyup = (ac, e) => { scrollIntoView(el, current); } else if (key === 'Backspace' || key === 'Delete') { - if (el.className === 'auto-complete') { - invoke.invokeMethodAsync('DeleteCallback', input.value); + if (input.getAttribute('data-bb-trigger-delete') === 'true') { + invoke.invokeMethodAsync('TriggerDeleteCallback', input.value); } } } From c0f09e032f1155a27714b51a784417f7157d3ac4 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Sat, 12 Apr 2025 20:56:55 +0800 Subject: [PATCH 6/6] =?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/AutoCompleteTest.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/test/UnitTest/Components/AutoCompleteTest.cs b/test/UnitTest/Components/AutoCompleteTest.cs index 37e7f7089e3..821b5f79eb5 100644 --- a/test/UnitTest/Components/AutoCompleteTest.cs +++ b/test/UnitTest/Components/AutoCompleteTest.cs @@ -3,14 +3,12 @@ // See the LICENSE file in the project root for more information. // Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone -using Microsoft.AspNetCore.Components.Web; - namespace UnitTest.Components; public class AutoCompleteTest : BootstrapBlazorTestBase { [Fact] - public void Items_Ok() + public async Task Items_Ok() { var cut = Context.RenderComponent(pb => { @@ -18,6 +16,8 @@ public void Items_Ok() pb.Add(a => a.IsSelectAllTextOnEnter, true); }); Assert.Contains("
cut.Instance.TriggerDeleteCallback("Test")); + Assert.Equal("Test", cut.Instance.Value); } [Fact]