Vue Draggable не меняет лист при перетаскивании

Как понять какой метод использовать в библиотеки Vue3 draggable чтобы понять из какого листа взяли элемент и в какой лист положили, в моменте когда мы переместили элемент из одного листа и пометили его в другой.

Я полагаю что watcher-ом этого достичь, но я думаю что это плохое решение.

Есть метод move но проблема в том что при перемещении не меняется номер листа. Например на картинке ниже Paul был перемещен из первого листа во второй, но в added он по прежнему числиться в листе 1, хотя добавлен был в лист 2

введите сюда описание изображения

template

<template>
    <div class="flexgrid-demo p-p-2">
        <div class="p-grid">
                <div class="p-col">
                    <div class="box"><h3>Draggable 1</h3>

            <draggable
                    class="dragArea list-group"
                    :list="list1"
                    :clone="clone"
                    :group="{ name: 'people', pull: pullFunction }"
                    @start="start"
                    item-key="id"
                    @change="dragList"
            >
                <template #item="{ element }">
                    <div class="list-group-item">
                        <div style="border:2px solid; margin-top:10px; padding:10px">
                        {{ element.name }}
                        </div>
                    </div>
                </template>
            </draggable>
                </div>
                </div>

        <div class="p-col">
            <div class="box">


            <h3>Draggable 2</h3>
            <draggable
                    class="dragArea list-group"
                    :list="list2"
                    :clone="clone"
                    @start="start"
                    group="people"
                    item-key="id"
                    @change="dragList"
                    @move="move"
                    @added="added"
            >
                <template #item="{ element }">
                    <div class="list-group-item">
                        <div style="border:2px solid; margin-top:10px; padding:10px">
                            {{ element.name }}
                        </div>
                    </div>
                </template>
            </draggable>
        </div>
        </div>
        </div>
    </div>
</template>

script


<script>
    import draggable from "vuedraggable";
    let idGlobal = 8;
    export default {
        name: "clone-on-control",
        display: "Clone on Control",
        instruction: "Press Ctrl to clone element from list 1",
        order: 4,
        components: {
            draggable
        },
        data() {
            return {
                list1: [
                    { name: "Jesus", id: 1, list:1, uuid: "ffcc4608-3b1b-11ec-8d3d-0242ac130003" },
                    { name: "Paul", id: 2, list:1, uuid: "0649fe6c-3b1c-11ec-8d3d-0242ac130003" },
                    { name: "Peter", id: 3, list:1, uuid: "0e81b8e0-3b1c-11ec-8d3d-0242ac130003" }
                ],
                list2: [
                    { name: "Luc", id: 5, list:2, uuid: "15314048-3b1c-11ec-8d3d-0242ac130003" },
                    { name: "Thomas", id: 6, list:2, uuid: "1a4df63e-3b1c-11ec-8d3d-0242ac130003" },
                    { name: "John", id: 7, list:2, uuid: "20ac6baa-3b1c-11ec-8d3d-0242ac130003" }
                ],

                controlOnStart: true
            };
        },
        methods: {
            clone({name, id, list}) {
                console.log('clone', name, id, list, idGlobal++)
                return {name, id: id, list};
            },
            pullFunction(item) {
                console.log('pullIs', item);
                return this.controlOnStart ? "clone" : true;
            },
            start({originalEvent}) {
                console.log("start")
                this.controlOnStart = originalEvent.ctrlKey;
            },
            move(evt, originalEvent) {
                console.log("move", evt, originalEvent)
            },
        }
    };
</script>


Ответы (0 шт):