/** * Persist changelist filters state (collapsed/expanded). */ 'use strict'; { // Init filters. let filters = JSON.parse(sessionStorage.getItem('django.admin.filtersState')); if (!filters) { filters = {}; } Object.entries(filters).forEach(([key, value]) => { const detailElement = document.querySelector(`[data-filter-title='${CSS.escape(key)}']`); // Check if the filter is present, it could be from other view. if (detailElement) { value ? detailElement.setAttribute('open', '') : detailElement.removeAttribute('open'); } }); // Save filter state when clicks. const details = document.querySelectorAll('details'); details.forEach(detail => { detail.addEventListener('toggle', event => { filters[`${event.target.dataset.filterTitle}`] = detail.open; sessionStorage.setItem('django.admin.filtersState', JSON.stringify(filters)); }); }); }