SOURCE CODE: Uize.Widget.Collapsy
/*______________
| ______ | U I Z E J A V A S C R I P T F R A M E W O R K
| / / | ---------------------------------------------------
| / O / | MODULE : Uize.Widget.Collapsy Class
| / / / |
| / / / /| | ONLINE : http://www.uize.com
| /____/ /__/_| | COPYRIGHT : (c)2010-2012 UIZE
| /___ | LICENSE : Available under MIT License or GNU General Public License
|_______________| http://www.uize.com/license.html
*/
/* Module Meta Data
type: Class
importance: 5
codeCompleteness: 80
testCompleteness: 0
docCompleteness: 0
*/
/*?
Introduction
The =Uize.Widget.Collapsy= widget provides functionality surrounding showing status messages (like a form warning) in both a collapsed and expanded state.
*DEVELOPERS:* `Ben Ilegbodu`, `Tim Carter`
*/
Uize.module ({
name:'Uize.Widget.Collapsy',
required:'Uize.Node.Classes',
builder:function(_superclass) {
/*** Variables for Scruncher Optimization ***/
var
_true = true,
_false = false
;
/*** Class Constructor ***/
var
_class = _superclass.subclass (),
_classPrototype = _class.prototype
;
/*** Private Instance Methods ***/
_classPrototype._updateUi = function() {
var _this = this;
if (_this.isWired) {
var _shown = _this._shown;
_this.setNodeStyle('', {display:_shown ? 'inline' : 'none'});
if (_shown) {
_this.setNodeInnerHtml('text', _this._getMessage(_this._collapsed ? _this._collapsedMessage : _this._expandedMessage));
Uize.Node.Classes.setState(
_this.getNode(''),
[_this._expandedClass, _this._collapsedClass],
_this._collapsed
);
}
}
};
/*** Private Instance Methods ***/
_classPrototype._getMessage = function(_message) {
return Uize.isFunction (_message) ? _message() : _message;
};
/*** Public Instance Methods ***/
_classPrototype.getCollapsedMessage = function() { return this._getMessage(this._collapsedMessage) };
_classPrototype.getExpandedMessage = function() { return this._getMessage(this._expandedMessage) };
_classPrototype.updateUi = function() {
this._updateUi();
_superclass.prototype.updateUi.call (this);
};
_classPrototype.wireUi = function () {
var _this = this;
if (!_this.isWired) {
function _collapse(_collapsed) { _this.set({_collapsed:_collapsed}) }
_this.wireNode (
'',
{
mouseover:function() { _collapse(_false) },
mouseout:function() { _collapse(_true) }
}
);
_superclass.prototype.wireUi.call (_this);
}
};
/*** Register Properties ***/
_class.registerProperties({
_collapsed:{
name:'collapsed',
onChange:_classPrototype._updateUi,
value:_true
},
_collapsedClass:{
name:'collapsedClass',
onChange:_classPrototype._updateUi
},
_collapsedMessage:{
name:'collapsedMessage',
onChange:_classPrototype._updateUi,
value:''
},
_expandedClass:{
name:'expandedClass',
onChange:_classPrototype._updateUi
},
_expandedMessage:{
name:'expandedMessage',
onChange:_classPrototype._updateUi
},
_shown:{
name:'shown',
onChange:_classPrototype._updateUi,
value:_false
}
});
return _class;
}
});