Fixed showstopping bugs with tree organize functions
This commit is contained in:
@@ -55,14 +55,15 @@
|
||||
<tree-node-list
|
||||
v-if="showExpanded"
|
||||
:node="node"
|
||||
:root="node.root"
|
||||
:children="computedChildren"
|
||||
:group="group"
|
||||
:organize="organize"
|
||||
:selected-node="selectedNode"
|
||||
:start-expanded="startExpanded"
|
||||
:show-external-details="showExternalDetails"
|
||||
@reordered="e => $emit('reordered', e)"
|
||||
@reorganized="e => $emit('reorganized', e)"
|
||||
@move-within-root="e => $emit('move-within-root', e)"
|
||||
@move-between-roots="e => $emit('move-between-roots', e)"
|
||||
@selected="e => $emit('selected', e)"
|
||||
/>
|
||||
<div v-else>
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
:start-expanded="startExpanded"
|
||||
:show-external-details="showExternalDetails"
|
||||
@selected="e => $emit('selected', e)"
|
||||
@reordered="e => $emit('reordered', e)"
|
||||
@reorganized="e => $emit('reorganized', e)"
|
||||
@move-within-root="e => $emit('move-within-root', e)"
|
||||
@move-between-roots="e => $emit('move-between-roots', e)"
|
||||
/>
|
||||
</draggable>
|
||||
</template>
|
||||
@@ -45,6 +45,10 @@ export default {
|
||||
type: Object,
|
||||
default: undefined,
|
||||
},
|
||||
root: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
group: {
|
||||
type: String,
|
||||
default: undefined,
|
||||
@@ -93,32 +97,31 @@ export default {
|
||||
let event = moved || added;
|
||||
if (event) {
|
||||
let doc = event.element.doc;
|
||||
let newIndex;
|
||||
if (event.newIndex === 0) {
|
||||
newIndex = 0.5;
|
||||
} else {
|
||||
if (event.newIndex < this.children.length) {
|
||||
let childAtNewIndex = this.children[event.newIndex];
|
||||
if (event.newIndex > event.oldIndex) {
|
||||
newIndex = childAtNewIndex.doc.right + 0.5;
|
||||
} else {
|
||||
newIndex = childAtNewIndex.doc.left - 0.5;
|
||||
}
|
||||
let newPosition;
|
||||
if (!this.children.length) {
|
||||
if (this.node) {
|
||||
newPosition = this.node.left + 0.5;
|
||||
} else {
|
||||
let childBeforeNewIndex = this.children[event.newIndex - 1];
|
||||
newIndex = childBeforeNewIndex.doc.right + 0.5;
|
||||
newPosition = 0.5;
|
||||
}
|
||||
} else if (event.newIndex < this.children.length) {
|
||||
let childAtNewIndex = this.children[event.newIndex];
|
||||
if (event.newIndex > event.oldIndex) {
|
||||
newPosition = childAtNewIndex.doc.right + 0.5;
|
||||
} else {
|
||||
newPosition = childAtNewIndex.doc.left - 0.5;
|
||||
}
|
||||
} else {
|
||||
let childBeforeNewIndex = this.children[event.newIndex - 1];
|
||||
newPosition = childBeforeNewIndex.doc.right + 0.5;
|
||||
}
|
||||
if (moved) {
|
||||
this.$emit('reordered', { doc, newIndex });
|
||||
} else if (added) {
|
||||
this.$emit('reorganized', { doc, parent: this.node, newIndex });
|
||||
if (doc.root.id === this.root.id) {
|
||||
this.$emit('move-within-root', { doc, newPosition });
|
||||
} else {
|
||||
this.$emit('move-between-roots', { doc, newPosition, newRootRef: this.root });
|
||||
}
|
||||
}
|
||||
},
|
||||
move() {
|
||||
return true;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user