Add keyboard shortcuts for searching.

/ starts searching. Escape clears the search terms.
This commit is contained in:
Jozef Selesi 2020-03-19 19:36:24 +00:00
parent 2cf93f3881
commit 6eba37a370
2 changed files with 30 additions and 1 deletions

29
app.js
View File

@ -85,6 +85,35 @@ const app = new Vue({
toggleMenu: function() {
this.showMenu = !this.showMenu;
}
},
mounted() {
function isSmallScreen() {
return window.matchMedia('screen and (max-width: 1023px)').matches;
}
this._keyListener = function(e) {
if (e.key === '/') {
if (isSmallScreen()) {
this.showMenu = true;
}
Vue.nextTick(() => {
this.$refs.search.focus();
});
e.preventDefault();
}
if (e.key === 'Escape') {
this.filter = '';
this.$refs.search.blur();
if (isSmallScreen()) {
this.showMenu = false;
}
}
}
document.addEventListener('keydown', this._keyListener.bind(this));
},
beforeDestroy() {
document.removeEventListener('keydown', this._keyListener);
}
});

View File

@ -59,7 +59,7 @@
:class="['fas', vlayout ? 'fa-list' : 'fa-columns']"></i></a>
<div class="search-bar">
<label for="search" class="search-label"></label>
<input type="text" id="search" v-model="filter" />
<input type="text" id="search" ref="search" v-model="filter" />
</div>
</div>
</div>