Merge pull request #2230 from cheng-kang/2.0

fix issue #1846
This commit is contained in:
Aresn 2017-10-30 03:01:06 -05:00 committed by GitHub
commit 915e06db63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -26,7 +26,7 @@
<script>
import Icon from '../icon/icon.vue';
import Render from '../base/render';
import { oneOf } from '../../utils/assist';
import { oneOf, MutationObserver } from '../../utils/assist';
import Emitter from '../../mixins/emitter';
import elementResizeDetectorMaker from 'element-resize-detector';
@ -310,6 +310,16 @@
},
handleResize(){
this.updateNavScroll();
},
isInsideHiddenElement () {
let parentNode = this.$el.parentNode;
while(parentNode) {
if (parentNode.style.display === 'none') {
return parentNode;
}
parentNode = parentNode.parentNode;
}
return false;
}
},
watch: {
@ -329,9 +339,22 @@
this.showSlot = this.$slots.extra !== undefined;
this.observer = elementResizeDetectorMaker();
this.observer.listenTo(this.$refs.navWrap, this.handleResize);
const hiddenParentNode = this.isInsideHiddenElement();
if (hiddenParentNode) {
this.mutationObserver = new MutationObserver(() => {
if (hiddenParentNode.style.display !== 'none') {
this.updateBar();
this.mutationObserver.disconnect();
}
});
this.mutationObserver.observe(hiddenParentNode, { attributes: true, childList: true, characterData: true, attributeFilter: ['style'] });
}
},
beforeDestroy() {
this.observer.removeListener(this.$refs.navWrap, this.handleResize);
this.mutationObserver.disconnect();
}
};
</script>