Something went wrong on our end
-
Timothee P authoredTimothee P authored
FeatureExtraForm.vue 3.61 KiB
<template>
<div
v-if="field && field.field_type === 'char'"
>
<label
v-if="$route.name === 'editer-signalement'"
:for="field.name"
>
{{ field.label }}
</label>
<input
:id="field.name"
:value="field.value"
type="text"
:name="field.name"
@blur="updateStore_extra_form"
>
</div>
<div
v-else-if="field && field.field_type === 'list'"
>
<label
v-if="$route.name === 'editer-signalement'"
:for="field.name"
>
{{ field.label }}
</label>
<Dropdown
:options="field.options"
:selected="selected_extra_form_list"
:selection.sync="selected_extra_form_list"
/>
</div>
<div
v-else-if="field && field.field_type === 'integer'"
>
<label
v-if="$route.name === 'editer-signalement'"
:for="field.name"
>
{{ field.label }}
</label>
<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"
type="number"
:name="field.name"
@change="updateStore_extra_form"
>
</div>
</div>
<div
v-else-if="field && field.field_type === 'boolean'"
>
<div class="ui checkbox">
<input
:id="field.name"
type="checkbox"
:checked="field.value"
:name="field.name"
@change="updateStore_extra_form"
>
<label :for="field.name">
{{ $route.name === 'editer-signalement' ? field.label : '' }}
</label>
</div>
</div>
<div
v-else-if="field && field.field_type === 'date'"
>
<label
v-if="$route.name === 'editer-signalement'"
:for="field.name"
>
{{ field.label }}
</label>
<input
:id="field.name"
:value="field.value"
type="date"
:name="field.name"
@blur="updateStore_extra_form"
>
</div>
<div
v-else-if="field && field.field_type === 'decimal'"
>
<label
v-if="$route.name === 'editer-signalement'"
:for="field.name"
>
{{ field.label }}
</label>
<div class="ui input">
<input
:id="field.name"
:value="field.value"
type="number"
step=".01"
:name="field.name"
@change="updateStore_extra_form"
>
</div>
</div>
<div
v-else-if="field && field.field_type === 'text'"
>
<label
v-if="$route.name === 'editer-signalement'"
:for="field.name"
>
{{ field.label }}
</label>
<textarea
:value="field.value"
:name="field.name"
rows="3"
@blur="updateStore_extra_form"
/>
</div>
</template>
<script>
import Dropdown from '@/components/Dropdown.vue';
export default {
name: 'FeatureExtraForm',
components: {
Dropdown,
},
props: {
field: {
type: Object,
default: null,
}
},
computed: {
selected_extra_form_list: {
get() {
return this.field.value || '';
},
set(newValue) {
//* set the value selected in the dropdown
const newExtraForm = this.field;
newExtraForm['value'] = newValue;
this.$store.commit('feature/UPDATE_EXTRA_FORM', newExtraForm);
},
},
},
methods: {
updateStore_extra_form(evt) {
const newExtraForm = this.field;
if (this.field.field_type === 'boolean') {
newExtraForm['value'] = evt.target.checked; //* if checkbox use "checked"
} else {
newExtraForm['value'] = evt.target.value;
}
this.$store.commit('feature/UPDATE_EXTRA_FORM', newExtraForm);
},
},
};
</script>