blockly > IFocusableNode

Interfejs IFocusableNode

Reprezentuje wszystko, co może mieć fokus wejściowy.

Podpis:

export interface IFocusableNode 

Metody

Metoda Opis
canBeFocused()

Wskazuje, czy ten węzeł umożliwia skupienie. Jeśli zwróci wartość false, żadna z innych metod IFocusableNode nie zostanie wywołana.

Należy zachować szczególną ostrożność, jeśli implementacje tej funkcji dynamicznie zmieniają wartość zwracaną w czasie trwania węzła, ponieważ niektóre warunki środowiskowe mogą wpływać na możliwość skupienia elementu DOM tego węzła (np. czy element ma dodatni czy zerowy tabindex). Zmiana wartości z true na false, gdy węzeł ma fokus, nie spowoduje natychmiastowej zmiany bieżącego fokusu węzła ani stanu wewnętrznego FocusManagera, co może spowodować wywołanie niektórych funkcji węzła po wyłączeniu fokusu (ponieważ w momencie włączenia fokusu był on uważany za możliwy do wybrania).

W implementacjach zazwyczaj zawsze zwracana jest wartość true, chyba że istnieją okoliczności, w których ten węzeł powinien zostać pominięty ze względu na kwestie związane z fokusem. Może to być na przykład interfejs wyłączony, tylko do odczytu, pełniący funkcję czysto wizualnej dekoracji lub węzeł bez wizualnej reprezentacji, który musi implementować ten interfejs (np. ze względu na rozszerzenie go przez interfejs nadrzędny). Pamiętaj o sprawdzonym sposobie ułatwień dostępu, gdy decydujesz, czy węzeł powinien być możliwy do wybrania, ponieważ nawet wyłączone i dostępne tylko do odczytu elementy często są nadal przydatne do zapewnienia użytkownikom kontekstu organizacyjnego (zwłaszcza w przypadku czytników ekranu).

getFocusableElement()

Zwraca element DOM, który może zostać wyraźnie poproszony o uaktywnienie.

WAŻNE: ten element powinien być widoczny na stronie, ponieważ będzie wyraźnie zaznaczony i zmieni swój styl w zależności od bieżącego stanu zaznaczenia (czyli będzie niewyraźny, aktywnie zaznaczony lub pasywnie zaznaczony). Element będzie miał przypisaną jedną z tych 2 stylów (brak stylu oznacza rozmycie lub brak fokusa): – blocklyActiveFocus – blocklyPassiveFocus

Zwracany element musi też mieć określony prawidłowy identyfikator, który jest unikalny na całej stronie. Brak prawidłowego unikalnego identyfikatora może spowodować próbę ustawienia fokusa na jednym węźle (np. przez kliknięcie myszką), co prowadzi do tego, że FocusManager ustawia fokus na innym węźle z tym samym identyfikatorem. Zwrócony element musi też mieć ujemny tabindex (ponieważ menedżer fokusa sam zarządza swoim tabindexem, a aby element mógł być fokusowany w DOM, musi być obecny tabindex).

Zwrócony element musi być widoczny, jeśli węzeł jest kiedykolwiek skupiony za pomocą metody FocusManager.focusNode() lub FocusManager.focusTree(). Element może być ukryty do momentu wywołania metody onNodeFocus() lub stać się ukryty po wywołaniu metody onNodeBlur().

Oczekuje się, że zwracany element nie zmieni się przez cały okres istnienia węzła (czyli jego właściwości mogą się zmieniać, ale zwracany element nigdy nie powinien być nowy).

getFocusableTree() Zwraca najbliższe drzewo nadrzędne tego węzła (w przypadku, gdy drzewo ma pod sobą inne drzewa), które reprezentuje drzewo, do którego należy ten węzeł.
onNodeBlur()

Jest wywoływany, gdy ten węzeł traci aktywny fokus. Może ona nadal mieć pasywny punkt skupienia.

Ma ono te same ograniczenia implementacyjne co metoda onNodeFocus().

onNodeFocus()

Jest wywoływany, gdy ten węzeł jest aktywny.

Pamiętaj, że implementacje mogą zmieniać modyfikatory widoczności, ale nie powinny robić tego w taki sposób: – tworzenie lub usuwanie elementów DOM (w tym za pomocą modułu renderującego lub szuflady). – wpływanie na fokus za pomocą wywołań focus() w DOM lub FocusManagera;