Skip to content

feat(sdk): add isValidConnection and reactFlowProps to Root#35

Merged
piotrblaszczyk merged 3 commits into
mainfrom
feat/connection-validation-prop
Jun 16, 2026
Merged

feat(sdk): add isValidConnection and reactFlowProps to Root#35
piotrblaszczyk merged 3 commits into
mainfrom
feat/connection-validation-prop

Conversation

@piotrblaszczyk

Copy link
Copy Markdown
Contributor

Expose two opt-in props on <WorkflowBuilder.Root>:

  • isValidConnection: validates connections live while the user drags them. Receives the candidate connection plus the resolved source/target nodes, so a rule branches on data.type without touching the store. A rejected drop creates no edge and does not flicker. Fails open when an endpoint cannot be resolved to a node.
  • reactFlowProps: escape hatch that forwards extra props to the underlying ReactFlow canvas. SDK-owned props (graph data, connection/selection/change handlers, type maps, the connection line) plus colorMode are omitted from the type and spread last, so they always win and the editor cannot be broken from the outside. Theme via the SDK design tokens, not colorMode.

Config flows through module-level holders (same pattern as edge-templates), written during Root render so descendants read current values on first paint.

Tests cover the holder, the isValidConnection adapter, and the spread-order contract (owned props win, defaults stay overridable). Demo and SDK + site docs updated. Changeset: minor.

Expose two opt-in props on <WorkflowBuilder.Root>:

- isValidConnection: validates connections live while the user drags them.
  Receives the candidate connection plus the resolved source/target nodes,
  so a rule branches on data.type without touching the store. A rejected
  drop creates no edge and does not flicker. Fails open when an endpoint
  cannot be resolved to a node.
- reactFlowProps: escape hatch that forwards extra props to the underlying
  ReactFlow canvas. SDK-owned props (graph data, connection/selection/change
  handlers, type maps, the connection line) plus colorMode are omitted from
  the type and spread last, so they always win and the editor cannot be
  broken from the outside. Theme via the SDK design tokens, not colorMode.

Config flows through module-level holders (same pattern as edge-templates),
written during Root render so descendants read current values on first paint.

Tests cover the holder, the isValidConnection adapter, and the spread-order
contract (owned props win, defaults stay overridable). Demo and SDK + site
docs updated. Changeset: minor.
@piotrblaszczyk piotrblaszczyk merged commit 5dddbff into main Jun 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants