blockly > Campo

Classe de campo

Classe abstrata para um campo editável.

Signature:

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

Implementa:IASTNodeLocationSvg, IASTNodeLocationWithBlock, IKeyboardAccessible, IRegistrable, ISerializable

Construtores

Construtor Modificadores Descrição
(construtor)(valor, validador, configuração) Cria uma nova instância da classe Field

Propriedades

Propriedade Modificadores Tipo Descrição
borderRect_ protected SVGRectElement | nulo O elemento de borda SVG do campo renderizado.
clickTarget_ protected Elemento | null O elemento ao qual o gerenciador de cliques está vinculado.
constants_ protected ConstantProvider | nulo Constantes associadas ao renderizador do bloco de origem.
CURSOR string Estilo do cursor do mouse quando sobre o ponto de acesso que inicia o editor.
DEFAULT_VALUE T | nulo

Para substituir o valor padrão definido em **Campo**, atualize o protótipo diretamente.

Exemplo: FieldImage.prototype.DEFAULT_VALUE = null;

EDITÁVEL boolean Os campos editáveis geralmente mostram algum tipo de interface indicando que são editáveis. Elas também serão salvas pelo serializador.
enabled_ protected boolean O valor do campo pode ser alterado usando o editor em um bloco editável?
fieldGroup_ protected SVGGElement | nulo O elemento do grupo SVG do campo renderizado.
isDirty_ protected boolean Esse bloco precisa ser renderizado novamente?
maxDisplayLength number Máximo de caracteres de texto a serem exibidos antes de adicionar reticências.
nome? string (Opcional) Nome do campo. Exclusivo em cada bloco. Os rótulos estáticos geralmente não têm nome.
NBSP (em inglês)

static

readonly

(não declarado) Espaço sem quebra.
SERIALIZÁVEL boolean Os campos serializáveis são salvos pelo serializador, os não serializáveis não. Os campos editáveis também precisam ser serializáveis. Por padrão, esse não é o caso, então SERIALIZABLE é compatível com versões anteriores.
size_ protected Tamanho
SKIP_SETUP

static

readonly

símbolo exclusivo Um valor usado para sinalizar quando o construtor de um campo *não* deve definir o valor do campo ou executar configure_ e deve permitir que uma subclasse faça isso.
sourceBlock_ protected Bloquear | nulo Bloquear este campo está anexado. Começa como nulo e, em seguida, é definido em init.
textContent_ protected Texto | nulo O elemento do conteúdo de texto do campo renderizado.
textElement_ protected SVGTextElement | nulo O elemento de texto SVG do campo renderizado.
validator_ protected FieldValidator<T> | nulo Função de validação chamada quando o usuário edita um campo editável.
value_ protected T | nulo
visible_ protected boolean O campo está visível ou oculto porque o bloco foi recolhido?

Métodos

Método Modificadores Descrição
applyColour()

Atualiza o campo para combinar com a cor ou o estilo do bloco.

Subclasses não abstratas podem implementar isso se a cor do campo depender da cor do bloco. Ele é chamado automaticamente em momentos relevantes, como quando o bloco pai ou o renderizador muda.

Consulte a documentação de campos para mais informações ou o FieldDropdown para ver um exemplo.

bindEvents_() protected Vincular eventos ao campo. Podem ser substituídas por subclasses se precisarem fazer processamento de entrada personalizado.
configure_(config) protected Processe o mapa de configuração transmitido para o campo.
createBorderRect_() protected Cria um elemento de retângulo de borda de campo. Não ser substituído por subclasses. Em vez disso, modifique o resultado da função dentro de initView ou crie uma função separada para chamar.
createTextElement_() protected Crie um elemento de texto de campo. Não ser substituído por subclasses. Em vez disso, modifique o resultado da função dentro de initView ou crie uma função separada para chamar.
doClassValidation_(newValue) protected

Valide as alterações feitas no valor de um campo antes de serem definidas. Consulte **FieldDropdown** para ver um exemplo de implementação de subclasse.

**OBSERVAÇÃO:** a validação retorna uma opção entre T, null e undefined. A implementação de **Field** nunca vai retornar undefined, mas é válido que uma subclasse retorne undefined se o novo valor for compatível com T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue) protected Usado para notificar o campo que um valor inválido foi inserido. Pode ser substituído por subclasses. Consulte FieldTextInput. Ambiente autônomo por padrão.
doValueUpdate_(newValue) protected Usado para atualizar o valor de um campo. Pode ser substituído por subclasses para fazer armazenamento personalizado de valores/atualização de itens externos.
getAbsoluteXY_() protected Retorna as coordenadas absolutas do canto superior esquerdo desse campo. A origem (0,0) é o canto superior esquerdo do corpo da página.
getBorderRect() protected Recebe o elemento do retângulo de borda.
getClickTarget_() protected O elemento ao qual o gerenciador de cliques será vinculado. Se não for definido explicitamente, o padrão será a raiz SVG do campo. Quando esse elemento for clicado em um campo editável, o editor será aberto.
getConstants() Recebe o provedor de constante do renderizador.
getDisplayText_() protected Receba o texto desse campo a ser exibido no bloco. Pode ser diferente de getText devido a reticências e outra formatação.
getFlipRtl() (link em inglês) Retorna se devemos ou não virar o campo em RTL.
getSize()

Retorna a altura e a largura do campo.

Este deve ser *em geral* o único lugar de onde render_ é chamado.

getSourceBlock() Define o bloco a que este campo está anexado.
getSvgRoot() Extrai o elemento do grupo para este campo editável. Usado para medir o tamanho e para posicionar.
getText_() protected Um hook de desenvolvedor para substituir o texto retornado desse campo. Substitua se a representação de texto do valor desse campo não for apenas uma transmissão de string do valor dele. Retorna nulo para recorrer a um cast de string.
getText() Receba o texto desse campo. Substitui getText_ para fornecer um comportamento diferente de simplesmente transmitir o valor para uma string.
getTextContent() protected Recebe o conteúdo de texto.
getTextElement() protected Extrai o elemento de texto.
getTooltip() Retorna o texto da dica para este campo.
getValidator() Recebe a função de validação para campos editáveis ou nulo se não estiver definido.
getValue() Acessa o valor atual do campo.
initModel() Inicializa o modelo do campo depois de ter sido instalado em um bloco. Ambiente autônomo por padrão.
initView() protected Crie a interface de bloco para esse campo.
isClickable() Verifique se esse campo define a função showEditor_.
isClickableInFlyout(autoClosingFlyout) Verifique se o campo precisa ser clicável enquanto o bloco está em um menu suspenso. O padrão é que os campos sejam clicáveis em fluxos sempre abertos, como a caixa de ferramentas simples, mas não em janelas de fechamento automático, como a de categorias. As subclasses podem substituir essa função para alterar esse comportamento. Para que isso tenha efeito, isClickable também precisa retornar "true".
isCurrentlyEditable() Verifique se este campo é editável no momento. Alguns campos nunca podem ser editados (por exemplo, os rótulos de texto). Outros campos podem ser EDITÁVEIS, mas podem existir em blocos não editáveis ou estar desativados no momento.
isEnabled() Verifique se o valor desse campo pode ser alterado usando o editor quando o bloco de origem é editável.
isFullBlockField() protected

Define se este campo vai ocupar todo o bloco ou não.

Tenha cuidado ao substituir essa função. É possível que ele não funcione conforme o esperado / desejado porque ocorreu um ataque de invasão. Se você estiver pensando em substituir essa função, poste no fórum com o comportamento pretendido para ver se há outra abordagem.

isSerializable() Confira se esse campo precisa ser serializado pelo renderizador XML. Processa a lógica para compatibilidade com versões anteriores e estados incongruentes.
isTabNavigable() Retorna se o campo é ou não navegável por tabulação.
isVisible() Define se este campo editável fica visível ou não.
loadLegacyState(callingClass, state) Carrega o estado especificado usando os hooks XML antigos, se eles precisarem ser usados. Retorna verdadeiro para indicar que o carregamento foi processado. Caso contrário, retorna falso.
onLocationChange(_) Notifica o campo sobre a mudança de local.
onMouseDown_(e) protected Processar um evento ponteirodown em um campo.
onShortcut(_shortcut) Gerencia o atalho de teclado fornecido.
positionBorderRect_() protected Posicione o retângulo de borda de um campo após a mudança de tamanho.
positionTextElement_(xOffset, contentWidth) protected Posicione o elemento de texto de um campo após a mudança de tamanho. Ele lida com o posicionamento LTR e RTL.
render_() protected

Usado por getSize() para mover/redimensionar todos os elementos DOM e obter o novo tamanho.

Toda renderização que tenha efeito sobre o tamanho/forma do bloco precisa ser feita aqui e acionada por getSize().

repositionForWindowResize()

Um gancho de desenvolvedor para reposicionar o WidgetDiv durante um redimensionamento de janela. Você precisará definir esse gancho se o campo tiver um WidgetDiv que precise se reposicionar quando a janela for redimensionada. Por exemplo, os campos de entrada de texto definem esse gancho para que o WidgetDiv de entrada possa se reposicionar em um evento de redimensionamento de janela. Isso é especialmente importante quando as entradas modais foram desativadas, já que os dispositivos Android vão disparar um evento de redimensionamento de janela quando o teclado de software for aberto.

Se quiser que o WidgetDiv se oculte em vez de ser reposicionado, retorne "false". Esse é o comportamento padrão.

DropdownDivs já lidam com a própria lógica de posicionamento, portanto não é necessário substituir essa função se o campo tiver apenas um DropdownDiv.

saveLegacyState(callingClass) protected Retorna uma versão em string do estado XML, se ele precisar ser usado. Caso contrário, retorna nulo para sinalizar que o campo precisa usar a própria serialização.
setEnabled(enabled) Defina se o valor desse campo pode ser alterado usando o editor quando o bloco de origem é editável.
setSourceBlock(block) Anexe esse campo a um bloco.
setTooltip(newTip) Define a dica para esse campo.
setValidator(handler)

Define uma nova função de validação para campos editáveis ou limpa um validador definido anteriormente.

A função do validador recebe o novo valor do campo e retorna o valor validado. O valor validado pode ser o valor de entrada, uma versão modificada dele ou nulo para cancelar a alteração.

Se a função não retornar nada (ou retornar indefinido), o novo valor será aceito como válido. Isso serve para permitir campos que usam a função validada como notificação de evento de alteração no nível do campo.

setValue(newValue, fireChangeEvent) Usado para alterar o valor do campo. Lida com a validação e os eventos. As subclasses devem substituir doClassValidation_ e doValueUpdate_ em vez desse método.
showEditor_(_e) protected Um hook de desenvolvedor para criar um editor para o campo. Por padrão, ele é um ambiente autônomo e precisa ser substituído para criar um editor.
updateEditable() Adiciona ou remove a interface indicando se esse campo é editável ou não.
updateSize_(margin) protected Atualiza o tamanho do campo com base no texto.