<template>
  <form @submit.prevent="submit">
    <FormElement class="control">
      <label class="control__label">
        {{ $t('databaseForm.importLabel') }}
      </label>
      <div class="control__elements">
        <ul class="choice-items">
          <li>
            <a
              class="choice-items__link"
              :class="{ active: importType === 'none' }"
              @click="importType = 'none'"
            >
              <i class="choice-items__icon fas fa-clone"></i>
              {{ $t('databaseForm.emptyLabel') }}
            </a>
          </li>
          <li>
            <a
              class="choice-items__link"
              :class="{ active: importType === 'airtable' }"
              @click="importType = 'airtable'"
            >
              <i class="choice-items__icon fas fa-clone"></i>
              {{ $t('databaseForm.airtableLabel') }}
            </a>
          </li>
        </ul>
      </div>
    </FormElement>
    <template v-if="importType !== 'airtable'">
      <FormElement :error="fieldHasErrors('name')" class="control">
        <label class="control__label">
          <i class="fas fa-font"></i>
          {{ $t('applicationForm.nameLabel') }}
        </label>
        <div class="control__elements">
          <input
            ref="name"
            v-model="values.name"
            :class="{ 'input--error': fieldHasErrors('name') }"
            type="text"
            class="input input--large"
            @focus.once="$event.target.select()"
            @blur="$v.values.name.$touch()"
          />
          <div v-if="fieldHasErrors('name')" class="error">
            {{ $t('error.requiredField') }}
          </div>
        </div>
        <slot></slot>
      </FormElement>
    </template>
    <ImportFromAirtable
      v-else
      @hidden="$emit('hidden', $event)"
    ></ImportFromAirtable>
  </form>
</template>

<script>
import form from '@baserow/modules/core/mixins/form'
import { required } from 'vuelidate/lib/validators'
import ImportFromAirtable from '@baserow/modules/database/components/airtable/ImportFromAirtable'

export default {
  name: 'DatabaseForm',
  components: { ImportFromAirtable },
  mixins: [form],
  props: {
    defaultName: {
      type: String,
      required: false,
      default: '',
    },
  },
  data() {
    return {
      values: {
        name: this.defaultName,
      },
      importType: 'none',
    }
  },
  mounted() {
    this.$refs.name.focus()
  },
  validations: {
    values: {
      name: { required },
    },
  },
}
</script>