Classe FocusManager
Um singleton por página que gerencia o foco do Blockly em uma ou mais IFocusableTrees e sincroniza bidirecionalmente esse foco com o DOM.
Os chamadores que quiserem mudar explicitamente o foco de entrada para selecionar componentes do Blockly na página precisam usar as funções de foco neste gerenciador.
O gerenciador é responsável por processar eventos de foco do DOM (que podem surgir de usuários clicando em elementos da página) e garantir que os IFocusableNodes correspondentes sejam claramente marcados como ativos/passivos da mesma forma que isso seria representado com chamadas para focusNode().
Signature:
export declare class FocusManager
Construtores
Construtor | Modificadores | Descrição |
---|---|---|
(constructor)(addGlobalEventListener) | Cria uma nova instância da classe FocusManager . |
Propriedades
Propriedade | Modificadores | Tipo | Descrição |
---|---|---|---|
ACTIVE_FOCUS_NODE_CSS_CLASS_NAME |
|
(não declarado) | A classe CSS atribuída a elementos IFocusableNode que têm foco ativo do DOM e do Blockly no momento. Isso nunca deve ser usado diretamente. Em vez disso, confie no FocusManager para garantir que os nós tenham foco ativo (automaticamente pelo foco do DOM ou manualmente pelos vários métodos focus* fornecidos por essa classe). Também não é recomendável consultar usando esse nome de classe. Em vez disso, use os métodos FocusableTreeTraverser ou IFocusableTree para encontrar um nó específico. |
PASSIVE_FOCUS_NODE_CSS_CLASS_NAME |
|
(não declarado) | A classe CSS atribuída a elementos IFocusableNode que têm foco passivo no momento. Ou seja, eles foram o nó mais recente na árvore relativa a ter foco ativo (consulte ACTIVE_FOCUS_NODE_CSS_CLASS_NAME) e vão receber foco ativo novamente se a árvore ao redor for solicitada para receber foco, ou seja, usando focusTree abaixo. Consulte ACTIVE_FOCUS_NODE_CSS_CLASS_NAME para ver ressalvas e limitações sobre o uso direto dessa constante (geralmente, ela nunca precisa ser usada). |
Métodos
Método | Modificadores | Descrição |
---|---|---|
ephemeralFocusTaken() | ||
focusNode(focusableNode) | Foca a entrada do DOM no nó especificado e o marca como ativamente focado. Qualquer nó focado anteriormente será atualizado para ser destacado passivamente (se estiver em uma árvore focalizável diferente) ou desfocado (se estiver na mesma). **Importante**: se o nó fornecido não puder ser focado (por exemplo, se o método canBeFocused() retornar "false"), ele será ignorado e qualquer estado de foco atual permanecerá inalterado. Isso pode atualizar o tabindex do elemento do nó especificado para garantir que ele possa ser lido corretamente por leitores de tela enquanto estiver em foco. |
|
focusTree(focusableTree) | Foca o IFocusableTree específico. Isso significa restaurar o foco ativo para o nó da árvore com foco passivo ou focar o nó raiz da árvore. Se a árvore especificada já tiver um nó em foco, isso não vai mudar o foco atual, a menos que o nó tenha foco passivo. Nesse caso, ele será restaurado para o foco ativo. Consulte getFocusedNode para saber como outros nós são afetados. |
|
getFocusedNode() | Retorna o IFocusableNode atual com foco (que sempre está vinculado a uma IFocusableTree focada) ou null se não houver um. Essa função mantém a paridade com IFocusableTree.getFocusedNode(). Ou seja, se uma árvore tiver foco, mas nenhum dos filhos dela que não sejam raiz tiver, isso vai retornar nulo, mas getFocusedTree() não. Além disso, se o foco efêmero estiver capturado no momento (por exemplo, usando takeEphemeralFocus), o nó retornado aqui poderá não ter o foco do DOM. |
|
getFocusedTree() | Retorna o IFocusableTree atual que tem foco ou nulo se nenhum tiver. Além disso, se o foco efêmero estiver capturado no momento (por exemplo, usando takeEphemeralFocus), a árvore retornada aqui poderá não ter o foco do DOM. |
|
getFocusManager() | static |
Retorna o FocusManager global da página. A instância retornada não muda entre as chamadas de função, mas pode mudar entre os carregamentos de página. |
isRegistered(tree) | Retorna se a árvore especificada já foi registrada neste gerenciador usando "registerTree" e ainda não foi cancelada usando "unregisterTree". | |
registerTree(tree, rootShouldBeAutoTabbable) | Registra uma nova IFocusableTree para gerenciamento automático de foco. Se a árvore tiver um elemento com foco no DOM, isso não vai afetar o estado interno nesse gerenciador até que o foco mude para um novo elemento/nó monitorado. Essa função vai gerar uma exceção se a árvore fornecida já estiver registrada no gerenciador. Use isRegistered para verificar nos casos em que não é possível ter certeza se a árvore foi registrada. O registro da árvore pode ser personalizado para configurar paradas de tabulação automáticas. Isso permite que o usuário navegue com a tecla Tab até a raiz da árvore, mas somente quando ela não tem foco ativo. Se essa funcionalidade estiver desativada, a raiz da árvore será automaticamente focalizável (mas não navegável com a tecla Tab) quando for focalizada pela primeira vez da mesma forma que qualquer outro nó focalizável. |
|
takeEphemeralFocus(focusableElement) | Captura o foco de um elemento específico de maneira efêmera até que a lambda retornada seja chamada. Isso é especialmente útil para fluxos de interface efêmeros, como caixas de diálogo. IMPORTANTE: a lambda retornada *precisa* ser chamada. Caso contrário, o foco automático não vai funcionar em nenhum lugar da página. É altamente recomendável vincular a chamada lambda ao fechamento da interface correspondente para que, se a entrada for alterada manualmente para um elemento fora da interface efêmera, a interface seja fechada e a entrada automática seja restaurada. Essa lambda precisa ser chamada exatamente uma vez, e as chamadas subsequentes vão gerar um erro. O gerenciador continua rastreando os indicadores de entrada do DOM mesmo quando o foco efêmero está ativo, mas não muda o estado do nó até que a lambda retornada seja chamada. Além disso, apenas um contexto de foco efêmero pode estar ativo por vez. Tentar ativar mais de um simultaneamente vai gerar um erro. |
|
unregisterTree(tree) | Cancela o registro de uma IFocusableTree do gerenciamento automático de foco. Se a árvore tiver um nó focado anteriormente, o destaque será removido. Essa função NÃO muda o foco do DOM. Essa função gera uma exceção se a árvore fornecida não estiver registrada no gerenciador. Essa função vai redefinir o tabindex do elemento raiz da árvore se ela tiver sido registrada com o gerenciamento automático de guias. |