--
You received this message because you are subscribed to the Google Groups "Browser Accessibility Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to browser-accessibil...@googlegroups.com.
To post to this group, send email to browser-acce...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/browser-accessibility-dev/CAMQHGLychLzZ7URG200mW-_5e%2BV0hACZ5GQ_FE_Bxkr5EiTfFA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
To view this discussion on the web visit https://groups.google.com/d/msgid/browser-accessibility-dev/CAFz-FYxCU-G2C0_tkThHTeKcc5EfGQk5RUVX-hrxh6PfkWhQuQ%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "Browser Accessibility Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to browser-accessibil...@googlegroups.com.
To post to this group, send email to browser-acce...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/browser-accessibility-dev/063ae6ca-1f71-46a3-b886-e37bf2f4dcd8%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/browser-accessibility-dev/CAL%3DZazh6E%3D86QuHXmypXwyYcsoawf-u39FuTuW-EKy7ut1OM9Q%40mail.gmail.com.
- `inert` is less opinionated, but is a pain to use: you have to set it on everything _but_ the thing you want to be modal, and if you don't have the modal thing as a sibling of the main content this means a big tree walk (just ask Marcy) - plus you can't set it on any ancestor of the modal element.
What is the role <dialog> implies?
--
You received this message because you are subscribed to the Google Groups "Browser Accessibility Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to browser-accessibil...@googlegroups.com.
To post to this group, send email to browser-acce...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/browser-accessibility-dev/179a8c94-da18-4334-998b-97f7c89e5860%40googlegroups.com.
I don't think either inert="" or modal="" are great. Global attributes are very complex as you have to figure out their behavior for each individual element. A dedicated element like <dialog> is much easier to implement and support correctly. This is e.g., why we moved away from something like <object> and towards <audio> and <video>.
Don't we need to determine the behavior of role="dialog" for every element, since it can be placed on any element and not only on <div>? Or is <button role="dialog"> not supported.
Nektarios.
--
You received this message because you are subscribed to the Google Groups "Browser Accessibility Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to browser-accessibil...@googlegroups.com.
To post to this group, send email to browser-acce...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/browser-accessibility-dev/55D60BA9.5000108%40google.com.
--
https://annevankesteren.nl/
--
You received this message because you are subscribed to the Google Groups "Browser Accessibility Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to browser-accessibil...@googlegroups.com.
To post to this group, send email to browser-acce...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/browser-accessibility-dev/CADnb78j9eo9_rRYoqK5JTe6yzRUys6FPPksoXD8Hi3RLyPZFzQ%40mail.gmail.com.
I guess I need to see this modal menu in action since it's not
actually clear to me what such a thing is and how it's different from
a modal dialog.
Sorry for playing a devil's advocate, but what is the likelihood that 3rd-party developers don't turn on their nose on the native implementation the way they do with other native HTML5 stuff?
Anything beyond basic buttons is usually rewritten with custom implementations and patched up with ARIA.
Please note, I am not complaining or judging anyone here, just trying to be pragmatic...
We need to expose the actual primitives, in ways that can be composed, reused, and mixed in, to the classes and subclasses that are part of library-defined widget libraries.
What I'm seeing a lot of interest in in this thread is the specific piece of magic "blocked by the modal dialog" [5]. The primitive here is, at least in spec terms, fairly simple: at its simplest it's just something like `document.setBlockingElement(el)`. You could of course design that API in a variety of ways, some of which might be more user-friendly: for example, perhaps you want a stack of blocking elements, so that when one becomes un-blocking the next in the stack takes over. (Could be useful for nested modal menus!) But I think at its core, the primitive is just that.
There's also the issue of the "dialog focusing steps" [6]. It's not clear to me whether these use anything you can't already do---I haven't traced all the definitions down yet. But maybe they argue for easier focus-related functionality, such as isControlGroupOwner(el), isInert(el), or findChildControlToFocus(el).
> Role/Semantics. This will depend on what kind of UI pattern it is. We have all been hanging our hats on `<dialog>`, but that is only one kind of modal–there are also lightboxes/overlays, popup menus, sliding sidenavs and probably a bunch of other things that aren't alert or confirm dialogs. Perhaps a primitive for the modal window is needed, apart from the dialog or menu UI?
I am not an expert in this area, but my understanding is that the technical issue here is largely about "what can we get accessibility technologies to announce?" For example, [7] explains how to map all existing HTML elements to specific constants used by popular accessibility software. There, we see that MSAA and ATK have specific dialog constants (ROLE_SYSTEM_DIALOG, and ATK_ROLE_DIALOG), so presumably they announce to their users that they are in a dialog, or similar. Whereas, UIA and AX do not have any such constants, and so there is no appropriate mapping.
From: Dominic Mazzoni [mailto:dmaz...@google.com]
> The problem with a JavaScript API on the document object is that it affects the default behavior of the DOM so much, I feel like it needs a declarative API so that users can debug it using Dev Tools, write HTML snippets to play with that don't require inline scripting, etc.
I don't really understand this reasoning. The same argument could be made against fullscreen capabilities. And there's nothing wrong with inline scripting.
> I wonder if we could just let any element have a level associated with it, with the default being level=0. At any time, only the highest level present in the DOM and its subtree is active; anything that's part of a lower level is inert.
This is a different model than the one that exists for dialog, and doesn't reflect what's actually going on. There's only a single blocking element, and that should be reflected in the API.
What you can do if you find this kind of API appealing is write a library that uses mutation observers to listen for changes in the data-modal-level attribute on all elements, and uses that to call document.setBlockingElement. Having that functionality in a library, instead of making the browser do this extra work, seems more appropriate. This leaves the imperative API as the building block that custom element authors and similar can use, without having to decorate themselves with an attribute.
From: Dominic Mazzoni [mailto:dmaz...@google.com]
> Well, the dialog element has a pending dialog stack. It seems to me like every one of the use-cases suggested (dialogs, menus, etc.) would want some sort of similar stack - so I think it should be part of the spec rather than requiring authors to implement that themselves.
Right, I touched on this a bit a couple messages ago. But that last leap is tricky. Every time you make a decision like that for developers, moving away from the primitives, you are closing off choice, making a decision that might turn out to be wrong and preclude other use cases.
For example, should we have one big stack, or separate stacks for each type of thing? (Maybe so that all dialogs should be higher in the stack at all times than modal sidebar menus?) Should the stack API allow "stack jumping" to the bottom of the stack, or is it strictly LIFO, so that you can only put things on the top? Should you be able to un-inert the top of the stack temporarily, without actually popping off the entire stack?
It's a balance, of course. I lean toward giving people the primitive and letting them make decisions like this. It's not hard to build a stack in JS, after all. But there's definitely an argument in favor of building systems that enhance coordination by making everyone abide by the browser's decisions. If we go that route I'd suggest keeping it simple so that this doesn't get hung up forever designing the perfect coordination system. So I'd suggest one big stack, strictly LIFO, only push/pop supplied.
> But I think nested dialogs / overlays is so common that it'd be crazy to not support that case. What about document.pushBlockingElement and popBlockingElement or something like that?
Yeah, sounds good. You probably also want `document.blockingElement` getter so that code can tell whether there is currently a blocking element.
Another (even more restrictive) is to disallow popping the blocking element unless you are the one that pushed it; something like `const pop = document.pushBlockingElement(el)` where now the only way to pop the element is to call `pop()`, i.e. there is no global `document.popBlockingElement()`. This can avoid code that does something like `while (document.blockingElement) { document.popBlockingElement(); }`, which might be seen as unfriendly if the goal of this more restrictive API is to enhance coordination.
--
You received this message because you are subscribed to the Google Groups "Browser Accessibility Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to browser-accessibil...@googlegroups.com.
To post to this group, send email to browser-acce...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/browser-accessibility-dev/CY1PR0501MB13691AD105C54EAB8796FFA5DF610%40CY1PR0501MB1369.namprd05.prod.outlook.com.