Merge branch '2.0' of https://github.com/iview/iview into 2.0
This commit is contained in:
commit
1a1f7c325c
1 changed files with 24 additions and 1 deletions
|
@ -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>
|
||||||
|
|
Loading…
Add table
Reference in a new issue