impressive refactoring of slide selection - getting closer to API

This commit is contained in:
Bartek Szopka
2012-01-17 22:32:30 +01:00
parent d2ce96a1f3
commit da84694fdb

View File

@@ -251,32 +251,43 @@
active = el; active = el;
return el; return el;
} };
var selectNext = function () {
var next = active;
next = steps.indexOf( active ) - 1;
next = next >= 0 ? steps[ next ] : steps[ steps.length-1 ];
return select(next);
};
var selectPrev = function () {
var prev = active;
prev = steps.indexOf( active ) + 1;
prev = prev < steps.length ? steps[ prev ] : steps[ 0 ];
return select(prev);
};
// EVENTS // EVENTS
document.addEventListener("keydown", function ( event ) { document.addEventListener("keydown", function ( event ) {
if ( event.keyCode == 9 || ( event.keyCode >= 32 && event.keyCode <= 34 ) || (event.keyCode >= 37 && event.keyCode <= 40) ) { if ( event.keyCode == 9 || ( event.keyCode >= 32 && event.keyCode <= 34 ) || (event.keyCode >= 37 && event.keyCode <= 40) ) {
var next = active;
switch( event.keyCode ) { switch( event.keyCode ) {
case 33: ; // pg up case 33: ; // pg up
case 37: ; // left case 37: ; // left
case 38: // up case 38: // up
next = steps.indexOf( active ) - 1; selectNext();
next = next >= 0 ? steps[ next ] : steps[ steps.length-1 ];
break; break;
case 9: ; // tab case 9: ; // tab
case 32: ; // space case 32: ; // space
case 34: ; // pg down case 34: ; // pg down
case 39: ; // right case 39: ; // right
case 40: // down case 40: // down
next = steps.indexOf( active ) + 1; selectPrev();
next = next < steps.length ? steps[ next ] : steps[ 0 ];
break; break;
} }
select(next);
event.preventDefault(); event.preventDefault();
} }
}, false); }, false);