Clase de campo
Es una clase abstracta para un campo editable.
Signature:
export declare abstract class Field<T = any> implements IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
Implementa: IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode
Constructores
Constructor | Modificadores | Descripción |
---|---|---|
(constructor)(value, validator, config) | Construye una instancia nueva de la clase Field . |
Propiedades
Propiedad | Modificadores | Tipo | Descripción |
---|---|---|---|
borderRect_ | protected |
SVGRectElement | null | Es el elemento de borde SVG del campo renderizado. |
clickTarget_ | protected |
Elemento | nulo | Es el elemento al que está vinculado el controlador de clics. |
constants_ | protected |
ConstantProvider | null | Son constantes asociadas con el renderizador del bloque de origen. |
DEFAULT_VALUE | T | null | Para reemplazar el valor predeterminado que se establece en **Campo**, actualiza directamente el prototipo. Ejemplo: |
|
EDITABLE | booleano | Los campos editables suelen mostrar algún tipo de IU que indica que se pueden editar. El serializador también los guardará. | |
enabled_ | protected |
booleano | ¿Se puede cambiar el valor del campo con el editor en un bloque editable? |
fieldGroup_ | protected |
SVGGElement | null | Es el elemento de grupo SVG del campo renderizado. |
isDirty_ | protected |
booleano | ¿Es necesario volver a renderizar este bloque? |
maxDisplayLength | número | Es la cantidad máxima de caracteres de texto que se mostrarán antes de agregar puntos suspensivos. | |
name? | string | (Opcional) Es el nombre del campo. Es único dentro de cada bloque. Por lo general, las etiquetas estáticas no tienen nombre. | |
NBSP |
|
(no declarado) | Espacio de no separación. |
SERIALIZABLE | booleano | El serializador guarda los campos serializables, pero no los no serializables. Los campos editables también deben ser serializables. Este no es el caso de forma predeterminada, por lo que SERIALIZABLE es retrocompatible. | |
size_ | protected |
Tamaño | Obtiene el tamaño de este campo. Debido a que getSize() y updateSize() tienen efectos secundarios, esto actúa como un shim para subclases que desean ajustar los límites de campo cuando se establece o se obtiene el tamaño sin activar la renderización no deseada ni otros efectos secundarios. Ten en cuenta que las subclases deben anular *ambos* métodos get y set si se anula alguno de ellos. La implementación puede llamar directamente a super, pero debe existir según la especificación de JS. |
SKIP_SETUP |
|
símbolo único | Es un valor que se usa para indicar cuándo el constructor de un campo *no* debe establecer el valor del campo ni ejecutar configure_, y debe permitir que una subclase lo haga en su lugar. |
sourceBlock_ | protected |
Bloquear | nulo | Bloque al que está vinculado este campo. Comienza como nulo y, luego, se establece en init. |
textContent_ | protected |
Texto | nulo | Es el elemento de contenido de texto del campo renderizado. |
textElement_ | protected |
SVGTextElement | null | Es el elemento de texto SVG del campo renderizado. |
validator_ | protected |
FieldValidator<T> | null | Es la función de validación a la que se llama cuando el usuario edita un campo editable. |
value_ | protected |
T | null | |
visible_ | protected |
booleano | ¿El campo es visible o está oculto porque el bloque está colapsado? |
Métodos
Método | Modificadores | Descripción |
---|---|---|
applyColour() | Actualiza el campo para que coincida con el color o el estilo del bloque. Es posible que las subclases no abstractas deseen implementar esto si el color del campo depende del color del bloque. Se llamará automáticamente en los momentos relevantes, como cuando cambie el bloque superior o el renderizador. Consulta la documentación del campo para obtener más información o FieldDropdown para ver un ejemplo. |
|
bindEvents_() | protected |
Vincula eventos al campo. Las subclases pueden anularlo si necesitan controlar entradas personalizadas. |
canBeFocused() | Consulta IFocusableNode.canBeFocused. | |
configure_(config) | protected |
Procesa el mapa de configuración que se pasó al campo. |
createBorderRect_() | protected |
Crea un elemento rectángulo de borde de campo. No se debe anular con subclases. En su lugar, modifica el resultado de la función dentro de initView o crea una función independiente para llamar. |
createTextElement_() | protected |
Crea un elemento de texto de campo. No se debe anular con subclases. En su lugar, modifica el resultado de la función dentro de initView o crea una función independiente para llamar. |
dispose() | Elimina todos los objetos y eventos del DOM que pertenezcan a este campo editable. | |
doClassValidation_(newValue) | protected |
Valida los cambios en el valor de un campo antes de que se establezcan. Consulta **FieldDropdown** para ver un ejemplo de implementación de subclase. **NOTA:** La validación muestra una opción entre |
doClassValidation_(newValue) | protected |
|
doValueInvalid_(_invalidValue, _fireChangeEvent) | protected |
Se usa para notificar al campo que se ingresó un valor no válido. Las subclases pueden anularlo. Consulta FieldTextInput. No realiza ninguna acción de forma predeterminada. |
doValueUpdate_(newValue) | protected |
Se usa para actualizar el valor de un campo. Las subclases pueden anularlo para realizar el almacenamiento personalizado de valores o la actualización de elementos externos. |
forceRerender() | Fuerza una nueva renderización del bloque en el que está instalado este campo, lo que volverá a renderizar este campo y se ajustará a cualquier cambio de tamaño. Los demás campos del mismo bloque no se volverán a renderizar, ya que sus tamaños ya se registraron. | |
fromJson(_options) | static |
Las subclases deben volver a implementar este método para construir su subclase de campo a partir de un objeto de arg JSON. Es un error intentar registrar una subclase de campo en FieldRegistry si esa subclase no anuló este método. |
fromXml(fieldElement) | Establece el valor del campo según el elemento XML determinado. Solo Blockly.Xml debe llamar a esta función. | |
getAbsoluteXY_() | protected |
Muestra las coordenadas absolutas de la esquina superior izquierda de este campo. El origen (0,0) es la esquina superior izquierda del cuerpo de la página. |
getBorderRect() | protected |
Obtiene el elemento rectángulo de borde. |
getClickTarget_() | protected |
Es el elemento al que se vinculará el controlador de clics. Si no se establece de forma explícita, se establece de forma predeterminada en la raíz SVG del campo. Cuando se hace clic en este elemento en un campo editable, se abre el editor. |
getConstants() | Obtén el proveedor de constantes del renderizador. | |
getDisplayText_() | protected |
Obtén el texto de este campo para mostrarlo en el bloque. Puede diferir de getText debido a puntos suspensivos y otros formatos. |
getFlipRtl() | Muestra si debemos voltear el campo en RTL. | |
getFocusableElement() | Consulta IFocusableNode.getFocusableElement. | |
getFocusableTree() | Consulta IFocusableNode.getFocusableTree. | |
getSize() | Muestra la altura y el ancho del campo. *En general*, este debería ser el único lugar desde el que se llama a render_. |
|
getSourceBlock() | Obtén el bloque al que está adjunto este campo. | |
getSvgRoot() | Obtiene el elemento de grupo para este campo editable. Se usa para medir el tamaño y para posicionar. | |
getText_() | protected |
Es un hook para desarrolladores que anula el texto que se muestra en este campo. Anula si la representación de texto del valor de este campo no es solo una conversión de cadena de su valor. Muestra un valor nulo para recurrir a un formato de cadena. |
getText() | Obtén el texto de este campo. Anula getText_ para proporcionar un comportamiento diferente al de simplemente transmitir el valor a una cadena. | |
getTextContent() | protected |
Obtiene el contenido de texto. |
getTextElement() | protected |
Obtiene el elemento de texto. |
getTooltip() | Muestra el texto de la herramienta de ayuda para este campo. | |
getValidator() | Obtiene la función de validación para los campos editables o nulo si no se establece. | |
getValue() | Obtén el valor actual del campo. | |
initModel() | Inicializa el modelo del campo después de que se instala en un bloque. No realiza ninguna acción de forma predeterminada. | |
initView() | protected |
Crea la IU del bloque para este campo. |
isClickable() | Verifica si este campo define la función showEditor_. | |
isClickableInFlyout(autoClosingFlyout) | Comprueba si se debe poder hacer clic en el campo mientras el bloque está en un menú flotante. De forma predeterminada, se puede hacer clic en los campos de los menús flotantes siempre abiertos, como la caja de herramientas simple, pero no en los menús flotantes que se cierran automáticamente, como la caja de herramientas de categorías. Las subclases pueden anular esta función para cambiar este comportamiento. Ten en cuenta que isClickable también debe mostrar un valor verdadero para que esto tenga algún efecto. |
|
isCurrentlyEditable() | Comprueba si este campo se puede editar actualmente. Algunos campos nunca son EDITABLES (p.ej., etiquetas de texto). Es posible que otros campos sean EDITABLES, pero que existan en bloques no editables o que estén inhabilitados actualmente. | |
isEnabled() | Verifica si el valor de este campo se puede cambiar con el editor cuando el bloque de origen es editable. | |
isSerializable() | Verifica si el renderizador de XML debe serializar este campo. Controla la lógica de la retrocompatibilidad y los estados incoherentes. | |
isVisible() | Obtiene si este campo editable es visible o no. | |
loadLegacyState(callingClass, state) | Carga el estado determinado con los hooks de XML anteriores, si se deben usar. Muestra verdadero para indicar que se controló la carga; falso de lo contrario. | |
loadState(state) | Establece el estado del campo según el valor de estado determinado. Solo el sistema de serialización debe llamarlo. | |
onLocationChange(_) | Notifica al campo que cambió de ubicación. | |
onMouseDown_(e) | protected |
Controla un evento de abajo del puntero en un campo. |
onNodeBlur() | Consulta IFocusableNode.onNodeBlur. | |
onNodeFocus() | Consulta IFocusableNode.onNodeFocus. | |
onShortcut(_shortcut) | Controla la combinación de teclas determinada. | |
positionBorderRect_() | protected |
Posiciona el rectángulo de borde de un campo después de un cambio de tamaño. |
positionTextElement_(xOffset, contentWidth) | protected |
Posiciona el elemento de texto de un campo después de un cambio de tamaño. Esto controla el posicionamiento de LTR y RTL. |
referencesVariables() | Indica si este campo hace referencia a alguna variable de Blockly. Si es verdadero, es posible que deba controlarse de manera diferente durante la serialización y la deserialización. Las subclases pueden anular esto. | |
refreshVariableName() | Actualiza el nombre de la variable al que hace referencia este campo si este hace referencia a variables. | |
render_() | protected |
getSize() lo usa para mover o cambiar el tamaño de cualquier elemento DOM y obtener el tamaño nuevo. Toda la renderización que tenga un efecto en el tamaño o la forma del bloque debe realizarse aquí y debe activarse con getSize(). |
repositionForWindowResize() | Es un hook de desarrollador para cambiar la posición de WidgetDiv durante un cambio de tamaño de ventana. Debes definir este hook si tu campo tiene un WidgetDiv que debe volver a posicionarse cuando se cambia el tamaño de la ventana. Por ejemplo, los campos de entrada de texto definen este hook para que el WidgetDiv de entrada pueda volver a posicionarse en un evento de cambio de tamaño de la ventana. Esto es muy importante cuando se inhabilitan las entradas modales, ya que los dispositivos Android activarán un evento de cambio de tamaño de ventana cuando se abra el teclado en pantalla. Si quieres que WidgetDiv se oculte en lugar de cambiar de posición, muestra un valor falso. Este es el comportamiento predeterminado. DropdownDivs ya controla su propia lógica de posicionamiento, por lo que no necesitas anular esta función si tu campo solo tiene un DropdownDiv. |
|
saveLegacyState(callingClass) | protected |
Muestra una versión con formato de cadena del estado XML, si se debe usar. De lo contrario, se muestra un valor nulo para indicar que el campo debe usar su propia serialización. |
saveState(_doFullSerialization) | Guarda el valor de este campo como algo que se puede serializar en JSON. Solo el sistema de serialización debe llamarlo. | |
setEnabled(enabled) | Establece si el valor de este campo se puede cambiar con el editor cuando el bloque de origen es editable. | |
setSourceBlock(block) | Adjunta este campo a un bloque. | |
setTooltip(newTip) | Establece la información sobre el campo. | |
setValidator(handler) | Establece una nueva función de validación para los campos editables o borra un validador establecido anteriormente. La función del validador toma el valor del campo nuevo y muestra el valor validado. El valor validado puede ser el valor de entrada, una versión modificada del valor de entrada o nulo para abortar el cambio. Si la función no muestra nada (o muestra un valor indefinido), el valor nuevo se acepta como válido. Esto permite que los campos usen la función validada como una notificación de evento de cambio a nivel del campo. |
|
setValue(newValue, fireChangeEvent) | Se usa para cambiar el valor del campo. Controla la validación y los eventos. Las subclases deben anular doClassValidation_ y doValueUpdate_ en lugar de este método. | |
showEditor_(_e) | protected |
Un hook para desarrolladores para crear un editor para el campo. De forma predeterminada, no se realiza ninguna acción y se debe anular para crear un editor. |
toXml(fieldElement) | Serializa el valor de este campo a XML. Solo Blockly.Xml debe llamar a esta función. | |
updateEditable() | Agrega o quita la IU que indica si este campo se puede editar o no. | |
updateSize_(margin) | protected |
Actualiza el tamaño del campo según el texto. |