Merge branch '2.0' of https://github.com/iview/iview into 2.0

This commit is contained in:
梁灏 2017-10-30 16:09:25 +08:00
commit 1a1f7c325c

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>