|
1 | 1 | <template> |
2 | | - <component :class="navClass" :is="tag" :style="navStyles"> |
| 2 | + <component :class="navClass" :is="tag" :style="navStyles" @click="close"> |
3 | 3 | <button :class="navTogglerClass" type="button" data-toggle="collapse" :data-target="target" aria-controls="navbarSupportedContent" |
4 | | - aria-expanded="false" aria-label="Toggle navigation" @click="onClick"> |
| 4 | + aria-expanded="false" aria-label="Toggle navigation" @click.stop="onClick"> |
5 | 5 | <div v-if="animated" ref="animatedIcon" :class="'animated-icon' + animation"><span></span><span></span><span></span><span v-if="animation === '3'"></span></div> |
6 | 6 | <span v-else :class="navTogglerIcon"> |
7 | 7 | <i v-if="hamburger" class="fa fa-bars fa-1x"/> |
@@ -33,7 +33,7 @@ const Navbar = { |
33 | 33 | }, |
34 | 34 | target: { |
35 | 35 | type: String, |
36 | | - default: '#navbarSupportedContent' |
| 36 | + default: 'navbarSupportedContent' |
37 | 37 | }, |
38 | 38 | scrolling: { |
39 | 39 | type: Boolean, |
@@ -164,11 +164,33 @@ const Navbar = { |
164 | 164 | if (e.target.classList.contains('navbar-toggler') || e.target.parentNode.classList.contains('navbar-toggler')) { |
165 | 165 | this.toggle(); |
166 | 166 | } |
| 167 | + }, |
| 168 | + searchForCollapseContent(node) { |
| 169 | + if ((typeof node.attributes === 'undefined') || (typeof node.attributes.id === 'undefined')) return; |
| 170 | + if (node.id === this.target) { |
| 171 | + this.collapse = node; |
| 172 | + this.collapse.classList.add('collapse'); |
| 173 | + } |
167 | 174 | } |
168 | 175 | }, |
169 | 176 | mounted() { |
170 | | - this.collapse = this.$el.children.navbarSupportedContent; |
171 | | - this.collapse.classList.add('collapse'); |
| 177 | + this.$slots.default.forEach(child => { |
| 178 | + if (child.elm.id === this.target) { |
| 179 | + this.collapse = child.elm; |
| 180 | + this.collapse.classList.add('collapse'); |
| 181 | + } else { |
| 182 | + this.children = child.elm.childNodes; |
| 183 | + this.children.forEach(nextChild => { |
| 184 | + this.searchForCollapseContent(nextChild); |
| 185 | + nextChild.childNodes.forEach(nextChild2 => { |
| 186 | + this.searchForCollapseContent(nextChild2); |
| 187 | + nextChild2.childNodes.forEach(nextChild3 => { |
| 188 | + this.searchForCollapseContent(nextChild3); |
| 189 | + }); |
| 190 | + }); |
| 191 | + }); |
| 192 | + } |
| 193 | + }); |
172 | 194 | }, |
173 | 195 | created() { |
174 | 196 | window.addEventListener('scroll', this.handleScroll); |
|
0 commit comments