|
afe42d0…
|
ragelink
|
1 |
'use strict'; |
|
afe42d0…
|
ragelink
|
2 |
{ |
|
afe42d0…
|
ragelink
|
3 |
const toggleNavSidebar = document.getElementById('toggle-nav-sidebar'); |
|
afe42d0…
|
ragelink
|
4 |
if (toggleNavSidebar !== null) { |
|
afe42d0…
|
ragelink
|
5 |
const navSidebar = document.getElementById('nav-sidebar'); |
|
afe42d0…
|
ragelink
|
6 |
const main = document.getElementById('main'); |
|
afe42d0…
|
ragelink
|
7 |
let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen'); |
|
afe42d0…
|
ragelink
|
8 |
if (navSidebarIsOpen === null) { |
|
afe42d0…
|
ragelink
|
9 |
navSidebarIsOpen = 'true'; |
|
afe42d0…
|
ragelink
|
10 |
} |
|
afe42d0…
|
ragelink
|
11 |
main.classList.toggle('shifted', navSidebarIsOpen === 'true'); |
|
afe42d0…
|
ragelink
|
12 |
navSidebar.setAttribute('aria-expanded', navSidebarIsOpen); |
|
afe42d0…
|
ragelink
|
13 |
|
|
afe42d0…
|
ragelink
|
14 |
toggleNavSidebar.addEventListener('click', function() { |
|
afe42d0…
|
ragelink
|
15 |
if (navSidebarIsOpen === 'true') { |
|
afe42d0…
|
ragelink
|
16 |
navSidebarIsOpen = 'false'; |
|
afe42d0…
|
ragelink
|
17 |
} else { |
|
afe42d0…
|
ragelink
|
18 |
navSidebarIsOpen = 'true'; |
|
afe42d0…
|
ragelink
|
19 |
} |
|
afe42d0…
|
ragelink
|
20 |
localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen); |
|
afe42d0…
|
ragelink
|
21 |
main.classList.toggle('shifted'); |
|
afe42d0…
|
ragelink
|
22 |
navSidebar.setAttribute('aria-expanded', navSidebarIsOpen); |
|
afe42d0…
|
ragelink
|
23 |
}); |
|
afe42d0…
|
ragelink
|
24 |
} |
|
afe42d0…
|
ragelink
|
25 |
|
|
afe42d0…
|
ragelink
|
26 |
function initSidebarQuickFilter() { |
|
afe42d0…
|
ragelink
|
27 |
const options = []; |
|
afe42d0…
|
ragelink
|
28 |
const navSidebar = document.getElementById('nav-sidebar'); |
|
afe42d0…
|
ragelink
|
29 |
if (!navSidebar) { |
|
afe42d0…
|
ragelink
|
30 |
return; |
|
afe42d0…
|
ragelink
|
31 |
} |
|
afe42d0…
|
ragelink
|
32 |
navSidebar.querySelectorAll('th[scope=row] a').forEach((container) => { |
|
afe42d0…
|
ragelink
|
33 |
options.push({title: container.innerHTML, node: container}); |
|
afe42d0…
|
ragelink
|
34 |
}); |
|
afe42d0…
|
ragelink
|
35 |
|
|
afe42d0…
|
ragelink
|
36 |
function checkValue(event) { |
|
afe42d0…
|
ragelink
|
37 |
let filterValue = event.target.value; |
|
afe42d0…
|
ragelink
|
38 |
if (filterValue) { |
|
afe42d0…
|
ragelink
|
39 |
filterValue = filterValue.toLowerCase(); |
|
afe42d0…
|
ragelink
|
40 |
} |
|
afe42d0…
|
ragelink
|
41 |
if (event.key === 'Escape') { |
|
afe42d0…
|
ragelink
|
42 |
filterValue = ''; |
|
afe42d0…
|
ragelink
|
43 |
event.target.value = ''; // clear input |
|
afe42d0…
|
ragelink
|
44 |
} |
|
afe42d0…
|
ragelink
|
45 |
let matches = false; |
|
afe42d0…
|
ragelink
|
46 |
for (const o of options) { |
|
afe42d0…
|
ragelink
|
47 |
let displayValue = ''; |
|
afe42d0…
|
ragelink
|
48 |
if (filterValue) { |
|
afe42d0…
|
ragelink
|
49 |
if (o.title.toLowerCase().indexOf(filterValue) === -1) { |
|
afe42d0…
|
ragelink
|
50 |
displayValue = 'none'; |
|
afe42d0…
|
ragelink
|
51 |
} else { |
|
afe42d0…
|
ragelink
|
52 |
matches = true; |
|
afe42d0…
|
ragelink
|
53 |
} |
|
afe42d0…
|
ragelink
|
54 |
} |
|
afe42d0…
|
ragelink
|
55 |
// show/hide parent <TR> |
|
afe42d0…
|
ragelink
|
56 |
o.node.parentNode.parentNode.style.display = displayValue; |
|
afe42d0…
|
ragelink
|
57 |
} |
|
afe42d0…
|
ragelink
|
58 |
if (!filterValue || matches) { |
|
afe42d0…
|
ragelink
|
59 |
event.target.classList.remove('no-results'); |
|
afe42d0…
|
ragelink
|
60 |
} else { |
|
afe42d0…
|
ragelink
|
61 |
event.target.classList.add('no-results'); |
|
afe42d0…
|
ragelink
|
62 |
} |
|
afe42d0…
|
ragelink
|
63 |
sessionStorage.setItem('django.admin.navSidebarFilterValue', filterValue); |
|
afe42d0…
|
ragelink
|
64 |
} |
|
afe42d0…
|
ragelink
|
65 |
|
|
afe42d0…
|
ragelink
|
66 |
const nav = document.getElementById('nav-filter'); |
|
afe42d0…
|
ragelink
|
67 |
nav.addEventListener('change', checkValue, false); |
|
afe42d0…
|
ragelink
|
68 |
nav.addEventListener('input', checkValue, false); |
|
afe42d0…
|
ragelink
|
69 |
nav.addEventListener('keyup', checkValue, false); |
|
afe42d0…
|
ragelink
|
70 |
|
|
afe42d0…
|
ragelink
|
71 |
const storedValue = sessionStorage.getItem('django.admin.navSidebarFilterValue'); |
|
afe42d0…
|
ragelink
|
72 |
if (storedValue) { |
|
afe42d0…
|
ragelink
|
73 |
nav.value = storedValue; |
|
afe42d0…
|
ragelink
|
74 |
checkValue({target: nav, key: ''}); |
|
afe42d0…
|
ragelink
|
75 |
} |
|
afe42d0…
|
ragelink
|
76 |
} |
|
afe42d0…
|
ragelink
|
77 |
window.initSidebarQuickFilter = initSidebarQuickFilter; |
|
afe42d0…
|
ragelink
|
78 |
initSidebarQuickFilter(); |
|
afe42d0…
|
ragelink
|
79 |
} |