All files / src/components/m-complex.vue index.vue

78.94% Statements 15/19
50% Branches 3/6
66.66% Functions 2/3
77.77% Lines 14/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      7x   7x     7x                                                                                                                                      
<template>
<div :class="$style.root" :readonly="readonly" :disabled="disabled">
    <slot></slot>
</div>
</template>
 
<script>
import MSinglex from '../m-singlex.vue';
import MMultiplex from '../m-multiplex.vue';
 
export default {
    name: 'm-complex',
    groupName: 'm-complex-group',
    childName: 'm-complex-item',
    mixins: [MSinglex, MMultiplex],
    props: {
        value: null, // @inherit: autoSelect: { type: Boolean, default: false },
        // @inherit: cancelable: { type: Boolean, default: false },
        // @inherit: router: { type: Boolean, default: false },
        multiple: { type: Boolean, default: false }, // @inherit: keepOrder: { type: Boolean, default: false },
        // @inherit: readonly: { type: Boolean, default: false },
        // @inherit: disabled: { type: Boolean, default: false },
    },
    data() {
        return {
            // @inherit: groupVMs: [],
            // @inherit: itemVMs: [],
            // @inherit: selectedVM: undefined,
            // @inherit: selectedVMs: undefined,
            currentMultiple: this.multiple,
        };
    },
    watch: {
        multiple(multiple) {
            this.currentMultiple = multiple;
        },
        value: {
            override: true,
            handler(value, oldValue) {
                (this.currentMultiple ? MMultiplex : MSinglex).watch.value.call(
                    this,
                    value,
                    oldValue,
                );
            },
        }, // This method just run once after pushing many itemVMs
        itemVMs: {
            override: true,
            handler(itemVMs, oldVMs) {
                (this.currentMultiple ? MMultiplex : MSinglex).watch.itemVMs.call(this, itemVMs, oldVMs);
            },
        },
    },
    methods: {
        watchValue(value) {
            (this.currentMultiple ? MMultiplex : MSinglex).methods.watchValue.call(this, value);
        },
        select(itemVM, selected) {
            (this.currentMultiple ? MMultiplex : MSinglex).methods.select.call(
                this,
                itemVM,
                selected,
            );
        },
    },
};
</script>
 
<style module>
.root {
    /* @Private */
    user-select: none;
    position: relative;
}
</style>