Browse Source

Hotfix more sortable elements

Haocen Xu 7 years ago
parent
commit
616dade81c

+ 1 - 3
client/components/boards/boardBody.js

@@ -75,9 +75,7 @@ BlazeComponent.extendComponent({
     });
     });
 
 
     // ugly touch event hotfix
     // ugly touch event hotfix
-    $('.js-swimlane:not(.placeholder)').each(function() {
-      enableClickOnTouch(this);
-    });
+    enableClickOnTouch('.js-swimlane:not(.placeholder)');
 
 
     function userIsMember() {
     function userIsMember() {
       return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
       return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();

+ 6 - 0
client/components/cards/cardDetails.js

@@ -132,6 +132,9 @@ BlazeComponent.extendComponent({
       },
       },
     });
     });
 
 
+    // ugly touch event hotfix
+    enableClickOnTouch('.card-checklist-items .js-checklist');
+
     const $subtasksDom = this.$('.card-subtasks-items');
     const $subtasksDom = this.$('.card-subtasks-items');
 
 
     $subtasksDom.sortable({
     $subtasksDom.sortable({
@@ -167,6 +170,9 @@ BlazeComponent.extendComponent({
       },
       },
     });
     });
 
 
+    // ugly touch event hotfix
+    enableClickOnTouch('.card-subtasks-items .js-subtasks');
+
     function userIsMember() {
     function userIsMember() {
       return Meteor.user() && Meteor.user().isBoardMember();
       return Meteor.user() && Meteor.user().isBoardMember();
     }
     }

+ 1 - 3
client/components/cards/checklists.js

@@ -38,9 +38,7 @@ function initSorting(items) {
   });
   });
 
 
   // ugly touch event hotfix
   // ugly touch event hotfix
-  $('.js-checklist-item:not(.placeholder)').each(function() {
-    enableClickOnTouch(this);
-  });
+  enableClickOnTouch('.js-checklist-item:not(.placeholder)');
 }
 }
 
 
 BlazeComponent.extendComponent({
 BlazeComponent.extendComponent({

+ 1 - 3
client/components/lists/list.js

@@ -84,9 +84,7 @@ BlazeComponent.extendComponent({
     });
     });
 
 
     // ugly touch event hotfix
     // ugly touch event hotfix
-    $(itemsSelector).each(function() {
-      enableClickOnTouch(this);
-    });
+    enableClickOnTouch(itemsSelector);
 
 
     // Disable drag-dropping if the current user is not a board member or is comment only
     // Disable drag-dropping if the current user is not a board member or is comment only
     this.autorun(() => {
     this.autorun(() => {

+ 1 - 3
client/components/swimlanes/swimlanes.js

@@ -67,9 +67,7 @@ function initSortable(boardComponent, $listsDom) {
   });
   });
 
 
   // ugly touch event hotfix
   // ugly touch event hotfix
-  $('.js-list:not(.js-list-composer)').each(function() {
-    enableClickOnTouch(this);
-  });
+  enableClickOnTouch('.js-list:not(.js-list-composer)');
 
 
   function userIsMember() {
   function userIsMember() {
     return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
     return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();

+ 11 - 10
client/lib/utils.js

@@ -123,23 +123,24 @@ Utils = {
     );
     );
   },
   },
 
 
-  enableClickOnTouch(element) {
+  enableClickOnTouch(selector) {
     let touchStart = null;
     let touchStart = null;
     let lastTouch = null;
     let lastTouch = null;
-    element.addEventListener('touchstart', function(e) {
-      touchStart = e.touches[0];
-    }, false);
-    element.addEventListener('touchmove', function(e) {
-      const touches = e.touches;
+
+    $(document).on('touchstart', selector, function(e) {
+      touchStart = e.originalEvent.touches[0];
+    });
+    $(document).on('touchmove', selector, function(e) {
+      const touches = e.originalEvent.touches;
       lastTouch = touches[touches.length - 1];
       lastTouch = touches[touches.length - 1];
-    }, true);
-    element.addEventListener('touchend', function() {
+    });
+    $(document).on('touchend', selector, function(e) {
       if (touchStart && lastTouch && Utils.calculateTouchDistance(touchStart, lastTouch) <= 20) {
       if (touchStart && lastTouch && Utils.calculateTouchDistance(touchStart, lastTouch) <= 20) {
         const clickEvent = document.createEvent('MouseEvents');
         const clickEvent = document.createEvent('MouseEvents');
         clickEvent.initEvent('click', true, true);
         clickEvent.initEvent('click', true, true);
-        this.dispatchEvent(clickEvent);
+        e.target.dispatchEvent(clickEvent);
       }
       }
-    }, false);
+    });
   },
   },
 };
 };