Skip to content

Commit 9ebd878

Browse files
committed
fix links used inside close/open/toggle directives
resolves #72
1 parent d0dfb19 commit 9ebd878

1 file changed

Lines changed: 23 additions & 9 deletions

File tree

js/angular/components/common/common.js

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
} else {
3030
var parentElement= false;
3131
var tempElement = element.parent();
32-
//find parent modal
32+
// find parent component
3333
while(parentElement === false) {
3434
if(tempElement[0].nodeName == 'BODY') {
3535
parentElement = '';
@@ -46,8 +46,8 @@
4646
element.on('click', function(e) {
4747
BaseAppsApi.publish(targetId, 'close');
4848

49-
if (!e.target.href) {
50-
// prevent default if target doesn't have href attribute
49+
if (!_hasParentHref(e.target, targetId)) {
50+
// prevent default if target not inside link
5151
e.preventDefault();
5252
}
5353
});
@@ -68,8 +68,8 @@
6868
element.on('click', function(e) {
6969
BaseAppsApi.publish(attrs.baOpen, 'open');
7070

71-
if (!e.target.href) {
72-
// prevent default if target doesn't have href attribute
71+
if (!_hasParentHref(e.target, attrs.baOpen)) {
72+
// prevent default if target not inside link
7373
e.preventDefault();
7474
}
7575
});
@@ -90,8 +90,8 @@
9090
element.on('click', function(e) {
9191
BaseAppsApi.publish(attrs.baToggle, 'toggle');
9292

93-
if (!e.target.href) {
94-
// prevent default if target doesn't have href attribute
93+
if (!_hasParentHref(e.target, attrs.baToggle)) {
94+
// prevent default if target not inside link
9595
e.preventDefault();
9696
}
9797
});
@@ -179,8 +179,8 @@
179179
BaseAppsApi.closeActiveElements({exclude: attrs.baHardToggle});
180180
BaseAppsApi.publish(attrs.baHardToggle, 'toggle');
181181

182-
if (!e.target.href) {
183-
// prevent default if target doesn't have href attribute
182+
if (!_hasParentHref(e.target, attrs.baToggle)) {
183+
// prevent default if target not inside link
184184
e.preventDefault();
185185
}
186186
});
@@ -265,4 +265,18 @@
265265
}
266266
}
267267
}
268+
269+
function _hasParentHref(target, rootId) {
270+
var parentElement = target, hasHref = false;
271+
272+
while (parentElement && parentElement.id != rootId) {
273+
if (parentElement.href) {
274+
hasHref = true;
275+
break;
276+
}
277+
parentElement = parentElement.parentNode;
278+
}
279+
280+
return hasHref;
281+
}
268282
})();

0 commit comments

Comments
 (0)