com.phloxui
Version:
PhloxUI Ng2+ Framework
243 lines (242 loc) • 17.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, Output, EventEmitter, ElementRef } from '@angular/core';
import { AbstractHasFormatterDataView } from './AbstractHasFormatterDataView';
import { DATA_CHANGE_EVENT } from '../../share/CustomEventType';
import { FormatterFactory } from '../../service/FormatterFactory.service';
import { Option } from '../../decorator/Option.decorator';
import { EventUtils } from '../../share/utils/EventUtils';
var /** @type {?} */ TYPE_NAME = "phx-string-editor-data-view";
var /** @type {?} */ DEFAULT_FIELD = "label";
var StringEditorDataView = /** @class */ (function (_super) {
tslib_1.__extends(StringEditorDataView, _super);
function StringEditorDataView(elementRef, formatterFactory) {
var _this = _super.call(this, elementRef, formatterFactory) || this;
_this.DEFAULT_FIELD_NAME = "label";
_this.handler = new EventEmitter();
_this.changeEvent = new EventEmitter();
return _this;
}
/**
* @return {?}
*/
StringEditorDataView.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
// Auto set default field if not specified
if (this.field === null || typeof this.field !== 'string') {
this.field = DEFAULT_FIELD;
}
if (this.data !== null && typeof this.data !== 'undefined') {
this.setData(this.data);
}
};
/**
* @param {?} changes
* @return {?}
*/
StringEditorDataView.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes['data'] !== null && typeof changes['data'] !== 'undefined') {
var /** @type {?} */ oldData = changes['data'].previousValue;
var /** @type {?} */ newData = changes['data'].currentValue;
if (oldData !== newData) {
this.setData(newData);
}
}
};
/**
* @param {?} $event
* @return {?}
*/
StringEditorDataView.prototype.onValueChanged = /**
* @param {?} $event
* @return {?}
*/
function ($event) {
var /** @type {?} */ data = {
data: this.value,
source: ($event === null || typeof $event === 'undefined') ? undefined : $event.target
};
var /** @type {?} */ ev = EventUtils.newCustomEvent(DATA_CHANGE_EVENT, this, data, $event);
this.changeEvent.emit(ev);
this.handler.emit(ev);
this.handler.emit($event);
};
/**
* @param {?} data
* @return {?}
*/
StringEditorDataView.prototype.setData = /**
* @param {?} data
* @return {?}
*/
function (data) {
_super.prototype.setData.call(this, data);
this.value = this.getFormattedData();
};
/**
* @return {?}
*/
StringEditorDataView.prototype.getEventHandler = /**
* @return {?}
*/
function () {
return this.handler;
};
/**
* @param {?} event
* @return {?}
*/
StringEditorDataView.prototype.setEventHandler = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.handler = event;
};
/**
* @return {?}
*/
StringEditorDataView.prototype.getChangeEvent = /**
* @return {?}
*/
function () {
return this.changeEvent;
};
/**
* @param {?} event
* @return {?}
*/
StringEditorDataView.prototype.setChangeEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.changeEvent = event;
};
/**
* @return {?}
*/
StringEditorDataView.prototype.isSelfDataDirty = /**
* @return {?}
*/
function () {
return false;
};
/**
* @return {?}
*/
StringEditorDataView.prototype.selfSaveData = /**
* @return {?}
*/
function () {
};
/**
* @return {?}
*/
StringEditorDataView.prototype.selfResetData = /**
* @return {?}
*/
function () {
};
StringEditorDataView.TYPE_NAME = TYPE_NAME;
StringEditorDataView.DEFAULT_FIELD = DEFAULT_FIELD;
StringEditorDataView.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"phx-string-editor-data-view\"><input type=\"text\" class=\"form-control\" [(ngModel)]=\"value\" (input)=\"onValueChanged($event)\"></div>\n"
},] },
];
/** @nocollapse */
StringEditorDataView.ctorParameters = function () { return [
{ type: ElementRef, },
{ type: FormatterFactory, },
]; };
StringEditorDataView.propDecorators = {
"data": [{ type: Input },],
"field": [{ type: Input },],
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"disabled": [{ type: Input },],
"handler": [{ type: Output, args: ['phxHandler',] },],
"changeEvent": [{ type: Output, args: ['phxChange',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", EventEmitter)
], StringEditorDataView.prototype, "handler", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], StringEditorDataView.prototype, "changeEvent", void 0);
return StringEditorDataView;
}(AbstractHasFormatterDataView));
export { StringEditorDataView };
function StringEditorDataView_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
StringEditorDataView.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
StringEditorDataView.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
StringEditorDataView.propDecorators;
/** @type {?} */
StringEditorDataView.TYPE_NAME;
/** @type {?} */
StringEditorDataView.DEFAULT_FIELD;
/** @type {?} */
StringEditorDataView.prototype.value;
/** @type {?} */
StringEditorDataView.prototype.DEFAULT_FIELD_NAME;
/** @type {?} */
StringEditorDataView.prototype.data;
/** @type {?} */
StringEditorDataView.prototype.field;
/** @type {?} */
StringEditorDataView.prototype.dataParent;
/** @type {?} */
StringEditorDataView.prototype.ignoreParentData;
/** @type {?} */
StringEditorDataView.prototype.ignoreParentDisabled;
/** @type {?} */
StringEditorDataView.prototype.delegateHistory;
/** @type {?} */
StringEditorDataView.prototype.onDisabled;
/** @type {?} */
StringEditorDataView.prototype.onEnabled;
/** @type {?} */
StringEditorDataView.prototype.loadingEnabled;
/** @type {?} */
StringEditorDataView.prototype.i18nKey;
/** @type {?} */
StringEditorDataView.prototype.bypass;
/** @type {?} */
StringEditorDataView.prototype.options;
/** @type {?} */
StringEditorDataView.prototype.disabled;
/** @type {?} */
StringEditorDataView.prototype.handler;
/** @type {?} */
StringEditorDataView.prototype.changeEvent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyaW5nRWRpdG9yRGF0YVZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L1N0cmluZ0VkaXRvckRhdGFWaWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUQscUJBQU0sU0FBUyxHQUFXLDZCQUE2QixDQUFDO0FBRXhELHFCQUFNLGFBQWEsR0FBVyxPQUFPLENBQUM7O0lBU0ksZ0RBQTRCO0lBMkNsRSw4QkFBWSxVQUFzQixFQUFFLGdCQUFrQztRQUF0RSxZQUNJLGtCQUFNLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxTQUl0QzttQ0F4Q29DLE9BQU87UUFzQ3hDLEtBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxLQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7O0tBQ3pDOzs7O0lBR00sdUNBQVE7Ozs7UUFDYixpQkFBTSxRQUFRLFdBQUUsQ0FBQzs7UUFHakIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFD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QixNQUFNLEVBQUU7MENBRVUsWUFBWTs7O1FBQzlCLE1BQU0sQ0FBQyxRQUFRLENBQUM7MENBRU0sWUFBWTs7K0JBOUR2QztFQXFCMEMsNEJBQTRCO1NBQXpELG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEYXRhVmlldyB9IGZyb20gJy4vSURhdGFWaWV3JztcbmltcG9ydCB7IEFic3RyYWN0SGFzRm9ybWF0dGVyRGF0YVZpZXcgfSBmcm9tICcuL0Fic3RyYWN0SGFzRm9ybWF0dGVyRGF0YVZpZXcnO1xuaW1wb3J0IHsgRGF0YVV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMvRGF0YVV0aWxzJztcbmltcG9ydCB7IERBVEFfQ0hBTkdFX0VWRU5UIH0gZnJvbSAnLi4vLi4vc2hhcmUvQ3VzdG9tRXZlbnRUeXBlJztcbmltcG9ydCB7IEZvcm1hdHRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL0Zvcm1hdHRlckZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBFdmVudFV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMvRXZlbnRVdGlscyc7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uL0lIYXNEYXRhJztcblxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC1zdHJpbmctZWRpdG9yLWRhdGEtdmlld1wiO1xuXG5jb25zdCBERUZBVUxUX0ZJRUxEOiBzdHJpbmcgPSBcImxhYmVsXCI7XG5cbi8vIFdhaXRpbmcgZm9yIHJlbW92ZS4gVXNlIFRleHRCb3ggaW5zdGFkZSB0aGlzIGNvbXBvbmVudFxuQENvbXBvbmVudCh7XG4gICAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICAgIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1zdHJpbmctZWRpdG9yLWRhdGEtdmlld1wiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpXCI+PC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ0VkaXRvckRhdGFWaWV3IGV4dGVuZHMgQWJzdHJhY3RIYXNGb3JtYXR0ZXJEYXRhVmlldyBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0ZJRUxEOiBzdHJpbmcgPSBERUZBVUxUX0ZJRUxEO1xuXG4gICAgcHVibGljIHZhbHVlOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIERFRkFVTFRfRklFTERfTkFNRTogc3RyaW5nID0gXCJsYWJlbFwiO1xuXG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgZGF0YTogYW55O1xuICAgIEBJbnB1dCgpXG4gICAgcHJvdGVjdGVkIGZpZWxkOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREaXNhYmxlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBkZWxlZ2F0ZUhpc3Rvcnk6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgb25EaXNhYmxlZDogRnVuY3Rpb247XG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgb25FbmFibGVkOiBGdW5jdGlvbjtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBsb2FkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBpMThuS2V5OiBzdHJpbmc7XG4gICAgQElucHV0KCdpMThuQnlwYXNzJylcbiAgICBwcm90ZWN0ZWQgYnlwYXNzOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHJvdGVjdGVkIG9wdGlvbnM6IGFueTtcbiAgICBASW5wdXQoKVxuICAgIHByb3RlY3RlZCBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBAT3B0aW9uKClcbiAgICBAT3V0cHV0KCdwaHhIYW5kbGVyJylcbiAgICBwcm90ZWN0ZWQgaGFuZGxlcjogRXZlbnRFbWl0dGVyPGFueT47XG4gICAgQE9wdGlvbignY2hhbmdlJylcbiAgICBAT3V0cHV0KCdwaHhDaGFuZ2UnKVxuICAgIHByb3RlY3RlZCBjaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBmb3JtYXR0ZXJGYWN0b3J5OiBGb3JtYXR0ZXJGYWN0b3J5KSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGZvcm1hdHRlckZhY3RvcnkpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB9XG5cbiAgICAvLyBPdmVycmlkZVxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgIC8vIEF1dG8gc2V0IGRlZmF1bHQgZmllbGQgaWYgbm90IHNwZWNpZmllZFxuICAgICAgaWYgKHRoaXMuZmllbGQgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMuZmllbGQgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuZmllbGQgPSBERUZBVUxUX0ZJRUxEO1xuICAgICAgfVxuXG4gICAgICBpZih0aGlzLmRhdGEgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZGF0YSAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICB0aGlzLnNldERhdGEodGhpcy5kYXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KSB7XG4gICAgICBpZiAoY2hhbmdlc1snZGF0YSddICE9PSBudWxsICYmIHR5cGVvZiBjaGFuZ2VzWydkYXRhJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGxldCBvbGREYXRhID0gY2hhbmdlc1snZGF0YSddLnByZXZpb3VzVmFsdWU7XG4gICAgICAgIGxldCBuZXdEYXRhOiBhbnkgPSBjaGFuZ2VzWydkYXRhJ10uY3VycmVudFZhbHVlO1xuXG4gICAgICAgIGlmIChvbGREYXRhICE9PSBuZXdEYXRhKSB7XG4gICAgICAgICAgdGhpcy5zZXREYXRhKG5ld0RhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmFsdWVDaGFuZ2VkKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgbGV0IGRhdGE6IGFueSA9IHtcbiAgICAgICAgICBkYXRhOiB0aGlzLnZhbHVlLFxuICAgICAgICAgIHNvdXJjZTogKCRldmVudCA9PT0gbnVsbCB8fCB0eXBlb2YgJGV2ZW50ID09PSAndW5kZWZpbmVkJykgPyB1bmRlZmluZWQgOiAkZXZlbnQudGFyZ2V0XG4gICAgICAgIH07XG4gICAgICAgIGxldCBldiA9IEV2ZW50VXRpbHMubmV3Q3VzdG9tRXZlbnQoREFUQV9DSEFOR0VfRVZFTlQsIHRoaXMsIGRhdGEsICRldmVudCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KGV2KTtcbiAgICAgICAgdGhpcy5oYW5kbGVyLmVtaXQoZXYpO1xuICAgICAgICB0aGlzLmhhbmRsZXIuZW1pdCgkZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICAgICAgc3VwZXIuc2V0RGF0YShkYXRhKTtcblxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0Rm9ybWF0dGVkRGF0YSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFdmVudEhhbmRsZXIoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRFdmVudEhhbmRsZXIoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFuZGxlciA9IGV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGFuZ2VFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5nZUV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDaGFuZ2VFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VFdmVudCA9IGV2ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NlbGZEYXRhRGlydHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZlNhdmVEYXRhKCk6IHZvaWQge1xuXG4gICAgfVxuXG4gICAgcHVibGljIHNlbGZSZXNldERhdGEoKTogdm9pZCB7XG5cbiAgICB9XG59XG4iXX0=