ngx-materialize
Version:
An Angular wrap around Materialize library
156 lines (155 loc) • 11.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector, } from '@angular/core';
var MzInjectionService = /** @class */ (function () {
function MzInjectionService(applicationRef, componentFactoryResolver, injector) {
this.applicationRef = applicationRef;
this.componentFactoryResolver = componentFactoryResolver;
this.injector = injector;
}
/**
* Appends a component to an adjacent location.
*/
/**
* Appends a component to an adjacent location.
* @template T
* @param {?} componentClass
* @param {?=} options
* @param {?=} location
* @return {?}
*/
MzInjectionService.prototype.appendComponent = /**
* Appends a component to an adjacent location.
* @template T
* @param {?} componentClass
* @param {?=} options
* @param {?=} location
* @return {?}
*/
function (componentClass, options, location) {
var _this = this;
if (options === void 0) { options = {}; }
if (location === void 0) { location = this.getContainerElement(); }
// instantiate component to load
var /** @type {?} */ componentFactory = this.componentFactoryResolver.resolveComponentFactory(componentClass);
var /** @type {?} */ componentRef = componentFactory.create(this.injector);
// project the options passed to the component instance
this.projectComponentInputs(componentRef, options);
// attach view for dirty checking
this.applicationRef.attachView(componentRef.hostView);
// detach view when component is destroyed
componentRef.onDestroy(function () {
_this.applicationRef.detachView(componentRef.hostView);
});
// append component to location in the DOM where we want it to be rendered
var /** @type {?} */ componentRootNode = this.getComponentRootNode(componentRef);
location.appendChild(componentRootNode);
return componentRef;
};
/**
* Overrides the default container element.
*/
/**
* Overrides the default container element.
* @param {?} container
* @return {?}
*/
MzInjectionService.prototype.setRootViewContainer = /**
* Overrides the default container element.
* @param {?} container
* @return {?}
*/
function (container) {
this.container = container;
};
/**
* Gets the html element for a component ref.
* @param {?} componentRef
* @return {?}
*/
MzInjectionService.prototype.getComponentRootNode = /**
* Gets the html element for a component ref.
* @param {?} componentRef
* @return {?}
*/
function (componentRef) {
return /** @type {?} */ ((/** @type {?} */ (componentRef.hostView)).rootNodes[0]);
};
/**
* Gets the container element.
* @return {?}
*/
MzInjectionService.prototype.getContainerElement = /**
* Gets the container element.
* @return {?}
*/
function () {
return this.container || document.body;
};
/**
* Projects the inputs onto the component.
* @template T
* @param {?} component
* @param {?} options
* @return {?}
*/
MzInjectionService.prototype.projectComponentInputs = /**
* Projects the inputs onto the component.
* @template T
* @param {?} component
* @param {?} options
* @return {?}
*/
function (component, options) {
if (options) {
var /** @type {?} */ props = Object.getOwnPropertyNames(options);
try {
for (var props_1 = tslib_1.__values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {
var prop = props_1_1.value;
component.instance[prop] = options[prop];
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);
}
finally { if (e_1) throw e_1.error; }
}
}
return component;
var e_1, _a;
};
MzInjectionService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
MzInjectionService.ctorParameters = function () { return [
{ type: ApplicationRef, },
{ type: ComponentFactoryResolver, },
{ type: Injector, },
]; };
return MzInjectionService;
}());
export { MzInjectionService };
function MzInjectionService_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MzInjectionService.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MzInjectionService.ctorParameters;
/** @type {?} */
MzInjectionService.prototype.container;
/** @type {?} */
MzInjectionService.prototype.applicationRef;
/** @type {?} */
MzInjectionService.prototype.componentFactoryResolver;
/** @type {?} */
MzInjectionService.prototype.injector;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtbWF0ZXJpYWxpemUvIiwic291cmNlcyI6WyJzcmMvc2hhcmVkL2luamVjdGlvbi9pbmplY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBR3hCLFVBQVUsRUFDVixRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7O0lBTXJCLDRCQUNVLGdCQUNBLDBCQUNBO1FBRkEsbUJBQWMsR0FBZCxjQUFjO1FBQ2QsNkJBQXdCLEdBQXhCLHdCQUF3QjtRQUN4QixhQUFRLEdBQVIsUUFBUTtLQUNqQjtJQUVEOztPQUVHOzs7Ozs7Ozs7SUFDSCw0Q0FBZTs7Ozs7Ozs7SUFBZixVQUNFLGNBQXVCLEVBQ3ZCLE9BQWlCLEVBQ2pCLFFBQThDO1FBSGhELGlCQXlCQztRQXZCQyx3QkFBQSxFQUFBLFlBQWlCO1FBQ2pCLHlCQUFBLEVBQUEsV0FBb0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFOztRQUc5QyxxQkFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0YscUJBQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7O1FBRzVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7O1FBR25ELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7UUFHdEQsWUFBWSxDQUFDLFNBQVMsQ0FBQztZQUNyQixLQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdkQsQ0FBQyxDQUFDOztRQUdILHFCQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxRQUFRLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFeEMsTUFBTSxDQUFDLFlBQVksQ0FBQztLQUNyQjtJQUVEOztPQUVHOzs7Ozs7SUFDSCxpREFBb0I7Ozs7O0lBQXBCLFVBQXFCLFNBQWtCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0tBQzVCOzs7Ozs7SUFLTyxpREFBb0I7Ozs7O2NBQUMsWUFBK0I7UUFDMUQsTUFBTSxtQkFBQyxtQkFBQyxZQUFZLENBQUMsUUFBZ0MsRUFBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVksRUFBQzs7Ozs7O0lBTXpFLGdEQUFtQjs7Ozs7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQzs7Ozs7Ozs7O0lBTWpDLG1EQUFzQjs7Ozs7OztjQUFJLFNBQTBCLEVBQUUsT0FBWTtRQUN4RSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1oscUJBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7Z0JBQ2xELEdBQUcsQ0FBQyxDQUFlLElBQUEsVUFBQSxpQkFBQSxLQUFLLENBQUEsNEJBQUE7b0JBQW5CLElBQU0sSUFBSSxrQkFBQTtvQkFDYixTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDMUM7Ozs7Ozs7OztTQUNGO1FBQ0QsTUFBTSxDQUFDLFNBQVMsQ0FBQzs7OztnQkF2RXBCLFVBQVU7Ozs7Z0JBVFQsY0FBYztnQkFDZCx3QkFBd0I7Z0JBSXhCLFFBQVE7OzZCQU5WOztTQVdhLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbmplY3RvcixcclxuICBUeXBlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTXpJbmplY3Rpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIGNvbnRhaW5lcjogRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcclxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwZW5kcyBhIGNvbXBvbmVudCB0byBhbiBhZGphY2VudCBsb2NhdGlvbi5cclxuICAgKi9cclxuICBhcHBlbmRDb21wb25lbnQ8VD4oXHJcbiAgICBjb21wb25lbnRDbGFzczogVHlwZTxUPixcclxuICAgIG9wdGlvbnM6IGFueSA9IHt9LFxyXG4gICAgbG9jYXRpb246IEVsZW1lbnQgPSB0aGlzLmdldENvbnRhaW5lckVsZW1lbnQoKSxcclxuICApOiBDb21wb25lbnRSZWY8VD4ge1xyXG4gICAgLy8gaW5zdGFudGlhdGUgY29tcG9uZW50IHRvIGxvYWRcclxuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnRDbGFzcyk7XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuXHJcbiAgICAvLyBwcm9qZWN0IHRoZSBvcHRpb25zIHBhc3NlZCB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlXHJcbiAgICB0aGlzLnByb2plY3RDb21wb25lbnRJbnB1dHMoY29tcG9uZW50UmVmLCBvcHRpb25zKTtcclxuXHJcbiAgICAvLyBhdHRhY2ggdmlldyBmb3IgZGlydHkgY2hlY2tpbmdcclxuICAgIHRoaXMuYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgIC8vIGRldGFjaCB2aWV3IHdoZW4gY29tcG9uZW50IGlzIGRlc3Ryb3llZFxyXG4gICAgY29tcG9uZW50UmVmLm9uRGVzdHJveSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYuZGV0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gYXBwZW5kIGNvbXBvbmVudCB0byBsb2NhdGlvbiBpbiB0aGUgRE9NIHdoZXJlIHdlIHdhbnQgaXQgdG8gYmUgcmVuZGVyZWRcclxuICAgIGNvbnN0IGNvbXBvbmVudFJvb3ROb2RlID0gdGhpcy5nZXRDb21wb25lbnRSb290Tm9kZShjb21wb25lbnRSZWYpO1xyXG4gICAgbG9jYXRpb24uYXBwZW5kQ2hpbGQoY29tcG9uZW50Um9vdE5vZGUpO1xyXG5cclxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgY29udGFpbmVyIGVsZW1lbnQuXHJcbiAgICovXHJcbiAgc2V0Um9vdFZpZXdDb250YWluZXIoY29udGFpbmVyOiBFbGVtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGh0bWwgZWxlbWVudCBmb3IgYSBjb21wb25lbnQgcmVmLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50Um9vdE5vZGUoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55Pik6IEVsZW1lbnQge1xyXG4gICAgcmV0dXJuIChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgY29udGFpbmVyIGVsZW1lbnQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRDb250YWluZXJFbGVtZW50KCk6IEVsZW1lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyIHx8IGRvY3VtZW50LmJvZHk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9qZWN0cyB0aGUgaW5wdXRzIG9udG8gdGhlIGNvbXBvbmVudC5cclxuICAgKi9cclxuICBwcml2YXRlIHByb2plY3RDb21wb25lbnRJbnB1dHM8VD4oY29tcG9uZW50OiBDb21wb25lbnRSZWY8VD4sIG9wdGlvbnM6IGFueSk6IENvbXBvbmVudFJlZjxUPiB7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBjb25zdCBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9wdGlvbnMpO1xyXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcHMpIHtcclxuICAgICAgICBjb21wb25lbnQuaW5zdGFuY2VbcHJvcF0gPSBvcHRpb25zW3Byb3BdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29tcG9uZW50O1xyXG4gIH1cclxufVxyXG4iXX0=