<template> <div class="switch" :class="classNames" @click="toggle(value)"> <label v-if="hasSlot" class="switch__label"> <slot></slot></label> </div> </template> <script> export default { name: 'SwitchInput', props: { value: { type: [Boolean, Number], required: false, default: false, }, large: { type: Boolean, required: false, default: false, }, disabled: { type: Boolean, required: false, default: false, }, }, computed: { classNames() { return { 'switch--has-content': Object.prototype.hasOwnProperty.call( this.$slots, 'default' ), 'switch--large': this.large, 'switch--disabled': this.disabled, active: this.value === true, unknown: this.value !== true && this.value !== false, } }, hasSlot() { return !!this.$slots.default }, }, methods: { toggle(value) { if (this.disabled) { return } this.$emit('input', !value) }, }, } </script>