10000 [util] create cretae custom function · andrewvmail/react-sortablejs@29ad5c1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 29ad5c1

Browse files
author
Wayne Van Son
committed
[util] create cretae custom function
1 parent 2c2b7b1 commit 29ad5c1

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

src/util.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,65 @@ export function insertNodeAt(
3434
export function handleDOMChanges<T extends ItemInterface>(
3535
customs: Normalized<T>[]
3636
) {
37+
removeNodes(customs);
38+
insertNodes(customs);
39+
}
40+
41+
export function removeNodes<T extends ItemInterface>(customs: Normalized<T>[]) {
3742
customs.forEach(curr => removeNode(curr.element));
43+
}
44+
45+
export function insertNodes<T extends ItemInterface>(customs: Normalized<T>[]) {
3846
customs.forEach(curr => {
3947
insertNodeAt(curr.parentElement, curr.element, curr.oldIndex);
4048
});
4149
}
4250

51+
export function createCustoms<T extends ItemInterface>(
52+
evt: MultiDragEvent,
53+
list: T[]
54+
) {
55+
const mode = getMode(evt);
56+
const parentElement = { parentElement: evt.from };
57+
let custom = [];
58+
switch (mode) {
59+
case "normal":
60+
const item = {
61+
element: evt.item,
62+
newIndex: evt.newIndex!,
63+
oldIndex: evt.oldIndex!,
64+
parentElement: evt.from
65+
};
66+
custom = [item];
67+
break;
68+
case "swap":
69+
const drag: Input = {
70+
element: evt.item,
71+
oldIndex: evt.oldIndex!,
72+
newIndex: evt.newIndex!,
73+
...parentElement
74+
};
75+
const swap: Input = {
76+
element: evt.swapItem!,
77+
oldIndex: evt.newIndex!,
78+
newIndex: evt.oldIndex!,
79+
...parentElement
80+
};
81+
custom = [drag, swap];
82+
break;
83+
case "multidrag":
84+
custom = evt.oldIndicies.map<Input>((curr, index) => ({
85+
element: curr.multiDragElement,
86+
oldIndex: curr.index,
87+
newIndex: evt.newIndicies[index].index,
88+
...parentElement
89+
}));
90+
break;
91+
}
92+
const customs = createNormalized(custom, list);
93+
return customs;
94+
}
95+
4396
/** moves items form old index to new index without breaking anything ideally. */
4497
export function handleStateChanges<T extends ItemInterface>(
4598
normalized: Normalized<T>[],

0 commit comments

Comments
 (0)
0