mirror of
https://github.com/JeremyLikness/vanillajs-deck
synced 2025-12-15 10:43:34 +00:00
Add key press handler
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import { registerDeck } from "./navigator.js"
|
||||
import { registerControls } from "./controls.js"
|
||||
import { registerKeyHandler } from "./keyhandler.js"
|
||||
|
||||
const app = async () => {
|
||||
|
||||
registerDeck();
|
||||
registerControls();
|
||||
registerKeyHandler();
|
||||
};
|
||||
|
||||
document.addEventListener("DOMContentLoaded", app);
|
||||
|
||||
29
js/keyhandler.js
Normal file
29
js/keyhandler.js
Normal file
@@ -0,0 +1,29 @@
|
||||
class KeyHandler extends HTMLElement {
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this._deck = null;
|
||||
}
|
||||
|
||||
static get observedAttributes() {
|
||||
return ["deck"];
|
||||
}
|
||||
|
||||
async attributeChangedCallback(attrName, oldVal, newVal) {
|
||||
if (attrName === "deck") {
|
||||
if (oldVal !== newVal) {
|
||||
this._deck = document.getElementById(newVal);
|
||||
this._deck.parentElement.addEventListener("keydown", key => {
|
||||
if (key.keyCode == 39 || key.keyCode == 32) {
|
||||
this._deck.next();
|
||||
}
|
||||
else if (key.keyCode == 37) {
|
||||
this._deck.previous();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const registerKeyHandler = () => customElements.define('key-handler', KeyHandler);
|
||||
Reference in New Issue
Block a user