You've already forked onecmonitor
mirror of
https://github.com/akpaevj/onecmonitor.git
synced 2026-06-13 21:18:17 +02:00
66 lines
1.9 KiB
Plaintext
66 lines
1.9 KiB
Plaintext
<CascadingValue Value="@(this)" IsFixed="true">
|
|
<MudStack Spacing="0" Class="@Class">
|
|
@if (ShowAddButton)
|
|
{
|
|
<MudStack Row AlignItems="AlignItems.Start" Class="mb-3">
|
|
<MudButton Color="Color.Primary" Variant="Variant.Filled" @onclick="OnClickAddButton">Добавить
|
|
</MudButton>
|
|
</MudStack>
|
|
}
|
|
<MudPaper Class="w-100 h-100 pa-3">
|
|
<MudStack Spacing="0" AlignItems="AlignItems.Stretch" StretchItems="StretchItems.All">
|
|
@foreach (var item in Items)
|
|
{
|
|
<TreeViewItem IsSelected="SelectedItem?.Id == item.Id" Item="item"/>
|
|
}
|
|
</MudStack>
|
|
</MudPaper>
|
|
</MudStack>
|
|
</CascadingValue>
|
|
|
|
@code
|
|
{
|
|
private readonly List<TreeViewItem> _leafs = [];
|
|
|
|
[Parameter] public IReadOnlyCollection<TreeItem> Items { get; set; } = [];
|
|
|
|
[Parameter] public EventCallback<IReadOnlyCollection<TreeItem>?> ItemsChanged { get; set; }
|
|
|
|
[Parameter] public TreeItem? SelectedItem { get; set; }
|
|
|
|
[Parameter] public EventCallback<TreeItem?> SelectedItemChanged { get; set; }
|
|
|
|
[Parameter] public string? Class { get; set; }
|
|
|
|
[Parameter] public bool ShowAddButton { get; set; }
|
|
|
|
[Parameter] public Func<Task>? AddButtonCallback { get; set; }
|
|
|
|
public async Task SelectItem(TreeItem item)
|
|
{
|
|
foreach (var treeViewItem in _leafs)
|
|
{
|
|
treeViewItem.Item.IsSelected = treeViewItem.Item.Id == item.Id;
|
|
await treeViewItem.UpdateVisualState();
|
|
}
|
|
|
|
SelectedItem = item;
|
|
await SelectedItemChanged.InvokeAsync(SelectedItem);
|
|
}
|
|
|
|
public void RegisterItem(TreeViewItem item)
|
|
{
|
|
_leafs.Add(item);
|
|
}
|
|
|
|
public void UnregisterItem(TreeViewItem item)
|
|
{
|
|
_leafs.Remove(item);
|
|
}
|
|
|
|
private async Task OnClickAddButton()
|
|
{
|
|
if (AddButtonCallback != null)
|
|
await AddButtonCallback();
|
|
}
|
|
} |