1
0
mirror of https://github.com/django/django.git synced 2025-07-04 01:39:20 +00:00

Fixed #35507 -- Improved accessibility of search and filter elements in the admin changelist.

This commit is contained in:
antoliny0919 2025-04-13 15:13:20 +09:00 committed by Sarah Boyce
parent 8638d8bf74
commit 8bc3dd8727
4 changed files with 17 additions and 7 deletions

View File

@ -74,7 +74,7 @@
</div> </div>
{% block filters %} {% block filters %}
{% if cl.has_filters %} {% if cl.has_filters %}
<nav id="changelist-filter" aria-labelledby="changelist-filter-header"> <search id="changelist-filter" aria-labelledby="changelist-filter-header">
<h2 id="changelist-filter-header">{% translate 'Filter' %}</h2> <h2 id="changelist-filter-header">{% translate 'Filter' %}</h2>
{% if cl.is_facets_optional or cl.has_active_filters %}<div id="changelist-filter-extra-actions"> {% if cl.is_facets_optional or cl.has_active_filters %}<div id="changelist-filter-extra-actions">
{% if cl.is_facets_optional %}<h3> {% if cl.is_facets_optional %}<h3>
@ -86,7 +86,7 @@
</h3>{% endif %} </h3>{% endif %}
</div>{% endif %} </div>{% endif %}
{% for spec in cl.filter_specs %}{% admin_list_filter cl spec %}{% endfor %} {% for spec in cl.filter_specs %}{% admin_list_filter cl spec %}{% endfor %}
</nav> </search>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
</div> </div>

View File

@ -1,6 +1,8 @@
{% load i18n static %} {% load i18n static %}
{% if cl.search_fields %} {% if cl.search_fields %}
<div id="toolbar"><form id="changelist-search" method="get" role="search"> <div id="toolbar">
<h2 id="changelist-search-form" class="visually-hidden">{% blocktranslate with name=cl.opts.verbose_name_plural %}Search {{ name }}{% endblocktranslate %}</h2>
<form id="changelist-search" method="get" role="search" aria-labelledby="changelist-search-form">
<div><!-- DIV needed for valid HTML --> <div><!-- DIV needed for valid HTML -->
<label for="searchbar"><img src="{% static "admin/img/search.svg" %}" alt="Search"></label> <label for="searchbar"><img src="{% static "admin/img/search.svg" %}" alt="Search"></label>
<input type="text" size="40" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar"{% if cl.search_help_text %} aria-describedby="searchbar_helptext"{% endif %}> <input type="text" size="40" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar"{% if cl.search_help_text %} aria-describedby="searchbar_helptext"{% endif %}>

View File

@ -1745,7 +1745,12 @@ class ChangeListTests(TestCase):
response = m.changelist_view(request) response = m.changelist_view(request)
self.assertContains( self.assertContains(
response, response,
'<form id="changelist-search" method="get" role="search">', '<h2 id="changelist-search-form" class="visually-hidden">Search bands</h2>',
)
self.assertContains(
response,
'<form id="changelist-search" method="get" role="search" '
'aria-labelledby="changelist-search-form">',
) )
def test_search_bar_total_link_preserves_options(self): def test_search_bar_total_link_preserves_options(self):

View File

@ -875,7 +875,8 @@ class AdminViewBasicTest(AdminViewBasicTestCase):
response = self.client.get(reverse("admin:admin_views_thing_changelist")) response = self.client.get(reverse("admin:admin_views_thing_changelist"))
self.assertContains( self.assertContains(
response, response,
'<nav id="changelist-filter" aria-labelledby="changelist-filter-header">', '<search id="changelist-filter" '
'aria-labelledby="changelist-filter-header">',
msg_prefix="Expected filter not found in changelist view", msg_prefix="Expected filter not found in changelist view",
) )
self.assertNotContains( self.assertNotContains(
@ -930,7 +931,8 @@ class AdminViewBasicTest(AdminViewBasicTestCase):
response = self.client.get(changelist_url) response = self.client.get(changelist_url)
self.assertContains( self.assertContains(
response, response,
'<nav id="changelist-filter" aria-labelledby="changelist-filter-header">', '<search id="changelist-filter" '
'aria-labelledby="changelist-filter-header">',
) )
filters = { filters = {
"chap__id__exact": { "chap__id__exact": {
@ -1070,7 +1072,8 @@ class AdminViewBasicTest(AdminViewBasicTestCase):
) )
self.assertContains( self.assertContains(
response, response,
'<nav id="changelist-filter" aria-labelledby="changelist-filter-header">', '<search id="changelist-filter" '
'aria-labelledby="changelist-filter-header">',
) )
self.assertContains( self.assertContains(
response, response,