From b77f18c062102dc0c3eee9dde2e98b0c517e5713 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 16 Apr 2025 17:34:51 -0700 Subject: [PATCH 1/8] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E9=98=B2?= =?UTF-8?q?=E6=8A=96=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoComplete/AutoComplete.razor.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js index 7765437916d..33efe4cd3ce 100644 --- a/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js +++ b/src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.js @@ -62,14 +62,23 @@ export function init(id, invoke) { } }); - Input.composition(input, async v => { + let filterDuration = duration; + if (filterDuration === 0) { + filterDuration = 200; + } + const filterCallback = debounce(async v => { + await invoke.invokeMethodAsync('TriggerFilter', v); + el.classList.remove('is-loading'); + }, filterDuration); + + Input.composition(input, v => { if (isPopover === false) { ac.show(); } el.classList.add('is-loading'); - await invoke.invokeMethodAsync('TriggerFilter', v); - el.classList.remove('is-loading'); + filterCallback(v); + }); ac.show = () => { From d6a937a53fc3c1e82bf1c27a4cc3414edeb71354 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 16 Apr 2025 17:35:28 -0700 Subject: [PATCH 2/8] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E5=8F=8C?= =?UTF-8?q?=E7=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoFill/AutoFill.razor | 2 +- .../Components/AutoFill/AutoFill.razor.cs | 18 +++--------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor index 43dd1bdd884..741eab04d82 100644 --- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor +++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor @@ -14,7 +14,7 @@ data-bb-auto-dropdown-focus="@ShowDropdownListOnFocusString" data-bb-debounce="@DurationString" data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString" data-bb-scroll-behavior="@ScrollIntoViewBehaviorString" - value="@_displayText" + @bind="@_displayText" placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement" /> diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs index 53946284b77..e3d4f8fdb97 100644 --- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs +++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor.cs @@ -276,10 +276,10 @@ public override async Task TriggerFilter(string val) } else { - var comparision = IgnoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; + var comparison = IgnoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal; var items = IsLikeMatch - ? Items.Where(i => OnGetDisplayText?.Invoke(i)?.Contains(val, comparision) ?? false) - : Items.Where(i => OnGetDisplayText?.Invoke(i)?.StartsWith(val, comparision) ?? false); + ? Items.Where(i => OnGetDisplayText?.Invoke(i)?.Contains(val, comparison) ?? false) + : Items.Where(i => OnGetDisplayText?.Invoke(i)?.StartsWith(val, comparison) ?? false); _filterItems = [.. items]; } @@ -289,16 +289,4 @@ public override async Task TriggerFilter(string val) } StateHasChanged(); } - - /// - /// Triggers the change method. - /// - /// The value to change to. - [JSInvokable] - public Task TriggerChange(string val) - { - _displayText = val; - StateHasChanged(); - return Task.CompletedTask; - } } From db2311d2933a58be80add17e2580329968a274a1 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 16 Apr 2025 17:35:43 -0700 Subject: [PATCH 3/8] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E5=8F=8C?= =?UTF-8?q?=E7=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/Components/Search/Search.razor | 2 +- src/BootstrapBlazor/Components/Search/Search.razor.cs | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/BootstrapBlazor/Components/Search/Search.razor b/src/BootstrapBlazor/Components/Search/Search.razor index 086849624a2..14a33fd7393 100644 --- a/src/BootstrapBlazor/Components/Search/Search.razor +++ b/src/BootstrapBlazor/Components/Search/Search.razor @@ -29,7 +29,7 @@ data-bb-skip-esc="@SkipEscString" data-bb-skip-enter="@SkipEnterString" data-bb-blur="@TriggerBlurString" data-bb-scroll-behavior="@ScrollIntoViewBehaviorString" data-bb-input="@UseInputString" - value="@_displayText" + @bind="@_displayText" placeholder="@PlaceHolder" disabled="@Disabled" @ref="FocusElement" /> @if (IsClearable) { diff --git a/src/BootstrapBlazor/Components/Search/Search.razor.cs b/src/BootstrapBlazor/Components/Search/Search.razor.cs index a90b71f9fdd..c76500e6694 100644 --- a/src/BootstrapBlazor/Components/Search/Search.razor.cs +++ b/src/BootstrapBlazor/Components/Search/Search.razor.cs @@ -282,14 +282,7 @@ private async Task OnClickItem(TValue val) /// /// [JSInvokable] - public override Task TriggerFilter(string val) => TriggerChange(val); - - /// - /// TriggerOnChange 方法 - /// - /// - [JSInvokable] - public async Task TriggerChange(string val) + public override async Task TriggerFilter(string val) { _render = false; _displayText = val; From 17eba8b718767acfae60c8ef4ec5738177bf1290 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 16 Apr 2025 17:36:26 -0700 Subject: [PATCH 4/8] =?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/AutoFillTest.cs | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/test/UnitTest/Components/AutoFillTest.cs b/test/UnitTest/Components/AutoFillTest.cs index 6cb6533a02d..853e43e1c65 100644 --- a/test/UnitTest/Components/AutoFillTest.cs +++ b/test/UnitTest/Components/AutoFillTest.cs @@ -164,7 +164,7 @@ public async Task OnSelectedItemChanged_Ok() } [Fact] - public async Task OnGetDisplayText_Ok() + public void OnGetDisplayText_Ok() { var cut = Context.RenderComponent>(pb => { @@ -174,18 +174,6 @@ public async Task OnGetDisplayText_Ok() }); var input = cut.Find("input"); Assert.Equal("张三 1000", input.Attributes["value"]?.Value); - - cut.SetParametersAndRender(pb => - { - pb.Add(a => a.OnGetDisplayText, null!); - }); - await cut.InvokeAsync(() => cut.Instance.TriggerChange("t")); - - cut.SetParametersAndRender(pb => - { - pb.Add(a => a.IsLikeMatch, true); - }); - await cut.InvokeAsync(() => cut.Instance.TriggerChange("t")); } [Fact] From 5a1db269adf93e45c8cec0433945a5efc779cd68 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 16 Apr 2025 18:24:27 -0700 Subject: [PATCH 5/8] =?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/SearchTest.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/UnitTest/Components/SearchTest.cs b/test/UnitTest/Components/SearchTest.cs index 5d93475bc53..c8f17a00acc 100644 --- a/test/UnitTest/Components/SearchTest.cs +++ b/test/UnitTest/Components/SearchTest.cs @@ -53,10 +53,7 @@ public async Task OnGetDisplayText_Ok() }); pb.Add(a => a.OnGetDisplayText, foo => foo?.Name); }); - - await cut.InvokeAsync(() => cut.Instance.TriggerChange("t")); - await Task.Delay(20); - + await cut.InvokeAsync(() => cut.Instance.TriggerFilter("t")); Assert.Contains("test1", cut.Markup); Assert.Contains("test2", cut.Markup); } @@ -143,7 +140,9 @@ public async Task OnSelectedItemChanged_Ok() return items; }); }); - await cut.InvokeAsync(() => cut.Instance.TriggerChange("t")); + + await cut.InvokeAsync(() => cut.Instance.TriggerFilter("t")); + await Task.Delay(20); var item = cut.Find(".dropdown-item"); await cut.InvokeAsync(() => item.Click()); From bfa453f76f0d60ee07b872a6a374378d1693009a Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 16 Apr 2025 18:29:20 -0700 Subject: [PATCH 6/8] chore: bump version 9.5.7-beta01 --- 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 638733349aa..279bf2ebbf3 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.5.6 + 9.5.7-beta01 From cdbf7786271c6c45ba7f82a001907800545e04e7 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 16 Apr 2025 18:38:16 -0700 Subject: [PATCH 7/8] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=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/Search/Search.razor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BootstrapBlazor/Components/Search/Search.razor.cs b/src/BootstrapBlazor/Components/Search/Search.razor.cs index c76500e6694..fdda496eb9b 100644 --- a/src/BootstrapBlazor/Components/Search/Search.razor.cs +++ b/src/BootstrapBlazor/Components/Search/Search.razor.cs @@ -172,7 +172,7 @@ public partial class Search private SearchContext _context = default!; [NotNull] - private RenderTemplate? _dropdown = default; + private RenderTemplate? _dropdown = null; /// /// From d6413b989773df4fb76fc892f71c669330703237 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 16 Apr 2025 18:39:00 -0700 Subject: [PATCH 8/8] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=96=B0=E5=B1=80?= =?UTF-8?q?=E9=83=A8=E5=88=B7=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/AutoFill/AutoFill.razor | 13 +++++++++---- .../Components/AutoFill/AutoFill.razor.cs | 19 ++++++------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor index 741eab04d82..eb6c2ee22eb 100644 --- a/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor +++ b/src/BootstrapBlazor/Components/AutoFill/AutoFill.razor @@ -22,7 +22,14 @@ { } - + +@code { + RenderFragment RenderDropdown => + @ - + ; -@code { RenderFragment RenderRow => item => @