フィールドクラス
編集可能なフィールドの抽象クラス。
署名:
export declare abstract class Field<T = any> implements IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
実装: IKeyboardAccessible、IRegistrable、ISerializable、IFocusableNode
コンストラクタ
コンストラクタ | 修飾子 | 説明 |
---|---|---|
(コンストラクタ)(値、バリデータ、構成) | Field クラスの新しいインスタンスを作成します。 |
プロパティ
プロパティ | 修飾子 | タイプ | 説明 |
---|---|---|---|
borderRect_ | protected |
SVGRectElement | null | レンダリングされたフィールドの SVG 境界要素。 |
clickTarget_ | protected |
要素 | null | クリック ハンドラがバインドされている要素。 |
constants_ | protected |
ConstantProvider | null | ソースブロックのレンダラに関連付けられた定数。 |
DEFAULT_VALUE | T | null | [フィールド] に設定されているデフォルト値を上書きするには、プロトタイプを直接更新します。 例: |
|
編集可能 | ブール値 | 通常、編集可能なフィールドには、編集可能であることを示す UI が表示されます。シリアライザによって保存されます。 | |
enabled_ | protected |
ブール値 | 編集可能なブロックのエディタを使用してフィールド値を変更できますか? |
fieldGroup_ | protected |
SVGGElement | null | レンダリングされたフィールドの SVG グループ要素。 |
isDirty_ | protected |
ブール値 | このブロックを再レンダリングする必要がありますか? |
maxDisplayLength | 数値 | 省略記号を追加する前に表示するテキストの最大文字数。 | |
名前 | 文字列 | (省略可)フィールドの名前。各ブロック内で一意。通常、静的ラベルには名前が付けられません。 | |
NBSP |
|
(宣言なし) | ノーブレーク スペース。 |
SERIALIZABLE | ブール値 | シリアル化可能なフィールドはシリアルライザによって保存されますが、シリアル化不可能なフィールドは保存されません。編集可能なフィールドもシリアル化可能である必要があります。SERIALIZABLE が下位互換性を持つように、デフォルトではそうではありません。 | |
size_ | protected |
サイズ | このフィールドのサイズを取得します。getSize() と updateSize() には副作用があるため、サイズの設定/取得時に不要なレンダリングやその他の副作用をトリガーすることなくフィールド境界を調整するサブクラスのシムとして機能します。サブクラスでは、get または set のいずれかをオーバーライドする場合は、両方をオーバーライドする必要があります。実装ではスーパーを直接呼び出すこともできますが、JS 仕様では存在する必要があります。 |
SKIP_SETUP |
|
一意のシンボル | フィールドのコンストラクタがフィールドの値を設定したり、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 |
ブール値 | フィールドは表示されていますか?それとも、ブロックが閉じられているため非表示になっていますか? |
メソッド
メソッド | 修飾子 | 説明 |
---|---|---|
applyColour() | ブロックの色やスタイルに合わせてフィールドを更新します。 フィールドの色がブロックの色に依存する場合は、抽象以外のサブクラスでこれを実装できます。親ブロックやレンダラが変更されたときなど、関連するタイミングで自動的に呼び出されます。 詳細については、フィールドのドキュメントをご覧ください。例については、FieldDropdown をご覧ください。 |
|
bindEvents_() | protected |
イベントをフィールドにバインドします。カスタム入力処理を行う必要がある場合は、サブクラスでオーバーライドできます。 |
canBeFocused() | IFocusableNode.canBeFocused をご覧ください。 | |
configure_(config) | protected |
フィールドに渡された構成マップを処理します。 |
createBorderRect_() | protected |
フィールドの境界 rect 要素を作成します。サブクラスでオーバーライドされない。代わりに、initView 内で関数の結果を変更するか、呼び出す別の関数を作成します。 |
createTextElement_() | protected |
フィールド テキスト要素を作成します。サブクラスでオーバーライドされない。代わりに、initView 内で関数の結果を変更するか、呼び出す別の関数を作成します。 |
dispose() | この編集可能なフィールドに属するすべての DOM オブジェクトとイベントを破棄します。 | |
doClassValidation_(newValue) | protected |
フィールドの値を変更する前に、その変更を検証します。サブクラスの実装例については、**FieldDropdown** をご覧ください。 **注:** 検証では、 |
doClassValidation_(newValue) | protected |
|
doValueInvalid_(_invalidValue, _fireChangeEvent) | protected |
無効な値が入力されたことをフィールドに通知するために使用されます。サブクラスでオーバーライドできます。FieldTextInput をご覧ください。デフォルトでは無効です。 |
doValueUpdate_(newValue) | protected |
フィールドの値を更新するために使用されます。サブクラスでオーバーライドして、値のカスタム ストレージや外部アイテムの更新を行うことができます。 |
forceRerender() | このフィールドがインストールされているブロックを強制的に再レンダリングします。これにより、このフィールドが再レンダリングされ、サイズ変更が調整されます。同じブロック内の他のフィールドは、サイズがすでに記録されているため、再レンダリングされません。 | |
fromJson(_options) | static |
サブクラスでは、このメソッドを再実装して、JSON 引数オブジェクトから Field サブクラスを作成する必要があります。 サブクラスがこのメソッドをオーバーライドしていない場合、FieldRegistry にフィールド サブクラスを登録しようとするとエラーになります。 |
fromXml(fieldElement) | 指定された XML 要素に基づいてフィールドの値を設定します。Blockly.Xml からのみ呼び出す必要があります。 | |
getAbsoluteXY_() | protected |
このフィールドの左上隅の絶対座標を返します。原点(0,0)はページ本文の左上です。 |
getBorderRect() | protected |
境界矩形要素を取得します。 |
getClickTarget_() | protected |
クリック ハンドラをバインドする要素。明示的に設定されていない場合、デフォルトはフィールドの SVG ルートになります。編集可能なフィールドでこの要素をクリックすると、エディタが開きます。 |
getConstants() | レンダラ定数プロバイダを取得します。 | |
getDisplayText_() | protected |
このフィールドのテキストを取得してブロックに表示します。省略記号などの書式設定により、getText と異なる場合があります。 |
getFlipRtl() | 右から左のテキストでフィールドを反転するかどうかを返します。 | |
getFocusableElement() | IFocusableNode.getFocusableElement をご覧ください。 | |
getFocusableTree() | IFocusableNode.getFocusableTree をご覧ください。 | |
getSize() | フィールドの高さと幅を返します。 *通常*、render_ が呼び出される場所はここだけです。 |
|
getSourceBlock() | このフィールドが接続されているブロックを取得します。 | |
getSvgRoot() | この編集可能なフィールドのグループ要素を取得します。サイズの測定と配置に使用されます。 | |
getText_() | protected |
このフィールドから返されるテキストをオーバーライドするデベロッパー フック。このフィールドの値のテキスト表現が、値の文字列キャストだけではない場合は、オーバーライドします。null を返して文字列キャストに戻します。 |
getText() | このフィールドからテキストを取得します。getText_ をオーバーライドして、値を文字列にキャストするだけの動作とは異なる動作を実現します。 | |
getTextContent() | protected |
テキスト コンテンツを取得します。 |
getTextElement() | protected |
テキスト要素を取得します。 |
getTooltip() | このフィールドのツールチップ テキストを返します。 | |
getValidator() | 編集可能なフィールドの検証関数を取得します。設定されていない場合は null を返します。 | |
getValue() | フィールドの現在の値を取得します。 | |
initModel() | ブロックにインストールされたフィールドのモデルを初期化します。デフォルトでは無効です。 | |
initView() | protected |
このフィールドのブロック UI を作成します。 |
isClickable() | このフィールドで showEditor_ 関数が定義されているかどうかを確認します。 | |
isClickableInFlyout(autoClosingFlyout) | ブロックがフライアウトにあるときにフィールドがクリック可能であるかどうかを確認します。デフォルトでは、シンプルなツールボックスなど、常に開いているフローティング ツールチップではフィールドをクリックできますが、カテゴリ ツールボックスなど、自動的に閉じるフローティング ツールチップではクリックできません。サブクラスはこの関数をオーバーライドして、この動作を変更できます。この変更を有効にするには、isClickable も true を返す必要があります。 |
|
isCurrentlyEditable() | このフィールドが現在編集可能かどうかを確認します。一部のフィールドは編集できません(テキストラベルなど)。他のフィールドは編集可能でも、編集不可のブロックに存在する場合や、現在無効になっている場合があります。 | |
isEnabled() | ソースブロックが編集可能な場合は、このフィールドの値をエディタを使用して変更できるかどうかを確認します。 | |
isSerializable() | このフィールドを XML レンダラでシリアル化する必要があるかどうかを確認します。下位互換性と不整合な状態のロジックを処理します。 | |
isVisible() | この編集可能なフィールドが表示されるかどうかを取得します。 | |
loadLegacyState(callingClass, state) | 古い XML フック(使用する場合)を使用して、指定された状態を読み込みます。読み込みが処理されたことを示す true を返します。処理されなかった場合は false を返します。 | |
loadState(state) | 指定された状態値に基づいてフィールドの状態を設定します。シリアル化システムからのみ呼び出される必要があります。 | |
onLocationChange(_) | フィールドの場所が変更されたことをフィールドに通知します。 | |
onMouseDown_(e) | protected |
フィールドでポインタダウン イベントを処理する。 |
onNodeBlur() | IFocusableNode.onNodeBlur をご覧ください。 | |
onNodeFocus() | IFocusableNode.onNodeFocus をご覧ください。 | |
onShortcut(_shortcut) | 指定されたキーボード ショートカットを処理します。 | |
positionBorderRect_() | protected |
サイズ変更後にフィールドの境界長方形を配置。 |
positionTextElement_(xOffset, contentWidth) | protected |
サイズ変更後にフィールドのテキスト要素を配置します。これにより、LTR と RTL の両方の配置が処理されます。 |
referencesVariables() | このフィールドが Blockly 変数を参照しているかどうか。true の場合、シリアル化とシリアル化解除の際に異なる方法で処理する必要がある場合があります。サブクラスはこれをオーバーライドできます。 | |
refreshVariableName() | このフィールドが変数を参照している場合は、このフィールドで参照される変数名を更新します。 | |
render_() | protected |
getSize() で使用され、DOM 要素を移動またはサイズ変更して、新しいサイズを取得します。 ブロックのサイズや形状に影響するレンダリングはすべてここで行い、getSize() によってトリガーする必要があります。 |
repositionForWindowResize() | ウィンドウのサイズ変更中に WidgetDiv の位置を変更するデベロッパー フック。ウィンドウのサイズ変更時に位置を変更する必要がある WidgetDiv がフィールドにある場合は、このフックを定義する必要があります。たとえば、テキスト入力フィールドでは、このフックを定義して、入力 WidgetDiv がウィンドウのサイズ変更イベントで位置を変更できるようにします。これは、モーダル入力が無効になっている場合に特に重要です。Android デバイスでは、ソフト キーボードが開くとウィンドウのサイズ変更イベントが発生します。 WidgetDiv を再配置せずに非表示にするには、false を返します。これはデフォルトの動作です。 DropdownDiv は独自の配置ロジックをすでに処理しているため、フィールドに DropdownDiv のみがある場合は、この関数をオーバーライドする必要はありません。 |
|
saveLegacyState(callingClass) | protected |
XML 状態の文字列バージョンを返します(使用する場合)。それ以外の場合は null を返します。これは、フィールドが独自のシリアル化を使用すべきであることを示します。 |
saveState(_doFullSerialization) | このフィールドの値を、JSON にシリアル化できる値として保存します。シリアル化システムからのみ呼び出される必要があります。 | |
setEnabled(enabled) | ソースブロックが編集可能である場合に、このフィールドの値をエディタを使用して変更できるかどうかを設定します。 | |
setSourceBlock(block) | このフィールドをブロックに接続します。 | |
setTooltip(newTip) | このフィールドのツールチップを設定します。 | |
setValidator(handler) | 編集可能なフィールドに新しい検証関数を設定するか、以前に設定したバリデータを消去します。 バリデータ関数は、新しいフィールド値を受け取り、検証済みの値を返します。検証された値は、入力値、入力値の変更バージョン、または変更を中止する null のいずれかです。 関数が何も返さない場合(または未定義を返す場合)、新しい値は有効と見なされます。これは、フィールドレベルの変更イベント通知として検証済み関数を使用するフィールドを許可するためです。 |
|
setValue(newValue, fireChangeEvent) | フィールドの値を変更するために使用されます。検証とイベントを処理します。サブクラスでは、このメソッドではなく doClassValidation_ と doValueUpdate_ をオーバーライドする必要があります。 | |
showEditor_(_e) | protected |
フィールドのエディタを作成するデベロッパー フック。これはデフォルトでは no-op です。エディタを作成するにはオーバーライドする必要があります。 |
toXml(fieldElement) | このフィールドの値を XML にシリアル化します。Blockly.Xml からのみ呼び出す必要があります。 | |
updateEditable() | このフィールドの編集可 / 不可を示す UI を追加または削除します。 | |
updateSize_(margin) | protected |
テキストに基づいてフィールドのサイズを更新します。 |