Skip to content

Commit fd4b70f

Browse files
authored
feat(SelectCity): support polyphonetic characters (#626)
* refactor: 精简代码 * refactor: 移除默认大写样式 * feat: 支持多音字 * refactor: 移除 Pinyin 服务注入 * chore: 更新版本号 * refactor: 移除 BootstrapBlazor.OCR 项目 * chore: 更新项目依赖配置
1 parent 1610882 commit fd4b70f

8 files changed

Lines changed: 25 additions & 17 deletions

File tree

BootstrapBlazor.Extensions.slnx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
<Project Path="src/components/BootstrapBlazor.Mermaid/BootstrapBlazor.Mermaid.csproj" />
5151
<Project Path="src/components/BootstrapBlazor.MindMap/BootstrapBlazor.MindMap.csproj" />
5252
<Project Path="src/components/BootstrapBlazor.MouseFollower/BootstrapBlazor.MouseFollower.csproj" />
53-
<Project Path="src/components/BootstrapBlazor.OCR/BootstrapBlazor.OCR.csproj" />
5453
<Project Path="src/components/BootstrapBlazor.OctIcon/BootstrapBlazor.OctIcon.csproj" />
5554
<Project Path="src/components/BootstrapBlazor.OfdReader/BootstrapBlazor.OfdReader.csproj" />
5655
<Project Path="src/components/BootstrapBlazor.OfficeViewer/BootstrapBlazor.OfficeViewer.csproj" />

src/Frameworks.props

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<Project>
22

3-
<PropertyGroup>
3+
<PropertyGroup Condition="'$(VisualStudioVersion)' == '17.0'">
4+
<TargetFrameworks>net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
5+
</PropertyGroup>
6+
7+
<PropertyGroup Condition="'$(VisualStudioVersion)' == '18.0'">
48
<TargetFrameworks>net6.0;net7.0;net8.0;net9.0;net10.0</TargetFrameworks>
59
</PropertyGroup>
610

src/components/BootstrapBlazor.Region/BootstrapBlazor.Region.csproj

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

3-
<PropertyGroup>
4-
<Version>9.0.7</Version>
3+
<PropertyGroup Condition="'$(VisualStudioVersion)' == '17.0'">
4+
<Version>9.0.8-beta01</Version>
5+
</PropertyGroup>
6+
7+
<PropertyGroup Condition="'$(VisualStudioVersion)' == '18.0'">
8+
<Version>10.0.0-rc.2.1.0</Version>
59
</PropertyGroup>
610

711
<PropertyGroup>
@@ -17,9 +21,12 @@
1721
<EmbeddedResource Include="Data\**\*.json" />
1822
</ItemGroup>
1923

20-
<ItemGroup>
21-
<PackageReference Include="BootstrapBlazor" Version="9.11.0" />
22-
<PackageReference Include="BootstrapBlazor.Pinyin" Version="9.0.0" />
24+
<ItemGroup Condition="'$(VisualStudioVersion)' == '17.0'">
25+
<PackageReference Include="BootstrapBlazor" Version="9.11.5-beta01" />
26+
</ItemGroup>
27+
28+
<ItemGroup Condition="'$(VisualStudioVersion)' == '18.0'">
29+
<PackageReference Include="BootstrapBlazor" Version="10.0.0-rc.2.1.0" />
2330
</ItemGroup>
2431

2532
<ItemGroup>

src/components/BootstrapBlazor.Region/Components/SelectCity.razor.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public partial class SelectCity
5959
private string? GetActiveClass(string item) => CssBuilder.Default()
6060
.AddClass("active", _values.Contains(item) && IsMultiple)
6161
.AddClass("active", CurrentValue == item && !IsMultiple)
62-
.AddClass("prev", !string.IsNullOrEmpty(_searchText) && PinyinService.GetFirstLetters(item).StartsWith(_searchText))
62+
.AddClass("prev", !string.IsNullOrEmpty(_searchText) && StartsWith(PinyinService.GetFirstLetters(item), _searchText))
6363
.Build();
6464

6565
/// <summary>
@@ -168,7 +168,7 @@ private HashSet<string> GetProvinces()
168168
return Provinces;
169169
}
170170

171-
if (PinyinService.IsChinese(_searchText))
171+
if (PinyinService.ContainsChinese(_searchText))
172172
{
173173
return [.. Provinces.Where(i => i.Contains(_searchText) || GetCities(i).Any(city => city.Contains(_searchText)))];
174174
}
@@ -177,7 +177,10 @@ private HashSet<string> GetProvinces()
177177
}
178178

179179
[MethodImpl(MethodImplOptions.AggressiveInlining)]
180-
private static bool FilterProvince(ProvinceItem item, string searchText) => item.PinYin.StartsWith(searchText) || item.Cities.Any(city => city.PinYin.StartsWith(searchText));
180+
private static bool FilterProvince(ProvinceItem item, string searchText) => StartsWith(item.PinYin, searchText) || item.Cities.Any(city => StartsWith(city.PinYin, searchText));
181+
182+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
183+
private static bool StartsWith(HashSet<string> source, string searchText) => source.Any(i => i.StartsWith(searchText, StringComparison.OrdinalIgnoreCase));
181184

182185
private static HashSet<ProvinceItem>? _provinceItems;
183186

src/components/BootstrapBlazor.Region/Components/SelectCity.razor.css

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,6 @@
8686
display: none;
8787
}
8888

89-
.dropdown-menu-search .search-text {
90-
text-transform: uppercase;
91-
}
92-
9389
.dropdown-menu-search-body {
9490
flex: 1;
9591
height: 1%;

src/components/BootstrapBlazor.Region/Data/CityItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ readonly record struct CityItem
88
{
99
public string Name { get; init; }
1010

11-
public string PinYin { get; init; }
11+
public HashSet<string> PinYin { get; init; }
1212
}

src/components/BootstrapBlazor.Region/Data/ProvinceItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ readonly record struct ProvinceItem
88
{
99
public string Name { get; init; }
1010

11-
public string PinYin { get; init; }
11+
public HashSet<string> PinYin { get; init; }
1212

1313
public HashSet<CityItem> Cities { get; init; }
1414
}

src/components/BootstrapBlazor.Region/Extensions/ServiceCollectionExtension.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ public static class ServiceCollectionExtension
1919
public static IServiceCollection AddBootstrapBlazorRegionService(this IServiceCollection services)
2020
{
2121
services.AddSingleton<IRegionService, DefaultRegionService>();
22-
services.AddPinyinService();
2322

2423
return services;
2524
}

0 commit comments

Comments
 (0)