VGNestable

Сортировка списка

API и события

Публичные методы, Data API, клавиатурное управление, события и CSS-переменные.

Публичные методы и события

Кнопки работают через Data API, журнал получает события дерева, а ручной вызов serialize() доступен через экземпляр.

  1. Документация Родительская ветвь
    1. Начало работы Страница
    2. Публичный API Страница
  2. История версий Страница
Журнал / serialize()
HTML
<button data-vg-nestable-action="expandAll" data-vg-target="#docs-tree">Развернуть всё</button>
<button data-vg-nestable-action="collapseAll" data-vg-target="#docs-tree">Свернуть всё</button>

<div id="docs-tree" class="vg-nestable" data-vg-toggle="nestable">
  <ol class="vg-nestable-list">...</ol>
</div>
JavaScript
import {VGNestable} from 'vgapp';

const element = document.querySelector('#docs-tree');
const tree = VGNestable.getOrCreateInstance(element);

element.addEventListener('vg.nestable.change', ({detail}) => {
  console.log(detail.payload);
});

tree.collapseAll();
tree.expandItem('[data-id="201"]');
tree.refresh();
tree.save();
CSS
#docs-tree {
  --vg-nestable-inner-border-radius: .6rem;
  --vg-nestable-drag-element-shadow: 0 10px 24px rgb(0 0 0 / 18%);
  --vg-nestable-placeholder-border: 1px dashed var(--vg-border-active);
}

Методы

Публичное управление экземпляром VGNestable.

serialize()Возвращает дерево. Помимо id включает остальные data-* атрибуты; serializedata: false сохраняет формат только с id.
expandItem(item)Разворачивает одну ветвь по элементу или селектору.
collapseItem(item)Сворачивает одну ветвь по элементу или селектору.
expandAll() / collapseAll()Управляет всеми ветвями и возвращает количество изменённых ветвей.
refresh()Подхватывает добавленные элементы, handle, collapse и пустое состояние.
save()Сериализует дерево и отправляет его в ajax.route либо возвращает payload.
dispose()Снимает обработчики, drag-состояние и регистрацию связанной группы.

События

DOM-события всплывают от корневого элемента дерева.

vg.nestable.startВетвь отделилась от списка.
vg.nestable.moveИзменилась потенциальная позиция drop.
vg.nestable.dropПользователь завершил перенос.
vg.nestable.changeСериализованная структура действительно изменилась.
vg.nestable.transferЭлемент перенесён между связанными деревьями.
vg.nestable.collapse / expandВетка свёрнута или развёрнута публичным API.
vg.nestable.saveСостояния start, success, error или skipped.

Клавиатура

Фокус остаётся на handle; сценарий не требует мыши.

Enter или Space поднимает и отпускает элемент; стрелки вверх/вниз меняют порядок, вправо/влево — глубину, Escape завершает перенос без нового drop.