Gridstack.js с каждой версией подвергается значительным изменениям в API, направленным на повышение гибкости, удобства использования и совместимости с современными фреймворками. В последних версиях разработчики сосредоточились на переработке методов управления сеткой, улучшении событийной модели и введении нового подхода к работе с виджетами.
Ранее инициализация сетки осуществлялась через прямое создание
экземпляра GridStack() или через jQuery:
$('.grid-stack').gridstack(options);
В новых версиях рекомендуемый способ — использование класса
GridStack.init():
import { GridStack } from 'gridstack';
const grid = GridStack.init({
column: 12,
cellHeight: 80,
margin: 10
});
Ключевые изменения:
float, animate,
minRow, maxRow.GridStack.init() возвращает экземпляр сетки,
который можно хранить для дальнейшей работы.Добавление и удаление элементов стало более гибким. Ранее методы выглядели так:
grid.addWidget(el, x, y, width, height);
grid.removeWidget(el);
Сейчас API предлагает:
const widget = grid.addWidget({
x: 0, y: 0, width: 4, height: 2,
content: '<div class="grid-stack-item-content">Пример</div>'
});
grid.removeWidget(widget.el);
Особенности нового подхода:
addWidget возвращает объект
GridItem, содержащий ссылку на элемент el и
внутренние свойства позиции и размеров.content.Ранее события отслеживались через jQuery:
$('.grid-stack').on('change', function(event, items) {
console.log(items);
});
В новом API используются методы экземпляра сетки и стандартные колбэки:
grid.on('change', function(event, items) {
console.log(items);
});
grid.on('added', function(event, items) {
console.log('Добавлены виджеты:', items);
});
Ключевые изменения:
added, removed,
change, dragstart, dragstop,
resizestart, resizestop.GridItem,
что упрощает работу с позициями и размерами.animate при инициализации.Методы update() и resize() получили
расширенные возможности. Пример обновления виджета:
widget.update({x: 2, y: 1, width: 6, height: 3});
Новые возможности:
change.animate.Для сохранения состояния сетки введены новые методы
save() и load():
const state = grid.save();
grid.load(state);
Особенности:
save() возвращает массив объектов
GridItem, содержащий позицию, размер и идентификатор
каждого виджета.load() восстанавливает сетку с предыдущими
настройками.Новые версии API расширяют возможности адаптивного дизайна:
column() позволяет динамически менять количество
колонок в зависимости от ширины экрана:grid.column(6);
autoCellHeight для автоматического
подбора высоты ячеек.disableOneColumnMode позволяет отключать
мобильный режим по необходимости.compact() — оптимизация сетки, автоматическое сжатие
виджетов.batchUpdate() / commit() — группировка
изменений для предотвращения лишних перерисовок.engine.nodes — доступ к внутреннему массиву виджетов,
теперь публичный и безопасный для чтения.GridStack.init() вместо
jQuery.addWidget и removeWidget
возвращают/принимают объекты GridItem.Эти изменения делают работу с Gridstack.js более модульной, предсказуемой и удобной для интеграции с современными фронтенд-фреймворками, такими как React и Vue.js.