blockly > IFocusableNode

Interfaz IFocusableNode

Representa cualquier elemento que puede tener el enfoque de entrada.

Signature:

export interface IFocusableNode 

Métodos

Método Descripción
canBeFocused()

Indica si este nodo permite el enfoque. Si se devuelve false, no se llamará a ninguno de los otros métodos de IFocusableNode.

Ten en cuenta que se debe tener especial cuidado si las implementaciones de esta función cambian de forma dinámica su valor de retorno durante la vida útil del nodo, ya que ciertas condiciones del entorno podrían afectar la capacidad de enfoque del elemento DOM de este nodo (por ejemplo, si el elemento tiene un tabindex positivo o cero). Además, cambiar de un valor verdadero a uno falso mientras el nodo mantiene el enfoque no cambiará de inmediato el enfoque actual del nodo ni el estado interno de FocusManager, por lo que es posible que algunas de las funciones del nodo se llamen más adelante cuando se desenfoque (ya que antes se consideraba que se podía enfocar en el momento de enfocarse).

En general, las implementaciones siempre deben devolver verdadero aquí, a menos que haya circunstancias en las que se deba omitir este nodo para las consideraciones de enfoque. Entre los ejemplos, se pueden incluir estar inhabilitado, ser de solo lectura, ser una decoración puramente visual o un nodo sin representación visual que debe implementar esta interfaz (p.ej., debido a que una interfaz principal la extiende). Ten en cuenta las prácticas recomendadas de accesibilidad cuando determines si un nodo debe ser enfocable, ya que incluso los elementos inhabilitados y de solo lectura suelen ser relevantes para proporcionar contexto organizativo a los usuarios (en especial, cuando se usa un lector de pantalla).

getFocusableElement()

Devuelve el elemento DOM al que se puede solicitar explícitamente que reciba el enfoque.

IMPORTANTE: Ten en cuenta que se espera que este elemento tenga presencia visual en la página, ya que se enfocará de forma explícita y cambiará su estilo según su estado de enfoque actual (es decir, desenfocado, enfocado de forma activa y enfocado de forma pasiva). El elemento tendrá uno de los dos estilos adjuntos (en los que ningún estilo indica que está desenfocado o no está enfocado): - blocklyActiveFocus - blocklyPassiveFocus

El elemento devuelto también debe tener un ID válido especificado, y este ID debe ser único en toda la página. Si no tienes un ID correctamente único, es posible que, cuando intentes enfocar un nodo (por ejemplo, con un clic del mouse), FocusManager enfoque otro nodo con el mismo ID.

El elemento devuelto debe ser visible si el nodo alguna vez se enfoca a través de FocusManager.focusNode() o FocusManager.focusTree(). Se permite que un elemento esté oculto hasta que se llame a onNodeFocus() o que se oculte con una llamada a onNodeBlur().

Se espera que el elemento real que se devuelve no cambie durante la vida útil del nodo (es decir, sus propiedades pueden cambiar, pero nunca se debe devolver un elemento nuevo). Además, se anulará el valor de tabindex del elemento devuelto durante todo el ciclo de vida de este nodo y de FocusManager.

Si un nodo requiere la capacidad de enfocarse directamente sin enfocarse primero a través de FocusManager, debe establecer su propio índice de tabulación.

getFocusableTree() Devuelve el árbol principal más cercano de este nodo (en los casos en que un árbol tiene árboles distintos debajo de él), que representa el árbol al que pertenece este nodo.
onNodeBlur()

Se llama cuando este nodo pierde el enfoque activo. Es posible que aún tenga enfoque pasivo.

Tiene las mismas restricciones de implementación que onNodeFocus().

onNodeFocus()

Se llama cuando este nodo recibe el enfoque activo.

Ten en cuenta que las implementaciones pueden cambiar los modificadores de visibilidad, pero deben evitar lo siguiente: - Crear o quitar elementos DOM (incluso a través del renderizador o el panel). - Afectar el enfoque a través de llamadas a focus() del DOM o FocusManager