feat(browse): Wave-0 Batch G — AbCip/TwinCAT/FOCAS picker bodies gain universal browse

Task 14/15/16: each picker body keeps its manual builder and appends a DriverOperator-gated
browse affordance (mirrors OpcUaClientAddressPickerBody) — Browse/Refresh/Close, DriverBrowseTree
over the universal DiscoveryDriverBrowser session, leaf-only commit (OnNodeSelected fires for
folders too), snapshot-at-open label, fire-and-forget close on dispose. _canBrowse evaluated once
in OnInitializedAsync (CanBrowse constructs a throwaway driver). FOCAS commits the leaf FullName
directly (the group/id builder can't reconstruct it). Editors pass DriverType + GetConfigJson
through. Razor-live-verified at Task 18.
This commit is contained in:
Joseph Doherty
2026-07-15 17:41:21 -04:00
parent bbbda99719
commit 80cda8f227
7 changed files with 341 additions and 15 deletions
@@ -34,7 +34,9 @@
CurrentAddress="@_pickerAddress"
OnPickAddress="@OnAddressPicked">
<AbCipAddressPickerBody CurrentAddress="@_pickerAddress"
CurrentAddressChanged="@((s) => _pickerAddress = s)" />
CurrentAddressChanged="@((s) => _pickerAddress = s)"
DriverType="@DriverType"
GetConfigJson="@GetDriverConfigJson" />
</DriverTagPicker>
}
@@ -32,7 +32,9 @@
CurrentAddress="@_pickerAddress"
OnPickAddress="@OnAddressPicked">
<FOCASAddressPickerBody CurrentAddress="@_pickerAddress"
CurrentAddressChanged="@((s) => _pickerAddress = s)" />
CurrentAddressChanged="@((s) => _pickerAddress = s)"
DriverType="@DriverType"
GetConfigJson="@GetDriverConfigJson" />
</DriverTagPicker>
}
@@ -34,7 +34,9 @@
CurrentAddress="@_pickerAddress"
OnPickAddress="@OnAddressPicked">
<TwinCATAddressPickerBody CurrentAddress="@_pickerAddress"
CurrentAddressChanged="@((s) => _pickerAddress = s)" />
CurrentAddressChanged="@((s) => _pickerAddress = s)"
DriverType="@DriverType"
GetConfigJson="@GetDriverConfigJson" />
</DriverTagPicker>
}