hedera-web/js/htk/field/radio.js

76 lines
1.3 KiB
JavaScript

var RadioGroup = require ('./radio-group');
module.exports = new Class
({
Extends: Htk.Field
,Tag: 'htk-radio'
,Properties:
{
tip:
{
type: String
,set: function (x)
{
if (x)
this.node.title = _(x);
}
},
radioGroup:
{
type: RadioGroup
,set: function (x)
{
if (this._radioGroup)
this._radioGroup.removeButton (this);
this.link ({_radioGroup: x}, {'changed': this._onRadioGroupChange});
this.node.name = x.name;
x.buttons.push(this);
this._onRadioGroupChange ();
}
,get: function ()
{
return this._radioGroup;
}
}
}
,_radioGroup: null
,render: function ()
{
var radio = Vn.Browser.createRadio ('', this.doc);
radio.checked = false;
radio.addEventListener ('change', this._onChange.bind (this));
this._node = radio;
}
,_onChange: function ()
{
if (this.node.checked && this._radioGroup)
this._radioGroup.value = this.value;
}
,_onRadioGroupChange: function ()
{
if (this._radioGroup.value && this._radioGroup.value == this.value)
this.node.checked = true;
else
this.node.checked = false;
}
,putValue: function (value)
{
if (!value)
this.node.value = '';
else
this.node.value = value;
}
,setEditable: function (editable)
{
this.node.disabled = !editable;
}
});