|
@@ -1,37 +1,15 @@
|
|
|
+import {Ref, ref} from 'vue'
|
|
|
import {ElMessage} from "element-plus";
|
|
|
|
|
|
-let registerShortcuts = null
|
|
|
-const direction = ['ArrowRight', 'ArrowLeft', 'ArrowDown', 'ArrowUp']
|
|
|
-let disabled = false
|
|
|
|
|
|
-export const xcHotKey = (keyList) => {
|
|
|
- console.log('快捷键')
|
|
|
- enableShortcutKeys()
|
|
|
- registerShortcuts = keyList
|
|
|
- document.onkeydown = function (event) {
|
|
|
- shortcutTrigger(event)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-export const logoutShortcut = () => {
|
|
|
- document.onkeydown = null
|
|
|
- registerShortcuts = null
|
|
|
-}
|
|
|
+const direction: string[] = ['ArrowRight', 'ArrowLeft', 'ArrowDown', 'ArrowUp']
|
|
|
+export const xcEvent: Ref<Event | null> = ref(null)
|
|
|
|
|
|
-export const disableShortcutKeys = () => {
|
|
|
- disabled = true
|
|
|
+document.onkeydown = function (event: KeyboardEvent): void {
|
|
|
+ xcEvent.value = event
|
|
|
}
|
|
|
|
|
|
-export const enableShortcutKeys = () => {
|
|
|
- disabled = false
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- * 快捷键触发事件
|
|
|
- * @param event
|
|
|
- */
|
|
|
-const shortcutTrigger = (event) => {
|
|
|
+export const shortcutTrigger = (event, registerShortcuts, disabled = false) => {
|
|
|
for (let listKey in registerShortcuts) {
|
|
|
let data = registerShortcuts[listKey]
|
|
|
for (let key in data) {
|
|
@@ -40,7 +18,7 @@ const shortcutTrigger = (event) => {
|
|
|
if (event[pressSimultaneously] && event.key === key) {
|
|
|
event.returnValue = false
|
|
|
event.preventDefault()
|
|
|
- if (whetherToDisable()) return;
|
|
|
+ if (whetherToDisable(disabled)) return;
|
|
|
data[key]()
|
|
|
return
|
|
|
}
|
|
@@ -48,7 +26,7 @@ const shortcutTrigger = (event) => {
|
|
|
if ((event[pressSimultaneously] && direction.includes(event.code))) {
|
|
|
event.returnValue = false
|
|
|
event.preventDefault()
|
|
|
- if (whetherToDisable()) return;
|
|
|
+ if (whetherToDisable(disabled)) return;
|
|
|
data['direction'](event.key)
|
|
|
return
|
|
|
}
|
|
@@ -57,7 +35,7 @@ const shortcutTrigger = (event) => {
|
|
|
if (event[pressSimultaneously] && event.code === ('Digit' + event.key)) {
|
|
|
event.returnValue = false
|
|
|
event.preventDefault()
|
|
|
- if (whetherToDisable()) return;
|
|
|
+ if (whetherToDisable(disabled)) return;
|
|
|
data['number'](event.key)
|
|
|
return
|
|
|
}
|
|
@@ -73,7 +51,7 @@ const shortcutTrigger = (event) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function whetherToDisable() {
|
|
|
+function whetherToDisable(disabled = false) {
|
|
|
// 这个打开是时候是不触发
|
|
|
if (disabled) {
|
|
|
ElMessage({
|