Parcourir la source

more improvements for external dragging api

Adam Shaw il y a 7 ans
Parent
commit
d62a41ef73

+ 1 - 1
demos/external-dragging-builtin.html

@@ -18,7 +18,7 @@
       itemSelector: '.fc-event',
       itemSelector: '.fc-event',
       eventData: function(eventEl) {
       eventData: function(eventEl) {
         return {
         return {
-          title: eventEl.innerText.trim(),
+          title: eventEl.innerText.trim()
         }
         }
       }
       }
     });
     });

+ 19 - 9
src/interactions-external/ExternalDraggable.ts

@@ -31,24 +31,34 @@ export default class ExternalDraggable {
     }
     }
 
 
     dragging.emitter.on('pointerdown', this.handlePointerDown)
     dragging.emitter.on('pointerdown', this.handlePointerDown)
+    dragging.emitter.on('dragstart', this.handleDragStart)
 
 
     new ExternalElementDragging(dragging, settings.eventData)
     new ExternalElementDragging(dragging, settings.eventData)
   }
   }
 
 
   handlePointerDown = (ev: PointerDragEvent) => {
   handlePointerDown = (ev: PointerDragEvent) => {
     let { dragging } = this
     let { dragging } = this
-    let { delay, minDistance } = this.settings
+    let { minDistance, delay } = this.settings
 
 
-    if (minDistance == null) {
-      minDistance = globalDefaults.eventDragMinDistance
-    }
+    dragging.minDistance =
+      minDistance != null ?
+        minDistance :
+        (ev.isTouch ? 0 : globalDefaults.eventDragMinDistance)
 
 
-    if (delay == null) {
-      delay = globalDefaults.longPressDelay // TODO: eventually read eventLongPressDelay
-    }
+    dragging.delay =
+      delay != null ?
+        delay :
+        (ev.isTouch ? globalDefaults.longPressDelay : 0) // TODO: eventually read eventLongPressDelay
+  }
 
 
-    dragging.minDistance = ev.isTouch ? 0 : minDistance
-    dragging.delay = ev.isTouch ? delay : 0
+  handleDragStart = (ev: PointerDragEvent) => {
+    if (
+      ev.isTouch &&
+      this.dragging.delay &&
+      (ev.subjectEl as HTMLElement).classList.contains('fc-event')
+    ) {
+      this.dragging.mirror.getMirrorEl().classList.add('fc-selected')
+    }
   }
   }
 
 
   destroy() {
   destroy() {