blockly > Kolom

Class kolom

Class abstrak untuk kolom yang dapat diedit.

Tanda Tangan:

export declare abstract class Field<T = any> implements IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable 

Penerapan: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

Konstruktor

Konstruktor Pengubah Deskripsi
(konstruktor)(nilai, validator, konfigurasi) Membuat instance baru dari class Field

Properti

Properti Pengubah Jenis Deskripsi
borderRect_ protected SVGRectElement | null Elemen batas SVG kolom yang dirender.
clickTarget_ protected Elemen | null Elemen yang terikat dengan pengendali klik.
constants_ protected ConstantProvider | null Konstanta yang terkait dengan perender blok sumber.
KURSOR string Gaya kursor mouse saat berada di atas hotspot yang memulai editor.
DEFAULT_VALUE T | null

Untuk menimpa nilai default yang ditetapkan di **Kolom**, perbarui prototipe secara langsung.

Contoh: FieldImage.prototype.DEFAULT_VALUE = null;

DAPAT DIEDIT boolean Kolom yang dapat diedit biasanya menampilkan semacam UI yang menunjukkan bahwa kolom tersebut dapat diedit. Semua data tersebut juga akan disimpan oleh penserialisasi.
enabled_ protected boolean Apakah nilai kolom dapat diubah menggunakan editor pada blok yang dapat diedit?
fieldGroup_ protected SVGGElement | null Elemen grup SVG kolom yang dirender.
isDirty_ protected boolean Apakah blok ini perlu dirender ulang?
maxDisplayLength angka Karakter teks maksimum yang akan ditampilkan sebelum menambahkan elipsis.
nama? string (Opsional) Nama kolom. Bersifat unik di setiap blok. Label statis biasanya tidak diberi nama.
NBSP

static

readonly

(tidak dinyatakan) Spasi tanpa jeda.
SERIALISIS boolean Kolom yang dapat diserialisasi disimpan oleh serialisasi, sedangkan kolom yang tidak dapat diserialisasi tidak dapat diserialisasi. Kolom yang dapat diedit juga harus dapat diserialisasi. Hal ini tidak terjadi secara default sehingga SERIALIZABLE kompatibel dengan versi sebelumnya.
size_ protected Ukuran
SKIP_SETUP

static

readonly

simbol unik Nilai yang digunakan untuk menunjukkan saat konstruktor kolom *tidak* boleh menetapkan nilai kolom atau menjalankan Configure_, dan harus mengizinkan subclass untuk melakukannya.
sourceBlock_ protected Blokir | null Blokir kolom yang dilampirkan ini. Dimulai sebagai null, lalu ditetapkan di init.
textContent_ protected Teks | null Elemen konten teks kolom yang dirender.
textElement_ protected SVGTextElement | null Elemen teks SVG kolom yang dirender.
validator_ protected FieldValidator<T> | null Fungsi validasi dipanggil saat pengguna mengedit kolom yang dapat diedit.
value_ protected T | null
visible_ protected boolean Apakah kolom terlihat, atau tersembunyi karena blok diciutkan?

Metode

Metode Pengubah Deskripsi
applyColour()

Memperbarui kolom agar sesuai dengan warna/gaya blok.

Sub-class non-abstrak dapat menerapkan ini jika warna kolom bergantung pada warna blok. Metode ini akan otomatis dipanggil pada waktu yang relevan, seperti saat blok induk atau perender berubah.

Lihat dokumentasi kolom untuk informasi selengkapnya, atau FieldDropdown untuk mengetahui contohnya.

bindEvents_() protected Mengikat peristiwa ke kolom. Dapat diganti oleh subclass jika perlu melakukan penanganan input kustom.
configure_(config) protected Proses peta konfigurasi yang diteruskan ke kolom.
createBorderRect_() protected Buat elemen persegi panjang batas kolom. Tidak dapat diganti oleh subclass. Sebagai gantinya, ubah hasil fungsi di dalam initView, atau buat fungsi terpisah untuk dipanggil.
createTextElement_() protected Membuat elemen teks kolom. Tidak dapat diganti oleh subclass. Sebagai gantinya, ubah hasil fungsi di dalam initView, atau buat fungsi terpisah untuk dipanggil.
doClassValidation_(newValue) protected

Validasi perubahan pada nilai kolom sebelum ditetapkan. Lihat **FieldDropdown** untuk contoh implementasi subclass.

**CATATAN:** Validasi menampilkan satu opsi antara T, null, dan undefined. Implementasi **Kolom** tidak akan pernah menampilkan undefined, tetapi ini valid bagi subclass untuk menampilkan undefined jika nilai baru kompatibel dengan T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue, _fireChangeEvent) protected Digunakan untuk memberi tahu kolom bahwa nilai yang dimasukkan tidak valid. Dapat diganti oleh subclass, lihat FieldTextInput. Tanpa pengoperasian secara default.
doValueUpdate_(newValue) protected Digunakan untuk mengupdate nilai kolom. Dapat diganti oleh subclass untuk melakukan penyimpanan nilai khusus/memperbarui hal-hal eksternal.
fromJson(_options) static

Subclass harus mengimplementasikan ulang metode ini untuk membuat subclass Kolomnya dari objek arg JSON.

Akan terjadi error saat mencoba mendaftarkan subclass kolom di FieldRegistry jika subclass tersebut belum mengganti metode ini.

getAbsoluteXY_() protected Menampilkan koordinat absolut sudut kiri atas kolom ini. Origin (0,0) adalah sudut kiri atas isi halaman.
getBorderRect() protected Mendapatkan elemen persegi panjang batas.
getClickTarget_() protected Elemen untuk mengikat pengendali klik. Jika tidak disetel secara eksplisit, defaultnya adalah root SVG dari kolom tersebut. Saat elemen ini diklik di kolom yang dapat diedit, editor akan terbuka.
getConstants() Dapatkan penyedia konstanta perender.
getDisplayText_() protected Dapatkan teks dari kolom ini untuk ditampilkan pada blok. Mungkin berbeda dari getText karena elipsis dan format lainnya.
getFlipRtl() Menampilkan apakah kita harus membalik kolom dalam RTL atau tidak.
getSize()

Menampilkan tinggi dan lebar kolom.

Ini seharusnya *secara umum* menjadi satu-satunya tempat render_ dipanggil.

getSourceBlock() Dapatkan blok tempat kolom ini dikaitkan.
getSvgRoot() Mendapatkan elemen grup untuk kolom yang dapat diedit ini. Digunakan untuk mengukur ukuran dan untuk penentuan posisi.
getText_() protected Hook developer untuk mengganti teks yang ditampilkan dari kolom ini. Ganti jika representasi teks dari nilai kolom ini bukan hanya string cast dari nilainya. Mengembalikan null untuk menggunakan string cast.
getText() Dapatkan teks dari kolom ini. Ganti getText_ untuk memberikan perilaku yang berbeda dibandingkan sekadar mentransmisikan nilai ke string.
getTextContent() protected Mendapatkan konten teks.
getTextElement() protected Mendapatkan elemen teks.
getTooltip() Menampilkan teks tooltip untuk kolom ini.
getValidator() Mendapatkan fungsi validasi untuk kolom yang dapat diedit, atau null jika tidak ditetapkan.
getValue() Mendapatkan nilai kolom saat ini.
initModel() Menginisialisasi model kolom setelah diinstal pada blok. Tanpa pengoperasian secara default.
initView() protected Buat UI blok untuk kolom ini.
isClickable() Periksa apakah kolom ini menentukan fungsi showEditor_.
isClickableInFlyout(autoClosingFlyout) Periksa apakah kolom harus dapat diklik saat blok berada di menu flyout. Defaultnya adalah kolom dapat diklik di menu flyout yang selalu terbuka seperti toolbox sederhana, tetapi tidak pada menu tutup otomatis seperti kotak alat kategori. Subclass dapat mengganti fungsi ini untuk mengubah perilaku ini. Perhatikan bahwa isClickable juga harus menampilkan benar agar hal ini dapat berpengaruh.
isCurrentlyEditable() Periksa apakah kolom ini saat ini dapat diedit. Beberapa kolom tidak pernah DAPAT DIEDIT (misalnya, label teks). Kolom lain mungkin dapat DIEDIT, tetapi mungkin ada di blok yang tidak dapat diedit atau saat ini dinonaktifkan.
isEnabled() Periksa apakah nilai kolom ini dapat diubah menggunakan editor jika blok sumber dapat diedit.
isFullBlockField() protected

Menentukan apakah kolom ini harus mengisi seluruh blok atau tidak.

Hati-hati saat mengganti fungsi ini. Aplikasi ini mungkin tidak berfungsi seperti yang Anda harapkan / dimaksud karena perilakunya seperti diretas. Jika Anda berpikir untuk mengganti fungsi ini, posting di forum dengan perilaku yang Anda maksudkan untuk melihat apakah ada pendekatan lain.

isSerializable() Periksa apakah kolom ini harus diserialisasi oleh perender XML. Menangani logika untuk kompatibilitas mundur dan status yang tidak sesuai.
isTabNavigable() Menampilkan apakah kolom dapat dinavigasi dengan tab atau tidak.
isVisible() Mendapatkan apakah kolom yang dapat diedit ini terlihat atau tidak.
loadLegacyState(callingClass, state) Memuat status yang diberikan menggunakan hook XML lama, jika harus digunakan. Menampilkan nilai benar untuk menunjukkan bahwa pemuatan telah ditangani, menampilkan nilai salah (false) jika tidak.
onLocationChange(_) Memberi tahu kolom bahwa lokasinya telah berubah.
onMouseDown_(e) protected Menangani peristiwa pointerdown pada kolom.
onShortcut(_shortcut) Menangani pintasan keyboard yang diberikan.
positionBorderRect_() protected Memosisikan persegi panjang batas kolom setelah perubahan ukuran.
positionTextElement_(xOffset, contentWidth) protected Memosisikan elemen teks kolom setelah perubahan ukuran. Ini menangani pemosisian LTR dan RTL.
render_() protected

Digunakan oleh getSize() untuk memindahkan/mengubah ukuran elemen DOM, dan mendapatkan ukuran baru.

Semua rendering yang memiliki efek pada ukuran/bentuk blok harus dilakukan di sini, dan harus dipicu oleh getSize().

repositionForWindowResize()

Hook developer untuk mengubah posisi WidgetDiv selama perubahan ukuran jendela. Anda perlu menentukan hook ini jika kolom Anda memiliki WidgetDiv yang perlu memosisikan ulang dirinya sendiri saat jendela diubah ukurannya. Misalnya, kolom input teks menentukan hook ini sehingga WidgetDiv input dapat mengubah posisinya sendiri pada peristiwa perubahan ukuran jendela. Hal ini sangat penting ketika input modal telah dinonaktifkan, karena perangkat Android akan memicu peristiwa perubahan ukuran jendela saat keyboard virtual terbuka.

Jika Anda ingin WidgetDiv menyembunyikan dirinya sendiri, bukan mengubah posisi, tampilkan false. Ini merupakan perilaku default.

DropdownDivs sudah menangani logika pemosisiannya sendiri, jadi Anda tidak perlu mengganti fungsi ini jika kolom Anda hanya memiliki DropdownDiv.

saveLegacyState(callingClass) protected Menampilkan versi string status XML, jika harus digunakan. Jika tidak, metode ini akan menampilkan null, untuk menandakan kolom harus menggunakan serialisasinya sendiri.
setEnabled(enabled) Tetapkan apakah nilai kolom ini dapat diubah menggunakan editor jika blok sumber dapat diedit.
setSourceBlock(block) Lampirkan kolom ini ke blok.
setTooltip(newTip) Menetapkan tooltip untuk kolom ini.
setValidator(handler)

Menetapkan fungsi validasi baru untuk kolom yang dapat diedit, atau menghapus validator yang disetel sebelumnya.

Fungsi validator mengambil nilai kolom baru, dan menampilkan nilai yang divalidasi. Nilai yang divalidasi dapat berupa nilai input, versi nilai input yang dimodifikasi, atau null untuk membatalkan perubahan.

Jika fungsi tidak menampilkan apa pun (atau menampilkan undefined), nilai baru dianggap valid. Hal ini untuk memungkinkan kolom yang menggunakan fungsi yang divalidasi sebagai notifikasi peristiwa perubahan tingkat kolom.

setValue(newValue, fireChangeEvent) Digunakan untuk mengubah nilai kolom. Menangani validasi dan peristiwa. Subclass harus mengganti doClassValidation_ dan doValueUpdate_, bukan metode ini.
showEditor_(_e) protected Hook developer untuk membuat editor kolom. Opsi ini tidak beroperasi secara default, dan harus diganti untuk membuat editor.
updateEditable() Menambahkan atau menghapus UI yang menunjukkan apakah kolom ini dapat diedit atau tidak.
updateSize_(margin) protected Memperbarui ukuran kolom berdasarkan teks.