a11y: add aria-required when input field required (#85451)
gitea/gadjo/pipeline/head This commit looks good Details

This commit is contained in:
Yann Weber 2024-01-09 17:45:15 +01:00 committed by Yann Weber
parent df330cdece
commit 04c0f88623
2 changed files with 10 additions and 0 deletions

View File

@ -114,6 +114,8 @@ def with_template(form):
if field.errors:
aria_described_by.append(f'error_{field.id_for_label}')
field.field.widget.attrs['aria-invalid'] = 'true'
if field.field.required:
field.field.widget.attrs['aria-required'] = 'true'
if aria_described_by:
field.field.widget.attrs['aria-describedby'] = ' '.join(aria_described_by)
fields_with_templates.append(

View File

@ -46,6 +46,7 @@ def test_with_template():
rendered = t.render(ctx)
assert PyQuery(rendered).find('input[type=text]')
assert not PyQuery(rendered).find('input[type=text]').attr['aria-invalid']
assert PyQuery(rendered).find('input[type=text]').attr['aria-required']
ctx = Context({'request': request, 'form': ExampleForm(data=request.GET)})
rendered = t.render(ctx)
@ -71,3 +72,10 @@ def test_with_template():
PyQuery(rendered).find('input[type=text][aria-describedby]').attr['aria-describedby']
== 'help_text_id_text error_id_text'
)
class ExampleForm(forms.Form):
text = forms.CharField(label='Text', max_length=50, required=False)
ctx = Context({'request': request, 'form': ExampleForm(data=request.GET)})
rendered = t.render(ctx)
assert not PyQuery(rendered).find('input[type=text]').attr['aria-required']