Библиотека Dragula предоставляет возможность легко
реализовать перетаскивание элементов между контейнерами и внутри одного
контейнера. Метод drake.start() играет ключевую роль в
программном управлении процессом перетаскивания, позволяя инициировать
его без прямого взаимодействия пользователя с элементом.
Метод drake.start() вызывается на экземпляре
Drake, который создается через
dragula(containers, options). Вызов start()
инициирует процесс перетаскивания элемента так, как если бы пользователь
начал его перетаскивать мышью.
Синтаксис:
drake.start(item);
item — DOM-элемент, который необходимо начать
перетаскивать.Если элемент находится в контейнере, не указанном при инициализации
dragula(), метод не начнет процесс перетаскивания.
По умолчанию Dragula отслеживает события мыши и автоматически
инициирует перетаскивание при захвате элемента. Использование
drake.start() позволяет полностью программно контролировать
этот процесс, что важно для:
Пример создания Drake с последующим программным запуском перетаскивания:
const container1 = document.getElementById('container1');
const container2 = document.getElementById('container2');
const drake = dragula([container1, container2]);
const firstItem = container1.querySelector('.item');
drake.start(firstItem);
В этом примере перетаскивание элемента .item из
container1 начнется программно сразу после создания
экземпляра Drake.
Dragula поддерживает события, аналогичные ручному перетаскиванию:
drag — вызывается при старте перетаскивания.drop — срабатывает при отпускании элемента.cancel — вызывается при отмене перетаскивания.cloned — при клонировании элемента.shadow — создается тень элемента для визуальной
обратной связи.Все события работают идентично независимо от того, был ли вызван
drake.start() или инициировано перетаскивание мышью.
Пример подписки на события:
drake.on('drag', (el, source) => {
console.log('Начато перетаскивание:', el, source);
});
drake.on('drop', (el, target, source, sibling) => {
console.log('Элемент сброшен:', el, target, source, sibling);
});
drake.start() запускает процесс перетаскивания для одного
элемента. Для последовательного перемещения нескольких элементов
необходимо вызывать метод несколько раз с разными элементами.dragula(), перетаскивание не начнется.drop) нужно либо
вручную через события, либо пользовательским действием.start() не начнет новый процесс до
завершения текущего.drake.cancel(true) — отменяет текущее программное или
пользовательское перетаскивание.drake.remove() — удаляет элемент из контейнера после
перетаскивания.drake.destroy() — полностью уничтожает экземпляр,
включая все события.Эти методы дополняют drake.start() и позволяют полностью
управлять жизненным циклом перетаскивания программно.
Метод drake.start() является центральным инструментом
для программного инициирования перетаскивания в Dragula. Он сохраняет
все преимущества стандартного Dragula, включая работу с событиями и
тенью, при этом открывает возможности для автоматизации и интеграции в
сложные интерфейсы. Программное управление позволяет реализовать
сценарии, недоступные при традиционном перетаскивании мышью, делая
библиотеку более гибкой и управляемой.