Commit 7b8b1f9d by Jareer Ahsan

Added keycodes dict for readability

parent 05b89f05
...@@ -6,6 +6,17 @@ $(document).ready(function() { ...@@ -6,6 +6,17 @@ $(document).ready(function() {
var dropdownMenu = $('.dropdown-menu'); var dropdownMenu = $('.dropdown-menu');
var menuItems = dropdownMenu.find('a'); var menuItems = dropdownMenu.find('a');
var keyCodes = {
leftArrow: 37,
upArrow: 38,
rightArrow: 39,
downArrow: 40,
tab: 9,
escape: 27,
space: 32
};
// bind menu toggle click for later use // bind menu toggle click for later use
dropdownMenuToggle.toggle(function() { dropdownMenuToggle.toggle(function() {
dropdownMenu.addClass('expanded').find('a').first().focus(); dropdownMenu.addClass('expanded').find('a').first().focus();
...@@ -18,13 +29,14 @@ $(document).ready(function() { ...@@ -18,13 +29,14 @@ $(document).ready(function() {
// catch keypresses when focused on dropdownMenuToggle (we only care about spacebar keypresses here) // catch keypresses when focused on dropdownMenuToggle (we only care about spacebar keypresses here)
dropdownMenuToggle.on('keydown', function(event) { dropdownMenuToggle.on('keydown', function(event) {
// if space key pressed // if space key pressed
if (event.which == 32) { if (event.which === keyCodes.space) {
dropdownMenuToggle.click(); dropdownMenuToggle.click();
event.preventDefault(); event.preventDefault();
} }
}); });
// catch keypresses when inside dropdownMenu (we want to catch spacebar; escape; up arrow or shift+tab; and down arrow or tab) // catch keypresses when inside dropdownMenu
// (we want to catch spacebar; escape; up arrow or shift+tab; and down arrow or tab)
dropdownMenu.on('keydown', function(event) { dropdownMenu.on('keydown', function(event) {
catchKeyPress($(this), event); catchKeyPress($(this), event);
}); });
...@@ -43,19 +55,20 @@ $(document).ready(function() { ...@@ -43,19 +55,20 @@ $(document).ready(function() {
var itemToFocusIndex; var itemToFocusIndex;
// if space key pressed // if space key pressed
if (event.which == 32) { if (event.which === keyCodes.space) {
dropdownMenuToggle.click(); dropdownMenuToggle.click();
event.preventDefault(); event.preventDefault();
} }
// if escape key pressed // if escape key pressed
if (event.which == 27) { if (event.which === keyCodes.escape) {
dropdownMenuToggle.click(); dropdownMenuToggle.click();
event.preventDefault(); event.preventDefault();
} }
// if up arrow key pressed or shift+tab else down key or tab is pressed // if up arrow key pressed or shift+tab else down key or tab is pressed
if (event.which === 38 || (event.which === 9 && event.shiftKey)) { if (event.which === keyCodes.upArrow || event.which === keyCodes.leftArrow ||
(event.which === keyCodes.tab && event.shiftKey)) {
// if first item go to last // if first item go to last
if (focusedItemIndex === 0) { if (focusedItemIndex === 0) {
menuItems.last().focus(); menuItems.last().focus();
...@@ -64,7 +77,8 @@ $(document).ready(function() { ...@@ -64,7 +77,8 @@ $(document).ready(function() {
menuItems.get(itemToFocusIndex).focus(); menuItems.get(itemToFocusIndex).focus();
} }
event.preventDefault(); event.preventDefault();
} else if (event.which === 40 || event.which === 9) { } else if (event.which === keyCodes.downArrow || event.which === keyCodes.rightArrow ||
event.which === keyCodes.tab) {
// if last item go to first // if last item go to first
if (focusedItemIndex === numberOfMenuItems - 1) { if (focusedItemIndex === numberOfMenuItems - 1) {
menuItems.first().focus(); menuItems.first().focus();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment