forAny('.wp-block-concerti-event-search-filter :is([data-ajax-model], select)', element=> {
let settings={
highlight: true,
persist: false,
loadThrottle: null, plugins: {
'dropdown_input': {}, 'clear_button': {
'title': 'Suche zurücksetzen',
}},
};
if(!element.classList.contains('simple')){
settings.plugins.optgroup_columns={};}
if(element.dataset.disableSearch){
settings.controlInput=null;
}
if(element.dataset.ajaxModel){
settings.load=function (query, callback){
let self=this;
if(self.loading > 1){
callback();
return;
}
let model=new wp.api.collections[element.dataset.ajaxModel]();
model.fetch({
data: {
search: query, per_page: 50, relevanssi: true, orderby: 'relevance',
}}).done(function (results){
let items=[];
results.forEach(element=> {
items.push({
value: element.id, text: element.title.rendered
});
});
callback(items);
})
};}else{
settings.maxItems=null;
}
element.tomselect=new TomSelect(element, settings);
if(element.closest('.submit-on-change')){
element.tomselect.on('change', _=> {
element.closest('form')?.classList.add('loading');
element.closest('form')?.submit();
})
}});
forAny('#concerti-search-form details:has(.ts-wrapper.has-items, input[type=search]:not([value=""])', details=> {
details.open=true;
})
forAny('#concerti-search-form', form=> {
form.addEventListener('submit', _=> {
form.classList.add('loading');
})
onAny('a.concerti-filter-lozenge', 'click', _=> {
form.classList.add('loading');
}, form)
let startDateField=form.querySelector('[name="cf_from-date"]');
let endDateField=form.querySelector('[name="cf_to-date"]');
if(!endDateField){
return;
}
const DateTime=easepick.DateTime;
const date=new DateTime();
let saturday=new Date();
saturday.setDate(saturday.getDate() + (6 + (7 - saturday.getDay())) % 7);
saturday=new DateTime(saturday);
let customPreset={
'Heute': [date.clone(), date.clone()],
'Morgen': [date.clone().add(1, 'day'), date.clone().add(1, 'day')],
'Dieses Wochenende': [saturday.clone(), saturday.clone().add(1, 'day')],
'Nächste 7 Tage': [date.clone(), date.clone().add(7, 'day')],
'Nächste 14 Tage': [date.clone(), date.clone().add(14, 'day')],
'Nächste 30 Tage': [date.clone(), date.clone().add(30, 'day')],
};
new easepick.create({
element: startDateField,
autoApply: true,
zIndex: 10000000,
calendars: 2,
grid: 2,
css: [location.protocol + '//' + location.host + '/wp-content/themes/concerti-gutenberg/packages/@easepick/bundle/dist/index.css'],
RangePlugin: {
autoApply: true,
tooltip: false,
strict: false,
elementEnd: endDateField,
startDate: startDateField.value,
endDate: endDateField.value
},
PresetPlugin: {
position: 'left', customPreset: customPreset
},
LockPlugin: {
minDate: new Date()
},
plugins: ['RangePlugin', 'PresetPlugin', 'LockPlugin'],
});
});