diff --git a/src/ScadaLink.CentralUI/Components/Shared/TreeView.razor b/src/ScadaLink.CentralUI/Components/Shared/TreeView.razor
index 1c4c2b3..40954c1 100644
--- a/src/ScadaLink.CentralUI/Components/Shared/TreeView.razor
+++ b/src/ScadaLink.CentralUI/Components/Shared/TreeView.razor
@@ -38,6 +38,12 @@ else
var isSelected = Selectable && SelectedKey != null && SelectedKey.Equals(key);
var rowClasses = "tv-row" + (isSelected ? " tv-selected " + SelectedCssClass : "");
+ // Checkbox-mode tri-state computed for this node (folder = aggregate of
+ // descendant leaves; leaf = present-in-SelectedKeys).
+ var checkState = SelectionMode == TreeViewSelectionMode.Checkbox
+ ? ComputeCheckState(item)
+ : CheckState.Unchecked;
+
@@ -51,6 +57,15 @@ else
{
}
+ @if (SelectionMode == TreeViewSelectionMode.Checkbox)
+ {
+ OnCheckboxToggle(item)"
+ @onclick:stopPropagation />
+ }
OnContentClick(key)" @onclick:stopPropagation>
@NodeContent(item)
@@ -99,6 +114,15 @@ else
[Parameter] public string SelectedCssClass { get; set; } = "bg-primary bg-opacity-10";
[Parameter] public string? StorageKey { get; set; }
+ // ── Checkbox-selection mode (additive; SelectionMode=Single keeps prior behaviour) ──
+ [Parameter] public TreeViewSelectionMode SelectionMode { get; set; } = TreeViewSelectionMode.Single;
+ [Parameter] public HashSet