SortableJS — это мощная библиотека для реализации интерактивного
перетаскивания элементов на веб-странице. Основу её работы составляет
создание экземпляра класса Sortable, который управляет
списком элементов и предоставляет множество методов для динамического
контроля поведения сортировки. Методы экземпляра позволяют управлять
элементами, изменять параметры, программно инициировать действия и
получать информацию о состоянии списка.
destroy()Метод destroy() полностью уничтожает экземпляр Sortable,
удаляя все обработчики событий и восстанавливая исходное состояние DOM.
После вызова этого метода экземпляр становится неактивным и больше не
реагирует на пользовательские действия.
const sortable = new Sortable(list, { /* опции */ });
sortable.destroy();
Ключевые моменты:
option(name, value)Метод option служит для чтения и изменения параметров
экземпляра после его создания. Может использоваться в двух вариантах:
чтение значения опции и установка новой.
// Получение значения опции
const groupName = sortable.option('group');
// Изменение значения опции
sortable.option('animation', 150);
Особенности:
toArray()Метод возвращает массив идентификаторов элементов текущего списка.
Элементы должны иметь атрибут data-id, который используется
для построения массива.
const order = sortable.toArray();
console.log(order); // ['item1', 'item2', 'item3']
Особенности:
data-id.sort(order)Метод sort позволяет программно изменить порядок
элементов внутри списка в соответствии с переданным массивом
идентификаторов.
sortable.sort(['item3', 'item1', 'item2']);
Особенности:
save()Метод save инициирует сохранение текущего состояния
списка. Обычно используется совместно с store, если задан
объект для хранения порядка элементов.
sortable.save();
Особенности:
set объекта store, если
она определена.closest(el)Метод возвращает ближайший контейнер Sortable, которому принадлежит
элемент el. Полезен при работе с вложенными списками или
drag-and-drop между несколькими контейнерами.
const container = sortable.closest(document.getElementById('item1'));
Особенности:
null.captureAnimationState()Метод сохраняет текущее состояние анимации элементов. Используется перед программным изменением DOM, чтобы после перестановки применить плавную анимацию.
sortable.captureAnimationState();
Особенности:
animateAll() для запуска анимации
перестановки.animateAll()Метод запускает анимацию для всех элементов, положение которых
изменилось с момента вызова captureAnimationState().
sortable.captureAnimationState();
// изменение DOM
sortable.animateAll();
Особенности:
animation.closest(el) и методические сценарииКомбинируя методы closest, toArray и
sort, можно реализовать сложные сценарии взаимодействия с
несколькими списками:
Методы экземпляра SortableJS предоставляют полный контроль над поведением списков. Их грамотное использование позволяет создавать как простые интерактивные списки, так и сложные интерфейсы с анимацией, сохранением состояния и поддержкой drag-and-drop между несколькими контейнерами.