diff --git a/src/js/component.js b/src/js/component.js index e1c157796c..6b60b9596d 100644 --- a/src/js/component.js +++ b/src/js/component.js @@ -1840,8 +1840,10 @@ class Component { * @return {boolean} * If the component can be focused, will be `true`. Otherwise, `false`. */ - getIsFocusable() { - return this.el_.tabIndex >= 0 && !(this.getIsDisabled() || this.getIsExpresslyInert()); + getIsFocusable(el) { + const element = el || this.el_; + + return element.tabIndex >= 0 && !(this.getIsDisabled() || this.getIsExpresslyInert()); } /** diff --git a/src/js/spatial-navigation.js b/src/js/spatial-navigation.js index 2db104c382..08c91e2fa6 100644 --- a/src/js/spatial-navigation.js +++ b/src/js/spatial-navigation.js @@ -188,7 +188,7 @@ class SpatialNavigation extends EventTarget { // If nextFocusedElement is the 'TextTrackSettings' component if (nextFocusedElement.classList.contains('vjs-text-track-settings') && !this.isPaused_) { - this.searchForTrackSelect(); + this.searchForTrackSelect_(); } } @@ -288,7 +288,7 @@ class SpatialNavigation extends EventTarget { * or `null` if no suitable child is found. */ function searchForSuitableChild(node) { - if (component.getIsFocusable() && component.getIsAvailableToBeFocused(node)) { + if (component.getIsFocusable(node) && component.getIsAvailableToBeFocused(node)) { return node; } @@ -537,8 +537,10 @@ class SpatialNavigation extends EventTarget { /** * This gets called by 'handlePlayerBlur_' if 'spatialNavigation' is enabled. * Searches for the first 'TextTrackSelect' inside of modal to focus. + * + * @private */ - searchForTrackSelect() { + searchForTrackSelect_() { const spatialNavigation = this; for (const component of (spatialNavigation.updateFocusableComponents())) { diff --git a/test/unit/spatial-navigation.test.js b/test/unit/spatial-navigation.test.js index 9c0fbb0421..0a28a58bea 100644 --- a/test/unit/spatial-navigation.test.js +++ b/test/unit/spatial-navigation.test.js @@ -476,7 +476,7 @@ QUnit.test('should call `searchForTrackSelect()` if spatial navigation is enable Object.defineProperty(clickEvent, 'relatedTarget', {writable: false, value: element}); Object.defineProperty(clickEvent, 'currentTarget', {writable: false, value: element}); - const trackSelectSpy = sinon.spy(this.spatialNav, 'searchForTrackSelect'); + const trackSelectSpy = sinon.spy(this.spatialNav, 'searchForTrackSelect_'); const textTrackSelectComponent = new TextTrackSelect(this.player, { SelectOptions: ['Option 1', 'Option 2', 'Option 3'],