/**
@name Edo.controls.CheckBox
@class
@typeName check,checkbox
@description 多选框
@extend Edo.controls.Control
*/
Edo.controls.CheckBox = function(config){
/**
@name Edo.controls.CheckBox#checkedchange
@event
@description 选中状态改变事件
@property {Boolean} checked 是否选中
*/
Edo.controls.CheckBox.superclass.constructor.call(this);
};
Edo.controls.CheckBox.extend(Edo.controls.Control,{
/**
@name Edo.controls.CheckBox#valueField
@property
@default 'checked'
*/
valueField: 'checked',
/**
@name Edo.controls.CheckBox#defaultValue
@property
@default false
*/
defaultValue: false,
/**
@name Edo.controls.CheckBox#autoWidth
@property
@default true
*/
autoWidth: true,
/**
@name Edo.controls.CheckBox#minWidth
@property
@default 20
*/
minWidth: 20,
/**
@name Edo.controls.CheckBox#text
@property
@type String
@default ''
@description 文本
*/
text: '',
/**
@name Edo.controls.CheckBox#checked
@property
@type Boolean
@default false
@description 是否选中状态
*/
checked: false,
elCls: 'e-checkbox',
checkedCls: 'e-checked',
overcheckedCls: 'e-checked-over',
pressedcheckedCls: 'e-checked-pressed',
getInnerHtml: function(sb){
if(this.checked) this.elCls += ' '+this.checkedCls;
sb[sb.length] = '
';
sb[sb.length] = this.text;
sb[sb.length] = '
';
},
createChildren: function(el){
Edo.controls.CheckBox.superclass.createChildren.call(this, el);
this.iconEl = this.el.firstChild;
this.textEl = this.el.lastChild;
},
initEvents: function(){
if(!this.design){
var el = this.el;
Edo.util.Dom.addClassOnOver(el, this.overcheckedCls);
Edo.util.Dom.addClassOnClick(el, this.pressedcheckedCls);
this.on('click', this._onClick, this);
}
Edo.controls.CheckBox.superclass.initEvents.call(this);
},
_onClick: function(e){
if(!this.enable) return;
var checked = !this.checked;
this._setChecked(checked);
},
_setText: function(value){
if(this.text !== value){
this.text = value;
if(this.el){
this.textEl.innerHTML = this.text;
}
if(!Edo.isInt(this.width)){
this.widthGeted = false;
}
this.changeProperty('text', value);
this.relayout('text', value);
}
},
_setChecked: function(value){
value = Edo.toBool(value);
if(this.checked !== value){
this.checked = value;
if(this.el){
if(value){
Edo.util.Dom.addClass(this.el, this.checkedCls);
}else{
Edo.util.Dom.removeClass(this.el, this.checkedCls);
}
}
this.fireEvent('checkedchange',{
type: 'checkedchange',
source: this,
checked: value
});
this.changeProperty('checked', value);
}
}
});
Edo.controls.CheckBox.regType('checkbox', 'check');