StructureJS
0.15.2A class based utility library for building modular and scalable web platform applications. Features opt-in classes and utilities which provide a solid foundation and toolset to build your next project.
import DOMElement from './DOMElement';
/**
* <b>DEPRECATED</b>: This {{#crossLink "Stage"}}{{/crossLink}} class has be deprecated. The <b>appendTo</b> method has been moved to
* the {{#crossLink "DOMElement"}}{{/crossLink}} class.
*
* The {{#crossLink "Stage"}}{{/crossLink}} class should be extended by your main application or root class.
*
* @class Stage
* @extends DOMElement
* @module StructureJS
* @submodule view
* @constructor
* @author Robert S. (www.codeBelt.com)
* @requires Extend
* @requires DOMElement
* @requires jQuery
* @example
* // This example illustrates how to setup your main application or root class when extending the {{#crossLink "Stage"}}{{/crossLink}} class.
* class MainClass extends Stage {
*
* constructor() {
* super();
* }
*
* create() {
* super.create();
*
* // Create and add your child objects to this parent class.
* }
*
* enable() {
* if (this.isEnabled === true) { return; };
*
* // Enable the child objects and add any event listeners.
*
* super.enable();
* }
*
* disable() {
* if (this.isEnabled === false) { return; };
*
* // Disable the child objects and remove any event listeners.
*
* super.disable();
* }
*
* layout() {
* // Layout or update the child objects in this parent class.
* }
*
* destroy() {
* this.disable();
*
* // Destroy the child objects and references in this parent class to prepare for garbage collection.
*
* super.destroy();
* }
*
* }
*
*
* <b>Instantiation Example</b><br>
* This example illustrates how to instantiate your main application or root class.
*
* let app = new MainClass();
* app.appendTo('body');
*
*/
class Stage extends DOMElement
{
constructor()
{
super();
}
/**
* <b>DEPRECATED</b>: This <b>appendTo</b> method has been deprecated and moved to DOMElement.{{#crossLink "DOMElement/appendTo:method"}}{{/crossLink}}.
*
* The selected HTML element that the application should have control over. This method starts the lifecycle of the application.
*
* @method appendTo
* @param type {any} A string value where your application will be appended. This can be an element id (#some-id), element class (.some-class) or a element tag (body).
* @param [enabled=true] {boolean} Sets the enabled state of the object.
* @chainable
*/
public appendTo(type:any, enabled:boolean = true):any
{
this.$element = (type instanceof jQuery) ? type : jQuery(type);
this._addClientSideId(this);
if (this.isCreated === false)
{
this.create();
this.isCreated = true;
if (enabled === false)
{
this.disable();
}
else
{
this.enable();
}
this.layout();
}
return this;
}
}
export default Stage;