31 lines
978 B
JavaScript
31 lines
978 B
JavaScript
/**
|
|
* 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));
|
|
});
|
|
});
|
|
}
|