filters.js 978 B

123456789101112131415161718192021222324252627282930
  1. /**
  2. * Persist changelist filters state (collapsed/expanded).
  3. */
  4. 'use strict';
  5. {
  6. // Init filters.
  7. let filters = JSON.parse(sessionStorage.getItem('django.admin.filtersState'));
  8. if (!filters) {
  9. filters = {};
  10. }
  11. Object.entries(filters).forEach(([key, value]) => {
  12. const detailElement = document.querySelector(`[data-filter-title='${CSS.escape(key)}']`);
  13. // Check if the filter is present, it could be from other view.
  14. if (detailElement) {
  15. value ? detailElement.setAttribute('open', '') : detailElement.removeAttribute('open');
  16. }
  17. });
  18. // Save filter state when clicks.
  19. const details = document.querySelectorAll('details');
  20. details.forEach(detail => {
  21. detail.addEventListener('toggle', event => {
  22. filters[`${event.target.dataset.filterTitle}`] = detail.open;
  23. sessionStorage.setItem('django.admin.filtersState', JSON.stringify(filters));
  24. });
  25. });
  26. }