Set default zoom to workflows (#7331)
## Improvements - This PR calls `fitView` when the Reactflow component inits. It tries to fit the flow in a view with a fixed min and max zoom. - Every time the WorkflowDiagramCanvas is rendered for a different `workflowVersionId`, the `fitView` will be re-called. This is implemented with a React `key`. - The canvas will be re-rendered when an activated/deactivated version is updated (and a new draft version is created.) - It will also be re-rendered when the user selects another workflow version and this doesn't cause the `WorkflowDiagramCanvas` component to unmount. It happens if the user wants to go the previous or next workflow or workflow version. ## Previous Behavior  ## New Behavior  https://github.com/user-attachments/assets/cb73f456-58b1-49c3-bd31-a1650810e9dd ## Notes Closes #7047 This PR is a simplification of #7151. We'll have to improve the way we manage zoom in another PR.
This commit is contained in:
committed by
GitHub
parent
04adcbc521
commit
5d1208f8af
@ -17,6 +17,7 @@ import {
|
|||||||
applyNodeChanges,
|
applyNodeChanges,
|
||||||
Background,
|
Background,
|
||||||
EdgeChange,
|
EdgeChange,
|
||||||
|
FitViewOptions,
|
||||||
NodeChange,
|
NodeChange,
|
||||||
ReactFlow,
|
ReactFlow,
|
||||||
} from '@xyflow/react';
|
} from '@xyflow/react';
|
||||||
@ -32,6 +33,11 @@ const StyledStatusTagContainer = styled.div`
|
|||||||
padding: ${({ theme }) => theme.spacing(2)};
|
padding: ${({ theme }) => theme.spacing(2)};
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const defaultFitViewOptions: FitViewOptions = {
|
||||||
|
minZoom: 1.3,
|
||||||
|
maxZoom: 1.3,
|
||||||
|
};
|
||||||
|
|
||||||
export const WorkflowDiagramCanvas = ({
|
export const WorkflowDiagramCanvas = ({
|
||||||
diagram,
|
diagram,
|
||||||
workflowWithCurrentVersion,
|
workflowWithCurrentVersion,
|
||||||
@ -83,6 +89,10 @@ export const WorkflowDiagramCanvas = ({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ReactFlow
|
<ReactFlow
|
||||||
|
key={workflowWithCurrentVersion.currentVersion.id}
|
||||||
|
onInit={({ fitView }) => {
|
||||||
|
fitView(defaultFitViewOptions);
|
||||||
|
}}
|
||||||
nodeTypes={{
|
nodeTypes={{
|
||||||
default: WorkflowDiagramStepNode,
|
default: WorkflowDiagramStepNode,
|
||||||
'create-step': WorkflowDiagramCreateStepNode,
|
'create-step': WorkflowDiagramCreateStepNode,
|
||||||
|
|||||||
@ -12,7 +12,7 @@ export const WorkflowDiagramCreateStepNode = () => {
|
|||||||
<>
|
<>
|
||||||
<StyledTargetHandle type="target" position={Position.Top} />
|
<StyledTargetHandle type="target" position={Position.Top} />
|
||||||
|
|
||||||
<IconButton Icon={IconPlus} />
|
<IconButton Icon={IconPlus} size="small" />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user