45 lines
1.3 KiB
Vue
45 lines
1.3 KiB
Vue
<template>
|
|
<div class="aa-shortcut">
|
|
<input class="aa-shortcut-search" v-model="q" placeholder="搜索快捷键…" />
|
|
<div class="aa-shortcut-list">
|
|
<div v-if="!filtered.length" class="aa-shortcut-empty">无匹配快捷键</div>
|
|
<div v-for="(it, i) in filtered" :key="i" class="aa-shortcut-item">
|
|
<span>{{ it.name }}</span><span class="aa-shortcut-key">{{ it.key }}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
name: 'AaShortcutPanel',
|
|
props: {
|
|
items: {
|
|
type: Array,
|
|
default: () => [
|
|
{ name: '保存', key: 'Ctrl + S' },
|
|
{ name: '搜索', key: 'Ctrl + K' },
|
|
{ name: '新建', key: 'Ctrl + N' },
|
|
{ name: '刷新', key: 'F5' },
|
|
{ name: '关闭页签', key: 'Ctrl + W' },
|
|
{ name: '全屏', key: 'F11' },
|
|
{ name: '帮助', key: '?' },
|
|
{ name: '命令面板', key: 'Ctrl + P' }
|
|
]
|
|
}
|
|
},
|
|
data() {
|
|
return { q: '' };
|
|
},
|
|
computed: {
|
|
filtered() {
|
|
var q = this.q.trim().toLowerCase();
|
|
if (!q) return this.items;
|
|
return this.items.filter(function (it) { return it.name.toLowerCase().indexOf(q) >= 0 || it.key.toLowerCase().indexOf(q) >= 0; });
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style src="./ShortcutPanel.css"></style>
|