fix(nodes): always drag draggable node even if not selected
This commit is contained in:
@@ -124,6 +124,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
||||
const onDrag = useCallback(
|
||||
(_, data) => {
|
||||
updateNodePosDiff({
|
||||
id,
|
||||
diff: {
|
||||
x: data.deltaX,
|
||||
y: data.deltaY,
|
||||
@@ -148,6 +149,7 @@ export default (NodeComponent: ComponentType<NodeComponentProps>) => {
|
||||
}
|
||||
|
||||
updateNodePosDiff({
|
||||
id: node.id,
|
||||
isDragging: false,
|
||||
});
|
||||
|
||||
|
||||
+2
-2
@@ -263,9 +263,9 @@ export const storeModel: StoreModel = {
|
||||
});
|
||||
}),
|
||||
|
||||
updateNodePosDiff: action((state, { diff = null, isDragging = true }) => {
|
||||
updateNodePosDiff: action((state, { id = null, diff = null, isDragging = true }) => {
|
||||
state.elements.forEach((n) => {
|
||||
if (isNode(n) && state.selectedElements?.find((sNode) => sNode.id === n.id)) {
|
||||
if (isNode(n) && (id === n.id || state.selectedElements?.find((sNode) => sNode.id === n.id))) {
|
||||
if (diff) {
|
||||
n.__rf.position = {
|
||||
x: n.__rf.position.x + diff.x,
|
||||
|
||||
@@ -308,6 +308,7 @@ export type NodePosUpdate = {
|
||||
};
|
||||
|
||||
export type NodeDiffUpdate = {
|
||||
id?: ElementId;
|
||||
diff?: XYPosition;
|
||||
isDragging?: boolean;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user