blockly > IFocusableNode

Interface IFocusableNode

Representa tudo o que pode ter foco de entrada.

Signature:

export interface IFocusableNode 

Métodos

Método Descrição
canBeFocused()

Indica se esse nó permite o foco. Se ele retornar falso, nenhum dos outros métodos IFocusableNode será chamado.

É necessário ter cuidado especial se as implementações dessa função mudarem dinamicamente o valor de retorno durante a vida útil do nó, já que determinadas condições do ambiente podem afetar a capacidade de foco do elemento DOM desse nó, como se o elemento tiver um tabindex positivo ou zero. Além disso, mudar de um valor "true" para um valor "false" enquanto o nó mantém o foco não muda imediatamente o foco atual do nó nem o estado interno do FocusManager. Isso pode resultar na chamada de algumas das funções do nó mais tarde, quando o foco é removido (já que ele era considerado focado no momento em que foi focado).

Em geral, as implementações sempre retornam "true" aqui, a menos que haja circunstâncias em que esse nó precise ser ignorado por questões de foco. Exemplos podem incluir desativação, somente leitura, uma decoração puramente visual ou um nó sem representação visual que precisa implementar essa interface (por exemplo, devido a uma interface pai que a estende). Tenha em mente as práticas recomendadas de acessibilidade ao determinar se um nó precisa ser focalizável, já que elementos desativados e somente leitura ainda são relevantes para fornecer contexto organizacional aos usuários, principalmente quando eles usam um leitor de tela.

getFocusableElement()

Retorna o elemento DOM que pode ser solicitado explicitamente para receber o foco.

IMPORTANTE: esse elemento precisa ter uma presença visual na página, porque ele será explicitamente focado e terá o estilo alterado dependendo do estado de foco atual (ou seja, desfocado, focado ativamente e focado passivamente). O elemento terá um dos dois estilos anexados (em que nenhum estilo indica desfocado/não focado): - blocklyActiveFocus - blocklyPassiveFocus

O elemento retornado também precisa ter um ID válido especificado e exclusivo em toda a página. A falta de um ID exclusivo pode resultar na tentativa de focar um nó (por exemplo, com um clique do mouse) que leva a outro nó com o mesmo ID a ser focado pelo FocusManager. O elemento retornado também precisa ter um tabindex negativo, já que o gerenciador de foco vai gerenciar o índice de guias e um índice de guias precisa estar presente para que o elemento seja focalizável no DOM.

O elemento retornado precisa estar visível se o nó for focado por FocusManager.focusNode() ou FocusManager.focusTree(). É permitido que um elemento seja oculto até que onNodeFocus() seja chamado ou seja ocultado com uma chamada para onNodeBlur().

Espera-se que o elemento retornado não mude durante o ciclo de vida do nó. Ou seja, as propriedades podem mudar, mas um novo elemento nunca será retornado.

getFocusableTree() Retorna a árvore mãe mais próxima desse nó (nos casos em que uma árvore tem árvores distintas abaixo dela), que representa a árvore a que esse nó pertence.
onNodeBlur()

Chamado quando esse nó perde o foco ativo. Ele ainda pode ter foco passivo.

Ele tem as mesmas restrições de implementação que onNodeFocus().

onNodeFocus()

Chamado quando esse nó recebe o foco ativo.

As implementações podem mudar os modificadores de visibilidade, mas devem evitar o seguinte: - Criar ou remover elementos DOM (inclusive pelo renderizador ou gaveta). - Afetando o foco por chamadas de focus() do DOM ou pelo FocusManager.