diff --git a/Radzen.Blazor/RadzenDataFilter.razor b/Radzen.Blazor/RadzenDataFilter.razor
index 72311ae165b..08f03012fd7 100644
--- a/Radzen.Blazor/RadzenDataFilter.razor
+++ b/Radzen.Blazor/RadzenDataFilter.razor
@@ -24,8 +24,8 @@
@foreach(var filter in Filters)
{
-
-
+
+
}
diff --git a/Radzen.Blazor/RadzenDataFilter.razor.cs b/Radzen.Blazor/RadzenDataFilter.razor.cs
index 82ca68937fe..1f9d1bb4f62 100644
--- a/Radzen.Blazor/RadzenDataFilter.razor.cs
+++ b/Radzen.Blazor/RadzenDataFilter.razor.cs
@@ -338,6 +338,13 @@ internal async Task ChangeState()
[Parameter]
public string FilterDateFormat { get; set; }
+ ///
+ /// Gets or sets a value indicating whether the time part is shown in a date filter.
+ ///
+ /// true if time part is shown; otherwise, false.
+ [Parameter]
+ public bool FilterDateShowTime { get; set; } = true;
+
internal async Task AddFilter(bool isGroup)
{
if (UniqueFilters && properties.All(f => f.IsSelected))
diff --git a/Radzen.Blazor/RadzenDataFilterItem.razor b/Radzen.Blazor/RadzenDataFilterItem.razor
index 49b49109868..c887d848e21 100644
--- a/Radzen.Blazor/RadzenDataFilterItem.razor
+++ b/Radzen.Blazor/RadzenDataFilterItem.razor
@@ -1,4 +1,5 @@
@typeparam TItem
+
@if (Filter.Filters != null)
{
@@ -59,8 +60,8 @@ else
}
else if (PropertyAccess.IsDate(property.FilterPropertyType))
{
- InvokeAsync(ApplyFilter)) />
+ InvokeAsync(ApplyFilter)) />
}
else if (property.FilterPropertyType == typeof(bool) || property.FilterPropertyType == typeof(bool?))
{
@@ -73,244 +74,4 @@ else
}
-}
-@code {
- [Parameter]
- public RadzenDataFilter DataFilter { get; set; }
-
- [Parameter]
- public RadzenDataFilterItem Parent { get; set; }
-
- CompositeFilterDescriptor _filter;
- [Parameter]
- public CompositeFilterDescriptor Filter
- {
- get
- {
- return _filter;
- }
- set
- {
- _filter = value;
-
- if (property == null && Filter.Filters == null)
- {
- if (Filter.Property != null)
- {
- property = DataFilter?.properties.FirstOrDefault(f => object.Equals(f.Property, Filter.Property));
- }
- else if (property == null && DataFilter?.UniqueFilters == true)
- {
- property = DataFilter?.properties.FirstOrDefault(f => f.IsSelected == false);
- }
- else
- {
- property = DataFilter?.properties.FirstOrDefault();
- }
-
- if (property != null)
- {
- property.FilterValueChange -= OnFilterValueChange;
- property.FilterValueChange += OnFilterValueChange;
-
- if (DataFilter?.UniqueFilters == true)
- {
- property.IsSelected = true;
- }
-
- Filter.Property = property.Property;
-
- if (!property.GetFilterOperators().Contains(Filter.FilterOperator))
- {
- Filter.FilterOperator = property.GetFilterOperators().FirstOrDefault();
- }
-
- var v = property.GetFilterValue();
- if (v != null)
- {
- Filter.FilterValue = v;
- }
- }
- }
- }
- }
-
- void OnFilterValueChange(object value)
- {
- if (property != null)
- {
- Filter.FilterValue = property.GetFilterValue();
- }
- }
-
- RadzenDataFilterProperty property;
-
- async Task ApplyFilter()
- {
- if (DataFilter.Auto)
- {
- await DataFilter.Filter();
- }
- }
-
- async Task OnPropertyChange(object p)
- {
- property.FilterValueChange -= OnFilterValueChange;
- property.IsSelected = false;
-
- property = DataFilter.properties.Where(c => object.Equals(c.Property, p)).FirstOrDefault();
-
- property.FilterValueChange += OnFilterValueChange;
- if (DataFilter?.UniqueFilters == true)
- {
- property.IsSelected = true;
- }
- Filter.FilterValue = null;
-
- var defaultOperator = typeof(System.Collections.IEnumerable).IsAssignableFrom(property.FilterPropertyType) ? FilterOperator.Contains : default(FilterOperator);
-
- if (property.GetFilterOperators().Any(o => o == property.FilterOperator))
- {
- Filter.FilterOperator = property.FilterOperator;
- }
- else if (property.GetFilterOperators().Contains(defaultOperator))
- {
- Filter.FilterOperator = defaultOperator;
- }
- else
- {
- Filter.FilterOperator = property.GetFilterOperators().FirstOrDefault();
- }
-
- await ApplyFilter();
- }
-
- bool IsOperatorNullOrEmpty()
- {
- if (Filter != null)
- {
- return Filter.FilterOperator == FilterOperator.IsEmpty || Filter.FilterOperator == FilterOperator.IsNotEmpty ||
- Filter.FilterOperator == FilterOperator.IsNull || Filter.FilterOperator == FilterOperator.IsNotNull;
- }
-
- return false;
- }
-
- async Task OnOperatorChange(object p)
- {
- if (IsOperatorNullOrEmpty())
- {
- Filter.FilterValue = null;
- }
-
- await ApplyFilter();
- }
-
- async Task AddFilter(bool isGroup)
- {
- if (DataFilter?.UniqueFilters == true && DataFilter.properties.All(f => f.IsSelected))
- {
- return;
- }
- if (isGroup)
- {
- Filter.Filters = Filter.Filters.Concat(new CompositeFilterDescriptor[]
- {
- new CompositeFilterDescriptor()
- {
- Filters = Enumerable.Empty()
- }
- }
- );
- }
- else
- {
- Filter.Filters = Filter.Filters.Concat(new CompositeFilterDescriptor[] { new CompositeFilterDescriptor() });
- }
-
- if (DataFilter.Auto)
- {
- await DataFilter.Filter();
- }
- }
-
- async Task RemoveFilter()
- {
- if (property != null)
- {
- property.IsSelected = false;
- }
- property = null;
-
- if (Parent != null)
- {
- Parent.Filter.Filters = Parent.Filter.Filters.Where(f => f != Filter).ToList();
- await Parent.ChangeState();
- }
- else
- {
- DataFilter.Filters = DataFilter.Filters.Where(f => f != Filter).ToList();
- await DataFilter.ChangeState();
- }
-
- await ApplyFilter();
- }
-
- internal async Task ChangeState()
- {
- await InvokeAsync(StateHasChanged);
- }
-
- RenderFragment DrawNumericFilter()
- {
- return new RenderFragment(builder =>
- {
- var type = Nullable.GetUnderlyingType(property.FilterPropertyType) != null ?
- property.FilterPropertyType : typeof(Nullable<>).MakeGenericType(property.FilterPropertyType);
-
- var numericType = typeof(RadzenNumeric<>).MakeGenericType(type);
-
- builder.OpenComponent(0, numericType);
-
- builder.AddAttribute(1, "Value", Filter.FilterValue);
- builder.AddAttribute(2, "class", "rz-datafilter-editor");
- builder.AddAttribute(3, "Disabled", IsOperatorNullOrEmpty());
-
- Action