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,
|
||||
Background,
|
||||
EdgeChange,
|
||||
FitViewOptions,
|
||||
NodeChange,
|
||||
ReactFlow,
|
||||
} from '@xyflow/react';
|
||||
@ -32,6 +33,11 @@ const StyledStatusTagContainer = styled.div`
|
||||
padding: ${({ theme }) => theme.spacing(2)};
|
||||
`;
|
||||
|
||||
const defaultFitViewOptions: FitViewOptions = {
|
||||
minZoom: 1.3,
|
||||
maxZoom: 1.3,
|
||||
};
|
||||
|
||||
export const WorkflowDiagramCanvas = ({
|
||||
diagram,
|
||||
workflowWithCurrentVersion,
|
||||
@ -83,6 +89,10 @@ export const WorkflowDiagramCanvas = ({
|
||||
return (
|
||||
<>
|
||||
<ReactFlow
|
||||
key={workflowWithCurrentVersion.currentVersion.id}
|
||||
onInit={({ fitView }) => {
|
||||
fitView(defaultFitViewOptions);
|
||||
}}
|
||||
nodeTypes={{
|
||||
default: WorkflowDiagramStepNode,
|
||||
'create-step': WorkflowDiagramCreateStepNode,
|
||||
|
||||
@ -12,7 +12,7 @@ export const WorkflowDiagramCreateStepNode = () => {
|
||||
<>
|
||||
<StyledTargetHandle type="target" position={Position.Top} />
|
||||
|
||||
<IconButton Icon={IconPlus} />
|
||||
<IconButton Icon={IconPlus} size="small" />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user