Newer
Older
Sébastien DA ROCHA
committed
<template>
<div v-if="field && field.field_type === 'char'">
v-if="displayLabels"
>
{{ field.label }}
</label>
Sébastien DA ROCHA
committed
<input
:id="field.name"
:value="field.value"
Sébastien DA ROCHA
committed
@blur="updateStore_extra_form"
<ul
v-if="field.is_mandatory && error"
:id="`errorlist-extra-form-${field.name}`"
class="errorlist"
>
<li>
{{ error }}
</li>
</ul>
Sébastien DA ROCHA
committed
</div>
<div v-else-if="field && field.field_type === 'list'">
v-if="displayLabels"
>
{{ field.label }}
</label>
Sébastien DA ROCHA
committed
<Dropdown
:options="field.options"
:selected="selected_extra_form_list"
:selection.sync="selected_extra_form_list"
Sébastien DA ROCHA
committed
/>
<ul
v-if="field.is_mandatory && error"
:id="`errorlist-extra-form-${field.name}`"
class="errorlist"
>
<li>
{{ error }}
</li>
</ul>
Sébastien DA ROCHA
committed
</div>
<div v-else-if="field && field.field_type === 'integer'">
v-if="displayLabels"
>
{{ field.label }}
</label>
Sébastien DA ROCHA
committed
<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"
:value="field.value"
Sébastien DA ROCHA
committed
@change="updateStore_extra_form"
Sébastien DA ROCHA
committed
</div>
<ul
v-if="field.is_mandatory && error"
:id="`errorlist-extra-form-${field.name}`"
class="errorlist"
>
<li>
{{ error }}
</li>
</ul>
Sébastien DA ROCHA
committed
</div>
<div v-else-if="field && field.field_type === 'boolean'">
Sébastien DA ROCHA
committed
<div class="ui checkbox">
<input
Sébastien DA ROCHA
committed
type="checkbox"
:checked="field.value"
:name="field.name"
@change="updateStore_extra_form"
<label :for="field.name">
{{ displayLabels ? field.label : '' }}
Sébastien DA ROCHA
committed
</div>
</div>
<div v-else-if="field && field.field_type === 'date'">
v-if="displayLabels"
>
{{ field.label }}
</label>
Sébastien DA ROCHA
committed
<input
:id="field.name"
:value="field.value"
Sébastien DA ROCHA
committed
@blur="updateStore_extra_form"
<ul
v-if="field.is_mandatory && error"
:id="`errorlist-extra-form-${field.name}`"
class="errorlist"
>
<li>
{{ error }}
</li>
</ul>
Sébastien DA ROCHA
committed
</div>
<div v-else-if="field && field.field_type === 'decimal'">
v-if="displayLabels"
:for="field.name"
>
{{ field.label }}
</label>
Sébastien DA ROCHA
committed
<div class="ui input">
<input
:value="field.value"
Sébastien DA ROCHA
committed
type="number"
step=".01"
:name="field.name"
Sébastien DA ROCHA
committed
@change="updateStore_extra_form"
Sébastien DA ROCHA
committed
</div>
<ul
v-if="field.is_mandatory && error"
:id="`errorlist-extra-form-${field.name}`"
class="errorlist"
>
<li>
{{ error }}
</li>
</ul>
Sébastien DA ROCHA
committed
</div>
<div v-else-if="field && field.field_type === 'text'">
v-if="displayLabels"
:for="field.name"
>
{{ field.label }}
</label>
Sébastien DA ROCHA
committed
<textarea
:value="field.value"
Sébastien DA ROCHA
committed
:name="field.name"
Sébastien DA ROCHA
committed
rows="3"
@blur="updateStore_extra_form"
<ul
v-if="field.is_mandatory && error"
:id="`errorlist-extra-form-${field.name}`"
class="errorlist"
>
<li>
{{ error }}
</li>
</ul>
Sébastien DA ROCHA
committed
</div>
</template>
<script>
import Dropdown from '@/components/Dropdown.vue';
Sébastien DA ROCHA
committed
export default {
Sébastien DA ROCHA
committed
components: {
Dropdown,
},
props: {
field: {
type: Object,
default: null,
}
},
Sébastien DA ROCHA
committed
data() {
return {
error: null
};
},
Sébastien DA ROCHA
committed
computed: {
selected_extra_form_list: {
get() {
Sébastien DA ROCHA
committed
},
set(newValue) {
//* set the value selected in the dropdown
newExtraForm['value'] = newValue;
this.$store.commit('feature/UPDATE_EXTRA_FORM', newExtraForm);
Sébastien DA ROCHA
committed
},
},
displayLabels() {
return this.$route.name === 'editer-signalement' || this.$route.name === 'ajouter-signalement' || this.$route.name === 'editer-attribut-signalement';
Sébastien DA ROCHA
committed
},
watch: {
'field.value': function(newValue) {
if (newValue) {
this.error = null;
}
}
},
Sébastien DA ROCHA
committed
methods: {
updateStore_extra_form(evt) {
if (this.field.field_type === 'boolean') {
newExtraForm['value'] = evt.target.checked; //* if checkbox use "checked"
this.$store.commit('feature/UPDATE_EXTRA_FORM', newExtraForm);
Sébastien DA ROCHA
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;
}
Sébastien DA ROCHA
committed
},
};