Fix onClick handler for draggable nodes

This commit is contained in:
Furkan Kalaycioglu
2022-05-10 22:28:28 +03:00
parent df526b2a10
commit 0ef3ce81a8
+11 -15
View File
@@ -58,6 +58,7 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
noPanClassName, noPanClassName,
noDragClassName, noDragClassName,
}: WrapNodeProps) => { }: WrapNodeProps) => {
const [dragging, setDragging] = useState(false);
const store = useStoreApi(); const store = useStoreApi();
const { addSelectedNodes, unselectNodesAndEdges, updateNodePosition, updateNodeDimensions } = useStore( const { addSelectedNodes, unselectNodesAndEdges, updateNodePosition, updateNodeDimensions } = useStore(
selector, selector,
@@ -86,22 +87,20 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
const onSelectNodeHandler = useCallback( const onSelectNodeHandler = useCallback(
(event: MouseEvent) => { (event: MouseEvent) => {
if (!isDraggable) { if (isSelectable) {
if (isSelectable) { store.setState({ nodesSelectionActive: false });
store.setState({ nodesSelectionActive: false });
if (!selected) { if (!selected) {
addSelectedNodes([id]); addSelectedNodes([id]);
}
}
if (onClick) {
const node = store.getState().nodeInternals.get(id)!;
onClick(event, { ...node });
} }
} }
if (onClick) {
const node = store.getState().nodeInternals.get(id)!;
onClick(event, { ...node });
}
}, },
[isSelectable, selected, isDraggable, onClick, id] [isSelectable, selected, onClick, id]
); );
const onDragStart = useCallback( const onDragStart = useCallback(
@@ -130,9 +129,6 @@ export default (NodeComponent: ComponentType<NodeProps>) => {
[id, selected, selectNodesOnDrag, isSelectable, onNodeDragStart] [id, selected, selectNodesOnDrag, isSelectable, onNodeDragStart]
); );
// As one of the props passed to a custom node
const [dragging, setDragging] = useState(false);
const onDrag = useCallback( const onDrag = useCallback(
(event: UseDragEvent, dragPos: UseDragData) => { (event: UseDragEvent, dragPos: UseDragData) => {
updateNodePosition({ id, diff: { x: dragPos.dx, y: dragPos.dy } }); updateNodePosition({ id, diff: { x: dragPos.dx, y: dragPos.dy } });