blockly > Campo

Classe campo

Classe astratta per un campo modificabile.

Firma:

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

Implementa: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

Costruttori

Costruttore Modificatori Descrizione
(costruttore)(valore, strumento di convalida, configurazione) Crea una nuova istanza della classe Field

Proprietà

Proprietà Modificatori Tipo Descrizione
borderRect_ protected SVGRectElement | null L'elemento di bordo SVG del campo visualizzato.
clickTarget_ protected Elemento | null L'elemento a cui è associato i clic.
constants_ protected ConstantProvider | null Costanti associate al renderer del blocco di origine.
CURSORE stringa Stile del cursore del mouse sopra l'hotspot che avvia l'editor.
DEFAULT_VALUE T | null

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

Esempio: FieldImage.prototype.DEFAULT_VALUE = null;

MODIFICABILE boolean I campi modificabili di solito mostrano una sorta di UI che indica che sono modificabili. Verranno salvati anche dal serializzatore.
enabled_ protected boolean Il valore del campo può essere modificato utilizzando l'editor su un blocco modificabile?
fieldGroup_ protected Elemento SVGG | null L'elemento del gruppo SVG del campo visualizzato.
isDirty_ protected boolean Questo blocco deve essere sottoposto nuovamente a rendering?
maxDisplayLength numero Numero massimo di caratteri di testo da visualizzare prima di aggiungere i puntini di sospensione.
? stringa (Facoltativo) Nome del campo. Univoco all'interno di ogni blocco. In genere le etichette statiche sono senza nome.
NBSP

static

readonly

(non dichiarato) Uno spazio unificatore.
SERIALIZZABILE boolean I campi serializzabili vengono salvati dal serializzatore, quelli non serializzabili no. Anche i campi modificabili devono essere serializzabili. Questo non è il caso per impostazione predefinita, per cui SERIALIZABLE è compatibile con le versioni precedenti.
size_ protected Dimensioni
SKIP_SETUP

static

readonly

simbolo univoco Valore utilizzato per segnalare quando il costruttore di un campo *non* deve impostare il valore del campo o eseguire configure_ e dovrebbe consentire a una sottoclasse di farlo.
sourceBlock_ protected Blocca | null Blocca a cui è associato questo campo. Inizia come null, poi viene impostato in init.
textContent_ protected Testo | null L'elemento di contenuti testuali del campo visualizzato.
textElement_ protected SVGTextElement | null L'elemento di testo SVG del campo visualizzato.
validator_ protected FieldValidator<T> | null Funzione di convalida richiamata quando l'utente modifica un campo modificabile.
value_ protected T | null
visible_ protected boolean Il campo è visibile o nascosto a causa della compressione del blocco?

Metodi

Metodo Modificatori Descrizione
applyColour()

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

Le sottoclassi non astratte possono implementare questo metodo se il colore del campo dipende da quello del blocco. Verrà chiamato automaticamente nei momenti giusti, ad esempio quando cambia il blocco principale o il renderer.

Consulta la documentazione relativa ai campi per ulteriori informazioni o, per un esempio, FieldDropdown.

bindEvents_() protected Associa gli eventi al campo. Possono essere sostituite dalle sottoclassi se devono eseguire una gestione dell'input personalizzata.
configure_(config) protected Elabora la mappa di configurazione trasmessa al campo.
createBorderRect_() protected Crea un elemento rettangolo del bordo del campo. Non vengano sostituite dalle sottoclassi. Modifica il risultato della funzione all'interno di initView oppure crea una funzione separata da chiamare.
createTextElement_() protected Crea un elemento di testo per il campo. Non vengano sostituite dalle sottoclassi. Modifica il risultato della funzione all'interno di initView oppure crea una funzione separata da chiamare.
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 del **campo** non restituirà mai undefined, ma è valido che una sottoclasse restituisca undefined se il nuovo valore è compatibile con T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue) protected Utilizzato per notificare al campo che è stato inserito un valore non valido. Può essere sostituita dalle sottoclassi, vedi FieldTextInput. Autonoma per impostazione predefinita.
doValueUpdate_(newValue) protected Utilizzato per aggiornare il valore di un campo. Possono essere sostituite da sottoclassi per l'archiviazione personalizzata di valori/l'aggiornamento di elementi esterni.
getAbsoluteXY_() protected Restituisce le coordinate assolute dell'angolo superiore sinistro di questo campo. L'origine (0,0) è l'angolo in alto a sinistra del corpo della pagina.
getBorderRect() protected Recupera l'elemento rettangolo bordo.
getClickTarget_() protected L'elemento a cui associare il gestore dei clic. Se non viene configurato esplicitamente, il valore predefinito sarà la radice SVG del campo. Quando l'utente fa clic su questo elemento su un campo modificabile, si apre l'editor.
getConstants() Ottieni il provider della costante di rendering.
getDisplayText_() protected Ottieni il testo di questo campo da visualizzare nel blocco. Può differire da getText a causa dei puntini di sospensione e di altri tipi di formattazione.
getFlipRtl() Indica se è necessario capovolgere il campo in RTL.
getSize()

Restituisce l'altezza e la larghezza del campo.

Questo dovrebbe *in generale* essere l'unico punto da cui ottiene_ la chiamata.

getSourceBlock() Ottieni il blocco a cui è associato questo campo.
getSvgRoot() Consente di acquisire l'elemento del gruppo per questo campo modificabile. Utilizzato per la misurazione delle dimensioni e per il posizionamento.
getText_() protected Un hook sviluppatore per sostituire il testo restituito in questo campo. Sostituisci questa opzione se la rappresentazione testuale del valore di questo campo non è solo una trasmissione stringa del relativo valore. Restituisce null per ricorrere al cast di stringhe.
getText() Recupera il testo da questo campo. Esegui l'override di getText_ per fornire un comportamento diverso rispetto alla semplice trasmissione del valore in una stringa.
getTextContent() protected Recupera i contenuti testuali.
getTextElement() protected Restituisce l'elemento di testo.
getTooltip() Restituisce il testo della descrizione comando per questo campo.
getValidator() Restituisce la funzione di convalida per i campi modificabili oppure null se non impostata.
getValue() Ottieni il valore corrente del campo.
initModel() Inizializza il modello del campo dopo che è stato installato su un blocco. Autonoma per impostazione predefinita.
initView() protected Crea l'UI di blocco per questo campo.
isClickable() Controlla se questo campo definisce la funzione showEditor_.
isClickableInFlyout(autoClosingFlyout) Controlla se il campo deve essere cliccabile quando il blocco è visualizzato a schermo. Per impostazione predefinita, è possibile fare clic sui campi in riquadri a comparsa sempre aperti, come la casella degli strumenti semplice, ma non in quelli con chiusura automatica, ad esempio la casella degli strumenti delle categorie. Le sottoclassi possono eseguire l'override di questa funzione per modificare questo comportamento. Tieni presente che anche isClickable deve restituire true affinché questo possa produrre dei risultati.
isCurrentlyEditable() Verifica se questo campo è attualmente modificabile. Alcuni campi non sono mai MODIFICABILI (ad es. etichette di testo). Altri campi possono essere MODIFICABILI, ma potrebbero esistere su blocchi non modificabili o essere attualmente disattivati.
isEnabled() Verifica se il valore di questo campo può essere modificato utilizzando l'editor quando il blocco di origine è modificabile.
isFullBlockField() protected

Definisce se questo campo deve occupare l'intero blocco.

Fai attenzione quando sostituisci questa funzione. Potrebbe non funzionare come previsto / previsto perché il comportamento è stato in qualche modo compromesso. Se stai pensando di sostituire questa funzione, pubblica un post nel forum indicando il comportamento previsto per vedere se esiste un altro approccio.

isSerializable() Controlla se questo campo deve essere serializzato dal renderer XML. Gestisce la logica per la compatibilità con le versioni precedenti e gli stati incongruenti.
isTabNavigable() Indica se il campo è navigabile tra le schede.
isVisible() Riconosce 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 negli altri casi.
onLocationChange(_) Comunica al campo la modifica della località.
onMouseDown_(e) protected Consente di gestire un evento cursordown in un campo.
onShortcut(_shortcut) Consente di gestire la scorciatoia da tastiera specificata.
positionBorderRect_() protected Posiziona il rettangolo del bordo di un campo dopo una modifica delle dimensioni.
positionTextElement_(xOffset, contentLarghezza) protected Posiziona l'elemento di testo di un campo dopo una modifica delle dimensioni. Consente di gestire sia il posizionamento LTR che RTL.
render_() protected

Utilizzato da getSize() per spostare/ridimensionare eventuali elementi DOM e ottenere la nuova dimensione.

Tutto il rendering che ha effetto sulla dimensione/forma del blocco deve essere eseguito qui e dovrebbe essere attivato da getSize().

repositionForWindowResize()

Un hook sviluppatore per riposizionare WidgetDiv durante il ridimensionamento di una finestra. È necessario definire questo hook se il campo contiene un elemento WidgetDiv che deve essere riposizionato quando la finestra viene ridimensionata. Ad esempio, i campi di immissione di testo definiscono questo hook in modo che l'input WidgetDiv possa riposizionarsi in un evento di ridimensionamento della finestra. Ciò è particolarmente importante quando gli input modali sono stati disattivati, perché i dispositivi Android attivano un evento di ridimensionamento della finestra all'apertura della tastiera software.

Se desideri che WidgetDiv venga nascosto automaticamente anziché riposizionato, restituisce false. Questo è il comportamento predefinito.

DropdownDivs gestisce 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 stringata dello stato XML, se deve essere utilizzata. In caso contrario, viene restituito un valore nullo per indicare che il campo deve utilizzare la propria serializzazione.
setEnabled(enabled) Imposta se il valore di questo campo può essere modificato utilizzando l'editor quando il blocco di origine è modificabile.
setSourceBlock(block) Allega questo campo a un blocco.
setTooltip(newTip) Imposta la descrizione comando per questo campo.
setValidator(handler)

Consente di impostare una nuova funzione di convalida per i campi modificabili oppure di cancellare uno strumento di convalida impostato in precedenza.

La funzione di convalida prende il nuovo valore del campo e restituisce il valore convalidato. Il valore convalidato potrebbe essere il valore di input, una versione modificata del valore di input o null per interrompere la modifica.

Se la funzione non restituisce nulla (o restituisce un elemento indefinito), il nuovo valore viene accettato come valido. In questo modo i campi possono utilizzare la funzione convalidata come notifica di eventi 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 sviluppatore per creare un editor per il campo. Per impostazione predefinita, questa opzione è autonoma e deve essere sostituita per creare un editor.
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.