Jika pengguna mengklik kanan (atau menekan lama) pada blok atau ruang kerja, menu konteks dengan tindakan tambahan akan ditampilkan. Anda dapat mengonfigurasi menu konteks ini untuk menampilkan opsi tambahan atau menghapus opsi {i>default<i}. Panduan ini membahas cara menambahkan opsi kustom ke semua blok, atau semua ruang kerja. Jika Anda ingin mengubah menu konteks untuk satu jenis blok saja, lihat informasi di halaman pemblokiran kustom.
API menu konteks
Class ContextMenuRegistry
berisi metode untuk mendaftar, membatalkan pendaftaran,
dan mendapatkan semua opsi menu konteks. Class ini bersifat singleton, sehingga metode
harus dipanggil pada objek Blockly.ContextMenuRegistry.registry
, bukan
membuat instance instance baru sendiri. Class ContextMenu
memanggil
metode getContextMenuItems
setiap kali menu konteks harus ditampilkan. Jika
blok atau ruang kerja memiliki fungsi customContextMenu
, blok tersebut akan dipanggil setelahnya untuk
mengubah daftar opsi.
Menambahkan opsi kustom
Setiap opsi menu dalam registry memiliki beberapa properti:
callback
: Fungsi yang dipanggil saat opsi menu diklik.scopeType
: Salah satu dariBlockly.ContextMenuRegistry.ScopeType.BLOCK
atauBlockly.ContextMenuRegistry.ScopeType.WORKSPACE
untuk tempat opsi ini harus ditampilkan. Jika opsi harus ditampilkan untuk ruang kerja dan blok, opsi tersebut harus didaftarkan sekali untuk setiap scopeType.displayText
: String, atau HTML, atau fungsi yang menampilkan salah satu dari yang pertama. Menentukan teks yang ditampilkan di menu.preconditionFn
: Fungsi yang menampilkan salah satu darienabled
,disabled
, atauhidden
untuk menentukan apakah dan bagaimana opsi menu harus dirender.weight
: Angka yang menentukan tata urutan opsi. Opsi dengan bobot yang lebih tinggi akan muncul nanti di menu konteks.id
: ID string unik untuk opsi.
Setiap fungsi callback
, displayText
(jika fungsi), dan preconditionFn
akan dipanggil dengan objek Scope
yang berisi informasi tentang ruang kerja atau blok yang tepat yang diklik. Dengan cara ini, opsi menu konteks Anda
dapat merujuk properti tentang ruang kerja atau blok. Misalnya, opsi menu konteks yang memungkinkan pengguna menghapus semua blok akan menampilkan "Delete 42
blocks" jika ruang kerja berisi 42 blok. Dengan preconditionFn
, opsi menu dapat berupa enabled
jika beberapa properti blok benar, atau disabled
jika tidak.
Untuk contoh lainnya, Anda dapat melihat pendaftaran opsi menu konteks default di contextmenu_items.js.
Mengubah atau menghapus opsi default
Anda dapat membatalkan pendaftaran opsi apa pun dengan
Blockly.ContextMenuRegistry.registry.unregister(id)
. ID untuk opsi default ada di contextmenu_items.js.
Untuk mengubah opsi default, panggil getItem
dengan ID dan ubah sesuai kebutuhan.