/*______________
| ______ | 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.mV2 Class
| / / / |
| / / / /| | ONLINE : http://uize.com
| /____/ /__/_| | COPYRIGHT : (c)2013-2014 UIZE
| /___ | LICENSE : Available under MIT License or GNU General Public License
|_______________| http://uize.com/license.html
*/
/* Module Meta Data
type: Class
importance: 8
codeCompleteness: 5
docCompleteness: 100
*/
/*?
Introduction
The =Uize.Widget.mV2= class implements the next generation widget base class and is currently under development.
*DEVELOPERS:* `Chris van Rensburg`
*/
Uize.module ({
name:'Uize.Widget.mV2',
required:[
'Uize.Widget.mHtmlBindings',
'Uize.Widget.mCssBindings',
'Uize.Widget.mEventBindings',
'Uize.Widget.mDeclarativeChildren',
'Uize.Widget.mLoc'
],
builder:function () {
'use strict';
var
/*** Variables for Scruncher Optimization ***/
_undefined,
_Uize = Uize,
_Uize_Widget = _Uize.Widget
;
return function (_class) {
_class.declare ({
mixins:[
_Uize_Widget.mHtmlBindings,
_Uize_Widget.mCssBindings,
_Uize_Widget.mEventBindings,
_Uize_Widget.mDeclarativeChildren,
_Uize_Widget.mLoc
],
instanceMethods:{
childHtml:function (_properties) {
var
m = this,
_childName =
_properties.name ||
(
'generatedChildName' +
(m.mV2_generatedChildNames == _undefined ? (m.mV2_generatedChildNames = 0) : m.mV2_generatedChildNames++)
),
_widgetClass = _Uize.getModuleByName (_properties.widgetClass) || _class,
_widgetClassName = _widgetClass.moduleName,
_children = m.children
;
delete _properties.name;
delete _properties.widgetClass;
var
_inlineState = _Uize.copy (_properties),
_html = '',
_child = _children [_childName],
_childExisted = !!_child
;
_child
? _child.set (_properties)
: (_child = m.addChild (_childName,_widgetClass,_properties))
;
_html = _child.get ('built')
? _child.getHtml ()
: ''
;
_childExisted ||
_Uize.copyInto (_inlineState,{widgetClass:_widgetClassName})
;
if (!_Uize.isEmpty (_inlineState))
_child.inlineState = _inlineState
;
return _html;
/*?
Instance Methods
childHtml
Returns the HTML for a child widget that can then be inserted into the HTML for the widget.
SYNTAX
......................................................
childHtml = myInstance.childHtml (childPropertiesOBJ);
......................................................
The =childHtml= method is intended primarily for use within the HTML generator (usually a JST template) for a widget.
*/
},
superHtml:function (_input,_extraInput) {
return this.Class.superclass.get ('html').process.call (this,_Uize.copy (_input,_extraInput));
}
},
treeInheritedStateProperties:{
size:{value:'medium'}
},
cssBindings:{
sizeInherited:'value'
},
set:{
html:''
}
});
};
}
});