From 5adf420ccc53f0adbccdbb41d28353f16ea74aa2 Mon Sep 17 00:00:00 2001 From: taojunnan Date: Tue, 28 Mar 2023 10:07:48 +0800 Subject: [PATCH] feat: add 'beforeAdded' prop and example --- example/components/two-lists-before-added.vue | 77 +++++++++++++++++++ src/vuedraggable.js | 15 +++- 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 example/components/two-lists-before-added.vue diff --git a/example/components/two-lists-before-added.vue b/example/components/two-lists-before-added.vue new file mode 100644 index 0000000..69c77c7 --- /dev/null +++ b/example/components/two-lists-before-added.vue @@ -0,0 +1,77 @@ + + diff --git a/src/vuedraggable.js b/src/vuedraggable.js index 678a86b..b1c97d1 100644 --- a/src/vuedraggable.js +++ b/src/vuedraggable.js @@ -65,6 +65,10 @@ const props = { type: Object, required: false, default: null + }, + beforeAdded: { + type: Function, + default: null } }; @@ -238,12 +242,21 @@ const draggableComponent = defineComponent({ }, onDragAdd(evt) { - const element = evt.item._underlying_vm_; + let element = evt.item._underlying_vm_; if (element === undefined) { return; } removeNode(evt.item); const newIndex = this.getVmIndexFromDomIndex(evt.newIndex); + + // handle element before add + if (this.beforeAdded) { + const newElement = this.beforeAdded(element); + if (newElement !== undefined) { + element = newElement; + } + } + // @ts-ignore this.spliceList(newIndex, 0, element); const added = { element, newIndex };