From b99fdc8c47b73e6c464b7a64074eaa2cf727e7cf Mon Sep 17 00:00:00 2001 From: Antonio Laguna Date: Sat, 28 Jan 2017 17:17:10 +0100 Subject: [PATCH] Moving plugins, adding Keyboard integration --- src/modules/webslides.js | 5 +-- src/{modules => plugins}/hash.js | 0 src/plugins/keyboard.js | 42 ++++++++++++++++++++++++++ src/{modules => plugins}/navigation.js | 0 src/{modules => plugins}/plugins.js | 4 ++- src/utils/keys.js | 10 ++++++ 6 files changed, 58 insertions(+), 3 deletions(-) rename src/{modules => plugins}/hash.js (100%) create mode 100644 src/plugins/keyboard.js rename src/{modules => plugins}/navigation.js (100%) rename src/{modules => plugins}/plugins.js (65%) create mode 100644 src/utils/keys.js diff --git a/src/modules/webslides.js b/src/modules/webslides.js index 028b946..4e31f55 100644 --- a/src/modules/webslides.js +++ b/src/modules/webslides.js @@ -1,4 +1,4 @@ -import Plugins from './plugins'; +import Plugins from '../plugins/plugins'; import Slide from './slide'; import DOM from '../utils/dom'; import ScrollHelper from '../utils/scroll-to'; @@ -9,7 +9,8 @@ const CLASSES = { const PLUGINS = { 'nav': Plugins.Navigation, - 'hash': Plugins.Hash + 'hash': Plugins.Hash, + 'keyboard': Plugins.Keyboard }; export default class WebSlides { diff --git a/src/modules/hash.js b/src/plugins/hash.js similarity index 100% rename from src/modules/hash.js rename to src/plugins/hash.js diff --git a/src/plugins/keyboard.js b/src/plugins/keyboard.js new file mode 100644 index 0000000..d231e33 --- /dev/null +++ b/src/plugins/keyboard.js @@ -0,0 +1,42 @@ +import Keys from '../utils/keys'; + +export default class Keyboard { + /** + * @param {WebSlides} wsInstance The WebSlides instance + */ + constructor(wsInstance) { + /** + * @type {WebSlides} + * @private + */ + this.ws_ = wsInstance; + + document.addEventListener("keydown", this.onKeyPress_.bind(this), false); + } + + onKeyPress_(event) { + let method; + + if (event.which === Keys.SPACE) { + method = this.ws_.goNext; + } else { + if (this.ws_.isVertical) { + if (event.which === Keys.DOWN) { + method = this.ws_.goNext; + } else if (event.which === Keys.UP) { + method = this.ws_.goPrev; + } + } else { + if (event.which === Keys.RIGHT) { + method = this.ws_.goNext; + } else if (event.which === Keys.LEFT) { + method = this.ws_.goPrev; + } + } + } + + if (method) { + method.call(this.ws_); + } + } +} diff --git a/src/modules/navigation.js b/src/plugins/navigation.js similarity index 100% rename from src/modules/navigation.js rename to src/plugins/navigation.js diff --git a/src/modules/plugins.js b/src/plugins/plugins.js similarity index 65% rename from src/modules/plugins.js rename to src/plugins/plugins.js index 29ce5ef..3bdb403 100644 --- a/src/modules/plugins.js +++ b/src/plugins/plugins.js @@ -1,7 +1,9 @@ import Navigation from './navigation'; import Hash from './hash'; +import Keyboard from './keyboard'; export default { Navigation, - Hash + Hash, + Keyboard }; diff --git a/src/utils/keys.js b/src/utils/keys.js new file mode 100644 index 0000000..02c5a4a --- /dev/null +++ b/src/utils/keys.js @@ -0,0 +1,10 @@ +const Keys = { + ENTER: 13, + SPACE: 32, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40 +}; + +export default Keys;