<template>
  <form @submit.prevent="submit">
    <FormGroup
      :error="fieldHasErrors('ical_url')"
      :helper-text="$t('iCalCalendarDataSync.description')"
      required
      small-label
      class="margin-bottom-2"
    >
      <template #label>{{ $t('iCalCalendarDataSync.name') }}</template>
      <FormInput
        ref="ical_url"
        v-model="v$.values.ical_url.$model"
        size="large"
        :error="fieldHasErrors('ical_url')"
        :disabled="disabled"
        @focus.once="$event.target.select()"
        @blur="v$.values.ical_url.$touch"
      >
      </FormInput>
      <template #error>
        {{ v$.values.ical_url.$errors[0]?.$message }}
      </template>
    </FormGroup>
  </form>
</template>

<script>
import { required, url, helpers } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import form from '@baserow/modules/core/mixins/form'

export default {
  name: 'ICalCalendarDataSync',
  mixins: [form],
  props: {
    update: {
      type: Boolean,
      required: false,
      default: false,
    },
    disabled: {
      type: Boolean,
      required: false,
      default: false,
    },
  },
  setup() {
    return { v$: useVuelidate({ $lazy: true }) }
  },
  data() {
    return {
      allowedValues: ['ical_url'],
      values: {
        ical_url: '',
      },
    }
  },
  validations() {
    return {
      values: {
        ical_url: {
          required: helpers.withMessage(
            this.$t('error.requiredField'),
            required
          ),
          url: helpers.withMessage(this.$t('error.invalidURL'), url),
        },
      },
    }
  },
}
</script>