Преглед изворни кода

put jquery ui draggable into own plugin

Adam Shaw пре 7 година
родитељ
комит
e24e0b0796
4 измењених фајлова са 54 додато и 48 уклоњено
  1. 1 0
      demos/external-dragging.html
  2. 44 0
      plugins/jquery-ui-draggable/main.ts
  3. 0 48
      src/Calendar.ts
  4. 9 0
      webpack.config.js

+ 1 - 0
demos/external-dragging.html

@@ -8,6 +8,7 @@
 <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/jquery-ui-draggable.js'></script>
 <script>
 
   document.addEventListener('DOMContentLoaded', function() {

+ 44 - 0
plugins/jquery-ui-draggable/main.ts

@@ -0,0 +1,44 @@
+import * as $ from 'jquery'
+import { Calendar } from 'fullcalendar'
+
+let $document = $(document)
+
+Calendar.on('initialRender', function(calendar) {
+
+  const handleDragStart = function(ev, ui) {
+
+    const handleDragMove = (ev, ui) => {
+      if (calendar.view) {
+        calendar.view.handleExternalDragMove(ev)
+      }
+    }
+    const handleDragStop = (ev, ui) => {
+      if (calendar.view) {
+        calendar.view.handleExternalDragStop(ev)
+      }
+      $document
+        .off('drag', handleDragMove)
+        .off('dragstop', handleDragStop)
+    }
+
+    $document
+      .on('drag', handleDragMove)
+      .on('dragstop', handleDragStop)
+
+    if (calendar.view) {
+      const el = ((ui && ui.item) ? ui.item[0] : null) || ev.target
+      calendar.view.handlExternalDragStart(
+        ev.originalEvent,
+        el,
+        ev.name === 'dragstart' // don't watch mouse/touch movements if doing jqui drag (not sort)
+      )
+    }
+
+  }
+
+  $document.on('dragstart sortstart', handleDragStart)
+
+  calendar.on('destroy', function(calendar) {
+    $document.off('dragstart sortstart', handleDragStart)
+  })
+})

+ 0 - 48
src/Calendar.ts

@@ -1350,51 +1350,3 @@ function filterLegacyEventInstances(legacyEventInstances, legacyQuery) {
     })
   }
 }
-
-
-// jQuery UI dragging
-
-if (window['jQuery']) {
-  let $document = window['jQuery'](document)
-
-  Calendar.on('initialRender', function(calendar) {
-
-    const handleDragStart = function(ev, ui) {
-
-      const handleDragMove = (ev, ui) => {
-        if (calendar.view) {
-          calendar.view.handleExternalDragMove(ev)
-        }
-      }
-      const handleDragStop = (ev, ui) => {
-        if (calendar.view) {
-          calendar.view.handleExternalDragStop(ev)
-        }
-        $document
-          .off('drag', handleDragMove)
-          .off('dragstop', handleDragStop)
-      }
-
-      $document
-        .on('drag', handleDragMove)
-        .on('dragstop', handleDragStop)
-
-      if (calendar.view) {
-        const el = ((ui && ui.item) ? ui.item[0] : null) || ev.target
-        calendar.view.handlExternalDragStart(
-          ev.originalEvent,
-          el,
-          ev.name === 'dragstart' // don't watch mouse/touch movements if doing jqui drag (not sort)
-        )
-      }
-
-    }
-
-    $document.on('dragstart sortstart', handleDragStart)
-
-    calendar.on('destroy', function(calendar) {
-      $document.off('dragstart sortstart', handleDragStart)
-    })
-  })
-
-}

+ 9 - 0
webpack.config.js

@@ -14,6 +14,7 @@ const MODULES = {
   'dist/fullcalendar.css': './src/main.scss',
   'dist/fullcalendar.print.css': './src/common/print.scss',
   'dist/gcal': './plugins/gcal/main.ts',
+  'dist/jquery-ui-draggable': './plugins/jquery-ui-draggable/main.ts',
   'tmp/automated-tests': './tests/automated/index'
 }
 
@@ -34,6 +35,14 @@ module.exports = {
     // use our external reference instead.
     '../moment': 'moment',
 
+    // for plugins that might need jQuery
+    jquery: {
+      commonjs: 'jquery',
+      commonjs2: 'jquery',
+      amd: 'jquery',
+      root: 'jQuery'
+    },
+
     // plugins reference the root 'fullcalendar' namespace
     fullcalendar: {
       commonjs: 'fullcalendar',