diff --git a/.gitignore b/.gitignore index 74d80ed9482fe5f9e62cf973bba5e8d042b0653d..953682c1b73708d0a4a17503fd0cb2b5c30e8cce 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ Homestead.yaml .orig .vscode langfiles.zip +npm-debug.log # The Files created by Webpack in the build process /public/**/*.css !/public/fonts/arimo/stylesheet.css @@ -19,4 +20,4 @@ langfiles.zip /.buildpath /.project -composer.lock \ No newline at end of file +composer.lock diff --git a/resources/js/keyboardNavigation.js b/resources/js/keyboardNavigation.js index 3aabb1f16674a5347fd4303161639c6b9b04dc71..a8ee22ef10073e6cd85dda8d9c4c13a983fc911a 100644 --- a/resources/js/keyboardNavigation.js +++ b/resources/js/keyboardNavigation.js @@ -1,10 +1,10 @@ var ctrlInfo = false; // Flag used for checking if the user was shown the keyboard control information -/* var currentElement = [ - ["Results", false] -]; -*/ -var currentResultIndex = 1; // stores result which was focused last - +var currentResultIndex = 1; // stores index of result which was focused last +var currentElementData = { // Object used for storing currently focused element and element type (e.g. anchor tag or result div) + element: $("div.result").first(), + selector: "div.result", + type: "result" +}; $(document).on('keydown', function(e) { e = e || window.event; @@ -12,51 +12,54 @@ $(document).on('keydown', function(e) { if (e.keyCode == '9') { e.preventDefault(); tabKeyPressed(); + // Check for ENTER keypress } else if (e.keyCode == '13') { + e.preventDefault(); enterKeyPressed(); } }); +function setFocus(e, selector, type) { + currentElementData.element = e; + currentElementData.selector = selector; + currentElementData.type = type; + currentElementData.element.focus(); + console.log(currentElementData); +} + function tabKeyPressed() { if(!ctrlInfo) { ctrlInfo = true; showInfoBox(); } else { - focusNextElement($(":focus")); + focusNextElement(); } } function enterKeyPressed() { - if($(":focus").hasClass("result")) { - //$(":focus").children("a").focus(); - console.log($(":focus").children("a")); - } + if(currentElementData.type = "result") { + // setFocus(currentElementData.element, "link") + } } function showInfoBox() { - infoBox = $("#keyboard-ctrl-info"); - infoBox.show(); - infoBox.focus(); + $("#keyboard-ctrl-info").show(); + setFocus($("#keyboard-ctrl-info"), "#keyboard-ctrl-info", "infobox"); } -function focusNextElement(currentFocus) { - if(currentFocus.hasClass("result")) { - focusNextResult(currentFocus); +function focusNextElement() { + if(currentElementData.type === "result") { + focusNextResult(); } else { - focusResult(); + setFocus($("div.result").not('.ad').first(), "div.result" , "result"); } } -function focusResult() { - $("div[data-index='"+ currentResultIndex + "'").focus(); - n = $(".result").length; - currentResultIndex = 1 + currentResultIndex % n; - console.log(currentResultIndex + " - " + n); -} -function focusNextResult(currentFocus) { - if(currentFocus.next().length > 0) { - currentFocus.next().focus(); + +function focusNextResult() { + if(currentElementData.element.next().length > 0) { + setFocus(currentElementData.element.next(), '' , "result"); } else { - $("div[.result]").first().focus(); + setFocus($("div.result").not('.ad').first(), "div.result" , "result"); } -} \ No newline at end of file +}