Um campo de caixa de seleção armazena uma string como valor e outra como texto. O
valor é 'TRUE'
ou 'FALSE'
, e o texto é 'true'
ou
'false'
.
Campo de caixa de seleção
![Um bloco com o rótulo "checkbox:" e um campo de caixa de seleção com uma marca de seleção.
Campo de caixa de seleção em bloco recolhido
Criação
JSON
{
"type": "example_checkbox",
"message0": "checkbox: %1",
"args0": [
{
"type": "field_checkbox",
"name": "FIELDNAME",
"checked": true
}
]
}
JavaScript
Blockly.Blocks['example_checkbox'] = {
init: function() {
this.appendDummyInput()
.appendField('checkbox:')
.appendField(new Blockly.FieldCheckbox(true), 'FIELDNAME');
}
};
O construtor de caixas de seleção recebe um valor opcional e um
validador opcional. O valor opcional precisa ser
'TRUE'
, 'FALSE'
ou um booleano. Caso contrário, o padrão será false
.
Serialização
JSON
O JSON de um campo de caixa de seleção é assim:
{
"fields": {
"FIELDNAME": true
}
}
Em que FIELDNAME
é uma string que faz referência a um campo de caixa de seleção e
o valor é o valor a ser aplicado ao campo. O valor precisa ser booleano.
XML
O XML de um campo de caixa de seleção tem esta aparência:
<field name="FIELDNAME">TRUE</field>
ou
<field name="FIELDNAME">true</field>
Onde o atributo name
contém uma string que faz referência a um campo de caixa de seleção
e o texto interno é o valor a ser aplicado ao campo. O valor do texto interno
segue as mesmas regras do valor do construtor.
Depois de desserialização e reserialização, todos os valores do texto interno
vão estar em maiúsculas ('TRUE'
ou 'FALSE'
). Isso às vezes é importante
ao comparar espaços de trabalho.
Personalização
Marca de seleção
A propriedade Blockly.FieldCheckbox.CHECK_CHAR
pode ser usada para mudar a
aparência da marca de seleção. O valor precisa ser uma string que contenha um caractere
Unicode.
O padrão da propriedade CHECK_CHAR
é '\u2713' ou ✓.
Essa é uma propriedade global, então ela vai modificar todos os campos de caixa de seleção quando definida.
Como criar um validador de caixa de seleção
O valor de um campo de caixa de seleção é 'TRUE'
ou 'FALSE'
. Portanto, um validador precisa
aceitar esses valores (ou seja, uma string) e retornar 'TRUE'
, 'FALSE'
, null
ou
undefined
.
Confira um exemplo de validador que oculta ou mostra um campo de entrada de texto com base na seleção da caixa de seleção:
validate: function(newValue) {
var sourceBlock = this.getSourceBlock();
sourceBlock.showTextField_ = newValue == 'TRUE';
sourceBlock.updateTextField();
return newValue;
},
updateTextField: function() {
var input = this.getInput('DUMMY');
if (this.showTextField_ && !this.getField('TEXT')) {
input.appendField(new Blockly.FieldTextInput(), 'TEXT');
} else if (!this.showTextField_ && this.getField('TEXT')) {
input.removeField('TEXT');
}
}