Платформа · Урок 75

Сложные интерактивы: drag-and-drop

«Канбан», «менеджер файлов», «редактор» — всё это сложные интерактивы. Разбираем перетаскивание, вставку из буфера и горячие клавиши.

HTML5 Drag and Drop

card.draggable = true;
card.addEventListener("dragstart", (e) =>
  e.dataTransfer.setData("text/id", card.id));
column.addEventListener("dragover", (e) => e.preventDefault());
column.addEventListener("drop", (e) => {
  const id = e.dataTransfer.getData("text/id");
  column.append(document.getElementById(id));
});

Буфер обмена и hotkeys

input.addEventListener("paste", (e) => {
  for (const f of e.clipboardData.files) upload(f);
});

document.addEventListener("keydown", (e) => {
  if (e.key === "s" && (e.metaKey || e.ctrlKey)) e.preventDefault();
});
💡
Для канбанов проще библиотека (dnd-kit) — но понимать событие dragstart / драги элементы обязательны, иначе не почините edge-кейсы.
ℹ️
Не забывайте клавиатуру: tab + enter для карточек показывают уровень нанимателям. А «перетащил → сохранил порядок в БД» — это уже целая механика урока 90.