blockly > Campo

Clase de campo

Clase abstracta para un campo editable.

Signature:

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

Implementa: IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

Constructores

Constructor Modificadores Descripción
(constructor)(valor, validador, configuración) Construye una instancia nueva de la clase Field.

Propiedades

Propiedad Modificadores Tipo Descripción
borderRect_ protected SVGRectElement | nulo Elemento del borde SVG del campo renderizado.
clickTarget_ protected Elemento | nulo El elemento al que está vinculado el controlador de clics.
constants_ protected ConstantProvider | nulo Constantes asociadas con el procesador del bloque de origen.
CURSOR cadena Estilo del cursor del mouse cuando se coloca sobre el hotspot que inicia el editor
DEFAULT_VALUE T | nulo

Para reemplazar el valor predeterminado establecido en **Campo**, actualiza directamente el prototipo.

Ejemplo: FieldImage.prototype.DEFAULT_VALUE = null;

EDITABLE boolean Los campos editables suelen mostrar algún tipo de IU que indica que se pueden editar. El serializador también las guardará.
enabled_ protected boolean ¿Se puede cambiar el valor del campo usando el editor en un bloque editable?
fieldGroup_ protected SVGGElement | nulo El elemento del grupo SVG del campo renderizado.
isDirty_ protected boolean ¿Este bloque debe volver a renderizarse?
maxDisplayLength número La cantidad máxima de caracteres de texto que se muestra antes de agregar puntos suspensivos.
nombre? cadena (Opcional) Nombre del campo. Único dentro de cada bloque. Por lo general, las etiquetas estáticas no tienen nombre.
NBSP

static

readonly

(no declarado) Espacio de no separación.
SERIALIZABLE boolean El serializador guarda los campos serializables, pero no los no serializables. Los campos editables también deben poder serializarse. Este no es el caso de forma predeterminada, por lo que SERIALIZABLE es retrocompatible.
size_ protected Tamaño
SKIP_SETUP

static

readonly

símbolo único Un valor que se usa para indicar cuándo el constructor de un campo *no* debería establecer el valor del campo ni ejecutar configure_, y debería permitir que una subclase lo haga.
sourceBlock_ protected Bloquear | nulo Bloquear este campo al que se adjuntó Se inicia como nulo y luego se establece en init.
textContent_ protected Texto | nulo Elemento de contenido de texto del campo renderizado.
textElement_ protected SVGTextElement | nulo El elemento de texto SVG del campo renderizado.
validator_ protected FieldValidator<T> | nulo Se llama a la función de validación cuando el usuario edita un campo editable.
value_ protected T | nulo
visible_ protected boolean ¿El campo está visible o está oculto debido a que se contrajo el bloque?

Métodos

Método Modificadores Descripción
applyColour()

Actualiza el campo para que coincida con el color o estilo del bloque.

En las subclases no abstractas, es posible que se desee implementar esto si el color del campo depende del color del bloque. Se lo llamará automáticamente en momentos relevantes, como cuando cambie el procesador o el bloque superior.

Consulta la documentación de campos para obtener más información o FieldDropdown para ver un ejemplo.

bindEvents_() protected Vincula los eventos con el campo. Las subclases pueden anularla si necesitan realizar un control de entradas personalizado.
configure_(config) protected Procesa el mapa de configuración que se pasa al campo.
createBorderRect_() protected Crea un elemento rectángulo de borde de campo. No debe ser anulado por subclases. En su lugar, modifica el resultado de la función dentro de initView o crea una función separada para llamar.
createTextElement_() protected Crea un elemento de texto de campo. No debe ser anulado por subclases. En su lugar, modifica el resultado de la función dentro de initView o crea una función separada para llamar.
doClassValidation_(newValue) protected

Valida los cambios en el valor de un campo antes de configurarlos. Consulta **FieldDropdown** para ver un ejemplo de implementación de subclases.

**NOTA:** La validación muestra una opción entre T, null y undefined. La implementación de **Field** nunca mostrará undefined, pero es válido que una subclase muestre undefined si el valor nuevo es compatible con T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue) protected Se utiliza para notificar al campo que se ingresó un valor no válido. Las subclases pueden anularla; consulta FieldTextInput. No-ops de forma predeterminada.
doValueUpdate_(newValue) protected Se usa para actualizar el valor de un campo. Las subclases pueden anularla para realizar almacenamiento personalizado de valores o actualizar elementos externos.
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 rectangular del borde.
getClickTarget_() protected El elemento al que se vincula el controlador de clics. Si no se establece explícitamente, se establece de manera predeterminada en la raíz SVG del campo. El editor se abrirá cuando hagas clic en este elemento en un campo editable.
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 se debe invertir el campo en el sentido de derecha a izquierda.
getSize()

Muestra la altura y el ancho del campo.

*En general*, debería ser el único lugar desde el que se llama a render_.

getSourceBlock() Obtén el bloque al que se adjuntó este campo.
getSvgRoot() Obtiene el elemento de grupo para este campo editable. Se usa para medir el tamaño y posicionarlo.
getText_() protected Un hook de desarrollador para anular el texto mostrado de este campo. Se anula si la representación de texto del valor de este campo no es solo una conversión de cadenas de su valor. Se muestra el valor nulo para recurrir a una conversión de cadena.
getText() Obtén el texto de este campo. Anula getText_ para proporcionar un comportamiento diferente al que se obtiene con solo convertir el valor en una string.
getTextContent() protected Obtiene el contenido del texto.
getTextElement() protected Obtiene el elemento de texto.
getTooltip() Muestra el texto de la información sobre la herramienta para este campo.
getValidator() Obtiene la función de validación para los campos editables o el valor nulo si no está configurado.
getValue() Obtén el valor actual del campo.
initModel() Inicializa el modelo del campo después de que se instaló en un bloque. No-ops de forma predeterminada.
initView() protected Crea la IU de 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. El valor predeterminado es que se puede hacer clic en los campos en menús flotantes siempre abiertos como los de la caja de herramientas simple, pero no en los menús flotantes de cierre automático como los de 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 efecto.
isCurrentlyEditable() Verifica si se puede editar este campo en este momento. Algunos campos nunca se pueden EDITAR (p.ej., las etiquetas de texto). Otros campos pueden ser EDITABLES, pero pueden existir en bloques no editables o estar actualmente inhabilitados.
isEnabled() Verifica si el valor de este campo se puede cambiar con el editor cuando se puede editar el bloque de origen.
isFullBlockField() protected

Define si este campo debe ocupar todo el bloque o no.

Ten cuidado cuando anules esta función. Es posible que no funcione como esperas o porque el comportamiento fue hackeado. Si estás pensando en anular esta función, publica en el foro con el comportamiento deseado para ver si existe otro enfoque.

isSerializable() Verifica si el procesador XML debe serializar este campo. Controla la lógica para la retrocompatibilidad y los estados incongruentes.
isTabNavigable() Muestra si el campo se puede navegar con tabulación o no.
isVisible() Obtiene si este campo editable es visible o no.
loadLegacyState(callingClass, state) Carga el estado determinado mediante hooks XML antiguos, si deben usarse. El resultado es verdadero para indicar que se controló la carga; de lo contrario, muestra el valor falso.
onLocationChange(_) Notifica al campo que cambió las ubicaciones.
onMouseDown_(e) protected Controla un evento Pointdown en un campo.
onShortcut(_shortcut) Controla la combinación de teclas determinada.
positionBorderRect_() protected Posiciona el rectángulo del 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 izquierda a derecha y de derecha a izquierda.
render_() protected

getSize() lo usa para mover o cambiar el tamaño de los elementos del DOM, y obtener el nuevo tamaño.

Toda la renderización que tiene un efecto en el tamaño o la forma del bloque se debe realizar aquí, y getSize() debe activarla.

repositionForWindowResize()

Un hook de desarrollador para cambiar la posición de WidgetDiv durante el cambio de tamaño de una ventana. Debes definir este hook si tu campo tiene un WidgetDiv que debe cambiarse de posición cuando se cambia el tamaño de la ventana. Por ejemplo, los campos de entrada de texto definen este enlace para que el objeto WidgetDiv de entrada pueda reposicionar en un evento de cambio de tamaño de ventana. Esto es muy importante cuando se inhabilitaron 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 deseas que el WidgetDiv se oculte en lugar de reposicionar, muestra "false". Este es el comportamiento predeterminado.

El elemento DropdownDivs ya controla su propia lógica de posicionamiento, por lo que no es necesario que anules esta función si tu campo solo tiene un elemento DropdownDiv.

saveLegacyState(callingClass) protected Muestra una versión en formato de string del estado XML, si debe usarse. De lo contrario, muestra un valor nulo, para indicar que el campo debe usar su propia serialización.
setEnabled(enabled) Establece si el valor de este campo se puede cambiar con el editor cuando el bloque de origen se pueda editar.
setSourceBlock(block) Adjunta este campo a un bloque.
setTooltip(newTip) Establece la información sobre la herramienta para este campo.
setValidator(handler)

Establece una nueva función de validación para campos editables o borra un validador establecido previamente.

La función del validador toma el nuevo valor del campo y muestra un valor validado. El valor validado podría ser el valor de entrada, una versión modificada del valor de entrada o un valor nulo para anular el cambio.

Si la función no devuelve nada (o devuelve resultados indefinidos), el nuevo valor se acepta como válido. Esto permite que los campos que usen la función validada como una notificación de evento de cambio a nivel de 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 de desarrollador para crear un editor para el campo. Esta es no-ops de forma predeterminada y se debe anular para crear un editor.
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.