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, convalidatore, configurazione) Crea 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 renderer del blocco di origine.
CURSORE stringa Stile del cursore del mouse quando si trova 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 booleano I campi modificabili di solito mostrano una qualche forma 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 del gruppo SVG del campo visualizzato.
isDirty_ protected booleano È necessario eseguire nuovamente il rendering di questo blocco?
maxDisplayLength numero Numero massimo di caratteri di testo da visualizzare prima di aggiungere i puntini di sospensione.
nome? stringa (Facoltativo) Nome del campo. È univoco all'interno di ogni blocco. Le etichette statiche di solito sono senza nome.
NBSP

static

readonly

(non dichiarato) Spazio unificatore.
SERIALIZZABILE booleano I campi serializzabili vengono salvati dal serializzatore, mentre quelli non serializzabili no. Anche i campi modificabili devono essere serializzabili. Questo non avviene per impostazione predefinita, perciò SERIALIZABLE è compatibile con le versioni precedenti.
size_ protected Dimensioni
SKIP_SETUP

static

readonly

simbolo univoco Un 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 impostato in init.
textContent_ protected Testo | null L'elemento di contenuto testuale del campo visualizzato.
textElement_ protected SVGTextElement | null L'elemento di testo SVG del campo visualizzato.
validator_ protected FieldValidator&lt;T&gt; | null Funzione di convalida chiamata quando un utente modifica un campo modificabile.
value_ protected T | null
visible_ protected booleano 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 e allo stile del blocco.

Le sottoclassi non astratte possono implementare questa funzione se il colore del campo dipende dal colore del blocco. Verrà richiamata automaticamente nei momenti pertinenti, ad esempio quando cambia il blocco principale o il renderer.

Consulta la documentazione sul campo per ulteriori informazioni o FieldDropdown per un esempio.

bindEvents_() protected Associa gli eventi al campo. Possono essere sostituite dalle sottoclassi se devono eseguire una gestione personalizzata dell'input.
configure_(config) protected Elabora la mappa di configurazione passata al campo.
createBorderRect_() protected Crea un elemento rettangolo per il bordo del campo. Da non sostituire con le sottoclassi. Modifica il risultato della funzione all'interno di initView oppure crea una funzione separata da chiamare.
createTextElement_() protected Crea un elemento di testo del campo. Da non sostituire con le sottoclassi. Modifica il risultato della funzione all'interno di initView oppure crea una funzione separata da chiamare.
doClassValidation_(newValue) protected

Convalida le modifiche apportate al valore di un campo prima di impostarle. Consulta **FieldDropdown** per un esempio di implementazione di una sottoclasse.

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

doClassValidation_(newValue) protected
doValueinvalid_(_invalidValue, _fireChangeEvent) protected Utilizzato per notificare al campo che è stato inserito un valore non valido. Può essere sostituito dalle sottoclassi, vedi FieldTextInput. No-op per impostazione predefinita.
doValueUpdate_(newValue) protected Utilizzato per aggiornare il valore di un campo. Può essere sostituito dalle sottoclassi per eseguire l'archiviazione personalizzata dei valori o l'aggiornamento di elementi esterni.
fromJson(_options) static

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

Tentare di registrare una sottoclasse di campo in FieldRegistry è un errore se tale sottoclasse non ha eseguito l'override di questo metodo.

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 Restituisce l'elemento rettangolo del bordo.
getClickTarget_() protected L'elemento a cui associare il gestore dei clic. Se non viene configurato in modo esplicito, il valore predefinito sarà la radice SVG del campo. Quando l'utente fa clic su questo elemento in un campo modificabile, si apre l'editor.
getConstants() Recupera il provider della costante di renderer.
getDisplayText_() protected Fai in modo che il testo di questo campo venga visualizzato nel blocco. Può variare da getText a causa dei puntini di sospensione e di un'altra formattazione.
getFlipRtl() Restituisce se dobbiamo invertire il campo in RTL.
getSize()

Restituisce l'altezza e la larghezza del campo.

*In generale* dovrebbe essere l'unica posizione da cui viene chiamato il rendering_.

getSourceBlock() Ottieni il blocco a cui è associato questo campo.
getSvgRoot() Ottiene l'elemento del gruppo per questo campo modificabile. Utilizzato per misurare le dimensioni e per il posizionamento.
getText_() protected Un hook sviluppatore per eseguire l'override del testo restituito di questo campo. Esegui l'override se la rappresentazione testuale del valore di questo campo non è solo una stringa del suo valore. Restituisce un valore nullo per ricorrere a una stringa di trasmissione.
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 Ottiene l'elemento di testo.
getTooltip() Restituisce il testo della descrizione comando per questo campo.
getValidator() Ottiene 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. No-op per impostazione predefinita.
initView() protected Crea l'interfaccia utente di 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 si trova in un riquadro a scomparsa. Per impostazione predefinita, è possibile fare clic sui campi nei riquadri a scomparsa sempre aperti, come la casella degli strumenti semplice, ma non in quelli con chiusura automatica come quelli delle categorie. Le sottoclassi possono sostituire questa funzione per modificare questo comportamento. Tieni presente che anche isClickable deve restituire true per avere effetto.
isCurrentlyEditable() Verifica se questo campo è attualmente modificabile. Alcuni campi non sono mai MODIFICABILI (ad es. le etichette di testo). Altri campi possono essere MODIFICABILI, ma potrebbero esistere in blocchi non modificabili o essere attualmente disabilitati.
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 o meno l'intero blocco.

Fai attenzione quando esegui l'override di questa funzione. Potrebbe non funzionare come previsto / desiderato perché il comportamento è stato compromesso. Se stai pensando di eseguire l'override di questa funzione, pubblica un post sul 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 stati incongruenti.
isTabNavigable() Indica se il campo è navigabile o meno tramite schede.
isVisible() Riconosce se il 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.
onLocationChange(_) Informa il campo che ha cambiato le posizioni.
onMouseDown_(e) protected 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, contentwidth) protected Posiziona l'elemento di testo di un campo dopo una modifica delle dimensioni. Consente di gestire il posizionamento sia LTR che RTL.
render_() protected

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

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

repositionForWindowResize()

Un hook sviluppatore per riposizionare WidgetDiv durante il ridimensionamento di una finestra. Devi definire questo hook se il campo ha un WidgetDiv che deve riposizionarsi automaticamente quando la finestra viene ridimensionata. Ad esempio, i campi di input di testo definiscono questo hook in modo che il WidgetDiv di input possa riposizionarsi in un evento di ridimensionamento di una finestra. Questo è particolarmente importante se gli input modali sono stati disattivati, in quanto i dispositivi Android attivano un evento di ridimensionamento della finestra all'apertura della tastiera software.

Se desideri che WidgetDiv nasconda se stesso invece di riposizionarlo, restituisce false. Questo è il comportamento predefinito.

I DropdownDiv gestiscono già la propria logica di posizionamento, quindi non è necessario sostituire questa funzione se il campo ha 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)

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

La funzione di convalida inserisce il nuovo valore del campo e restituisce un valore convalidato. Il valore convalidato potrebbe essere il valore di input, una versione modificata del valore di input o nullo per annullare la modifica.

Se la funzione non restituisce nulla (o restituisce un valore indefinito), il nuovo valore viene accettato come valido. Ciò consente ai campi che utilizzano la funzione convalidata come notifica di un 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 dello sviluppatore per creare un editor per il campo. Per impostazione predefinita, questa è una modalità autonoma e deve essere ignorata per creare un editor.
updateEditable() Aggiungi o rimuovi l'interfaccia utente che indica se il campo è modificabile o meno.
updateSize_(margin) protected Consente di aggiornare la dimensione del campo in base al testo.