From 53d690c21270462da7868ba83b65d5b061f498de Mon Sep 17 00:00:00 2001 From: Ryan Plessner <ryan.plessner@cantinaconsulting.com> Date: Fri, 19 Sep 2014 13:58:19 -0400 Subject: [PATCH] Changed the MenuItem and the Volume Control bar to gain focus when using tab navigation. Previously, they could not be navigated to via the keyboard. Fixs #1517. Tested via manaul cross-browser tests using keyboard navigation (chrome, firefox, safari, and IE 11 ). --- src/css/video-js.less | 8 +++++--- src/js/control-bar/volume-menu-button.js | 6 ++++++ src/js/menu.js | 9 ++++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/css/video-js.less b/src/css/video-js.less index cd2be602d..5c349ac70 100644 --- a/src/css/video-js.less +++ b/src/css/video-js.less @@ -717,7 +717,8 @@ easily in the skin designer. http://designer.videojs.com/ } .vjs-default-skin .vjs-menu { - display: none; + z-index: -1; + display: block; position: absolute; bottom: 0; left: 0em; /* (Width of vjs-menu - width of button) / 2 */ @@ -748,8 +749,9 @@ easily in the skin designer. http://designer.videojs.com/ .box-shadow(-0.2em -0.2em 0.3em rgba(255, 255, 255, 0.2)); } -.vjs-default-skin .vjs-menu-button:hover .vjs-menu { - display: block; +.vjs-default-skin .vjs-menu-button:hover .vjs-menu, +.vjs-default-skin .vjs-menu-button .vjs-visible-menu { + z-index: 1; } .vjs-default-skin .vjs-menu-button ul li { list-style: none; diff --git a/src/js/control-bar/volume-menu-button.js b/src/js/control-bar/volume-menu-button.js index b3a634397..f50eb5b11 100644 --- a/src/js/control-bar/volume-menu-button.js +++ b/src/js/control-bar/volume-menu-button.js @@ -30,6 +30,12 @@ vjs.VolumeMenuButton.prototype.createMenu = function(){ contentElType: 'div' }); var vc = new vjs.VolumeBar(this.player_, vjs.obj.merge({'vertical': true}, this.options_.volumeBar)); + vc.on('focus', function() { + menu.addClass('vjs-visible-menu'); + }); + vc.on('blur', function() { + menu.removeClass('vjs-visible-menu'); + }); menu.addChild(vc); return menu; }; diff --git a/src/js/menu.js b/src/js/menu.js index 55558a9c0..a1b73b402 100644 --- a/src/js/menu.js +++ b/src/js/menu.js @@ -139,9 +139,17 @@ vjs.MenuButton.prototype.createMenu = function(){ this.items = this['createItems'](); if (this.items) { + var focusHandler = function(){ + menu.addClass('vjs-visible-menu'); + }; + var blurHandler = function() { + menu.removeClass('vjs-visible-menu'); + }; // Add menu items to the menu for (var i = 0; i < this.items.length; i++) { menu.addItem(this.items[i]); + this.items[i].on('focus', focusHandler); + this.items[i].on('blur', blurHandler); } } @@ -213,4 +221,3 @@ vjs.MenuButton.prototype.unpressButton = function(){ this.menu.unlockShowing(); this.el_.setAttribute('aria-pressed', false); }; -