Skip to content

Commit 3610b8d

Browse files
committed
Focusing checked element in quality plugin
* with the last update one was focusing the unordered list and not the checked/selected element * with this update focus directly goes to the checked/selected item which further reduces unnecessary tabs by one
1 parent 9651e3f commit 3610b8d

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

src/quality/quality.css

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@
3131
width: 3.75rem;
3232
}
3333

34-
.mejs__qualities-selector:focus-within {
35-
border-color: #fff;
36-
}
37-
3834
.mejs__qualities-selector ul,
3935
.mejs-qualities-selector ul {
4036
display: block;

src/quality/quality.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ Object.assign(MediaElementPlayer.prototype, {
165165
inputId = `${t.id}-qualities-${quality}`
166166
;
167167
player.qualitiesContainer.querySelector('ul').innerHTML += `<li class="${t.options.classPrefix}qualities-selector-list-item">` +
168-
`<input class="${t.options.classPrefix}qualities-selector-input" type="radio" name="${t.id}_qualities" disabled="disabled"` +
168+
`<input class="${t.options.classPrefix}qualities-selector-input ${(quality === defaultValue ? `${t.options.classPrefix}qualities-selected-input` : '')}" type="radio" name="${t.id}_qualities" disabled="disabled" ` +
169169
`value="${quality}" id="${inputId}" ${(quality === defaultValue ? ' checked="checked"' : '')} />` +
170170
`<label for="${inputId}" class="${t.options.classPrefix}qualities-selector-label ${(quality === defaultValue ? ` ${t.options.classPrefix}qualities-selected` : '')}">` +
171171
`${src.title || quality} </label></li>`;
@@ -196,7 +196,9 @@ Object.assign(MediaElementPlayer.prototype, {
196196
qualitiesSelector.style.height = `${qualitiesSelector.querySelector('ul').offsetHeight}px`;
197197
qualitiesSelector.style.top = `${(-1 * parseFloat(qualitiesSelector.offsetHeight))}px`;
198198
qualityButton.setAttribute('aria-expanded', 'true');
199-
qualitiesList.focus();
199+
const selectedLabel = qualitiesSelector.querySelector('.' + t.options.classPrefix + 'qualities-selected');
200+
const selectedInput = selectedLabel.parentElement.querySelector('input');
201+
selectedInput.focus();
200202
isHidden = false;
201203
}
202204

@@ -429,15 +431,17 @@ Object.assign(MediaElementPlayer.prototype, {
429431
;
430432
currentQuality = newQuality;
431433

432-
const selected = player.qualitiesContainer.querySelectorAll(`.${t.options.classPrefix}qualities-selected`);
433-
for (let i = 0, total = selected.length; i < total; i++) {
434-
mejs.Utils.removeClass(selected[i], `${t.options.classPrefix}qualities-selected`);
434+
const formerSelected = player.qualitiesContainer.querySelectorAll(`.${t.options.classPrefix}qualities-selected`);
435+
for (let i = 0, total = formerSelected.length; i < total; i++) {
436+
mejs.Utils.removeClass(formerSelected[i], `${t.options.classPrefix}qualities-selected`);
437+
formerSelected[i].parentElement.querySelector('input').classList.remove(`${t.options.classPrefix}qualities-selected-input`);
435438
}
436439

437440
self.checked = true;
438-
const siblings = mejs.Utils.siblings(self, (el) => mejs.Utils.hasClass(el, `${t.options.classPrefix}qualities-selector-label`));
439-
for (let j = 0, total = siblings.length; j < total; j++) {
440-
mejs.Utils.addClass(siblings[j], `${t.options.classPrefix}qualities-selected`);
441+
const currentSelected = mejs.Utils.siblings(self, (el) => mejs.Utils.hasClass(el, `${t.options.classPrefix}qualities-selector-label`));
442+
for (let j = 0, total = currentSelected.length; j < total; j++) {
443+
mejs.Utils.addClass(currentSelected[j], `${t.options.classPrefix}qualities-selected`);
444+
currentSelected[j].parentElement.querySelector('input').classList.add(`${t.options.classPrefix}qualities-selected-input`);
441445
}
442446

443447
player.qualitiesContainer.querySelector('button').innerHTML = newQuality;

0 commit comments

Comments
 (0)