Open Malvoz opened 3 years ago
Regarding:
Should be a programmatically identifiable element. Fixed in 7c86ddc. Upstream: Leaflet/Leaflet#7193.
Shouldn't this be on the mapml-viewer / map element? The leaflet-container is in shadow DOM.
Shouldn't this be on the mapml-viewer / map element?
The leaflet container has tabindex=0
so giving that element the accessible name means it can be announced to the user as it is focused when sequentially navigated to.
I'm just surprised that shadow DOM is traversable by AT, but probably because I am not too familiar with how it works and how it fails.
@prushforth ATs construct an accessibility tree from the rendered DOM (and may be affected by CSS, e.g. display: none
would hide the element and all descendants from the accessibility tree).
I've updated the list btw!
Using code from Leaflet (and plugins) means this map component is sometimes inheriting accessibility issues.
We do have comments inline in code where fixes have been made, sometimes with links for upstream issues. Collecting them here in one spot helps get an overview of the state of accessibility in this component. This issue is to track upstream issues for discussion/fixes.
🔗 Map component
The controls container should come before other author provided content such as popups in the DOM (i.e.tab navigation for markers is problematic (see upstream issue below for explanation)..leaflet-control-container
should come before.leaflet-map-pane
).font-size
units).🔗 Controls in general
<a role="button">
should behave like<button>
.title
and anaria-label
with the same value, which causes double speak in some screen readers. Thetitle
could be moved to the control's child icon element, which should then be set toaria-hidden="true"
to preserve the tooltip-on-hover functionality while preventing double speak.🔗 Zoom controls
+
and-
should be explicitly hidden from ATs.🔗 Layer control
[x] Should have
role="button"
.[ ] Should convey the
aria-expanded
state.[ ] The layer menu's container should be conveyed as a group (of related user interfaces).
[ ] Esc key should close the layer menu.
[ ] Focus should be delegated to the layer menu (e.g. to a
tabindex="-1"
on container, or first layer item) after activating the layer control, at least for keyboard users.🔗 Fullscreen control
[x] Should have
role="button"
.🔗 Markers
role="button"
.aria-expanded
state of popups.Markers (and other vector features) should be panned into view on focus.🔗 Popups
.mapml-popup-content
)..leaflet-popup
should haverole="dialog"
..mapml-popup-content
).role="button"
.×
in the popup's Close button should be explicitly hidden from ATs.mapml-focus-buttons
) should be at least 44 by 44 CSS pixels (relates to https://github.com/Maps4HTML/Web-Map-Custom-Element/issues/215).<body>
element, rather the previously focused element (e.g. marker) should be focused (if not available then the map container should be focused).🔗 Context menu
role="button"
.5d076fe
.95ecbcb
(does not work in Chrome).🔗 Attribution
font-size
units).text-decoration
).role="group" aria-label="Map data attribution"
(or a control to toggle attribution should be labelled, per https://github.com/Maps4HTML/Web-Map-Custom-Element/issues/216).aria-hidden="true"
.🔗 Tooltips