Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List and List Item - Indicate live regions for dynamically changing content when filtering items - (2036570436) #5625

Closed
Tracked by #4599
dqateam opened this issue Oct 25, 2022 · 13 comments
Assignees
Labels
4 - verified Issues that have been released and confirmed resolved. a11y Issues related to Accessibility fixes or improvements. bug Bug reports for broken functionality. Issues should include a reproduction of the bug. estimate - 5 A few days of work, definitely requires updates to tests. low risk Issues with low risk for consideration in low risk milestones p - medium Issue is non core or affecting less that 60% of people using the library

Comments

@dqateam
Copy link
Collaborator

dqateam commented Oct 25, 2022

Module:

39 Value List and Value List Item
List and List Item

Violation:

Indicate live regions for dynamically changing content. This applies to the component's filtering, to indicate filtered items have changed.

image

WCAG Reference:

Instance ID:

2036570436

Severity:

9

Description:

[Issue]
There are dynamically changing content areas when enter letter(s) in the filter input field in the "Test 2. Value List with Filter" section that do not indicate live regions.

[User Impact]
Screen reader users will be unaware of important updates to this content when they occur.

[Code Reference]

<input aria-label="" class="" enterkeyhint="" inputmode="" placeholder="Filter list items" type="text">

Note:

[Suggestion]
Indicate live regions for dynamically changing content. Live regions can be created by adding a role attribute set to "log", "status", "alert", "progressbar", "marquee", or "timer" as appropriate. Alternatively, custom behavior can be created by using the aria-live, aria-atomic, and aria-relevant attributes. Text injected into this live region element will be announced by screen readers.

Importantly, the element with the ARIA live attributes must be available when the page loads. Otherwise, many screen readers will not detect updates to the element. Additionally, the element must be empty on page load unless an immediate screen reader announcement is desired.

Media Type:

Live Regions

Additional Resources:

  • Report Source: Product accessibility evaluation conducted on the Calcite Design System in August, 2022.
@dqateam dqateam added 0 - new New issues that need assignment. a11y Issues related to Accessibility fixes or improvements. bug Bug reports for broken functionality. Issues should include a reproduction of the bug. needs triage Planning workflow - pending design/dev review. labels Oct 25, 2022
@geospatialem geospatialem changed the title Value List and Value List Item - Indicate live regions for dynamically changing content - (2036570436) Value List and Value List Item - Indicate live regions for dynamically changing content when filtering items - (2036570436) Nov 17, 2022
@driskull
Copy link
Member

This one would apply to list component as well.

@geospatialem geospatialem added the p - low Issue is non core or affecting less that 10% of people using the library label Nov 22, 2022
@geospatialem geospatialem added this to the Freezer milestone Nov 22, 2022
@geospatialem geospatialem changed the title Value List and Value List Item - Indicate live regions for dynamically changing content when filtering items - (2036570436) List and List Item - Indicate live regions for dynamically changing content when filtering items - (2036570436) Aug 10, 2023
@geospatialem
Copy link
Member

Repurposing the above to the list and list-item components.

@geospatialem geospatialem added p - medium Issue is non core or affecting less that 60% of people using the library and removed p - low Issue is non core or affecting less that 10% of people using the library labels Aug 10, 2023
@geospatialem geospatialem added estimate - 5 A few days of work, definitely requires updates to tests. and removed needs triage Planning workflow - pending design/dev review. labels Aug 10, 2023
@geospatialem
Copy link
Member

Here's an example of what we could implement when items are filtered: https://codepen.io/geospatialem/pen/KKrjwbY

The solution could use a combination of aria-live="polite" and aria-relevant="all" (Note the Codepen example above shows "additions", but in our case we would also have removals).

The JAWS transcript for when interacting with the change:

add another message to chat above �Button� 
To activate press Enter.

• Steve: Hey lookit that cool button down there, I wonder what that does? 
• New message from Steve: Oh I see, clicking that button adds more messages like this one.

@driskull
Copy link
Member

driskull commented Sep 20, 2023

@geospatialem how would this work with the following HTML?

<table aria-busy="false" aria-label="test" class="table" role="treegrid">
   <thead>
      <tr class="sticky-pos">
         <th colspan="0">
            <calcite-stack class="stack" calcite-hydrated="">
               <slot name="filter-actions-start" slot="actions-start"></slot>
               <calcite-filter scale="m" calcite-hydrated=""></calcite-filter>
               <slot name="filter-actions-end" slot="actions-end"></slot>
            </calcite-stack>
         </th>
      </tr>
   </thead>
   <tbody class="table-container">
      <slot></slot>
   </tbody>
</table>

According to aXe, I can't put a role of status on the tbody element nor can I put a div inside the tbody. Surrounding the whole table doesn't seem right either.

@brittneytewks brittneytewks added the low risk Issues with low risk for consideration in low risk milestones label Sep 21, 2023
@geospatialem
Copy link
Member

@geospatialem how would this work with the following HTML?

<table aria-busy="false" aria-label="test" class="table" role="treegrid">
   <thead>
      <tr class="sticky-pos">
         <th colspan="0">
            <calcite-stack class="stack" calcite-hydrated="">
               <slot name="filter-actions-start" slot="actions-start"></slot>
               <calcite-filter scale="m" calcite-hydrated=""></calcite-filter>
               <slot name="filter-actions-end" slot="actions-end"></slot>
            </calcite-stack>
         </th>
      </tr>
   </thead>
   <tbody class="table-container">
      <slot></slot>
   </tbody>
</table>

According to aXe, I can't put a role of status on the tbody element nor can I put a div inside the tbody. Surrounding the whole table doesn't seem right either.

Wondering if the best option would be to diverge from the parent list and communicate the change on the list-item level.

@driskull Would it be possible to announce the number of list-items and read out each label? For instance "Filter enabled displaying 2 items. Item one Hiking trails. Item two Snowmobile trails", where the role="treegrid" element works in coordination with the list-items?

@driskull
Copy link
Member

Yeah I can do that if the live region exists outside of the table.

@geospatialem geospatialem added 1 - assigned Issues that are assigned to a sprint and a team member. and removed 0 - new New issues that need assignment. labels Oct 23, 2023
@geospatialem geospatialem added this to the 2023 November Priorities milestone Oct 23, 2023
@geospatialem
Copy link
Member

Reallocated to the November milestone for future implementation.

@driskull
Copy link
Member

Would it be possible to announce the number of list-items and read out each label? For instance "Filter enabled displaying 2 items. Item one Hiking trails. Item two Snowmobile trails", where the role="treegrid" element works in coordination with the list-items?

This might make a nice functional component that we could use for other things. We could just have some aria live div that lists out the "items" and whether filtering is enabled or not.

@geospatialem
Copy link
Member

This might make a nice functional component that we could use for other things. We could just have some aria live div that lists out the "items" and whether filtering is enabled or not.

@driskull Dig the thought and approach, but that said, does that "up" the estimate if we proceed with a new functional component?

@driskull
Copy link
Member

I don't think it would increase the development timeline. It would just be advantageous to have this as a reusable piece for other components as well.

@geospatialem
Copy link
Member

Reallocated to December to perform further a11y testing.

driskull added a commit that referenced this issue Nov 28, 2023
**Related Issue:** #5625

## Summary

- Adds aria-live region to show currently enabled and filtered items
@driskull driskull removed their assignment Nov 28, 2023
@driskull driskull added 3 - installed Issues that have been merged to master branch and are ready for final confirmation. and removed 1 - assigned Issues that are assigned to a sprint and a team member. labels Nov 28, 2023
Copy link
Contributor

Installed and assigned for verification.

@geospatialem geospatialem added 4 - verified Issues that have been released and confirmed resolved. and removed 3 - installed Issues that have been merged to master branch and are ready for final confirmation. labels Dec 1, 2023
@geospatialem
Copy link
Member

Verified in 1.12.0-next.6 with JAWS and NVDA on Windows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
4 - verified Issues that have been released and confirmed resolved. a11y Issues related to Accessibility fixes or improvements. bug Bug reports for broken functionality. Issues should include a reproduction of the bug. estimate - 5 A few days of work, definitely requires updates to tests. low risk Issues with low risk for consideration in low risk milestones p - medium Issue is non core or affecting less that 60% of people using the library
Projects
None yet
Development

No branches or pull requests

6 participants