wiki-grav/plugins/flex-objects/app/filters/index.js
2022-04-24 14:32:58 +02:00

47 lines
1.4 KiB
JavaScript

import '../utils/indeterminate';
import './panel';
import { ReLoad } from '../columns';
import throttle from 'lodash/throttle';
document.addEventListener('click', (event) => {
const filterType = event.target && event.target.dataset.filters;
if (filterType === 'reset') {
const filters = event.target.closest('#pages-filters');
(filters.querySelectorAll('input[type="text"]') || []).forEach((input) => {
input.value = '';
});
(filters.querySelectorAll('input[type="checkbox"]') || []).forEach((input) => {
const wrapper = input.closest('.checkboxes');
if (wrapper) {
wrapper.classList.remove('status-checked', 'status-unchecked', 'status-indeterminate');
wrapper.dataset._checkStatus = '0';
wrapper.classList.add('status-unchecked');
}
input.indeterminate = false;
input.checked = false;
input.value = '';
});
return false;
}
if (filterType === 'apply') {
ReLoad();
return false;
}
});
const throttledReload = throttle(() => {
ReLoad();
}, 350, { leading: false });
document.addEventListener('input', (event) => {
if (event.target.getAttribute && event.target.getAttribute('name') === 'filters[search]') {
throttledReload.cancel();
throttledReload();
}
});