diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index f6aa936a26d..1f1bf9a3da7 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -5068,6 +5068,16 @@ "SearchFormDescItem1": "Customize metadata using the SearchFormItemMetadata property in TableColumn.", "SearchFormDescItem2": "Customize the search item UI using the RenderContent method in the SearchFormItemMetadata parameter.", "SearchFormIntro": "Enable the search form feature by setting UseSearchForm=\"true\", and configure the search items within the form using SearchItems, 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 SelectTable 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 ISearchFormItemMetadata implementations", + "SearchFormItemMetadataListP1": "StringSearchMetadata String search metadata, defaults to a contains relationship", + "SearchFormItemMetadataListP2": "MultipleStringSearchMetadata Multiple string search metadata, uses space-separated values to form multiple OR conditions, e.g. condition1 condition2 results in contains condition1 OR contains condition2", + "SearchFormItemMetadataListP3": "NumberSearchMetadata Number search metadata", + "SearchFormItemMetadataListP4": "SelectSearchMetadata Dropdown select search metadata", + "SearchFormItemMetadataListP5": "MultipleSelectSearchMetadata Multiple select dropdown search metadata", + "SearchFormItemMetadataListP6": "DateTimeSearchMetadata DateTime search metadata", + "SearchFormItemMetadataListP7": "DateTimeRangeSearchMetadata DateTime range search metadata", + "SearchFormItemMetadataListP8": "CheckboxListSearchMetadata Checkbox list search metadata", "SearchFormTips": "Enabling UseSearchForm will prevent SearchModel SearchTemplate, CustomerSearchModel, and CustomerSearchTemplate from taking effect.", "SearchFormTitle": "Search Form", "SearchFormWarningTips": "BootstrapBlazor v10.4.2 introduced the UseSearchForm parameter, making the following examples obsolete. It is strongly recommended to use UseSearchForm.", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index 27d70c19b1a..52a37716f3f 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -5068,6 +5068,16 @@ "SearchFormDescItem1": "通过 TableColumn 中的 SearchFormItemMetadata 属性定制化元数据", "SearchFormDescItem2": "通过 SearchFormItemMetadata 参数中 RenderContent 方法自定义搜索项 UI", "SearchFormIntro": "通过设置 UseSearchForm=\"true\" 开启搜索表单功能,通过 SearchItems 配置搜索表单内搜索项,适用于自定义复杂搜索条件的场景", + "SearchFormItemMetadataCustom": "例如以上默认搜索元模型无法满足业务需求时,比如下拉框需要使用 SelectTable 组件进行展示,可以通过继承合适的搜索元模型基类自行实现一个自定义搜索元模型", + "SearchFormItemMetadataListDesc": "当前版本内置 ISearchFormItemMetadata 实现类如下", + "SearchFormItemMetadataListP1": "StringSearchMetadata 字符串搜索元模型 默认是包含关系", + "SearchFormItemMetadataListP2": "MultipleStringSearchMetadata 多字符串搜索元模型默认使用空格分隔组成多个或者条件如 条件1 条件2 最终形成 包含条件1 或者 包含条件2 的判定", + "SearchFormItemMetadataListP3": "NumberSearchMetadata 数字搜索元模型", + "SearchFormItemMetadataListP4": "SelectSearchMetadata 下拉选择搜索元模型", + "SearchFormItemMetadataListP5": "MultipleSelectSearchMetadata 多选下拉搜索元模型", + "SearchFormItemMetadataListP6": "DateTimeSearchMetadata 日期时间搜索元模型", + "SearchFormItemMetadataListP7": "DateTimeRangeSearchMetadata 日期时间范围搜索元模型", + "SearchFormItemMetadataListP8": "CheckboxListSearchMetadata 复选框列表搜索元模型", "SearchFormTips": "开启 UseSearchFormSearchModel SearchTemplate CustomerSearchModel CustomerSearchTemplate 均不生效", "SearchFormTitle": "搜索表单", "SearchFormWarningTips": "BootstrapBlazor v10.4.2 版本后增加 UseSearchForm 参数后以下示例均可以不学习了,强烈推荐使用 UseSearchForm", diff --git a/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs b/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs index 64da7221803..21a1fd893d9 100644 --- a/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs +++ b/src/BootstrapBlazor/Components/Searches/SelectSearchMetadata.cs @@ -17,10 +17,28 @@ public class SelectSearchMetadata : StringSearchMetadata /// public bool ShowSearch { get; set; } + /// + /// 获得/设置 搜索文本改变时的回调方法 + /// Gets or sets the callback method when the search text changes + /// + public Func>? OnSearchTextChanged { get; set; } + + /// + /// 获得/设置 项目模板 + /// Gets or sets the item template + /// + public RenderFragment? ItemTemplate { get; set; } + /// /// 获得/设置 选择项集合 /// Gets or sets the collection of select items /// /// public IEnumerable? Items { get; set; } + + /// + /// 获得/设置 是否使用 Popover 渲染下拉框 默认 false + /// Gets or sets Whether to use Popover to render dropdown. Default false + /// + public bool IsPopover { get; set; } } diff --git a/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs b/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs index 2ef88ee7d0f..caf3a266a39 100644 --- a/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs +++ b/src/BootstrapBlazor/Extensions/ISearchItemExtensions.cs @@ -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(); } diff --git a/test/UnitTest/Components/SearchFormItemMetadataTest.cs b/test/UnitTest/Components/SearchFormItemMetadataTest.cs index 912028cd023..8eaf3aed2f3 100644 --- a/test/UnitTest/Components/SearchFormItemMetadataTest.cs +++ b/test/UnitTest/Components/SearchFormItemMetadataTest.cs @@ -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() { new SelectedItem("v1", "v1"),