blockly > フィールド

Field クラス

編集可能なフィールドの抽象クラス。

署名:

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

実装: IASTNodeLocationSvgIASTNodeLocationWithBlockIKeyboardAccessibleIRegistrableISerializable

コンストラクタ

コンストラクタ 修飾子 説明
(structor)(値, バリデータ, 構成) Field クラスの新しいインスタンスを作成します。

プロパティ

プロパティ 修飾子 種類 説明
borderRect_ protected SVGRectElement | null レンダリングされたフィールドの SVG 枠線要素。
clickTarget_ protected 要素 | null クリック ハンドラがバインドされている要素。
constants_ protected ConstantProvider | null ソースブロックのレンダラに関連付けられた定数。
CURSOR string エディタを起動するホットスポットにカーソルを合わせたときのマウスカーソルのスタイル。
DEFAULT_VALUE T | null

[**Field**] に設定されているデフォルト値を上書きするには、プロトタイプを直接更新します。

例: FieldImage.prototype.DEFAULT_VALUE = null;

編集可能 boolean 編集可能なフィールドには通常、編集可能であることを示すなんらかの UI が表示されます。また、シリアライザによっても保存されます。
enabled_ protected boolean 編集可能なブロックのエディタを使用してフィールドの値を変更できますか?
fieldGroup_ protected SVGGElement | null レンダリングされたフィールドの SVG グループ要素。
isDirty_ protected boolean このブロックを再レンダリングする必要はありますか?
maxDisplayLength 数値 省略記号を追加する前に表示するテキストの最大文字数。
名前は? string (省略可)フィールドの名前。各ブロック内で一意。通常、静的ラベルには名前がありません。
NBSP

static

readonly

(未申告) 改行しないスペース。
直列化可能 boolean シリアル化可能なフィールドはシリアライザによって保存されますが、シリアル化できないフィールドは保存されません。編集可能なフィールドはシリアル化可能であることも必要です。これはデフォルトでは一致しないため、SERIALIZABLE には下位互換性があります。
size_ protected サイズ
SKIP_SETUP

static

readonly

一意の記号 フィールドのコンストラクタがフィールドの値を設定すべきでないか、または Configure_ を実行すべきでないかを知らせるために使用される値で、代わりにサブクラスがそれを実行できるようにする必要があります。
sourceBlock_ protected ブロック | null このフィールドの接続をブロックします。null で開始し、init で設定します。
textContent_ protected テキスト | null レンダリングされたフィールドのテキスト コンテンツ要素。
textElement_ protected SVGTextElement | null レンダリングされたフィールドの SVG テキスト要素。
validator_ protected FieldValidator<T> | null ユーザーが編集可能なフィールドを編集するときに呼び出される検証関数。
value_ protected T | null
visible_ protected boolean このフィールドは表示状態になっていますか?それとも、ブロックが閉じられているために非表示になっていますか?

Methods

メソッド 修飾子 説明
applyColour()

ブロックの色やスタイルに合わせてフィールドを更新します。

フィールドの色がブロックの色に依存する場合、抽象以外のサブクラスでこれを実装することをおすすめします。親ブロックやレンダラが変更されたときなど、適切なタイミングで自動的に呼び出されます。

詳細については、フィールドのドキュメントまたは FieldDropdown の例をご覧ください。

bindEvents_() protected イベントをフィールドにバインドします。カスタム入力処理を行う必要がある場合は、サブクラスでオーバーライドできます。
configure_(config) protected フィールドに渡された構成マップを処理します。
createBorderRect_() protected フィールド枠の長方形要素を作成します。サブクラスでオーバーライドされないこと。代わりに、initView 内で関数の結果を変更するか、呼び出す別の関数を作成します。
createTextElement_() protected フィールド テキスト要素を作成します。サブクラスでオーバーライドされないこと。代わりに、initView 内で関数の結果を変更するか、呼び出す別の関数を作成します。
doClassValidation_(newValue) protected

フィールドの値への変更を設定する前に検証します。サブクラスの実装例については、**FieldDropdown** をご覧ください。

**注:** Validation は、Tnullundefined のいずれか 1 つのオプションを返します。**Field** の実装が undefined を返すことはありませんが、新しい値が T と互換性があれば、サブクラスが undefined を返すことは有効です。

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue) protected 無効な値が入力されたことをフィールドに通知するために使用されます。サブクラスでオーバーライドできます。FieldTextInput をご覧ください。デフォルトでは no-op です。
doValueUpdate_(newValue) protected フィールドの値を更新するために使用します。値のカスタム ストレージや外部のものの更新を行うために、サブクラスでオーバーライドできます。
getAbsoluteXY_() protected このフィールドの左上隅の絶対座標を返します。原点(0,0)はページ本文の左上隅です。
getBorderRect() protected 枠線の長方形要素を取得します。
getClickTarget_() protected クリック ハンドラをバインドする要素。明示的に設定しない場合、フィールドの SVG ルートがデフォルトになります。この要素が編集可能なフィールドをクリックすると、エディタが開きます。
getConstants() レンダラ定数プロバイダを取得します。
getDisplayText_() protected このフィールドからテキストを取得してブロックに表示します。省略記号やその他の形式により、getText と異なる場合があります。
getFlipRtl() RTL でフィールドを反転するかどうかを返します。
getSize()

フィールドの高さと幅を返します。

一般的に、これは render_ が呼び出される唯一の場所です。

getSourceBlock() このフィールドが接続されているブロックを取得します。
getSvgRoot() この編集可能なフィールドのグループ要素を取得します。サイズの測定と位置決めに使用されます。
getText_() protected このフィールドで返されたテキストをオーバーライドするデベロッパー フック。このフィールドの値のテキスト表現が単なる文字列キャストではない場合、オーバーライドします。null を返すと、文字列キャストに置き換わります。
getText() このフィールドからテキストを取得します。getText_ をオーバーライドして、単に値を文字列にキャストするのとは違う動作を提供します。
getTextContent() protected テキスト コンテンツを取得します。
getTextElement() protected テキスト要素を取得します。
getTooltip() このフィールドのツールチップ テキストを返します。
getValidator() 編集可能なフィールドの検証関数を取得します。設定されていない場合は null を取得します。
getValue() フィールドの現在の値を取得します。
initModel() ブロックにインストールされたフィールドのモデルを初期化します。デフォルトでは no-op です。
initView() protected このフィールドのブロック UI を作成します。
isClickable() このフィールドで showEditor_ 関数が定義されているかどうかを確認します。
isClickableInFlyout(autoClosingFlyout) ブロックがフライアウトに表示されているときに、フィールドがクリック可能かどうかを確認します。デフォルトでは、シンプルなツールボックスなどの常時開くフライアウトではフィールドがクリックできますが、カテゴリ ツールボックスなどの自動閉じるフライアウトではクリックできません。サブクラスでこの関数をオーバーライドすることで、この動作を変更できます。これを有効にするには、isClickable も true を返す必要があります。
isCurrentlyEditable() このフィールドは現在編集可能かどうかを確認します。一部のフィールドは編集できません(テキストラベルなど)。編集可能にするフィールドでも、編集不可のブロックに存在するか、無効になっている可能性があります。
isEnabled() ソースブロックが編集可能な場合に、エディタを使用してこのフィールドの値を変更できるかどうかを確認します。
isFullBlockField() protected

このフィールドがブロック全体を占めるかどうかを定義します。

この関数をオーバーライドする場合は注意が必要です。動作がハッキングされていたため、期待どおりに動作しない可能性があります。この機能のオーバーライドを検討している場合は、意図した動作をフォーラムに投稿して、別のアプローチがないか確認してみてください。

isSerializable() このフィールドを XML レンダラでシリアル化する必要があるかどうかを確認します。下位互換性と不整合状態のロジックを処理します。
isTabNavigable() フィールドがタブ操作可能かどうかを返します。
isVisible() この編集可能なフィールドが表示されるかどうかを取得します。
loadLegacyState(callingClass, state) 古い XML フックのいずれかを使用しなければならない場合は、そのフックを使って指定された状態を読み込みます。読み込みが処理された場合は true を返し、それ以外の場合は false を返します。
onLocationChange(_) 場所が変更されたことをフィールドに通知します。
onMouseDown_(e) protected フィールドのポインタダウン イベントを処理します。
onShortcut(_shortcut) 指定されたキーボード ショートカットを処理します。
positionBorderRect_() protected サイズ変更後にフィールドの枠線の長方形を配置します。
positionTextElement_(xOffset, contentWidth) protected サイズ変更後にフィールドのテキスト要素を配置します。これは LTR と RTL の両方のポジショニングを処理します。
render_() protected

getSize() が DOM 要素の移動やサイズ変更を行い、新しいサイズを取得するために使用します。

ブロックのサイズや形状に影響するレンダリングはすべてここで行い、getSize() によってトリガーする必要があります。

repositionForWindowResize()

ウィンドウのサイズ変更時に WidgetDiv を再配置するデベロッパー フック。フィールドに WidgetDiv があり、ウィンドウのサイズが変更されたときに自身の位置を変更する必要がある場合は、このフックを定義する必要があります。たとえば、テキスト入力フィールドでこのフックを定義すると、入力 WidgetDiv がウィンドウのサイズ変更イベントで自身を再配置できるようになります。Android デバイスではソフト キーボードが開いたときにウィンドウ サイズ変更イベントが発生するため、モーダル入力が無効になっている場合に特に重要です。

WidgetDiv で位置を変更せずに非表示にする場合は、false を返します。これがデフォルト設定です。

DropdownDivs はすでに独自の配置ロジックを処理しているため、フィールドに DropdownDiv のみがある場合、この関数をオーバーライドする必要はありません。

saveLegacyState(callingClass) protected XML 状態を使用する必要がある場合は、文字列化されたバージョンを返します。それ以外の場合は null が返され、フィールドでは独自のシリアル化の使用が必要であることを示します。
setEnabled(enabled) ソースブロックが編集可能な場合に、エディタを使用してこのフィールドの値を変更できるかどうかを指定します。
setSourceBlock(block) このフィールドをブロックにアタッチします。
setTooltip(newTip) このフィールドのツールチップを設定します。
setValidator(handler)

編集可能なフィールドに新しい検証関数を設定するか、以前に設定されたバリデータをクリアします。

Validator 関数は新しいフィールド値を受け取り、検証された値を返します。検証される値は、入力値、入力値の修正バージョン、変更を中止する null のいずれかです。

関数が何も返さない(または未定義を返す)場合、新しい値が有効と見なされます。これは、検証された関数をフィールド レベルの変更イベント通知として使用するフィールドを可能にするためです。

setValue(newValue, fireChangeEvent) フィールドの値を変更するために使用します。検証とイベントを処理します。サブクラスでは、このメソッドではなく doClassValidation_ と doValueUpdate_ をオーバーライドする必要があります。
showEditor_(_e) protected フィールドのエディタを作成するためのデベロッパー フック。これはデフォルトでは何も行わないため、エディタを作成するにはオーバーライドする必要があります。
updateEditable() このフィールドが編集可能かどうかを示す UI を追加または削除します。
updateSize_(margin) protected テキストに基づいてフィールドのサイズを更新します。