Skip to content

Commit ccad66a

Browse files
feat(SelectSearchMetadata): add OnSearchTextChanged/IsPopover parameter (#7799)
* 补充SelectSearchMetadata对象中OnSearchTextChanged 补充SelectSearchMetadata对象中新增ShowSearch属性后,漏掉与之对应的OnSearchTextChanged回调,同时增加ItemTemplate属性,以便个性化下拉显示 * feat: 增加 IsPopover 默认设置 # Conflicts: # src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs * feat: 增加 IsPopover 参数 * test: 更新单元测试 * doc: 资源文件排序 * test: 更新单元测试提高覆盖率 --------- Co-authored-by: Argo Zhang <argo@live.ca>
1 parent ed078c8 commit ccad66a

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5068,6 +5068,16 @@
50685068
"SearchFormDescItem1": "Customize metadata using the <code>SearchFormItemMetadata</code> property in <code>TableColumn</code>.",
50695069
"SearchFormDescItem2": "Customize the search item UI using the <code>RenderContent</code> method in the <code>SearchFormItemMetadata</code> parameter.",
50705070
"SearchFormIntro": "Enable the search form feature by setting <code>UseSearchForm=\"true\"</code>, and configure the search items within the form using <code>SearchItems</code>, suitable for scenarios with custom complex search conditions",
5071+
"SearchFormItemMetadataCustom": "When the default search metadata above cannot meet your business requirements, for example when a dropdown needs to use the <code>SelectTable</code> component for display, you can inherit from a suitable search metadata base class to implement your own custom search metadata",
5072+
"SearchFormItemMetadataListDesc": "The current version includes the following built-in <code>ISearchFormItemMetadata</code> implementations",
5073+
"SearchFormItemMetadataListP1": "<code>StringSearchMetadata</code> String search metadata, defaults to a contains relationship",
5074+
"SearchFormItemMetadataListP2": "<code>MultipleStringSearchMetadata</code> Multiple string search metadata, uses space-separated values to form multiple OR conditions, e.g. <b>condition1</b> <b>condition2</b> results in contains condition1 OR contains condition2",
5075+
"SearchFormItemMetadataListP3": "<code>NumberSearchMetadata</code> Number search metadata",
5076+
"SearchFormItemMetadataListP4": "<code>SelectSearchMetadata</code> Dropdown select search metadata",
5077+
"SearchFormItemMetadataListP5": "<code>MultipleSelectSearchMetadata</code> Multiple select dropdown search metadata",
5078+
"SearchFormItemMetadataListP6": "<code>DateTimeSearchMetadata</code> DateTime search metadata",
5079+
"SearchFormItemMetadataListP7": "<code>DateTimeRangeSearchMetadata</code> DateTime range search metadata",
5080+
"SearchFormItemMetadataListP8": "<code>CheckboxListSearchMetadata</code> Checkbox list search metadata",
50715081
"SearchFormTips": "Enabling <code>UseSearchForm</code> will prevent <code>SearchModel</code> <code>SearchTemplate</code>, <code>CustomerSearchModel</code>, and <code>CustomerSearchTemplate</code> from taking effect.",
50725082
"SearchFormTitle": "Search Form",
50735083
"SearchFormWarningTips": "<code>BootstrapBlazor</code> v10.4.2 introduced the <code>UseSearchForm</code> parameter, making the following examples obsolete. It is strongly recommended to use <code>UseSearchForm</code>.",

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5068,6 +5068,16 @@
50685068
"SearchFormDescItem1": "通过 <code>TableColumn</code> 中的 <code>SearchFormItemMetadata</code> 属性定制化元数据",
50695069
"SearchFormDescItem2": "通过 <code>SearchFormItemMetadata</code> 参数中 <code>RenderContent</code> 方法自定义搜索项 UI",
50705070
"SearchFormIntro": "通过设置 <code>UseSearchForm=\"true\"</code> 开启搜索表单功能,通过 <code>SearchItems</code> 配置搜索表单内搜索项,适用于自定义复杂搜索条件的场景",
5071+
"SearchFormItemMetadataCustom": "例如以上默认搜索元模型无法满足业务需求时,比如下拉框需要使用 <code>SelectTable</code> 组件进行展示,可以通过继承合适的搜索元模型基类自行实现一个自定义搜索元模型",
5072+
"SearchFormItemMetadataListDesc": "当前版本内置 <code>ISearchFormItemMetadata</code> 实现类如下",
5073+
"SearchFormItemMetadataListP1": "<code>StringSearchMetadata</code> 字符串搜索元模型 默认是包含关系",
5074+
"SearchFormItemMetadataListP2": "<code>MultipleStringSearchMetadata</code> 多字符串搜索元模型默认使用空格分隔组成多个或者条件如 <b>条件1</b> <b>条件2</b> 最终形成 包含条件1 或者 包含条件2 的判定",
5075+
"SearchFormItemMetadataListP3": "<code>NumberSearchMetadata</code> 数字搜索元模型",
5076+
"SearchFormItemMetadataListP4": "<code>SelectSearchMetadata</code> 下拉选择搜索元模型",
5077+
"SearchFormItemMetadataListP5": "<code>MultipleSelectSearchMetadata</code> 多选下拉搜索元模型",
5078+
"SearchFormItemMetadataListP6": "<code>DateTimeSearchMetadata</code> 日期时间搜索元模型",
5079+
"SearchFormItemMetadataListP7": "<code>DateTimeRangeSearchMetadata</code> 日期时间范围搜索元模型",
5080+
"SearchFormItemMetadataListP8": "<code>CheckboxListSearchMetadata</code> 复选框列表搜索元模型",
50715081
"SearchFormTips": "开启 <code>UseSearchForm</code> 后 <code>SearchModel</code> <code>SearchTemplate</code> <code>CustomerSearchModel</code> <code>CustomerSearchTemplate</code> 均不生效",
50725082
"SearchFormTitle": "搜索表单",
50735083
"SearchFormWarningTips": "<code>BootstrapBlazor</code> v10.4.2 版本后增加 <code>UseSearchForm</code> 参数后以下示例均可以不学习了,强烈推荐使用 <code>UseSearchForm</code>",

src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,28 @@ public class SelectSearchMetadata : StringSearchMetadata
1717
/// </summary>
1818
public bool ShowSearch { get; set; }
1919

20+
/// <summary>
21+
/// <para lang="zh">获得/设置 搜索文本改变时的回调方法</para>
22+
/// <para lang="en">Gets or sets the callback method when the search text changes</para>
23+
/// </summary>
24+
public Func<string, IEnumerable<SelectedItem>>? OnSearchTextChanged { get; set; }
25+
26+
/// <summary>
27+
/// <para lang="zh">获得/设置 项目模板</para>
28+
/// <para lang="en">Gets or sets the item template</para>
29+
/// </summary>
30+
public RenderFragment<SelectedItem>? ItemTemplate { get; set; }
31+
2032
/// <summary>
2133
/// <para lang="zh">获得/设置 选择项集合</para>
2234
/// <para lang="en">Gets or sets the collection of select items</para>
2335
/// </summary>
2436
/// <returns></returns>
2537
public IEnumerable<SelectedItem>? Items { get; set; }
38+
39+
/// <summary>
40+
/// <para lang="zh">获得/设置 是否使用 Popover 渲染下拉框 默认 false</para>
41+
/// <para lang="en">Gets or sets Whether to use Popover to render dropdown. Default false</para>
42+
/// </summary>
43+
public bool IsPopover { get; set; }
2644
}

src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,9 @@ private void AddSelectSearchComponent(ISearchItem item, SelectSearchMetadata sel
161161
builder.AddAttribute(70, nameof(Select<>.PlaceHolder), selectSearchMetadata.PlaceHolder);
162162
builder.AddAttribute(80, nameof(Select<>.SkipValidate), true);
163163
builder.AddAttribute(90, nameof(Select<>.ShowSearch), selectSearchMetadata.ShowSearch);
164+
builder.AddAttribute(100, nameof(Select<>.OnSearchTextChanged), selectSearchMetadata.OnSearchTextChanged);
165+
builder.AddAttribute(110, nameof(Select<>.ItemTemplate), selectSearchMetadata.ItemTemplate);
166+
builder.AddAttribute(120, nameof(Select<>.IsPopover), selectSearchMetadata.IsPopover);
164167
builder.CloseComponent();
165168
}
166169

test/UnitTest/Components/SearchFormItemMetadataTest.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ public void SelectSearchFormItemMetadata_Ok()
108108
var meta = new SelectSearchMetadata()
109109
{
110110
ShowSearch = true,
111+
IsPopover = true,
112+
OnSearchTextChanged = key => [],
113+
ItemTemplate = item => builder =>
114+
{
115+
builder.AddContent(0, item.Text);
116+
},
111117
Items = new List<SelectedItem>()
112118
{
113119
new SelectedItem("v1", "v1"),

0 commit comments

Comments
 (0)