Adam Shaw 7 лет назад
Родитель
Сommit
e30b7dea80

+ 9 - 16
demos/external-dragging-builtin.html

@@ -19,22 +19,15 @@
     );
 
     eventEls.forEach(function(eventEl) {
-      new FullCalendar.ExternalDraggableEvent(
-        eventEl,
-        {}
-      )
-
-      // eventEl.setAttribute('data-event', JSON.stringify({
-      //   title: eventEl.innerText.trim(),
-      //   stick: true
-      // }));
+      new FullCalendar.Draggable({
+        el: eventEl,
+        event: {
+          title: eventEl.innerText.trim(),
+          stick: true
+        }
+      });
     });
 
-    // FullCalendar.dragula({
-    //   containers: [ containerEl ],
-    //   copy: true
-    // });
-
     /* initialize the calendar
     -----------------------------------------------------------------*/
 
@@ -47,11 +40,11 @@
       },
       editable: true,
       droppable: true, // this allows things to be dropped onto the calendar
-      drop: function() {
+      drop: function(arg) {
         // is the "remove after drop" checkbox checked?
         if (document.getElementById('drop-remove').checked) {
           // if so, remove the element from the "Draggable Events" list
-          this.parentNode.removeChild(this);
+          arg.draggedEl.parentNode.removeChild(arg.draggedEl);
         }
       }
     });

+ 3 - 4
demos/external-dragging-dragula.html

@@ -7,7 +7,6 @@
 <link href='../dist/fullcalendar.print.css' rel='stylesheet' media='print' />
 <script src='../node_modules/dragula/dist/dragula.js'></script>
 <script src='../dist/fullcalendar.js'></script>
-<script src='../dist/generic-dragging.js'></script>
 <script>
 
   document.addEventListener('DOMContentLoaded', function() {
@@ -32,7 +31,7 @@
       copy: true
     });
 
-    FullCalendarGenericDragging.enable({
+    FullCalendar.GenericDragging.enable({
       mirrorSelector: '.gu-mirror'
     })
 
@@ -48,11 +47,11 @@
       },
       editable: true,
       droppable: true, // this allows things to be dropped onto the calendar
-      drop: function() {
+      drop: function(arg) {
         // is the "remove after drop" checkbox checked?
         if (document.getElementById('drop-remove').checked) {
           // if so, remove the element from the "Draggable Events" list
-          this.parentNode.removeChild(this);
+          arg.draggedEl.parentNode.removeChild(arg.draggedEl);
         }
       }
     });

+ 3 - 4
demos/external-dragging-jquery-ui.html

@@ -7,12 +7,11 @@
 <script src='../node_modules/jquery/dist/jquery.js'></script>
 <script src='../node_modules/components-jqueryui/jquery-ui.js'></script>
 <script src='../dist/fullcalendar.js'></script>
-<script src='../dist/generic-dragging.js'></script>
 <script>
 
   document.addEventListener('DOMContentLoaded', function() {
 
-    FullCalendarGenericDragging.enable({
+    FullCalendar.GenericDragging.enable({
       mirrorSelector: '.ui-draggable-dragging'
     })
 
@@ -48,11 +47,11 @@
       },
       editable: true,
       droppable: true, // this allows things to be dropped onto the calendar
-      drop: function() {
+      drop: function(arg) {
         // is the "remove after drop" checkbox checked?
         if ($('#drop-remove').is(':checked')) {
           // if so, remove the element from the "Draggable Events" list
-          $(this).remove();
+          $(arg.draggedEl).remove();
         }
       }
     });

+ 0 - 24
plugins/generic-dragging/main.ts

@@ -1,24 +0,0 @@
-import { ExternalDragging } from 'fullcalendar'
-import DumbDragListener from './DumbDragListener'
-
-let externalDragging
-
-// TODO: protect against multiple enables/disables
-
-window['FullCalendarGenericDragging'] = {
-
-  enable(options) {
-    let dragListener = new DumbDragListener(options || {})
-    externalDragging = new ExternalDragging(dragListener)
-  },
-
-  disable() {
-    if (externalDragging) {
-      externalDragging.destroy()
-      externalDragging = null
-    }
-  }
-
-}
-
-

+ 2 - 2
src/exports.ts

@@ -112,5 +112,5 @@ export { refineProps } from './reducers/utils'
 export { default as PointerDragging, PointerDragEvent } from './dnd/PointerDragging'
 export { default as ElementDragging } from './dnd/ElementDragging'
 
-export { default as ExternalDraggableEvent } from './interactions/ExternalDraggableEvent'
-export { default as ExternalDragging } from './interactions/ExternalDragging'
+export { default as Draggable } from './interactions-external/Draggable'
+export { default as GenericDragging } from './interactions-external/GenericDragging'

+ 4 - 4
src/interactions/ExternalDraggableEvent.ts → src/interactions-external/Draggable.ts

@@ -1,5 +1,5 @@
 import FeaturefulElementDragging from '../dnd/FeaturefulElementDragging'
-import ExternalDragging from './ExternalDragging'
+import ExternalElementDragging from './ExternalElementDragging'
 
 export interface ExternalDraggableEventSettings {
   el: HTMLElement
@@ -8,11 +8,11 @@ export interface ExternalDraggableEventSettings {
 
 export default class ExternalDraggableEvent {
 
-  externalDragging: ExternalDragging
+  externalDragging: ExternalElementDragging
 
   constructor(settings: ExternalDraggableEventSettings) {
-    let dragListener = new FeaturefulElementDragging(settings.el)
-    this.externalDragging = new ExternalDragging(dragListener, settings.event)
+    let dragging = new FeaturefulElementDragging(settings.el)
+    this.externalDragging = new ExternalElementDragging(dragging, settings.event)
   }
 
   destroy() {

+ 3 - 21
plugins/generic-dragging/DumbDragListener.ts → src/interactions-external/DumbElementDragging.ts

@@ -1,9 +1,5 @@
-import {
-  PointerDragging,
-  PointerDragEvent,
-  ElementDragging,
-  EmitterMixin
-} from 'fullcalendar'
+import PointerDragging, { PointerDragEvent } from '../dnd/PointerDragging'
+import ElementDragging from '../dnd/ElementDragging'
 
 /* needs to fire events:
 - pointerdown
@@ -12,10 +8,9 @@ import {
 - pointerup
 - dragend
 */
-export default class DumbDragListener extends ElementDragging {
+export default class DumbElementDragging extends ElementDragging {
 
   isDragging: boolean
-  emitter: EmitterMixin
   options: any
   pointer: PointerDragging
   currentMirrorEl: HTMLElement
@@ -24,7 +19,6 @@ export default class DumbDragListener extends ElementDragging {
     super()
 
     this.options = options
-    this.emitter = new EmitterMixin()
 
     let pointer = this.pointer = new PointerDragging(document as any)
     pointer.selector = options.itemSelector || '[data-event]' // TODO: better
@@ -37,10 +31,6 @@ export default class DumbDragListener extends ElementDragging {
     this.pointer.destroy()
   }
 
-  on(name, func) {
-    this.emitter.on(name, func)
-  }
-
   handlePointerDown = (ev: PointerDragEvent) => {
     this.isDragging = true
     this.emitter.trigger('pointerdown', ev)
@@ -57,10 +47,6 @@ export default class DumbDragListener extends ElementDragging {
     this.emitter.trigger('dragend', ev)
   }
 
-  setMirrorNeedsRevert() {
-    // doesn't support revert animation
-  }
-
   disableMirror() {
     let selector = this.options.mirrorSelector
     let mirrorEl = selector ? document.querySelector(selector) as HTMLElement : null
@@ -79,8 +65,4 @@ export default class DumbDragListener extends ElementDragging {
     }
   }
 
-  setIgnoreMove(bool: boolean) {
-    // no optimization
-  }
-
 }

+ 2 - 2
src/interactions/ExternalDragging.ts → src/interactions-external/ExternalElementDragging.ts

@@ -1,5 +1,5 @@
 import ElementDragging from '../dnd/ElementDragging'
-import HitDragging, { Hit } from './HitDragging'
+import HitDragging, { Hit } from '../interactions/HitDragging'
 import globalContext from '../common/GlobalContext'
 import { PointerDragEvent } from '../dnd/PointerDragging'
 import { EventStore, parseDef, createInstance } from '../reducers/event-store'
@@ -8,7 +8,7 @@ import * as externalHooks from '../exports'
 import { createDuration } from '../datelib/duration'
 import { assignTo } from '../util/object'
 
-export default class ExternalDragging {
+export default class ExternalElementDragging {
 
   hitDragging: HitDragging
   addableEventStore: EventStore

+ 24 - 0
src/interactions-external/GenericDragging.ts

@@ -0,0 +1,24 @@
+import ExternalDragging from './ExternalElementDragging'
+import DumbElementDragging from './DumbElementDragging'
+
+let externalDragging
+
+// TODO: protect against multiple enables/disables
+
+export default {
+
+  enable(options) {
+    let dragging = new DumbElementDragging(options || {})
+    externalDragging = new ExternalDragging(dragging)
+  },
+
+  disable() {
+    if (externalDragging) {
+      externalDragging.destroy()
+      externalDragging = null
+    }
+  }
+
+}
+
+

+ 0 - 1
webpack.config.js

@@ -14,7 +14,6 @@ const MODULES = {
   'dist/fullcalendar.css': './src/main.scss',
   'dist/fullcalendar.print.css': './src/common/print.scss',
   'dist/gcal': './plugins/gcal/main.ts',
-  'dist/generic-dragging': './plugins/generic-dragging/main.ts',
   'tmp/automated-tests': './tests/automated/index'
 }