diff --git a/src/components/keyboardnavigation.js b/src/components/keyboardnavigation.js new file mode 100644 index 0000000000..bc95e1cd3c --- /dev/null +++ b/src/components/keyboardnavigation.js @@ -0,0 +1,36 @@ +define(['inputmanager', 'focusManager'], function(inputmanager, focusManager) { + 'use strict'; + + console.log("keyboardnavigation"); + + function enable() { + document.addEventListener('keydown', function(e) { + var capture = true; + + switch (e.keyCode) { + case 37: // ArrowLeft + inputmanager.handle('left'); + break; + case 38: // ArrowUp + inputmanager.handle('up'); + break; + case 39: // ArrowRight + inputmanager.handle('right'); + break; + case 40: // ArrowDown + inputmanager.handle('down'); + break; + default: + capture = false; + } + if (capture) { + console.log("Disabling default event handling"); + e.preventDefault(); + } + }); + + } + return { + enable: enable, + }; +}); diff --git a/src/controllers/itemdetailpage.js b/src/controllers/itemdetailpage.js index dbe3e4e5f0..abfdcc459f 100644 --- a/src/controllers/itemdetailpage.js +++ b/src/controllers/itemdetailpage.js @@ -322,6 +322,25 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild itemBirthLocation.classList.remove("hide"), itemBirthLocation.innerHTML = globalize.translate("BirthPlaceValue").replace("{0}", gmap) } else itemBirthLocation.classList.add("hide"); setPeopleHeader(page, item), loading.hide() + + try { + require(["focusManager"], function(focusManager) { + [".btnResume", ".btnPlay"].every(function (cls) { + + var elems = page.querySelectorAll(cls); + + for (var i = 0; i < elems.length; i++) { + if (focusManager.isCurrentlyFocusable(elems[i])) { + focusManager.focus(elems[i]); + return false; + } + } + return true; + }); + }); + } catch (e) { + console.log(e); + } } function logoImageUrl(item, apiClient, options) { diff --git a/src/scripts/site.js b/src/scripts/site.js index a9fc13d9ed..2bcd8615e8 100644 --- a/src/scripts/site.js +++ b/src/scripts/site.js @@ -484,6 +484,9 @@ var AppInfo = {}; onGlobalizeInit(browser); }); }); + require(["keyboardnavigation"], function(keyboardnavigation) { + keyboardnavigation.enable(); + }); }); }); } @@ -877,6 +880,7 @@ var AppInfo = {}; define("serverNotifications", [componentsPath + "/serverNotifications/serverNotifications"], returnFirstDependency); define("appFooter-shared", ["appFooter"], createSharedAppFooter); define("skinManager", [componentsPath + "/skinManager"], returnFirstDependency); + define("keyboardnavigation", [componentsPath + "/keyboardnavigation"], returnFirstDependency); define("connectionManager", [], function () { return ConnectionManager; });