|
|
|
@ -56,6 +56,7 @@ function initSortable(boardComponent, $listsDom) { |
|
|
|
|
$listsDom.sortable({ |
|
|
|
|
tolerance: 'pointer', |
|
|
|
|
helper: 'clone', |
|
|
|
|
handle: '.js-list-header', |
|
|
|
|
items: '.js-list:not(.js-list-composer)', |
|
|
|
|
placeholder: 'list placeholder', |
|
|
|
|
distance: 7, |
|
|
|
@ -101,16 +102,7 @@ function initSortable(boardComponent, $listsDom) { |
|
|
|
|
boardComponent.autorun(() => { |
|
|
|
|
const $listDom = $listsDom; |
|
|
|
|
|
|
|
|
|
if (Utils.isMiniScreen) { |
|
|
|
|
$listsDom.sortable({ |
|
|
|
|
handle: '.js-list-handle', |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
if (!Utils.isMiniScreen && showDesktopDragHandles) { |
|
|
|
|
$listsDom.sortable({ |
|
|
|
|
handle: '.js-list-header', |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($listDom.data('sortable')) { |
|
|
|
|
$listsDom.sortable( |
|
|
|
|
'option', |
|
|
|
@ -118,6 +110,33 @@ function initSortable(boardComponent, $listsDom) { |
|
|
|
|
MultiSelection.isActive() || !userIsMember(), |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Utils.isMiniScreen()) { |
|
|
|
|
this.$('.js-lists').sortable({ |
|
|
|
|
handle: '.list-header-menu-handle', |
|
|
|
|
}); |
|
|
|
|
this.$('.js-swimlanes').sortable({ |
|
|
|
|
handle: '.swimlane-header-menu-miniscreen-handle', |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
if (Meteor.user().hasShowDesktopDragHandles()) { |
|
|
|
|
this.$('.js-lists').sortable({ |
|
|
|
|
handle: '.list-header-menu-handle', |
|
|
|
|
}); |
|
|
|
|
this.$('.js-swimlanes').sortable({ |
|
|
|
|
handle: '.swimlane-header-menu-handle', |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
this.$('.js-lists').sortable({ |
|
|
|
|
handle: '.list-header', |
|
|
|
|
}); |
|
|
|
|
this.$('.js-swimlanes').sortable({ |
|
|
|
|
handle: '.swimlane-header', |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -161,32 +180,13 @@ BlazeComponent.extendComponent({ |
|
|
|
|
// define a list of elements in which we disable the dragging because
|
|
|
|
|
// the user will legitimately expect to be able to select some text with
|
|
|
|
|
// his mouse.
|
|
|
|
|
|
|
|
|
|
if (Utils.isMiniScreen) { |
|
|
|
|
noDragInside = [ |
|
|
|
|
'a', |
|
|
|
|
'input', |
|
|
|
|
'textarea', |
|
|
|
|
'p', |
|
|
|
|
'.js-list-handle', |
|
|
|
|
'.js-swimlane-header-handle', |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!Utils.isMiniScreen && !showDesktopDragHandles) { |
|
|
|
|
noDragInside = ['a', 'input', 'textarea', 'p', '.js-list-header']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!Utils.isMiniScreen && showDesktopDragHandles) { |
|
|
|
|
noDragInside = [ |
|
|
|
|
'a', |
|
|
|
|
'input', |
|
|
|
|
'textarea', |
|
|
|
|
'p', |
|
|
|
|
'.js-list-handle', |
|
|
|
|
'.js-swimlane-header-handle', |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
const noDragInside = [ |
|
|
|
|
'a', |
|
|
|
|
'input', |
|
|
|
|
'textarea', |
|
|
|
|
'p', |
|
|
|
|
'.js-list-header', |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
if ( |
|
|
|
|
$(evt.target).closest(noDragInside.join(',')).length === 0 && |
|
|
|
@ -308,3 +308,9 @@ BlazeComponent.extendComponent({ |
|
|
|
|
initSortable(boardComponent, $listsDom); |
|
|
|
|
}, |
|
|
|
|
}).register('listsGroup'); |
|
|
|
|
|
|
|
|
|
Template.listsGroup.helpers({ |
|
|
|
|
showDesktopDragHandles() { |
|
|
|
|
return Meteor.user().hasShowDesktopDragHandles(); |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|