<template>
  <FormElement :error="hasErrors" class="control">
    <label class="control__label">
      {{ $t('pageForm.nameTitle') }}
    </label>
    <div class="control__description">
      {{ $t('pageForm.nameSubtitle') }}
    </div>
    <div class="control__elements">
      <input
        ref="input"
        :value="value"
        class="input"
        :class="{ 'input--error': hasErrors }"
        type="text"
        :disabled="disabled"
        @input="$emit('input', $event.target.value)"
        @blur="$emit('blur')"
        @focus.once="isCreation && $event.target.select()"
      />
      <div
        v-if="validationState.$dirty && !validationState.required"
        class="error"
      >
        {{ $t('error.requiredField') }}
      </div>
      <div
        v-if="validationState.$dirty && !validationState.maxLength"
        class="error"
      >
        {{ $t('error.maxLength', { max: 255 }) }}
      </div>
      <div
        v-if="validationState.$dirty && !validationState.isUnique"
        class="error"
      >
        {{ $t('pageErrors.errorNameNotUnique') }}
      </div>
    </div>
  </FormElement>
</template>

<script>
export default {
  name: 'PageSettingsNameFormElement',
  props: {
    value: {
      type: String,
      required: false,
      default: '',
    },
    hasErrors: {
      type: Boolean,
      required: false,
      default: false,
    },
    disabled: {
      type: Boolean,
      required: false,
      default: false,
    },
    validationState: {
      type: Object,
      required: false,
      default: () => {},
    },
    isCreation: {
      type: Boolean,
      required: false,
      default: false,
    },
  },
}
</script>