Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/BootstrapBlazor.Server/Locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -5068,6 +5068,16 @@
"SearchFormDescItem1": "Customize metadata using the <code>SearchFormItemMetadata</code> property in <code>TableColumn</code>.",
"SearchFormDescItem2": "Customize the search item UI using the <code>RenderContent</code> method in the <code>SearchFormItemMetadata</code> parameter.",
"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",
"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",
"SearchFormItemMetadataListDesc": "The current version includes the following built-in <code>ISearchFormItemMetadata</code> implementations",
"SearchFormItemMetadataListP1": "<code>StringSearchMetadata</code> String search metadata, defaults to a contains relationship",
"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",
"SearchFormItemMetadataListP3": "<code>NumberSearchMetadata</code> Number search metadata",
"SearchFormItemMetadataListP4": "<code>SelectSearchMetadata</code> Dropdown select search metadata",
"SearchFormItemMetadataListP5": "<code>MultipleSelectSearchMetadata</code> Multiple select dropdown search metadata",
"SearchFormItemMetadataListP6": "<code>DateTimeSearchMetadata</code> DateTime search metadata",
"SearchFormItemMetadataListP7": "<code>DateTimeRangeSearchMetadata</code> DateTime range search metadata",
"SearchFormItemMetadataListP8": "<code>CheckboxListSearchMetadata</code> Checkbox list search metadata",
"SearchFormTips": "Enabling <code>UseSearchForm</code> will prevent <code>SearchModel</code> <code>SearchTemplate</code>, <code>CustomerSearchModel</code>, and <code>CustomerSearchTemplate</code> from taking effect.",
"SearchFormTitle": "Search Form",
"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>.",
Expand Down
10 changes: 10 additions & 0 deletions src/BootstrapBlazor.Server/Locales/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -5068,6 +5068,16 @@
"SearchFormDescItem1": "通过 <code>TableColumn</code> 中的 <code>SearchFormItemMetadata</code> 属性定制化元数据",
"SearchFormDescItem2": "通过 <code>SearchFormItemMetadata</code> 参数中 <code>RenderContent</code> 方法自定义搜索项 UI",
"SearchFormIntro": "通过设置 <code>UseSearchForm=\"true\"</code> 开启搜索表单功能,通过 <code>SearchItems</code> 配置搜索表单内搜索项,适用于自定义复杂搜索条件的场景",
"SearchFormItemMetadataCustom": "例如以上默认搜索元模型无法满足业务需求时,比如下拉框需要使用 <code>SelectTable</code> 组件进行展示,可以通过继承合适的搜索元模型基类自行实现一个自定义搜索元模型",
"SearchFormItemMetadataListDesc": "当前版本内置 <code>ISearchFormItemMetadata</code> 实现类如下",
"SearchFormItemMetadataListP1": "<code>StringSearchMetadata</code> 字符串搜索元模型 默认是包含关系",
"SearchFormItemMetadataListP2": "<code>MultipleStringSearchMetadata</code> 多字符串搜索元模型默认使用空格分隔组成多个或者条件如 <b>条件1</b> <b>条件2</b> 最终形成 包含条件1 或者 包含条件2 的判定",
"SearchFormItemMetadataListP3": "<code>NumberSearchMetadata</code> 数字搜索元模型",
"SearchFormItemMetadataListP4": "<code>SelectSearchMetadata</code> 下拉选择搜索元模型",
"SearchFormItemMetadataListP5": "<code>MultipleSelectSearchMetadata</code> 多选下拉搜索元模型",
"SearchFormItemMetadataListP6": "<code>DateTimeSearchMetadata</code> 日期时间搜索元模型",
"SearchFormItemMetadataListP7": "<code>DateTimeRangeSearchMetadata</code> 日期时间范围搜索元模型",
"SearchFormItemMetadataListP8": "<code>CheckboxListSearchMetadata</code> 复选框列表搜索元模型",
"SearchFormTips": "开启 <code>UseSearchForm</code> 后 <code>SearchModel</code> <code>SearchTemplate</code> <code>CustomerSearchModel</code> <code>CustomerSearchTemplate</code> 均不生效",
"SearchFormTitle": "搜索表单",
"SearchFormWarningTips": "<code>BootstrapBlazor</code> v10.4.2 版本后增加 <code>UseSearchForm</code> 参数后以下示例均可以不学习了,强烈推荐使用 <code>UseSearchForm</code>",
Expand Down
18 changes: 18 additions & 0 deletions src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,28 @@ public class SelectSearchMetadata : StringSearchMetadata
/// </summary>
public bool ShowSearch { get; set; }

/// <summary>
/// <para lang="zh">获得/设置 搜索文本改变时的回调方法</para>
/// <para lang="en">Gets or sets the callback method when the search text changes</para>
/// </summary>
public Func<string, IEnumerable<SelectedItem>>? OnSearchTextChanged { get; set; }

/// <summary>
/// <para lang="zh">获得/设置 项目模板</para>
/// <para lang="en">Gets or sets the item template</para>
/// </summary>
public RenderFragment<SelectedItem>? ItemTemplate { get; set; }

/// <summary>
/// <para lang="zh">获得/设置 选择项集合</para>
/// <para lang="en">Gets or sets the collection of select items</para>
/// </summary>
/// <returns></returns>
public IEnumerable<SelectedItem>? Items { get; set; }

/// <summary>
/// <para lang="zh">获得/设置 是否使用 Popover 渲染下拉框 默认 false</para>
/// <para lang="en">Gets or sets Whether to use Popover to render dropdown. Default false</para>
/// </summary>
public bool IsPopover { get; set; }
}
3 changes: 3 additions & 0 deletions src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,9 @@ private void AddSelectSearchComponent(ISearchItem item, SelectSearchMetadata sel
builder.AddAttribute(70, nameof(Select<>.PlaceHolder), selectSearchMetadata.PlaceHolder);
builder.AddAttribute(80, nameof(Select<>.SkipValidate), true);
builder.AddAttribute(90, nameof(Select<>.ShowSearch), selectSearchMetadata.ShowSearch);
builder.AddAttribute(100, nameof(Select<>.OnSearchTextChanged), selectSearchMetadata.OnSearchTextChanged);
builder.AddAttribute(110, nameof(Select<>.ItemTemplate), selectSearchMetadata.ItemTemplate);
builder.AddAttribute(120, nameof(Select<>.IsPopover), selectSearchMetadata.IsPopover);
builder.CloseComponent();
}

Expand Down
6 changes: 6 additions & 0 deletions test/UnitTest/Components/SearchFormItemMetadataTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,12 @@ public void SelectSearchFormItemMetadata_Ok()
var meta = new SelectSearchMetadata()
{
ShowSearch = true,
IsPopover = true,
OnSearchTextChanged = key => [],
ItemTemplate = item => builder =>
{
builder.AddContent(0, item.Text);
},
Items = new List<SelectedItem>()
{
new SelectedItem("v1", "v1"),
Expand Down
Loading