Atalhos de teclado (HotKeys)
Os atalhos de teclado são um facilitador muito importante na execução de tarefas repetitivas, libertando o utilizador de usar o rato para efetuar operações como "Gravar Documento" ou "Pesquisar".
Nesse sentido foi desenvolvido o serviço Hotkeys.service que torna a configuração de atalhos um processo simples e transparente.
Visão geral
class HotkeysService {
addHotkeys(hotkeysDefinitions: { hotkey:HotkeysKeys[], action: () => void }[] ) : () => void
}
Descrição
O serviço de atalhos tem disponível o método addHotkeys que recebe uma lista com a configuração para os atalhos que se pretende adicionar uma ação e retorna uma função que, ao ser executada, remove os atalhos adicionados.
Nota: Caso sejam adicionadas duas configurações para o mesmo atalho, apenas a ação do último atalho configurado é executada.
HotkeysDefinitions
A HotkeysDefinitions é uma lista composta por objetos com o seguinte formato:
{
hotkey:HotkeysKeys[],
action: () => void
}
Este objeto é composto pela propriedade hotkey, que contém uma lista de teclas (HotkeysKeys), e a propriedade action, que é a função a ser executada quando o atalho é pressionado.
HotkeysKeys
O hotkeysKeys é um enumerador com todas as teclas que podem ser usadas para definir um atalho de teclado. Este enumerador contem todas as teclas de A a Z, Ctrl, Alt, Del, Esc, Home, End, PgDown, PgUp e Insert.
Exemplo
O seguinte exemplo mostra como adicionar atalhos no contexto de um componente angular2+.
export class UiComponent implements OnInit, OnDestroy{
private removeHotkeys: () => void;
// include the hotkeys service in this component
contructor(private hotkeysService : HotkeysService) {
}
ngOnInit(): void {
// create the hotkeys config array
let hotkeysConfig = [
{
// Ctrl + Alt + F
hotkey:[
HotkeysKeys.Ctrl,
HotkeysKeys.Alt,
HotkeysKeys.F
],
action: () => {
// do action
}
},
{
// Ctrl + Del
hotkey:[
HotkeysKeys.Ctrl,
HotkeysKeys.Del
],
action: () => {
// do action
}
}
]
// Add the hotkeys to the hotkeys service
// and store the returned function to later remove
// the hotkeys
this.removeHotkeys = this.hotkeysService
.addHotkeys(hotkeysConfig);
}
ngOnDestroy(): void {
// remove the hotkeys when the component is destroyed
if( this.removeHotkeys ) {
this.removeHotkeys();
this.removeHotkeys = null;
}
}
}