All files / src/components/u-timeline.vue/item.vue index.js

5.26% Statements 1/19
0% Branches 0/11
0% Functions 0/10
5.55% Lines 1/18

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;