mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
75 lines
1.9 KiB
Vue
75 lines
1.9 KiB
Vue
<template>
|
|
<teleport to="#location">
|
|
<div class="mb-3 row">
|
|
<label class="col-form-label col-sm-4">
|
|
{{ $t('activity.location') }}
|
|
</label>
|
|
<div class="col-sm-8">
|
|
|
|
<VueMultiselect
|
|
name="selectLocation"
|
|
id="selectLocation"
|
|
label="name"
|
|
track-by="id"
|
|
open-direction="top"
|
|
:multiple="false"
|
|
:searchable="true"
|
|
:placeholder="$t('activity.choose_location')"
|
|
:custom-label="customLabel"
|
|
:options="locations"
|
|
v-model="location">
|
|
</VueMultiselect>
|
|
|
|
<new-location v-bind:locations="locations"></new-location>
|
|
</div>
|
|
</div>
|
|
</teleport>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapState } from "vuex";
|
|
import VueMultiselect from 'vue-multiselect';
|
|
import NewLocation from './Location/NewLocation.vue';
|
|
import { getLocations } from '../api.js';
|
|
|
|
export default {
|
|
name: "Location",
|
|
components: {
|
|
NewLocation,
|
|
VueMultiselect
|
|
},
|
|
data() {
|
|
return {
|
|
locations: []
|
|
}
|
|
},
|
|
computed: {
|
|
...mapState(['activity']),
|
|
location: {
|
|
get() {
|
|
return this.activity.location;
|
|
},
|
|
set(value) {
|
|
this.$store.dispatch('updateLocation', value);
|
|
}
|
|
}
|
|
},
|
|
mounted() {
|
|
this.getLocationsList();
|
|
},
|
|
methods: {
|
|
getLocationsList() {
|
|
getLocations().then(response => new Promise(resolve => {
|
|
console.log('getLocations', response);
|
|
this.locations = response.results;
|
|
resolve();
|
|
}))
|
|
},
|
|
customLabel(value) {
|
|
return `${value.locationType.title.fr} ${value.name}`;
|
|
}
|
|
}
|
|
}
|
|
|
|
</script>
|