Skip to content
Snippets Groups Projects
FeatureExtraForm.vue 5.67 KiB
Newer Older
  <div v-if="field && field.field_type === 'char'">
Florent Lavelle's avatar
Florent Lavelle committed
      :class="{ required: field.is_mandatory }"
    >
      {{ field.label }}
    </label>
      type="text"
      :name="field.name"
Florent Lavelle's avatar
Florent Lavelle committed
      :required="field.is_mandatory"
Florent Lavelle's avatar
Florent Lavelle committed
    <ul
      v-if="field.is_mandatory && error"
      :id="`errorlist-extra-form-${field.name}`"
      class="errorlist"
    >
      <li>
        {{ error }}
      </li>
    </ul>
  <div v-else-if="field && field.field_type === 'list'">
Florent Lavelle's avatar
Florent Lavelle committed
      :class="{ required: field.is_mandatory }"
    <Dropdown
      :options="field.options"
      :selected="selected_extra_form_list"
      :selection.sync="selected_extra_form_list"
Florent Lavelle's avatar
Florent Lavelle committed
      :required="field.is_mandatory"
Florent Lavelle's avatar
Florent Lavelle committed
    <ul
      v-if="field.is_mandatory && error"
      :id="`errorlist-extra-form-${field.name}`"
      class="errorlist"
    >
      <li>
        {{ error }}
      </li>
    </ul>
  <div v-else-if="field && field.field_type === 'integer'">
Florent Lavelle's avatar
Florent Lavelle committed
      :class="{ required: field.is_mandatory }"
    <div class="ui input">
      <!-- //* si click sur fléche dans champ input, pas de focus, donc pas de blur, donc utilisation de @change -->
      <input
        :id="field.name"
        type="number"
        :name="field.name"
Florent Lavelle's avatar
Florent Lavelle committed
        :required="field.is_mandatory"
Florent Lavelle's avatar
Florent Lavelle committed
    <ul
      v-if="field.is_mandatory && error"
      :id="`errorlist-extra-form-${field.name}`"
      class="errorlist"
    >
      <li>
        {{ error }}
      </li>
    </ul>
  <div v-else-if="field && field.field_type === 'boolean'">
        :id="field.name"
        type="checkbox"
        :checked="field.value"
        :name="field.name"
        @change="updateStore_extra_form"
        {{ displayLabels ? field.label : '' }}
  <div v-else-if="field && field.field_type === 'date'">
Florent Lavelle's avatar
Florent Lavelle committed
      :class="{ required: field.is_mandatory }"
      type="date"
      :name="field.name"
Florent Lavelle's avatar
Florent Lavelle committed
      :required="field.is_mandatory"
Florent Lavelle's avatar
Florent Lavelle committed
    <ul
      v-if="field.is_mandatory && error"
      :id="`errorlist-extra-form-${field.name}`"
      class="errorlist"
    >
      <li>
        {{ error }}
      </li>
    </ul>
  <div v-else-if="field && field.field_type === 'decimal'">
Florent Lavelle's avatar
Florent Lavelle committed
      :class="{ required: field.is_mandatory }"
        :id="field.name"
Florent Lavelle's avatar
Florent Lavelle committed
        :required="field.is_mandatory"
Florent Lavelle's avatar
Florent Lavelle committed
    <ul
      v-if="field.is_mandatory && error"
      :id="`errorlist-extra-form-${field.name}`"
      class="errorlist"
    >
      <li>
        {{ error }}
      </li>
    </ul>
  <div v-else-if="field && field.field_type === 'text'">
Florent Lavelle's avatar
Florent Lavelle committed
      :class="{ required: field.is_mandatory }"
Florent Lavelle's avatar
Florent Lavelle committed
      :required="field.is_mandatory"
Florent Lavelle's avatar
Florent Lavelle committed
    <ul
      v-if="field.is_mandatory && error"
      :id="`errorlist-extra-form-${field.name}`"
      class="errorlist"
    >
      <li>
        {{ error }}
      </li>
    </ul>
import Dropdown from '@/components/Dropdown.vue';
  name: 'FeatureExtraForm',
Timothee P's avatar
Timothee P committed
  props: {
    field: {
      type: Object,
      default: null,
    }
  },
Florent Lavelle's avatar
Florent Lavelle committed
  data() {
    return {
      error: null
    };
  },

        return this.field.value || '';
      },
      set(newValue) {
        //* set the value selected in the dropdown
Florent Lavelle's avatar
Florent Lavelle committed
        const newExtraForm = this.field;
        newExtraForm['value'] = newValue;
        this.$store.commit('feature/UPDATE_EXTRA_FORM', newExtraForm);
      return this.$route.name === 'editer-signalement' || this.$route.name === 'ajouter-signalement' || this.$route.name === 'editer-attribut-signalement';
Florent Lavelle's avatar
Florent Lavelle committed
  watch: {
    'field.value': function(newValue) {
      if (newValue) {
        this.error = null;
      }
    }
  },

Florent Lavelle's avatar
Florent Lavelle committed
      const newExtraForm = this.field;
      if (this.field.field_type === 'boolean') {
        newExtraForm['value'] = evt.target.checked; //* if checkbox use "checked"
        newExtraForm['value'] = evt.target.value;
      this.$store.commit('feature/UPDATE_EXTRA_FORM', newExtraForm);
Florent Lavelle's avatar
Florent Lavelle committed

    checkForm() {
      let isValid = true;
      if (this.field.is_mandatory && !this.field.value) {
        isValid = false;
        this.error = 'Ce champ est obligatoire';
      } else {
        this.error = null;
      }
      return isValid;
    }
Florent Lavelle's avatar
Florent Lavelle committed
</script>
Florent Lavelle's avatar
Florent Lavelle committed

<style lang="less" scoped>

label.required:after {
	content: ' *';
	color: rgb(209, 0, 0);
}

</style>