mirror of https://gitee.com/xiaonuobase/snowy
59 lines
1.3 KiB
JavaScript
Executable File
59 lines
1.3 KiB
JavaScript
Executable File
import { mapState, mapActions } from 'pinia'
|
|
import hotkeys from 'hotkeys-js'
|
|
import { searchStore } from '@/store'
|
|
|
|
export default {
|
|
mounted() {
|
|
// 绑定搜索功能快捷键 [ 打开 ]
|
|
hotkeys(this.searchHotkey.open, (event) => {
|
|
event.preventDefault()
|
|
this.searchPanelOpen()
|
|
})
|
|
// 绑定搜索功能快捷键 [ 关闭 ]
|
|
hotkeys(this.searchHotkey.close, (event) => {
|
|
event.preventDefault()
|
|
this.searchPanelClose()
|
|
})
|
|
},
|
|
beforeDestroy() {
|
|
hotkeys.unbind(this.searchHotkey.open)
|
|
hotkeys.unbind(this.searchHotkey.close)
|
|
},
|
|
computed: {
|
|
...mapState(searchStore, {
|
|
searchActive: (state) => state.active,
|
|
searchHotkey: (state) => state.hotkey
|
|
})
|
|
},
|
|
methods: {
|
|
...mapActions(searchStore, ['toggleActive', 'setActive']),
|
|
// 接收点击搜索按钮
|
|
handleSearchClick() {
|
|
this.toggleActive()
|
|
if (this.searchActive) {
|
|
setTimeout(() => {
|
|
if (this.$refs.panelSearch) {
|
|
this.$refs.panelSearch.focus()
|
|
}
|
|
}, 300)
|
|
}
|
|
},
|
|
searchPanelOpen() {
|
|
if (!this.searchActive) {
|
|
this.setActive(true)
|
|
setTimeout(() => {
|
|
if (this.$refs.panelSearch) {
|
|
this.$refs.panelSearch.focus()
|
|
}
|
|
}, 300)
|
|
}
|
|
},
|
|
// 关闭搜索面板
|
|
searchPanelClose() {
|
|
if (this.searchActive) {
|
|
this.setActive(false)
|
|
}
|
|
}
|
|
}
|
|
}
|