feat: tabbed node property panel (MetadataForm stepVariant="tabs" + NodePropertyPanel)#835
feat: tabbed node property panel (MetadataForm stepVariant="tabs" + NodePropertyPanel)#835CalinaCristian wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a tabbed presentation for multi-step node property forms by introducing MetadataForm stepVariant="tabs" in @uipath/apollo-wind, then composing it into a new NodePropertyPanel chrome component in @uipath/apollo-react. Also pins Vite to 8.0.13 in the Storybook/Landing apps to avoid the reported storybook dev crash.
Changes:
- Add
stepVariant?: 'wizard' | 'tabs'toMetadataForm, implementing a single-RHF-instance tabbed steps UI (with tests + story). - Introduce
NodePropertyPanel(optional title bar, node identity header, action slot) rendering one tabbedMetadataFormfrom caller-providedschema+plugins(with tests + stories). - Pin Vite to
8.0.13for Storybook/Landing (and lockfile) to restore local dev behavior.
Reviewed changes
Copilot reviewed 11 out of 12 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Updates lockfile to reflect Vite 8.0.13 pin (and associated dependency graph). |
| packages/apollo-wind/src/components/forms/metadata-form.tsx | Adds stepVariant="tabs" rendering path and new TabbedStepForm implementation. |
| packages/apollo-wind/src/components/forms/metadata-form.test.tsx | Adds unit coverage for tab rendering + value retention across tab switches. |
| packages/apollo-wind/src/components/forms/metadata-form.stories.tsx | Adds a “Tabbed Steps” Storybook example schema and story. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.types.ts | Defines the new panel’s public prop contract (schema/plugins/resetKey/contentInset/etc.). |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.tsx | Implements the panel chrome and embeds MetadataForm stepVariant="tabs". |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.test.tsx | Adds unit tests for title bar, close behavior, header, tabs, empty state, and submit suppression. |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/NodePropertyPanel.stories.tsx | Adds Storybook stories for common panel configurations (with/without title bar, no-parameters schema). |
| packages/apollo-react/src/canvas/components/NodePropertyPanel/index.ts | Adds barrel exports for the new component and its props type. |
| packages/apollo-react/src/canvas/components/index.ts | Re-exports NodePropertyPanel from the canvas components entrypoint. |
| apps/storybook/package.json | Pins Vite to 8.0.13 for Storybook app devDependencies. |
| apps/landing/package.json | Pins Vite to 8.0.13 for Landing app devDependencies. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
ca14e26 to
2d2d9e4
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Dependency License Review
License distribution
Excluded packages
|
📊 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 |
2d2d9e4 to
49a4e28
Compare
Render a multi-step FormSchema as a tab bar over a single form instance (values and validation shared across tabs), alongside the existing wizard presentation. Hides empty/conditioned-out steps, clamps the active tab to a still-visible step, and supports an optional full-bleed underline via the --mf-content-inset CSS var (default 0). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Presentational docked properties panel: optional title bar, node identity row (icon/label/category + action slot), and a single MetadataForm rendered with stepVariant="tabs". The caller supplies schema + plugins, so real-time change handling and custom fields stay consumer-side; no Submit by default (live-edit surface). Tab and content padding plus the underline full-bleed derive from one contentInset prop. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
49a4e28 to
9bfc3f8
Compare
What
Adds a tabbed presentation for node property forms, in two layers.
1.
apollo-wind—MetadataFormstepVariant="tabs"stepVariant?: 'wizard' | 'tabs'(default'wizard'; no change to existing forms).'tabs'renders a multi-stepFormSchema's steps as a tab bar over a single RHF instance — values and validation are shared across tabs (no per-tab form state loss). Hides empty / conditioned-out steps, clamps the active tab to a still-visible step (and persists the clamp so a reappearing step doesn't snap back), and offers an opt-in full-bleed underline via--mf-content-inset(default0→ underline at content width, safe for any consumer).Forms/Examples → Tabbed Stepsstory.2.
apollo-react—NodePropertyPanelactionslot), and oneMetadataForm(stepVariant="tabs").schema+pluginsdirectly (no manifest fetch / noNodeRegistryProviderrequirement), forwardspluginsso real-time change handling and custom field components stay consumer-side,resetKeyfor per-node remount,disabled, and a singlecontentInsetcontrolling content padding + the tab underline. No Submit button by default (live-edit surface).Relationship to #809
Supersedes the
NodePropertyPanelfrom #809. That version fetchedmanifest.formviauseNodeManifest(required aNodeRegistryProvider) and rendered oneMetadataFormper tab — losing field state on tab switch, droppinginitialData, and showing a per-tab Submit. This branch moves the tab presentation intoMetadataForm(single instance) and makesNodePropertyPanela thin chrome wrapper that takesschema+plugins. That contract is what makes it consumable from flow-workbench (validated in a dev-published POC).Test plan
apollo-wind: 17/17 metadata-form tests (incl. tabs render + value retention across tab switch).apollo-react: 7/7 NodePropertyPanel tests.Forms/Examples → Tabbed Steps,Components/Panels/Node Property Panel.🤖 Generated with Claude Code