feat(apollo-react): add NodePropertyPanel editor stories#793
feat(apollo-react): add NodePropertyPanel editor stories#7931980computer wants to merge 9 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Dependency License Review
License distribution
Excluded packages
|
ee7c2f6 to
da95c64
Compare
8ef5f19 to
9577354
Compare
da95c64 to
bd8104b
Compare
c6a7eab to
cfc1b2f
Compare
60208e7 to
479392b
Compare
bd8104b to
cd91c52
Compare
There was a problem hiding this comment.
Pull request overview
This PR introduces new canvas UI components and Storybook updates in apollo-react, notably a new NodePropertyPanel (manifest-driven MetadataForm rendering) and a new ProbeCard (floating debug watch/inspect card). It also adds a standalone ExpressionField demoed in Storybook, but does not appear to implement the PR description’s promised MetadataForm “custom field type” (type: 'custom') backed by Monaco/CodeMirror.
Changes:
- Added ProbeCard (draggable/resizable watch list UI) plus supporting hooks and unit tests.
- Added NodePropertyPanel (renders a node’s
FormSchemafromNodeRegistryProvider, with single-page + multi-step tab support) plus tests and stories. - Added ExpressionField (read-only code display + mode toggle) and a Storybook “Expression Editor” story, and updated Storybook nav ordering.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/apollo-react/src/canvas/components/ProbeCard/useLatestRef.ts | Adds a small “latest value” ref hook using an isomorphic layout effect. |
| packages/apollo-react/src/canvas/components/ProbeCard/useDragSession.ts | Adds a reusable window-listener-based mouse drag session hook with cleanup. |
| packages/apollo-react/src/canvas/components/ProbeCard/ProbeResizeHandles.tsx | Adds resize handle UI that wires into useDragSession. |
| packages/apollo-react/src/canvas/components/ProbeCard/ProbeCard.tsx | Introduces the ProbeCard component (watch list rendering + drag/resize + wheel forwarding + keyboard delete). |
| packages/apollo-react/src/canvas/components/ProbeCard/ProbeCard.test.tsx | Adds unit tests covering keyboard shortcuts, wheel forwarding, and drag cleanup behavior. |
| packages/apollo-react/src/canvas/components/ProbeCard/index.ts | Exports ProbeCard and related public types. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.types.ts | Defines NodePropertyPanelProps. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.tsx | Implements manifest-driven FormSchema rendering with tabs for multi-step forms. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.test.tsx | Adds unit tests for title bar, close behavior, empty states, and multi-step tab rendering. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.stories.tsx | Adds extensive Storybook stories for NodePropertyPanel and an “Expression Editor” demo using ExpressionField. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/index.ts | Re-exports NodePropertyPanel and ExpressionField APIs. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/ExpressionField.tsx | Adds a read-only code display component with mode toggle and UI chrome. |
| packages/apollo-react/src/canvas/components/NodePropertiesPanel/NodePropertiesPanel.stories.tsx | Adds a new “Inspector” canvas story variant and supporting imports. |
| packages/apollo-react/src/canvas/components/index.ts | Re-exports ProbeCard and NodePropertyPanel from the canvas components barrel. |
| apps/storybook/.storybook/preview.tsx | Updates Storybook sidebar ordering to include “Node Property Panel”. |
📊 Coverage + size by packagePer-package coverage and bundle size on this PR. New-line coverage = of the source lines this PR adds or changes, the % hit by tests.
"Coverage" is each package's own |
cd91c52 to
68ad46b
Compare
68ad46b to
fa02c32
Compare
Scaffolds four Storybook stories for the Node Property Panel expression editor variants: - Editor Full: expanded panel with toolbar, mode switcher, undo/redo, AI assist, and Insert variable affordance - Editor Compact: collapsed field rows that expand inline on click - Editor Inline: single-line fx inputs with variable pill support - Inline Editing: node title and description editable directly in the identity row (click to edit, Enter/blur to confirm) Downgrades Storybook app Vite from 8 to 7 to resolve a pre-bundling incompatibility between Vite 8, MUI, and Emotion that caused all story previews to show a white screen. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fa02c32 to
21cc941
Compare
…editing - Editor Full, Compact, and Inline stories for NodePropertyPanel - Inline title/category editing on all editor stories (click-to-edit) - CasePanel with inline title editing and delete-on-hover for Compact - InlineCaseRow with 40px Monaco field and Fixed/Expression mode toggle - Monaco Future Dark/Light backgrounds updated to surface-overlay - Switch component replaced with apollo-wind Switch in all editor stories - @monaco-editor/react added as devDependency - biome: noAutofocus off for stories files; noUnused cleanup Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…re vite 8 in storybook - ExpressionField.onChange was in the public interface but never called (editing is Phase 2); removing it prevents misleading API surface - apps/storybook/package.json accidentally downgraded vite ^8.0.0 → ^7.3.5 in the original commit; restore to ^8.0.0 (per the vite 8 migration in commit 68efebd) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…inset regressions - Restore border-b to title bar and identity row (accidentally removed during contentInset refactor; no intent documented) - Apply SURFACE_REMAP to children wrapper so Apollo Wind inputs rendered via the children prop get the correct surface-overlay token - Fix empty state to use --mf-content-inset instead of hardcoded px-6 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Adds undici override (>=7.28.0) to fix GHSA-vmh5-mc38-953g (high) and GHSA-pr7r-676h-xcf6 (moderate) in @semantic-release/github chain. - Updates dompurify override to >=3.4.11 to fix GHSA-cmwh-pvxp-8882. - Adds both to minimumReleaseAgeExclude (packages within 14-day quarantine). - pnpm v11 requires overrides in pnpm-workspace.yaml, not package.json. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9fc8f1f to
bf28692
Compare
- Remove duplicate CanvasBackground wrappers from 4 editor stories; meta.decorators already provides the canvas background for every story - Add aria-label to expand/collapse case button (a11y) - Add aria-label to expression mode toggle button (a11y) - Export ExpressionField and its types from the NodePropertyPanel index - Add unit test for children rendering path (asserts schema UI is hidden) - Fix contentInset JSDoc: remove stale reference to tab-underline full-bleed Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Constrain undici override to ^7.28.0 (8.x requires Node >=22.19.0, stricter than repo minimum >=22.12.0); lockfile now resolves 7.28.0 - Update children JSDoc to list all props ignored when children are provided (schema, plugins, onSubmit, disabled, resetKey) - Replace <p> with <span class="block"> in ExpressionField description to prevent Angular Material typography from injecting bottom margins Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
document.body is undefined in Node — autodocs SSR renders the story in a non-browser context, causing a crash. Fall back to the dark theme when document is unavailable. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| ) : ( | ||
| <div className="min-h-0 flex-1 overflow-auto"> | ||
| <div | ||
| style={{ ...SURFACE_REMAP, '--mf-content-inset': contentInset } as CSSProperties} |
There was a problem hiding this comment.
why did we move this?
Summary
Adds three new canvas NodePropertyPanel editor stories to Storybook, demonstrating interactive property panels for workflow nodes.
Stories added
Component changes
NodePropertyPanel.tsx— identity row gap updated to 14 px;childrenprop added so editor stories can render custom layouts;SURFACE_REMAPapplied to children wrapper; border separators retained on title bar and identity row;contentInsetnow drives the CSS custom property on the root elementNodePropertyPanel.types.ts— addedchildrenandcontentInsetpropsmonaco.ts— fixedapolloFutureDarkMonacoandapolloFutureLightMonacoeditor backgrounds to matchsurface-overlaymetadata-form.tsx—TabbedStepFormtab style updated from underline to compact pill tabs, matching the properties panel design languageSwitch— replaced placeholder toggle with the correctSwitchcomponent from@uipath/apollo-windDependencies
@monaco-editor/react ^4.7.0added as devDependency toapollo-react(used in story files only, not shipped in the package bundle)