diff --git a/app/javascript/controllers/dashboard_sortable_controller.js b/app/javascript/controllers/dashboard_sortable_controller.js index 2adac0f3e..57192f0b1 100644 --- a/app/javascript/controllers/dashboard_sortable_controller.js +++ b/app/javascript/controllers/dashboard_sortable_controller.js @@ -22,12 +22,22 @@ export default class extends Controller { // ===== Mouse Drag Events ===== dragStart(event) { + // On touch devices, cancel native drag — use touch events with hold delay instead + if (this.isTouchDevice()) { + event.preventDefault(); + return; + } + this.draggedElement = event.currentTarget; this.draggedElement.classList.add("opacity-50"); this.draggedElement.setAttribute("aria-grabbed", "true"); event.dataTransfer.effectAllowed = "move"; } + isTouchDevice() { + return "ontouchstart" in window || navigator.maxTouchPoints > 0; + } + dragEnd(event) { event.currentTarget.classList.remove("opacity-50"); event.currentTarget.setAttribute("aria-grabbed", "false");