Commit 79885751e2410fc0070f771d54ba163da796103c
1 parent
7a9f6b28
fix issue #1846
Showing
1 changed file
with
22 additions
and
0 deletions
Show diff stats
src/components/tabs/tabs.vue
| ... | ... | @@ -310,6 +310,16 @@ |
| 310 | 310 | }, |
| 311 | 311 | handleResize(){ |
| 312 | 312 | this.updateNavScroll(); |
| 313 | + }, | |
| 314 | + isInsideHiddenElement () { | |
| 315 | + let parentNode = this.$el.parentNode; | |
| 316 | + while(parentNode) { | |
| 317 | + if (parentNode.style.display === 'none') { | |
| 318 | + return parentNode; | |
| 319 | + } | |
| 320 | + parentNode = parentNode.parentNode; | |
| 321 | + } | |
| 322 | + return false; | |
| 313 | 323 | } |
| 314 | 324 | }, |
| 315 | 325 | watch: { |
| ... | ... | @@ -329,6 +339,18 @@ |
| 329 | 339 | this.showSlot = this.$slots.extra !== undefined; |
| 330 | 340 | this.observer = elementResizeDetectorMaker(); |
| 331 | 341 | this.observer.listenTo(this.$refs.navWrap, this.handleResize); |
| 342 | + | |
| 343 | + const hiddenParentNode = this.isInsideHiddenElement(); | |
| 344 | + if (hiddenParentNode) { | |
| 345 | + const mutationObserver = new MutationObserver(() => { | |
| 346 | + if (hiddenParentNode.style.display !== 'none') { | |
| 347 | + this.updateBar(); | |
| 348 | + mutationObserver.disconnect(); | |
| 349 | + } | |
| 350 | + }); | |
| 351 | + | |
| 352 | + mutationObserver.observe(hiddenParentNode, { attributes: true, childList: true, characterData: true, attributeFilter: ['style'] }); | |
| 353 | + } | |
| 332 | 354 | }, |
| 333 | 355 | beforeDestroy() { |
| 334 | 356 | this.observer.removeListener(this.$refs.navWrap, this.handleResize); | ... | ... |