diff --git a/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor b/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor
index 4f2511a..b811c92 100644
--- a/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor
+++ b/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor
@@ -69,14 +69,6 @@
-
-
-
-
@@ -117,7 +109,6 @@
private List _templates = new();
private List _folders = new();
- private bool _showDerived;
private bool _loading = true;
private string? _errorMessage;
@@ -129,12 +120,6 @@
await LoadTemplatesAsync();
}
- private void OnToggleShowDerived(ChangeEventArgs e)
- {
- _showDerived = e.Value is bool b && b;
- BuildTemplateTree();
- }
-
private async Task LoadTemplatesAsync()
{
_loading = true;
@@ -193,11 +178,10 @@
roots.Add(node);
}
- // 3. Template nodes with composition leaves
- var visibleTemplates = _showDerived
- ? _templates
- : _templates.Where(t => !t.IsDerived);
- foreach (var t in visibleTemplates.OrderBy(t => t.Name, StringComparer.OrdinalIgnoreCase))
+ // 3. Template nodes with composition leaves. Derived templates are
+ // slot-owned and reached via their parent's composition leaf — never
+ // shown as standalone tree nodes.
+ foreach (var t in _templates.Where(t => !t.IsDerived).OrderBy(t => t.Name, StringComparer.OrdinalIgnoreCase))
{
var compChildren = t.Compositions
.OrderBy(c => c.InstanceName, StringComparer.OrdinalIgnoreCase)