BzTreeView

نمای درختی

چندانتخابی، آیکن، و دکمه های عملیات روی هر نود.

چندانتخابی + عملیات

این کامپوننت همه جوره کار میکنه فقط مشخص کن متن،فرزنداش و .. از کجا و چجوری خونده بشن

فروش
انبار
تنظیمات
عضو توضیح
Itemsنود های ریشه
TextSelectorمتن هر نود از کجا خونده بشه
ChildrenSelectorفرزندان هر نود از کجا خونده بشه
IconSelectorآیکن هر نود (اختیاری)
MultiSelectانتخاب چندتایی با چک باکس
NodeActionsدکمه های هر نود؛ خود نود در context است
ExpandAll() / CollapseAll()از طریق ref صدا زده میشن
GetSelected()لیست نود های انتخاب شده
razor
@using BzCore.Components.Tree
@using BzCore.Components.Button
@using BzCore.Enums

<BzTreeView @ref="_tree" TItem="TreeNode" Items="_roots"
            TextSelector="@(n => n.Name)"
            ChildrenSelector="@(n => n.Children)"
            IconSelector="@(n => n.Icon)"
            MultiSelect="true">
    <NodeActions>
        @* context is the node this row renders *@
        <BzButton Size="BzSize.Small" Variant="BzButtonVariant.Text" IconOnly
                  StartIcon="fa-solid fa-pen"
                  OnClick="@(() => _msg = $"ویرایش: {context.Name}")" />
        <BzButton Size="BzSize.Small" Variant="BzButtonVariant.Text" IconOnly
                  StartIcon="fa-solid fa-trash" Color="BzColor.Danger"
                  OnClick="@(() => _msg = $"حذف: {context.Name}")" />
    </NodeActions>
</BzTreeView>

<BzButton Size="BzSize.Small" Text="باز کردن همه" Variant="BzButtonVariant.Soft"
          OnClick="@(() => _tree.ExpandAll())" />
<BzButton Size="BzSize.Small" Text="بستن همه" Variant="BzButtonVariant.Soft"
          OnClick="@(() => _tree.CollapseAll())" />
<BzButton Size="BzSize.Small" Text="انتخاب شده ها" OnClick="ShowSelected" />

@if (!string.IsNullOrEmpty(_msg)) { <p>@_msg</p> }

@code {
    private BzTreeView<TreeNode> _tree = default!;
    private string? _msg;

    // Your own model — the tree only needs the three selectors above.
    public class TreeNode
    {
        public string Name { get; set; } = "";
        public string? Icon { get; set; }
        public List<TreeNode> Children { get; set; } = new();
    }

    private List<TreeNode> _roots = new()
    {
        new TreeNode { Name = "فروش", Icon = "fa-solid fa-cart-shopping", Children =
        {
            new TreeNode { Name = "سفارش ها", Icon = "fa-solid fa-receipt" },
            new TreeNode { Name = "مشتری ها", Icon = "fa-solid fa-users", Children =
            {
                new TreeNode { Name = "حقیقی", Icon = "fa-solid fa-user" },
                new TreeNode { Name = "حقوقی", Icon = "fa-solid fa-building" },
            }},
        }},
        new TreeNode { Name = "انبار", Icon = "fa-solid fa-warehouse" },
    };

    private void ShowSelected()
    {
        var names = _tree.GetSelected().Select(n => n.Name);
        _msg = "انتخاب شده: " + string.Join("، ", names);
    }
}