]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Fix player menu keyboard navigation
authorChocobozzz <me@florianbigard.com>
Fri, 19 Nov 2021 15:21:50 +0000 (16:21 +0100)
committerChocobozzz <me@florianbigard.com>
Fri, 19 Nov 2021 15:21:50 +0000 (16:21 +0100)
client/src/assets/player/videojs-components/settings-menu-button.ts
client/src/assets/player/videojs-components/settings-menu-item.ts
client/src/sass/player/settings-menu.scss

index 50e25c0041c4a728a56e17fd65090f5aff13ca0f..c9990af1ce26c0f140954ba1f466eee62c561793 100644 (file)
@@ -150,6 +150,9 @@ class SettingsButton extends Button {
     this.dialog.show()
 
     this.setDialogSize(this.getComponentSize(this.menu))
+
+    const firstChild = this.menu.children()[0]
+    if (firstChild) firstChild.focus()
   }
 
   hideDialog () {
index 67e71b4e2399b5ce20f765cd1bdd77d38f0e3fa0..31d42c456dabd73236e8b68fbb0b6189afff90f6 100644 (file)
@@ -101,7 +101,7 @@ class SettingsMenuItem extends MenuItem {
     if (event.type === 'tap') {
       target = event.target
     } else {
-      target = event.currentTarget
+      target = event.currentTarget || event.target
     }
 
     if (target?.classList.contains('vjs-back-button')) {
@@ -124,7 +124,8 @@ class SettingsMenuItem extends MenuItem {
    */
   createEl () {
     const el = videojs.dom.createEl('li', {
-      className: 'vjs-menu-item'
+      className: 'vjs-menu-item',
+      tabIndex: -1
     })
 
     this.settingsSubMenuTitleEl_ = videojs.dom.createEl('div', {
@@ -170,6 +171,9 @@ class SettingsMenuItem extends MenuItem {
       }, 0)
 
       this.settingsButton.setDialogSize(this.size)
+
+      const firstChild = this.subMenu.menu.children()[0]
+      if (firstChild) firstChild.focus()
     } else {
       videojs.dom.addClass(this.settingsSubMenuEl_, 'vjs-hidden')
     }
@@ -244,6 +248,9 @@ class SettingsMenuItem extends MenuItem {
       // this triggers CSS Transition event
       this.setMargin()
       mainMenuEl.style.opacity = '1'
+
+      const firstChild = this.mainMenu.children()[0]
+      if (firstChild) firstChild.focus()
     }, 0)
   }
 
index e64e05de5c1f97cb2eb43f3be9ce3ae97df7887c..9932fc8c899742a394728191c3195553aacef854 100644 (file)
@@ -146,7 +146,6 @@ $setting-transition-easing: ease-out;
           padding: 5px 8px;
 
           &.vjs-back-button {
-            background-color: inherit;
             padding: 8px 8px 13px 12px;
             margin-bottom: 5px;
             border-bottom: 1px solid #808080;
@@ -164,6 +163,10 @@ $setting-transition-easing: ease-out;
             color: inherit;
             position: relative;
 
+            &:focus {
+              background-color: rgba(115, 133, 159, 0.5);
+            }
+
             &::before {
               @include icon(15px);