Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 7x | 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;
|