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: |
|
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 |
|
(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 |
|
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 |
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. |