Как отключить перетаскиваемый заполнитель vue

В настоящее время я делаю конструктор веб-сайтов, где пользователь может перетаскивать, чтобы добавить элемент.

Перетаскивание работает хорошо, но я хочу, как я могу отключить / скрыть заполнитель перетаскивания в целевом контейнере?

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

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

Вот мой код:

<template>
<div style="display : flex;">
    <div id="dragArea">
        <draggable
            class="dragArea list-group"
            :list="list1"
            :group="{ name: 'item', pull: 'clone', put: false }"
            :clone="cloneItem"
            @change="log"
        >
            <div class="list-group-item" v-for="element in list1" :key="element.id">{{ element.name }}</div>
        </draggable>
    </div>

    <div id="dropArea">
        <draggable class="dragArea list-group" :list="list2" group="item" @change="log">
            <div class="list-group-item" v-for="element in list2" :key="element.id">{{ element.name }}</div>
        </draggable>
    </div>
</div>
</template>

Сценарий:

<script>
import draggable from "vuedraggable";
let idGlobal = 8;

export default {
    name: "custom-clone",
    display: "Custom Clone",
    order: 3,
    components: {
        draggable,
    },
    data() {
        return {
            hover : false,
            list1: [
                { name: "cloned 1", id: 1 },
                { name: "cloned 2", id: 2 },
            ],
            list2: [

            ]
        };
    },
    methods: {
        log: function(evt) {
            window.console.log(evt);
        },
        cloneItem({ name, id }) {
            return {
                id: idGlobal++,
                name: name
            };
        },
    },
};
</script>

person Darren    schedule 20.05.2020    source источник


Ответы (1)


Для каждого из ваших <draggable> компонентов в вашем <template> вы можете установить опору ghost-class для класса CSS, который скрывает заполнитель для перетаскивания (например, призрак или перетаскиваемый элемент, как вы его называли), используя display: none; или visibility: hidden;.

Например:

  • В вашем <template>:

     <draggable ghost-class="hidden-ghost">
    
  • и в разделе <style> вашего однофайлового компонента Vue или в соответствующей таблице стилей:

     .hidden-ghost {
         display: none;
     }
    

Рабочая скрипка

Свойство ghost-class внутренне устанавливает параметр SortableJS ghostClass (все параметры см. здесь). Возможность изменять эти параметры SortableJS как свойства Vue.Draggable доступна с Vue.Draggable v2.19.1.

person Nick LaRosa    schedule 11.12.2020