# 键盘快捷键 Keyboard
# 快捷键配置
通过创建 LogicFlow
实例时传入 options 的 keyboard 属性可以开启快捷键,
可以只配置 enabled 属性,为 true 时,代表开启默认的快捷键。
const lf = new LogicFlow({
container: document.querySelector('#app'),
keyboard: {
enabled: true
},
});
通过 keyboard 的声明可以看出,除了 enabled 是必传项,其他都是可选的配置。
export interface KeyboardDef {
enabled: boolean,
shortcuts?: Array<{
keys: string | string[],
callback: Handler,
action?: Action,
}> | {
keys: string | string[],
callback: Handler,
action?: Action,
}
}
shortcuts 则可以定义用户自定义的一组快捷键 值得一提的是 keys 的规则,与mousetrap (opens new window)一致。
# 内置快捷键
参考不同的产品,内置了复制,粘贴,redo/undo 的快捷键。
快捷键 | 功能 |
---|---|
cmd + c 或 ctrl + c | 复制节点 |
cmd + v 或 ctrl + v | 粘贴节点 |
cmd + z 或 ctrl + z | 撤销操作 |
cmd + y 或 ctrl + y | 回退操作 |
# 如何阻止删除或者拷贝行为
通过创建 LogicFlow
实例时传入 options 的 guards 属性可以配置守卫, 目前支持两种 beforeClone 和 beforeDelete,回调函数的参数data是LogicFlow倒出的 NodeData|EdgeData 类型, 从data可以拿到节点或者边的信息,继续进行业务逻辑判断。
const lf = new LogicFlow({
container: document.querySelector('#app'),
guards: {
beforeClone(data) {
console.log('beforeClone', data)
return false
},
beforeDelete(data) {
console.log('beforeDelete', data)
return false
}
}
});
当 beforeClone 返回 true 时,则认为保持克隆的行为, 返回 false 时,则阻止克隆。 当 beforeDelete 返回 true 时,则保持删除的行为,返回 false 时,则阻止删除。