← back to Wallco Ai
feat(/designs): keyboard shortcut '/' focuses search (GH/X/Slack pattern); Esc blurs; ignored when user is typing in another input
7bbdf26c5d2d77ffe9564ec4d92e4dd8859522ba · 2026-05-14 09:36:47 -0700 · SteveStudio2
Files touched
Diff
commit 7bbdf26c5d2d77ffe9564ec4d92e4dd8859522ba
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Thu May 14 09:36:47 2026 -0700
feat(/designs): keyboard shortcut '/' focuses search (GH/X/Slack pattern); Esc blurs; ignored when user is typing in another input
---
server.js | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/server.js b/server.js
index 4da69e6..cba3050 100644
--- a/server.js
+++ b/server.js
@@ -3912,6 +3912,23 @@ ${FOOTER}
localStorage.setItem('wallco-density', this.value);
});
window.addEventListener('resize', function(){ applyCols(slider.value); });
+
+ // Keyboard shortcut: "/" focuses search (GitHub/X/Slack pattern). Esc clears
+ // focus and returns to grid. Skipped when user is already typing in an input.
+ var search = document.getElementById('catalog-search-input');
+ if (search) {
+ document.addEventListener('keydown', function(e){
+ var t = e.target, tag = (t && t.tagName) || '';
+ var inField = tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT' || (t && t.isContentEditable);
+ if (e.key === '/' && !inField) {
+ e.preventDefault();
+ search.focus();
+ search.select && search.select();
+ } else if (e.key === 'Escape' && document.activeElement === search) {
+ search.blur();
+ }
+ });
+ }
var sortSel = document.getElementById('sort-select');
var sortH = document.getElementById('sort-hidden');
if (sortSel && sortH) {
← 3291dd7 fix(/designs): move card-hover OUT of card-link so the Sampl
·
back to Wallco Ai
·
feat(/designs surprise-me): defensive null-id handling + 'Tr a188292 →