From 2e9d0965a52c0e51fbc2a950b098fec00a98f2fc Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 7 Jul 2014 13:03:52 -0600 Subject: [PATCH] fix(ionList): allow scrolling while reorder or delete is active Closes #1703 --- js/angular/directive/itemDeleteButton.js | 2 +- js/angular/directive/itemReorderButton.js | 2 +- js/angular/directive/list.js | 26 +++++++++++------------ 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/js/angular/directive/itemDeleteButton.js b/js/angular/directive/itemDeleteButton.js index f5e43ddd5b..dccbea297c 100644 --- a/js/angular/directive/itemDeleteButton.js +++ b/js/angular/directive/itemDeleteButton.js @@ -1,5 +1,5 @@ var ITEM_TPL_DELETE_BUTTON = - '
' + + '
' + '
'; /** * @ngdoc directive diff --git a/js/angular/directive/itemReorderButton.js b/js/angular/directive/itemReorderButton.js index 96f6df71d9..29f8dd13c5 100644 --- a/js/angular/directive/itemReorderButton.js +++ b/js/angular/directive/itemReorderButton.js @@ -1,5 +1,5 @@ var ITEM_TPL_REORDER_BUTTON = - '
' + + '
' + '
'; /** diff --git a/js/angular/directive/list.js b/js/angular/directive/list.js index 4fbca79367..d81bad7b1b 100644 --- a/js/angular/directive/list.js +++ b/js/angular/directive/list.js @@ -140,9 +140,12 @@ function($animate, $timeout) { if (isShown) listCtrl.closeOptionButtons(); listCtrl.canSwipeItems(!isShown); + var deleteButton = jqLite($element[0].getElementsByClassName('item-delete')); + $element.children().toggleClass('list-left-editing', isShown); - toggleNgHide('.item-delete.item-left-edit', isShown); - toggleTapDisabled('.item-content', isShown); + toggleNgHide(deleteButton, isShown); + + $element.toggleClass('disable-pointer-events', isShown); }); $scope.$watch(function() { return listCtrl.showReorder(); @@ -153,13 +156,16 @@ function($animate, $timeout) { if (isShown) listCtrl.closeOptionButtons(); listCtrl.canSwipeItems(!isShown); + var reorderButton = jqLite($element[0].getElementsByClassName('item-reorder')); + $element.children().toggleClass('list-right-editing', isShown); - toggleNgHide('.item-reorder.item-right-edit', isShown); - toggleTapDisabled('.item-content', isShown); + toggleNgHide(reorderButton, isShown); + + $element.toggleClass('disable-pointer-events', isShown); }); - function toggleNgHide(selector, shouldShow) { - forEach($element[0].querySelectorAll(selector), function(node) { + function toggleNgHide(element, shouldShow) { + forEach(element, function(node) { if (shouldShow) { $animate.removeClass(jqLite(node), 'ng-hide'); } else { @@ -167,14 +173,6 @@ function($animate, $timeout) { } }); } - function toggleTapDisabled(selector, shouldDisable) { - var el = jqLite($element[0].querySelectorAll(selector)); - if (shouldDisable) { - el.attr('data-tap-disabled', 'true'); - } else { - el.removeAttr('data-tap-disabled'); - } - } } };