@* Instance Picker — a combobox whose dropdown is the site's area tree (design 2026-09-08). The field shows the selected instance; the panel hosts the shared TreeView over InstanceTreeBuilder's forest with every area collapsed. Clicking an area row toggles it, activating an instance row selects it and closes the panel — and "activating" is one path for both input modes, because the tree runs in Selectable mode and the mouse click reaches it through TreeView's own content span. Typing filters the forest to the matching instances and their ancestors; Enter picks the first visible match, ArrowDown hands keyboard navigation to the tree and Escape closes without changing the selection. Bootstrap only, no JavaScript: the transparent fixed backdrop closes the panel on an outside click, the same pattern TreeView uses for its context menu. *@ @namespace ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared
@* ip-field lifts the field above the open panel's backdrop — see the .razor.css note. *@
@if (_open) {
@* Selectable is what makes the tree's own Enter/Space activation reach us: it routes BOTH a click on TreeView's content span and a key press on the treeitem through SelectedKeyChanged, so mouse and keyboard share one path (the row label below therefore carries no @onclick of its own — a second handler there would fire twice on a click, since the click bubbles into the content span). SelectedKey is deliberately left unbound: a combobox shows its pick in the field, not as a row highlight, and binding it would also arm TreeView's "selected key no longer in the tree" reset — which fires on every render while the pick is filtered out, and this component would never clear it. SelectedCssClass is emptied to match; with no SelectedKey nothing is ever marked selected, so it is belt-and-braces. *@ @RowLabel(node) @(_hasFilter ? "No instances match." : "No instances at this site.")
}