<template>
  <a
    ref="createViewLink"
    v-tooltip="deactivated ? deactivatedText : null"
    class="select__footer-create-link"
    @click="select"
  >
    <i class="select__footer-create-icon" :class="viewType.iconClass"></i>
    {{ viewType.getName() }}
    <div v-if="deactivated" class="deactivated-label">
      <i class="iconoir-lock"></i>
    </div>
    <CreateViewModal
      ref="createModal"
      :table="table"
      :database="database"
      :view-type="viewType"
      @created="$emit('created', $event)"
    ></CreateViewModal>
    <component
      :is="deactivatedClickModal"
      v-if="deactivatedClickModal !== null"
      ref="deactivatedClickModal"
      :workspace="database.workspace"
      :name="viewType.getName()"
    ></component>
    <i class="select__footer-create-link-icon iconoir-plus"></i>
  </a>
</template>

<script>
import CreateViewModal from '@baserow/modules/database/components/view/CreateViewModal'

export default {
  name: 'ViewsContext',
  components: {
    CreateViewModal,
  },
  props: {
    database: {
      type: Object,
      required: true,
    },
    table: {
      type: Object,
      required: true,
    },
    viewType: {
      type: Object,
      required: true,
    },
  },
  computed: {
    deactivatedText() {
      return this.viewType.getDeactivatedText()
    },
    deactivated() {
      return this.viewType.isDeactivated(this.database.workspace.id)
    },
    deactivatedClickModal() {
      return this.viewType.getDeactivatedClickModal()
    },
  },
  methods: {
    select() {
      if (!this.deactivated) {
        this.$refs.createModal.show(this.$refs.createViewLink)
      } else if (this.deactivated && this.deactivatedClickModal) {
        this.$refs.deactivatedClickModal.show()
      }
    },
  },
}
</script>