summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/components/boards/boardBody.js4
-rw-r--r--client/components/cards/cardDetails.js6
-rw-r--r--client/components/cards/checklists.js4
-rw-r--r--client/components/lists/list.js4
-rw-r--r--client/components/swimlanes/swimlanes.js4
-rw-r--r--client/lib/utils.js21
6 files changed, 21 insertions, 22 deletions
diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js
index 6ff40ca4..b68c9b12 100644
--- a/client/components/boards/boardBody.js
+++ b/client/components/boards/boardBody.js
@@ -75,9 +75,7 @@ BlazeComponent.extendComponent({
});
// ugly touch event hotfix
- $('.js-swimlane:not(.placeholder)').each(function() {
- enableClickOnTouch(this);
- });
+ enableClickOnTouch('.js-swimlane:not(.placeholder)');
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js
index 5fee1680..1583a51f 100644
--- a/client/components/cards/cardDetails.js
+++ b/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');
$subtasksDom.sortable({
@@ -167,6 +170,9 @@ BlazeComponent.extendComponent({
},
});
+ // ugly touch event hotfix
+ enableClickOnTouch('.card-subtasks-items .js-subtasks');
+
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember();
}
diff --git a/client/components/cards/checklists.js b/client/components/cards/checklists.js
index 7fc54f9e..e014abba 100644
--- a/client/components/cards/checklists.js
+++ b/client/components/cards/checklists.js
@@ -38,9 +38,7 @@ function initSorting(items) {
});
// ugly touch event hotfix
- $('.js-checklist-item:not(.placeholder)').each(function() {
- enableClickOnTouch(this);
- });
+ enableClickOnTouch('.js-checklist-item:not(.placeholder)');
}
BlazeComponent.extendComponent({
diff --git a/client/components/lists/list.js b/client/components/lists/list.js
index 3f7c6dea..267af31c 100644
--- a/client/components/lists/list.js
+++ b/client/components/lists/list.js
@@ -84,9 +84,7 @@ BlazeComponent.extendComponent({
});
// 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
this.autorun(() => {
diff --git a/client/components/swimlanes/swimlanes.js b/client/components/swimlanes/swimlanes.js
index 2acf4a82..865895a9 100644
--- a/client/components/swimlanes/swimlanes.js
+++ b/client/components/swimlanes/swimlanes.js
@@ -67,9 +67,7 @@ function initSortable(boardComponent, $listsDom) {
});
// ugly touch event hotfix
- $('.js-list:not(.js-list-composer)').each(function() {
- enableClickOnTouch(this);
- });
+ enableClickOnTouch('.js-list:not(.js-list-composer)');
function userIsMember() {
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
diff --git a/client/lib/utils.js b/client/lib/utils.js
index 7e2651d2..b70faec6 100644
--- a/client/lib/utils.js
+++ b/client/lib/utils.js
@@ -123,23 +123,24 @@ Utils = {
);
},
- enableClickOnTouch(element) {
+ enableClickOnTouch(selector) {
let touchStart = 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];
- }, true);
- element.addEventListener('touchend', function() {
+ });
+ $(document).on('touchend', selector, function(e) {
if (touchStart && lastTouch && Utils.calculateTouchDistance(touchStart, lastTouch) <= 20) {
const clickEvent = document.createEvent('MouseEvents');
clickEvent.initEvent('click', true, true);
- this.dispatchEvent(clickEvent);
+ e.target.dispatchEvent(clickEvent);
}
- }, false);
+ });
},
};