File size: 648 Bytes
b5ba7a5 |
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 |
<script lang="ts">
export default {
props: {
modelValue: {
type: Boolean,
required: true,
},
},
computed: {
state: {
get() {
return this.modelValue;
},
set(value: boolean) {
this.$emit('update:modelValue', value);
},
},
},
methods: {
toggleState() {
this.state = !this.state;
},
},
};
</script>
<template>
<div @click.stop="toggleState" class="icon-switch">
<slot name="enable-state" v-if="state"></slot>
<slot name="disable-state" v-else></slot>
</div>
</template>
<style scoped>
.icon-switch {
cursor: pointer;
}
</style> |