Skip to content

feat(apollo-react): add NodePropertyPanel with FormSchema support (Phase 1)#809

Open
CalinaCristian wants to merge 2 commits into
mainfrom
codex/pr-760-node-property-panel
Open

feat(apollo-react): add NodePropertyPanel with FormSchema support (Phase 1)#809
CalinaCristian wants to merge 2 commits into
mainfrom
codex/pr-760-node-property-panel

Conversation

@CalinaCristian

Copy link
Copy Markdown
Collaborator

Recreates #760 as a fresh PR against main because GitHub cannot reopen a merged PR. #760 was merged into #781; #781 is now repaired with revert commit 60208e7.

Cherry-picked payload:

  • 0fd8ed3 feat(apollo-react): add ProbeCard canvas component
  • cfc1b2f feat(apollo-react): add NodePropertyPanel with FormSchema support (Phase 1)

Verification:

  • pnpm --filter @uipath/apollo-react test -- src/canvas/components/ProbeCard/ProbeCard.test.tsx src/canvas/components/NodePropertyPanel/NodePropertyPanel.test.tsx
  • pnpm --filter @uipath/apollo-react build
  • pnpm exec biome check src/canvas/components/index.ts src/canvas/components/ProbeCard src/canvas/components/NodePropertyPanel (run from packages/apollo-react)

CalinaCristian and others added 2 commits June 11, 2026 16:55
Floating probe/watch card for canvas debugging — drag-to-reposition and
resize via ProbeResizeHandles, keyboard shortcuts, wheel-event forwarding
guarded by handler presence, drag-session cleanup via useDragSession, and
useLatestRef for stable handler refs. Includes 8 unit tests.

Extracted from the original PR #760 branch; content unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ase 1)

Docked properties panel that renders a node's form: FormSchema (from
@uipath/apollo-wind) directly from its manifest in NodeRegistryProvider —
no prop drilling. Multi-step schemas (steps) render as tabs; single-page
schemas (sections) render as a flat MetadataForm; empty state when the
manifest has no form. onSubmit is async-compatible. Includes 8 unit tests
and Multi-step / SinglePage / NoSchema stories.

Variable binding ({x} bind button / variable picker) is Phase 2.

Extracted from the original PR #760 branch; content unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 11, 2026 23:59
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (PT)
apollo-design 🟢 Ready Preview, Logs Jun 11, 2026, 05:04:49 PM
apollo-docs 🟢 Ready Preview, Logs Jun 11, 2026, 05:04:49 PM
apollo-landing 🟢 Ready Preview, Logs Jun 11, 2026, 05:04:49 PM
apollo-vertex 🟢 Ready Preview, Logs Jun 11, 2026, 05:04:49 PM

@github-actions

Copy link
Copy Markdown
Contributor

Dependency License Review

  • 1922 package(s) scanned
  • ✅ No license issues found
  • ⚠️ 2 package(s) excluded (see details below)
License distribution
License Packages
MIT 1692
ISC 89
Apache-2.0 55
BSD-3-Clause 27
BSD-2-Clause 23
BlueOak-1.0.0 8
MPL-2.0 4
MIT-0 3
CC0-1.0 3
MIT OR Apache-2.0 2
(MIT OR Apache-2.0) 2
Unlicense 2
LGPL-3.0-or-later 1
Python-2.0 1
CC-BY-4.0 1
(MPL-2.0 OR Apache-2.0) 1
Unknown 1
Artistic-2.0 1
(WTFPL OR MIT) 1
(BSD-2-Clause OR MIT OR Apache-2.0) 1
CC-BY-3.0 1
0BSD 1
(MIT OR CC0-1.0) 1
MIT AND ISC 1
Excluded packages
Package Version License Reason
@img/sharp-libvips-linux-x64 1.2.4 LGPL-3.0-or-later LGPL pre-built binary, not linked
khroma 2.1.0 Unknown MIT per GitHub repo, missing license field in package.json

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds two new Canvas UI building blocks to @uipath/apollo-react: a manifest-driven NodePropertyPanel for rendering FormSchema and a floating ProbeCard for inspecting node outputs, along with tests and Storybook wiring.

Changes:

  • Introduces NodePropertyPanel that reads manifest.form from NodeRegistryProvider and renders single-page (sections) or multi-step (steps) schemas via MetadataForm + tabs.
  • Adds ProbeCard (drag/resize + wheel forwarding) with supporting hooks (useDragSession, useLatestRef) and unit tests.
  • Exposes new components through the canvas components barrel and updates Storybook ordering to include the new panel.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/apollo-react/src/canvas/components/ProbeCard/useLatestRef.ts Adds a small “latest ref” hook with isomorphic layout effect behavior.
packages/apollo-react/src/canvas/components/ProbeCard/useDragSession.ts Adds a reusable window-listener-backed mouse drag session hook.
packages/apollo-react/src/canvas/components/ProbeCard/ProbeResizeHandles.tsx Adds resize handle UI that uses useDragSession.
packages/apollo-react/src/canvas/components/ProbeCard/ProbeCard.tsx Implements the ProbeCard UI, interactions, and wheel forwarding logic.
packages/apollo-react/src/canvas/components/ProbeCard/ProbeCard.test.tsx Adds unit tests for keyboard close, wheel forwarding, and drag cleanup.
packages/apollo-react/src/canvas/components/ProbeCard/index.ts Exports ProbeCard and its public types.
packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.types.ts Defines public props for the new panel component.
packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.tsx Implements manifest-driven panel rendering for FormSchema (tabs + MetadataForm).
packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.test.tsx Adds unit tests for title/header rendering, empty states, and step/tab behavior.
packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.stories.tsx Adds Storybook stories demonstrating single/multi-step schemas and variants.
packages/apollo-react/src/canvas/components/NodePropertyPanel/index.ts Exports NodePropertyPanel and its props type.
packages/apollo-react/src/canvas/components/index.ts Re-exports the new NodePropertyPanel and ProbeCard from the components barrel.
apps/storybook/.storybook/preview.tsx Updates story sort order to include Node Property Panel in Panels section.

Comment on lines +63 to +66
const steps = form && isMultiStep(form) ? form.steps : null;
const [activeStep, setActiveStep] = useState<string>('');
const currentStep = activeStep || steps?.[0]?.id || '';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants