blockly > Campo

Classe de campo

Classe abstrata para um campo editável.

Signature:

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

Implementa: IKeyboardAccessible, IRegistrable, ISerializable, IFocusableNode

Construtores

Construtor Modificadores Descrição
(constructor)(value, validator, config) Cria uma nova instância da classe Field.

Propriedades

Propriedade Modificadores Tipo Descrição
borderRect_ protected SVGRectElement | null 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 | null Constantes associadas ao renderizador do bloco de origem.
DEFAULT_VALUE T | null

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

Exemplo: FieldImage.prototype.DEFAULT_VALUE = null;

EDITABLE 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 É possível alterar o valor do campo usando o editor em um bloco editável?
fieldGroup_ protected SVGGElement | null O elemento de grupo SVG do campo renderizado.
isDirty_ protected booleano Esse bloco precisa ser renderizado novamente?
maxDisplayLength número Número máximo de caracteres de texto a serem mostrados 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

static

readonly

(não declarado) Espaço sem quebra.
SERIALIZABLE booleano Os campos serializáveis são salvos pelo serializador, mas os não serializáveis não. Os campos editáveis também precisam ser serializáveis. Isso não é o caso por padrão, de modo que SERIALIZABLE é compatível com versões anteriores.
size_ protected Tamanho Recebe o tamanho deste campo. Como getSize() e updateSize() têm efeitos colaterais, isso funciona como um shim para subclasses que querem ajustar os limites do campo ao definir/extrair o tamanho sem acionar renderizações indesejadas ou outros efeitos colaterais. As subclasses precisam substituir *ambas* as funções get e set se uma delas for substituída. A implementação pode chamar diretamente a super, mas ela precisa existir de acordo com a especificação do JS.
SKIP_SETUP

static

readonly

símbolo único Um valor usado para sinalizar quando o construtor de um campo *não* precisa definir o valor do campo ou executar configure_, e precisa permitir que uma subclasse faça isso.
sourceBlock_ protected Bloquear | null Bloco ao qual este campo está anexado. Começa como nulo e depois é definido na inicialização.
textContent_ protected Texto | null O elemento de conteúdo de texto do campo renderizado.
textElement_ protected SVGTextElement | null O elemento de texto SVG do campo renderizado.
validator_ protected FieldValidator<T> | null Função de validação chamada quando o usuário edita um campo editável.
value_ protected T | null
visible_ protected booleano O campo está visível ou oculto devido ao bloco estar recolhido?

Métodos

Método Modificadores Descrição
applyColour()

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

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

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

bindEvents_() protected Vincule eventos ao campo. Pode ser substituído por subclasses se elas precisarem fazer o processamento de entrada personalizado.
canBeFocused() Consulte IFocusableNode.canBeFocused.
configure_(config) protected Processa o mapa de configuração transmitido para o campo.
createBorderRect_() protected Crie 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.
dispose() Descartar todos os objetos e eventos DOM pertencentes a esse campo editável.
doClassValidation_(newValue) protected

Valide as mudanças no valor de um campo antes de defini-las. Consulte **FieldDropdown** para conferir 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, _fireChangeEvent) protected Usado para notificar o campo de que um valor inválido foi inserido. Pode ser substituído por subclasses. Consulte FieldTextInput. Não há operação por padrão.
doValueUpdate_(newValue) protected Usado para atualizar o valor de um campo. Pode ser substituído por subclasses para fazer o armazenamento personalizado de valores/atualização de coisas externas.
forceRerender() Forçar uma nova renderização do bloco em que esse campo está instalado, o que vai renderizar esse campo e ajustar as mudanças de tamanho. Outros campos no mesmo bloco não serão renderizados novamente porque os tamanhos deles já foram registrados.
fromJson(_options) static

As subclasses precisam implementar esse método novamente para criar a subclasse de campo a partir de um objeto de argumento JSON.

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

fromXml(fieldElement) Define o valor do campo com base no elemento XML fornecido. Só pode ser chamado por Blockly.Xml.
getAbsoluteXY_() protected Retorna as coordenadas absolutas do canto superior esquerdo deste campo. A origem (0,0) é o canto superior esquerdo do corpo da página.
getBorderRect() protected Retorna 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 é clicado em um campo editável, o editor é aberto.
getConstants() Receba o provedor de constante do renderizador.
getDisplayText_() protected Recebe o texto desse campo para exibição no bloco. Pode ser diferente de getText devido a reticências e outras formatações.
getFlipRtl() Retorna se devemos inverter o campo em RTL.
getFocusableElement() Consulte IFocusableNode.getFocusableElement.
getFocusableTree() Consulte IFocusableNode.getFocusableTree.
getSize()

Retorna a altura e a largura do campo.

Em geral, esse é o único lugar em que o render_ é chamado.

getSourceBlock() Recebe o bloco ao qual este campo está anexado.
getSvgRoot() Extrai o elemento de grupo para este campo editável. Usado para medir o tamanho e o posicionamento.
getText_() protected Um hook de desenvolvedor para substituir o texto retornado deste campo. Substitua se a representação de texto do valor desse campo não for apenas um cast de string do valor. Retorna null para recorrer a um cast de string.
getText() Recebe o texto desse campo. Substitua getText_ para fornecer um comportamento diferente do que simplesmente converter o valor em uma string.
getTextContent() protected Consegue o conteúdo do texto.
getTextElement() protected Recupera o elemento de texto.
getTooltip() Retorna o texto da dica de ferramenta para esse campo.
getValidator() Recebe a função de validação para campos editáveis ou nulo se não estiver definido.
getValue() Recebe o valor atual do campo.
initModel() Inicializa o modelo do campo depois que ele é instalado em um bloco. Não há operação por padrão.
initView() protected Crie a interface do 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. Por padrão, os campos são clicáveis em pop-ups sempre abertos, como a caixa de ferramentas simples, mas não em pop-ups de fechamento automático, como a caixa de ferramentas de categoria. As subclasses podem substituir essa função para mudar esse comportamento. isClickable também precisa retornar "true" para que isso tenha efeito.
isCurrentlyEditable() Verifique se esse campo está editável no momento. Alguns campos nunca podem ser EDITADOS (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.
isSerializable() Verifique se esse campo precisa ser serializado pelo renderizador XML. Processa a lógica para compatibilidade com versões anteriores e estados incongruentes.
isVisible() Mostra se esse campo editável está visível ou não.
loadLegacyState(callingClass, state) Carrega o estado especificado usando os hooks XML antigos, se eles forem usados. Retorna "true" para indicar que o carregamento foi processado. Caso contrário, retorna "false".
loadState(state) Define o estado do campo com base no valor de estado fornecido. Só pode ser chamado pelo sistema de serialização.
onLocationChange(_) Notifica o campo de que ele mudou de local.
onMouseDown_(e) protected Processe um evento de pointerdown em um campo.
onNodeBlur() Consulte IFocusableNode.onNodeBlur.
onNodeFocus() Consulte IFocusableNode.onNodeFocus.
onShortcut(_shortcut) Processa o atalho de teclado fornecido.
positionBorderRect_() protected Posicione o retângulo de borda de um campo após uma mudança de tamanho.
positionTextElement_(xOffset, contentWidth) protected Posicione o elemento de texto de um campo após uma mudança de tamanho. Isso processa o posicionamento LTR e RTL.
referencesVariables() Indica se esse campo faz referência a variáveis do Blockly. Se for verdadeiro, talvez seja necessário processá-lo de maneira diferente durante a serialização e desserialização. As subclasses podem substituir isso.
refreshVariableName() Atualize o nome da variável referenciada por esse campo, se ele fizer referência a variáveis.
render_() protected

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

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

repositionForWindowResize()

Um hook de desenvolvedor para reposicionar o WidgetDiv durante o redimensionamento de uma janela. Você precisa definir esse hook se o campo tiver um WidgetDiv que precisa 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 as entradas modais são desativadas, já que os dispositivos Android acionam um evento de redimensionamento de janela quando o teclado virtual é aberto.

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

Os DropdownDivs já processam 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 com string do estado XML, se ele for usado. Caso contrário, ele retorna nulo para indicar que o campo precisa usar a própria serialização.
saveState(_doFullSerialization) Salva o valor desse campo como algo que pode ser serializado em JSON. Só pode ser chamado pelo sistema de 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 de ferramenta 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 do valor de entrada ou nulo para abortar a mudança.

Se a função não retornar nada (ou retornar indefinido), o novo valor será aceito como válido. Isso permite que os campos usem a função validada como uma notificação de evento de mudança no nível do campo.

setValue(newValue, fireChangeEvent) Usado para mudar o valor do campo. Processa a validação e os eventos. As subclasses precisam 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, isso não é necessário e precisa ser substituído para criar um editor.
toXml(fieldElement) Serializa o valor desse campo em XML. Só pode ser chamado por Blockly.Xml.
updateEditable() Adicione ou remova a interface que indica se o campo é editável ou não.
updateSize_(margin) protected Atualiza o tamanho do campo com base no texto.