add help window

This commit is contained in:
2022-11-17 04:27:21 +01:00
parent d77b443059
commit e6f184e1db
2 changed files with 110 additions and 6 deletions

View File

@@ -1,25 +1,43 @@
<script> <script>
import { RouterLink, RouterView } from 'vue-router'; import { RouterLink, RouterView } from 'vue-router';
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import Help from './components/Help.vue';
export default defineComponent({ export default defineComponent({
components: {
Help,
},
data() { data() {
window.addEventListener('keydown', e => { window.addEventListener('keydown', e => {
if (!e) e = event; if (!e) e = event;
const COMMA_CODE = 188; const COMMA_CODE = 188;
if ((e.ctrlKey || e.metaKey) && e.keyCode === COMMA_CODE) { const QUESTION_MARK_CODE = 191;
const cmdCtrl = e.ctrlKey || e.metaKey;
if (cmdCtrl && e.keyCode === COMMA_CODE) {
this.$router.push({ name: 'settings' }); this.$router.push({ name: 'settings' });
e.preventDefault(); e.preventDefault();
} }
if (cmdCtrl && e.shiftKey && e.keyCode === QUESTION_MARK_CODE) {
this.showHelp = !this.showHelp;
e.preventDefault();
}
if (e.keyCode === 27) {
this.showHelp = false;
}
}); });
return {}; return {
showHelp: false,
};
}, },
}); });
</script> </script>
<template>
<RouterView />
</template>
<style scoped> <style scoped>
</style> </style>
<template>
<Help :visible="showHelp" @close="showHelp = false"/>
<RouterView />
</template>

86
src/components/Help.vue Normal file
View File

@@ -0,0 +1,86 @@
<script>
import { defineComponent } from 'vue';
export default defineComponent({
name: 'Help',
props: {
visible: Boolean,
},
});
</script>
<style scoped>
.help {
visibility: hidden;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
padding: 0;
backdrop-filter: blur(4px);
display: flex;
justify-content: center;
align-items: center;
}
.help.visible {
visibility: visible;
}
.window {
padding: 12px 24px;
border-radius: 24px;
height: calc(100% - 100px);
width: calc(100% - 100px);
line-height: 1.5;
font-family: monospace;
background-color: rgba(0, 0, 0, 0.6);
border: 1px solid rgba(32, 32, 32, 0.6);
overflow-y: auto;
}
ul {
list-style-type: none;
padding: 0;
}
b {
color: #8f8;
}
</style>
<template>
<div
class="help"
:class="{ visible: this.visible }"
@click="$emit('close')"
>
<div class="window" @click.stop>
<div class="header">
<h3>Keyboard Shorcuts</h3>
</div>
<div class="content">
<!-- -->
<ul>
<li>
<b>Command-Comma (,)</b> - open app settings
</li>
<li>
<b>Command-Shift-?</b> - show this help window
</li>
<li>
<b>Control-Comma (,)</b> - open app settings
</li>
<li>
<b>Control-Shift-?</b> - show this help window
</li>
<li>
<b>ESC</b> - close window
</li>
</ul>
</div>
</div>
</div>
</template>