|
29 | 29 | } else { |
30 | 30 | var parentElement= false; |
31 | 31 | var tempElement = element.parent(); |
32 | | - //find parent modal |
| 32 | + // find parent component |
33 | 33 | while(parentElement === false) { |
34 | 34 | if(tempElement[0].nodeName == 'BODY') { |
35 | 35 | parentElement = ''; |
|
46 | 46 | element.on('click', function(e) { |
47 | 47 | BaseAppsApi.publish(targetId, 'close'); |
48 | 48 |
|
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 |
51 | 51 | e.preventDefault(); |
52 | 52 | } |
53 | 53 | }); |
|
68 | 68 | element.on('click', function(e) { |
69 | 69 | BaseAppsApi.publish(attrs.baOpen, 'open'); |
70 | 70 |
|
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 |
73 | 73 | e.preventDefault(); |
74 | 74 | } |
75 | 75 | }); |
|
90 | 90 | element.on('click', function(e) { |
91 | 91 | BaseAppsApi.publish(attrs.baToggle, 'toggle'); |
92 | 92 |
|
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 |
95 | 95 | e.preventDefault(); |
96 | 96 | } |
97 | 97 | }); |
|
179 | 179 | BaseAppsApi.closeActiveElements({exclude: attrs.baHardToggle}); |
180 | 180 | BaseAppsApi.publish(attrs.baHardToggle, 'toggle'); |
181 | 181 |
|
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 |
184 | 184 | e.preventDefault(); |
185 | 185 | } |
186 | 186 | }); |
|
265 | 265 | } |
266 | 266 | } |
267 | 267 | } |
| 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 | + } |
268 | 282 | })(); |
0 commit comments