summaryrefslogtreecommitdiff
path: root/wwwroot
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2023-09-08 02:26:32 +1000
committerJake Mannens <jake@asger.xyz>2025-08-20 01:21:04 +1000
commit9d651759bc8757773d89356ad15dba5566e003e1 (patch)
treee96611b11a448f0669776ed8598751c08ea42387 /wwwroot
parent77b904b25aa10129e9d093ec3982642616ae7f31 (diff)
Added framework for routing keyboard events
Diffstat (limited to 'wwwroot')
-rw-r--r--wwwroot/js/dialog.js10
-rw-r--r--wwwroot/js/keyboard.js18
2 files changed, 28 insertions, 0 deletions
diff --git a/wwwroot/js/dialog.js b/wwwroot/js/dialog.js
index 065014a..418962f 100644
--- a/wwwroot/js/dialog.js
+++ b/wwwroot/js/dialog.js
@@ -66,3 +66,13 @@ function bumpDialog(element) {
for(var d of dialogs)
d.style.zIndex = z++;
}
+
+function dialogAddObjectReference(element, dialogObject) {
+ if(!window.dialogObjects)
+ window.dialogObjects = []
+
+ window.dialogObjects.push({
+ element: element,
+ dialogObject: dialogObject
+ });
+}
diff --git a/wwwroot/js/keyboard.js b/wwwroot/js/keyboard.js
new file mode 100644
index 0000000..9d06b75
--- /dev/null
+++ b/wwwroot/js/keyboard.js
@@ -0,0 +1,18 @@
+async function keyDownHandler(e) {
+ e.preventDefault();
+
+ var element = Array.from(document.querySelectorAll('div.dialog'))
+ .filter(e => e.style.visibility == 'visible')
+ .map(e => ({ element: e, zIndex: parseInt(e.style.zIndex) }))
+ .sort((a, b) => b.zIndex - a.zIndex)
+ .map(e => e.element)[0];
+
+ if(element) {
+ await window.dialogObjects
+ .find(d => d.element == element)
+ .dialogObject
+ .invokeMethodAsync('KeyHandler', e.key);
+ }
+}
+
+window.onload = () => document.onkeydown = keyDownHandler; \ No newline at end of file