Skip to content

Commit afb081f

Browse files
committed
release 2.6.2
1 parent 79f7aae commit afb081f

8 files changed

Lines changed: 920 additions & 162 deletions

File tree

changelog.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
# Version History
22

3+
## *2.6.2 (2021/11/04)*
4+
5+
### QUALITY PLUGIN
6+
Improvements to the last quality-plugin update:
7+
* Adds qualities-selected-input class to selected input element and removes it from formerly selected
8+
* Removes focus from the container for the input elements and now directly focuses the currently selected input element, reducing necessary tabs by one
9+
310
## *2.6.1 (2021/10/08)*
411

5-
### QUALITY PLUGIN
12+
### QUALITY PLUGIN
613
* Adds aria-controls and aria-expanded status.
714
* Rewrites EventListeners to handle showing/hiding the flyout with keyboard and mouse events.
815
* Adding focus highlighting

dist/frameNavigator/frameNavigator.js

Lines changed: 280 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,286 @@
368368
* Copyright 2010-2017, John Dyer (http://j.hn/)
369369
* License: MIT
370370
*
371+
*//*!
372+
* MediaElement.js
373+
* http://www.mediaelementjs.com/
374+
*
375+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
376+
* using a variety of technologies (pure JavaScript, Flash, iframe)
377+
*
378+
* Copyright 2010-2017, John Dyer (http://j.hn/)
379+
* License: MIT
380+
*
381+
*//*!
382+
* MediaElement.js
383+
* http://www.mediaelementjs.com/
384+
*
385+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
386+
* using a variety of technologies (pure JavaScript, Flash, iframe)
387+
*
388+
* Copyright 2010-2017, John Dyer (http://j.hn/)
389+
* License: MIT
390+
*
391+
*//*!
392+
* MediaElement.js
393+
* http://www.mediaelementjs.com/
394+
*
395+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
396+
* using a variety of technologies (pure JavaScript, Flash, iframe)
397+
*
398+
* Copyright 2010-2017, John Dyer (http://j.hn/)
399+
* License: MIT
400+
*
401+
*//*!
402+
* MediaElement.js
403+
* http://www.mediaelementjs.com/
404+
*
405+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
406+
* using a variety of technologies (pure JavaScript, Flash, iframe)
407+
*
408+
* Copyright 2010-2017, John Dyer (http://j.hn/)
409+
* License: MIT
410+
*
411+
*//*!
412+
* MediaElement.js
413+
* http://www.mediaelementjs.com/
414+
*
415+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
416+
* using a variety of technologies (pure JavaScript, Flash, iframe)
417+
*
418+
* Copyright 2010-2017, John Dyer (http://j.hn/)
419+
* License: MIT
420+
*
421+
*//*!
422+
* MediaElement.js
423+
* http://www.mediaelementjs.com/
424+
*
425+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
426+
* using a variety of technologies (pure JavaScript, Flash, iframe)
427+
*
428+
* Copyright 2010-2017, John Dyer (http://j.hn/)
429+
* License: MIT
430+
*
431+
*//*!
432+
* MediaElement.js
433+
* http://www.mediaelementjs.com/
434+
*
435+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
436+
* using a variety of technologies (pure JavaScript, Flash, iframe)
437+
*
438+
* Copyright 2010-2017, John Dyer (http://j.hn/)
439+
* License: MIT
440+
*
441+
*//*!
442+
* MediaElement.js
443+
* http://www.mediaelementjs.com/
444+
*
445+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
446+
* using a variety of technologies (pure JavaScript, Flash, iframe)
447+
*
448+
* Copyright 2010-2017, John Dyer (http://j.hn/)
449+
* License: MIT
450+
*
451+
*//*!
452+
* MediaElement.js
453+
* http://www.mediaelementjs.com/
454+
*
455+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
456+
* using a variety of technologies (pure JavaScript, Flash, iframe)
457+
*
458+
* Copyright 2010-2017, John Dyer (http://j.hn/)
459+
* License: MIT
460+
*
461+
*//*!
462+
* MediaElement.js
463+
* http://www.mediaelementjs.com/
464+
*
465+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
466+
* using a variety of technologies (pure JavaScript, Flash, iframe)
467+
*
468+
* Copyright 2010-2017, John Dyer (http://j.hn/)
469+
* License: MIT
470+
*
471+
*//*!
472+
* MediaElement.js
473+
* http://www.mediaelementjs.com/
474+
*
475+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
476+
* using a variety of technologies (pure JavaScript, Flash, iframe)
477+
*
478+
* Copyright 2010-2017, John Dyer (http://j.hn/)
479+
* License: MIT
480+
*
481+
*//*!
482+
* MediaElement.js
483+
* http://www.mediaelementjs.com/
484+
*
485+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
486+
* using a variety of technologies (pure JavaScript, Flash, iframe)
487+
*
488+
* Copyright 2010-2017, John Dyer (http://j.hn/)
489+
* License: MIT
490+
*
491+
*//*!
492+
* MediaElement.js
493+
* http://www.mediaelementjs.com/
494+
*
495+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
496+
* using a variety of technologies (pure JavaScript, Flash, iframe)
497+
*
498+
* Copyright 2010-2017, John Dyer (http://j.hn/)
499+
* License: MIT
500+
*
501+
*//*!
502+
* MediaElement.js
503+
* http://www.mediaelementjs.com/
504+
*
505+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
506+
* using a variety of technologies (pure JavaScript, Flash, iframe)
507+
*
508+
* Copyright 2010-2017, John Dyer (http://j.hn/)
509+
* License: MIT
510+
*
511+
*//*!
512+
* MediaElement.js
513+
* http://www.mediaelementjs.com/
514+
*
515+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
516+
* using a variety of technologies (pure JavaScript, Flash, iframe)
517+
*
518+
* Copyright 2010-2017, John Dyer (http://j.hn/)
519+
* License: MIT
520+
*
521+
*//*!
522+
* MediaElement.js
523+
* http://www.mediaelementjs.com/
524+
*
525+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
526+
* using a variety of technologies (pure JavaScript, Flash, iframe)
527+
*
528+
* Copyright 2010-2017, John Dyer (http://j.hn/)
529+
* License: MIT
530+
*
531+
*//*!
532+
* MediaElement.js
533+
* http://www.mediaelementjs.com/
534+
*
535+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
536+
* using a variety of technologies (pure JavaScript, Flash, iframe)
537+
*
538+
* Copyright 2010-2017, John Dyer (http://j.hn/)
539+
* License: MIT
540+
*
541+
*//*!
542+
* MediaElement.js
543+
* http://www.mediaelementjs.com/
544+
*
545+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
546+
* using a variety of technologies (pure JavaScript, Flash, iframe)
547+
*
548+
* Copyright 2010-2017, John Dyer (http://j.hn/)
549+
* License: MIT
550+
*
551+
*//*!
552+
* MediaElement.js
553+
* http://www.mediaelementjs.com/
554+
*
555+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
556+
* using a variety of technologies (pure JavaScript, Flash, iframe)
557+
*
558+
* Copyright 2010-2017, John Dyer (http://j.hn/)
559+
* License: MIT
560+
*
561+
*//*!
562+
* MediaElement.js
563+
* http://www.mediaelementjs.com/
564+
*
565+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
566+
* using a variety of technologies (pure JavaScript, Flash, iframe)
567+
*
568+
* Copyright 2010-2017, John Dyer (http://j.hn/)
569+
* License: MIT
570+
*
571+
*//*!
572+
* MediaElement.js
573+
* http://www.mediaelementjs.com/
574+
*
575+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
576+
* using a variety of technologies (pure JavaScript, Flash, iframe)
577+
*
578+
* Copyright 2010-2017, John Dyer (http://j.hn/)
579+
* License: MIT
580+
*
581+
*//*!
582+
* MediaElement.js
583+
* http://www.mediaelementjs.com/
584+
*
585+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
586+
* using a variety of technologies (pure JavaScript, Flash, iframe)
587+
*
588+
* Copyright 2010-2017, John Dyer (http://j.hn/)
589+
* License: MIT
590+
*
591+
*//*!
592+
* MediaElement.js
593+
* http://www.mediaelementjs.com/
594+
*
595+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
596+
* using a variety of technologies (pure JavaScript, Flash, iframe)
597+
*
598+
* Copyright 2010-2017, John Dyer (http://j.hn/)
599+
* License: MIT
600+
*
601+
*//*!
602+
* MediaElement.js
603+
* http://www.mediaelementjs.com/
604+
*
605+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
606+
* using a variety of technologies (pure JavaScript, Flash, iframe)
607+
*
608+
* Copyright 2010-2017, John Dyer (http://j.hn/)
609+
* License: MIT
610+
*
611+
*//*!
612+
* MediaElement.js
613+
* http://www.mediaelementjs.com/
614+
*
615+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
616+
* using a variety of technologies (pure JavaScript, Flash, iframe)
617+
*
618+
* Copyright 2010-2017, John Dyer (http://j.hn/)
619+
* License: MIT
620+
*
621+
*//*!
622+
* MediaElement.js
623+
* http://www.mediaelementjs.com/
624+
*
625+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
626+
* using a variety of technologies (pure JavaScript, Flash, iframe)
627+
*
628+
* Copyright 2010-2017, John Dyer (http://j.hn/)
629+
* License: MIT
630+
*
631+
*//*!
632+
* MediaElement.js
633+
* http://www.mediaelementjs.com/
634+
*
635+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
636+
* using a variety of technologies (pure JavaScript, Flash, iframe)
637+
*
638+
* Copyright 2010-2017, John Dyer (http://j.hn/)
639+
* License: MIT
640+
*
641+
*//*!
642+
* MediaElement.js
643+
* http://www.mediaelementjs.com/
644+
*
645+
* Wrapper that mimics native HTML5 MediaElement (audio and video)
646+
* using a variety of technologies (pure JavaScript, Flash, iframe)
647+
*
648+
* Copyright 2010-2017, John Dyer (http://j.hn/)
649+
* License: MIT
650+
*
371651
*/(function e(t, n, r) { function s(o, u) { if (!n[o]) { if (!t[o]) { var a = typeof require == "function" && require; if (!u && a) return a(o, !0); if (i) return i(o, !0); var f = new Error("Cannot find module '" + o + "'"); throw f.code = "MODULE_NOT_FOUND", f } var l = n[o] = { exports: {} }; t[o][0].call(l.exports, function (e) { var n = t[o][1][e]; return s(n ? n : e) }, l, l.exports, e, t, n, r) } return n[o].exports } var i = typeof require == "function" && require; for (var o = 0; o < r.length; o++)s(r[o]); return s })({
372652
1: [function (_dereq_, module, exports) {
373653
"use strict";

dist/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;

dist/quality/quality.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ Object.assign(MediaElementPlayer.prototype, {
131131
var src = value[0],
132132
quality = key,
133133
inputId = t.id + '-qualities-' + quality;
134-
player.qualitiesContainer.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'qualities-selector-list-item">' + ('<input class="' + t.options.classPrefix + 'qualities-selector-input" type="radio" name="' + t.id + '_qualities" disabled="disabled"') + ('value="' + quality + '" id="' + inputId + '" ' + (quality === defaultValue ? ' checked="checked"' : '') + ' />') + ('<label for="' + inputId + '" class="' + t.options.classPrefix + 'qualities-selector-label ' + (quality === defaultValue ? ' ' + t.options.classPrefix + 'qualities-selected' : '') + '">') + ((src.title || quality) + ' </label></li>');
134+
player.qualitiesContainer.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'qualities-selector-list-item">' + ('<input class="' + t.options.classPrefix + 'qualities-selector-input ' + (quality === defaultValue ? t.options.classPrefix + 'qualities-selected-input' : '') + '" type="radio" name="' + t.id + '_qualities" disabled="disabled" ') + ('value="' + quality + '" id="' + inputId + '" ' + (quality === defaultValue ? ' checked="checked"' : '') + ' />') + ('<label for="' + inputId + '" class="' + t.options.classPrefix + 'qualities-selector-label ' + (quality === defaultValue ? ' ' + t.options.classPrefix + 'qualities-selected' : '') + '">') + ((src.title || quality) + ' </label></li>');
135135
}
136136
});
137137

@@ -145,7 +145,6 @@ Object.assign(MediaElementPlayer.prototype, {
145145

146146
function hideSelector() {
147147
mejs.Utils.addClass(qualitiesSelector, t.options.classPrefix + 'offscreen');
148-
qualityButton.removeAttribute('aria-expanded');
149148
qualityButton.setAttribute('aria-expanded', 'false');
150149
qualityButton.focus();
151150
isHidden = true;
@@ -156,7 +155,7 @@ Object.assign(MediaElementPlayer.prototype, {
156155
qualitiesSelector.style.height = qualitiesSelector.querySelector('ul').offsetHeight + 'px';
157156
qualitiesSelector.style.top = -1 * parseFloat(qualitiesSelector.offsetHeight) + 'px';
158157
qualityButton.setAttribute('aria-expanded', 'true');
159-
qualitiesList.focus();
158+
qualitiesSelector.querySelector('.' + t.options.classPrefix + 'qualities-selected-input').focus();
160159
isHidden = false;
161160
}
162161

@@ -330,17 +329,19 @@ Object.assign(MediaElementPlayer.prototype, {
330329
var newQuality = self.value;
331330
currentQuality = newQuality;
332331

333-
var selected = player.qualitiesContainer.querySelectorAll('.' + t.options.classPrefix + 'qualities-selected');
334-
for (var i = 0, total = selected.length; i < total; i++) {
335-
mejs.Utils.removeClass(selected[i], t.options.classPrefix + 'qualities-selected');
332+
var formerSelected = player.qualitiesContainer.querySelectorAll('.' + t.options.classPrefix + 'qualities-selected');
333+
for (var i = 0, total = formerSelected.length; i < total; i++) {
334+
mejs.Utils.removeClass(formerSelected[i], t.options.classPrefix + 'qualities-selected');
335+
formerSelected[i].parentElement.querySelector('input').classList.remove(t.options.classPrefix + 'qualities-selected-input');
336336
}
337337

338338
self.checked = true;
339-
var siblings = mejs.Utils.siblings(self, function (el) {
339+
var currentSelected = mejs.Utils.siblings(self, function (el) {
340340
return mejs.Utils.hasClass(el, t.options.classPrefix + 'qualities-selector-label');
341341
});
342-
for (var j = 0, _total2 = siblings.length; j < _total2; j++) {
343-
mejs.Utils.addClass(siblings[j], t.options.classPrefix + 'qualities-selected');
342+
for (var j = 0, _total2 = currentSelected.length; j < _total2; j++) {
343+
mejs.Utils.addClass(currentSelected[j], t.options.classPrefix + 'qualities-selected');
344+
currentSelected[j].parentElement.querySelector('input').classList.add(t.options.classPrefix + 'qualities-selected-input');
344345
}
345346

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

dist/quality/quality.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)