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