Classe de champ
Classe abstraite pour un champ modifiable.
Signature :
export declare abstract class Field<T = any> implements IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
Implémente: IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
Constructeurs
Constructeur | Modificateurs | Description |
---|---|---|
(constructeur)(valeur, validateur, configuration) | Construit une instance de la classe Field . |
Propriétés
Propriété | Modificateurs | Type | Description |
---|---|---|---|
borderRect_ | protected |
SVGRectElement | null | Élément de bordure SVG du champ affiché. |
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. |
DEFAULT_VALUE | T | null | Pour écraser la valeur par défaut définie dans "Champ", modifiez directement le prototype. Exemple : |
|
MODIFIABLE | booléen | Les champs modifiables affichent généralement une sorte d'UI indiquant qu'ils sont modifiables. Ils seront également enregistrés par le sérialiseur. | |
enabled_ | protected |
booléen | La valeur du champ peut-elle être modifiée à l'aide de l'éditeur dans un bloc modifiable ? |
fieldGroup_ | protected |
SVGGElement | null | Élément de groupe SVG du champ affiché. |
isDirty_ | protected |
booléen | Ce bloc doit-il être à nouveau affiché ? |
maxDisplayLength | Total | Nombre maximal de caractères de 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 |
|
(non déclaré) | Espace insécable. |
SERIALIZABLE | booléen | Les champs sérialisables sont enregistrés par le sérialisateur, contrairement aux champs non sérialisables. Les champs modifiables doivent également être sérialisables. Ce n'est pas le cas par défaut, afin que SERIALIZABLE soit rétrocompatible. | |
size_ | protected |
Taille | Récupère la taille de ce champ. Étant donné que getSize() et updateSize() ont des effets secondaires, ils servent de shim pour les sous-classes qui souhaitent ajuster les limites de champ lors du paramétrage/de la récupération de la taille sans déclencher de rendu indésirable ni d'autres effets secondaires. Notez que les sous-classes doivent remplacer *tous les deux* get et set si l'un d'eux est remplacé. L'implémentation peut simplement appeler directement super, mais elle doit exister conformément à la spécification JS. |
SKIP_SETUP |
|
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_, et doit permettre à une sous-classe de le faire à la place. |
sourceBlock_ | protected |
Block | null | Bloc auquel ce champ est associé. Commence par la valeur nulle, puis est défini dans l'initialisation. |
textContent_ | protected |
Texte | null | Élément de contenu textuel du champ affiché. |
textElement_ | protected |
SVGTextElement | null | Élément textuel SVG du champ affiché. |
validator_ | protected |
FieldValidator<T> | null | Fonction de validation appelée lorsque l'utilisateur modifie un champ modifiable. |
value_ | protected |
T | null | |
visible_ | protected |
booléen | Le champ est-il visible ou masqué en raison du bloc réduit ? |
Méthodes
Méthode | Modificateurs | Description |
---|---|---|
applyColour() | Met à jour le champ pour qu'il corresponde à la couleur/au style du bloc. Les sous-classes non abstraites peuvent souhaiter implémenter cette fonctionnalité 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. Pour en savoir plus, consultez la documentation sur le champ ou FieldDropdown pour obtenir un exemple. |
|
bindEvents_() | protected |
Liez des événements au champ. Peut être remplacé par des sous-classes si elles doivent gérer les entrées personnalisées. |
canBeFocused() | Voir IFocusableNode.canBeFocused. | |
configure_(config) | protected |
Traitez le mappage de configuration transmis au champ. |
createBorderRect_() | protected |
Créez un élément de rectangle de bordure de champ. Ne doit pas être remplacé 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 doit pas être remplacé par les sous-classes. Modifiez plutôt le résultat de la fonction dans initView ou créez une fonction distincte à appeler. |
dispose() | Éliminez tous les objets et événements DOM appartenant à ce champ éditable. | |
doClassValidation_(newValue) | protected |
Validez les modifications apportées à la valeur d'un champ avant qu'elles ne soient définies. Consultez **FieldDropdown** pour voir un exemple d'implémentation de sous-classe. **REMARQUE** : La validation renvoie une option parmi |
doClassValidation_(newValue) | protected |
|
doValueInvalid_(_invalidValue, _fireChangeEvent) | protected |
Permet d'indiquer au champ qu'une valeur non valide a été saisie. Peut être remplacé par des sous-classes. Voir FieldTextInput. Aucune action par défaut. |
doValueUpdate_(newValue) | protected |
Permet de mettre à jour la valeur d'un champ. Peut être remplacé par des sous-classes pour effectuer un stockage personnalisé des valeurs/une mise à jour d'éléments externes. |
forceRerender() | Forcer le rendu du bloc sur lequel ce champ est installé, ce qui le renverra et ajustera les modifications de taille. Les autres champs du même bloc ne seront pas ré-affichés, car leurs tailles ont déjà été enregistrées. | |
fromJson(_options) | static |
Les sous-classes doivent réimplémenter cette méthode pour créer leur sous-classe de champ à partir d'un objet d'argument JSON. Une erreur se produit si vous essayez d'enregistrer une sous-classe de champ dans FieldRegistry si cette sous-classe n'a pas remplacé cette méthode. |
fromXml(fieldElement) | Définit la valeur du champ en fonction de l'élément XML donné. Ne doit être appelé que par Blockly.Xml. | |
getAbsoluteXY_() | protected |
Renvoie les coordonnées absolues du coin 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 rectangle de bordure. |
getClickTarget_() | protected |
Élément auquel associer le gestionnaire de clics. Si ce champ n'est pas défini explicitement, la racine SVG du champ est utilisée par défaut. Lorsque vous cliquez sur cet élément sur un champ éditable, l'éditeur s'ouvre. |
getConstants() | Obtenez 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 des points de suspension et d'autres formats. |
getFlipRtl() | Indique si le champ doit être inversé en mode RTL. | |
getFocusableElement() | Voir IFocusableNode.getFocusableElement. | |
getFocusableTree() | Voir IFocusableNode.getFocusableTree. | |
getSize() | Renvoie la hauteur et la largeur du champ. *En général*, il s'agit du seul endroit à partir duquel render_ 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 |
Crochet de développeur permettant de remplacer le texte renvoyé par ce champ. Forcer si la représentation textuelle de la valeur de ce champ n'est pas simplement une conversion de sa valeur en chaîne. Renvoyez la valeur null pour recourir à une conversion en chaîne. |
getText() | Récupérez le texte de ce champ. Remplacez getText_ pour obtenir un comportement différent de celui qui consiste simplement à caster la valeur en chaîne. | |
getTextContent() | protected |
Récupère le contenu textuel. |
getTextElement() | protected |
Récupère l'élément de texte. |
getTooltip() | Renvoie le texte de l'info-bulle pour ce champ. | |
getValidator() | Récupère la fonction de validation pour les champs modifiables, ou "null" si elle n'est pas définie. | |
getValue() | Récupérez la valeur actuelle du champ. | |
initModel() | Initialise le modèle du champ après son installation sur un bloc. Aucune action par défaut. | |
initView() | protected |
Créez l'UI 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 bloc est dans un panneau déroulant. Par défaut, les champs sont cliquables dans les volets déroulants toujours ouverts, comme la boîte à outils simple, mais pas dans les volets déroulants à fermeture automatique, comme la boîte à outils de catégorie. 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 (par exemple, les libellés de texte). D'autres champs peuvent être MODIFIABLES, mais ils peuvent exister dans 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. | |
isSerializable() | Indique si ce champ doit être sérialisé par le moteur de rendu XML. Gère la logique de rétrocompatibilité et les états incohérents. | |
isVisible() | Indique 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 "true" pour indiquer que le chargement a été géré, ou "false" dans le cas contraire. | |
loadState(state) | Définit l'état du champ en fonction de la valeur d'état donnée. Ne doit être appelé que par le système de sérialisation. | |
onLocationChange(_) | Informe le champ qu'il a changé d'emplacement. | |
onMouseDown_(e) | protected |
Gérer un événement pointerdown sur un champ |
onNodeBlur() | Voir IFocusableNode.onNodeBlur. | |
onNodeFocus() | Voir IFocusableNode.onNodeFocus. | |
onShortcut(_shortcut) | Gère le raccourci clavier donné. | |
positionBorderRect_() | protected |
Positionnez le rectangle de bordure d'un champ après un changement de taille. |
positionTextElement_(xOffset, contentWidth) | protected |
Positionnez l'élément de texte d'un champ après un changement de taille. Cela gère le positionnement LTR et RTL. |
referencesVariables() | Indique si ce champ fait référence à des variables Blockly. Si la valeur est "true", il peut être nécessaire de la gérer différemment lors de la sérialisation et de la désérialisation. Les sous-classes peuvent remplacer cette valeur. | |
refreshVariableName() | Actualisez le nom de la variable référencée par ce champ si ce champ fait référence à des variables. | |
render_() | protected |
Utilisé par getSize() pour déplacer/redimensionner des éléments DOM et obtenir la nouvelle taille. Tout rendu ayant un impact sur la taille/la forme du bloc doit être effectué ici et doit être déclenché par getSize(). |
repositionForWindowResize() | Crochet de développeur permettant de repositionner le WidgetDiv lors d'un redimensionnement de 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 le WidgetDiv de saisie puisse se repositionner lors d'un é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 lorsque le clavier virtuel s'ouvre. Si vous souhaitez que le WidgetDiv se masque au lieu de se repositionner, renvoyez la valeur "false". Il s'agit du comportement par défaut. Les DropdownDivs gèrent déjà leur propre logique de positionnement. Vous n'avez donc pas besoin de remplacer cette fonction si votre champ ne comporte qu'un DropdownDiv. |
|
saveLegacyState(callingClass) | protected |
Renvoie une version concaténée de l'état XML, si elle doit être utilisée. Sinon, la valeur renvoyée est nulle pour indiquer que le champ doit utiliser sa propre sérialisation. |
saveState(_doFullSerialization) | Enregistre la valeur de ce champ en tant qu'élément pouvant être sérialisé au format JSON. Ne doit être appelé que par le système de sérialisation. | |
setEnabled(enabled) | Définissez 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 bloc. | |
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 précédemment défini. La fonction de validation utilise la nouvelle valeur du champ et renvoie la 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 nulle pour interrompre la modification. Si la fonction ne renvoie rien (ou renvoie une valeur non définie), la nouvelle valeur est considérée comme valide. Cela permet aux champs d'utiliser 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 |
Crochet de développeur permettant de créer un éditeur pour le champ. Cette valeur est définie sur "no-op" par défaut et doit être remplacée pour créer un éditeur. |
toXml(fieldElement) | Sérialise la valeur de ce champ au format XML. Ne doit être appelé que par Blockly.Xml. | |
updateEditable() | Ajoutez ou supprimez l'UI indiquant si ce champ est modifiable ou non. | |
updateSize_(margin) | protected |
Met à jour la taille du champ en fonction du texte. |