Files
radzen-blazor/Radzen.Blazor/RadzenTreeLevel.cs

121 lines
4.0 KiB
C#
Raw Normal View History

2021-10-07 11:12:04 +03:00
using Microsoft.AspNetCore.Components;
using System;
namespace Radzen.Blazor
{
2021-10-07 11:35:29 +03:00
/// <summary>
2021-10-15 11:00:24 +03:00
/// Configures a level of nodes in a <see cref="RadzenTree" /> during data-binding.
2021-10-07 11:35:29 +03:00
/// </summary>
2021-10-15 11:00:24 +03:00
/// <example>
/// <code>
/// &lt;RadzenTree Data=@rootEmployees&gt;
/// &lt;RadzenTreeLevel TextProperty="LastName" ChildrenProperty="Employees1" HasChildren=@(e =&gt; (e as Employee).Employees1.Any()) /&gt;
/// &lt;/RadzenTree&gt;
/// @code {
/// IEnumerable&lt;Employee&gt; rootEmployees;
/// protected override void OnInitialized()
/// {
/// rootEmployees = NorthwindDbContext.Employees.Where(e => e.ReportsTo == null);
/// }
/// }
/// </code>
/// </example>
2021-10-07 11:12:04 +03:00
public class RadzenTreeLevel : ComponentBase
{
2021-10-07 11:35:29 +03:00
/// <summary>
2021-10-15 11:00:24 +03:00
/// Specifies the name of the property which provides values for the <see cref="RadzenTreeItem.Text" /> property of the child items.
2021-10-07 11:35:29 +03:00
/// </summary>
2021-10-07 11:12:04 +03:00
[Parameter]
public string? TextProperty { get; set; }
2021-10-07 11:12:04 +03:00
/// <summary>
/// Specifies the name of the property which provides values for the <see cref="RadzenTreeItem.Checkable" /> property of the child items.
/// </summary>
[Parameter]
public string? CheckableProperty { get; set; }
2021-10-07 11:35:29 +03:00
/// <summary>
2021-10-15 11:00:24 +03:00
/// Specifies the name of the property which returns child data. The value returned by that property should be IEnumerable
2021-10-07 11:35:29 +03:00
/// </summary>
2021-10-07 11:12:04 +03:00
[Parameter]
public string? ChildrenProperty { get; set; }
2021-10-07 11:12:04 +03:00
2021-10-07 11:35:29 +03:00
/// <summary>
2021-10-15 11:00:24 +03:00
/// Determines if a child item has children or not. Set to <c>value =&gt; true</c> by default.
2021-10-07 11:35:29 +03:00
/// </summary>
2021-10-15 11:00:24 +03:00
/// <example>
/// <code>
/// &lt;RadzenTreeLevel HasChildren=@(e =&gt; (e as Employee).Employees1.Any()) /&gt;
/// </code>
/// </example>
2021-10-07 11:12:04 +03:00
[Parameter]
public Func<object, bool>? HasChildren { get; set; } = value => true;
2021-10-07 11:12:04 +03:00
2021-10-07 11:35:29 +03:00
/// <summary>
2021-10-15 11:00:24 +03:00
/// Determines if a child item is expanded or not. Set to <c>value =&gt; false</c> by default.
2021-10-07 11:35:29 +03:00
/// </summary>
2021-10-15 11:00:24 +03:00
/// <example>
/// <code>
/// &lt;RadzenTreeLevel Expanded=@(e =&gt; (e as Employee).Employees1.Any()) /&gt;
/// </code>
/// </example>
2021-10-07 11:12:04 +03:00
[Parameter]
public Func<object, bool>? Expanded { get; set; } = value => false;
2021-10-07 11:12:04 +03:00
2021-10-07 11:35:29 +03:00
/// <summary>
2021-10-15 11:00:24 +03:00
/// Determines if a child item is selected or not. Set to <c>value =&gt; false</c> by default.
2021-10-07 11:35:29 +03:00
/// </summary>
2021-10-15 11:00:24 +03:00
/// <example>
/// <code>
/// &lt;RadzenTreeLevel Selected=@(e =&gt; (e as Employee).LastName == "Fuller") /&gt;
/// </code>
/// </example>
2021-10-07 11:12:04 +03:00
[Parameter]
public Func<object, bool>? Selected { get; set; } = value => false;
2021-10-07 11:35:29 +03:00
/// <summary>
2021-10-15 11:00:24 +03:00
/// Determines the text of a child item.
2021-10-07 11:35:29 +03:00
/// </summary>
2021-10-15 11:00:24 +03:00
/// <example>
/// <code>
/// &lt;RadzenTreeLevel Text=@(e =&gt; (e as Employee).LastName) /&gt;
/// </code>
/// </example>
2021-10-07 11:12:04 +03:00
[Parameter]
public Func<object, string>? Text { get; set; }
2021-10-07 11:12:04 +03:00
/// <summary>
/// Determines the if the checkbox of the child item can be checked.
/// </summary>
/// <example>
/// <code>
/// &lt;RadzenTreeLevel Checkable=@(e =&gt; (e as Employee).LastName != null) /&gt;
/// </code>
/// </example>
[Parameter]
public Func<object, bool>? Checkable { get; set; }
2021-10-07 11:35:29 +03:00
/// <summary>
/// Gets or sets the template.
/// </summary>
2021-10-07 11:12:04 +03:00
[Parameter]
public RenderFragment<RadzenTreeItem>? Template { get; set; }
private RadzenTree? _tree;
2021-10-07 11:12:04 +03:00
2021-10-07 11:35:29 +03:00
/// <summary>
2021-10-15 11:00:24 +03:00
/// The RadzenTree which this item is part of.
2021-10-07 11:35:29 +03:00
/// </summary>
2021-10-07 11:12:04 +03:00
[CascadingParameter]
public RadzenTree? Tree
2021-10-15 11:00:24 +03:00
{
get => _tree;
2021-10-07 11:12:04 +03:00
set
{
if (value != null)
value.AddLevel(this);
_tree = value;
2021-10-07 11:12:04 +03:00
}
}
}
}