Skip to content

Commit a6814ce

Browse files
authored
Merge pull request #430 from davidaik/test/nested-sortable-fix
fix: Nested Sortable issues
2 parents 5d5e381 + 912958e commit a6814ce

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/Sortable/Sortable.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,23 @@ export default class Sortable extends Draggable {
105105
* @return {Number}
106106
*/
107107
index(element) {
108-
return this.getDraggableElementsForContainer(element.parentNode).indexOf(element);
108+
return this.getSortableElementsForContainer(element.parentNode).indexOf(element);
109+
}
110+
111+
/**
112+
* Returns sortable elements for a given container, excluding the mirror and
113+
* original source element if present
114+
* @param {HTMLElement} container
115+
* @return {HTMLElement[]}
116+
*/
117+
getSortableElementsForContainer(container) {
118+
const allSortableElements = container.querySelectorAll(this.options.draggable);
119+
120+
return [...allSortableElements].filter((childElement) => {
121+
return (
122+
childElement !== this.originalSource && childElement !== this.mirror && childElement.parentNode === container
123+
);
124+
});
109125
}
110126

111127
/**
@@ -156,7 +172,7 @@ export default class Sortable extends Draggable {
156172
return;
157173
}
158174

159-
const children = this.getDraggableElementsForContainer(overContainer);
175+
const children = this.getSortableElementsForContainer(overContainer);
160176
const moves = move({source, over, overContainer, children});
161177

162178
if (!moves) {
@@ -252,7 +268,7 @@ function index(element) {
252268
function move({source, over, overContainer, children}) {
253269
const emptyOverContainer = !children.length;
254270
const differentContainer = source.parentNode !== overContainer;
255-
const sameContainer = over && !differentContainer;
271+
const sameContainer = over && source.parentNode === over.parentNode;
256272

257273
if (emptyOverContainer) {
258274
return moveInsideEmptyContainer(source, overContainer);

0 commit comments

Comments
 (0)