Skip to content

Commit 41a0230

Browse files
authored
refactor(AutoComplete): support Items update (#5055)
* test: 更新单元测试 * feat: 增加 Row 参数 * chore: bump version 9.2.6
1 parent 2fa34aa commit 41a0230

File tree

4 files changed

+23
-10
lines changed

4 files changed

+23
-10
lines changed

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.2.5</Version>
4+
<Version>9.2.6</Version>
55
</PropertyGroup>
66

77
<ItemGroup>

src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<span class="form-select-append"><i class="@Icon"></i></span>
1818
<span class="form-select-append ac-loading"><i class="@LoadingIcon"></i></span>
1919
<ul class="dropdown-menu">
20-
@foreach (var item in FilterItems)
20+
@foreach (var item in Rows)
2121
{
2222
<li @key="item" class="dropdown-item" @onclick="() => OnClickItem(item)">
2323
@if (ItemTemplate == null)
@@ -30,7 +30,7 @@
3030
}
3131
</li>
3232
}
33-
@if (ShowNoDataTip && FilterItems.Count == 0)
33+
@if (ShowNoDataTip && Rows.Count == 0)
3434
{
3535
<li class="dropdown-item">@NoDataTip</li>
3636
}

src/BootstrapBlazor/Components/AutoComplete/AutoComplete.razor.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ protected override void OnParametersSet()
115115
PlaceHolder ??= Localizer[nameof(PlaceHolder)];
116116
Icon ??= IconTheme.GetIconByKey(ComponentIcons.AutoCompleteIcon);
117117

118-
FilterItems ??= Items?.ToList() ?? [];
118+
Items ??= [];
119119
}
120120

121121
/// <summary>
@@ -130,6 +130,8 @@ private async Task OnClickItem(string val)
130130
}
131131
}
132132

133+
private List<string> Rows => FilterItems ?? Items.ToList();
134+
133135
/// <summary>
134136
/// TriggerOnChange 方法
135137
/// </summary>
@@ -142,14 +144,16 @@ public async Task TriggerOnChange(string val)
142144
var items = await OnCustomFilter(val);
143145
FilterItems = items.ToList();
144146
}
147+
else if (string.IsNullOrEmpty(val))
148+
{
149+
FilterItems = Items.ToList();
150+
}
145151
else
146152
{
147153
var comparison = IgnoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal;
148-
var items = string.IsNullOrEmpty(val)
149-
? Items
150-
: IsLikeMatch
151-
? Items.Where(s => s.Contains(val, comparison))
152-
: Items.Where(s => s.StartsWith(val, comparison));
154+
var items = IsLikeMatch
155+
? Items.Where(s => s.Contains(val, comparison))
156+
: Items.Where(s => s.StartsWith(val, comparison));
153157
FilterItems = items.ToList();
154158
}
155159

test/UnitTest/Components/AutoCompleteTest.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,16 @@ public async Task IsLikeMatch_Test()
7777
{
7878
pb.Add(a => a.IsLikeMatch, true);
7979
});
80-
menus = cut.FindAll(".dropdown-item");
8180
await cut.InvokeAsync(() => cut.Instance.TriggerOnChange("as"));
81+
menus = cut.FindAll(".dropdown-item");
82+
Assert.Equal(2, menus.Count);
83+
84+
await cut.InvokeAsync(() => cut.Instance.TriggerOnChange("k1"));
85+
menus = cut.FindAll(".dropdown-item");
86+
Assert.Single(menus);
87+
88+
await cut.InvokeAsync(() => cut.Instance.TriggerOnChange(""));
89+
menus = cut.FindAll(".dropdown-item");
8290
Assert.Equal(2, menus.Count);
8391
}
8492

@@ -102,6 +110,7 @@ public async Task IgnoreCase_Ok()
102110
{
103111
pb.Add(a => a.IgnoreCase, true);
104112
});
113+
await cut.InvokeAsync(() => cut.Instance.TriggerOnChange("t"));
105114
menus = cut.FindAll(".dropdown-item");
106115
Assert.Equal(2, menus.Count);
107116
}

0 commit comments

Comments
 (0)