Adição de teclas de atalho personalizadas

A adição de teclas de atalho personalizadas, ou atalhos de teclado, aumenta a produtividade, ajudando os usuários a realizar tarefas comuns com rapidez e eficiência. Também é possível criar teclas de atalho personalizadas para focar em campos ou seleções importantes e reduzir o número de cliques que o usuário precisa fazer para executar ações.

Sobre esta tarefa

Observação: você pode adicionar teclas de atalho personalizadas para qualquer tela do Order Hub, exceto aquelas que estão dentro de buc-app-sfo.
Você adiciona atalhos de teclado personalizados ou teclas de atalho ao seu aplicativo usando o sistema de atalhos de teclado. O sistema de atalhos de teclado consiste em dois componentes principais:
  • Definições de teclas de atalho, que definem os atalhos do teclado e seu comportamento.
  • Chaves de tradução, que fornecem descrições para os atalhos.

Procedimento

  1. Para a página à qual você deseja adicionar as teclas de atalho personalizadas, crie ou localize o buc-page-definitions.json arquivo.

    Atualize ou crie o JSON arquivo dentro da pasta src-custom/assets/custom do módulo. Por exemplo, packages/<route>/src-custom/assets/custom/buc-page-definitions.json.

    Se não forem necessárias personalizações adicionais além das alterações no JSON arquivo, o JSON arquivo não precisa ser associado a nenhuma rota. Em vez disso, crie o JSON arquivo em packages/<app>-root-config/src/assets/custom/buc-page-definitions.json. Isso garante que as futuras versões do Order Hub sejam aplicadas automaticamente, sem a necessidade de sincronizar manualmente seu código de personalização.

    Para encontrar as páginas que suportam a adição de teclas de atalho, consulte as páginas listadas no seguinte arquivo.
    • buc-app-<module>/packages/<module>-shared/assets/buc-app-<module>/buc-page-definitions.json
  2. Defina as teclas de atalho dentro do hotkeys objeto da sua página no buc-page-definitions.json arquivo. Inclua as seguintes propriedades.
    ID da chave
    Um ID exclusivo para a tecla de atalho. Por exemplo, “avançar” ou “iniciar salvamento”
    Valores(Object) id
    Uma ID exclusiva. Você pode reutilizar a ID do objeto.
    descrição
    Uma referência a uma cadeia de tradução que descreve a ação da tecla de atalho. Por exemplo, “ CREATE_ORDER.KEY_BINDINGS.GO_NEXT ”
    tipo
    Uma string que faz referência ao tipo de ação a ser executada. Por exemplo, “clique” ou “foco” Clique simula clicar no elemento alvo e é usado para botões e links. O foco move o foco do teclado para o elemento de destino e é usado para campos de entrada.
    elementIdentifier
    Uma string que representa um seletor de consulta CSS para direcionar o elemento. Por exemplo, "[tid='button-id'] botão", "input#campo\ Nome" ou "buc-label#campo-contrato input" Use IDs de teste ou atributos tid, quando disponíveis, para garantir a estabilidade. Seja específico para evitar selecionar vários elementos. Teste os seletores CSS para garantir que eles apontem para o elemento correto, leve em consideração o conteúdo dinâmico e certifique-se de que os seletores funcionem em diferentes estados.
    vinculação de teclas
    Uma sequência de teclas ou combinação de teclas para iniciar a ação delimitada por +. Por exemplo, “shift+n”, “ctrl+s” ou “ shift+1 ” Os modificadores suportados são shift, ctr, alt e meta. Você pode usar uma única tecla ou incluir um ou mais modificadores. Use combinações de teclas para ações comuns. Ao determinar as cadeias de caracteres, certifique-se de evitar conflitos com atalhos do navegador e seja consistente em recursos semelhantes.
    keybinding_$(locale)
    Uma cadeia opcional de chaves a ser usada quando um usuário estiver usando uma localidade específica. Se essa propriedade não for definida, a propriedade padrão será keybinding.
    Veja o exemplo a seguir.
    {
      "create-contract-order": {
        "name": "create-contract-order",
        "actions": [],
        "tabs": [],
        "hotkeys": {
          "go-next": {
            "id": "go-next",
            "description": "KEY_BINDINGS.GO_NEXT",
            "keybinding": "shift+n",
            "type": "click",
            "elementIdentifier": "[tid='contract-order-create-next'] button"
          },
          "go-previous": {
            "id": "go-previous",
            "description": "KEY_BINDINGS.GO_PREVIOUS",
            "keybinding": "shift+p",
            "type": "click",
            "elementIdentifier": "[tid='contract-order-create-previous'] button"
          },
          "initiate-save": {
            "id": "initiate-save",
            "description": "KEY_BINDINGS.INITIATE_SAVE",
            "keybinding": "shift+s",
            "type": "click",
            "elementIdentifier": "[tid='contract-order-create-save'] button"
          },
          "initiate-confirm": {
            "id": "confirm-contract-order",
            "description": "KEY_BINDINGS.INITIATE_CONFIRM",
            "keybinding": "shift+c",
            "type": "click",
            "elementIdentifier": "[tid='contract-order-create-confirm'] button"
          },
          "focus-first-element": {
            "id": "focus-first-element",
            "description": "KEY_BINDINGS.FOCUS_FIRST_ELEMENT",
            "keybinding": "shift+1",
            "type": "focus",
            "elementIdentifier": "buc-label#contractOrderName input"
          }
        }
      }
    }
  3. Adicione chaves de tradução para a tecla de atalho personalizada dentro KEY_BINDINGS do arquivo en.json apropriado.
    Algumas orientações para a tradução.
    • Seja descritivo. Explique claramente o que o atalho de teclado faz.
    • Use verbos de ação. Comece com verbos como navegar, salvar, mover ou ativar.
    • Seja conciso. Mantenha as descrições curtas, mas informativas.
    • Termine com um ponto final.
    {
      "CREATE_CONTRACT_ORDER": {
        "COMMON": {
          "ROUTE_CREATE_CONTRACT_ORDER": "Create contract order",
          ...
        },
        "KEY_BINDINGS": {
          "GO_PREVIOUS": "Navigate to the previous page.",
          "GO_NEXT": "Navigate to the next page.",
          "INITIATE_SAVE": "Save changes.",
          "INITIATE_CONFIRM": "Activate/Confirm.",
          "FOCUS_FIRST_ELEMENT": "Move to the name field."
        }
      }
    }

O que fazer depois

Depois de criar suas teclas de atalho, você vai querer testá-las para ter certeza de que funcionam como esperado. Teste suas teclas de atalho usando o seguinte processo.
  1. Compile o aplicativo para ajudar a garantir que não existam erros de sintaxe.
  2. Vá para a página onde as teclas de atalho estão definidas.
  3. Pressione a combinação de teclas para testar as funções.
  4. Verifique se a ação ocorre conforme o esperado.
Ajuda para solucionar problemas quando uma tecla de atalho não está funcionando
  • Verifique se o identificador do elemento aponta para o elemento correto.
  • Certifique-se de que o identificador do elemento é um seletor CSS válido. Se o identificador do elemento incluir espaços, inclua uma barra invertida antes do espaço (por exemplo, input#field\ Name) ou reescreva o identificador do elemento sem espaços.
  • Verifique se o elemento está visível e ativado.
  • Certifique-se de que a definição da tecla de atalho do sistema de teclas de atalho não entre em conflito com nenhum atalho do navegador.
  • Confirme se o nome da página corresponde em initializeHotKeyListener().
  • Se o elemento alvo não for normalmente interativo (por exemplo, um <div>), você deve torná-lo focável adicionando um atributo tabIndex antes que uma tecla de atalho possa acioná-lo.
Ajuda para solucionar problemas quando a tradução não é exibida
  • Verifique se o caminho da chave de tradução corresponde exatamente.
  • Verifique se KEY_BINDINGS está no objeto pai correto.
  • Certifique-se de que o en.json arquivo é um arquivo JSON válido.
Ajuda para solucionar problemas quando o elemento não é encontrado
  • Use as Ferramentas de Desenvolvimento do navegador para verificar o seletor CSS.
  • Verifique se o elemento é renderizado condicionalmente.
  • Certifique-se de que o seletor seja específico.