cloud-ui.vusion
Version:
Vusion Cloud UI
78 lines (75 loc) • 2.09 kB
JavaScript
import SEmpty from '../../../components/s-empty.vue';
export const UTimelineItem = {
name: 'u-timeline-item',
props: {
color: {
type: String,
default: 'blue',
},
label: {
type: String,
},
position: {
validator(value) {
return ['left', 'right'].indexOf(value) !== -1;
},
default: 'right',
},
item: {
type: [Object, String, Number],
},
index: {
type: [Object, String, Number],
},
},
components: {
SEmpty,
},
inject: ['timeline'],
data() {
return {
observerwh: null,
};
},
computed: {
hastop() {
return this.$env.VUE_APP_DESIGNER;
},
itemPosition() {
return ['alternate', 'label'].indexOf(this.timeline.mode) !== -1 ? this.position : undefined;
},
},
mounted() {
this.observeLabel();
},
updated() {
this.observeLabel();
},
destroyed() {
this.observerwh && this.observerwh.disconnect();
},
methods: {
observeLabel() {
if (!this.$refs.labelwrap) return;
this.observerwh = new MutationObserver(this.pwh);
this.observerwh.observe(this.$refs.labelwrap, {
attributes: true, childList: true, subtree: true,
});
setTimeout(() => {
this.pwh();
});
},
pwh() {
let realH;
const realHeight = this.$refs.labelwrap.scrollHeight;
const realHeightr = this.$refs.contentwrap.scrollHeight;
// eslint-disable-next-line prefer-const
realH = Math.max(realHeight, realHeightr);
if (this.timeline.mode === 'label' && realH && realH > 0) {
// const originHeight = this.$refs.wrap.offsetHeight;
(this.$refs.wrap.style.height = realH + 20 + 'px');
}
},
},
};
export default UTimelineItem;