index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import '../utils/indeterminate';
  2. import './panel';
  3. import { ReLoad } from '../columns';
  4. import throttle from 'lodash/throttle';
  5. document.addEventListener('click', (event) => {
  6. const filterType = event.target && event.target.dataset.filters;
  7. if (filterType === 'reset') {
  8. const filters = event.target.closest('#pages-filters');
  9. (filters.querySelectorAll('input[type="text"]') || []).forEach((input) => {
  10. input.value = '';
  11. });
  12. (filters.querySelectorAll('input[type="checkbox"]') || []).forEach((input) => {
  13. const wrapper = input.closest('.checkboxes');
  14. if (wrapper) {
  15. wrapper.classList.remove('status-checked', 'status-unchecked', 'status-indeterminate');
  16. wrapper.dataset._checkStatus = '0';
  17. wrapper.classList.add('status-unchecked');
  18. }
  19. input.indeterminate = false;
  20. input.checked = false;
  21. input.value = '';
  22. });
  23. return false;
  24. }
  25. if (filterType === 'apply') {
  26. ReLoad();
  27. return false;
  28. }
  29. });
  30. const throttledReload = throttle(() => {
  31. ReLoad();
  32. }, 350, { leading: false });
  33. document.addEventListener('input', (event) => {
  34. if (event.target.getAttribute && event.target.getAttribute('name') === 'filters[search]') {
  35. throttledReload.cancel();
  36. throttledReload();
  37. }
  38. });