yangzhang75 opened a new pull request, #8442:
URL: https://github.com/apache/texera/pull/8442

   ### What changes were proposed in this PR?
   
   Closes #8025. Part of the Form View stack (parent issue #8011), stacked on 
#8441 (PR13).
   
   Lets a reader open a step on the embedded workflow preview to inspect its 
settings, read-only.
   
   - Clicking a step on the read-only canvas highlights it and opens the 
operator's own property panel; clicking empty canvas dismisses it. Selection 
reuses the canvas highlight stream rather than teaching the editor a second 
click mode.
   - The panel is truly read-only: it carries the `inert` attribute (which 
blocks pointer AND keyboard AND focus, unlike `pointer-events:none`), and the 
graph is modification-disabled. The panel itself stays the scroll container so 
a long panel is still readable.
   - The property panel is mounted with `[hidden]`, not `*ngIf`: it shows its 
operator by REACTING to the highlight stream (no initial pull), so it must 
already be subscribed when the click fires. Mounting it on selection subscribes 
too late and opens empty.
   - The Form View stays silent on the shared co-editor channel 
(`updateSharedModelAwareness("currentlyEditing", undefined)`), so inspecting a 
step from the form never shows this session as editing a graph on the other 
view.
   - Adds a `persistPlacement` input to the property editor (default `true`, 
canvas unchanged). The Form View mounts it with `persistPlacement=false`, so 
its `ngOnInit` skips the `#right-container` docked-panel restore that only 
exists in the canvas layout and would otherwise throw.
   
   Turning the panel live to choose what to expose is the authoring PR (#8026).
   
   ### Any related issues, documentation, discussions?
   
   Closes #8025. Part of the Form View feature (parent issue #8011).
   
   ### How was this PR tested?
   
   Unit tests (vitest). Direct-construction tests cover the selection/dismiss 
logic (open on single highlight, clear on empty-canvas unhighlight, silence on 
the co-editor channel, close button). A TestBed rendered test covers the panel 
markup with the property editor stubbed (it is a heavy child with its own spec; 
the stub carries only the two bound inputs). The property-editor spec covers 
the new `persistPlacement` guard: `ngOnInit` does not read `#right-container` 
and `ngOnDestroy` does not persist geometry when `persistPlacement=false`. 100% 
statement and function coverage on the changed source. `ng test`, `ng build 
gui` (AOT), eslint and prettier all pass.
   
   #### Screenshot
   
   A step opened read-only on the Form View: the property panel showing the 
operator's settings, inert.
   
   <!-- paste the screenshot below this line -->
   
   ### Was this PR authored or co-authored using generative AI tooling?
   
   Yes. Co-authored with Claude (Anthropic), reviewed line by line by the 
author before submission.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   
   https://claude.ai/code/session_01FVvP3ttj22f9LB4p9u2anY


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to