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 | nulo 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 sobre o ponto de acesso que inicia o editor.
DEFAULT_VALUE P | nulo

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

Exemplo: FieldImage.prototype.DEFAULT_VALUE = null;

EDITÁVEL booleano Os campos editáveis geralmente mostram algum tipo de interface indicando que são editáveis. Eles também serão salvos pelo serializador.
enabled_ protected booleano 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 booleano Esse bloco precisa ser renderizado novamente?
maxDisplayLength number Máximo de caracteres de texto a serem exibidos antes da adição de reticências.
nome? string Nome do campo (opcional). Exclusivo em cada bloco. Os rótulos estáticos geralmente não têm nome.
NBSP

static

readonly

(não declarado) Espaço sem quebra.
SERIALIZÁVEL booleano Os campos serializáveis são salvos pelo serializador, e 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 O bloqueio deste campo está anexado. Inicia como nulo e é definido no init.
textContent_ protected Texto | nulo O elemento de conteúdo de texto do campo renderizado.
textElement_ protected SVGTextElement | nulo O elemento de texto SVG do campo renderizado.
validator_ protected FieldValidator&lt;T&gt; | nulo Função de validação chamada quando o usuário edita um campo editável.
value_ protected P | nulo
visible_ protected booleano O campo está visível ou oculto porque o bloco está sendo recolhido?

Métodos

Método Modificadores Descrição
applyColour()

Atualiza o campo para corresponder à cor/estilo do bloco.

Subclasses não abstratas podem querer implementar isso se a cor do campo depender da cor do bloco. Ele será chamado automaticamente nos momentos relevantes, como quando o bloco ou renderizador pai mudar.

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

bindEvents_() protected Vincular eventos ao campo. Podem ser substituídas por subclasses se elas precisarem fazer processamento de entradas personalizadas.
configure_(config) protected Processe o mapa de configuração transmitido para o campo.
createBorderRect_() protected Cria um elemento de campo retângulo de borda. 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 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 retornará undefined, mas é válido que uma subclasse retorne undefined se o novo valor for compatível com T.

doClassValidation_(newValue) protected
doValueInvalid_(_invalidValue, _fireChangeEvent) (link em inglês) protected Usado para notificar o campo de 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.
fromJson(_options) static

As subclasses devem reimplementar esse método para construir sua subclasse Field a partir de um objeto arg JSON.

É um erro tentar registrar uma subclasse de campo no FieldRegistry se essa subclasse não substitui esse método.

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 da 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 é clicado em um campo editável, o editor é 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 às reticências e outras formatações.
getFlipRtl() Retorna se o campo deve ou não ser alternado em RTL.
getSize()

Retorna a altura e a largura do campo.

Em geral, esse deve ser o único local de onde a renderização_ é chamada.

getSourceBlock() Acessa o bloco ao qual este campo está anexado.
getSvgRoot() Extrai o elemento do grupo deste campo editável. Usado para medir o tamanho e para posicionamento.
getText_() protected Um gancho do desenvolvedor para substituir o texto retornado desse campo. Modifique se a representação de texto do valor desse campo não for apenas uma string convertida do valor. Retorne nulo para recorrer a uma transmissão de string.
getText() Receba o texto desse campo. Substitua getText_ para fornecer um comportamento diferente de simplesmente transmitir o valor para uma string.
getTextContent() protected Extrai o conteúdo do texto.
getTextElement() protected Recupera 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 retorna nulo se não estiver definido.
getValue() Extrai o valor atual do campo.
initModel() Inicializa o modelo do campo após ele 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 deve ser clicável enquanto o bloco está em um menu suspenso. O padrão é que os campos sejam clicáveis em menus suspensos sempre abertos, como a caixa de ferramentas simples, mas não nos menus suspensos com fechamento automático, como na caixa de ferramentas de categoria. As subclasses podem substituir essa função para alterar esse comportamento. Observe que isClickable também precisa retornar "true" para que isso tenha efeito.
isCurrentlyEditable() Verifique se esse campo pode ser editado no momento. Alguns campos nunca são EDITÁVEIS (por exemplo, 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 for editável.
isFullBlockField() protected

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

Tenha cuidado ao substituir essa função. Pode não funcionar como esperado / esperado, porque o comportamento foi invadido. Se você estiver pensando em substituir essa função, poste no fórum com o comportamento pretendido para ver se há outra abordagem.

isSerializable() Verifique se esse campo precisa ser serializado pelo renderizador XML. Lida com a lógica de compatibilidade com versões anteriores e estados incongruentes.
isTabNavigable() Retorna indicando se o campo pode ou não ser navegável por guia.
isVisible() Identifica se este campo editável está visível ou não.
loadLegacyState(callingClass, state) Carrega o estado especificado usando os hooks XML antigos, se eles precisarem ser usados. Retorna "true" para indicar que o carregamento foi realizado. Caso contrário, retorna "false".
onLocationChange(_) Notifica o campo sobre a mudança de local.
onMouseDown_(e) protected Processa um evento de ponteirodown em um campo.
onShortcut(_shortcut) Processa o atalho de teclado fornecido.
positionBorderRect_() protected Posicionar o retângulo de borda de um campo após uma mudança de tamanho.
positionTextElement_(xoffset, contentWidth) (link em inglês) protected Posicionar o elemento de texto de um campo após uma mudança de tamanho. Isso lida com o posicionamento LTR e RTL.
render_() protected

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

Toda renderização que tem efeito no tamanho/forma do bloco deve ser feita aqui e deve ser acionada por getSize().

repositionForWindowResize()

Um hook de desenvolvedor para reposicionar o WidgetDiv durante o redimensionamento de uma janela. Você precisa 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 hook para que o WidgetDiv de entrada possa se reposicionar em um evento de redimensionamento de janela. Isso é especialmente importante quando entradas modais são desativadas, já que dispositivos Android disparam um evento de redimensionamento de janela quando o teclado de software é aberto.

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

Os DropdownDivs já gerenciam a própria lógica de posicionamento, então você não precisa modificar essa função se o campo tiver apenas um DropdownDiv.

saveLegacyState(callingClass) protected Retorna uma versão em string do estado XML, se necessário. Caso contrário, retornará 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 for editável.
setSourceBlock(block) Anexe esse campo a um bloco.
setTooltip(newTip) Define a dica para este campo.
setValidator(handler)

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

A função de validação recebe o novo valor do campo e retorna um 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 permite campos que usam a função validada como uma 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 deste 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() Adicione ou remova a interface indicando se esse campo é editável ou não.
updateSize_(margin) protected Atualiza o tamanho do campo com base no texto.