Spaces:
Sleeping
Sleeping
; | |
{ | |
const toggleNavSidebar = document.getElementById('toggle-nav-sidebar'); | |
if (toggleNavSidebar !== null) { | |
const navLinks = document.querySelectorAll('#nav-sidebar a'); | |
function disableNavLinkTabbing() { | |
for (const navLink of navLinks) { | |
navLink.tabIndex = -1; | |
} | |
} | |
function enableNavLinkTabbing() { | |
for (const navLink of navLinks) { | |
navLink.tabIndex = 0; | |
} | |
} | |
function disableNavFilterTabbing() { | |
document.getElementById('nav-filter').tabIndex = -1; | |
} | |
function enableNavFilterTabbing() { | |
document.getElementById('nav-filter').tabIndex = 0; | |
} | |
const main = document.getElementById('main'); | |
let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen'); | |
if (navSidebarIsOpen === null) { | |
navSidebarIsOpen = 'true'; | |
} | |
if (navSidebarIsOpen === 'false') { | |
disableNavLinkTabbing(); | |
disableNavFilterTabbing(); | |
} | |
main.classList.toggle('shifted', navSidebarIsOpen === 'true'); | |
toggleNavSidebar.addEventListener('click', function() { | |
if (navSidebarIsOpen === 'true') { | |
navSidebarIsOpen = 'false'; | |
disableNavLinkTabbing(); | |
disableNavFilterTabbing(); | |
} else { | |
navSidebarIsOpen = 'true'; | |
enableNavLinkTabbing(); | |
enableNavFilterTabbing(); | |
} | |
localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen); | |
main.classList.toggle('shifted'); | |
}); | |
} | |
function initSidebarQuickFilter() { | |
const options = []; | |
const navSidebar = document.getElementById('nav-sidebar'); | |
if (!navSidebar) { | |
return; | |
} | |
navSidebar.querySelectorAll('th[scope=row] a').forEach((container) => { | |
options.push({title: container.innerHTML, node: container}); | |
}); | |
function checkValue(event) { | |
let filterValue = event.target.value; | |
if (filterValue) { | |
filterValue = filterValue.toLowerCase(); | |
} | |
if (event.key === 'Escape') { | |
filterValue = ''; | |
event.target.value = ''; // clear input | |
} | |
let matches = false; | |
for (const o of options) { | |
let displayValue = ''; | |
if (filterValue) { | |
if (o.title.toLowerCase().indexOf(filterValue) === -1) { | |
displayValue = 'none'; | |
} else { | |
matches = true; | |
} | |
} | |
// show/hide parent <TR> | |
o.node.parentNode.parentNode.style.display = displayValue; | |
} | |
if (!filterValue || matches) { | |
event.target.classList.remove('no-results'); | |
} else { | |
event.target.classList.add('no-results'); | |
} | |
sessionStorage.setItem('django.admin.navSidebarFilterValue', filterValue); | |
} | |
const nav = document.getElementById('nav-filter'); | |
nav.addEventListener('change', checkValue, false); | |
nav.addEventListener('input', checkValue, false); | |
nav.addEventListener('keyup', checkValue, false); | |
const storedValue = sessionStorage.getItem('django.admin.navSidebarFilterValue'); | |
if (storedValue) { | |
nav.value = storedValue; | |
checkValue({target: nav, key: ''}); | |
} | |
} | |
window.initSidebarQuickFilter = initSidebarQuickFilter; | |
initSidebarQuickFilter(); | |
} | |