@using MudBlazor @using Microsoft.AspNetCore.Components.Web @using Tasks.Module.Models
@if (Item.Type == TreeItemType.Folder) { } else {
} @Item.Name
@if (Item.IsExpanded && Item.Children.Any()) { @foreach (var child in Item.Children) { } } @code { [Parameter] public TreeItemDto Item { get; set; } = null!; [Parameter] public EventCallback OnItemClick { get; set; } [Parameter] public EventCallback OnItemExpand { get; set; } [Parameter] public EventCallback<(TreeItemDto, MouseEventArgs)> OnContextMenuWithArgs { get; set; } [Parameter] public EventCallback OnDragStart { get; set; } [Parameter] public EventCallback OnDragEnd { get; set; } [Parameter] public EventCallback OnItemDrop { get; set; } private Task OnClick(TreeItemDto item) { return OnItemClick.InvokeAsync(item); } private async Task OnContextMenuHandler(MouseEventArgs args) { await OnContextMenuWithArgs.InvokeAsync((Item, args)); } private async Task OnDragStartRecursive(TreeItemDto item) { await OnDragStart.InvokeAsync(item); } private async Task OnDragEndRecursive() { await OnDragEnd.InvokeAsync(Item); } private async Task OnItemDropRecursive(TreeItemDto item) { await OnItemDrop.InvokeAsync(item); } private async Task OnDragStartLocal() { await OnDragStart.InvokeAsync(Item); } private async Task OnDragEndLocal() { await OnDragEnd.InvokeAsync(Item); } private void OnDragEnter() { if (Item.Type == TreeItemType.Folder) { Item.IsDragOver = true; } } private void OnDragOver(DragEventArgs args) { if (Item.Type == TreeItemType.Folder) { Item.IsDragOver = true; } } private void OnDragLeave() { Item.IsDragOver = false; } private async Task OnDrop() { Item.IsDragOver = false; await OnItemDrop.InvokeAsync(Item); } }