Skip to content

Commit

Permalink
MDL-80805 core_form: Accessibility - add aria-required to form fields
Browse files Browse the repository at this point in the history
Most types of form field will now include aria-required="true" if the
field is marked as required. This causes assistive technology to inform
users that the field is required.

Before this change, in some cases (e.g. screen reader users tabbing
through fields) users were not informed that a field is required.
  • Loading branch information
sammarshallou committed Feb 15, 2024
1 parent 328b48e commit 14b1e93
Show file tree
Hide file tree
Showing 25 changed files with 70 additions and 5 deletions.
2 changes: 1 addition & 1 deletion lib/amd/build/form-autocomplete.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion lib/amd/build/form-autocomplete.min.js.map

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions lib/amd/src/form-autocomplete.js
Expand Up @@ -1185,6 +1185,7 @@ define([
selectionId: 'form_autocomplete_selection-' + uniqueId,
downArrowId: 'form_autocomplete_downarrow-' + uniqueId,
items: [],
required: originalSelect[0]?.ariaRequired === 'true',
};

// Increment the unique counter so we don't get duplicates ever.
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-advcheckbox-inline.mustache
Expand Up @@ -16,6 +16,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{#element.frozen}}
disabled
{{/element.frozen}}
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-advcheckbox.mustache
Expand Up @@ -31,6 +31,9 @@
aria-describedby="{{element.id}}_description"
{{/text}}
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{#element.frozen}}
disabled
{{/element.frozen}}
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-autocomplete-inline.mustache
Expand Up @@ -10,6 +10,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.options}}
<option value="{{value}}" {{#selected}}selected{{/selected}}{{#html}} data-html="{{html}}"{{/html}}>{{{text}}}</option>
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-autocomplete.mustache
Expand Up @@ -10,6 +10,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.options}}
<option value="{{value}}" {{#selected}}selected{{/selected}}{{#html}} data-html="{{html}}"{{/html}}>{{{text}}}</option>
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-checkbox-inline.mustache
Expand Up @@ -16,6 +16,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{#element.frozen}}
disabled
{{/element.frozen}}
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-checkbox.mustache
Expand Up @@ -31,6 +31,9 @@
aria-describedby="{{element.id}}_description"
{{/text}}
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{#element.frozen}}
disabled
{{/element.frozen}}
Expand Down
6 changes: 5 additions & 1 deletion lib/form/templates/element-password-inline.mustache
Expand Up @@ -44,7 +44,11 @@
{{#element.size}}size="{{element.size}}"{{/element.size}}
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}} {{{element.attributes}}}>
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}}>
{{/element.frozen}}
{{/element}}
{{/ core_form/element-template-inline }}
6 changes: 5 additions & 1 deletion lib/form/templates/element-password.mustache
Expand Up @@ -44,7 +44,11 @@
{{#element.size}}size="{{element.size}}"{{/element.size}}
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}} {{{element.attributes}}}>
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}}>
{{/element.frozen}}
{{/element}}
{{/ core_form/element-template }}
3 changes: 3 additions & 0 deletions lib/form/templates/element-passwordunmask.mustache
Expand Up @@ -59,6 +59,9 @@
{{# error }}
autofocus aria-describedby="{{ element.iderror }}"
{{/ error }}
{{#required}}
aria-required="true"
{{/required}}
{{{ element.attributes }}}
>
</span>
Expand Down
3 changes: 2 additions & 1 deletion lib/form/templates/element-radio.mustache
Expand Up @@ -30,7 +30,8 @@
{{#element.frozen}}disabled{{/element.frozen}}
{{#error}}{{#element.checked}}
autofocus aria-describedby="{{element.iderror}}"
{{/element.checked}}{{/error}} {{{element.attributes}}} >
{{/element.checked}}{{/error}}
{{#required}}aria-required="true"{{/required}} {{{element.attributes}}} >
{{#text}}
{{{.}}}
{{/text}}
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-select-inline.mustache
Expand Up @@ -14,6 +14,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.options}}
<option value="{{value}}" {{#selected}}selected{{/selected}} {{#disabled}}disabled{{/disabled}} {{{optionattributes}}}>{{{text}}}</option>
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-select.mustache
Expand Up @@ -107,6 +107,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.options}}
<option value="{{value}}" {{#selected}}selected{{/selected}} {{#disabled}}disabled{{/disabled}}
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-selectgroups-inline.mustache
Expand Up @@ -8,6 +8,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.optiongroups}}
{{#text}}
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-selectgroups.mustache
Expand Up @@ -8,6 +8,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.optiongroups}}
{{#text}}
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-selectwithlink.mustache
Expand Up @@ -8,6 +8,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.options}}
<option value="{{value}}" {{#selected}}selected{{/selected}} {{#disabled}}disabled{{/disabled}} {{{optionattributes}}}>{{{text}}}</option>
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-tags-inline.mustache
Expand Up @@ -8,6 +8,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.options}}
<option value="{{value}}" {{#selected}}selected{{/selected}}>{{{text}}}</option>
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-tags.mustache
Expand Up @@ -8,6 +8,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{#element.options}}
<option value="{{value}}" {{#selected}}selected{{/selected}}>{{{text}}}</option>
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-text-inline.mustache
Expand Up @@ -12,6 +12,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}}>
{{/element}}
{{/ core_form/element-template-inline }}
3 changes: 3 additions & 0 deletions lib/form/templates/element-text.mustache
Expand Up @@ -12,6 +12,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}} >
{{/element}}
{{/ core_form/element-template }}
3 changes: 3 additions & 0 deletions lib/form/templates/element-textarea.mustache
Expand Up @@ -7,6 +7,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{{element.attributes}}}
{{#element.frozen}}
readonly {{#element.hardfrozen}}disabled{{/element.hardfrozen}}
Expand Down
3 changes: 3 additions & 0 deletions lib/form/templates/element-url.mustache
Expand Up @@ -49,6 +49,9 @@
{{#error}}
autofocus aria-describedby="{{element.iderror}}"
{{/error}}
{{#required}}
aria-required="true"
{{/required}}
{{#element.frozen}}
readonly {{#element.hardfrozen}}disabled{{/element.hardfrozen}}
{{/element.frozen}}
Expand Down
1 change: 1 addition & 0 deletions lib/templates/form_autocomplete_selection.mustache
Expand Up @@ -45,6 +45,7 @@
}} role="listbox"{{!
}} aria-atomic="true"{{!
}} tabindex="0"{{!
}} {{#required}}aria-required="true"{{/required}}{{!
}} {{#multiple}}aria-multiselectable="true"{{/multiple}}>
{{> core/form_autocomplete_selection_items }}
</div>

0 comments on commit 14b1e93

Please sign in to comment.