mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #34042 -- Improved accessibility of admin's navigation sidebar.
This commit is contained in:
committed by
Mariusz Felisiak
parent
7c9d0c31d5
commit
c4aac2ac1e
@@ -59,8 +59,13 @@
|
||||
content: '\00AB';
|
||||
}
|
||||
|
||||
.main > #nav-sidebar {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.main.shifted > #nav-sidebar {
|
||||
margin-left: 0;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
[dir="rtl"] .main.shifted > #nav-sidebar {
|
||||
|
||||
@@ -2,47 +2,24 @@
|
||||
{
|
||||
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 navSidebar = document.getElementById('nav-sidebar');
|
||||
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');
|
||||
navSidebar.setAttribute('aria-expanded', navSidebarIsOpen);
|
||||
|
||||
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');
|
||||
navSidebar.setAttribute('aria-expanded', navSidebarIsOpen);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% load i18n %}
|
||||
<button class="sticky toggle-nav-sidebar" id="toggle-nav-sidebar" aria-label="{% translate 'Toggle navigation' %}"></button>
|
||||
<nav class="sticky" id="nav-sidebar">
|
||||
<nav class="sticky" id="nav-sidebar" aria-label="{% translate 'Sidebar' %}">
|
||||
<input type="search" id="nav-filter"
|
||||
placeholder="{% translate 'Start typing to filter…' %}"
|
||||
aria-label="{% translate 'Filter navigation items' %}">
|
||||
|
||||
Reference in New Issue
Block a user