<template>
  <ButtonIcon
    type="secondary"
    v-bind="restProps"
    :loading="loading"
    :disabled="disabled"
    :icon="icon"
    :title="title"
    :active="value"
    @click.prevent="select()"
  >
    <slot></slot>
  </ButtonIcon>
</template>

<script>
export default {
  name: 'SwitchButton',
  model: {
    prop: 'modelValue',
    event: 'input',
  },
  props: {
    value: {
      type: Boolean,
      required: true,
      default: false,
    },
    loading: {
      type: Boolean,
      required: false,
      default: false,
    },
    disabled: {
      type: Boolean,
      required: false,
      default: false,
    },
    icon: {
      type: String,
      required: false,
      default: '',
    },
    title: {
      type: String,
      required: false,
      default: '',
    },
  },
  computed: {
    restProps() {
      const { value, modelValue, ...rest } = this.$attrs
      return rest
    },
  },
  methods: {
    select() {
      if (this.disabled) {
        return
      }
      this.$emit('input', !this.value)
    },
  },
}
</script>