feat(props): add onDrag handler

This commit is contained in:
moklick
2021-01-26 18:17:29 +01:00
parent 16b393c95b
commit 3dedd615af
5 changed files with 23 additions and 8 deletions
+9 -6
View File
@@ -1,5 +1,5 @@
import React, { useEffect, useRef, memo, ComponentType, CSSProperties, useMemo, MouseEvent, useCallback } from 'react';
import { DraggableCore } from 'react-draggable';
import { DraggableCore, DraggableData, DraggableEvent } from 'react-draggable';
import cc from 'classcat';
import { useStoreActions } from '../../store/hooks';
@@ -21,6 +21,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
onMouseLeave,
onContextMenu,
onNodeDragStart,
onNodeDrag,
onNodeDragStop,
style,
className,
@@ -107,7 +108,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
);
const onDragStart = useCallback(
(event) => {
(event: DraggableEvent) => {
onNodeDragStart?.(event as MouseEvent, node);
if (selectNodesOnDrag && isSelectable) {
@@ -125,12 +126,14 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
);
const onDrag = useCallback(
(_, data) => {
(event: DraggableEvent, draggbleData: DraggableData) => {
onNodeDrag?.(event as MouseEvent, id, draggbleData);
updateNodePosDiff({
id,
diff: {
x: data.deltaX,
y: data.deltaY,
x: draggbleData.deltaX,
y: draggbleData.deltaY,
},
});
},
@@ -138,7 +141,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
);
const onDragStop = useCallback(
(event) => {
(event: DraggableEvent) => {
// onDragStop also gets called when user just clicks on a node.
// Because of that we set dragging to true inside the onDrag handler and handle the click here
if (!isDragging) {