-
Notifications
You must be signed in to change notification settings - Fork 125
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
[AriaNotify] How should the interrupt property work? #2331
Comments
This was discussed at TPAC at several points. I've tried to pull out the points in which this was discussed below:
Based on this, we did all seem to agree to resolve on updating the following: If priority is set to important, and interrupt is all or pending, flush all or pending notifications for that node, no matter the priority. One of the main outstanding points that @jcsteh brought up was AT implementability of interrupt being node-based. I have been giving it some more thought and have come up with a potential algorithm I am planning to discuss with AT vendors in the next couple of weeks to help determine if this will be implementable in a performant way https://docs.google.com/document/d/1ukbM0SMQqYFWD65kZFW9MNURv8vriRvx8W0Y24E0Lbs/edit?usp=sharing. If we prove it won't be possible, we can look to update the functionality to either not be node based, or potentially drop it as @douggeoffray had noted in the discussion. So next steps for me are to follow up with ATs on proving out implementability, and we can plan to revisit once I have more data. |
@douggeoffray and I chatted with NVDA and JAWS in the last couple of weeks, to determine the implementability of the above. JAWS was supportive of keeping NVDA was also supportive of |
The current design of
AriaNotify
, as outlined in the spec PR and the explainer, includes a property that allows authors more control over the verbosity of their notifications, calledinterrupt
.We have received feedback that
interrupt
is confusing with respect to how flushing works, and that it doesn't quite cover all use cases.To help in outlining how
interrupt
works with its various value types (none
,all
, andpending
) @douggeoffray put together a demo showcasing how each behaves in the case of a progress bar. The code for this demo can be found at https://codepen.io/douggeoffray/pen/WNqVQjO.As demonstrated, this property will allow authors more customization of how noisy their notifications will be.
Currently,
interrupt
only flushes notifications of the same originating node andpriority
, if applicable. However, we received feedback that this doesn't cover all use cases desired by web authors, as outlined by the following example provided by @smhigley:Here is a code sample of the above use case: https://copilot-study.netlify.app/chatMay2024
As noted by this example, there is a desire to flush all notifications of the same node, regardless of
priority
, which isn't possible today with the current definition ofinterrupt
.As a result, I am proposing to update to the flushing behavior of
interrupt
as follows, with the change from the current proposal bolded:priority
is set toimportant
, andinterrupt
isall
, flush all notifications for that node, no matter the priority.priority
is set tonone
, andinterrupt
isall
, flush only the notifications with the same node andpriority
ofnone
. This way, low priority items won't flush high priority items.interrupt
value ofpending
, but only flush notifications that are pending as opposed to also those that are currently being spoken.The text was updated successfully, but these errors were encountered: