Dragula — это лёгкая библиотека для реализации drag-and-drop функционала в веб-приложениях на JavaScript. Она предоставляет удобный API для перетаскивания элементов между контейнерами и управления поведением перетаскивания. Одним из ключевых аспектов работы с Dragula является система событий, которая позволяет детально контролировать весь процесс drag-and-drop.
События в Dragula делятся на несколько категорий: инициализация перетаскивания, движение элементов, завершение действия и изменения контейнеров. Каждое событие передаёт специфические аргументы, которые дают полное представление о текущем состоянии операции.
drag Срабатывает в момент начала
перетаскивания элемента.
el — элемент, который
перетаскивается, source — контейнер, из которого элемент
берётся.dragend Срабатывает после
завершения перетаскивания, независимо от того, был ли элемент перемещён
или возвращён на место.
el — элемент, который был
перетаскиваемым.drag.drop Происходит, когда элемент был
успешно помещён в новый контейнер.
el — перемещённый элемент,
target — контейнер, в который элемент помещён,
source — исходный контейнер, sibling — элемент
перед которым вставлен el, или null, если
вставка в конец.over Срабатывает, когда
перетаскиваемый элемент нависает над контейнером.
el, container,
source.out Срабатывает, когда
перетаскиваемый элемент покидает контейнер, над которым он
находился.
el, container,
source.cancel Срабатывает, если
перетаскивание было отменено, например, если элемент вернулся в исходное
положение.
el, container,
source.remove Происходит, когда элемент
удаляется из контейнера при условии, что Dragula настроен на
удаление.
el, container,
source.Dragula предоставляет ряд вспомогательных событий, которые полезны для сложных сценариев:
shadow — событие, связанное с
визуальным отображением «теневого» элемента, который показывает будущую
позицию перетаскиваемого объекта.cloned — срабатывает, если включено
клонирование элементов при перетаскивании; позволяет работать с копиями
элементов без изменения оригинала.drake.on(event, handler), так и через цепочку методов при
инициализации.drag и
dragend подходят для визуальных эффектов, таких как
изменение цвета рамки или прозрачности.drop,
remove и cancel позволяют обновлять состояние
модели данных после любых изменений DOM.over и
out позволяют показывать пользователю допустимые контейнеры
для перемещения.Каждое событие Dragula предоставляет полный контроль над процессом перетаскивания, позволяя реализовывать как простые списки с drag-and-drop, так и сложные интерфейсы с множественными контейнерами, динамическим добавлением элементов и сохранением состояния.