com.phloxui
Version:
PhloxUI Ng2+ Framework
180 lines (179 loc) • 17.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, Output, ViewContainerRef, Type, EventEmitter, ComponentFactoryResolver } from '@angular/core';
import { DATA_CHANGE_EVENT } from '../../share/CustomEventType';
import { AbstractDataViewWrapper } from './AbstractDataViewWrapper';
var /** @type {?} */ TYPE_NAME = "phx-data-view-wrapper";
var DataViewWrapper = /** @class */ (function (_super) {
tslib_1.__extends(DataViewWrapper, _super);
function DataViewWrapper(target, componentFactoryResolver) {
return _super.call(this, target, componentFactoryResolver) || this;
}
/**
* @return {?}
*/
DataViewWrapper.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @param {?} changes
* @return {?}
*/
DataViewWrapper.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes['componentType'] !== null && typeof changes['componentType'] !== 'undefined') {
var /** @type {?} */ oldType = changes['componentType'].previousValue;
var /** @type {?} */ newType = changes['componentType'].currentValue;
if (oldType !== newType) {
this.render();
}
}
if (changes['data'] !== null && typeof changes['data'] !== 'undefined') {
var /** @type {?} */ oldData = changes['data'].previousValue;
var /** @type {?} */ newData = changes['data'].currentValue;
if (oldData !== newData) {
if (this.componentRef !== null && this.componentRef !== undefined) {
this.componentRef.instance.setData(this.data);
}
else {
this.render();
}
}
}
if (changes['options'] !== null && typeof changes['options'] !== 'undefined') {
var /** @type {?} */ oldOpt = changes['options'].previousValue;
var /** @type {?} */ newOpt = changes['options'].currentValue;
if (oldOpt !== newOpt) {
if (this.componentRef !== null && this.componentRef !== undefined) {
this.componentRef.instance.setOptions(this.options);
}
else {
this.render();
}
}
}
if (this.componentRef !== null && typeof this.componentRef !== 'undefined') {
if (changes['class'] !== null && typeof changes['class'] !== 'undefined') {
var /** @type {?} */ oldClass = changes['class'].previousValue;
var /** @type {?} */ newClass = changes['class'].currentValue;
if (oldClass !== newClass) {
$(this.componentRef.location.nativeElement).attr('class', newClass);
}
}
}
};
/**
* @return {?}
*/
DataViewWrapper.prototype.render = /**
* @return {?}
*/
function () {
var _this = this;
// remove old dom
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();
}
if (this.componentType != null && (typeof this.componentType !== 'undefined')) {
var /** @type {?} */ simpleCompoFactory = this.componentFactoryResolver.resolveComponentFactory(this.componentType);
var /** @type {?} */ compRef = this.target.createComponent(simpleCompoFactory);
compRef.instance.setData(this.data);
compRef.instance.setOptions(this.options);
this.componentRef = compRef;
var /** @type {?} */ compHandler = null;
if (typeof compRef.instance.getEventHandler === 'function') {
compHandler = compRef.instance.getEventHandler();
}
if (compHandler !== null && typeof compHandler !== 'undefined') {
compHandler.subscribe(function (event) {
if (event.type == DATA_CHANGE_EVENT) {
// update data row
// update data row
_this.data = event.detail.data;
}
_this.eventHandler.emit(event);
});
}
}
};
/**
* @return {?}
*/
DataViewWrapper.prototype.getEventHandler = /**
* @return {?}
*/
function () {
return this.eventHandler;
};
/**
* @param {?} event
* @return {?}
*/
DataViewWrapper.prototype.setEventHandler = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.eventHandler = event;
};
DataViewWrapper.TYPE_NAME = TYPE_NAME;
DataViewWrapper.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: ""
},] },
];
/** @nocollapse */
DataViewWrapper.ctorParameters = function () { return [
{ type: ViewContainerRef, },
{ type: ComponentFactoryResolver, },
]; };
DataViewWrapper.propDecorators = {
"componentType": [{ type: Input, args: ['type',] },],
"data": [{ type: Input },],
"options": [{ type: Input },],
"eventHandler": [{ type: Output },],
};
return DataViewWrapper;
}(AbstractDataViewWrapper));
export { DataViewWrapper };
function DataViewWrapper_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
DataViewWrapper.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
DataViewWrapper.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
DataViewWrapper.propDecorators;
/** @type {?} */
DataViewWrapper.TYPE_NAME;
/** @type {?} */
DataViewWrapper.prototype.componentType;
/** @type {?} */
DataViewWrapper.prototype.data;
/** @type {?} */
DataViewWrapper.prototype.options;
/** @type {?} */
DataViewWrapper.prototype.eventHandler;
/** @type {?} */
DataViewWrapper.prototype.componentRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVZpZXdXcmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kYXRhdmlldy9EYXRhVmlld1dyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEUscUJBQU0sU0FBUyxHQUFXLHVCQUF1QixDQUFDOztJQU9iLDJDQUF1QjtJQWUxRCx5QkFBWSxNQUF3QixFQUFFLHdCQUFrRDtlQUN0RixrQkFBTSxNQUFNLEVBQUUsd0JBQXdCLENBQUM7S0FDeEM7Ozs7SUFFTSxrQ0FBUTs7OztRQUNiLGlCQUFNLFFBQVEsV0FBRSxDQUFDOzs7Ozs7SUFHWixxQ0FBVzs7OztjQUFDLE9BQVk7UUFDN0IsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLHFCQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsYUFBYSxDQUFDO1lBQ3JELHFCQUFJLE9BQU8sR0FBUSxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsWUFBWSxDQUFDO1lBRXpELEVBQUUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDZjtTQUNGO1FBRUQsRUFBRSxDQUFDLENBQUMsT0FBTyxD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O3dCQUVwQyxBQURBLGtCQUFrQjt3QkFDbEIsS0FBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztxQkFDL0I7b0JBQ0QsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQy9CLENBQUMsQ0FBQzthQUNKO1NBRUY7Ozs7O0lBR0kseUNBQWU7Ozs7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7Ozs7OztJQUdwQix5Q0FBZTs7OztjQUFDLEtBQVU7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7O2dDQWpIZSxTQUFTOztnQkFQckQsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxFQUFFO2lCQUNiOzs7O2dCQVowQyxnQkFBZ0I7Z0JBQXNCLHdCQUF3Qjs7O2tDQWlCdEcsS0FBSyxTQUFDLE1BQU07eUJBRVosS0FBSzs0QkFFTCxLQUFLO2lDQUVMLE1BQU07OzBCQXZCVDtFQWFxQyx1QkFBdUI7U0FBL0MsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q29udGFpbmVyUmVmLCBUeXBlLCBFdmVudEVtaXR0ZXIsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREFUQV9DSEFOR0VfRVZFTlQgfSBmcm9tICcuLi8uLi9zaGFyZS9DdXN0b21FdmVudFR5cGUnO1xuaW1wb3J0IHsgQWJzdHJhY3REYXRhVmlld1dyYXBwZXIgfSBmcm9tICcuL0Fic3RyYWN0RGF0YVZpZXdXcmFwcGVyJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LWRhdGEtdmlldy13cmFwcGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBtb2R1bGVJZDogbW9kdWxlLmlkLFxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICB0ZW1wbGF0ZTogYGBcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVZpZXdXcmFwcGVyIGV4dGVuZHMgQWJzdHJhY3REYXRhVmlld1dyYXBwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgQElucHV0KCd0eXBlJylcbiAgcHJvdGVjdGVkIGNvbXBvbmVudFR5cGU6IFR5cGU8YW55PjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGRhdGE6IGFueTtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IGFueTtcbiAgQE91dHB1dCgpXG4gIHByb3RlY3RlZCBldmVudEhhbmRsZXI6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBhbnk7XG5cbiAgY29uc3RydWN0b3IodGFyZ2V0OiBWaWV3Q29udGFpbmVyUmVmLCBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xuICAgIHN1cGVyKHRhcmdldCwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSkge1xuICAgIGlmIChjaGFuZ2VzWydjb21wb25lbnRUeXBlJ10gIT09IG51bGwgJiYgdHlwZW9mIGNoYW5nZXNbJ2NvbXBvbmVudFR5cGUnXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxldCBvbGRUeXBlID0gY2hhbmdlc1snY29tcG9uZW50VHlwZSddLnByZXZpb3VzVmFsdWU7XG4gICAgICBsZXQgbmV3VHlwZTogYW55ID0gY2hhbmdlc1snY29tcG9uZW50VHlwZSddLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgaWYgKG9sZFR5cGUgIT09IG5ld1R5cGUpIHtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snZGF0YSddICE9PSBudWxsICYmIHR5cGVvZiBjaGFuZ2VzWydkYXRhJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgb2xkRGF0YSA9IGNoYW5nZXNbJ2RhdGEnXS5wcmV2aW91c1ZhbHVlO1xuICAgICAgbGV0IG5ld0RhdGE6IGFueSA9IGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWU7XG5cbiAgICAgIGlmIChvbGREYXRhICE9PSBuZXdEYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCAmJiB0aGlzLmNvbXBvbmVudFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0RGF0YSh0aGlzLmRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snb3B0aW9ucyddICE9PSBudWxsICYmIHR5cGVvZiBjaGFuZ2VzWydvcHRpb25zJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsZXQgb2xkT3B0ID0gY2hhbmdlc1snb3B0aW9ucyddLnByZXZpb3VzVmFsdWU7XG4gICAgICBsZXQgbmV3T3B0OiBhbnkgPSBjaGFuZ2VzWydvcHRpb25zJ10uY3VycmVudFZhbHVlO1xuXG4gICAgICBpZiAob2xkT3B0ICE9PSBuZXdPcHQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmICE9PSBudWxsICYmIHRoaXMuY29tcG9uZW50UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5jb21wb25lbnRSZWYgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAoY2hhbmdlc1snY2xhc3MnXSAhPT0gbnVsbCAmJiB0eXBlb2YgY2hhbmdlc1snY2xhc3MnXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgbGV0IG9sZENsYXNzID0gY2hhbmdlc1snY2xhc3MnXS5wcmV2aW91c1ZhbHVlO1xuICAgICAgICBsZXQgbmV3Q2xhc3M6IGFueSA9IGNoYW5nZXNbJ2NsYXNzJ10uY3VycmVudFZhbHVlO1xuXG4gICAgICAgIGlmIChvbGRDbGFzcyAhPT0gbmV3Q2xhc3MpIHtcbiAgICAgICAgICAkKHRoaXMuY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpLmF0dHIoJ2NsYXNzJywgbmV3Q2xhc3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiB2b2lkIHtcbiAgICAvLyByZW1vdmUgb2xkIGRvbVxuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5jb21wb25lbnRSZWYgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNldERhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0RGF0YShudWxsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXREYXRhUGFyZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNldERhdGFQYXJlbnQobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb21wb25lbnRUeXBlICE9IG51bGwgJiYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudFR5cGUgIT09ICd1bmRlZmluZWQnKSkge1xuICAgICAgY29uc3Qgc2ltcGxlQ29tcG9GYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5jb21wb25lbnRUeXBlKTtcbiAgICAgIGxldCBjb21wUmVmID0gdGhpcy50YXJnZXQuY3JlYXRlQ29tcG9uZW50KHNpbXBsZUNvbXBvRmFjdG9yeSk7XG4gICAgICBjb21wUmVmLmluc3RhbmNlLnNldERhdGEodGhpcy5kYXRhKTtcbiAgICAgIGNvbXBSZWYuaW5zdGFuY2Uuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMpO1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBjb21wUmVmO1xuXG4gICAgICBsZXQgY29tcEhhbmRsZXIgPSBudWxsO1xuICAgICAgaWYgKHR5cGVvZiBjb21wUmVmLmluc3RhbmNlLmdldEV2ZW50SGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb21wSGFuZGxlciA9IGNvbXBSZWYuaW5zdGFuY2UuZ2V0RXZlbnRIYW5kbGVyKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb21wSGFuZGxlciAhPT0gbnVsbCAmJiB0eXBlb2YgY29tcEhhbmRsZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbXBIYW5kbGVyLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC50eXBlID09IERBVEFfQ0hBTkdFX0VWRU5UKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgZGF0YSByb3dcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IGV2ZW50LmRldGFpbC5kYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmV2ZW50SGFuZGxlci5lbWl0KGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0RXZlbnRIYW5kbGVyKCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudEhhbmRsZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0RXZlbnRIYW5kbGVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmV2ZW50SGFuZGxlciA9IGV2ZW50O1xuICB9XG59XG4iXX0=