fixed filters in search

This commit is contained in:
2021-10-27 18:01:57 +02:00
parent 20fea9dce1
commit 9f1e3c4f76
6 changed files with 79 additions and 19 deletions

View File

@ -30,19 +30,24 @@ export default {
},
methods: {
submit() {
console.log("search submited", this.typed, this.autocomplete)
console.log("search submited", this.typed, this.autocomplete, this.filters, this.slimFilters)
// unfocus the text input to hide the keyboard on mobile device
this.$input.blur()
// New search is triggered by Base.vue with router (which will also fill the store)
// cleaning slimfilters
let filters = []
this.slimFilters.forEach((filter, index) => {
console.log('foreach filters', filter)
console.log('onsubmit foreach filters', filter)
if(filter){
filters.push(filter)
}
})
console.log('Cleaning filters',this.slimFilters, filters)
// // this is just in case we landed in the page with filters in url params,
// // this.slimFilters is not filled but store/search filters is
// if(!filters.length){
// filters = this.filters
// }
console.log('Cleaning filters',this.slimFilters, this.filters, filters)
// push router
this.$router.push({name:'base', query:{
keys:this.typed,
@ -69,7 +74,7 @@ export default {
},
onSelectFiltersChange(index, info){
console.log('onSelectFiltersChange', index, info, this.filters)
console.log('onSelectFiltersChange', index, info, this.slimFilters, this.filters)
this.slimFilters[index] = info.value
},
onClickFilters(e){
@ -131,6 +136,7 @@ export default {
// customize the select filters
// http://slimselectjs.com/options
const selects = this.$el.querySelectorAll('select')
let slim;
selects.forEach((selectElement, index) => {
// get the first option to make the placeholder then empty it
const placeholder_option = selectElement.querySelector('option:first-child')
@ -139,7 +145,7 @@ export default {
placeholder_option.removeAttribute("value")
placeholder_option.setAttribute("data-placeholder", true)
placeholder_option.innerHTML = ''
new SlimSelect({
slim = new SlimSelect({
select: selectElement,
placeholder: placeholder,
// allowDeselect: true
@ -150,7 +156,10 @@ export default {
this.onSelectFiltersChange(index, info)
}
})
console.log('slimselect selected', slim.selected(), index)
this.slimFilters[index] = slim.selected()
})
console.log('slimSelect after init', this.slimFilters)
},
render(h) {
// console.log('searchForm render')

View File

@ -69,7 +69,7 @@ export default {
},
setFilters (state, filters) {
console.log('store search setFilters', filters)
state.filters = filters
state.filters = typeof filters === 'string' ? filters.split(',') : filters
},
setInfos (state, infos) {
state.infos = infos
@ -89,6 +89,9 @@ export default {
resetOffset (state) {
state.offset = 0
},
resetInfos (state) {
state.infos = false
},
incrementOffset (state) {
state.offset += state.limit
},
@ -106,6 +109,7 @@ export default {
commit('resetCount')
commit('resetNoresults')
commit('resetOffset')
commit('resetInfos')
if (state.keys || state.term) {
this.commit('Common/setPagetitle', state.keys)
} else {
@ -128,7 +132,7 @@ export default {
}
if (state.filters) {
console.log('getResults filters', state.filters)
params.filters = state.filters
params.filters = state.filters.join(',')
}
// console.log('Search getResults params', params)
const q = qs.stringify(params)