Skip to content

Commit 563ec59

Browse files
authored
feat(SelectRegion): add SelectRegion component (#6903)
* doc: 增加 Region 组件菜单 * doc: 增加源码映射 * doc: 增加示例 * refactor: 增加行政区域服务 * chore: 更正单词拼写错误 * chore: 方便调试 * refactor: 增加 popover-region 自定义样式 * refactor: 增加禁用测试 * doc: 增加多语言 * chore: 增加新功能标签 * doc: 更新测试工程 * chore: 移除项目依赖 * doc: 更新示例
1 parent a9981ed commit 563ec59

File tree

10 files changed

+64
-10
lines changed

10 files changed

+64
-10
lines changed

src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<PackageReference Include="BootstrapBlazor.PdfViewer" Version="9.0.6" />
6767
<PackageReference Include="BootstrapBlazor.Player" Version="9.0.2" />
6868
<PackageReference Include="BootstrapBlazor.RDKit" Version="9.0.2" />
69+
<PackageReference Include="BootstrapBlazor.Region" Version="9.0.0" />
6970
<PackageReference Include="BootstrapBlazor.SignaturePad" Version="9.0.1" />
7071
<PackageReference Include="BootstrapBlazor.SmilesDrawer" Version="9.0.2" />
7172
<PackageReference Include="BootstrapBlazor.Sortable" Version="9.0.3" />
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
@page "/region"
2+
@inject IStringLocalizer<Regions> Localizer
3+
4+
<h3>@Localizer["RegionTitle"]</h3>
5+
6+
<h4>@Localizer["RegionDescription"]</h4>
7+
8+
<PackageTips Name="BootstrapBlazor.Region" />
9+
10+
<DemoBlock Title="@Localizer["RegionNormalTitle"]"
11+
Introduction="@Localizer["RegionNormalIntro"]"
12+
Name="Normal">
13+
<SelectRegion Value="@_value"></SelectRegion>
14+
</DemoBlock>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the Apache 2.0 License
3+
// See the LICENSE file in the project root for more information.
4+
// Maintainer: Argo Zhang([email protected]) Website: https://www.blazor.zone
5+
6+
namespace BootstrapBlazor.Server.Components.Samples;
7+
8+
/// <summary>
9+
/// 行政区域选择器示例
10+
/// </summary>
11+
public partial class Regions
12+
{
13+
private string _value = "";
14+
}

src/BootstrapBlazor.Server/Extensions/MenusLocalizerExtensions.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,12 @@ void AddForm(DemoMenuItem item)
451451
Url = "floating-label"
452452
},
453453
new()
454+
{
455+
IsNew = true,
456+
Text = Localizer["Region"],
457+
Url = "region"
458+
},
459+
new()
454460
{
455461
Text = Localizer["ListGroup"],
456462
Url = "list-group"

src/BootstrapBlazor.Server/Extensions/ServiceCollectionSharedExtensions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ public static IServiceCollection AddBootstrapBlazorServices(this IServiceCollect
9494
// 增加 JuHe 定位服务
9595
services.AddBootstrapBlazorJuHeIpLocatorService();
9696

97+
// 增加 IRegionService
98+
services.AddBootstrapBlazorRegionService();
99+
97100
// 增加 PetaPoco ORM 数据服务操作类
98101
// 需要时打开下面代码
99102
//services.AddPetaPoco(option =>

src/BootstrapBlazor.Server/Locales/en-US.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4872,7 +4872,8 @@
48724872
"OpcDaService": "OpcDaServer",
48734873
"Navbar": "Navbar",
48744874
"TaskDashBoard": "TaskDashBoard",
4875-
"Dom2ImageService": "IDom2HtmlService"
4875+
"Dom2ImageService": "IDom2HtmlService",
4876+
"Region": "Region Selector"
48764877
},
48774878
"BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": {
48784879
"TablesHeaderTitle": "Header grouping function",
@@ -7220,5 +7221,11 @@
72207221
"Dom2ImageButtonText": "Convert",
72217222
"Dom2ImageDownloadText": "Download",
72227223
"Dom2ImageFullText": "Capture"
7224+
},
7225+
"BootstrapBlazor.Server.Components.Samples.Regions": {
7226+
"RegionTitle": "Region",
7227+
"RegionDescription": "A simple region cascade selector, provide 4 levels Chinese administrative division data",
7228+
"RegionNormalTitle": "Basic usage",
7229+
"RegionNormalIntro": "Use grouping to switch the selection mode for displaying administrative areas"
72237230
}
72247231
}

src/BootstrapBlazor.Server/Locales/zh-CN.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4872,7 +4872,8 @@
48724872
"OpcDaService": "OpcDaServer 服务",
48734873
"Navbar": "导航栏 Navbar",
48744874
"TaskDashBoard": "任务管理器 TaskDashBoard",
4875-
"Dom2ImageService": "节点转图片服务 IDom2HtmlService"
4875+
"Dom2ImageService": "节点转图片服务 IDom2HtmlService",
4876+
"Region": "行政区域选择器 Region"
48764877
},
48774878
"BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": {
48784879
"TablesHeaderTitle": "表头分组功能",
@@ -7220,5 +7221,11 @@
72207221
"Dom2ImageButtonText": "转换",
72217222
"Dom2ImageDownloadText": "下载",
72227223
"Dom2ImageFullText": "长截图"
7224+
},
7225+
"BootstrapBlazor.Server.Components.Samples.Regions": {
7226+
"RegionTitle": "Region 行政区域选择器",
7227+
"RegionDescription": "提供 4 级行政区划选择器",
7228+
"RegionNormalTitle": "基本用法",
7229+
"RegionNormalIntro": "使用分组切换显示行政区域的选择模式"
72237230
}
72247231
}

src/BootstrapBlazor.Server/docs.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,8 @@
255255
"navbar": "Navbars",
256256
"task-board": "TaskBoard",
257257
"modbus-factory": "Modbus\\ModbusFactories",
258-
"serial-port-factory": "SerialPorts\\SerialPortFactories"
258+
"serial-port-factory": "SerialPorts\\SerialPortFactories",
259+
"region": "Regions"
259260
},
260261
"video": {
261262
"table": "BV1ap4y1x7Qn?p=1",

src/BootstrapBlazor/Components/DateTimePicker/PopoverDropdownBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public abstract class PopoverDropdownBase<TValue> : ValidateBase<TValue>
3939
/// 获得 CustomClass 字符串
4040
/// </summary>
4141
protected virtual string? CustomClassString => CssBuilder.Default(CustomClass)
42+
.AddClass("popover-region")
4243
.AddClass("shadow", ShowShadow)
4344
.Build();
4445
}

src/BootstrapBlazor/Localization/Json/JsonStringLocalizer.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ public override LocalizedString this[string name]
107107
private string? GetStringFromJson(string name)
108108
{
109109
// get string from json localization file
110-
var localizerStrings = MegerResolveLocalizers(CacheManager.GetAllStringsByTypeName(Assembly, typeName));
110+
var localizerStrings = MergeResolveLocalizers(CacheManager.GetAllStringsByTypeName(Assembly, typeName));
111111
var cacheKey = $"name={name}&culture={CultureInfo.CurrentUICulture.Name}";
112112
string? ret = null;
113113
if (!_missingManifestCache.ContainsKey(cacheKey))
@@ -143,7 +143,7 @@ public override LocalizedString this[string name]
143143
if (baseType != type)
144144
{
145145
var baseAssembly = baseType.Assembly;
146-
var localizerStrings = MegerResolveLocalizers(CacheManager.GetAllStringsByTypeName(baseAssembly, baseType.FullName!));
146+
var localizerStrings = MergeResolveLocalizers(CacheManager.GetAllStringsByTypeName(baseAssembly, baseType.FullName!));
147147
var l = localizerStrings.Find(i => i.Name == name);
148148
if (l is { ResourceNotFound: false })
149149
{
@@ -154,7 +154,7 @@ public override LocalizedString this[string name]
154154
return ret;
155155
}
156156

157-
private List<LocalizedString> MegerResolveLocalizers(IEnumerable<LocalizedString>? localizerStrings)
157+
private List<LocalizedString> MergeResolveLocalizers(IEnumerable<LocalizedString>? localizerStrings)
158158
{
159159
var localizers = new List<LocalizedString>(CacheManager.GetTypeStringsFromResolve(typeName));
160160
if (localizerStrings != null)
@@ -174,7 +174,7 @@ private void HandleMissingResourceItem(string name)
174174
_missingManifestCache.TryAdd($"name={name}&culture={CultureInfo.CurrentUICulture.Name}", null);
175175
}
176176

177-
private List<LocalizedString>? _allLocalizerdStrings;
177+
private List<LocalizedString>? _allLocalizedStrings;
178178

179179
/// <summary>
180180
/// 获取当前语言的所有资源信息
@@ -183,15 +183,15 @@ private void HandleMissingResourceItem(string name)
183183
/// <returns></returns>
184184
public override IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures)
185185
{
186-
if (_allLocalizerdStrings == null)
186+
if (_allLocalizedStrings == null)
187187
{
188188
var items = GetAllStringsFromService()
189189
?? GetAllStringsFromBase()
190190
?? GetAllStringsFromJson();
191191

192-
_allLocalizerdStrings = MegerResolveLocalizers(items);
192+
_allLocalizedStrings = MergeResolveLocalizers(items);
193193
}
194-
return _allLocalizerdStrings;
194+
return _allLocalizedStrings;
195195

196196
// 1. 从注入服务中获取所有资源信息
197197
// get all strings from the other inject service

0 commit comments

Comments
 (0)