blockly > IFocusableNode

Interfaccia IFocusableNode

Rappresenta qualsiasi elemento che può avere lo stato attivo.

Firma:

export interface IFocusableNode 

Metodi

Metodo Descrizione
canBeFocused()

Indica se questo nodo consente la messa a fuoco. Se restituisce false, nessuno degli altri metodi IFocusableNode verrà chiamato.

Tieni presente che è necessario prestare particolare attenzione se le implementazioni di questa funzione modificano dinamicamente il valore restituito durante il ciclo di vita del nodo, poiché determinate condizioni ambientali potrebbero influire sulla possibilità di mettere a fuoco l'elemento DOM di questo nodo (ad esempio se l'elemento ha un tabindex positivo o pari a zero). Inoltre, il passaggio da un valore true a un valore false mentre il nodo è attivo non modificherà immediatamente lo stato attivo corrente del nodo né lo stato interno di FocusManager e, pertanto, potrebbe comportare la chiamata di alcune funzioni del nodo in un secondo momento quando non è più attivo (poiché in precedenza era considerato attivabile al momento dell'attivazione).

Le implementazioni devono in genere restituire sempre true, a meno che non esistano circostanze in cui questo nodo deve essere ignorato per motivi di messa a fuoco. Gli esempi possono includere l'essere disabilitato, di sola lettura, una decorazione puramente visiva o un nodo senza rappresentazione visiva che deve implementare questa interfaccia (ad esempio a causa di un'interfaccia principale che la estende). Tieni presente le best practice per l'accessibilità quando determini se un nodo deve essere attivabile, poiché anche gli elementi disattivati e di sola lettura sono spesso pertinenti per fornire un contesto organizzativo agli utenti (in particolare quando utilizzano uno screen reader).

getFocusableElement()

Restituisce l'elemento DOM che può essere richiesto esplicitamente per ricevere lo stato attivo.

IMPORTANTE: tieni presente che questo elemento dovrebbe essere visibile sulla pagina, in quanto verrà messo in evidenza in modo esplicito e il suo stile verrà modificato a seconda dello stato di attivazione corrente (ad esempio, sfocato, attivo e passivo). All'elemento verrà associato uno dei due stili (dove nessuno stile indica sfocatura/nessuna messa a fuoco): - blocklyActiveFocus - blocklyPassiveFocus

L'elemento restituito deve anche avere un ID valido specificato e questo ID deve essere univoco in tutta la pagina. Se non disponi di un ID univoco corretto, quando provi a mettere a fuoco un nodo (ad esempio tramite un clic del mouse), FocusManager potrebbe mettere a fuoco un altro nodo con lo stesso ID.

L'elemento restituito deve essere visibile se il nodo viene messo a fuoco tramite FocusManager.focusNode() o FocusManager.focusTree(). È consentito che un elemento sia nascosto finché non viene chiamato onNodeFocus() o che diventi nascosto con una chiamata a onNodeBlur().

È previsto che l'elemento restituito effettivo non cambi per tutta la durata del nodo (ovvero, le sue proprietà possono cambiare, ma non deve mai essere restituito un nuovo elemento). Inoltre, il tabindex dell'elemento restituito verrà sovrascritto durante il ciclo di vita di questo nodo e di FocusManager.

Se un nodo deve essere messo a fuoco direttamente senza prima essere messo a fuoco tramite FocusManager, deve impostare il proprio indice di tabulazione.

getFocusableTree() Restituisce l'albero principale più vicino di questo nodo (nei casi in cui un albero ha alberi distinti al di sotto), che rappresenta l'albero a cui appartiene questo nodo.
onNodeBlur()

Chiamato quando questo nodo perde lo stato attivo. Potrebbe essere ancora attivo il focus passivo.

Questa funzione presenta le stesse limitazioni di implementazione di onNodeFocus().

onNodeFocus()

Chiamato quando questo nodo riceve lo stato attivo.

Tieni presente che le implementazioni possono modificare i modificatori di visibilità, ma devono evitare quanto segue: - Creazione o rimozione di elementi DOM (anche tramite il renderer o il riquadro). - Modifica della messa a fuoco tramite chiamate DOM focus() o FocusManager.