From 327da3104dfb5bb957ad6ff731c934e3529fd3e4 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Sat, 2 Apr 2022 12:03:21 +0200 Subject: [PATCH] =?UTF-8?q?feat(editor):=20=E2=99=BF=EF=B8=8F=20Improve=20?= =?UTF-8?q?previewing=20blocks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Graph/Nodes/BlockNode/BlockNode.tsx | 5 +- .../shared/Graph/Nodes/ItemNode/ItemNode.tsx | 68 ++++++++++--------- .../shared/Graph/Nodes/StepNode/StepNode.tsx | 8 ++- 3 files changed, 46 insertions(+), 35 deletions(-) diff --git a/apps/builder/components/shared/Graph/Nodes/BlockNode/BlockNode.tsx b/apps/builder/components/shared/Graph/Nodes/BlockNode/BlockNode.tsx index a4ad0eecf..b6b810530 100644 --- a/apps/builder/components/shared/Graph/Nodes/BlockNode/BlockNode.tsx +++ b/apps/builder/components/shared/Graph/Nodes/BlockNode/BlockNode.tsx @@ -38,8 +38,9 @@ export const BlockNode = ({ block, blockIndex }: Props) => { const [isMouseDown, setIsMouseDown] = useState(false) const [isConnecting, setIsConnecting] = useState(false) const isPreviewing = - previewingEdge?.to.blockId === block.id || - previewingEdge?.from.blockId === block.id + previewingEdge?.from.blockId === block.id || + (previewingEdge?.to.blockId === block.id && + isNotDefined(previewingEdge.to.stepId)) const isStartBlock = isDefined(block.steps[0]) && block.steps[0].type === 'start' diff --git a/apps/builder/components/shared/Graph/Nodes/ItemNode/ItemNode.tsx b/apps/builder/components/shared/Graph/Nodes/ItemNode/ItemNode.tsx index 9ea22fe3c..c4645a136 100644 --- a/apps/builder/components/shared/Graph/Nodes/ItemNode/ItemNode.tsx +++ b/apps/builder/components/shared/Graph/Nodes/ItemNode/ItemNode.tsx @@ -1,6 +1,6 @@ import { Flex } from '@chakra-ui/react' import { ContextMenu } from 'components/shared/ContextMenu' -import { Coordinates } from 'contexts/GraphContext' +import { Coordinates, useGraph } from 'contexts/GraphContext' import { NodePosition, useDragDistance } from 'contexts/GraphDndContext' import { useTypebot } from 'contexts/TypebotContext' import { @@ -35,8 +35,10 @@ export const ItemNode = ({ onMouseDown, }: Props) => { const { typebot } = useTypebot() + const { previewingEdge } = useGraph() const [isMouseOver, setIsMouseOver] = useState(false) const itemRef = useRef(null) + const isPreviewing = previewingEdge?.from.itemId === item.id const isConnectable = !( typebot?.blocks[indices.blockIndex].steps[ indices.stepIndex @@ -62,39 +64,43 @@ export const ItemNode = ({ {(ref, isOpened) => ( - - {typebot && isConnectable && ( - + - )} + {typebot && isConnectable && ( + + )} + )} diff --git a/apps/builder/components/shared/Graph/Nodes/StepNode/StepNode.tsx b/apps/builder/components/shared/Graph/Nodes/StepNode/StepNode.tsx index 3cb0cd849..eff3ed0ae 100644 --- a/apps/builder/components/shared/Graph/Nodes/StepNode/StepNode.tsx +++ b/apps/builder/components/shared/Graph/Nodes/StepNode/StepNode.tsx @@ -51,6 +51,7 @@ export const StepNode = ({ openedStepId, setOpenedStepId, setFocusedBlockId, + previewingEdge, } = useGraph() const { updateStep } = useTypebot() const [isConnecting, setIsConnecting] = useState(false) @@ -62,6 +63,8 @@ export const StepNode = ({ ) const stepRef = useRef(null) + const isPreviewing = isConnecting || previewingEdge?.to.stepId === step.id + const onDrag = (position: NodePosition) => { if (step.type === 'start' || !onMouseDown) return onMouseDown(position, step) @@ -170,8 +173,9 @@ export const StepNode = ({ flex="1" userSelect="none" p="3" - borderWidth="1px" - borderColor={isConnecting || isOpened ? 'blue.400' : 'gray.200'} + borderWidth={isOpened || isPreviewing ? '2px' : '1px'} + borderColor={isOpened || isPreviewing ? 'blue.400' : 'gray.200'} + margin={isOpened || isPreviewing ? '-1px' : 0} rounded="lg" cursor={'pointer'} bgColor="gray.50"