com.phloxui
Version:
PhloxUI Ng2+ Framework
197 lines (196 loc) • 18.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Component, Input, ViewContainerRef, ComponentFactoryResolver, ElementRef } from '@angular/core';
import { AbstractDataEditor } from './AbstractDataEditor';
import { RecordView } from './editor.internal/RecordView.component';
import { CalendarView } from './editor.internal/CalendarView.component';
import { FormView } from './editor.internal/FormView.component';
import { ViewModel } from '../model/ViewModel';
var /** @type {?} */ TYPE_NAME = "phx-view-wrapper";
var /** @type {?} */ RECORD_VIEW = RecordView.TYPE_NAME;
var /** @type {?} */ CALENDAR_VIEW = CalendarView.TYPE_NAME;
var /** @type {?} */ FORM_VIEW = FormView.TYPE_NAME;
var /** @type {?} */ KANBAN_VIEW = 'kanban-view';
var /** @type {?} */ RECYCLE_VIEW = 'recycle-view';
var ViewWrapper = /** @class */ (function () {
function ViewWrapper(target, componentFactoryResolver, elementRef) {
this.target = target;
this.componentFactoryResolver = componentFactoryResolver;
this.elementRef = elementRef;
this.isRendered = false;
}
/**
* @return {?}
*/
ViewWrapper.prototype.ngOnInit = /**
* @return {?}
*/
function () {
if (this.editor !== null && (typeof this.editor !== 'undefined')) {
this.editor.addViewWrapper(this);
}
};
/**
* @return {?}
*/
ViewWrapper.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.editor !== null && (typeof this.editor !== 'undefined')) {
this.editor.removeViewWrapper(this);
}
};
/**
* @return {?}
*/
ViewWrapper.prototype.reRender = /**
* @return {?}
*/
function () {
this.isRendered = false;
this.render();
};
/**
* @return {?}
*/
ViewWrapper.prototype.render = /**
* @return {?}
*/
function () {
var _this = this;
if (this.isRendered) {
return;
}
if (this.model === null || this.model === undefined) {
return;
}
// remove old dom
if (this.elementRef !== null && typeof this.elementRef !== 'undefined') {
if (this.componentRef !== null && typeof this.componentRef !== 'undefined') {
if (typeof this.componentRef.instance.setData === 'function') {
this.componentRef.instance.setData(null);
}
if (typeof this.componentRef.instance.setDataParent === 'function') {
this.componentRef.instance.setDataParent(null);
}
this.componentRef.destroy();
}
}
var /** @type {?} */ compType = this.getViewComponentType(this.model.type);
if (compType != null && (typeof compType !== 'undefined')) {
var /** @type {?} */ simpleCompoFactory = this.componentFactoryResolver.resolveComponentFactory(compType);
var /** @type {?} */ compRef = this.target.createComponent(simpleCompoFactory);
compRef.instance.setEditor(this.editor);
compRef.instance.setModel(this.model);
this.componentRef = compRef;
// use Function handler form because cant use output and emit out
var /** @type {?} */ showEvent = compRef.instance.getShowEvent();
if (showEvent !== null && typeof showEvent !== 'undefined') {
showEvent.subscribe(function (event) {
if (_this.showEventHandler !== null && typeof _this.showEventHandler !== 'undefined') {
_this.showEventHandler(event);
}
});
}
var /** @type {?} */ hideEvent = compRef.instance.getHideEvent();
if (hideEvent !== null && typeof hideEvent !== 'undefined') {
hideEvent.subscribe(function (event) {
if (_this.hideEventHandler !== null && typeof _this.hideEventHandler !== 'undefined') {
_this.hideEventHandler(event);
}
});
}
}
this.isRendered = true;
};
/**
* @param {?} typeName
* @return {?}
*/
ViewWrapper.prototype.getViewComponentType = /**
* @param {?} typeName
* @return {?}
*/
function (typeName) {
if (typeName === RECORD_VIEW) {
return RecordView;
}
else if (typeName === CALENDAR_VIEW) {
return CalendarView;
}
else if (typeName === FORM_VIEW) {
return FormView;
}
else if (typeName === KANBAN_VIEW) {
}
else if (typeName === RECYCLE_VIEW) {
}
return null;
};
/**
* @return {?}
*/
ViewWrapper.prototype.isRender = /**
* @return {?}
*/
function () {
return this.isRendered;
};
ViewWrapper.TYPE_NAME = TYPE_NAME;
ViewWrapper.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: ""
},] },
];
/** @nocollapse */
ViewWrapper.ctorParameters = function () { return [
{ type: ViewContainerRef, },
{ type: ComponentFactoryResolver, },
{ type: ElementRef, },
]; };
ViewWrapper.propDecorators = {
"editor": [{ type: Input },],
"model": [{ type: Input },],
"showEventHandler": [{ type: Input },],
"hideEventHandler": [{ type: Input },],
};
return ViewWrapper;
}());
export { ViewWrapper };
function ViewWrapper_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ViewWrapper.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ViewWrapper.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ViewWrapper.propDecorators;
/** @type {?} */
ViewWrapper.TYPE_NAME;
/** @type {?} */
ViewWrapper.prototype.editor;
/** @type {?} */
ViewWrapper.prototype.model;
/** @type {?} */
ViewWrapper.prototype.componentFactoryResolver;
/** @type {?} */
ViewWrapper.prototype.target;
/** @type {?} */
ViewWrapper.prototype.showEventHandler;
/** @type {?} */
ViewWrapper.prototype.hideEventHandler;
/** @type {?} */
ViewWrapper.prototype.isRendered;
/** @type {?} */
ViewWrapper.prototype.elementRef;
/** @type {?} */
ViewWrapper.prototype.componentRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlld1dyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2VkaXRvci9WaWV3V3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLGdCQUFnQixFQUFRLHdCQUF3QixFQUN0RSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9DLHFCQUFNLFNBQVMsR0FBVyxrQkFBa0IsQ0FBQztBQUU3QyxxQkFBTSxXQUFXLEdBQVcsVUFBVSxDQUFDLFNBQVMsQ0FBQztBQUNqRCxxQkFBTSxhQUFhLEdBQVcsWUFBWSxDQUFDLFNBQVMsQ0FBQztBQUNyRCxxQkFBTSxTQUFTLEdBQVcsUUFBUSxDQUFDLFNBQVMsQ0FBQztBQUM3QyxxQkFBTSxXQUFXLEdBQVcsYUFBYSxDQUFDO0FBQzFDLHFCQUFNLFlBQVksR0FBVyxjQUFjLENBQUM7O0lBeUIxQyxxQkFBWSxNQUF3QixFQUFFLHdCQUFrRCxFQUFFLFVBQXNCO1FBQzlHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztLQUN6Qjs7OztJQUVNLDhC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LENBQUMsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztTQUVyQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztTQUV0QztRQUVELE1BQU0sQ0FBQyxJQUFJLENBQUM7Ozs7O0lBR1AsOEJBQVE7Ozs7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7NEJBakhrQixTQUFTOztnQkFQckQsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxFQUFFO2lCQUNiOzs7O2dCQXBCa0MsZ0JBQWdCO2dCQUFRLHdCQUF3QjtnQkFDdEUsVUFBVTs7OzJCQXdCcEIsS0FBSzswQkFFTCxLQUFLO3FDQUlMLEtBQUs7cUNBRUwsS0FBSzs7c0JBakNSOztTQXFCYSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q29udGFpbmVyUmVmLCBUeXBlLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIE91dHB1dCxcbiAgT25EZXN0cm95LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdERhdGFFZGl0b3IgfSBmcm9tICcuL0Fic3RyYWN0RGF0YUVkaXRvcic7XG5pbXBvcnQgeyBSZWNvcmRWaWV3IH0gZnJvbSAnLi9lZGl0b3IuaW50ZXJuYWwvUmVjb3JkVmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJWaWV3IH0gZnJvbSAnLi9lZGl0b3IuaW50ZXJuYWwvQ2FsZW5kYXJWaWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtVmlldyB9IGZyb20gJy4vZWRpdG9yLmludGVybmFsL0Zvcm1WaWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3TW9kZWwgfSBmcm9tICcuLi9tb2RlbC9WaWV3TW9kZWwnO1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LXZpZXctd3JhcHBlclwiO1xuXG5jb25zdCBSRUNPUkRfVklFVzogc3RyaW5nID0gUmVjb3JkVmlldy5UWVBFX05BTUU7XG5jb25zdCBDQUxFTkRBUl9WSUVXOiBzdHJpbmcgPSBDYWxlbmRhclZpZXcuVFlQRV9OQU1FO1xuY29uc3QgRk9STV9WSUVXOiBzdHJpbmcgPSBGb3JtVmlldy5UWVBFX05BTUU7XG5jb25zdCBLQU5CQU5fVklFVzogc3RyaW5nID0gJ2thbmJhbi12aWV3JztcbmNvbnN0IFJFQ1lDTEVfVklFVzogc3RyaW5nID0gJ3JlY3ljbGUtdmlldyc7XG5cbkBDb21wb25lbnQoe1xuICBtb2R1bGVJZDogbW9kdWxlLmlkLFxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICB0ZW1wbGF0ZTogYGBcbn0pXG5leHBvcnQgY2xhc3MgVmlld1dyYXBwZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICBASW5wdXQoKVxuICBwcml2YXRlIGVkaXRvcjogQWJzdHJhY3REYXRhRWRpdG9yO1xuICBASW5wdXQoKVxuICBwcml2YXRlIG1vZGVsOiBWaWV3TW9kZWw7XG4gIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI7XG4gIHByaXZhdGUgdGFyZ2V0OiBWaWV3Q29udGFpbmVyUmVmO1xuICBASW5wdXQoKVxuICBwcml2YXRlIHNob3dFdmVudEhhbmRsZXI6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGhpZGVFdmVudEhhbmRsZXI6IEZ1bmN0aW9uO1xuICBwcml2YXRlIGlzUmVuZGVyZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgZWxlbWVudFJlZjogYW55O1xuICBwcml2YXRlIGNvbXBvbmVudFJlZjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHRhcmdldDogVmlld0NvbnRhaW5lclJlZiwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcbiAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlciA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjtcbiAgICB0aGlzLmVsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuaXNSZW5kZXJlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVkaXRvciAhPT0gbnVsbCAmJiAodHlwZW9mIHRoaXMuZWRpdG9yICE9PSAndW5kZWZpbmVkJykpIHtcbiAgICAgIHRoaXMuZWRpdG9yLmFkZFZpZXdXcmFwcGVyKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5lZGl0b3IgIT09IG51bGwgJiYgKHR5cGVvZiB0aGlzLmVkaXRvciAhPT0gJ3VuZGVmaW5lZCcpKSB7XG4gICAgICB0aGlzLmVkaXRvci5yZW1vdmVWaWV3V3JhcHBlcih0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVSZW5kZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc1JlbmRlcmVkID0gZmFsc2U7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNSZW5kZXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmKHRoaXMubW9kZWwgPT09IG51bGwgfHwgdGhpcy5tb2RlbCA9PT0gdW5kZWZpbmVkKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyByZW1vdmUgb2xkIGRvbVxuICAgIGlmICh0aGlzLmVsZW1lbnRSZWYgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZWxlbWVudFJlZiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5jb21wb25lbnRSZWYgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0RGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNldERhdGEobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNldERhdGFQYXJlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXREYXRhUGFyZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjb21wVHlwZSA9IHRoaXMuZ2V0Vmlld0NvbXBvbmVudFR5cGUodGhpcy5tb2RlbC50eXBlKTtcblxuICAgIGlmIChjb21wVHlwZSAhPSBudWxsICYmICh0eXBlb2YgY29tcFR5cGUgIT09ICd1bmRlZmluZWQnKSkge1xuICAgICAgY29uc3Qgc2ltcGxlQ29tcG9GYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcFR5cGUpO1xuICAgICAgbGV0IGNvbXBSZWYgPSB0aGlzLnRhcmdldC5jcmVhdGVDb21wb25lbnQoc2ltcGxlQ29tcG9GYWN0b3J5KTtcbiAgICAgIGNvbXBSZWYuaW5zdGFuY2Uuc2V0RWRpdG9yKHRoaXMuZWRpdG9yKTtcbiAgICAgIGNvbXBSZWYuaW5zdGFuY2Uuc2V0TW9kZWwodGhpcy5tb2RlbCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IGNvbXBSZWY7XG5cbiAgICAgIC8vIHVzZSBGdW5jdGlvbiBoYW5kbGVyIGZvcm0gYmVjYXVzZSBjYW50IHVzZSBvdXRwdXQgYW5kIGVtaXQgb3V0XG4gICAgICBsZXQgc2hvd0V2ZW50ID0gY29tcFJlZi5pbnN0YW5jZS5nZXRTaG93RXZlbnQoKTtcbiAgICAgIGlmIChzaG93RXZlbnQgIT09IG51bGwgJiYgdHlwZW9mIHNob3dFdmVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc2hvd0V2ZW50LnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnNob3dFdmVudEhhbmRsZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuc2hvd0V2ZW50SGFuZGxlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0V2ZW50SGFuZGxlcihldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGxldCBoaWRlRXZlbnQgPSBjb21wUmVmLmluc3RhbmNlLmdldEhpZGVFdmVudCgpO1xuICAgICAgaWYgKGhpZGVFdmVudCAhPT0gbnVsbCAmJiB0eXBlb2YgaGlkZUV2ZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBoaWRlRXZlbnQuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaGlkZUV2ZW50SGFuZGxlciAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5oaWRlRXZlbnRIYW5kbGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5oaWRlRXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaXNSZW5kZXJlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGdldFZpZXdDb21wb25lbnRUeXBlKHR5cGVOYW1lOiBzdHJpbmcpOiBUeXBlPGFueT4ge1xuXG4gICAgaWYgKHR5cGVOYW1lID09PSBSRUNPUkRfVklFVykge1xuICAgICAgcmV0dXJuIFJlY29yZFZpZXc7XG4gICAgfSBlbHNlIGlmICh0eXBlTmFtZSA9PT0gQ0FMRU5EQVJfVklFVykge1xuICAgICAgcmV0dXJuIENhbGVuZGFyVmlldztcbiAgICB9IGVsc2UgaWYgKHR5cGVOYW1lID09PSBGT1JNX1ZJRVcpIHtcbiAgICAgIHJldHVybiBGb3JtVmlldztcbiAgICB9IGVsc2UgaWYgKHR5cGVOYW1lID09PSBLQU5CQU5fVklFVykge1xuXG4gICAgfSBlbHNlIGlmICh0eXBlTmFtZSA9PT0gUkVDWUNMRV9WSUVXKSB7XG5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBpc1JlbmRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1JlbmRlcmVkO1xuICB9XG59XG4iXX0=