Classe FocusManager
Singleton par page qui gère la mise au point de Blockly sur un ou plusieurs IFocusableTrees et synchronise cette mise au point de manière bidirectionnelle avec le DOM.
Les appelants qui souhaitent modifier explicitement la sélection d'entrée pour certains composants Blockly sur la page doivent utiliser les fonctions de sélection de ce gestionnaire.
Le gestionnaire est chargé de gérer les événements de sélection du DOM (qui peuvent survenir lorsque les utilisateurs cliquent sur des éléments de la page) et de s'assurer que les IFocusableNodes correspondants sont clairement marqués comme activement/passivement mis en évidence de la même manière que cela serait représenté par des appels à focusNode().
Signature :
export declare class FocusManager
Constructeurs
Constructeur | Modificateurs | Description |
---|---|---|
(constructor)(addGlobalEventListener) | Construit une instance de la classe FocusManager . |
Propriétés
Propriété | Modificateurs | Type | Description |
---|---|---|---|
ACTIVE_FOCUS_NODE_CSS_CLASS_NAME |
|
(non déclaré) | Classe CSS attribuée aux éléments IFocusableNode qui ont actuellement un focus DOM et Blockly actifs. Cette méthode ne doit jamais être utilisée directement. Au lieu de cela, reposez-vous sur FocusManager pour vous assurer que les nœuds ont une mise au point active (automatiquement via la mise au point DOM ou manuellement via les différentes méthodes focus* fournies par cette classe). Il est également recommandé de ne pas effectuer de requête à l'aide de ce nom de classe. Utilisez plutôt les méthodes FocusableTreeTraverser ou IFocusableTree pour trouver un nœud spécifique. |
PASSIVE_FOCUS_NODE_CSS_CLASS_NAME |
|
(non déclaré) | Classe CSS attribuée aux éléments IFocusableNode qui ont actuellement une mise au point passive (c'est-à-dire qu'ils étaient le nœud le plus récent de leur arbre relatif à avoir une mise au point active ; voir ACTIVE_FOCUS_NODE_CSS_CLASS_NAME et qui recevront à nouveau une mise au point active si leur arbre environnant est demandé à être mis au point, c'est-à-dire en utilisant focusTree ci-dessous). Consultez ACTIVE_FOCUS_NODE_CSS_CLASS_NAME pour connaître les mises en garde et les limites concernant l'utilisation directe de cette constante (en général, elle ne devrait jamais être utilisée). |
Méthodes
Méthode | Modificateurs | Description |
---|---|---|
ephemeralFocusTaken() | ||
focusNode(focusableNode) | Focalise l'entrée DOM sur le nœud spécifié et le marque comme étant activement sélectionné. Tout nœud précédemment sélectionné sera mis à jour pour être mis en surbrillance de manière passive (s'il se trouve dans un autre arbre pouvant être sélectionné) ou flou (s'il se trouve dans le même). **Important**: Si le nœud fourni ne peut pas être sélectionné (par exemple, si sa méthode canBeFocused() renvoie la valeur "false"), il sera ignoré et l'état de sélection existant restera inchangé. Notez que cela peut mettre à jour l'index de tabulation de l'élément du nœud spécifié pour s'assurer qu'il peut être lu correctement par les lecteurs d'écran lorsqu'il est sélectionné. |
|
focusTree(focusableTree) | Focalise l'IFocusableTree spécifique. Cela signifie soit restaurer la sélection active sur le nœud sélectionné passivement de l'arborescence, soit sélectionner le nœud racine de l'arborescence. Notez que si l'arborescence spécifiée comporte déjà un nœud sélectionné, la sélection existante ne sera pas modifiée (sauf si ce nœud est sélectionné de manière passive, auquel cas il sera rétabli en sélection active). Consultez getFocusedNode pour en savoir plus sur l'impact sur les autres nœuds. |
|
getFocusedNode() | Renvoie le nœud IFocusableNode actuel avec le focus (qui est toujours lié à un IFocusableTree ciblé) ou la valeur "null" s'il n'y en a pas. Notez que cette fonction maintiendra la parité avec IFocusableTree.getFocusedNode(). Autrement dit, si un arbre lui-même est sélectionné, mais qu'aucun de ses enfants non racine ne l'est, cette fonction renverra la valeur "null", mais getFocusedTree() ne le fera pas. Notez également que si la mise au point éphémère est actuellement capturée (par exemple, à l'aide de takeEphemeralFocus), le nœud renvoyé ici peut ne pas avoir la mise au point DOM actuellement. |
|
getFocusedTree() | Renvoie l'IFocusableTree actuel qui a le focus, ou null si aucun ne l'a actuellement. Notez également que si la mise au point éphémère est actuellement capturée (par exemple, à l'aide de takeEphemeralFocus), l'arborescence renvoyée ici peut ne pas avoir la mise au point DOM. |
|
getFocusManager() | static |
Renvoie le FocusManager global de la page. L'instance renvoyée ne changera pas entre les appels de fonction, mais peut changer entre les chargements de page. |
isRegistered(tree) | Indique si l'arborescence spécifiée a déjà été enregistrée dans ce gestionnaire à l'aide de registerTree et n'a pas encore été désenregistrée à l'aide de unregisterTree. | |
registerTree(tree, rootShouldBeAutoTabbable) | Enregistre un nouvel IFocusableTree pour la gestion automatique de la mise au point. Si l'arborescence comporte actuellement un élément avec focus DOM, cela n'affectera pas l'état interne de ce gestionnaire tant que le focus ne passera pas à un nouvel élément/nœud désormais surveillé. Cette fonction génère une exception si l'arborescence fournie est déjà enregistrée dans ce gestionnaire. Utilisez isRegistered pour vérifier si l'arbre a été enregistré dans les cas où il est impossible de le déterminer avec certitude. L'enregistrement de l'arborescence peut être personnalisé pour configurer des taquets de tabulation automatiques. Plus précisément, cela permet à l'utilisateur de naviguer à l'aide de la touche de tabulation jusqu'à la racine de l'arborescence, mais uniquement lorsque l'arborescence n'est pas activement sélectionnée. Si cette fonctionnalité est désactivée, la racine de l'arborescence sera automatiquement sélectionnable (mais pas accessible au clavier) lors de sa première sélection, comme n'importe quel autre nœud sélectionnable. |
|
takeEphemeralFocus(focusableElement) | Capture de manière éphémère la sélection d'un élément spécifique jusqu'à ce que le lambda renvoyé soit appelé. Cela devrait être particulièrement utile pour les flux d'UI éphémères tels que les boîtes de dialogue. IMPORTANT : le lambda renvoyé *doit* être appelé, sinon la mise au point automatique ne fonctionnera plus sur aucune page. Il est fortement recommandé de lier l'appel lambda à la fermeture de l'UI correspondante. Ainsi, si l'entrée est modifiée manuellement pour un élément en dehors de l'UI éphémère, l'UI doit se fermer et l'entrée automatique doit être restaurée. Notez que ce lambda doit être appelé une seule fois. Les appels suivants généreront une erreur. Notez que le gestionnaire continuera de suivre les signaux d'entrée DOM même lorsque la mise au point éphémère est active, mais qu'il ne modifiera pas réellement l'état du nœud tant que le lambda renvoyé n'est pas appelé. De plus, un seul contexte de focus éphémère peut être actif à un moment donné (toute tentative d'activation de plusieurs contextes simultanément entraînera une erreur). |
|
unregisterTree(tree) | Annule l'enregistrement d'un IFocusableTree à partir de la gestion automatique de la mise au point. Si l'arborescence comportait un nœud sélectionné précédemment, sa mise en surbrillance est supprimée. Cette fonction ne modifie PAS la sélection DOM. Cette fonction génère une exception si l'arborescence fournie n'est pas actuellement enregistrée dans ce gestionnaire. Cette fonction réinitialise l'index de tabulation de l'élément racine de l'arborescence si celle-ci a été enregistrée avec la gestion automatique des tabulations. |