In der .view.xml-Schicht (com.top_logic.layout.view) fehlt bisher ein Baustein, um abhängig von einem Kanalwert unterschiedliche Sichten anzuzeigen. Es gibt kein <switch>/`<case>`/`<if>`, und kein View-Element besitzt eine visible/`render-if`-Expression.
Ziel
Ein neues, allgemein wiederverwendbares <switch>-Element, das abhängig von einem input-Kanalwert genau eine von mehreren konfigurierten Sichten anzeigt. Die Fallunterscheidung erfolgt über eine TL-Script-Boolean-Expression pro <case> (erster Treffer gewinnt), optional mit <default>.
{{{#!xml <switch input="selectedPart">
<case test="p -> $p != null && $p.instanceOf(tl.model:TLClass)">
<form input="selectedPart" withEditMode="true"><field attribute="name"/></form>
</case>
<default>
<form input="selectedPart" withEditMode="true"><field attribute="name"/></form>
</default>
</switch> }}}
Umsetzung
- Neues SwitchElement (@TagName("switch")) mit <case test="…"> und optionalem <default>, auf Basis von ReactDeckPaneControl (zeigt genau ein Kind, lazy + gecacht).
- Erster truthy Test gewinnt, sonst <default>, sonst leer. Umschalten nur bei Wechsel des Treffer-Falls; innerhalb eines Falls aktualisiert sich der an den Kanal gebundene Inhalt selbst. Gecachte Fälle behalten ihren Zustand (z.B. Editiermodus).
- Beispiel-Verdrahtung im Modell-Editor (model-editor.view.xml): Details-Panel zeigt für eine selektierte Klasse den TLClass-Fall, sonst den Default.
Spec und Implementierungsplan: docs/superpowers/specs/2026-07-20-view-switch-element-design.md bzw. docs/superpowers/plans/2026-07-20-view-switch-element.md.