@reltio/components 1.4.2043 → 1.4.2045
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RCTree/RCTree.js +1 -1
- package/RCTree/helper.d.ts +3 -2
- package/RCTree/helper.js +15 -4
- package/RCTree/types.d.ts +1 -0
- package/RCTree/useDnd.d.ts +2 -10
- package/RCTree/useDnd.js +22 -18
- package/cjs/RCTree/RCTree.js +1 -1
- package/cjs/RCTree/helper.d.ts +3 -2
- package/cjs/RCTree/helper.js +17 -5
- package/cjs/RCTree/types.d.ts +1 -0
- package/cjs/RCTree/useDnd.d.ts +2 -10
- package/cjs/RCTree/useDnd.js +21 -17
- package/package.json +2 -2
package/RCTree/RCTree.js
CHANGED
|
@@ -52,7 +52,7 @@ export var RCTree = function (_a) {
|
|
|
52
52
|
}
|
|
53
53
|
}, [scrollToNode]);
|
|
54
54
|
var diplayedTreeData = useMemo(function () {
|
|
55
|
-
if (dropNode && dragNode) {
|
|
55
|
+
if (dropNode && dragNode && dropPositionInfo) {
|
|
56
56
|
if (dropNode.pos === dragNode.pos && dropNode.key === dragNode.key)
|
|
57
57
|
return treeData;
|
|
58
58
|
var dragNodeValue = __assign(__assign({}, dragNode.value), { nodeId: -1 });
|
package/RCTree/helper.d.ts
CHANGED
|
@@ -10,9 +10,10 @@ type ConvertTreeDataProps<Node> = {
|
|
|
10
10
|
isLeaf: (node: Node) => boolean;
|
|
11
11
|
};
|
|
12
12
|
export declare const convertTreeData: <Node extends RCTreeNode>({ data, isLeaf }: ConvertTreeDataProps<Node>) => InternalRCNode<Node>[];
|
|
13
|
-
export declare const getNodeAtPosition: (treeData:
|
|
13
|
+
export declare const getNodeAtPosition: <Node extends RCTreeNode>(treeData: Node[], pos: string) => Node | null;
|
|
14
14
|
export declare const getParentPos: (pos: string) => string;
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const getDropNodeParent: <Node extends RCTreeNode>(treeData: Node[], dropPositionInfo: DropPositionInfo, dragNodePosition: string) => Node | null;
|
|
16
|
+
export declare const changeNodeAtPosition: <Node extends RCTreeNode>(treeData: Node[], pos: string, changeNode: (node: Node) => Node) => Node[];
|
|
16
17
|
export declare const removeNodeAtPosition: (treeData: RCTreeNode[], pos: string) => any;
|
|
17
18
|
export declare const insertNodeAtPosition: (treeData: RCTreeNode[], pos: string, dropPosition: number, node: RCTreeNode) => any;
|
|
18
19
|
export declare const moveNode: (treeData: RCTreeNode[], dragNode: RCTreeNode, dragNodePos: string, dropPositionInfo: DropPositionInfo) => any;
|
package/RCTree/helper.js
CHANGED
|
@@ -42,11 +42,22 @@ export var convertTreeData = function (_a) {
|
|
|
42
42
|
var getPathFromPosition = pipe(split('-'), remove(0, 1), map(Number), intersperse('children'));
|
|
43
43
|
export var getNodeAtPosition = function (treeData, pos) {
|
|
44
44
|
var nodePath = getPathFromPosition(pos);
|
|
45
|
-
return nodePath.length > 0 ? path(nodePath, treeData) : null;
|
|
45
|
+
return nodePath.length > 0 ? path(nodePath, treeData) || null : null;
|
|
46
46
|
};
|
|
47
47
|
export var getParentPos = function (pos) {
|
|
48
48
|
return pos.split('-').slice(0, -1).join('-');
|
|
49
49
|
};
|
|
50
|
+
export var getDropNodeParent = function (treeData, dropPositionInfo, dragNodePosition) {
|
|
51
|
+
var parentNodePosition = dropPositionInfo.dropPosition === AddNodePosition.AsChild
|
|
52
|
+
? dropPositionInfo.pos
|
|
53
|
+
: getParentPos(dropPositionInfo.pos);
|
|
54
|
+
var parentNode = getNodeAtPosition(treeData, // current tree
|
|
55
|
+
// position in the current tree
|
|
56
|
+
slideNodePos(parentNodePosition, // position in the next tree
|
|
57
|
+
dragNodePosition, // position of drag node in the current tree
|
|
58
|
+
false));
|
|
59
|
+
return parentNode;
|
|
60
|
+
};
|
|
50
61
|
export var changeNodeAtPosition = function (treeData, pos, changeNode) {
|
|
51
62
|
var nodePath = getPathFromPosition(pos);
|
|
52
63
|
var node = path(nodePath, treeData);
|
|
@@ -125,7 +136,7 @@ var calcAddNodePosition = function (event) {
|
|
|
125
136
|
var nodeElement = getNodeTopElement(event.target);
|
|
126
137
|
if (!nodeElement)
|
|
127
138
|
return null;
|
|
128
|
-
var offsetY = event.clientY - nodeElement.getBoundingClientRect().top;
|
|
139
|
+
var offsetY = event.clientY - nodeElement.getBoundingClientRect().top || 0;
|
|
129
140
|
var treeNodeHeight = nodeElement.offsetHeight;
|
|
130
141
|
return offsetY < treeNodeHeight / 2 ? AddNodePosition.Top : AddNodePosition.Bottom;
|
|
131
142
|
};
|
|
@@ -135,7 +146,7 @@ var findDepthPosition = function (event, dropNode) {
|
|
|
135
146
|
return null;
|
|
136
147
|
var dropNodeLevel = dropNode.pos.split('-').length - 1;
|
|
137
148
|
var leftPadding = parseFloat(window.getComputedStyle(nodeElement).paddingLeft) || 0;
|
|
138
|
-
var offsetX = event.clientX - nodeElement.getBoundingClientRect().left - leftPadding;
|
|
149
|
+
var offsetX = event.clientX - nodeElement.getBoundingClientRect().left - leftPadding || 0;
|
|
139
150
|
return Math.min(dropNodeLevel + 1, Math.max(Math.round(offsetX / DEPTH_LEVEL_INDENT), dropNodeLevel));
|
|
140
151
|
};
|
|
141
152
|
var changePosLastIndex = function (pos, change) {
|
|
@@ -164,8 +175,8 @@ export var getDropNodePosition = function (event, dropNode, prevDropPositionInfo
|
|
|
164
175
|
var pos = !prevDropPositionInfo || prevDropPositionInfo.addToEnd
|
|
165
176
|
? dropNode.pos
|
|
166
177
|
: slideNodePos(dropNode.pos, getCurrentDropNodePos(prevDropPositionInfo), true);
|
|
167
|
-
var dropNodeDepth = pos.split('-').length - 1;
|
|
168
178
|
var position = pos.split('-');
|
|
179
|
+
var dropNodeDepth = position.length - 1;
|
|
169
180
|
var lastIndex = Number(last(position));
|
|
170
181
|
if (depthPosition === dropNodeDepth) {
|
|
171
182
|
return { pos: pos, dropPosition: addNodePosition };
|
package/RCTree/types.d.ts
CHANGED
package/RCTree/useDnd.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DragEvent } from 'react';
|
|
2
|
-
import { InternalRCNode, RCTreeNode } from './types';
|
|
2
|
+
import { InternalRCNode, RCTreeNode, DropPositionInfo } from './types';
|
|
3
3
|
type Props<Node extends RCTreeNode> = {
|
|
4
4
|
treeData: Node[];
|
|
5
5
|
containerRef: React.RefObject<HTMLDivElement>;
|
|
@@ -30,18 +30,10 @@ export declare const useDnd: <Node extends RCTreeNode>({ treeData, containerRef,
|
|
|
30
30
|
}) => void;
|
|
31
31
|
onDrop: () => void;
|
|
32
32
|
dropIndicatorRender: () => any;
|
|
33
|
-
allowDrop: ({ dragNode, dropNode }: {
|
|
34
|
-
dragNode: InternalRCNode<Node>;
|
|
35
|
-
dropNode: InternalRCNode<Node>;
|
|
36
|
-
}) => boolean;
|
|
37
33
|
};
|
|
38
34
|
nodeDraggable: (node: InternalRCNode<Node>) => boolean;
|
|
39
35
|
dropNode: InternalRCNode<Node>;
|
|
40
36
|
dragNode: InternalRCNode<Node>;
|
|
41
|
-
dropPositionInfo:
|
|
42
|
-
pos: string;
|
|
43
|
-
dropPosition: number;
|
|
44
|
-
addToEnd?: boolean;
|
|
45
|
-
};
|
|
37
|
+
dropPositionInfo: DropPositionInfo;
|
|
46
38
|
};
|
|
47
39
|
export {};
|
package/RCTree/useDnd.js
CHANGED
|
@@ -3,7 +3,7 @@ import { equals } from 'ramda';
|
|
|
3
3
|
import { AddNodePosition } from './types';
|
|
4
4
|
import { useScrollOnDrag } from './useScrollOnDrag';
|
|
5
5
|
import { useDelayedDragEventCall } from './useDelayedDragEventCall';
|
|
6
|
-
import { getDropNodePosition, getExpandedKeys, getNodeAtPosition,
|
|
6
|
+
import { getDropNodePosition, getExpandedKeys, getNodeAtPosition, isDropIndicatorNode, moveNode, slideNodePos, getDropNodeParent } from './helper';
|
|
7
7
|
export var useDnd = function (_a) {
|
|
8
8
|
var treeData = _a.treeData, containerRef = _a.containerRef, expandNode = _a.expandNode, onLoadChildren = _a.onLoadChildren, onChange = _a.onChange, onDropProp = _a.onDrop, canDrop = _a.canDrop, canDrag = _a.canDrag;
|
|
9
9
|
var _b = useState(null), dragNode = _b[0], setDragNode = _b[1];
|
|
@@ -35,7 +35,7 @@ export var useDnd = function (_a) {
|
|
|
35
35
|
}
|
|
36
36
|
}, [expandNode, expandedKeys, onLoadChildren, treeData]);
|
|
37
37
|
var expandDropNode = useCallback(function (newDropPositionInfo) {
|
|
38
|
-
if (onChange && newDropPositionInfo.dropPosition === AddNodePosition.AsChild) {
|
|
38
|
+
if (onChange && newDropPositionInfo.dropPosition === AddNodePosition.AsChild && dragNode) {
|
|
39
39
|
var currentParentNodePos = slideNodePos(newDropPositionInfo.pos, dragNode.pos);
|
|
40
40
|
if (currentParentNodePos.split('-').length > 1) {
|
|
41
41
|
expandDropNodeAtPosition(currentParentNodePos, true);
|
|
@@ -45,14 +45,23 @@ export var useDnd = function (_a) {
|
|
|
45
45
|
var handleSetDropNode = useCallback(function (_a) {
|
|
46
46
|
var event = _a.event, node = _a.node;
|
|
47
47
|
var newDropPositionInfo = getDropNodePosition(event, node, dropPositionInfo) || dropPositionInfo;
|
|
48
|
+
var isNewDropPositionValid = newDropPositionInfo &&
|
|
49
|
+
dragNode &&
|
|
50
|
+
canDrop({
|
|
51
|
+
// Either drop node itself or its parent in the tree
|
|
52
|
+
nextParent: getDropNodeParent(treeData, newDropPositionInfo, dragNode.pos),
|
|
53
|
+
node: dragNode.value
|
|
54
|
+
});
|
|
48
55
|
if (!equals(newDropPositionInfo, dropPositionInfo) && (!isDropIndicatorNode(node) || !dropNode)) {
|
|
49
|
-
|
|
56
|
+
if (isNewDropPositionValid) {
|
|
57
|
+
setDropPositionInfo(newDropPositionInfo);
|
|
58
|
+
}
|
|
50
59
|
expandDropNode(newDropPositionInfo);
|
|
51
60
|
}
|
|
52
|
-
if (node.key !== (dropNode === null || dropNode === void 0 ? void 0 : dropNode.key)) {
|
|
61
|
+
if (node.key !== (dropNode === null || dropNode === void 0 ? void 0 : dropNode.key) && (!isDropIndicatorNode(node) || isNewDropPositionValid)) {
|
|
53
62
|
setDropNode(node);
|
|
54
63
|
}
|
|
55
|
-
}, [dropNode, dropPositionInfo, expandDropNode]);
|
|
64
|
+
}, [dragNode, dropNode, canDrop, dropPositionInfo, expandDropNode, treeData]);
|
|
56
65
|
var delayedHandleDragOver = useDelayedDragEventCall(handleSetDropNode);
|
|
57
66
|
var onDragOver = function (_a) {
|
|
58
67
|
var event = _a.event, node = _a.node;
|
|
@@ -72,22 +81,18 @@ export var useDnd = function (_a) {
|
|
|
72
81
|
}
|
|
73
82
|
};
|
|
74
83
|
var onDrop = function () {
|
|
75
|
-
if (dragNode && isDropIndicatorNode(dropNode)) {
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
onDropProp(newTreeData, dragNode.value, parentNode);
|
|
84
|
+
if (dragNode && dropPositionInfo && isDropIndicatorNode(dropNode)) {
|
|
85
|
+
var parentNode = getDropNodeParent(treeData, dropPositionInfo, dragNode.pos);
|
|
86
|
+
if (canDrop({ nextParent: parentNode, node: dragNode.value })) {
|
|
87
|
+
var newTreeData = moveNode(treeData, dragNode.value, dragNode.pos, dropPositionInfo);
|
|
88
|
+
onDropProp(newTreeData, dragNode.value, parentNode);
|
|
89
|
+
}
|
|
82
90
|
}
|
|
83
91
|
setDragNode(null);
|
|
84
92
|
setDropNode(null);
|
|
85
93
|
onEndDragging();
|
|
94
|
+
window.removeEventListener('mousemove', handleDropOutsideTree);
|
|
86
95
|
};
|
|
87
|
-
var allowDrop = useCallback(function (_a) {
|
|
88
|
-
var dragNode = _a.dragNode, dropNode = _a.dropNode;
|
|
89
|
-
return canDrop({ nextParent: dropNode.value, node: dragNode.value });
|
|
90
|
-
}, [canDrop]);
|
|
91
96
|
var nodeDraggable = useCallback(function (node) {
|
|
92
97
|
return canDrag({ node: node.value });
|
|
93
98
|
}, [canDrag]);
|
|
@@ -97,8 +102,7 @@ export var useDnd = function (_a) {
|
|
|
97
102
|
onDragOver: onDragOver,
|
|
98
103
|
onDragLeave: onDragLeave,
|
|
99
104
|
onDrop: onDrop,
|
|
100
|
-
dropIndicatorRender: dropIndicatorRender
|
|
101
|
-
allowDrop: allowDrop
|
|
105
|
+
dropIndicatorRender: dropIndicatorRender
|
|
102
106
|
},
|
|
103
107
|
nodeDraggable: nodeDraggable,
|
|
104
108
|
dropNode: dropNode,
|
package/cjs/RCTree/RCTree.js
CHANGED
|
@@ -81,7 +81,7 @@ var RCTree = function (_a) {
|
|
|
81
81
|
}
|
|
82
82
|
}, [scrollToNode]);
|
|
83
83
|
var diplayedTreeData = (0, react_1.useMemo)(function () {
|
|
84
|
-
if (dropNode && dragNode) {
|
|
84
|
+
if (dropNode && dragNode && dropPositionInfo) {
|
|
85
85
|
if (dropNode.pos === dragNode.pos && dropNode.key === dragNode.key)
|
|
86
86
|
return treeData;
|
|
87
87
|
var dragNodeValue = __assign(__assign({}, dragNode.value), { nodeId: -1 });
|
package/cjs/RCTree/helper.d.ts
CHANGED
|
@@ -10,9 +10,10 @@ type ConvertTreeDataProps<Node> = {
|
|
|
10
10
|
isLeaf: (node: Node) => boolean;
|
|
11
11
|
};
|
|
12
12
|
export declare const convertTreeData: <Node extends RCTreeNode>({ data, isLeaf }: ConvertTreeDataProps<Node>) => InternalRCNode<Node>[];
|
|
13
|
-
export declare const getNodeAtPosition: (treeData:
|
|
13
|
+
export declare const getNodeAtPosition: <Node extends RCTreeNode>(treeData: Node[], pos: string) => Node | null;
|
|
14
14
|
export declare const getParentPos: (pos: string) => string;
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const getDropNodeParent: <Node extends RCTreeNode>(treeData: Node[], dropPositionInfo: DropPositionInfo, dragNodePosition: string) => Node | null;
|
|
16
|
+
export declare const changeNodeAtPosition: <Node extends RCTreeNode>(treeData: Node[], pos: string, changeNode: (node: Node) => Node) => Node[];
|
|
16
17
|
export declare const removeNodeAtPosition: (treeData: RCTreeNode[], pos: string) => any;
|
|
17
18
|
export declare const insertNodeAtPosition: (treeData: RCTreeNode[], pos: string, dropPosition: number, node: RCTreeNode) => any;
|
|
18
19
|
export declare const moveNode: (treeData: RCTreeNode[], dragNode: RCTreeNode, dragNodePos: string, dropPositionInfo: DropPositionInfo) => any;
|
package/cjs/RCTree/helper.js
CHANGED
|
@@ -20,7 +20,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
20
20
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.calcNodeWidth = exports.setTreeWidth = exports.getLevelLinesData = exports.gatherNodeKeys = exports.isDropIndicatorNode = exports.getDropNodePosition = exports.slideNodePos = exports.getExpandedKeys = exports.moveNode = exports.insertNodeAtPosition = exports.removeNodeAtPosition = exports.changeNodeAtPosition = exports.getParentPos = exports.getNodeAtPosition = exports.convertTreeData = exports.defaultIsLeaf = exports.DEPTH_LEVEL_INDENT = void 0;
|
|
23
|
+
exports.calcNodeWidth = exports.setTreeWidth = exports.getLevelLinesData = exports.gatherNodeKeys = exports.isDropIndicatorNode = exports.getDropNodePosition = exports.slideNodePos = exports.getExpandedKeys = exports.moveNode = exports.insertNodeAtPosition = exports.removeNodeAtPosition = exports.changeNodeAtPosition = exports.getDropNodeParent = exports.getParentPos = exports.getNodeAtPosition = exports.convertTreeData = exports.defaultIsLeaf = exports.DEPTH_LEVEL_INDENT = void 0;
|
|
24
24
|
var ramda_1 = require("ramda");
|
|
25
25
|
var types_1 = require("./types");
|
|
26
26
|
exports.DEPTH_LEVEL_INDENT = 16;
|
|
@@ -47,13 +47,25 @@ exports.convertTreeData = convertTreeData;
|
|
|
47
47
|
var getPathFromPosition = (0, ramda_1.pipe)((0, ramda_1.split)('-'), (0, ramda_1.remove)(0, 1), (0, ramda_1.map)(Number), (0, ramda_1.intersperse)('children'));
|
|
48
48
|
var getNodeAtPosition = function (treeData, pos) {
|
|
49
49
|
var nodePath = getPathFromPosition(pos);
|
|
50
|
-
return nodePath.length > 0 ? (0, ramda_1.path)(nodePath, treeData) : null;
|
|
50
|
+
return nodePath.length > 0 ? (0, ramda_1.path)(nodePath, treeData) || null : null;
|
|
51
51
|
};
|
|
52
52
|
exports.getNodeAtPosition = getNodeAtPosition;
|
|
53
53
|
var getParentPos = function (pos) {
|
|
54
54
|
return pos.split('-').slice(0, -1).join('-');
|
|
55
55
|
};
|
|
56
56
|
exports.getParentPos = getParentPos;
|
|
57
|
+
var getDropNodeParent = function (treeData, dropPositionInfo, dragNodePosition) {
|
|
58
|
+
var parentNodePosition = dropPositionInfo.dropPosition === types_1.AddNodePosition.AsChild
|
|
59
|
+
? dropPositionInfo.pos
|
|
60
|
+
: (0, exports.getParentPos)(dropPositionInfo.pos);
|
|
61
|
+
var parentNode = (0, exports.getNodeAtPosition)(treeData, // current tree
|
|
62
|
+
// position in the current tree
|
|
63
|
+
(0, exports.slideNodePos)(parentNodePosition, // position in the next tree
|
|
64
|
+
dragNodePosition, // position of drag node in the current tree
|
|
65
|
+
false));
|
|
66
|
+
return parentNode;
|
|
67
|
+
};
|
|
68
|
+
exports.getDropNodeParent = getDropNodeParent;
|
|
57
69
|
var changeNodeAtPosition = function (treeData, pos, changeNode) {
|
|
58
70
|
var nodePath = getPathFromPosition(pos);
|
|
59
71
|
var node = (0, ramda_1.path)(nodePath, treeData);
|
|
@@ -138,7 +150,7 @@ var calcAddNodePosition = function (event) {
|
|
|
138
150
|
var nodeElement = getNodeTopElement(event.target);
|
|
139
151
|
if (!nodeElement)
|
|
140
152
|
return null;
|
|
141
|
-
var offsetY = event.clientY - nodeElement.getBoundingClientRect().top;
|
|
153
|
+
var offsetY = event.clientY - nodeElement.getBoundingClientRect().top || 0;
|
|
142
154
|
var treeNodeHeight = nodeElement.offsetHeight;
|
|
143
155
|
return offsetY < treeNodeHeight / 2 ? types_1.AddNodePosition.Top : types_1.AddNodePosition.Bottom;
|
|
144
156
|
};
|
|
@@ -148,7 +160,7 @@ var findDepthPosition = function (event, dropNode) {
|
|
|
148
160
|
return null;
|
|
149
161
|
var dropNodeLevel = dropNode.pos.split('-').length - 1;
|
|
150
162
|
var leftPadding = parseFloat(window.getComputedStyle(nodeElement).paddingLeft) || 0;
|
|
151
|
-
var offsetX = event.clientX - nodeElement.getBoundingClientRect().left - leftPadding;
|
|
163
|
+
var offsetX = event.clientX - nodeElement.getBoundingClientRect().left - leftPadding || 0;
|
|
152
164
|
return Math.min(dropNodeLevel + 1, Math.max(Math.round(offsetX / exports.DEPTH_LEVEL_INDENT), dropNodeLevel));
|
|
153
165
|
};
|
|
154
166
|
var changePosLastIndex = function (pos, change) {
|
|
@@ -177,8 +189,8 @@ var getDropNodePosition = function (event, dropNode, prevDropPositionInfo) {
|
|
|
177
189
|
var pos = !prevDropPositionInfo || prevDropPositionInfo.addToEnd
|
|
178
190
|
? dropNode.pos
|
|
179
191
|
: (0, exports.slideNodePos)(dropNode.pos, getCurrentDropNodePos(prevDropPositionInfo), true);
|
|
180
|
-
var dropNodeDepth = pos.split('-').length - 1;
|
|
181
192
|
var position = pos.split('-');
|
|
193
|
+
var dropNodeDepth = position.length - 1;
|
|
182
194
|
var lastIndex = Number((0, ramda_1.last)(position));
|
|
183
195
|
if (depthPosition === dropNodeDepth) {
|
|
184
196
|
return { pos: pos, dropPosition: addNodePosition };
|
package/cjs/RCTree/types.d.ts
CHANGED
package/cjs/RCTree/useDnd.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DragEvent } from 'react';
|
|
2
|
-
import { InternalRCNode, RCTreeNode } from './types';
|
|
2
|
+
import { InternalRCNode, RCTreeNode, DropPositionInfo } from './types';
|
|
3
3
|
type Props<Node extends RCTreeNode> = {
|
|
4
4
|
treeData: Node[];
|
|
5
5
|
containerRef: React.RefObject<HTMLDivElement>;
|
|
@@ -30,18 +30,10 @@ export declare const useDnd: <Node extends RCTreeNode>({ treeData, containerRef,
|
|
|
30
30
|
}) => void;
|
|
31
31
|
onDrop: () => void;
|
|
32
32
|
dropIndicatorRender: () => any;
|
|
33
|
-
allowDrop: ({ dragNode, dropNode }: {
|
|
34
|
-
dragNode: InternalRCNode<Node>;
|
|
35
|
-
dropNode: InternalRCNode<Node>;
|
|
36
|
-
}) => boolean;
|
|
37
33
|
};
|
|
38
34
|
nodeDraggable: (node: InternalRCNode<Node>) => boolean;
|
|
39
35
|
dropNode: InternalRCNode<Node>;
|
|
40
36
|
dragNode: InternalRCNode<Node>;
|
|
41
|
-
dropPositionInfo:
|
|
42
|
-
pos: string;
|
|
43
|
-
dropPosition: number;
|
|
44
|
-
addToEnd?: boolean;
|
|
45
|
-
};
|
|
37
|
+
dropPositionInfo: DropPositionInfo;
|
|
46
38
|
};
|
|
47
39
|
export {};
|
package/cjs/RCTree/useDnd.js
CHANGED
|
@@ -38,7 +38,7 @@ var useDnd = function (_a) {
|
|
|
38
38
|
}
|
|
39
39
|
}, [expandNode, expandedKeys, onLoadChildren, treeData]);
|
|
40
40
|
var expandDropNode = (0, react_1.useCallback)(function (newDropPositionInfo) {
|
|
41
|
-
if (onChange && newDropPositionInfo.dropPosition === types_1.AddNodePosition.AsChild) {
|
|
41
|
+
if (onChange && newDropPositionInfo.dropPosition === types_1.AddNodePosition.AsChild && dragNode) {
|
|
42
42
|
var currentParentNodePos = (0, helper_1.slideNodePos)(newDropPositionInfo.pos, dragNode.pos);
|
|
43
43
|
if (currentParentNodePos.split('-').length > 1) {
|
|
44
44
|
expandDropNodeAtPosition(currentParentNodePos, true);
|
|
@@ -48,14 +48,23 @@ var useDnd = function (_a) {
|
|
|
48
48
|
var handleSetDropNode = (0, react_1.useCallback)(function (_a) {
|
|
49
49
|
var event = _a.event, node = _a.node;
|
|
50
50
|
var newDropPositionInfo = (0, helper_1.getDropNodePosition)(event, node, dropPositionInfo) || dropPositionInfo;
|
|
51
|
+
var isNewDropPositionValid = newDropPositionInfo &&
|
|
52
|
+
dragNode &&
|
|
53
|
+
canDrop({
|
|
54
|
+
// Either drop node itself or its parent in the tree
|
|
55
|
+
nextParent: (0, helper_1.getDropNodeParent)(treeData, newDropPositionInfo, dragNode.pos),
|
|
56
|
+
node: dragNode.value
|
|
57
|
+
});
|
|
51
58
|
if (!(0, ramda_1.equals)(newDropPositionInfo, dropPositionInfo) && (!(0, helper_1.isDropIndicatorNode)(node) || !dropNode)) {
|
|
52
|
-
|
|
59
|
+
if (isNewDropPositionValid) {
|
|
60
|
+
setDropPositionInfo(newDropPositionInfo);
|
|
61
|
+
}
|
|
53
62
|
expandDropNode(newDropPositionInfo);
|
|
54
63
|
}
|
|
55
|
-
if (node.key !== (dropNode === null || dropNode === void 0 ? void 0 : dropNode.key)) {
|
|
64
|
+
if (node.key !== (dropNode === null || dropNode === void 0 ? void 0 : dropNode.key) && (!(0, helper_1.isDropIndicatorNode)(node) || isNewDropPositionValid)) {
|
|
56
65
|
setDropNode(node);
|
|
57
66
|
}
|
|
58
|
-
}, [dropNode, dropPositionInfo, expandDropNode]);
|
|
67
|
+
}, [dragNode, dropNode, canDrop, dropPositionInfo, expandDropNode, treeData]);
|
|
59
68
|
var delayedHandleDragOver = (0, useDelayedDragEventCall_1.useDelayedDragEventCall)(handleSetDropNode);
|
|
60
69
|
var onDragOver = function (_a) {
|
|
61
70
|
var event = _a.event, node = _a.node;
|
|
@@ -75,22 +84,18 @@ var useDnd = function (_a) {
|
|
|
75
84
|
}
|
|
76
85
|
};
|
|
77
86
|
var onDrop = function () {
|
|
78
|
-
if (dragNode && (0, helper_1.isDropIndicatorNode)(dropNode)) {
|
|
79
|
-
var
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
onDropProp(newTreeData, dragNode.value, parentNode);
|
|
87
|
+
if (dragNode && dropPositionInfo && (0, helper_1.isDropIndicatorNode)(dropNode)) {
|
|
88
|
+
var parentNode = (0, helper_1.getDropNodeParent)(treeData, dropPositionInfo, dragNode.pos);
|
|
89
|
+
if (canDrop({ nextParent: parentNode, node: dragNode.value })) {
|
|
90
|
+
var newTreeData = (0, helper_1.moveNode)(treeData, dragNode.value, dragNode.pos, dropPositionInfo);
|
|
91
|
+
onDropProp(newTreeData, dragNode.value, parentNode);
|
|
92
|
+
}
|
|
85
93
|
}
|
|
86
94
|
setDragNode(null);
|
|
87
95
|
setDropNode(null);
|
|
88
96
|
onEndDragging();
|
|
97
|
+
window.removeEventListener('mousemove', handleDropOutsideTree);
|
|
89
98
|
};
|
|
90
|
-
var allowDrop = (0, react_1.useCallback)(function (_a) {
|
|
91
|
-
var dragNode = _a.dragNode, dropNode = _a.dropNode;
|
|
92
|
-
return canDrop({ nextParent: dropNode.value, node: dragNode.value });
|
|
93
|
-
}, [canDrop]);
|
|
94
99
|
var nodeDraggable = (0, react_1.useCallback)(function (node) {
|
|
95
100
|
return canDrag({ node: node.value });
|
|
96
101
|
}, [canDrag]);
|
|
@@ -100,8 +105,7 @@ var useDnd = function (_a) {
|
|
|
100
105
|
onDragOver: onDragOver,
|
|
101
106
|
onDragLeave: onDragLeave,
|
|
102
107
|
onDrop: onDrop,
|
|
103
|
-
dropIndicatorRender: dropIndicatorRender
|
|
104
|
-
allowDrop: allowDrop
|
|
108
|
+
dropIndicatorRender: dropIndicatorRender
|
|
105
109
|
},
|
|
106
110
|
nodeDraggable: nodeDraggable,
|
|
107
111
|
dropNode: dropNode,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reltio/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2045",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE FILE",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@fluentui/react-context-selector": "^9.1.26",
|
|
12
12
|
"@googlemaps/markerclusterer": "^2.5.3",
|
|
13
13
|
"@react-sigma/core": "3.4.0",
|
|
14
|
-
"@reltio/mdm-sdk": "^1.4.
|
|
14
|
+
"@reltio/mdm-sdk": "^1.4.1905",
|
|
15
15
|
"@vis.gl/react-google-maps": "^1.3.0",
|
|
16
16
|
"d3-cloud": "^1.2.5",
|
|
17
17
|
"d3-geo": "^2.0.1",
|