Skip to content

Commit 0d9f89f

Browse files
ArgoZhangzpmzuus
andauthored
feat(Search): redesign OnClear parameter (#5929)
* refactor: 移除 RenderTemplate 提高性能 * refactor: 重构清空逻辑 * doc: 更新示例 * test: 更新单元测试 * chore: bump version 9.5.13 * chore: bump version 6.0 Co-Authored-By: zpmzuus <[email protected]> --------- Co-authored-by: zpmzuus <[email protected]>
1 parent 39d89de commit 0d9f89f

File tree

7 files changed

+28
-37
lines changed

7 files changed

+28
-37
lines changed

src/BootstrapBlazor.Server/Components/Pages/Coms.razor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public sealed partial class Coms
2020
return Task.FromResult<IEnumerable<string?>>(ComponentItems.Where(i => i.Contains(searchText, StringComparison.OrdinalIgnoreCase)).ToList());
2121
}
2222

23-
private Task OnClear(string searchText)
23+
private Task OnClear()
2424
{
2525
SearchText = "";
2626
StateHasChanged();

src/BootstrapBlazor.Server/Components/Samples/Searches.razor

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
Name="DisplayButton">
2424
<Search PlaceHolder="@Localizer["SearchesPlaceHolder"]"
2525
ShowClearButton="true"
26-
OnSearch="@OnDisplaySearch"
27-
OnClear="@OnClear"></Search>
26+
OnSearch="@OnDisplaySearch"></Search>
2827
<ConsoleLogger @ref="DisplayLogger"></ConsoleLogger>
2928
</DemoBlock>
3029

src/BootstrapBlazor.Server/Components/Samples/Searches.razor.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,6 @@ private Task<IEnumerable<string>> OnDisplaySearch(string searchText)
4040
return Task.FromResult<IEnumerable<string>>([$"{searchText}1", $"{searchText}12", $"{searchText}123"]);
4141
}
4242

43-
private Task<IEnumerable<string>> OnClear(string searchText)
44-
{
45-
DisplayLogger.Log($"OnClear: {searchText}");
46-
return Task.FromResult<IEnumerable<string>>([$"{searchText}1", $"{searchText}12", $"{searchText}123"]);
47-
}
48-
4943
[NotNull]
5044
private ConsoleLogger? KeyboardLogger { get; set; }
5145

src/BootstrapBlazor/BootstrapBlazor.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
4-
<Version>9.5.13-beta01</Version>
4+
<Version>9.6.0</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/EditorForm/EditorForm.razor

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,32 @@
33
@inherits BootstrapComponentBase
44

55
<div class="@ClassString">
6-
<CascadingValue Value="@_editorItems" IsFixed="true">
6+
<CascadingValue Value="@_editorItems" IsFixed="false">
77
@FieldItems?.Invoke(Model)
88
</CascadingValue>
99
<CascadingValue Value="this" Name="EditorForm">
10-
<RenderTemplate>
11-
@if (ShowUnsetGroupItemsOnTop)
10+
@if (ShowUnsetGroupItemsOnTop)
11+
{
12+
if (UnsetGroupItems.Any())
1213
{
13-
if (UnsetGroupItems.Any())
14-
{
15-
@RenderUnsetGroupItems
16-
}
17-
@foreach (var g in GroupItems)
18-
{
19-
@RenderGroupItems(g)
20-
}
14+
@RenderUnsetGroupItems
2115
}
22-
else
16+
@foreach (var g in GroupItems)
2317
{
24-
@foreach (var g in GroupItems)
25-
{
26-
@RenderGroupItems(g)
27-
}
28-
if (UnsetGroupItems.Any())
29-
{
30-
@RenderUnsetGroupItems
31-
}
18+
@RenderGroupItems(g)
19+
}
20+
}
21+
else
22+
{
23+
@foreach (var g in GroupItems)
24+
{
25+
@RenderGroupItems(g)
26+
}
27+
if (UnsetGroupItems.Any())
28+
{
29+
@RenderUnsetGroupItems
3230
}
33-
</RenderTemplate>
31+
}
3432
</CascadingValue>
3533

3634
@if (Buttons != null)

src/BootstrapBlazor/Components/Search/Search.razor.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public partial class Search<TValue>
146146
/// Gets or sets the event callback when the clear button is clicked. Default is null.
147147
/// </summary>
148148
[Parameter]
149-
public Func<string?, Task>? OnClear { get; set; }
149+
public Func<Task>? OnClear { get; set; }
150150

151151
[Inject]
152152
[NotNull]
@@ -221,18 +221,17 @@ private async Task OnSearchClick()
221221
{
222222
await InvokeVoidAsync("showList", Id);
223223
}
224-
StateHasChanged();
225224
}
226225
}
227226

228227
private async Task OnClearClick()
229228
{
229+
_displayText = "";
230230
if (OnClear != null)
231231
{
232-
await OnClear(_displayText);
232+
await OnClear();
233233
}
234-
_displayText = "";
235-
_filterItems = [];
234+
await OnSearchClick();
236235
}
237236

238237
private string? GetDisplayText(TValue item)
@@ -272,6 +271,7 @@ public async Task TriggerFilter(string val)
272271
if (IsTriggerSearchByInput)
273272
{
274273
await OnSearchClick();
274+
StateHasChanged();
275275
}
276276
_dropdown.Render();
277277
}

test/UnitTest/Components/SearchTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public async Task OnClearClick_Ok()
138138
builder.Add(s => s.ClearButtonColor, Color.Secondary);
139139
builder.Add(s => s.ClearButtonIcon, "test-icon");
140140
builder.Add(s => s.ClearButtonText, "Clear");
141-
builder.Add(s => s.OnClear, v =>
141+
builder.Add(s => s.OnClear, () =>
142142
{
143143
ret = true;
144144
return Task.CompletedTask;

0 commit comments

Comments
 (0)