Files
Tim Lancina 3648b48192 IonicApp api doc
Closes #255.
2015-10-06 16:29:05 -05:00

117 lines
3.0 KiB
TypeScript

import {Title} from 'angular2/angular2';
import {ClickBlock} from '../../util/click-block';
import {ScrollTo} from '../../animations/scroll-to';
import * as dom from '../../util/dom';
/**
* Component registry service. For more information on registering
* components see the [IdRef API reference](../id/IdRef/).
*/
export class IonicApp {
/**
* TODO
*/
constructor() {
this._title = new Title();
this._disTime = 0;
this._trnsTime = 0;
// Our component registry map
this.components = {};
}
/**
* Sets the document title.
* @param {string} val Value to set the document title to.
*/
setTitle(val) {
this._title.setTitle(val);
}
getTitle() {
return this._title.getTitle(val);
}
/**
* Sets if the app is currently enabled or not, meaning if it's
* available to accept new user commands. For example, this is set to `false`
* while views transition, a modal slides up, an action-sheet
* slides up, etc. After the transition completes it is set back to `true`.
* @param {bool} isEnabled
* @param {bool} fallback When `isEnabled` is set to `false`, this argument
* is used to set the maximum number of milliseconds that app will wait until
* it will automatically enable the app again. It's basically a fallback incase
* something goes wrong during a transition and the app wasn't re-enabled correctly.
*/
setEnabled(isEnabled, fallback=700) {
this._disTime = (isEnabled ? 0 : Date.now() + fallback);
ClickBlock(!isEnabled, fallback + 100);
}
/**
* Boolean if the app is actively enabled or not.
* @return {bool}
*/
isEnabled() {
return (this._disTime < Date.now());
}
setTransitioning(isTransitioning, fallback=700) {
this._trnsTime = (isTransitioning ? Date.now() + fallback : 0);
}
/**
* Boolean if the app is actively transitioning or not.
* @return {bool}
*/
isTransitioning() {
return (this._trnsTime > Date.now());
}
/**
* Register a known component with a key, for easy lookups later.
* @param {TODO} id The id to use to register the component
* @param {TODO} component The component to register
*/
register(id, component) {
if (this.components[id] && this.components[id] !== component) {
//console.error('Component id "' + id + '" already registered.');
}
this.components[id] = component;
}
/**
* Unregister a known component with a key.
* @param {TODO} id The id to use to unregister
*/
unregister(id) {
delete this.components[id];
}
/**
* Get a registered component with the given type (returns the first)
* @param {Object} cls the type to search for
* @return the matching component, or undefined if none was found
*/
getRegisteredComponent(cls) {
for(let component of this.components) {
if(component instanceof cls) {
return component;
}
}
}
/**
* Get the component for the given key.
* @param {TODO} key TODO
* @return {TODO} TODO
*/
getComponent(id) {
return this.components[id];
}
}