Skip to content

Commit cc18a64

Browse files
committed
fix(reorder): item click handlers dont fire when tapping on reorder icon
1 parent d18f0f7 commit cc18a64

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

Diff for: js/angular/directive/itemReorderButton.js

+5
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ IonicModule
6767
});
6868
};
6969

70+
// prevent clicks from bubbling up to the item
71+
if(!$attr['ngClick'] && !$attr['onClick'] && !$attr['onclick']){
72+
$element[0].onclick = function(e){e.stopPropagation(); return false;};
73+
}
74+
7075
var container = jqLite(ITEM_TPL_REORDER_BUTTON);
7176
container.append($element);
7277
itemCtrl.$element.append(container).addClass('item-right-editable');

Diff for: test/unit/angular/directive/item.unit.js

+17
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,23 @@ describe('ionReorderButton directive', function() {
114114
expect(reorderContainer.hasClass('visible')).toBe(true);
115115
expect(reorderContainer.hasClass('active')).toBe(true);
116116
}));
117+
it('should allow click handlers, but not bubble up to item\'s click event', inject(function($compile, $rootScope) {
118+
$rootScope.click = jasmine.createSpy('click');;
119+
120+
var el = angular.element('<ion-item ng-click="click()"><ion-reorder-button></ion-reorder-button></ion-item>');
121+
$compile(el)($rootScope);
122+
$rootScope.$apply();
123+
var reorderContainer = angular.element(el[0].querySelector('ion-reorder-button'));
124+
reorderContainer.triggerHandler('click');
125+
expect($rootScope.click).not.toHaveBeenCalled();
126+
127+
var el = angular.element('<ion-item><ion-reorder-button ng-click="click()"></ion-reorder-button></ion-item>');
128+
$compile(el)($rootScope);
129+
$rootScope.$apply();
130+
var reorderContainer = angular.element(el[0].querySelector('ion-reorder-button'));
131+
reorderContainer.triggerHandler('click');
132+
expect($rootScope.click).toHaveBeenCalled();
133+
}));
117134
});
118135

119136
describe('ionOptionButton directive', function() {

0 commit comments

Comments
 (0)