88namespace BootstrapBlazor . Components ;
99
1010/// <summary>
11- /// Filter 组件
11+ /// FilterProvider component
1212/// </summary>
13- public partial class Filter < TFilter > where TFilter : IComponent
13+ public partial class FilterProvider
1414{
15- /// <summary>
16- /// 获得/设置 过滤器组件参数集合 Default is null
17- /// </summary>
18- [ Parameter ]
19- public IDictionary < string , object > ? FilterParameters { get ; set ; }
20-
2115 /// <summary>
2216 /// 获得/设置 重置按钮文本
2317 /// </summary>
@@ -53,10 +47,20 @@ public partial class Filter<TFilter> where TFilter : IComponent
5347 /// <summary>
5448 /// Gets or sets the filter title. Default is null.
5549 /// </summary>
50+ [ Parameter ]
5651 public string ? Title { get ; set ; }
5752
53+ /// <summary>
54+ /// Gets or sets the child content. Default is null.
55+ /// </summary>
56+ [ Parameter ]
57+ public RenderFragment ? ChildContent { get ; set ; }
58+
59+ /// <summary>
60+ /// Gets or sets the <see cref="TableColumnFilter"/> instance from cascading parameter.
61+ /// </summary>
5862 [ CascadingParameter ]
59- private TableColumnFilter ? TableColumnFilter { get ; set ; }
63+ protected TableColumnFilter ? TableColumnFilter { get ; set ; }
6064
6165 [ Inject ]
6266 [ NotNull ]
@@ -66,9 +70,20 @@ public partial class Filter<TFilter> where TFilter : IComponent
6670 [ NotNull ]
6771 private IIconTheme ? IconTheme { get ; set ; }
6872
69- private int _count ;
70- private string ? _fieldKey ;
71- private bool _isHeaderRow = false ;
73+ /// <summary>
74+ /// Gets or sets the filter counter. Default is 0.
75+ /// </summary>
76+ protected int Count { get ; set ; }
77+
78+ /// <summary>
79+ /// Gets or sets the column field key. Default is null.
80+ /// </summary>
81+ protected string ? FieldKey { get ; set ; }
82+
83+ /// <summary>
84+ /// Gets or sets whether the filter is header row. Default is false.
85+ /// </summary>
86+ protected bool IsHeaderRow { get ; set ; }
7287
7388 /// <summary>
7489 /// <inheritdoc/>
@@ -84,9 +99,8 @@ protected override void OnParametersSet()
8499 ClearButtonText ??= Localizer [ nameof ( ClearButtonText ) ] ;
85100
86101 Title ??= TableColumnFilter . GetFilterTitle ( ) ;
87-
88- _isHeaderRow = TableColumnFilter . IsHeaderRow ( ) ;
89- _fieldKey = TableColumnFilter . GetFieldKey ( ) ;
102+ FieldKey ??= TableColumnFilter . GetFieldKey ( ) ;
103+ IsHeaderRow = TableColumnFilter . IsHeaderRow ( ) ;
90104 }
91105
92106 /// <summary>
@@ -95,7 +109,7 @@ protected override void OnParametersSet()
95109 /// <returns></returns>
96110 private async Task OnClickReset ( )
97111 {
98- _count = 0 ;
112+ Count = 0 ;
99113 if ( TableColumnFilter != null )
100114 {
101115 await TableColumnFilter . Reset ( ) ;
@@ -121,9 +135,9 @@ protected async Task OnClickConfirm()
121135 /// <returns></returns>
122136 private void OnClickPlus ( )
123137 {
124- if ( _count == 0 )
138+ if ( Count == 0 )
125139 {
126- _count ++ ;
140+ Count ++ ;
127141 }
128142 }
129143
@@ -133,9 +147,9 @@ private void OnClickPlus()
133147 /// <returns></returns>
134148 private void OnClickMinus ( )
135149 {
136- if ( _count == 1 )
150+ if ( Count == 1 )
137151 {
138- _count -- ;
152+ Count -- ;
139153 }
140154 }
141155
@@ -145,22 +159,14 @@ private void OnClickMinus()
145159 /// <returns></returns>
146160 protected virtual RenderFragment RenderFilter ( ) => builder =>
147161 {
148- var filterType = typeof ( TFilter ) ;
149- builder . OpenComponent < TFilter > ( 0 ) ;
150- if ( filterType . IsSubclassOf ( typeof ( FilterBase ) ) )
162+ builder . OpenComponent < CascadingValue < FilterContext > > ( 0 ) ;
163+ builder . AddAttribute ( 1 , nameof ( CascadingValue < FilterContext > . Value ) , new FilterContext ( )
151164 {
152- builder . AddAttribute ( 1 , nameof ( FilterBase . FieldKey ) , _fieldKey ) ;
153- builder . AddAttribute ( 2 , nameof ( FilterBase . IsHeaderRow ) , _isHeaderRow ) ;
154- }
155- if ( filterType . IsSubclassOf ( typeof ( MultipleFilterBase ) ) )
156- {
157- builder . AddAttribute ( 10 , nameof ( MultipleFilterBase . Count ) , _count ) ;
158- }
159-
160- if ( FilterParameters != null )
161- {
162- builder . AddMultipleAttributes ( 100 , FilterParameters ) ;
163- }
165+ Count = Count ,
166+ FieldKey = FieldKey ,
167+ IsHeaderRow = IsHeaderRow
168+ } ) ;
169+ builder . AddAttribute ( 2 , nameof ( CascadingValue < FilterContext > . ChildContent ) , ChildContent ) ;
164170 builder . CloseComponent ( ) ;
165171 } ;
166172}
0 commit comments