Clase FocusManager
Es un singleton por página que administra el enfoque de Blockly en uno o más IFocusableTrees y sincroniza bidireccionalmente este enfoque con el DOM.
Las personas que llaman y desean cambiar de forma explícita el enfoque de entrada para seleccionar componentes de Blockly en la página deben usar las funciones de enfoque de este administrador.
El administrador es responsable de controlar los eventos de enfoque del DOM (que pueden surgir de los usuarios que hacen clic en los elementos de la página) y de garantizar que los IFocusableNodes correspondientes estén claramente marcados como destacados de forma activa o pasiva de la misma manera en que se representarían con llamadas a focusNode().
Signature:
export declare class FocusManager
Constructores
Constructor | Modificadores | Descripción |
---|---|---|
(constructor)(addGlobalEventListener) | Construye una instancia nueva de la clase FocusManager . |
Propiedades
Propiedad | Modificadores | Tipo | Descripción |
---|---|---|---|
ACTIVE_FOCUS_NODE_CSS_CLASS_NAME |
|
(no declarado) | Clase de CSS asignada a los elementos IFocusableNode que actualmente tienen el DOM activo y el enfoque de Blockly. Nunca debe usarse directamente. En su lugar, confía en FocusManager para garantizar que los nodos tengan el enfoque activo (ya sea automáticamente a través del enfoque del DOM o manualmente a través de los diversos métodos focus* que proporciona esta clase). Tampoco se recomienda realizar consultas con este nombre de clase. En su lugar, usa los métodos de FocusableTreeTraverser o IFocusableTree para encontrar un nodo específico. |
PASSIVE_FOCUS_NODE_CSS_CLASS_NAME |
|
(no declarado) | Es la clase CSS asignada a los elementos IFocusableNode que actualmente tienen enfoque pasivo (es decir, fueron el nodo más reciente en su árbol relativo en tener enfoque activo; consulta ACTIVE_FOCUS_NODE_CSS_CLASS_NAME) y volverán a recibir enfoque activo si se solicita que su árbol circundante se enfoque, es decir, con focusTree a continuación. Consulta ACTIVE_FOCUS_NODE_CSS_CLASS_NAME para conocer las advertencias y limitaciones sobre el uso directo de esta constante (en general, nunca debería ser necesario usarla). |
Métodos
Método | Modificadores | Descripción |
---|---|---|
ephemeralFocusTaken() | ||
focusNode(focusableNode) | Enfoca la entrada del DOM en el nodo especificado y lo marca como enfocado de forma activa. Cualquier nodo enfocado previamente se actualizará para que se destaque de forma pasiva (si está en un árbol enfocable diferente) o se desenfoque (si está en el mismo). **Importante**: Si no se puede enfocar el nodo proporcionado (p.ej., su método canBeFocused() devuelve falso), se ignorará y el estado de enfoque existente permanecerá sin cambios. Ten en cuenta que esto puede actualizar el tabindex del elemento del nodo especificado para garantizar que los lectores de pantalla puedan leerlo correctamente mientras está enfocado. |
|
focusTree(focusableTree) | Enfoca el IFocusableTree específico. Esto significa restablecer el enfoque activo en el nodo enfocado de forma pasiva del árbol o enfocar el nodo raíz del árbol. Ten en cuenta que, si el árbol especificado ya tiene un nodo enfocado, esto no cambiará ningún enfoque existente (a menos que ese nodo tenga un enfoque pasivo, en cuyo caso se restablecerá el enfoque activo). Consulta getFocusedNode para obtener detalles sobre cómo se ven afectados otros nodos. |
|
getFocusedNode() | Devuelve el IFocusableNode actual con el enfoque (que siempre está vinculado a un IFocusableTree enfocado) o null si no hay ninguno. Ten en cuenta que esta función mantendrá la paridad con IFocusableTree.getFocusedNode(). Es decir, si un árbol en sí tiene el enfoque, pero ninguno de sus elementos secundarios que no son raíz lo tiene, esta función devolverá nulo, pero getFocusedTree() no lo hará. Ten en cuenta también que, si se captura el enfoque efímero en este momento (p.ej., con takeEphemeralFocus), es posible que el nodo que se devuelve aquí no tenga el enfoque del DOM en este momento. |
|
getFocusedTree() | Devuelve el IFocusableTree actual que tiene el enfoque o null si ninguno lo tiene. Ten en cuenta también que, si el enfoque efímero se captura actualmente (p.ej., con takeEphemeralFocus), es posible que el árbol que se muestra aquí no tenga el enfoque del DOM en este momento. |
|
getFocusManager() | static |
Devuelve el FocusManager global de la página. Se garantiza que la instancia devuelta no cambiará entre las llamadas a funciones, pero puede cambiar entre las cargas de páginas. |
isRegistered(tree) | Devuelve si el árbol especificado ya se registró en este administrador con registerTree y aún no se anuló su registro con unregisterTree. | |
registerTree(tree, rootShouldBeAutoTabbable) | Registra un nuevo IFocusableTree para la administración automática del enfoque. Si el árbol tiene actualmente un elemento con enfoque de DOM, no afectará el estado interno de este administrador hasta que el enfoque cambie a un elemento o nodo nuevo que ahora se supervisa. Esta función arroja una excepción si el árbol proporcionado ya está registrado actualmente en este administrador. Usa isRegistered para verificar en los casos en que no se puede tener la certeza de si el árbol se registró. El registro del árbol se puede personalizar para configurar las detenciones de tabulación automáticas. Específicamente, esto proporciona la capacidad para que el usuario pueda navegar con la tecla Tab hasta la raíz del árbol, pero solo cuando el árbol no tiene el enfoque activo. Si esta función está inhabilitada, la raíz del árbol se enfocará automáticamente (pero no se podrá acceder a ella con la tecla Tab) cuando se enfoque por primera vez de la misma manera que cualquier otro nodo enfocable. |
|
takeEphemeralFocus(focusableElement) | Captura el enfoque de forma efímera para un elemento específico hasta que se llama a la lambda devuelta. Se espera que esto sea especialmente útil para los flujos de IU efímeros, como los diálogos. IMPORTANTE: Se *debe* llamar a la lambda que se devuelve. De lo contrario, el enfoque automático dejará de funcionar en cualquier parte de la página. Se recomienda vincular la llamada de Lambda al cierre de la IU correspondiente para que, si la entrada se cambia manualmente a un elemento fuera de la IU efímera, la IU se cierre y se restablezca la entrada automática. Ten en cuenta que esta lambda se debe llamar exactamente una vez y que las llamadas posteriores arrojarán un error. Ten en cuenta que el administrador seguirá haciendo un seguimiento de los indicadores de entrada del DOM incluso cuando el enfoque efímero esté activo, pero no cambiará el estado del nodo hasta que se llame a la función lambda devuelta. Además, solo 1 contexto de enfoque efímero puede estar activo en un momento determinado (intentar activar más de uno simultáneamente generará un error). |
|
unregisterTree(tree) | Anula el registro de un IFocusableTree de la administración automática del enfoque. Si el árbol tenía un nodo enfocado anterior, se quitará su resaltado. Esta función NO cambia el enfoque del DOM. Esta función arroja una excepción si el árbol proporcionado no está registrado actualmente en este administrador. Esta función restablecerá el tabindex del elemento raíz del árbol si el árbol se registró con la administración automática de tabulaciones. |