bind options and key inside AddPersons component (wip)

This commit is contained in:
Mathieu Jaumotte 2021-05-08 12:57:23 +02:00
parent b24eb93c57
commit ac67f56b09
5 changed files with 36 additions and 9 deletions

View File

@ -25,6 +25,8 @@
<add-persons <add-persons
buttonTitle="persons_associated.add_persons" buttonTitle="persons_associated.add_persons"
v-bind:key="addNewPersons.key"
v-bind:options="addNewPersons.options"
@addNewPersons="addNewPersons"> @addNewPersons="addNewPersons">
</add-persons> </add-persons>
@ -42,6 +44,18 @@ export default {
PersonItem, PersonItem,
AddPersons AddPersons
}, },
data() {
return {
addNewPersons: {
key: 'persons_associated',
options: {
type: ['person'],
priority: null,
uniq: false,
}
}
}
},
computed: mapState({ computed: mapState({
participations: state => state.accompanyingCourse.participations, participations: state => state.accompanyingCourse.participations,
counter: state => state.accompanyingCourse.participations.length counter: state => state.accompanyingCourse.participations.length

View File

@ -40,6 +40,8 @@
<add-persons <add-persons
buttonTitle="requestor.add_requestor" buttonTitle="requestor.add_requestor"
v-bind:key="addNewPersons.key"
v-bind:options="addNewPersons.options"
@addNewPersons="addNewPersons"> @addNewPersons="addNewPersons">
</add-persons> </add-persons>
@ -56,6 +58,14 @@ export default {
}, },
data() { data() {
return { return {
addNewPersons: {
key: 'requestor',
options: {
type: ['person', 'thirdparty'],
priority: null,
uniq: true,
}
}
} }
}, },
computed: { computed: {

View File

@ -1,5 +1,4 @@
import { searchPersons } from 'ChillPersonAssets/vuejs/_api/AddPersons' import { searchPersons } from 'ChillPersonAssets/vuejs/_api/AddPersons';
import { postParticipation } from '../../api';
// initial state // initial state
@ -46,10 +45,10 @@ const mutations = {
// actions // actions
const actions = { const actions = {
setQuery({ commit }, payload) { setQuery({ commit }, payload) {
//console.log('## action: setquery: payload', payload); console.log('## action: setquery: payload', payload);
commit('setQuery', payload.query); commit('setQuery', payload.query);
if (payload.query.length >= 3) { if (payload.query.length >= 3) {
searchPersons(payload.query) searchPersons(payload)
.then(suggested => new Promise((resolve, reject) => { .then(suggested => new Promise((resolve, reject) => {
commit('loadSuggestions', suggested.results); commit('loadSuggestions', suggested.results);
resolve(); resolve();

View File

@ -8,7 +8,8 @@ const
* *
* @query string - the query to search for * @query string - the query to search for
*/ */
let searchPersons = (query) => { let searchPersons = ({ query, options }) => {
console.log('options 2', options);
let url = `/${locale}/search.${format}?name=person_regular&q=${query}`; let url = `/${locale}/search.${format}?name=person_regular&q=${query}`;
return fetch(url) return fetch(url)
.then(response => { .then(response => {

View File

@ -72,7 +72,7 @@ import PersonSuggestion from 'ChillPersonAssets/vuejs/_components/PersonSuggesti
export default { export default {
name: 'AddPersons', name: 'AddPersons',
props: ['buttonTitle'], props: ['buttonTitle', 'options'],
components: { components: {
Modal, Modal,
PersonSuggestion, PersonSuggestion,
@ -83,7 +83,6 @@ export default {
showModal: false, showModal: false,
modalDialogClass: "modal-dialog-scrollable modal-xl" modalDialogClass: "modal-dialog-scrollable modal-xl"
}, },
//button: this.buttonTitle
} }
}, },
computed: { computed: {
@ -91,8 +90,8 @@ export default {
addPersons: state => state.addPersons addPersons: state => state.addPersons
}), }),
query: { query: {
set(query) { set(query, options) {
this.$store.dispatch('setQuery', { query }); this.$store.dispatch('setQuery', { query, options });
}, },
get() { get() {
return this.addPersons.query; return this.addPersons.query;
@ -112,10 +111,14 @@ export default {
}, },
selectedAndSuggested() { selectedAndSuggested() {
return this.$store.getters.selectedAndSuggested; return this.$store.getters.selectedAndSuggested;
},
options() {
return this.options;
} }
}, },
methods: { methods: {
openModal() { openModal() {
console.log('options 1', this.options);
this.modal.showModal = true; this.modal.showModal = true;
this.$nextTick(function() { this.$nextTick(function() {
this.$refs.search.focus(); this.$refs.search.focus();