Menu Konteks

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 dari Blockly.ContextMenuRegistry.ScopeType.BLOCK atau Blockly.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 dari enabled, disabled, atau hidden 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.