Skip to content

Commit 840c014

Browse files
committed
fix(item): clicks climb 5 levels looking for an item to activate, but not 6. Fixes #1921
1 parent 0bf6bc5 commit 840c014

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

js/utils/activator.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
var ele = e.target;
1919
var eleToActivate;
2020

21-
for(var x=0; x<4; x++) {
21+
for(var x=0; x<6; x++) {
2222
if(!ele || ele.nodeType !== 1) break;
2323
if(eleToActivate && ele.classList.contains('item')) {
2424
eleToActivate = ele;
@@ -32,6 +32,10 @@
3232
eleToActivate = ele;
3333
break;
3434
}
35+
// no sense climbing past these
36+
if(ele.classList.contains('pane') || ele.tagName == 'BODY' || ele.tagName == 'ION-CONTENT'){
37+
break;
38+
}
3539
ele = ele.parentElement;
3640
}
3741

test/unit/utils/activator.unit.js

+29
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,35 @@ describe('Ionic Element Activator', function() {
7676
expect(itemContentEle.classList.contains('activated')).toEqual(false);
7777
expect(aEle.classList.contains('activated')).toEqual(true);
7878
});
79+
it('Should activate 5 levels up, but not 6', function() {
80+
var itemEle = document.createElement('div');
81+
itemEle.className = 'item';
82+
83+
var itemContentEle = document.createElement('a');
84+
itemContentEle.className = 'item-content';
85+
itemEle.appendChild(itemContentEle);
86+
87+
var div1 = document.createElement('div');
88+
itemContentEle.appendChild(div1);
89+
var div2 = document.createElement('div');
90+
div1.appendChild(div2);
91+
var div3 = document.createElement('div');
92+
div2.appendChild(div3);
93+
var div4 = document.createElement('div');
94+
div3.appendChild(div4);
95+
var div5 = document.createElement('div');
96+
div4.appendChild(div5);
97+
var div6 = document.createElement('div');
98+
div5.appendChild(div6);
99+
100+
var e = { target: div6 };
101+
ionic.activator.start(e);
102+
expect(itemContentEle.classList.contains('activated')).toEqual(false);
103+
104+
var e = { target: div5 };
105+
ionic.activator.start(e);
106+
expect(itemContentEle.classList.contains('activated')).toEqual(true);
107+
});
79108

80109
it('Should activate child "div.item-content div[ng-click]" of a .item', function() {
81110
var itemEle = document.createElement('div');

0 commit comments

Comments
 (0)