Устаревшие методы и параметры

Gridstack.js активно развивается, и с каждой новой версией появляются улучшения в API, а некоторые методы и параметры устаревают. Использование устаревших функций может привести к ошибкам, некорректной работе сетки или конфликтам с новыми функциями. В этом разделе рассмотрены основные устаревшие элементы, а также рекомендации по их замене.


Методы, помеченные как устаревшие

  1. GridStack.addWidget()

    Ранее метод addWidget использовался для динамического добавления виджетов в сетку:

    grid.addWidget('<div class="grid-stack-item" gs-w="2" gs-h="2">...</div>');

    Проблемы:

    • В последних версиях Gridstack.js метод заменен на использование grid.addNode(), который работает напрямую с объектами конфигурации узлов (GridStackNode).
    • Прямое добавление HTML теперь требует создания объекта узла и последующей вставки через addNode.

    Современный подход:

    const node = {
        x: 0,
        y: 0,
        width: 2,
        height: 2,
        content: '<div>Содержимое</div>'
    };
    grid.addNode(node);

    Это обеспечивает более точный контроль над расположением и параметрами виджета.


  1. GridStack.removeWidget()

    Ранее метод удалял DOM-элемент и обновлял сетку автоматически:

    grid.removeWidget(el);

    Новая практика: Метод removeWidget устарел. Следует использовать grid.removeNode(node), где node — это объект узла, полученный через grid.getNode(el):

    const node = grid.getNode(el);
    grid.removeNode(node);

    Такой подход предотвращает возможные утечки памяти и обеспечивает правильную синхронизацию состояния сетки.


  1. GridStack.movable() и GridStack.resizable()

    Старые методы использовались для включения или отключения возможности перетаскивания и изменения размеров отдельных виджетов:

    grid.movable(el, false);
    grid.resizable(el, true);

    Замена: Используется объектная конфигурация узла с полями locked и noResize:

    const node = grid.getNode(el);
    node.locked = true; // блокирует перемещение и изменение размеров
    node.noResize = false; // разрешает изменение размеров
    grid.update(node);

    Такой подход унифицирует управление поведением виджетов через один объект.


Устаревшие параметры при инициализации

  1. cellHeight

    Ранее задавал высоту ячейки сетки:

    $('.grid-stack').gridstack({
        cellHeight: 80
    });

    Замена: Параметр cellHeight устарел, вместо него следует использовать rowHeight:

    const grid = GridStack.init({
        rowHeight: 80
    });

    Новый параметр полностью контролирует высоту строк и корректно учитывается при адаптивной верстке.


  1. verticalMargin

    Задавал вертикальный отступ между виджетами:

    $('.grid-stack').gridstack({
        verticalMargin: 10
    });

    Современная практика: Используется свойство margin, которое управляет как горизонтальными, так и вертикальными отступами:

    const grid = GridStack.init({
        margin: 10
    });

    Этот способ упрощает конфигурацию и делает поведение сетки предсказуемым.


  1. alwaysShowResizeHandle

    Ранее этот параметр контролировал постоянное отображение ручек изменения размеров.

    Замена: Используется поле resizable в конфигурации виджета:

    const node = {
        x: 0,
        y: 0,
        width: 2,
        height: 2,
        resizable: { handles: 'all' }
    };
    grid.addNode(node);

    Такой подход позволяет детально настраивать, какие ручки будут доступны и в каких ситуациях.


Рекомендации при переходе на новую версию

  • Проверять документацию Gridstack.js перед обновлением, так как устаревшие методы могут быть полностью удалены.
  • Использовать объектную модель узлов (GridStackNode) для добавления, удаления и настройки виджетов.
  • Пересмотреть все параметры и методы, которые напрямую влияют на верстку (cellHeight, verticalMargin, addWidget, removeWidget, movable, resizable) и заменить их на современные аналоги (rowHeight, margin, addNode, removeNode, locked, noResize).
  • Избегать использования jQuery-методов, если проект обновляется на современный Gridstack.js (версии 4+), так как библиотека активно переходит на чистый JavaScript API.

Итоговая структура устаревших функций

Устаревший метод/параметр Современная замена
addWidget() addNode()
removeWidget() removeNode()
movable() locked (через node)
resizable() noResize (через node)
cellHeight rowHeight
verticalMargin margin
alwaysShowResizeHandle resizable.handles

Использование современных методов гарантирует совместимость с новыми версиями, упрощает поддержку кода и предотвращает возможные конфликты при расширении функциональности сетки.