You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.1 KiB
TypeScript
90 lines
2.1 KiB
TypeScript
import { Component, Vue } from 'vue-property-decorator'
|
|
import Mousetrap from 'mousetrap'
|
|
import { AppModule } from '@/store/app'
|
|
import { PageModule } from './store/page'
|
|
|
|
@Component
|
|
export default class MainApp extends Vue {
|
|
get bodyClass() {
|
|
return AppModule.bodyClass
|
|
}
|
|
|
|
created() {
|
|
AppModule.setUpSettings()
|
|
this.initKeybinds()
|
|
}
|
|
|
|
initKeybinds() {
|
|
const modKey = 'fn'
|
|
|
|
Mousetrap.bind(`${modKey}+t`, () => {
|
|
PageModule.openTab({ type: 'themes' })
|
|
PageModule.openBlock({ id: 'settings' })
|
|
})
|
|
|
|
Mousetrap.bind(`${modKey}+c`, () => {
|
|
PageModule.openTab({ type: 'custom' })
|
|
PageModule.openBlock({ id: 'settings' })
|
|
})
|
|
|
|
Mousetrap.bind(`${modKey}+s`, () => {
|
|
PageModule.openTab({ type: 'settings' })
|
|
PageModule.openBlock({ id: 'settings' })
|
|
})
|
|
|
|
Mousetrap.bind('escape', () => {
|
|
const isFocusPassword = document.querySelector('#password:focus') as HTMLInputElement
|
|
|
|
if (isFocusPassword) {
|
|
isFocusPassword.blur()
|
|
} else if (PageModule.menu.view) {
|
|
PageModule.ASSIGN_MENU({ view: false })
|
|
} else if (PageModule.activeBlock) {
|
|
PageModule.closeBlock()
|
|
}
|
|
})
|
|
|
|
Mousetrap.bind('enter', () => {
|
|
const isFocusPassword = document.querySelector('#password:focus')
|
|
const inputPassword = document.querySelector('#password') as HTMLInputElement
|
|
|
|
if (isFocusPassword) {
|
|
AppModule.login()
|
|
} else if (inputPassword) {
|
|
inputPassword.focus()
|
|
}
|
|
})
|
|
|
|
// keyPress(event: KeyboardEvent) {
|
|
// if (PageModule.activeBlocks.length === 0) {
|
|
// PageModule.openBlock({ id: 'login' })
|
|
// }
|
|
// }
|
|
|
|
Mousetrap.bind(`${modKey}+h`, () => {
|
|
console.log('hide all windows')
|
|
PageModule.CLOSE_ALL_ACTIVE_BLOCK()
|
|
})
|
|
|
|
Mousetrap.bind(`${modKey}+p`, () => {
|
|
console.log('power off')
|
|
})
|
|
|
|
Mousetrap.bind(`${modKey}+r`, () => {
|
|
console.log('restart')
|
|
})
|
|
|
|
Mousetrap.bind(`${modKey}+R`, () => {
|
|
AppModule.randomizeSettingsTheme()
|
|
})
|
|
}
|
|
|
|
render() {
|
|
return (
|
|
<div id="app" class={ this.bodyClass }>
|
|
<router-view />
|
|
</div>
|
|
)
|
|
}
|
|
}
|