blockly > IFocusableNode

Antarmuka IFocusableNode

Mewakili apa pun yang dapat memiliki fokus input.

Tanda Tangan:

export interface IFocusableNode 

Metode

Metode Deskripsi
canBeFocused()

Menunjukkan apakah node ini mengizinkan fokus. Jika nilai yang ditampilkan adalah salah (false), tidak ada metode IFocusableNode lain yang akan dipanggil.

Perhatikan bahwa perhatian khusus harus diberikan jika penerapan fungsi ini mengubah nilai yang ditampilkan secara dinamis selama masa aktif node karena kondisi lingkungan tertentu dapat memengaruhi kemampuan elemen DOM node ini untuk menerima fokus (seperti apakah elemen memiliki tabindex positif atau nol). Selain itu, perubahan dari nilai benar menjadi salah saat node memegang fokus tidak akan segera mengubah fokus node saat ini atau status internal FocusManager, sehingga dapat mengakibatkan beberapa fungsi node dipanggil nanti saat tidak fokus (karena sebelumnya dianggap dapat difokuskan pada saat difokuskan).

Implementasi umumnya selalu menampilkan nilai benar di sini, kecuali jika ada situasi yang menyebabkan node ini harus dilewati untuk pertimbangan fokus. Contohnya dapat mencakup dinonaktifkan, hanya baca, dekorasi visual murni, atau node tanpa representasi visual yang harus menerapkan antarmuka ini (misalnya, karena antarmuka induk memperluasnya). Perhatikan praktik terbaik aksesibilitas saat menentukan apakah sebuah node harus dapat difokuskan karena elemen yang dinonaktifkan dan hanya baca pun masih sering relevan untuk memberikan konteks organisasi kepada pengguna (terutama saat menggunakan pembaca layar).

getFocusableElement()

Menampilkan elemen DOM yang dapat diminta secara eksplisit untuk menerima fokus.

PENTING: Perhatikan bahwa elemen ini diharapkan memiliki kehadiran visual di halaman karena akan difokuskan secara eksplisit dan gaya elemennya akan diubah bergantung pada status fokusnya saat ini (yaitu, tidak fokus, fokus aktif, dan fokus pasif). Elemen akan memiliki salah satu dari dua gaya yang dilampirkan (jika tidak ada gaya, berarti buram/tidak fokus): - blocklyActiveFocus - blocklyPassiveFocus

Elemen yang ditampilkan juga harus memiliki ID valid yang ditentukan, dan ID ini harus unik di seluruh halaman. Jika ID tidak unik dengan benar, mencoba memfokuskan satu node (seperti melalui klik mouse) dapat menyebabkan node lain dengan ID yang sama menjadi fokus oleh FocusManager.

Elemen yang ditampilkan harus terlihat jika node pernah difokuskan melalui FocusManager.focusNode() atau FocusManager.focusTree(). Elemen dapat disembunyikan hingga onNodeFocus() dipanggil, atau disembunyikan dengan panggilan ke onNodeBlur().

Elemen yang sebenarnya ditampilkan tidak akan berubah selama masa aktif node (yaitu, propertinya dapat berubah, tetapi elemen baru tidak boleh ditampilkan). Selain itu, elemen yang ditampilkan akan memiliki tabindex yang diganti di seluruh siklus proses node dan FocusManager ini.

Jika node memerlukan kemampuan untuk difokuskan secara langsung tanpa difokuskan terlebih dahulu melalui FocusManager, node tersebut harus menetapkan indeks tabnya sendiri.

getFocusableTree() Menampilkan hierarki induk terdekat dari node ini (dalam kasus saat hierarki memiliki hierarki yang berbeda di bawahnya), yang merepresentasikan hierarki tempat node ini berada.
onNodeBlur()

Dipanggil saat node ini kehilangan fokus aktif. Fokus pasif mungkin masih aktif.

Hal ini memiliki batasan penerapan yang sama seperti onNodeFocus().

onNodeFocus()

Dipanggil saat node ini menerima fokus aktif.

Perhatikan bahwa implementasi dapat mengubah pengubah visibilitas, tetapi harus menghindari hal berikut: - Membuat atau menghapus elemen DOM (termasuk melalui perender atau drawer). - Memengaruhi fokus melalui panggilan DOM focus() atau FocusManager.