blockly > Champ

Classe Field

Classe abstraite pour un champ modifiable.

Signature :

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

Implémentations:IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

Constructeurs

Constructeur Modificateurs Description
(constructor)(valeur, validateur, configuration) Construit une nouvelle instance de la classe Field.

Propriétés

Propriété Modificateurs Type Description
borderRect_ protected SVGRectElement | nul Élément de bordure SVG du champ affiché.
clickTarget_ protected Élément | nul Élément auquel le gestionnaire de clics est lié.
constants_ protected ConstantProvider | nul Constantes associées au moteur de rendu du bloc source.
CURSEUR chaîne Style du curseur de la souris lorsqu'il est placé sur la zone cliquable qui lance l'éditeur
DEFAULT_VALUE J | nul

Pour écraser la valeur par défaut qui est définie dans **Champ**, mettez directement à jour le prototype.

Exemple : FieldImage.prototype.DEFAULT_VALUE = null;

MODIFIABLE booléen Les champs modifiables affichent généralement une sorte d'interface utilisateur indiquant qu'ils sont modifiables. Elles seront également enregistrées par le sérialiseur.
enabled_ protected booléen La valeur du champ peut-elle être modifiée à l'aide de l'éditeur sur un bloc modifiable ?
fieldGroup_ protected SVGGElement | nul Élément de groupe SVG du champ affiché.
isDirty_ protected booléen Ce bloc doit-il être affiché de nouveau ?
maxDisplayLength Nombre Nombre maximal de caractères de texte à afficher avant d'ajouter des points de suspension.
du produit ? chaîne (Facultatif) Nom du champ. Unique dans chaque bloc. Les étiquettes statiques n'ont généralement pas de nom.
NBSP

static

readonly

(non déclaré) Espace insécable.
SÉRIALISABLE booléen Les champs sérialisables sont enregistrés par le sérialiseur, contrairement aux champs non sérialisables. Les champs modifiables doivent également être sérialisables. Ce n'est pas le cas par défaut. SERIALIZABLE est donc rétrocompatible.
size_ protected Taille
SKIP_SETUP

static

readonly

symbole unique Valeur utilisée pour indiquer quand le constructeur d'un champ ne doit *pas* définir la valeur du champ ni exécuter "config_", et doit permettre à une sous-classe de le faire.
sourceBlock_ protected Bloquer | nul Bloquer auquel ce champ est associé. Commence en tant que valeur null, puis le définit dans "init".
textContent_ protected Texte | nul Élément de contenu textuel du champ affiché.
textElement_ protected SVGTextElement | nul Élément de texte SVG du champ affiché.
validator_ protected FieldValidator&lt;T&gt; | nul Fonction de validation appelée lorsque l'utilisateur modifie un champ modifiable.
value_ protected J | nul
visible_ protected booléen Le champ est-il visible ou masqué en raison de la réduction du bloc ?

Méthodes

Méthode Modificateurs Description
applyColour()

Met à jour le champ pour qu'il corresponde à la couleur/au style du bloc.

Des sous-classes non abstraites peuvent utiliser cette méthode si la couleur du champ dépend de la couleur du bloc. Il sera automatiquement appelé aux moments pertinents, par exemple lorsque le bloc parent ou le moteur de rendu change.

Consultez la documentation sur les champs pour en savoir plus, ou "FieldDropdown" pour un exemple.

bindEvents_() protected Liez des événements au champ. Peut être ignoré par les sous-classes si elles doivent gérer les entrées personnalisées.
configure_(config) protected Traitez le mappage de configuration transmis au champ.
createBorderRect_() protected Créez un élément rectangulaire de bordure de champ. À ne pas remplacer par les sous-classes. Modifiez plutôt le résultat de la fonction dans initView ou créez une fonction distincte à appeler.
createTextElement_() protected Créez un élément de texte de champ. À ne pas remplacer par les sous-classes. Modifiez plutôt le résultat de la fonction dans initView ou créez une fonction distincte à appeler.
doClassValidation_(newValue) protected

Validez les modifications apportées à la valeur d'un champ avant qu'elles ne soient définies. Pour obtenir un exemple d'implémentation d'une sous-classe, consultez **FieldDropdown**.

**REMARQUE:** La validation renvoie une option comprise entre T, null et undefined. L'implémentation de **Field** ne renvoie jamais undefined, mais il est possible qu'une sous-classe renvoie undefined si la nouvelle valeur est compatible avec T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue, _fireChangeEvent) protected Utilisé pour indiquer au champ qu'une valeur non valide a été saisie. Peut être remplacé par des sous-classes (voir FieldTextInput). "No-op" par défaut.
doValueUpdate_(newValue) protected Utilisé pour mettre à jour la valeur d'un champ. Peut être remplacé par des sous-classes pour un stockage personnalisé des valeurs ou une mise à jour d'éléments externes.
fromJson(_options) static

Les sous-classes doivent réimplémenter cette méthode pour construire leur sous-classe Field à partir d'un objet d'argument JSON.

Si vous essayez d'enregistrer une sous-classe de champ dans FieldRegistry, une erreur est renvoyée si cette sous-classe n'a pas ignoré cette méthode.

getAbsoluteXY_() protected Renvoie les coordonnées absolues de l'angle supérieur gauche de ce champ. L'origine (0,0) se trouve dans l'angle supérieur gauche du corps de la page.
getBorderRect() protected Récupère l'élément de bordure rectangulaire.
getClickTarget_() protected Élément auquel lier le gestionnaire de clics. Si ce champ n'est pas défini explicitement, la valeur par défaut est la racine SVG du champ. Lorsque l'utilisateur clique sur cet élément dans un champ modifiable, l'éditeur s'ouvre.
getConstants() Permet d'obtenir le fournisseur de constantes du moteur de rendu.
getDisplayText_() protected Récupérez le texte de ce champ afin de l'afficher dans le bloc. Peut différer de getText en raison des points de suspension et d'autres facteurs de mise en forme.
getFlipRtl() Indique si le champ doit être inversé ou non en lecture de droite à gauche.
getSize()

Renvoie la hauteur et la largeur du champ.

En général, il doit s'agir du seul endroit à partir duquel le champ "render_" est appelé.

getSourceBlock() Permet d'obtenir le bloc auquel ce champ est associé.
getSvgRoot() Récupère l'élément de groupe pour ce champ modifiable. Utilisé pour mesurer la taille et le positionnement.
getText_() protected Un hook de développeur pour remplacer le texte renvoyé par ce champ. À ignorer si la représentation textuelle de la valeur de ce champ n'est pas seulement une conversion sous forme de chaîne de sa valeur. Renvoie la valeur "null" pour obtenir une conversion de chaîne.
getText() Récupérez le texte de ce champ. Ignorez getText_ pour fournir un comportement différent de celui consistant à caster la valeur en chaîne.
getTextContent() protected Récupère le contenu textuel.
getTextElement() protected Récupère l'élément textuel.
getTooltip() Affiche le texte de l'info-bulle pour ce champ.
getValidator() Récupère la fonction de validation pour les champs modifiables, ou la valeur null si ce champ n'est pas défini.
getValue() Obtenez la valeur actuelle du champ.
initModel() Initialise le modèle du champ après son installation sur un bloc. "No-op" par défaut.
initView() protected Créez l'interface utilisateur de blocage pour ce champ.
isClickable() Vérifiez si ce champ définit la fonction showEditor_.
isClickableInFlyout(autoClosingFlyout) Vérifiez si le champ doit être cliquable lorsque le bloc se trouve dans un menu déroulant. Par défaut, les champs sont cliquables dans les menus déroulants toujours ouverts tels que "Simple Toolbox", mais pas dans ceux de fermeture automatique comme "category Toolbox". Les sous-classes peuvent remplacer cette fonction pour modifier ce comportement. Notez que isClickable doit également renvoyer la valeur "true" pour que cela ait un effet.
isCurrentlyEditable() Vérifiez si ce champ est actuellement modifiable. Certains champs ne peuvent jamais être modifiés (par exemple, les libellés de texte). D'autres champs peuvent être MODIFIER, mais ils peuvent exister sur des blocs non modifiables ou être actuellement désactivés.
isEnabled() Vérifiez si la valeur de ce champ peut être modifiée à l'aide de l'éditeur lorsque le bloc source est modifiable.
isFullBlockField() protected

Définit si ce champ doit occuper l'intégralité du bloc ou non.

Soyez prudent lorsque vous remplacez cette fonction. Cela risque de ne pas fonctionner comme prévu, car le comportement a été en quelque sorte piraté. Si vous envisagez de remplacer cette fonction, publiez un message sur le forum en indiquant le comportement souhaité pour voir s'il existe une autre approche.

isSerializable() Vérifiez si ce champ doit être sérialisé par le moteur de rendu XML. Gère la logique de rétrocompatibilité et d'états incongrus.
isTabNavigable() Indique si le champ est navigable via la touche de tabulation.
isVisible() Détermine si ce champ modifiable est visible ou non.
loadLegacyState(callingClass, state) Charge l'état donné à l'aide des anciens hooks XML, le cas échéant. Renvoie la valeur "true" pour indiquer que le chargement a été géré, ou la valeur "false" dans le cas contraire.
onLocationChange(_) Notifie le champ que les emplacements ont été modifiés.
onMouseDown_(e) protected Gérer un événement de pointeur sur un champ.
onShortcut(_shortcut) Gère le raccourci clavier donné.
positionBorderRect_() protected Positionne le rectangle de la bordure d'un champ après un changement de taille.
positionTextElement_(xOffset, contentWidth) protected Permet de positionner l'élément textuel d'un champ après un changement de taille. Cela permet de les positionner de gauche à droite et de droite à gauche.
render_() protected

Utilisé par getSize() pour déplacer/redimensionner tous les éléments DOM et obtenir la nouvelle taille.

Tout rendu ayant un effet sur la taille/la forme du bloc doit être effectué ici et doit être déclenché par getSize().

repositionForWindowResize()

Accroche développeur permettant de repositionner le WidgetDiv lors du redimensionnement d'une fenêtre. Vous devez définir ce hook si votre champ comporte un objet WidgetDiv qui doit se repositionner lorsque la fenêtre est redimensionnée. Par exemple, les champs de saisie de texte définissent ce hook de sorte que l'entrée WidgetDiv puisse se repositionner sur un événement de redimensionnement de fenêtre. Cela est particulièrement important lorsque les entrées modales sont désactivées, car les appareils Android déclenchent un événement de redimensionnement de fenêtre à l'ouverture du clavier virtuel.

Si vous souhaitez que le WidgetDiv se masque au lieu d'être repositionné, renvoyez la valeur false. Il s'agit du comportement par défaut.

Les objets DropdownDiv gèrent déjà leur propre logique de positionnement. Vous n'avez donc pas besoin d'ignorer cette fonction si votre champ ne contient qu'un objet DropdownDiv.

saveLegacyState(callingClass) protected Renvoie une version concaténée de l'état XML, si elle doit être utilisée. Sinon, elle renvoie une valeur nulle pour indiquer que le champ doit utiliser sa propre sérialisation.
setEnabled(enabled) Indiquez si la valeur de ce champ peut être modifiée dans l'éditeur lorsque le bloc source est modifiable.
setSourceBlock(block) Associez ce champ à un bloc.
setTooltip(newTip) Définit l'info-bulle pour ce champ.
setValidator(handler)

Définit une nouvelle fonction de validation pour les champs modifiables ou efface un programme de validation précédemment défini.

La fonction de validation prend en compte la nouvelle valeur du champ et renvoie une valeur validée. La valeur validée peut être la valeur d'entrée, une version modifiée de la valeur d'entrée ou la valeur "null" pour annuler la modification.

Si la fonction ne renvoie rien (ou renvoie une valeur non définie), la nouvelle valeur est acceptée comme valide. Cela permet de permettre aux champs utilisant la fonction validée comme notification d'événement de modification au niveau du champ.

setValue(newValue, fireChangeEvent) Permet de modifier la valeur du champ. Gère la validation et les événements. Les sous-classes doivent remplacer doClassValidation_ et doValueUpdate_ plutôt que cette méthode.
showEditor_(_e) protected Accroche développeur permettant de créer un éditeur pour le champ. Il s'agit d'une opération no-op par défaut. Vous devez la remplacer pour créer un éditeur.
updateEditable() Ajoutez ou supprimez l'interface utilisateur qui indique si ce champ est modifiable ou non.
updateSize_(margin) protected Met à jour la taille du champ en fonction du texte.