توسيع حقل حالي

من أجل توسيع حقل حالي، يجب عليك تصنيف حقل فرعي (مثل FieldTextInput وFieldColour) ثم تعديل جزء منه ليناسب احتياجاتك. بعض أجزاء الحقل التي يمكنك تعديلها هي:

إذا كنت تريد إنشاء حقل مُخصص لا يحتاج إلى سلوك من أي حقل مُضمّن، يجب عليك تصنيف فئة فرعية Field.

الإضافات الشائعة

تضيف معظم الحقول المخصّصة أحد هذه الأنواع الثلاثة:

  • إدخال النص: إذا أردت أن يكتب المستخدمون في الحقل، يجب تمديد مدته FieldTextInput.
  • رقم: إذا أردت تخزين رقم، يجب تمديد مهلة FieldNumber.
  • قائمة منسدلة: إذا كنت تريد إنشاء قائمة منسدلة ولكنك تريد منها تخزين نموذج مختلف عن السلسلة التلقائية أو نموذج الصورة التلقائي، يجب تمديد FieldDropdown.
    • تحذير: قبل تمديد فترة FieldDropdown، تأكَّد من أنّ خيارات التخصيص في حقل القائمة المنسدلة لا يمكنها تلبية احتياجاتك.

في ظروف معيّنة، يمكنك تمديد نوع حقل مختلف. على سبيل المثال، FieldLabelSerializable تمتد FieldLabel.

التصنيف الفرعي

import * as Blockly from 'blockly';

export class MyCustomTextField extends Blockly.FieldTextInput {

  constructor(value, validator, config) {
    super(value, validator, config);
  }
}

تبدو الدالة الإنشائية للفئة الفرعية للحقل مشابهة جدًا للدالة الإنشائية لحقل مخصص. ينبغي أن يتطابق توقيع دالة الإنشاء الفرعية بشكل عام مع توقيع الدالة الإنشائية الفائقة.

JSON والتسجيل

يجب عليك أيضًا تسجيل الحقل مرة واحدة:

Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);

وتوفير تنفيذ الترميز fromJson في الصف كي يكون متوافقًا مع تنسيق JSON:

static fromJson(options) {
  const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
  return new MySubclassName(value);
}

لمزيد من المعلومات حول تسجيل حقل، يُرجى الاطّلاع على قسم JSON والتسجيل في "إنشاء حقل مخصّص".