SortableJS

Бесплатно
Открытый исходный код

Сайт: sortablejs.github.io/Sortable

SortableJS — это лёгкая JavaScript‑библиотека, предназначенная для организации интерактивного перетаскивания (drag‑and‑drop) и сортировки элементов внутри списков и между ними в веб‑интерфейсах. Библиотека реализует обработку событий перетаскивания, поддержку касаний и мыши, а также обеспечивает гибкие параметры конфигурации для определения поведения при переносе элементов, анимации и ограничений на допустимые приёмники. В основе подхода стоит минималистичный API, позволяющий интегрировать функциональность сортировки в существующие HTML‑структуры без значительной перестройки разметки.

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

  • Перетаскивание и сортировка: изменение порядка элементов внутри контейнера путём перетаскивания; поддержка перетаскивания между несколькими контейнерами.
  • Поддержка касаний: корректная работа на мобильных устройствах и тач‑экранах с обработкой сенсорных событий.
  • Лёгкий API: минимальное количество настроек для быстрого развёртывания и несколько опций для тонкой настройки поведения.
  • События и обратные вызовы: хуки для начала перетаскивания, окончания, изменения порядка и других этапов, что позволяет обновлять состояние приложения.
  • Анимация и визуальная обратная связь: настройки анимации при перемещении элементов и классы для стилизации элементов‑перетаскиваемых объектов.
  • Ограничения и фильтрация: возможность запрещать перетаскивание для отдельных элементов, задавать допустимые точки приёма и запрещённые зоны.
  • Кастомизация поведения: параметры для управления чувствительностью, расстоянием начала перетаскивания, клонированием элементов и сохранением пространственного положения.
  • Интеграция с фреймворками: совместимость с популярными библиотеками и фреймворками интерфейса через адаптеры или прямую инициализацию на DOM‑элементах.
  • Производительность: оптимизации для снижения нагрузки при большом количестве элементов и минимизация вмешательства в поток перерисовки браузера.
  • Гибкое управление данными: возможности для синхронизации порядка элементов с моделью данных, сохранения состояния и восстановления порядка при перезагрузке.
Подробнее