blockly > Champ

Classe de terrain

Classe abstraite pour un champ modifiable.

Signature :

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

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

Constructeurs

Constructeur Les modificateurs Description
(constructeur)(valeur, validateur, configuration) Construit une instance de la classe Field.

Propriétés

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

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

Exemple : FieldImage.prototype.DEFAULT_VALUE = null;

MODIFICABLE boolean 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 boolean La valeur du champ peut-elle être modifiée à l'aide de l'éditeur sur un bloc modifiable ?
fieldGroup_ protected SVGGElement | null Élément de groupe SVG du champ de rendu.
isDirty_ protected boolean Ce bloc doit-il être à nouveau affiché ?
maxDisplayLength number Nombre maximal de caractères du texte à afficher avant d'ajouter des points de suspension.
nom ? chaîne (Facultatif) Nom du champ. Unique dans chaque bloc. Les libellés statiques ne portent généralement pas de nom.
NBSP

static

readonly

(non déclaré) Espace insécable.
Sérialisables boolean 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, de sorte que SERIALIZABLE est 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 configure_, mais doit permettre à une sous-classe de le faire.
sourceBlock_ protected Bloquer | null Le bloc auquel ce champ est associé. Elle commence par "null", puis est définie dans "init".
textContent_ protected Texte | null Élément de contenu textuel du champ affiché.
textElement_ protected SVGTextElement | null Élément de texte SVG du champ rendu.
validator_ protected FieldValidator<T> | null Fonction de validation appelée lorsque l'utilisateur modifie un champ modifiable.
value_ protected T | null
visible_ protected boolean Le champ est-il visible ou masqué en raison de la réduction du bloc ?

Méthodes

Méthode Les modificateurs Description
applyColour()

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

Il peut être utile d'implémenter des sous-classes non abstraites si la couleur du champ dépend de la couleur du bloc. Il sera automatiquement appelé aux moments opportuns, 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 les événements au champ. Peut être ignoré par les sous-classes si elles doivent effectuer une gestion personnalisée des entrées.
configure_(config) protected Traitez le mappage de configuration transmis au champ.
createBorderRect_() protected Créez un élément rectiligne de bordure de champ. Ne pas être remplacés par les sous-classes. À la place, modifiez 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 être remplacés par les sous-classes. À la place, modifiez 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 de les définir. Consultez **FieldDropdown** pour obtenir un exemple d'implémentation de sous-classe.

**REMARQUE:** La validation renvoie une option entre T, null et undefined. L'implémentation de **Field** ne renverra 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) protected Permet d'informer le champ qu'une valeur non valide a été saisie. Peut être remplacé par les sous-classes, voir FieldTextInput. No-op par défaut.
doValueUpdate_(newValue) protected Permet de mettre à jour la valeur d'un champ. Peut être ignoré par les sous-classes pour le stockage personnalisé de valeurs/la mise à jour d'éléments externes.
getAbsoluteXY_() protected Renvoie les coordonnées absolues de l'angle supérieur gauche de ce champ. L'origine (0,0) correspond à 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 le gestionnaire de clics doit être lié. Si ce champ n'est pas défini explicitement, la valeur par défaut est définie sur la racine SVG du champ. Lorsque vous cliquez sur cet élément dans un champ modifiable, l'éditeur s'ouvre.
getConstants() Obtenir le fournisseur de constantes du moteur de rendu
getDisplayText_() protected Obtenez le texte de ce champ à afficher dans le bloc. Peut différer de getText en raison de points de suspension et d'autres facteurs de mise en forme.
getFlipRtl(). Indique si le champ doit être inversé dans le sens de lecture de droite à gauche.
getSize()

Renvoie la hauteur et la largeur du champ.

Il doit *en général* être le seul endroit à partir duquel le rendu est appelé.

getSourceBlock() Récupérez 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 pour le positionnement.
getText_() protected Un hook de développeur pour remplacer le texte renvoyé de ce champ. Valeur à remplacer si la représentation textuelle de la valeur de ce champ n'est pas simplement une conversion de type chaîne de sa valeur. Renvoie la valeur "null" pour recourir à une chaîne castée.
getText() Récupérez le texte de ce champ. Ignorez getText_ pour fournir un comportement différent du fait de simplement caster la valeur en chaîne.
getTextContent() protected Récupère le contenu textuel.
getTextElement() protected Récupère l'élément textuel.
getTooltip() Renvoie 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() Récupère 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 du bloc 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 volume se trouve dans un menu déroulant. Par défaut, les champs sont cliquables dans les volets toujours ouverts tels que "boîte à outils simple", mais pas dans ceux à fermeture automatique, comme celui de la catégorie "Boîte à outils". 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 sont jamais MODIFIABLES (les libellés de texte, par exemple). Il est possible que d'autres champs soient modifiables, mais qu'ils se trouvent sur des blocs non modifiables ou qu'ils soient 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 la totalité du bloc ou non.

Soyez prudent lorsque vous remplacez cette fonction. Il est possible qu'il ne fonctionne pas comme prévu, car il 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 liée à la rétrocompatibilité et aux états incongrus.
isTabNavigable() Indique si le champ peut être parcouru par des tabulations ou non.
isVisible() Détermine si ce champ modifiable est visible ou non.
loadLegacyState(callingClass, state) Charge l'état donné à l'aide des anciens hooks XML, s'ils doivent être utilisés. Renvoie la valeur "true" pour indiquer que le chargement a été effectué. Sinon, la valeur "false" est renvoyée.
onLocationChange(_) Notifie le champ qu'il a changé d'emplacement.
onMouseDown_(e) protected Gérer un événement pointer vers le bas sur un champ
onShortcut(_shortcut) Gère le raccourci clavier donné.
positionBorderRect_() protected Permet de positionner le rectangle de bordure d'un champ après un changement de taille.
positionTextElement_(xOffset, contentWidth) protected Permet de positionner l'élément de texte d'un champ après un changement de taille. Cette option permet de positionner à la fois de gauche à droite et de droite à gauche.
render_() protected

Utilisé par la méthode 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()

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

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

DropdownDivs gère déjà sa propre logique de positionnement. Vous n'avez donc pas besoin de remplacer cette fonction si votre champ ne contient qu'un DropdownDiv.

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

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

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 "non défini"), la nouvelle valeur est acceptée comme valide. Cela permet de définir des 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. Il 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 Un hook du développeur pour 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() Ajoute ou supprime l'interface utilisateur indiquant si ce champ est modifiable ou non.
updateSize_(margin) protected Met à jour la taille du champ en fonction du texte.