Commit 79885751e2410fc0070f771d54ba163da796103c

Authored by Kang Cheng
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);
... ...