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: |
|
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 |
|
(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 |
|
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 |
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. |