Skip to content

Commit edca96e

Browse files
committed
Fixing aria-markup and keyboard accessibility/focus management for quality plugin.
* Adds aria-controls and aria-expanded status. * Rewrites EventListeners to handle showing/hiding the flyout with keyboard and mouse events. * Adding focus highlighting * Converting px to rem * Removing unnecessary CSS * Changes due to merge comments
1 parent 0e6ca50 commit edca96e

2 files changed

Lines changed: 7 additions & 6 deletions

File tree

src/quality/quality.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
.mejs__qualities-selector.mejs__offscreen {
2+
display: none;
3+
}
4+
15
.mejs__qualities-button,
26
.mejs-qualities-button {
37
position: relative;

src/quality/quality.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ Object.assign(MediaElementPlayer.prototype, {
151151
const generateId = Math.floor(Math.random() * 100);
152152
player.qualitiesContainer = document.createElement('div');
153153
player.qualitiesContainer.className = `${t.options.classPrefix}button ${t.options.classPrefix}qualities-button`;
154-
player.qualitiesContainer.innerHTML = `<button type="button" title="${qualityTitle}" aria-label="${qualityTitle}" aria-controls="qualitieslist-${generateId}">${defaultValue}</button>` +
154+
player.qualitiesContainer.innerHTML = `<button type="button" title="${qualityTitle}" aria-label="${qualityTitle}" aria-controls="qualitieslist-${generateId}" aria-expanded="false">${defaultValue}</button>` +
155155
`<div class="${t.options.classPrefix}qualities-selector ${t.options.classPrefix}offscreen">` +
156156
`<ul class="${t.options.classPrefix}qualities-selector-list" id="qualitieslist-${generateId}" tabindex="-1"></ul></div>`;
157157

@@ -184,18 +184,15 @@ Object.assign(MediaElementPlayer.prototype, {
184184
;
185185

186186
function hideSelector() {
187-
setTimeout(() => {
188-
mejs.Utils.addClass(qualitiesSelector, `${t.options.classPrefix}offscreen`);
189-
}, 50);
187+
mejs.Utils.addClass(qualitiesSelector, `${t.options.classPrefix}offscreen`);
190188
qualityButton.removeAttribute('aria-expanded');
191-
qualitiesList.style.display = `none`;
189+
qualityButton.setAttribute('aria-expanded', 'false');
192190
qualityButton.focus();
193191
isOffScreen = true;
194192
}
195193

196194
function showSelector() {
197195
mejs.Utils.removeClass(qualitiesSelector, `${t.options.classPrefix}offscreen`);
198-
qualitiesList.style.display = `block`;
199196
qualitiesSelector.style.height = `${qualitiesSelector.querySelector('ul').offsetHeight}px`;
200197
qualitiesSelector.style.top = `${(-1 * parseFloat(qualitiesSelector.offsetHeight))}px`;
201198
qualityButton.setAttribute('aria-expanded', 'true');

0 commit comments

Comments
 (0)