blockly > Campo

Classe di campo

Classe astratta per un campo modificabile.

Firma:

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

Implementa: IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode

Costruttori

Costruttore Modificatori Descrizione
(constructor)(value, validator, config) Costruisce una nuova istanza della classe Field

Proprietà

Proprietà Modificatori Tipo Descrizione
borderRect_ protected SVGRectElement | null L'elemento bordo SVG del campo visualizzato.
clickTarget_ protected Elemento | null L'elemento a cui è associato il gestore dei clic.
constants_ protected ConstantProvider | null Costanti associate al visualizzatore del blocco di origine.
DEFAULT_VALUE T | null

Per sovrascrivere il valore predefinito impostato in **Field**, aggiorna direttamente il prototipo.

Esempio: FieldImage.prototype.DEFAULT_VALUE = null;

MODIFICABILE booleano I campi modificabili in genere mostrano una sorta di interfaccia utente che indica che sono modificabili. Verranno salvati anche dal serializzatore.
enabled_ protected booleano Il valore del campo può essere modificato utilizzando l'editor in un blocco modificabile?
fieldGroup_ protected SVGGElement | null L'elemento gruppo SVG del campo visualizzato.
isDirty_ protected booleano Questo blocco deve essere visualizzato di nuovo?
maxDisplayLength numero Numero massimo di caratteri di testo da visualizzare prima di aggiungere i puntini di sospensione.
name? stringa (Facoltativo) Nome del campo. Univoco all'interno di ogni blocco. Le etichette statiche in genere non hanno nome.
NBSP

static

readonly

(not declared) Spazio unificatore.
SERIALIZABLE booleano I campi serializzabili vengono salvati dal serializzatore, mentre i campi non serializzabili no. I campi modificabili devono essere anche serializzabili. Per impostazione predefinita non è così, in modo che SERIALIZABLE sia compatibile con le versioni precedenti.
size_ protected Dimensioni Restituisce le dimensioni di questo campo. Poiché getSize() e updateSize() hanno effetti collaterali, questo metodo funge da shim per le sottoclassi che vogliono modificare i limiti del campo durante l'impostazione/l'ottenimento delle dimensioni senza attivare il rendering indesiderato o altri effetti collaterali. Tieni presente che le sottoclassi devono sostituire *entrambi* get e set se uno dei due viene sostituito; l'implementazione può semplicemente chiamare direttamente super, ma deve esistere in base alle specifiche JS.
SKIP_SETUP

static

readonly

simbolo univoco Un valore utilizzato per indicare quando il costruttore di un campo *non* deve impostare il valore del campo o eseguire configure_ e deve consentire a una sottoclasse di farlo.
sourceBlock_ protected Block | null Blocco a cui è associato questo campo. Inizia come null, quindi viene impostato in init.
textContent_ protected Testo | null L'elemento del contenuto di testo del campo visualizzato.
textElement_ protected SVGTextElement | null L'elemento di testo SVG del campo visualizzato.
validator_ protected FieldValidator<T> | null Funzione di convalida chiamata quando l'utente modifica un campo modificabile.
value_ protected T | null
visible_ protected booleano Il campo è visibile o nascosto perché il blocco è compresso?

Metodi

Metodo Modificatori Descrizione
applyColour()

Aggiorna il campo in modo che corrisponda al colore/stile del blocco.

Le sottoclassi non astratte potrebbero voler implementare questa funzionalità se il colore del campo dipende dal colore del blocco. Verrà chiamato automaticamente nei momenti opportuni, ad esempio quando cambia il blocco o il renderer principale.

Per ulteriori informazioni, consulta la documentazione del campo o FieldDropdown per un esempio.

bindEvents_() protected Collega gli eventi al campo. Può essere sostituito dalle sottoclassi se devono gestire input personalizzati.
canBeFocused() Consulta IFocusableNode.canBeFocused.
configure_(config) protected Elabora la mappa di configurazione passata al campo.
createBorderRect_() protected Crea un elemento rettangolo del bordo del campo. Non deve essere ignorato dalle sottoclassi. Modifica invece il risultato della funzione all'interno di initView o crea una funzione separata da chiamare.
createTextElement_() protected Crea un elemento di testo del campo. Non deve essere ignorato dalle sottoclassi. Modifica invece il risultato della funzione all'interno di initView o crea una funzione separata da chiamare.
dispose() Elimina tutti gli oggetti e gli eventi DOM appartenenti a questo campo modificabile.
doClassValidation_(newValue) protected

Convalida le modifiche al valore di un campo prima che vengano impostate. Consulta **FieldDropdown** per un esempio di implementazione di una sottoclasse.

**NOTA:** la convalida restituisce un'opzione tra T, null e undefined. L'implementazione di **Field** non restituirà mai undefined, ma è valido che una sottoclasse restituisca undefined se il nuovo valore è compatibile con T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue, _fireChangeEvent) protected Viene utilizzato per segnalare al campo che è stato inserito un valore non valido. Può essere sostituito da sottoclassi, consulta FieldTextInput. Nessuna operazione per impostazione predefinita.
doValueUpdate_(newValue) protected Utilizzato per aggiornare il valore di un campo. Può essere sostituito da sottoclassi per eseguire l'archiviazione personalizzata dei valori/l'aggiornamento di elementi esterni.
forceRerender() Forza la visualizzazione del blocco in cui è installato questo campo, che verrà visualizzato di nuovo e regolato in base alle eventuali modifiche delle dimensioni. Gli altri campi dello stesso blocco non verranno visualizzati di nuovo perché le relative dimensioni sono già state registrate.
fromJson(_options) static

Le sottoclassi devono implementare nuovamente questo metodo per creare la sottoclasse Field da un oggetto arg JSON.

È un errore tentare di registrare una sottoclasse di campo in FieldRegistry se questa sottoclasse non ha sostituito questo metodo.

fromXml(fieldElement) Imposta il valore del campo in base all'elemento XML specificato. Deve essere chiamato solo da Blockly.Xml.
getAbsoluteXY_() protected Restituisce le coordinate assolute dell'angolo in alto a sinistra di questo campo. L'origine (0,0) è l'angolo in alto a sinistra del corpo della pagina.
getBorderRect() protected Recupera l'elemento rettangolo del bordo.
getClickTarget_() protected L'elemento a cui associare il gestore dei clic. Se non impostato esplicitamente, il valore predefinito è la radice SVG del campo. Se fai clic su questo elemento in un campo modificabile, si aprirà l'editor.
getConstants() Recupera il provider della costante del renderer.
getDisplayText_() protected Recupera il testo di questo campo da visualizzare nel blocco. Può essere diverso da getText a causa di puntini di sospensione e altre formattazioni.
getFlipRtl() Restituisce se dobbiamo o meno capovolgere il campo in arabo.
getFocusableElement() Consulta IFocusableNode.getFocusableElement.
getFocusableTree() Consulta IFocusableNode.getFocusableTree.
getSize()

Restituisce l'altezza e la larghezza del campo.

In genere, questo dovrebbe essere l'unico punto da cui viene chiamato render_.

getSourceBlock() Recupera il blocco a cui è associato questo campo.
getSvgRoot() Recupera l'elemento di gruppo per questo campo modificabile. Utilizzato per misurare le dimensioni e per il posizionamento.
getText_() protected Un hook per sviluppatori per eseguire l'override del testo restituito di questo campo. Sostituisci se la rappresentazione di testo del valore di questo campo non è solo un casting di stringa del suo valore. Restituisce null per ricorrere a un passaggio a stringa.
getText() Recupera il testo da questo campo. Sostituisci getText_ per fornire un comportamento diverso rispetto al semplice passaggio del valore a una stringa.
getTextContent() protected Recupera il contenuto del testo.
getTextElement() protected Recupera l'elemento di testo.
getTooltip() Restituisce il testo della descrizione comando per questo campo.
getValidator() Recupera la funzione di convalida per i campi modificabili o null se non impostata.
getValue() Recupera il valore corrente del campo.
initModel() Inizializza il modello del campo dopo che è stato installato in un blocco. Nessuna operazione per impostazione predefinita.
initView() protected Crea l'interfaccia utente del blocco per questo campo.
isClickable() Controlla se questo campo definisce la funzione showEditor_.
isClickableInFlyout(autoClosingFlyout) Controlla se il campo deve essere selezionabile quando il blocco è in un menu a scomparsa. Per impostazione predefinita, i campi sono cliccabili nei menu a scomparsa sempre aperti, come la cassetta degli attrezzi semplice, ma non nei menu a scomparsa che si chiudono automaticamente, come la cassetta degli attrezzi delle categorie. Le sottoclassi possono eseguire l'override di questa funzione per modificare questo comportamento. Tieni presente che isClickable deve anche restituire true affinché questo abbia effetto.
isCurrentlyEditable() Verifica se questo campo è attualmente modificabile. Alcuni campi non sono mai MODIFICABILI (ad es. le etichette di testo). Altri campi potrebbero essere MODIFICABILI, ma potrebbero esistere in blocchi non modificabili o essere attualmente disattivati.
isEnabled() Controlla se il valore di questo campo può essere modificato utilizzando l'editor quando il blocco di origine è modificabile.
isSerializable() Controlla se questo campo deve essere serializzato dal visualizzatore XML. Gestisce la logica per la compatibilità con le versioni precedenti e gli stati incongruenti.
isVisible() Restituisce se questo campo modificabile è visibile o meno.
loadLegacyState(callingClass, state) Carica lo stato specificato utilizzando i vecchi hook XML, se devono essere utilizzati. Restituisce true per indicare che il caricamento è stato gestito, false in caso contrario.
loadState(state) Imposta lo stato del campo in base al valore dello stato specificato. Deve essere chiamato solo dal sistema di serializzazione.
onLocationChange(_) Comunica al campo che ha cambiato posizione.
onMouseDown_(e) protected Gestisci un evento di tipo pointerdown in un campo.
onNodeBlur() Vedi IFocusableNode.onNodeBlur.
onNodeFocus() Consulta IFocusableNode.onNodeFocus.
onShortcut(_shortcut) Gestisce la scorciatoia da tastiera specificata.
positionBorderRect_() protected Posiziona il rettangolo del bordo di un campo dopo una modifica delle dimensioni.
positionTextElement_(xOffset, contentWidth) protected Posiziona l'elemento di testo di un campo dopo una modifica delle dimensioni. Gestisce il posizionamento sia da sinistra a destra che da destra a sinistra.
referencesVariables() Indica se questo campo fa riferimento a variabili Blockly. Se è true, potrebbe dover essere gestito in modo diverso durante la serializzazione e la deserializzazione. Le sottoclassi possono sostituire questo valore.
refreshVariableName() Aggiorna il nome della variabile a cui fa riferimento questo campo, se il campo fa riferimento a variabili.
render_() protected

Utilizzato da getSize() per spostare/ridimensionare gli elementi DOM e ottenere le nuove dimensioni.

Tutto il rendering che influisce sulle dimensioni/sulla forma del blocco deve essere eseguito qui e deve essere attivato da getSize().

repositionForWindowResize()

Un hook per sviluppatori per riposizionare WidgetDiv durante il ridimensionamento di una finestra. Devi definire questo hook se il tuo campo ha un WidgetDiv che deve riposizionarsi quando la finestra viene ridimensionata. Ad esempio, i campi di immissione di testo definiscono questo hook in modo che WidgetDiv di input possa riposizionarsi in caso di evento di ridimensionamento della finestra. Questo è particolarmente importante quando gli input modali sono stati disattivati, poiché i dispositivi Android attivano un evento di ridimensionamento della finestra quando si apre la tastiera virtuale.

Se vuoi che WidgetDiv si nasconda anziché riposizionarsi, restituisci false. Questo è il comportamento predefinito.

I DropdownDiv gestiscono già la propria logica di posizionamento, quindi non è necessario sostituire questa funzione se il campo contiene solo un DropdownDiv.

saveLegacyState(callingClass) protected Restituisce una versione con stringa dello stato XML, se deve essere utilizzato. In caso contrario, restituisce null per indicare che il campo deve utilizzare la propria serializzazione.
saveState(_doFullSerialization) Salva il valore di questo campo come qualcosa che può essere serializzato in JSON. Deve essere chiamato solo dal sistema di serializzazione.
setEnabled(enabled) Imposta se il valore di questo campo può essere modificato utilizzando l'editor quando il blocco di origine è modificabile.
setSourceBlock(block) Collega questo campo a un blocco.
setTooltip(newTip) Imposta la descrizione comando per questo campo.
setValidator(handler)

Imposta una nuova funzione di convalida per i campi modificabili o cancella un convalidatore impostato in precedenza.

La funzione di convalida prende il nuovo valore del campo e restituisce il valore convalidato. Il valore convalidato può essere il valore inserito, una versione modificata del valore inserito o null per annullare la modifica.

Se la funzione non restituisce nulla (o restituisce un valore non definito), il nuovo valore viene accettato come valido. Questo consente ai campi di utilizzare la funzione convalidata come notifica di evento di modifica a livello di campo.

setValue(newValue, fireChangeEvent) Utilizzato per modificare il valore del campo. Gestisce la convalida e gli eventi. Le sottoclassi devono sostituire doClassValidation_ e doValueUpdate_ anziché questo metodo.
showEditor_(_e) protected Un hook per sviluppatori per creare un editor per il campo. Per impostazione predefinita, non viene eseguita alcuna operazione e deve essere sostituita per creare un editor.
toXml(fieldElement) Serializza il valore di questo campo in XML. Deve essere chiamato solo da Blockly.Xml.
updateEditable() Aggiungi o rimuovi l'interfaccia utente che indica se questo campo è modificabile o meno.
updateSize_(margin) protected Aggiorna le dimensioni del campo in base al testo.