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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | 7x 7x 7x 7x | <template>
<div :class="$style.root"
:selected="currentSelected" :readonly="parentVM.readonly" :disabled="disabled || parentVM.disabled"
@click="select($event)" v-ellipsis-title
vusion-slot-name="text">
<slot>{{ text }}</slot>
</div>
</template>
<script>
import { MChild } from '../m-parent.vue';
import { ellipsisTitle } from '../../directives';
export default {
name: 'm-multiplex-item',
parentName: 'm-multiplex',
groupName: 'm-multiplex-group',
directives: { ellipsisTitle },
mixins: [MChild],
props: {
text: String,
value: null,
selected: { type: Boolean, default: false },
disabled: { type: Boolean, default: false },
item: Object,
},
data() {
return {
currentSelected: this.selected, // @inherit: parentVM: undefined,
};
},
watch: {
selected(selected) {
this.currentSelected = selected;
this.parentVM && this.parentVM.watchSelectedChange(this);
},
},
methods: {
select(e) {
// readme:点击事件可能在组件destoryed后在调用,多发于导航相关,使用isCreated来判断而不是使用parentVM来判断是因为防止有人单独mixin当前组件。
if (!this.isCreated) {
return;
}
if (this.disabled || this.parentVM.readonly || this.parentVM.disabled)
return;
this.$emit('click', e, this);
this.parentVM.click(this);
let cancel = false;
this.$emit('before-select', {
value: this.value,
item: this.item,
itemVM: this,
preventDefault: () => (cancel = true),
}, this);
if (cancel)
return;
this.parentVM.select(this);
},
},
};
</script>
<style module>
.root {
/* @Private */
display: inline-block;
cursor: var(--cursor-pointer);
/* @Public */
padding: 4px 12px;
}
.root:hover {
background: none;
}
.root[readonly] {
cursor: default;
background: none;
}
.root[selected] {
background: var(--brand-primary);
color: var(--color-white);
}
.root[disabled] {
/* @Private */
cursor: var(--cursor-not-allowed);
background: var(--background-color-base);
color: var(--brand-disabled);
}
.root[selected][disabled] {
background: var(--brand-disabled-light);
}
</style>
|