Interface IFocusableNode
Representa qualquer coisa que possa ter foco de entrada.
Signature:
export interface IFocusableNode
Métodos
Método | Descrição |
---|---|
canBeFocused() | Indica se este nó permite o foco. Se isso retornar "false", nenhum dos outros métodos IFocusableNode será chamado. É preciso ter cuidado especial se as implementações dessa função mudarem dinamicamente o valor de retorno durante o ciclo de vida do nó, já que determinadas condições ambientais podem afetar a capacidade de foco do elemento DOM desse nó (por exemplo, se o elemento tem um tabindex positivo ou zero). Além disso, mudar de um valor verdadeiro para um falso enquanto o nó está com o foco não muda imediatamente o foco atual do nó nem o estado interno do FocusManager. Assim, algumas das funções do nó podem ser chamadas mais tarde, quando ele estiver sem foco, já que antes era considerado focalizável. As implementações geralmente precisam sempre retornar "true" aqui, a menos que haja circunstâncias em que esse nó precise ser ignorado para considerações de foco. Por exemplo, pode ser desativado, 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). Considere as práticas recomendadas de acessibilidade ao determinar se um nó deve ser focalizável, já que mesmo elementos desativados e somente leitura ainda são relevantes para fornecer contexto organizacional aos usuários, principalmente ao usar 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, já que 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/sem foco): - blocklyActiveFocus - blocklyPassiveFocus O elemento retornado também precisa ter um ID válido especificado, e esse ID precisa ser exclusivo em toda a página. Não ter um ID adequadamente exclusivo pode fazer com que a tentativa de focar um nó (por exemplo, com um clique do mouse) leve a outro nó com o mesmo ID sendo focado pelo FocusManager. O elemento retornado precisa estar visível se o nó for focado usando FocusManager.focusNode() ou FocusManager.focusTree(). É permitido que um elemento fique oculto até que onNodeFocus() seja chamado ou que fique oculto 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 deve ser retornado. Além disso, o elemento retornado terá o tabindex substituído durante todo o ciclo de vida desse nó e do FocusManager. Se um nó precisar ser focado diretamente sem primeiro ser focado pelo FocusManager, ele precisará definir o próprio índice de tabulação. |
getFocusableTree() | Retorna a árvore mãe mais próxima deste nó (nos casos em que uma árvore tem árvores distintas abaixo dela), que representa a árvore a que este nó pertence. |
onNodeBlur() | Chamado quando este nó perde o foco ativo. Ele ainda pode ter foco passivo. Isso tem as mesmas restrições de implementação que onNodeFocus(). |
onNodeFocus() | Chamado quando este nó recebe o foco ativo. Não há problema em mudar os modificadores de visibilidade nas implementações, mas é preciso evitar o seguinte: - Criar ou remover elementos do DOM (inclusive pelo renderizador ou gaveta). - Afetar o foco usando chamadas DOM focus() ou o FocusManager. |